diff --git a/share/keepass/icons/nuvola/32x32/actions/identity.png b/share/keepass/icons/nuvola/32x32/actions/identity.png new file mode 100644 index 0000000..b38168a Binary files /dev/null and b/share/keepass/icons/nuvola/32x32/actions/identity.png differ diff --git a/share/keepass/icons/nuvola/32x32/actions/kgpg_info.png b/share/keepass/icons/nuvola/32x32/actions/kgpg_info.png deleted file mode 100644 index dc95992..0000000 Binary files a/share/keepass/icons/nuvola/32x32/actions/kgpg_info.png and /dev/null differ diff --git a/share/keepass/icons/nuvola/32x32/actions/klipper_dock.png b/share/keepass/icons/nuvola/32x32/actions/klipper_dock.png new file mode 100644 index 0000000..4759626 Binary files /dev/null and b/share/keepass/icons/nuvola/32x32/actions/klipper_dock.png differ diff --git a/src/main.cpp b/src/main.cpp index 2839db7..ad6644a 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,6 +51,10 @@ QIcon *Icon_FileSaveAs; QIcon *Icon_Exit; QIcon *Icon_File_Export; QIcon *Icon_EditDelete; +QIcon *Icon_EditAdd; +QIcon *Icon_EditEdit; +QIcon *Icon_EditUsernameToCb; +QIcon *Icon_EditPasswordToCb; QString DateTimeFormat("no-format-string"); @@ -256,7 +260,18 @@ Icon_Exit=new QIcon(tmpImg); //-------------------------- loadImg(ThemeDir+"/actions/editdelete.png",tmpImg); Icon_EditDelete=new QIcon(tmpImg); - +//-------------------------- +loadImg(ThemeDir+"/actions/edit_add.png",tmpImg); +Icon_EditAdd=new QIcon(tmpImg); +//-------------------------- +loadImg(ThemeDir+"/actions/edit.png",tmpImg); +Icon_EditEdit=new QIcon(tmpImg); +//-------------------------- +loadImg(ThemeDir+"/actions/identity.png",tmpImg); +Icon_EditUsernameToCb=new QIcon(tmpImg); +//-------------------------- +loadImg(ThemeDir+"/actions/klipper_dock.png",tmpImg); +Icon_EditPasswordToCb=new QIcon(tmpImg); } diff --git a/src/main.h b/src/main.h index da51362..e7c6172 100644 --- a/src/main.h +++ b/src/main.h @@ -51,6 +51,11 @@ extern QIcon *Icon_FileSaveAs; extern QIcon *Icon_Exit; extern QIcon *Icon_File_Export; extern QIcon *Icon_EditDelete; +extern QIcon *Icon_EditAdd; +extern QIcon *Icon_EditEdit; +extern QIcon *Icon_EditDelete; +extern QIcon *Icon_EditUsernameToCb; +extern QIcon *Icon_EditPasswordToCb; extern QString DateTimeFormat; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bf5a6fe..f179faf 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -65,6 +65,7 @@ KeepassMainWindow::KeepassMainWindow(QWidget *parent, Qt::WFlags flags):QMainWin setupToolbar(); setStateFileOpen(false); FileOpen=false; + Clipboard=QApplication::clipboard(); } void KeepassMainWindow::setupConnections(){ @@ -86,7 +87,10 @@ void KeepassMainWindow::setupConnections(){ connect(EditEditEntryAction, SIGNAL(triggered()), this, SLOT(OnEditEditEntry())); connect(EditCloneEntryAction, SIGNAL(triggered()), this, SLOT(OnEditCloneEntry())); connect(EditDeleteEntryAction, SIGNAL(triggered()), this, SLOT(OnEditDeleteEntry())); + connect(EditUsernameToClipboardAction, SIGNAL(triggered()), this, SLOT(OnEditUsernameToClipboard())); + connect(EditPasswordToClipboardAction, SIGNAL(triggered()), this, SLOT(OnEditPasswordToClipboard())); + connect(&ClipboardTimer, SIGNAL(timeout()), this, SLOT(OnClipboardTimeOut())); connect(GroupView,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this, SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*))); connect(EntryView,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, @@ -100,7 +104,12 @@ toolBar->addAction(FileNewAction); toolBar->addAction(FileOpenAction); toolBar->addAction(FileSaveAction); toolBar->addSeparator(); - +toolBar->addAction(EditNewEntryAction); +toolBar->addAction(EditEditEntryAction); +toolBar->addAction(EditDeleteEntryAction); +toolBar->addSeparator(); +toolBar->addAction(EditPasswordToClipboardAction); +toolBar->addAction(EditUsernameToClipboardAction); } void KeepassMainWindow::setupIcons(){ @@ -110,6 +119,11 @@ FileSaveAction->setIcon(*Icon_FileSave); FileSaveAsAction->setIcon(*Icon_FileSaveAs); FileCloseAction->setIcon(*Icon_FileClose); FileExitAction->setIcon(*Icon_Exit); +EditNewEntryAction->setIcon(*Icon_EditAdd); +EditEditEntryAction->setIcon(*Icon_EditEdit); +EditDeleteEntryAction->setIcon(*Icon_EditDelete); +EditPasswordToClipboardAction->setIcon(*Icon_EditPasswordToCb); +EditUsernameToClipboardAction->setIcon(*Icon_EditUsernameToCb); } @@ -456,7 +470,30 @@ setStateFileModified(true); EntryView->updateItems(); } +void KeepassMainWindow::OnEditUsernameToClipboard(){ +Clipboard->setText(currentEntry()->UserName, QClipboard::Clipboard); +ClipboardTimer.start(config.ClipboardTimeOut*1000,true); +} + +void KeepassMainWindow::OnEditPasswordToClipboard(){ +Clipboard->setText(currentEntry()->Password.getString(),QClipboard::Clipboard); +ClipboardTimer.start(config.ClipboardTimeOut*1000,true); +currentEntry()->Password.delRef(); + +} + +void KeepassMainWindow::OnClipboardTimeOut(){ +Clipboard->clear(QClipboard::Clipboard); +qDebug("Clipper cleared."); +} + + CGroup* KeepassMainWindow::currentGroup(){ Q_ASSERT(GroupView->selectedItems().size()); return static_cast(GroupView->selectedItems()[0])->pGroup; +} + +CEntry* KeepassMainWindow::currentEntry(){ +Q_ASSERT(EntryView->selectedItems().size()==1); +return static_cast(EntryView->selectedItems()[0])->pEntry; } \ No newline at end of file diff --git a/src/mainwindow.h b/src/mainwindow.h index f849d06..c3c9b95 100755 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -34,7 +34,8 @@ #include #include #include - +#include +#include #include "PwManager.h" #include "PwmConfig.h" @@ -68,16 +69,21 @@ private slots: void OnEditEditEntry(); void OnEditCloneEntry(); void OnEditDeleteEntry(); + void OnEditUsernameToClipboard(); + void OnEditPasswordToClipboard(); void OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*); void OnEntryItemDoubleClicked(QTreeWidgetItem* item,int column); void OnEntrySelectionChanged(); void OnGroupSelectionChanged(); + void OnClipboardTimeOut(); private: enum SelectionState{NONE,SINGLE,MULTIPLE}; SelectionState GroupSelection, EntrySelection; bool FileOpen; bool ModFlag; + QClipboard* Clipboard; + QTimer ClipboardTimer; inline void setupToolbar(); inline void setupIcons(); inline void setupConnections(); @@ -89,6 +95,7 @@ private: bool closeDatabase(); void editEntry(CEntry* pEntry); inline CGroup* currentGroup(); + inline CEntry* currentEntry();