From b35b52f1ccc40f574ee1a4c5bd8bad0fa6629133 Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Tue, 13 Oct 2015 08:44:45 +0200
Subject: [PATCH] Add preferences to disable auto refresh

---
 res/ui/preferences.ui           | 16 +++++++++++++++-
 src/cutecoin/core/app.py        |  3 ++-
 src/cutecoin/gui/preferences.py |  3 ++-
 src/cutecoin/gui/wot_tab.py     | 19 +++++++++++++++----
 4 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/res/ui/preferences.ui b/res/ui/preferences.ui
index 942d581d..a6225bc5 100644
--- a/res/ui/preferences.ui
+++ b/res/ui/preferences.ui
@@ -96,7 +96,7 @@
      <item>
       <widget class="QStackedWidget" name="stackedWidget">
        <property name="currentIndex">
-        <number>0</number>
+        <number>2</number>
        </property>
        <widget class="QWidget" name="page">
         <layout class="QVBoxLayout" name="verticalLayout_7">
@@ -368,6 +368,20 @@
            </property>
           </widget>
          </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_11">
+           <property name="topMargin">
+            <number>6</number>
+           </property>
+           <item>
+            <widget class="QCheckBox" name="checkbox_auto_refresh">
+             <property name="text">
+              <string>Automatically refresh identities informations</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
          <item>
           <spacer name="verticalSpacer_3">
            <property name="orientation">
diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py
index 6e77c7a7..d7e8e1be 100644
--- a/src/cutecoin/core/app.py
+++ b/src/cutecoin/core/app.py
@@ -67,7 +67,8 @@ class Application(QObject):
                             'proxy_type': "HTTP",
                             'proxy_address': "",
                             'proxy_port': 8080,
-                            'international_system_of_units': True
+                            'international_system_of_units': True,
+                            'auto_refresh': False
                             }
 
         self.notifications = {'membership_expire_soon':
diff --git a/src/cutecoin/gui/preferences.py b/src/cutecoin/gui/preferences.py
index 3b099d46..0a9f6ff9 100644
--- a/src/cutecoin/gui/preferences.py
+++ b/src/cutecoin/gui/preferences.py
@@ -70,7 +70,8 @@ class PreferencesDialog(QDialog, Ui_PreferencesDialog):
                 'enable_proxy': self.checkbox_proxy.isChecked(),
                 'proxy_address': self.edit_proxy_address.text(),
                 'proxy_port': self.spinbox_proxy_port.value(),
-                'international_system_of_units': self.checkbox_international_system.isChecked()}
+                'international_system_of_units': self.checkbox_international_system.isChecked(),
+                'auto_refresh': self.checkbox_auto_refresh.isChecked()}
         self.app.save_preferences(pref)
       # change UI translation
         self.app.switch_language()
diff --git a/src/cutecoin/gui/wot_tab.py b/src/cutecoin/gui/wot_tab.py
index 363f5a96..3280ff29 100644
--- a/src/cutecoin/gui/wot_tab.py
+++ b/src/cutecoin/gui/wot_tab.py
@@ -73,13 +73,23 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         self.password_asker = password_asker
 
     def change_community(self, community):
-        if self.community:
-            self.community.network.new_block_mined.disconnect(self.refresh)
-        if community:
-            community.network.new_block_mined.connect(self.refresh)
+        self._auto_refresh(community)
         self.community = community
         self.reset()
 
+    def _auto_refresh(self, new_community):
+        if self.community:
+            try:
+                self.community.network.new_block_mined.disconnect(self.refresh)
+            except ValueError as e:
+                if "disconnect" in str(e):
+                    logging.debug("new block mined not connected")
+        if self.app.preferences["auto_refresh"]:
+            if new_community:
+                new_community.network.new_block_mined.connect(self.refresh)
+            elif self.community:
+                self.community.network.new_block_mined.connect(self.refresh)
+
     @once_at_a_time
     @asyncify
     @asyncio.coroutine
@@ -348,5 +358,6 @@ class WotTabWidget(QWidget, Ui_WotTabWidget):
         """
         if event.type() == QEvent.LanguageChange:
             self.retranslateUi(self)
+            self._auto_refresh(None)
             self.refresh()
         return super(WotTabWidget, self).changeEvent(event)
-- 
GitLab