From f04c992c2d06185aaca3f06bcb72a434fae33acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Wed, 6 Nov 2013 11:18:49 -0300 Subject: Various minor OSX fixes --- src/leap/bitmask/gui/mainwindow.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 5eb9e6dc..549097ae 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -334,7 +334,7 @@ class MainWindow(QtGui.QMainWindow): self.eip_machine = None # start event machines self.start_eip_machine() - self._mail_conductor.start_mail_machine(parent=self) + self._mail_conductor.start_mail_machine() if self._first_run(): self._wizard_firstrun = True @@ -674,10 +674,9 @@ class MainWindow(QtGui.QMainWindow): Toggles the window visibility """ visible = self.isVisible() and self.isActiveWindow() - qApp = QtCore.QCoreApplication.instance() if not visible: - qApp.setQuitOnLastWindowClosed(True) + QtGui.QApplication.setQuitOnLastWindowClosed(True) self.show() self.activateWindow() self.raise_() @@ -685,7 +684,7 @@ class MainWindow(QtGui.QMainWindow): # We set this in order to avoid dialogs shutting down the # app on close, as they will be the only visible window. # e.g.: PreferencesWindow, LoggerWindow - qApp.setQuitOnLastWindowClosed(False) + QtGui.QApplication.setQuitOnLastWindowClosed(False) self.hide() # Wait a bit until the window visibility has changed so @@ -1657,8 +1656,7 @@ class MainWindow(QtGui.QMainWindow): # UI stuff. # Set this in case that the app is hidden - qApp = QtCore.QCoreApplication.instance() - qApp.setQuitOnLastWindowClosed(True) + QtGui.QApplication.setQuitOnLastWindowClosed(True) self._cleanup_and_quit() -- cgit v1.2.3 From 5955b267cdb6e82c57bee74a66ba8fa3d5308c60 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 6 Nov 2013 11:15:34 -0200 Subject: Initializes mail service with the user id. This will be used to properly obtain the private key that now is a property. It will also be needed for the imap authentication. --- src/leap/bitmask/gui/mainwindow.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 5eb9e6dc..2e050d44 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -905,7 +905,6 @@ class MainWindow(QtGui.QMainWindow): Once the user is properly authenticated, try starting the EIP service """ - # In general we want to "filter" likely complicated error # messages, but in this case, the messages make more sense as # they come. Since they are "Unknown user" or "Unknown @@ -914,19 +913,20 @@ class MainWindow(QtGui.QMainWindow): if ok: self._logged_user = self._login_widget.get_user() - # We leave a bit of room for the user to see the - # "Succeeded" message and then we switch to the EIP status - # panel - QtCore.QTimer.singleShot(1000, self._switch_to_status) + user = self._logged_user + domain = self._provider_config.get_domain() + userid = "%s@%s" % (user, domain) + logger.debug("USERID: " % userid) + self._mail_conductor.userid = userid self._login_defer = None + self._start_eip_bootstrap() else: self._login_widget.set_enabled(True) - def _switch_to_status(self): - # TODO this method name is confusing as hell. + def _start_eip_bootstrap(self): """ Changes the stackedWidget index to the EIP status one and - triggers the eip bootstrapping + triggers the eip bootstrapping. """ self._login_widget.logged_in() @@ -949,6 +949,8 @@ class MainWindow(QtGui.QMainWindow): else: self._mail_status.set_disabled() + # XXX the config should be downloaded from the start_eip + # method. self._download_eip_config() ################################################################### -- cgit v1.2.3 From 9674b93f9d6fbe25e10330a6f807e5b7196c01b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Wed, 6 Nov 2013 11:54:03 -0300 Subject: Reject sender if it's not the logged in user --- src/leap/bitmask/gui/mainwindow.py | 1 - 1 file changed, 1 deletion(-) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index a91f4e71..91bbe9cb 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -915,7 +915,6 @@ class MainWindow(QtGui.QMainWindow): user = self._logged_user domain = self._provider_config.get_domain() userid = "%s@%s" % (user, domain) - logger.debug("USERID: " % userid) self._mail_conductor.userid = userid self._login_defer = None self._start_eip_bootstrap() -- cgit v1.2.3 From 6714b423a4ae879e23a82a60480387186e737ab1 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 7 Nov 2013 17:46:02 -0300 Subject: Use custom systray that ease the tooltip use. - Create a custom SysTray that allows us to set services tooltips independently. - Initialize tooltip with service name at start. - Update required service status on tooltip update. [Closes #3998] --- src/leap/bitmask/gui/mainwindow.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 91bbe9cb..f7142df7 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -36,6 +36,7 @@ from leap.bitmask.gui import statemachines from leap.bitmask.gui.eip_status import EIPStatusWidget from leap.bitmask.gui.mail_status import MailStatusWidget from leap.bitmask.gui.wizard import Wizard +from leap.bitmask.gui.systray import SysTray from leap.bitmask import provider from leap.bitmask.platform_init import IS_WIN, IS_MAC @@ -628,12 +629,13 @@ class MainWindow(QtGui.QMainWindow): systrayMenu.addAction(self._action_mail_status) systrayMenu.addSeparator() systrayMenu.addAction(self.ui.action_quit) - self._systray = QtGui.QSystemTrayIcon(self) + self._systray = SysTray(self) self._systray.setContextMenu(systrayMenu) self._systray.setIcon(self._eip_status.ERROR_ICON_TRAY) self._systray.setVisible(True) self._systray.activated.connect(self._tray_activated) + self._mail_status.set_systray(self._systray) self._eip_status.set_systray(self._systray) def _tray_activated(self, reason=None): -- cgit v1.2.3 From 13470807d96cfb6e10bc647aab8111a2b61bb6ea Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 8 Nov 2013 16:37:48 -0300 Subject: Use service's module strings instead of locals. --- src/leap/bitmask/gui/mainwindow.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index f7142df7..f3043809 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -45,6 +45,7 @@ from leap.bitmask.provider.providerbootstrapper import ProviderBootstrapper from leap.bitmask.services.mail import conductor as mail_conductor +from leap.bitmask.services import EIP_SERVICE, MX_SERVICE from leap.bitmask.services.eip import eipconfig from leap.bitmask.services.eip import get_openvpn_management from leap.bitmask.services.eip.eipbootstrapper import EIPBootstrapper @@ -87,9 +88,6 @@ class MainWindow(QtGui.QMainWindow): LOGIN_INDEX = 0 EIP_STATUS_INDEX = 1 - OPENVPN_SERVICE = "openvpn" - MX_SERVICE = "mx" - # Signals eip_needs_login = QtCore.Signal([]) new_updates = QtCore.Signal(object) @@ -598,8 +596,8 @@ class MainWindow(QtGui.QMainWindow): for service in provider_config.get_services(): services.add(service) - self.ui.eipWidget.setVisible(self.OPENVPN_SERVICE in services) - self.ui.mailWidget.setVisible(self.MX_SERVICE in services) + self.ui.eipWidget.setVisible(EIP_SERVICE in services) + self.ui.mailWidget.setVisible(MX_SERVICE in services) # # systray @@ -938,7 +936,7 @@ class MainWindow(QtGui.QMainWindow): # TODO separate UI from logic. # TODO soledad should check if we want to run only over EIP. if self._provider_config.provides_mx() and \ - self._enabled_services.count(self.MX_SERVICE) > 0: + self._enabled_services.count(MX_SERVICE) > 0: self._mail_status.about_to_start() self._soledad_bootstrapper.run_soledad_setup_checks( @@ -1039,7 +1037,7 @@ class MainWindow(QtGui.QMainWindow): # TODO for simmetry, this should be called start_smtp_service # (and delegate all the checks to the conductor) if self._provider_config.provides_mx() and \ - self._enabled_services.count(self.MX_SERVICE) > 0: + self._enabled_services.count(MX_SERVICE) > 0: self._mail_conductor.smtp_bootstrapper.run_smtp_setup_checks( self._provider_config, self._mail_conductor.smtp_config, @@ -1068,7 +1066,7 @@ class MainWindow(QtGui.QMainWindow): self.soledad_ready """ if self._provider_config.provides_mx() and \ - self._enabled_services.count(self.MX_SERVICE) > 0: + self._enabled_services.count(MX_SERVICE) > 0: self._mail_conductor.start_imap_service() def _on_mail_client_logged_in(self, req): @@ -1418,7 +1416,7 @@ class MainWindow(QtGui.QMainWindow): provider_config = self._get_best_provider_config() if provider_config.provides_eip() and \ - self._enabled_services.count(self.OPENVPN_SERVICE) > 0 and \ + self._enabled_services.count(EIP_SERVICE) > 0 and \ not self._already_started_eip: # XXX this should be handled by the state machine. @@ -1429,7 +1427,7 @@ class MainWindow(QtGui.QMainWindow): download_if_needed=True) self._already_started_eip = True elif not self._already_started_eip: - if self._enabled_services.count(self.OPENVPN_SERVICE) > 0: + if self._enabled_services.count(EIP_SERVICE) > 0: self._eip_status.set_eip_status( self.tr("Not supported"), error=True) -- cgit v1.2.3 From 20d89634f7b891fb4f399da51b3800d42159b9eb Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 14 Nov 2013 14:34:46 -0300 Subject: Enable password change in proper conditions. - Send soledad to the constructor and check with sameProxiedObjects - Check if soledad instance is defined, otherwise wait until soledad_ready [Closes #4449] --- src/leap/bitmask/gui/mainwindow.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index f3043809..c24735d8 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -446,11 +446,10 @@ class MainWindow(QtGui.QMainWindow): Displays the preferences window. """ preferences_window = PreferencesWindow(self, self._srp_auth, - self._provider_config) - - self.soledad_ready.connect( - lambda: preferences_window.set_soledad_ready(self._soledad)) + self._provider_config, + self._soledad) + self.soledad_ready.connect(preferences_window.set_soledad_ready) preferences_window.show() def _show_eip_preferences(self): -- cgit v1.2.3 From ed08a7619bd79a594d579b4bfbc7d4bdce3ccd7a Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 14 Nov 2013 11:39:41 -0300 Subject: Add the advanced key management to the main window --- src/leap/bitmask/gui/mainwindow.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/leap/bitmask/gui/mainwindow.py') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index f3043809..39a08cfb 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -29,6 +29,7 @@ from leap.bitmask.config.leapsettings import LeapSettings from leap.bitmask.config.providerconfig import ProviderConfig from leap.bitmask.crypto.srpauth import SRPAuth from leap.bitmask.gui.loggerwindow import LoggerWindow +from leap.bitmask.gui.advanced_key_management import AdvancedKeyManagement from leap.bitmask.gui.login import LoginWidget from leap.bitmask.gui.preferenceswindow import PreferencesWindow from leap.bitmask.gui.eip_preferenceswindow import EIPPreferencesWindow @@ -252,6 +253,9 @@ class MainWindow(QtGui.QMainWindow): self.ui.action_create_new_account.triggered.connect( self._launch_wizard) + self.ui.action_advanced_key_management.triggered.connect( + self._show_AKM) + if IS_MAC: self.ui.menuFile.menuAction().setText(self.tr("File")) @@ -437,6 +441,20 @@ class MainWindow(QtGui.QMainWindow): else: self._logger_window.setVisible(not self._logger_window.isVisible()) + def _show_AKM(self): + """ + SLOT + TRIGGERS: + self.ui.action_advanced_key_management.triggered + + Displays the Advanced Key Management dialog. + """ + domain = self._login_widget.get_selected_provider() + logged_user = "{0}@{1}".format(self._logged_user, domain) + self._akm = AdvancedKeyManagement( + logged_user, self._keymanager, self._soledad) + self._akm.show() + def _show_preferences(self): """ SLOT @@ -1522,6 +1540,7 @@ class MainWindow(QtGui.QMainWindow): """ self._soledad_bootstrapper.cancel_bootstrap() + setProxiedObject(self._soledad, None) # XXX: If other defers are doing authenticated stuff, this # might conflict with those. CHECK! -- cgit v1.2.3