diff options
| -rw-r--r-- | changes/feature-3631_autostart-eip-optional | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/eip_preferenceswindow.py | 43 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/ui/eippreferences.ui | 125 | 
3 files changed, 151 insertions, 19 deletions
| diff --git a/changes/feature-3631_autostart-eip-optional b/changes/feature-3631_autostart-eip-optional new file mode 100644 index 00000000..83288548 --- /dev/null +++ b/changes/feature-3631_autostart-eip-optional @@ -0,0 +1,2 @@ +  o Add preferences option to enable/disable the automatic start of EIP, and +    selection of the EIP provider to auto start. Closes #3631. diff --git a/src/leap/bitmask/gui/eip_preferenceswindow.py b/src/leap/bitmask/gui/eip_preferenceswindow.py index 0e6e8dda..9f8c4ff4 100644 --- a/src/leap/bitmask/gui/eip_preferenceswindow.py +++ b/src/leap/bitmask/gui/eip_preferenceswindow.py @@ -50,6 +50,7 @@ class EIPPreferencesWindow(QtGui.QDialog):          self.ui = Ui_EIPPreferences()          self.ui.setupUi(self)          self.ui.lblProvidersGatewayStatus.setVisible(False) +        self.ui.lblAutoStartEIPStatus.setVisible(False)          # Connections          self.ui.cbProvidersGateway.currentIndexChanged[unicode].connect( @@ -58,8 +59,40 @@ class EIPPreferencesWindow(QtGui.QDialog):          self.ui.cbGateways.currentIndexChanged[unicode].connect(              lambda x: self.ui.lblProvidersGatewayStatus.setVisible(False)) +        self.ui.cbProvidersEIP.currentIndexChanged[unicode].connect( +            lambda x: self.ui.lblAutoStartEIPStatus.setVisible(False)) + +        self.ui.cbAutoStartEIP.toggled.connect( +            lambda x: self.ui.lblAutoStartEIPStatus.setVisible(False)) + +        self.ui.pbSaveAutoStartEIP.clicked.connect(self._save_auto_start_eip) +          self._add_configured_providers() +        # Load auto start EIP settings +        self.ui.cbAutoStartEIP.setChecked(self._settings.get_autostart_eip()) +        default_provider = self._settings.get_defaultprovider() +        idx = self.ui.cbProvidersEIP.findText(default_provider) +        self.ui.cbProvidersEIP.setCurrentIndex(idx) + +    def _save_auto_start_eip(self): +        """ +        SLOT +        TRIGGER: +            self.ui.cbAutoStartEIP.toggled + +        Saves the automatic start of EIP user preference. +        """ +        default_provider = self.ui.cbProvidersEIP.currentText() +        enabled = self.ui.cbAutoStartEIP.isChecked() + +        self._settings.set_autostart_eip(enabled) +        self._settings.set_defaultprovider(default_provider) + +        self.ui.lblAutoStartEIPStatus.show() +        logger.debug('Auto start EIP saved: {0} {1}.'.format( +            default_provider, enabled)) +      def _set_providers_gateway_status(self, status, success=False,                                        error=False):          """ @@ -87,8 +120,16 @@ class EIPPreferencesWindow(QtGui.QDialog):          Add the client's configured providers to the providers combo boxes.          """          self.ui.cbProvidersGateway.clear() -        for provider in self._settings.get_configured_providers(): +        self.ui.cbProvidersEIP.clear() +        providers = self._settings.get_configured_providers() +        if not providers: +            self.ui.gbAutomaticEIP.setEnabled(False) +            self.ui.gbGatewaySelector.setEnabled(False) +            return + +        for provider in providers:              self.ui.cbProvidersGateway.addItem(provider) +            self.ui.cbProvidersEIP.addItem(provider)      def _save_selected_gateway(self, provider):          """ diff --git a/src/leap/bitmask/gui/ui/eippreferences.ui b/src/leap/bitmask/gui/ui/eippreferences.ui index e9bc203d..9493d330 100644 --- a/src/leap/bitmask/gui/ui/eippreferences.ui +++ b/src/leap/bitmask/gui/ui/eippreferences.ui @@ -6,8 +6,8 @@     <rect>      <x>0</x>      <y>0</y> -    <width>400</width> -    <height>170</height> +    <width>398</width> +    <height>262</height>     </rect>    </property>    <property name="windowTitle"> @@ -17,8 +17,8 @@     <iconset resource="../../../../../data/resources/mainwindow.qrc">      <normaloff>:/images/mask-icon.png</normaloff>:/images/mask-icon.png</iconset>    </property> -  <layout class="QVBoxLayout" name="verticalLayout"> -   <item> +  <layout class="QGridLayout" name="gridLayout_2"> +   <item row="1" column="0">      <widget class="QGroupBox" name="gbGatewaySelector">       <property name="enabled">        <bool>true</bool> @@ -30,6 +30,16 @@        <bool>false</bool>       </property>       <layout class="QGridLayout" name="gridLayout"> +      <item row="0" column="0"> +       <widget class="QLabel" name="lblSelectProvider"> +        <property name="text"> +         <string>&Select provider:</string> +        </property> +        <property name="buddy"> +         <cstring>cbProvidersGateway</cstring> +        </property> +       </widget> +      </item>        <item row="0" column="1" colspan="2">         <widget class="QComboBox" name="cbProvidersGateway">          <item> @@ -39,13 +49,20 @@          </item>         </widget>        </item> -      <item row="0" column="0"> -       <widget class="QLabel" name="lblSelectProvider"> +      <item row="7" column="2"> +       <widget class="QPushButton" name="pbSaveGateway">          <property name="text"> -         <string>&Select provider:</string> +         <string>Save this provider settings</string>          </property> -        <property name="buddy"> -         <cstring>cbProvidersGateway</cstring> +       </widget> +      </item> +      <item row="4" column="0" colspan="3"> +       <widget class="QLabel" name="lblProvidersGatewayStatus"> +        <property name="text"> +         <string>< Providers Gateway Status ></string> +        </property> +        <property name="alignment"> +         <set>Qt::AlignCenter</set>          </property>         </widget>        </item> @@ -65,30 +82,102 @@          </item>         </widget>        </item> -      <item row="5" column="2"> -       <widget class="QPushButton" name="pbSaveGateway"> +     </layout> +    </widget> +   </item> +   <item row="0" column="0"> +    <widget class="QGroupBox" name="gbAutomaticEIP"> +     <property name="title"> +      <string>Automatic EIP start</string> +     </property> +     <layout class="QGridLayout" name="gridLayout_3"> +      <item row="3" column="0"> +       <widget class="QLabel" name="lblAutoStartEIPStatus"> +        <property name="layoutDirection"> +         <enum>Qt::LeftToRight</enum> +        </property> +        <property name="styleSheet"> +         <string notr="true"/> +        </property> +        <property name="frameShape"> +         <enum>QFrame::NoFrame</enum> +        </property> +        <property name="frameShadow"> +         <enum>QFrame::Plain</enum> +        </property>          <property name="text"> -         <string>Save this provider settings</string> +         <string><font color='green'><b>Automatic EIP start saved!</b></font></string> +        </property> +        <property name="alignment"> +         <set>Qt::AlignCenter</set>          </property>         </widget>        </item> -      <item row="2" column="0" colspan="3"> -       <widget class="QLabel" name="lblProvidersGatewayStatus"> +      <item row="3" column="1"> +       <widget class="QPushButton" name="pbSaveAutoStartEIP">          <property name="text"> -         <string>< Providers Gateway Status ></string> +         <string>Save auto start setting</string>          </property> -        <property name="alignment"> -         <set>Qt::AlignCenter</set> +       </widget> +      </item> +      <item row="0" column="0"> +       <widget class="QCheckBox" name="cbAutoStartEIP"> +        <property name="layoutDirection"> +         <enum>Qt::LeftToRight</enum> +        </property> +        <property name="text"> +         <string>Enable Automatic start of EIP</string> +        </property> +        <property name="checked"> +         <bool>true</bool>          </property>         </widget>        </item> +      <item row="0" column="1"> +       <widget class="QComboBox" name="cbProvidersEIP"> +        <item> +         <property name="text"> +          <string><Select provider></string> +         </property> +        </item> +       </widget> +      </item>       </layout> +     <zorder>cbAutoStartEIP</zorder> +     <zorder>lblAutoStartEIPStatus</zorder> +     <zorder>pbSaveAutoStartEIP</zorder> +     <zorder>cbProvidersEIP</zorder>      </widget>     </item>    </layout>   </widget> + <tabstops> +  <tabstop>cbAutoStartEIP</tabstop> +  <tabstop>cbProvidersEIP</tabstop> +  <tabstop>pbSaveAutoStartEIP</tabstop> +  <tabstop>cbProvidersGateway</tabstop> +  <tabstop>cbGateways</tabstop> +  <tabstop>pbSaveGateway</tabstop> + </tabstops>   <resources>    <include location="../../../../../data/resources/mainwindow.qrc"/>   </resources> - <connections/> + <connections> +  <connection> +   <sender>cbAutoStartEIP</sender> +   <signal>toggled(bool)</signal> +   <receiver>cbProvidersEIP</receiver> +   <slot>setEnabled(bool)</slot> +   <hints> +    <hint type="sourcelabel"> +     <x>180</x> +     <y>53</y> +    </hint> +    <hint type="destinationlabel"> +     <x>238</x> +     <y>53</y> +    </hint> +   </hints> +  </connection> + </connections>  </ui> | 
