コード例 #1
0
        private void OnProfilesDynamicMenuClick(object sender, DynamicMenuEventArgs e)
        {
            PwProfile pwp = null;

            if (e.ItemName == DeriveFromPrevious)
            {
                pwp = PwProfile.DeriveFromPassword(current_password_field.TextEx);
            }
            else
            {
                foreach (PwProfile pwgo in Program.Config.PasswordGenerator.UserProfiles)
                {
                    if (pwgo.Name == e.ItemName)
                    {
                        pwp = pwgo;
                        break;
                    }
                }
            }

            if (pwp != null)
            {
                ProtectedString psNew;

                PwGenerator.Generate(out psNew, pwp, null, m_host.PwGeneratorPool);
                current_password_confirm_field.TextEx = current_password_field.TextEx = psNew;
            }
            else
            {
                Debug.Assert(false);
            }
        }
コード例 #2
0
 //***************************************************************************
 // Event Triggers
 //
 protected void OnMenuItemClicked(DynamicMenuEventArgs e)
 {
     if (this.MenuItemClicked != null)
     {
         this.MenuItemClicked.Invoke(this, e);
     }
 }
コード例 #3
0
        private void mURLDropDownMenu_MenuClick(object sender, DynamicMenuEventArgs e)
        {
            var filePath = GetFilePath(e.Tag);

            if (filePath != null && mLastContextMenuUrl != null)
            {
                WinUtil.OpenUrlWithApp(mLastContextMenuUrl, Entry, filePath);
            }
        }
コード例 #4
0
        void m_dynCustomStrings_MenuClick(object sender, DynamicMenuEventArgs e)
        {
            PwEntry pe = m_host.MainWindow.GetSelectedEntry(false);

            if (pe == null)
            {
                return;
            }

            if (ClipboardUtil.CopyAndMinimize(pe.Strings.ReadSafe((string)e.Tag), true, m_host.MainWindow, pe, m_host.Database))
            {
                m_host.MainWindow.StartClipboardCountdown();
            }
        }
コード例 #5
0
        public void OnShowQRCode(object sender, DynamicMenuEventArgs e)
        {
            var key = e.Tag as string;

            if (key == null)
            {
                return;
            }

            var pe = host.MainWindow.GetSelectedEntry(true);

            if (pe == null)
            {
                return;
            }

            var context = new SprContext(pe, host.Database, SprCompileFlags.All);
            var value   = SprEngine.Compile(pe.Strings.GetSafe(key).ReadString(), context);

            try
            {
                var data = new QRCodeGenerator().CreateQrCode(value, QRCodeGenerator.ECCLevel.L);
                if (data != null)
                {
                    var form = new ShowQRCodeForm(
                        host,
                        data.GetBitmap(10, Color.Black, Color.White),
                        SprEngine.Compile(pe.Strings.GetSafe(PwDefs.TitleField).ReadString(), context),
                        TryTranslateKey(key)
                        );
                    form.ShowDialog();
                }
            }
            catch
            {
                MessageBox.Show("The data can't be displayed as a QR Code.");
            }
        }
コード例 #6
0
        public void OnShowQRCode(object sender, DynamicMenuEventArgs e)
        {
            var key = e.Tag as string;

            if (key == null)
            {
                return;
            }

            var pe = host.MainWindow.GetSelectedEntry(true);

            if (pe == null)
            {
                return;
            }

            var context = new SprContext(pe, host.Database, SprCompileFlags.All);
            var value   = SprEngine.Compile(pe.Strings.GetSafe(key).ReadString(), context);

            if (key == "otp" && value.StartsWith("key="))
            {
                var title = SprEngine.Compile(pe.Strings.GetSafe("Title").ReadString(), context);
                var user  = SprEngine.Compile(pe.Strings.GetSafe("UserName").ReadString(), context);

                string label = null;
                if (title == string.Empty && user == string.Empty)
                {
                    label = "Unknown"; //edge case when entry has no title or user, nobody would use KeePass like this but just to be bulletproof
                }
                else if (title == string.Empty || user == string.Empty)
                {
                    label = title + user;
                }
                else
                {
                    label = title + " (" + user + ")"; //Not RFC 5234, but more readable in the auth app
                }

                label = Uri.EscapeDataString(label);
                value = string.Format("otpauth://totp/{0}?secret={1}", label, value.Replace("key=", ""));
            }

            try
            {
                var data = new QRCodeGenerator().CreateQrCode(value, QRCodeGenerator.ECCLevel.L);
                if (data != null)
                {
                    var form = new ShowQRCodeForm(
                        host,
                        data.GetBitmap(10, Color.Black, Color.White),
                        SprEngine.Compile(pe.Strings.GetSafe(PwDefs.TitleField).ReadString(), context),
                        TryTranslateKey(key)
                        );
                    form.ShowDialog();
                }
            }
            catch
            {
                MessageBox.Show("The data can't be displayed as a QR Code.");
            }
        }
コード例 #7
0
 //***************************************************************************
 // Event Handlers
 //
 protected void childCtrl_OnClick(object sender, DynamicMenuEventArgs e)
 {
     this.OnMenuItemClicked(e);
 }