menu item (de)activation for selection modes of group/entry view
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@10 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
		
							parent
							
								
									28e824ac0c
								
							
						
					
					
						commit
						8642ccfe94
					
				| 
						 | 
				
			
			@ -158,7 +158,7 @@
 | 
			
		|||
    <addaction name="separator" />
 | 
			
		||||
    <addaction name="EditPasswordToClipboardAction" />
 | 
			
		||||
    <addaction name="EditUsernameToClipboardAction" />
 | 
			
		||||
    <addaction name="ActionOpenUrl" />
 | 
			
		||||
    <addaction name="OpenUrlAction" />
 | 
			
		||||
    <addaction name="EditSaveAttachmentAction" />
 | 
			
		||||
    <addaction name="separator" />
 | 
			
		||||
    <addaction name="EditNewEntryAction" />
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +284,7 @@
 | 
			
		|||
    <string>Benutzername in Zwischenablage kopieren</string>
 | 
			
		||||
   </property>
 | 
			
		||||
  </action>
 | 
			
		||||
  <action name="ActionOpenUrl" >
 | 
			
		||||
  <action name="OpenUrlAction" >
 | 
			
		||||
   <property name="text" >
 | 
			
		||||
    <string>URL öffnen</string>
 | 
			
		||||
   </property>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,6 +82,8 @@ void KeepassMainWindow::setupConnections(){
 | 
			
		|||
	   SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
 | 
			
		||||
   connect(EntryView,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,
 | 
			
		||||
	   SLOT(OnEntryItemDoubleClicked(QTreeWidgetItem*,int)));
 | 
			
		||||
   connect(EntryView,SIGNAL(itemSelectionChanged()), this, SLOT(OnEntrySelectionChanged()));
 | 
			
		||||
   connect(GroupView,SIGNAL(itemSelectionChanged()), this, SLOT(OnGroupSelectionChanged()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KeepassMainWindow::setupToolbar(){
 | 
			
		||||
| 
						 | 
				
			
			@ -200,8 +202,28 @@ FileSaveAsAction->setEnabled(IsOpen);
 | 
			
		|||
FileCloseAction->setEnabled(IsOpen);
 | 
			
		||||
FileSettingsAction->setEnabled(IsOpen);
 | 
			
		||||
FileChangeKeyAction->setEnabled(IsOpen);
 | 
			
		||||
EditSearchAction->setEnabled(IsOpen);
 | 
			
		||||
GroupView->setEnabled(IsOpen);
 | 
			
		||||
EntryView->setEnabled(IsOpen);
 | 
			
		||||
if(!IsOpen){
 | 
			
		||||
    EditNewGroupAction->setEnabled(false);
 | 
			
		||||
    EditEditGroupAction->setEnabled(false);
 | 
			
		||||
    EditDeleteGroupAction->setEnabled(false);
 | 
			
		||||
    EditPasswordToClipboardAction->setEnabled(false);
 | 
			
		||||
    EditUsernameToClipboardAction->setEnabled(false);
 | 
			
		||||
    OpenUrlAction->setEnabled(false);
 | 
			
		||||
    EditSaveAttachmentAction->setEnabled(false);
 | 
			
		||||
    EditNewEntryAction->setEnabled(false);
 | 
			
		||||
    EditEditEntryAction->setEnabled(false);
 | 
			
		||||
    EditCloneEntryAction->setEnabled(false);
 | 
			
		||||
    EditDeleteEntryAction->setEnabled(false);
 | 
			
		||||
    EditGroupSearchAction->setEnabled(false);
 | 
			
		||||
}
 | 
			
		||||
else{
 | 
			
		||||
    OnGroupSelectionChanged();
 | 
			
		||||
    OnEntrySelectionChanged();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KeepassMainWindow::editEntry(CEntry* pEntry){
 | 
			
		||||
| 
						 | 
				
			
			@ -216,6 +238,66 @@ ModFlag=mod;
 | 
			
		|||
FileSaveAction->setEnabled(mod);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KeepassMainWindow::setStateGroupSelected(SelectionState s){
 | 
			
		||||
GroupSelection=s;
 | 
			
		||||
switch(GroupSelection){
 | 
			
		||||
 case NONE:
 | 
			
		||||
    EditNewGroupAction->setEnabled(true);
 | 
			
		||||
    EditEditGroupAction->setEnabled(false);
 | 
			
		||||
    EditDeleteGroupAction->setEnabled(false);
 | 
			
		||||
    EditGroupSearchAction->setEnabled(false);
 | 
			
		||||
    EditNewEntryAction->setEnabled(false);
 | 
			
		||||
    break;
 | 
			
		||||
 case SINGLE:
 | 
			
		||||
    EditNewGroupAction->setEnabled(true);
 | 
			
		||||
    EditEditGroupAction->setEnabled(true);
 | 
			
		||||
    EditDeleteGroupAction->setEnabled(true);
 | 
			
		||||
    EditGroupSearchAction->setEnabled(true);
 | 
			
		||||
    EditNewEntryAction->setEnabled(true);
 | 
			
		||||
    break;
 | 
			
		||||
default: Q_ASSERT(false);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KeepassMainWindow::setStateEntrySelected(SelectionState s){
 | 
			
		||||
EntrySelection=NONE;
 | 
			
		||||
switch(EntrySelection){
 | 
			
		||||
 case NONE:
 | 
			
		||||
    EditPasswordToClipboardAction->setEnabled(false);
 | 
			
		||||
    EditUsernameToClipboardAction->setEnabled(false);
 | 
			
		||||
    OpenUrlAction->setEnabled(false);
 | 
			
		||||
    EditSaveAttachmentAction->setEnabled(false);
 | 
			
		||||
    EditEditEntryAction->setEnabled(false);
 | 
			
		||||
    EditCloneEntryAction->setEnabled(false);
 | 
			
		||||
    EditCloneEntryAction->setText(trUtf8("Eintrag duplizieren"));
 | 
			
		||||
    EditDeleteEntryAction->setEnabled(false);
 | 
			
		||||
    EditDeleteEntryAction->setText(trUtf8("Eintrag löschen"));
 | 
			
		||||
    break;
 | 
			
		||||
 case SINGLE:
 | 
			
		||||
    EditPasswordToClipboardAction->setEnabled(true);
 | 
			
		||||
    EditUsernameToClipboardAction->setEnabled(true);
 | 
			
		||||
    OpenUrlAction->setEnabled(true);
 | 
			
		||||
    EditSaveAttachmentAction->setEnabled(true);
 | 
			
		||||
    EditEditEntryAction->setEnabled(true);
 | 
			
		||||
    EditCloneEntryAction->setEnabled(true);
 | 
			
		||||
    EditCloneEntryAction->setText(trUtf8("Eintrag duplizieren"));
 | 
			
		||||
    EditDeleteEntryAction->setEnabled(true);
 | 
			
		||||
    EditDeleteEntryAction->setText(trUtf8("Eintrag löschen"));
 | 
			
		||||
    break;
 | 
			
		||||
 case MULTIPLE:
 | 
			
		||||
    EditPasswordToClipboardAction->setEnabled(false);
 | 
			
		||||
    EditUsernameToClipboardAction->setEnabled(false);
 | 
			
		||||
    OpenUrlAction->setEnabled(false);
 | 
			
		||||
    EditSaveAttachmentAction->setEnabled(false);
 | 
			
		||||
    EditEditEntryAction->setEnabled(false);
 | 
			
		||||
    EditCloneEntryAction->setEnabled(true);
 | 
			
		||||
    EditCloneEntryAction->setText(trUtf8("Einträge duplizieren"));
 | 
			
		||||
    EditDeleteEntryAction->setEnabled(true);
 | 
			
		||||
    EditDeleteEntryAction->setText(trUtf8("Einträge löschen"));
 | 
			
		||||
    break;
 | 
			
		||||
 default: Q_ASSERT(false);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool KeepassMainWindow::OnFileSave(){
 | 
			
		||||
if(db->filename==QString())
 | 
			
		||||
| 
						 | 
				
			
			@ -268,4 +350,22 @@ void KeepassMainWindow::OnEntryItemDoubleClicked(QTreeWidgetItem* item,int colum
 | 
			
		|||
if(column) return;
 | 
			
		||||
if(!config.Columns[0]) return;
 | 
			
		||||
editEntry(static_cast<EntryViewItem*>(item)->pEntry);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KeepassMainWindow::OnEntrySelectionChanged(){
 | 
			
		||||
if(EntryView->selectedItems().size()==0)
 | 
			
		||||
  setStateEntrySelected(NONE);
 | 
			
		||||
if(EntryView->selectedItems().size()==1)
 | 
			
		||||
  setStateEntrySelected(SINGLE);
 | 
			
		||||
if(EntryView->selectedItems().size()>1)
 | 
			
		||||
  setStateEntrySelected(MULTIPLE);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void KeepassMainWindow::OnGroupSelectionChanged(){
 | 
			
		||||
if(GroupView->selectedItems().size()==0)
 | 
			
		||||
  setStateGroupSelected(NONE);
 | 
			
		||||
if(GroupView->selectedItems().size()==1)
 | 
			
		||||
  setStateGroupSelected(SINGLE);
 | 
			
		||||
Q_ASSERT(GroupView->selectedItems().size()<=1);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +42,7 @@
 | 
			
		|||
 | 
			
		||||
#include "ui_MainWindow.h"
 | 
			
		||||
 | 
			
		||||
#define NO_ENTRY_SELECTED
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
 | 
			
		||||
Q_OBJECT
 | 
			
		||||
| 
						 | 
				
			
			@ -63,9 +63,12 @@ private slots:
 | 
			
		|||
   void OnImportFromKWalletXml();
 | 
			
		||||
   void OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*);
 | 
			
		||||
   void OnEntryItemDoubleClicked(QTreeWidgetItem* item,int column);
 | 
			
		||||
 | 
			
		||||
   void OnEntrySelectionChanged();
 | 
			
		||||
   void OnGroupSelectionChanged();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 enum SelectionState{NONE,SINGLE,MULTIPLE};
 | 
			
		||||
 SelectionState GroupSelection, EntrySelection;
 | 
			
		||||
 bool FileOpen;
 | 
			
		||||
 bool ModFlag;
 | 
			
		||||
 inline void setupToolbar();
 | 
			
		||||
| 
						 | 
				
			
			@ -73,6 +76,8 @@ private:
 | 
			
		|||
 inline void setupConnections();
 | 
			
		||||
 void setStateFileOpen(bool);
 | 
			
		||||
 void setStateFileModified(bool);
 | 
			
		||||
 void setStateGroupSelected(SelectionState s);
 | 
			
		||||
 void setStateEntrySelected(SelectionState s);
 | 
			
		||||
 void openDatabase(QString filename);
 | 
			
		||||
 bool closeDatabase();
 | 
			
		||||
 void editEntry(CEntry* pEntry);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue