[gnome-clocks] Rework alarm edit code a bit



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]