Skip to content
Snippets Groups Projects
accounts.py 39.5 KiB
Newer Older
Philipp Hörist's avatar
Philipp Hörist committed
        SettingsDialog.__init__(self, parent, _('Priority'),
Philipp Hörist's avatar
Philipp Hörist committed
                                Gtk.DialogFlags.MODAL, settings, account)
Philipp Hörist's avatar
Philipp Hörist committed

        self.connect('destroy', self.on_destroy)

Daniel Brötzmann's avatar
Daniel Brötzmann committed
    def on_destroy(self, *args: Any) -> None:
Philipp Hörist's avatar
Philipp Hörist committed
        # Update priority
        if self.account not in app.connections:
            return
        client = app.get_client(self.account)
        show = client.status
        status = client.status_message
        client.change_status(show, status)
Philipp Hörist's avatar
Philipp Hörist committed
class CutstomHostnameDialog(SettingsDialog):
Daniel Brötzmann's avatar
Daniel Brötzmann committed
    def __init__(self, account: str, parent: Gtk.Window) -> None:
        type_values = ('START TLS', 'DIRECT TLS', 'PLAIN')

Philipp Hörist's avatar
Philipp Hörist committed
        settings = [
            Setting(SettingKind.SWITCH,
                    _('Enable'),
Philipp Hörist's avatar
Philipp Hörist committed
                    SettingType.ACCOUNT_CONFIG,
            Setting(SettingKind.ENTRY,
                    _('Hostname'),
                    SettingType.ACCOUNT_CONFIG,
                    'custom_host',
                    bind='account::use_custom_host'),
            Setting(SettingKind.SPIN,
                    _('Port'),
                    SettingType.ACCOUNT_CONFIG,
                    'custom_port',
                    bind='account::use_custom_host',
                    props={'range_': (0, 65535)},),
            Setting(SettingKind.COMBO,
                    _('Type'),
                    SettingType.ACCOUNT_CONFIG,
                    'custom_type',
                    bind='account::use_custom_host',
                    props={'combo_items': type_values}),
Philipp Hörist's avatar
Philipp Hörist committed
        SettingsDialog.__init__(self, parent, _('Connection Settings'),
Philipp Hörist's avatar
Philipp Hörist committed
                                Gtk.DialogFlags.MODAL, settings, account)
Philipp Hörist's avatar
Philipp Hörist committed
class CertificateDialog(SettingsDialog):
Daniel Brötzmann's avatar
Daniel Brötzmann committed
    def __init__(self, account: str, parent: Gtk.Window) -> None:
Philipp Hörist's avatar
Philipp Hörist committed
        settings = [
            Setting(SettingKind.FILECHOOSER,
                    _('Client Certificate'),
                    SettingType.ACCOUNT_CONFIG,
                    'client_cert',
Philipp Hörist's avatar
Philipp Hörist committed
                    props={'filefilter': (_('PKCS12 Files'), '*.p12')}),
            Setting(SettingKind.SWITCH,
                    _('Encrypted Certificate'),
                    SettingType.ACCOUNT_CONFIG,
                    'client_cert_encrypted'),
Philipp Hörist's avatar
Philipp Hörist committed
        SettingsDialog.__init__(self, parent, _('Certificate Settings'),
Philipp Hörist's avatar
Philipp Hörist committed
                                Gtk.DialogFlags.MODAL, settings, account)
Philipp Hörist's avatar
Philipp Hörist committed
class LoginDialog(SettingsDialog):
Daniel Brötzmann's avatar
Daniel Brötzmann committed
    def __init__(self, account: str, parent: Gtk.Window) -> None:
Philipp Hörist's avatar
Philipp Hörist committed
        settings = [
            Setting(SettingKind.ENTRY,
                    _('Password'),
                    SettingType.ACCOUNT_CONFIG,
                    'password',
                    bind='account::savepass'),
            Setting(SettingKind.SWITCH,
                    _('Save Password'),
                    SettingType.ACCOUNT_CONFIG,
                    'savepass',
Daniel Brötzmann's avatar
Daniel Brötzmann committed
                    enabled_func=(lambda: not app.settings.get('use_keyring')
                                  or passwords.KEYRING_AVAILABLE)),
            Setting(SettingKind.CHANGEPASSWORD,
                    _('Change Password'),
                    SettingType.DIALOG,
                    callback=self.on_password_change,
Philipp Hörist's avatar
Philipp Hörist committed
                    props={'dialog': None}),
            Setting(SettingKind.SWITCH,
                    _('Use GSSAPI'),
                    SettingType.ACCOUNT_CONFIG,
                    'enable_gssapi'),
Philipp Hörist's avatar
Philipp Hörist committed
        SettingsDialog.__init__(self, parent, _('Login Settings'),
Philipp Hörist's avatar
Philipp Hörist committed
                                Gtk.DialogFlags.MODAL, settings, account)
Philipp Hörist's avatar
Philipp Hörist committed

        self.connect('destroy', self.on_destroy)

Daniel Brötzmann's avatar
Daniel Brötzmann committed
    def on_password_change(self, new_password: str, _data: Any) -> None:
        passwords.save_password(self.account, new_password)
Daniel Brötzmann's avatar
Daniel Brötzmann committed
    def on_destroy(self, *args: Any) -> None:
        savepass = app.settings.get_account_setting(self.account, 'savepass')
Philipp Hörist's avatar
Philipp Hörist committed
        if not savepass:
            passwords.delete_password(self.account)