Skip to content
Snippets Groups Projects
Commit fb07453d authored by nkour's avatar nkour
Browse files

initial stuff at mark day that has logs. atm it is slow and has some bugs I...

initial stuff at mark day that has logs. atm it is slow and has some bugs I will fix soon. I commit this nonetheless
parent 117f7e99
No related branches found
No related tags found
No related merge requests found
......@@ -206,7 +206,16 @@ def get_last_conversation_lines(self, jid, restore_how_many_rows,
results = cur.fetchall()
results.reverse()
return results
def get_unix_time_from_date(self, year, month, day):
# year (fe 2005), month (fe 11), day (fe 25)
# returns time in seconds for the second that starts that date since epoch
# gimme unixtime from year month day:
d = datetime.date(year, month, day)
local_time = d.timetuple() # time tupple (compat with time.localtime())
start_of_day = int(time.mktime(local_time)) # we have time since epoch baby :)
return start_of_day
def get_conversation_for_date(self, jid, year, month, day):
'''returns contact_name, time, kind, show, message
for each row in a list of tupples,
......@@ -214,10 +223,7 @@ def get_conversation_for_date(self, jid, year, month, day):
jid = jid.lower()
jid_id = self.get_jid_id(jid)
# gimme unixtime from year month day:
d = datetime.date(year, month, day)
local_time = d.timetuple() # time tupple (compat with time.localtime())
start_of_day = int(time.mktime(local_time)) # we have time since epoch baby :)
start_of_day = self.get_unix_time_from_date(year, month, day)
now = int(time.time())
......@@ -232,3 +238,28 @@ def get_conversation_for_date(self, jid, year, month, day):
results = cur.fetchall()
return results
def date_has_logs(self, jid, year, month, day):
'''returns True if we have logs for given day, else False'''
jid = jid.lower()
jid_id = self.get_jid_id(jid)
start_of_day = self.get_unix_time_from_date(year, month, day)
seconds_in_a_day = 86400 # 60 * 60 * 24
last_second_of_day = start_of_day + seconds_in_a_day - 1
con = sqlite.connect(LOG_DB_PATH)
cur = con.cursor()
# just ask one row to see if we have sth for this date
cur.execute('''
SELECT log_line_id FROM logs
WHERE jid_id = %d
AND time BETWEEN %d AND %d
ORDER BY time LIMIT 1
''' % (jid_id, start_of_day, last_second_of_day))
results = cur.fetchone()
if results:
return True
else:
return False
......@@ -9007,6 +9007,7 @@ Custom</property>
<property name="can_focus">True</property>
<property name="display_options">GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES</property>
<signal name="day_selected" handler="on_calendar_day_selected" last_modification_time="Sun, 20 Nov 2005 19:26:58 GMT"/>
<signal name="month_changed" handler="on_calendar_month_changed" last_modification_time="Thu, 24 Nov 2005 00:49:22 GMT"/>
</widget>
<packing>
<property name="shrink">True</property>
......
......@@ -442,3 +442,6 @@ def make_gtk_month_python_month(month):
but python's time start from 1, so align to python
month MUST be integer'''
return month + 1
def make_python_month_gtk_month(month):
return month - 1
......@@ -20,6 +20,7 @@
import gtk
import gtk.glade
import time
import calendar
import os
import gtkgui_helpers
......@@ -81,6 +82,19 @@ def on_calendar_day_selected(self, widget):
year, month, day = widget.get_date() # integers
month = gtkgui_helpers.make_gtk_month_python_month(month)
self.add_lines_for_date(year, month, day)
def on_calendar_month_changed(self, widget):
year, month, day = widget.get_date() # integers
month = gtkgui_helpers.make_gtk_month_python_month(month)
weekday, days_in_this_month = calendar.monthrange(year, month)
for day in xrange(1, days_in_this_month + 1): # count from 1, so add 1 more
#FIXME: optimize (ask db once per month and store days that have logs)
# return those here in tupple
#print 'ask', year, month, day
if gajim.logger.date_has_logs(self.jid, year, month, day):
widget.mark_day(day)
else:
widget.unmark_day(day)
def add_lines_for_date(self, year, month, day):
'''adds all the lines for given date in textbuffer'''
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment