online-desktop r7273 - in trunk: . weblogindriver weblogindriver/weblogindriver



Author: marinaz
Date: Wed Oct 22 21:35:39 2008
New Revision: 7273
URL: http://svn.gnome.org/viewvc/online-desktop?rev=7273&view=rev

Log:
Create a new flag called save_online for letting the user specify if the online accounts should be stroed online and keep in in GConf.

Make methods for saving, removing, and signaling change on this flag available from the OnlineAccounts DBus service.

Add a "Save Accounts Online" checkbox at the bottom of each tab in the accounts dialog and make it update the OnlineAccounts' save_online flag when changed.   


Modified:
   trunk/online-desktop.schemas.in
   trunk/weblogindriver/web-login-driver
   trunk/weblogindriver/weblogindriver/accounts_dialog.py

Modified: trunk/online-desktop.schemas.in
==============================================================================
--- trunk/online-desktop.schemas.in	(original)
+++ trunk/online-desktop.schemas.in	Wed Oct 22 21:35:39 2008
@@ -8,7 +8,17 @@
       <type>bool</type>
       <default>TRUE</default>
       <locale name="C">
-        <short>Whether to sync preferences to a network server</short>
+        <short>Whether to sync preferences to a network server.</short>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/desktop/gnome/online-accounts/save_online</key>
+      <applyto>/desktop/gnome/online-accounts/save_online</applyto>
+      <owner>gnome</owner>
+      <type>bool</type>
+      <default>FALSE</default>
+      <locale name="C">
+        <short>Whether to sync online accounts to a network server.</short>
       </locale>
     </schema>
     <schema>
@@ -17,11 +27,11 @@
       <type>bool</type>
       <default>TRUE</default>
       <locale name="C">
-		<short>Whether the account is enabled by the user to be utilized by bigboard stocks.</short>
+		<short>Whether the account is enabled by the user to be utilized by the desktop applications.</short>
       </locale>
     </schema>
     <schema>
-      <key>/schemas/desktop/gnome/online-accounts/TEMPLATE/kind</key>
+      <key>/schemas/desktop/gnome/online-accounts/TEMPLATE/type</key>
       <owner>gnome</owner>
       <type>string</type>
       <default></default>

Modified: trunk/weblogindriver/web-login-driver
==============================================================================
--- trunk/weblogindriver/web-login-driver	(original)
+++ trunk/weblogindriver/web-login-driver	Wed Oct 22 21:35:39 2008
@@ -444,6 +444,8 @@
     self.__gconf = gconf.client_get_default()
     self.__gconf.add_dir(GCONF_BASE_DIR, gconf.CLIENT_PRELOAD_RECURSIVE)
     self.__gconf.notify_add(GCONF_BASE_DIR, self.__on_gconf_change)
+    self.__save_online_flag = False
+    self.__reload_save_online_flag_from_gconf()
 
     ## a dict from gconf directory name underneath GCONF_BASE_DIR to
     ## a dict of the gconf values underneath that account directory
@@ -834,6 +836,19 @@
       gconf_info['enabled'] = False   
     return gconf_info
             
+  def __reload_save_online_flag_from_gconf(self):
+    try:
+      new_save_online_flag = self.__gconf.get_value(GCONF_BASE_DIR + "/save_online")
+      if new_save_online_flag != self.__save_online_flag:
+        self.__save_online_flag = new_save_online_flag
+        self.SaveOnlineFlagChanged(self.__save_online_flag)
+        # TODO: do everything else here
+    except ValueError:
+      self.__set_save_online_flag_in_gconf(self.__save_online_flag)
+
+  def __set_save_online_flag_in_gconf(self, save_online_flag):
+    self.__gconf.set_bool(GCONF_BASE_DIR + "/save_online", save_online_flag)
+
   def __reload_from_gconf(self):
     gconf_dirs = self.__gconf.all_dirs(GCONF_BASE_DIR)
 
@@ -874,6 +889,7 @@
   @defer_idle_func(timeout=400)        
   def __on_gconf_change(self, *args):
     _logger.debug("gconf change notify for accounts")
+    self.__reload_save_online_flag_from_gconf()
     self.__reload_from_gconf()
 
   def __check_signons(self, signons):
@@ -991,6 +1007,27 @@
       self.__gconf_info[gconf_dir]=self.__get_gconf_info(gconf_dir)
       self.AccountAdded(account.GetObjectPath()) 
 
+  @dbus.service.method(OA_BUS_IFACE_STR,                      
+                       in_signature="b")
+  def SetSaveOnlineFlag(self, save_online_flag): 
+    # if save_online_flag became true: do merge, start using server accounts
+    # if save_oline_flag became false: stop using server updates/accounts and stop sending adds/removals to the server 
+    if save_online_flag == self.__save_online_flag:
+      return
+
+    # everything else will happen once we update the flag in gconf
+    self.__set_save_online_flag_in_gconf(save_online_flag)
+
+  @dbus.service.method(OA_BUS_IFACE_STR,                      
+                       out_signature="b")
+  def GetSaveOnlineFlag(self): 
+    return self.__save_online_flag
+
+  @dbus.service.signal(OA_BUS_IFACE_STR,
+                       signature='b')
+  def SaveOnlineFlagChanged(self, new_save_online_flag):
+    pass
+
   # new_properties is a dictionary, valid properties are "password" and "enabled"
   @dbus.service.method(OA_BUS_IFACE_STR,                      
                        in_signature="oa{ss}")
@@ -1032,7 +1069,7 @@
     if 'password' in properties and (len(properties) == 1 or ('enabled' in properties and properties['enabled'] == account.GetEnabled())):
       ## this should notice a new password
       self.__update_account(account)
