[gnome-clocks] Rework alarm edit code a bit
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-clocks] Rework alarm edit code a bit
- Date: Sun, 26 Aug 2012 10:10:06 +0000 (UTC)
commit 7213fc89b9c8ce1799232f11986e26e71adf8b03
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Aug 26 12:06:14 2012 +0200
Rework alarm edit code a bit
Refactor a bit so that ICSHandler does not use the AlarmItem class and
so that AlarmItem does not need an uid attribute which is redundant with
the uid of its vevent
gnomeclocks/alarm.py | 20 +++++++++-----------
gnomeclocks/clocks.py | 16 ++++++++--------
gnomeclocks/widgets.py | 2 --
3 files changed, 17 insertions(+), 21 deletions(-)
---
diff --git a/gnomeclocks/alarm.py b/gnomeclocks/alarm.py
index fb20f6b..84261e1 100644
--- a/gnomeclocks/alarm.py
+++ b/gnomeclocks/alarm.py
@@ -46,6 +46,15 @@ class ICSHandler():
ics.seek(0)
vcal.serialize(ics)
+ # FIXME: Update instead of remove and add
+ def update_vevent(self, old_vevent, new_vevent):
+ with open(self.ics_file, 'r+') as ics:
+ vcal = vobject.readOne(ics.read())
+ for event in vcal.vevent_list:
+ if event.uid.value == old_vevent.uid.value:
+ self.remove_vevents((old_vevent.uid.value,))
+ self.add_vevent(new_vevent)
+
def load_vevents(self):
alarms = []
if os.path.exists(self.ics_file):
@@ -63,22 +72,12 @@ class ICSHandler():
ics.write(vcal.serialize())
ics.close()
- def edit_alarm(self, alarm):
- with open(self.ics_file, 'r+') as ics:
- vcal = vobject.readOne(ics.read())
- for event in vcal.vevent_list:
- if event.uid.value == alarm.uid:
- #FIXME: Update instead of remove and add
- self.remove_vevents((alarm.uid,))
- self.add_vevent(alarm.get_vevent())
-
class AlarmItem:
def __init__(self, name=None, repeat=None, h=None, m=None, p=None):
self.name = name
self.repeat = repeat
self.vevent = None
- self.uid = None
if not h == None and not m == None:
if p:
t = datetime.strptime("%02i:%02i %s" % (h, m, p), "%H:%M %p")
@@ -94,7 +93,6 @@ class AlarmItem:
self.vevent = vevent
self.name = vevent.summary.value
self.time = vevent.dtstart.value
- self.uid = vevent.uid.value
if vevent.rrule.value == 'FREQ=DAILY;':
self.repeat = ['FR', 'MO', 'SA', 'SU', 'TH', 'TU', 'WE']
else:
diff --git a/gnomeclocks/clocks.py b/gnomeclocks/clocks.py
index 96271d7..ba56322 100644
--- a/gnomeclocks/clocks.py
+++ b/gnomeclocks/clocks.py
@@ -295,9 +295,9 @@ class Alarm(Clock):
alert,
alarm])
- def edit_alarm(self, alarm):
+ def edit_alarm(self, old_vevent, alarm):
handler = ICSHandler()
- handler.edit_alarm(alarm)
+ handler.update_vevent(old_vevent, alarm.get_vevent())
self.iconview.unselect_all()
self.liststore.clear()
self.load_alarms()
@@ -311,21 +311,21 @@ class Alarm(Clock):
def open_new_dialog(self):
window = AlarmDialog(self, self.get_toplevel())
- window.connect("response", self.on_dialog_response, True)
+ window.connect("response", self.on_dialog_response, None)
window.show_all()
def open_edit_dialog(self, vevent):
window = AlarmDialog(self, self.get_toplevel(), vevent)
- window.connect("response", self.on_dialog_response, False)
+ window.connect("response", self.on_dialog_response, vevent)
window.show_all()
- def on_dialog_response(self, dialog, response, isNew):
+ def on_dialog_response(self, dialog, response, old_vevent):
if response == 1:
alarm = dialog.get_alarm_item()
- if (isNew):
- self.add_alarm(alarm)
+ if old_vevent:
+ self.edit_alarm(old_vevent, alarm)
else:
- self.edit_alarm(alarm)
+ self.add_alarm(alarm)
dialog.destroy()
diff --git a/gnomeclocks/widgets.py b/gnomeclocks/widgets.py
index ced66bf..c4496e3 100644
--- a/gnomeclocks/widgets.py
+++ b/gnomeclocks/widgets.py
@@ -576,8 +576,6 @@ class AlarmDialog(Gtk.Dialog):
if btn.get_active():
repeat.append(btn.get_label()[:2])
alarm_item = AlarmItem(name, repeat, h, m, p)
- if self.vevent:
- alarm_item.uid = self.vevent.uid.value
return alarm_item
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]