Esempio n. 1
0
        /// <summary>
        /// Removes all ressources such as menus, handles and forms from KeePass.
        /// </summary>
        public override void Terminate()
        {
            //Destroy Help Form.
            if (HelpForm.Visible)
            {
                HelpForm.Close();
            }
            else
            {
                HelpForm.Dispose();
            }

            //Unregister internal events.
            m_host.MainWindow.Shown -= MainWindow_Shown;

            //Remove Tools Menus.
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toMenuTrayTOTP);
            toMenuTrayTOTP.Dispose();
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toSubMenuSettings);
            toSubMenuSettings.Dispose();
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toSubMenuSeperator1);
            toSubMenuSeperator1.Dispose();
            m_host.MainWindow.ToolsMenu.DropDownItems.Remove(toSubMenuAbout);
            toSubMenuAbout.Dispose();

            //Remove Notify Icon menus.
            m_host.MainWindow.TrayContextMenu.Opening -= OnNotifyMenuOpening;
            m_host.MainWindow.TrayContextMenu.Items.Remove(niMenuTitle);
            niMenuTitle.Dispose();
            foreach (var Menu in niMenuList)
            {
                m_host.MainWindow.TrayContextMenu.Items.Remove(Menu);
                Menu.Dispose();
            }
            m_host.MainWindow.TrayContextMenu.Items.Remove(niMenuSeperator);
            niMenuSeperator.Dispose();

            //Remove Context menus.
            m_host.MainWindow.EntryContextMenu.Opening -= OnEntryMenuOpening;
            m_host.MainWindow.EntryContextMenu.Closed  -= OnEntryMenuClosed;
            m_host.MainWindow.EntryContextMenu.Items.Remove(enMenuCopyTOTP);
            enMenuCopyTOTP.Dispose();

            //Unregister auto-type function.
            if (SprEngine.FilterPlaceholderHints.Contains(m_host.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets()))
            {
                SprEngine.FilterCompile -= SprEngine_FilterCompile;
                SprEngine.FilterPlaceholderHints.Remove(m_host.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets());
            }

            //Remove Column provider.
            m_host.ColumnProviderPool.Remove(liColumnTOTP);
            liColumnTOTP = null;

            //Remove Timer.
            liRefreshTimer.Tick -= OnTimerTick;
            liRefreshTimer.Dispose();
        }
Esempio n. 2
0
        /// <summary>
        /// Initialization of the plugin, adding menus, handlers and forms.
        /// </summary>
        /// <param name="host">Plugin host for access to KeePass functions.</param>
        /// <returns>Successful loading of the plugin, if not the plugin is removed.</returns>
        public override bool Initialize(IPluginHost host)
        {
            // Internalize Host Handle.
            if (host == null)
            {
                return(false);
            }

            PluginHost = host;

            // Instantiate Help Form.
            _helpForm = new FormHelp();

            // Register events.
            PluginHost.MainWindow.Shown += MainWindow_Shown;

            // Notify Icon Context Menus.
            PluginHost.MainWindow.TrayContextMenu.Opening += OnNotifyMenuOpening;
            _niMenuTitle       = new ToolStripMenuItem(Localization.Strings.TrayTOTPPlugin);
            _niMenuTitle.Image = Properties.Resources.TOTP;
            PluginHost.MainWindow.TrayContextMenu.Items.Insert(0, _niMenuTitle);
            _niMenuSeperator = new ToolStripSeparator();
            PluginHost.MainWindow.TrayContextMenu.Items.Insert(1, _niMenuSeperator);

            PluginHost.MainWindow.TrayContextMenu.Opened += OnTrayContextMenuOpened;

            // Register auto-type function.
            if (PluginHost.CustomConfig.GetBool(setname_bool_AutoType_Enable, true))
            {
                SprEngine.FilterCompile += SprEngine_FilterCompile;
                SprEngine.FilterPlaceholderHints.Add(PluginHost.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets());
            }

            // List Column TOTP.
            _liColumnTotp = new TrayTOTP_CustomColumn(this);
            PluginHost.ColumnProviderPool.Add(_liColumnTotp);

            // Refresh Timer.
            _liRefreshTimer.Interval = setstat_int_EntryList_RefreshRate;
            _liRefreshTimer.Enabled  = true;
            _liRefreshTimer.Tick    += OnTimerTick;

            //Time Correction.
            TimeCorrections = new TimeCorrectionCollection(PluginHost.CustomConfig.GetBool(setname_bool_TimeCorrection_Enable, false));
            TimeCorrectionProvider.Interval = Convert.ToInt16(PluginHost.CustomConfig.GetULong(KeeTrayTOTPExt.setname_ulong_TimeCorrection_RefreshTime, KeeTrayTOTPExt.setdef_TimeCorrection_RefreshTime));
            TimeCorrections.AddRangeFromList(PluginHost.CustomConfig.GetString(setname_string_TimeCorrection_List, string.Empty).Split(';').ToList());

            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// Removes all resources such as menus, handles and forms from KeePass.
        /// </summary>
        public override void Terminate()
        {
            // Destroy Help Form.
            if (_helpForm.Visible)
            {
                _helpForm.Close();
            }
            else
            {
                _helpForm.Dispose();
            }

            // Unregister internal events.
            PluginHost.MainWindow.Shown -= MainWindow_Shown;

            // Remove Notify Icon menus.
            PluginHost.MainWindow.TrayContextMenu.Opening -= OnNotifyMenuOpening;
            PluginHost.MainWindow.TrayContextMenu.Opened  -= OnTrayContextMenuOpened;
            PluginHost.MainWindow.TrayContextMenu.Items.Remove(_niMenuTitle);
            _niMenuTitle.Dispose();
            foreach (var menu in _niMenuList)
            {
                PluginHost.MainWindow.TrayContextMenu.Items.Remove(menu);
                menu.Dispose();
            }
            PluginHost.MainWindow.TrayContextMenu.Items.Remove(_niMenuSeperator);
            _niMenuSeperator.Dispose();

            // Unregister auto-type function.
            if (SprEngine.FilterPlaceholderHints.Contains(PluginHost.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets()))
            {
                SprEngine.FilterCompile -= SprEngine_FilterCompile;
                SprEngine.FilterPlaceholderHints.Remove(PluginHost.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets());
            }

            // Remove Column provider.
            PluginHost.ColumnProviderPool.Remove(_liColumnTotp);
            _liColumnTotp = null;

            // Remove Timer.
            _liRefreshTimer.Tick -= OnTimerTick;
            _liRefreshTimer.Dispose();
        }
Esempio n. 4
0
        /// <summary>
        /// Initialization of the plugin, adding menus, handlers and forms.
        /// </summary>
        /// <param name="host">Plugin host for access to KeePass functions.</param>
        /// <returns>Successful loading of the plugin, if not the plugin is removed.</returns>
        public override bool Initialize(IPluginHost host)
        {
            //Internalise Host Handle.
            if (host == null)
            {
                return(false);
            }
            m_host = host;

            //Instanciate Help Form.
            HelpForm = new FormHelp(this);

            //Register form events.
            m_host.MainWindow.Shown += MainWindow_Shown;

            //Tools Menus.
            toMenuTrayTOTP       = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strTrayTOTPPlugin);
            toMenuTrayTOTP.Image = Properties.Resources.TOTP;
            m_host.MainWindow.ToolsMenu.DropDownItems.Add(toMenuTrayTOTP);
            toSubMenuSettings        = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strSettings);
            toSubMenuSettings.Image  = Properties.Resources.TOTP_Settings;
            toSubMenuSettings.Click += OnMenuSettingsClick;
            toMenuTrayTOTP.DropDownItems.Add(toSubMenuSettings);
            toSubMenuSeperator1 = new ToolStripSeparator();
            toMenuTrayTOTP.DropDownItems.Add(toSubMenuSeperator1);
            toSubMenuHelp        = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strHelp);
            toSubMenuHelp.Image  = Properties.Resources.TOTP_Help;
            toSubMenuHelp.Click += OnMenuHelpClick;
            toMenuTrayTOTP.DropDownItems.Add(toSubMenuHelp);
            toSubMenuAbout        = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strAbout + "...");
            toSubMenuAbout.Image  = Properties.Resources.TOTP_Info;
            toSubMenuAbout.Click += OnMenuAboutClick;
            toMenuTrayTOTP.DropDownItems.Add(toSubMenuAbout);

            //Entry Context Menus.
            m_host.MainWindow.EntryContextMenu.Opening += OnEntryMenuOpening;
            m_host.MainWindow.EntryContextMenu.Closed  += OnEntryMenuClosed;
            enMenuCopyTOTP              = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strCopyTOTP);
            enMenuCopyTOTP.Image        = Properties.Resources.TOTP;
            enMenuCopyTOTP.ShortcutKeys = (Keys)Shortcut.CtrlT;
            enMenuCopyTOTP.Click       += OnEntryMenuTOTPClick;
            m_host.MainWindow.EntryContextMenu.Items.Insert(m_host.MainWindow.EntryContextMenu.Items.IndexOfKey(keeobj_string_EntryContextMenuCopyPassword_Name) + 1, enMenuCopyTOTP);
            enMenuSetupTOTP              = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strSetupTOTP);
            enMenuSetupTOTP.Image        = Properties.Resources.TOTP_Setup;
            enMenuSetupTOTP.ShortcutKeys = (Keys)Shortcut.CtrlShiftI;
            enMenuSetupTOTP.Click       += OnEntryMenuSetupClick;
            enMenuShowQR              = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strShowQR);
            enMenuShowQR.Image        = Properties.Resources.TOTP_Setup;
            enMenuShowQR.ShortcutKeys = (Keys)Shortcut.CtrlShiftJ;
            enMenuShowQR.Click       += OnEntryMenuShowQRClick;
            var ContextMenu = (ToolStripMenuItem)m_host.MainWindow.EntryContextMenu.Items.Find(keeobj_string_EntryContextMenuEntriesSubMenu_Name, true)[0];

            ContextMenu.DropDownItems.Insert(ContextMenu.DropDownItems.IndexOfKey(keeobj_string_EntryContextMenuEntriesSubMenuSeperator1_Name) + 1, enMenuSetupTOTP);
            ContextMenu.DropDownItems.Insert(ContextMenu.DropDownItems.IndexOfKey(keeobj_string_EntryContextMenuEntriesSubMenuSeperator1_Name) + 2, enMenuShowQR);
            enMenuSeperator = new ToolStripSeparator();
            ContextMenu.DropDownItems.Insert(ContextMenu.DropDownItems.IndexOf(enMenuShowQR) + 1, enMenuSeperator);

            //Notify Icon Context Menus.
            m_host.MainWindow.TrayContextMenu.Opening += OnNotifyMenuOpening;
            niMenuTitle       = new ToolStripMenuItem(TrayTOTP_Plugin_Localization.strTrayTOTPPlugin);
            niMenuTitle.Image = Properties.Resources.TOTP;
            m_host.MainWindow.TrayContextMenu.Items.Insert(0, niMenuTitle);
            niMenuSeperator = new ToolStripSeparator();
            m_host.MainWindow.TrayContextMenu.Items.Insert(1, niMenuSeperator);

            //Register auto-type function.
            if (m_host.CustomConfig.GetBool(setname_bool_AutoType_Enable, true))
            {
                SprEngine.FilterCompile += SprEngine_FilterCompile;
                SprEngine.FilterPlaceholderHints.Add(m_host.CustomConfig.GetString(setname_string_AutoType_FieldName, setdef_string_AutoType_FieldName).ExtWithBrackets());
            }

            //List Column TOTP.
            liColumnTOTP = new TrayTOTP_CustomColumn(this);
            m_host.ColumnProviderPool.Add(liColumnTOTP);

            //Refresh Timer.
            liRefreshTimer.Interval = setstat_int_EntryList_RefreshRate;
            liRefreshTimer.Enabled  = true;
            liRefreshTimer.Tick    += OnTimerTick;

            //Time Correction.
            TimeCorrections = new TimeCorrectionCollection(m_host.CustomConfig.GetBool(setname_bool_TimeCorrection_Enable, false));
            TimeCorrectionProvider.Interval = Convert.ToInt16(m_host.CustomConfig.GetULong(KeeTrayTOTPExt.setname_ulong_TimeCorrection_RefreshTime, KeeTrayTOTPExt.setdef_ulong_TimeCorrection_RefreshTime));
            TimeCorrections.AddRangeFromList(m_host.CustomConfig.GetString(setname_string_TimeCorrection_List, string.Empty).Split(';').ToList());

            return(true);
        }