-
+ 
   # returns a tuple with an account object path as the first element, and a boolean indicating if a new account was created as a second element, and a feedback message as a third element
   @dbus.service.method(OA_BUS_IFACE_STR,                      
                        in_signature="ss",

Modified: trunk/weblogindriver/weblogindriver/accounts_dialog.py
==============================================================================
--- trunk/weblogindriver/weblogindriver/accounts_dialog.py	(original)
+++ trunk/weblogindriver/weblogindriver/accounts_dialog.py	Wed Oct 22 21:35:39 2008
@@ -111,16 +111,25 @@
         self.__remove_button.connect('clicked',
                                    self.__on_account_remove_clicked)
         remove_button_box.pack_end(self.__remove_button, expand=False, fill=False)
+        self.__existing_accounts_vbox.pack_start(remove_button_box, False, False, padding=5)
+
+        online_options_hbox = gtk.HBox(spacing=2)
+        self.__save_online_check_box = gtk.CheckButton(label="Save Accounts Online")
+        self.__save_online_check_box.set_active(self.__online_accounts_service.GetSaveOnlineFlag())
+        self.__save_online_check_box.connect('toggled',
+                                             self.__on_save_online_setting_changed)
+        online_options_hbox.pack_start(self.__save_online_check_box, False, False)  
 
         self.__account_page_link_box = gtk.HBox()
         self.__account_page_link = Link()
         self.__account_page_link.set_text("Visit Account Page")
-        # self.__account_page_link.set_enabled(False)
         self.__account_page_link.connect("clicked", self.__open_account_page)
-        self.__account_page_link_box.pack_end(self.__account_page_link, expand=False, fill=False)
-
-        self.__existing_accounts_vbox.pack_start(remove_button_box, False, False, padding=5)
-        self.__outer_existing_accounts_vbox.pack_end(self.__account_page_link_box, False, False)   
+        self.__account_page_link_box.pack_start(self.__account_page_link, expand=False, fill=False)
+    
+        self.__outer_existing_accounts_vbox.pack_end(self.__account_page_link_box, False, False, padding=2) 
+        self.__outer_existing_accounts_vbox.pack_end(online_options_hbox, False, False)   
+        separator = gtk.HSeparator()
+        self.__outer_existing_accounts_vbox.pack_end(separator, False, False)   
 
         # stuff below gets added to the "Add Account" tab
 
@@ -172,19 +181,26 @@
         self.__add_button_box.pack_end(self.__add_button, expand=False, fill=False)
         self.__new_account_vbox.pack_start(self.__add_button_box, False, False, padding=padding)   
 
+        online_options_hbox_2 = gtk.HBox(spacing=2)
+        self.__save_online_check_box_2 = gtk.CheckButton(label="Save Accounts Online")
+        self.__save_online_check_box_2.set_active(self.__online_accounts_service.GetSaveOnlineFlag())
+        self.__save_online_check_box_2.connect('toggled',
+                                               self.__on_save_online_setting_changed)
+        online_options_hbox_2.pack_start(self.__save_online_check_box_2, False, False)  
+
         self.__account_page_link_box_2 = gtk.HBox()
         self.__account_page_link_2 = Link()
         self.__account_page_link_2.set_text("Visit Account Page")
-        # self.__account_page_link_2.set_enabled(False)
         self.__account_page_link_2.connect("clicked", self.__open_account_page)
+        self.__account_page_link_box_2.pack_start(self.__account_page_link_2, expand=False, fill=False)
+    
+        self.__outer_new_account_vbox.pack_end(self.__account_page_link_box_2, False, False, padding=2) 
+        self.__outer_new_account_vbox.pack_end(online_options_hbox_2, False, False)   
+        separator_2 = gtk.HSeparator()
+        self.__outer_new_account_vbox.pack_end(separator_2, False, False)  
 
         if len(self.__account_types_model) > 0:
             self.__account_types_combo.set_active(0)
-            self.__account_page_link_box_2.pack_end(self.__account_page_link_2, expand=False, fill=False)
-            self.__outer_new_account_vbox.pack_end(self.__account_page_link_box_2, False, False)
-        else:  
-            self.__account_page_link_box_2.pack_start(self.__account_page_link_2)
-            self.__new_account_vbox.pack_start(self.__account_page_link_box_2)
    
         self.__model_tree_iter_by_account = {}
         self.__current_account = None
@@ -217,10 +233,18 @@
         id = self.__onlineaccounts_proxy.connect_to_signal('AccountRemoved',
                                                            self.__on_account_removed)
         self.__connections.add(self.__onlineaccounts_proxy, id)
+        id = self.__onlineaccounts_proxy.connect_to_signal('SaveOnlineFlagChanged',
+                                                           self.__on_save_online_flag_changed)
+        self.__connections.add(self.__onlineaccounts_proxy, id)        
 
     def __open_account_page(self, l):
         gnome.url_show(urlparse.urljoin(ddm_util.get_baseurl(), "/account"))
       
+    def __on_save_online_flag_changed(self, new_save_online_flag):
+        self.__save_online_check_box.set_active(new_save_online_flag)
+        self.__save_online_check_box_2.set_active(new_save_online_flag)
+        # TODO: update the links too
+
     def __on_account_added(self, a_path):
         if a_path not in self.__model_tree_iter_by_account:
             a = self.__online_accounts_service.get_existing_account(a_path)
@@ -305,6 +329,12 @@
             self.__undo_button.set_sensitive(False)  
             self.__apply_button.set_sensitive(False)  
 
+    def __on_save_online_setting_changed(self, widget):
+       # it's important to use the passed in widget here because we have two checkboxes (one in each tab)
+       # that call this function
+       if widget.get_active() != self.__online_accounts_service.GetSaveOnlineFlag():
+           self.__online_accounts_service.SetSaveOnlineFlag(widget.get_active())
+
     def __on_account_settings_applied(self, widget):
         text = self.__password_entry.get_text()
         enabled = self.__check_box.get_active()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]