From b2ae2d1d1729074afc0acc12d27e1802461b4006 Mon Sep 17 00:00:00 2001 From: tariq Date: Fri, 20 Jan 2006 18:30:48 +0000 Subject: [PATCH] add/edit/delete group (qt4-reimplementation) git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@11 b624d157-de02-0410-bad0-e51aec6abb33 --- src/dialogs/EditGroupDlg.cpp | 8 +++---- src/dialogs/EditGroupDlg.h | 1 - src/lib/GroupView.cpp | 2 ++ src/mainwindow.cpp | 44 ++++++++++++++++++++++++++++++++++++ src/mainwindow.h | 3 +++ 5 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/dialogs/EditGroupDlg.cpp b/src/dialogs/EditGroupDlg.cpp index c740176..4423883 100755 --- a/src/dialogs/EditGroupDlg.cpp +++ b/src/dialogs/EditGroupDlg.cpp @@ -32,6 +32,8 @@ CEditGroupDialog::CEditGroupDialog(QWidget* parent, const char* name, bool modal { setupUi(this); IconID=0; +connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) ); +connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) ); } CEditGroupDialog::~CEditGroupDialog() @@ -51,14 +53,12 @@ void CEditGroupDialog::OnOK() { GroupName=EditTitle->text(); IconID=ComboIconPicker->currentItem(); -OK=true; -close(); +done(1); } void CEditGroupDialog::OnCancel() { -OK=false; -close(); +done(0); } diff --git a/src/dialogs/EditGroupDlg.h b/src/dialogs/EditGroupDlg.h index 4489316..84bb4ee 100755 --- a/src/dialogs/EditGroupDlg.h +++ b/src/dialogs/EditGroupDlg.h @@ -45,7 +45,6 @@ protected slots: public: int IconID; QString GroupName; - bool OK; public slots: diff --git a/src/lib/GroupView.cpp b/src/lib/GroupView.cpp index 4de0753..9a6cf94 100644 --- a/src/lib/GroupView.cpp +++ b/src/lib/GroupView.cpp @@ -104,6 +104,8 @@ void KeepassGroupView::mouseMoveEvent(QMouseEvent *event){ } void KeepassGroupView::updateItems(){ +clear(); +Items.clear(); for(GroupItr i=db->Groups.begin();i!=db->Groups.end();i++){ if((*i).Level==0){ if(Items.size()) Items.push_back(new GroupViewItem(this,getLastSameLevelItem(0))); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2f78168..8c5ec22 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -78,6 +78,11 @@ void KeepassMainWindow::setupConnections(){ connect(FileExitAction, SIGNAL(triggered()), this, SLOT(OnFileExit())); connect(FileImpPwmAction, SIGNAL(triggered()), this, SLOT(OnImportFromPwm())); connect(FileImpKWalletXmlAction, SIGNAL(triggered()), this,SLOT(OnImportFromKWalletXml())); + + connect(EditNewGroupAction, SIGNAL(triggered()), this, SLOT(OnEditNewGroup())); + connect(EditEditGroupAction, SIGNAL(triggered()), this, SLOT(OnEditEditGroup())); + connect(EditDeleteGroupAction, SIGNAL(triggered()), this, SLOT(OnEditDeleteGroup())); + connect(GroupView,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this, SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*))); connect(EntryView,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, @@ -368,4 +373,43 @@ if(GroupView->selectedItems().size()==0) if(GroupView->selectedItems().size()==1) setStateGroupSelected(SINGLE); Q_ASSERT(GroupView->selectedItems().size()<=1); +} + +void KeepassMainWindow::OnEditNewGroup(){ +CGroup *pNew=NULL; +if(GroupView->selectedItems().size()) + pNew=db->addGroup(static_cast(GroupView->selectedItems()[0])->pGroup); +else + pNew=db->addGroup(NULL); +CEditGroupDialog dlg(this,"EditGroupDlg",true); +if(!dlg.exec()){ + db->deleteGroup(pNew); + return; +} +pNew->Name=dlg.GroupName; +pNew->ImageID=dlg.IconID; +setStateFileModified(true); +GroupView->updateItems(); +} + +void KeepassMainWindow::OnEditEditGroup(){ +Q_ASSERT(GroupView->selectedItems().size()); +CGroup *pGroup=static_cast(GroupView->selectedItems()[0])->pGroup; +CEditGroupDialog dlg(this,"EditGroupDlg",true); +dlg.GroupName=pGroup->Name; +dlg.IconID=pGroup->ImageID; +if(!dlg.exec())return; +if((pGroup->Name != dlg.GroupName) || (pGroup->ImageID != dlg.IconID)){ + setStateFileModified(true); + pGroup->Name = dlg.GroupName; + pGroup->ImageID = dlg.IconID; + GroupView->updateItems(); +} +} + +void KeepassMainWindow::OnEditDeleteGroup(){ +Q_ASSERT(GroupView->selectedItems().size()); +CGroup *pGroup=static_cast(GroupView->selectedItems()[0])->pGroup; +db->deleteGroup(pGroup); +GroupView->updateItems(); } \ No newline at end of file diff --git a/src/mainwindow.h b/src/mainwindow.h index 4d48243..2a4d4a8 100755 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -61,6 +61,9 @@ private slots: void OnFileExit(); void OnImportFromPwm(); void OnImportFromKWalletXml(); + void OnEditNewGroup(); + void OnEditEditGroup(); + void OnEditDeleteGroup(); void OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*); void OnEntryItemDoubleClicked(QTreeWidgetItem* item,int column); void OnEntrySelectionChanged();