⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.cpp

📁 KeePassX用于保护密码的安全
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	Import_KWalletXml import;	if(import.importFile(filename,db,err)==true){		//SUCCESS		setWindowTitle(tr("KeePassX [new]"));		GroupView->updateItems();		EntryView->updateItems(0);		setStateFileOpen(true);		setStateFileModified(true);	}	else{		//ERROR		delete db;		StatusBarGeneral->setText(tr("Loading Failed"));		if(err=="")err=tr("Unknown error in Import_KWalletXml::importFile()");		QMessageBox::critical(this,tr("Error")								,tr("The following error occured while opening the database:\n%1")								.arg(err),tr("OK"));	}	StatusBarGeneral->setText(tr("Ready"));	}}void KeepassMainWindow::OnCurrentGroupChanged(QTreeWidgetItem* cur,QTreeWidgetItem* prev){if(cur){ if(GroupView->isSearchResultGroup((GroupViewItem*)cur)){	EntryView->showSearchResults(SearchResults); } else EntryView->updateItems(((GroupViewItem*)cur)->pGroup->ID);}}void KeepassMainWindow::OnEntryItemDoubleClicked(QTreeWidgetItem* item,int column){int i=0;int c=-1;for(i;i<NUM_COLUMNS;i++){	if(config.Columns[i])c++;	if(c==column)break;}if(c==-1)return;CEntry* entry=static_cast<EntryViewItem*>(item)->pEntry;switch(i){	case 0:	editEntry(entry);			break;	case 1: OnEditUsernameToClipboard();			break;	case 2: OnEditOpenUrl();			break;	case 3:	OnEditPasswordToClipboard();			break;}}void KeepassMainWindow::OnEntrySelectionChanged(){updateDetailView();if(EntryView->selectedItems().size()==0)  setStateEntrySelected(NONE);if(EntryView->selectedItems().size()==1)  setStateEntrySelected(SINGLE);if(EntryView->selectedItems().size()>1)  setStateEntrySelected(MULTIPLE);}void KeepassMainWindow::OnGroupSelectionChanged(){Q_ASSERT(GroupView->selectedItems().size()<=1);while(EntryView->selectedItems().size()){	EntryView->setItemSelected(EntryView->selectedItems()[0],false);}if(GroupView->selectedItems().size()==0)  setStateGroupSelected(NONE);if(GroupView->selectedItems().size()==1){	if(GroupView->isSearchResultGroup((GroupViewItem*)GroupView->selectedItems()[0]))	 setStateGroupSelected(SEARCHGROUP);	else	 setStateGroupSelected(SINGLE);}}void KeepassMainWindow::OnEditNewGroup(){CGroup *pNew=NULL;if(GroupView->selectedItems().size()) pNew=db->addGroup(static_cast<GroupViewItem*>(GroupView->selectedItems()[0])->pGroup);else pNew=db->addGroup(NULL);CEditGroupDialog dlg(db,this,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<GroupViewItem*>(GroupView->selectedItems()[0])->pGroup;CEditGroupDialog dlg(db,this,true);dlg.GroupName=pGroup->Name;dlg.IconID=pGroup->ImageID;if(!dlg.exec())return;if((pGroup->Name != dlg.GroupName) || (pGroup->ImageID != dlg.IconID) || dlg.ModFlag){  setStateFileModified(true);  pGroup->Name = dlg.GroupName;  if(pGroup->ImageID<BUILTIN_ICONS && dlg.IconID>=BUILTIN_ICONS)	pGroup->OldImgID=pGroup->ImageID;  pGroup->ImageID = dlg.IconID;  GroupView->updateItems();}}void KeepassMainWindow::OnEditDeleteGroup(){Q_ASSERT(GroupView->selectedItems().size());CGroup *pGroup=static_cast<GroupViewItem*>(GroupView->selectedItems()[0])->pGroup;db->deleteGroup(pGroup);GroupView->updateItems();setStateFileModified(true);}void KeepassMainWindow::OnEditNewEntry(){CEntry NewEntry;NewEntry.GroupID=currentGroup()->ID;CEditEntryDlg dlg(db,&NewEntry,this,true);if(dlg.exec()){ db->addEntry(&NewEntry); EntryView->updateItems(currentGroup()->ID); setStateFileModified(true);}}void KeepassMainWindow::OnEditEditEntry(){Q_ASSERT(EntryView->selectedItems().size()==1);editEntry(static_cast<EntryViewItem*>(EntryView->selectedItems()[0])->pEntry);}void KeepassMainWindow::OnEditCloneEntry(){Q_ASSERT(EntryView->selectedItems().size()>0);QList<QTreeWidgetItem*> entries=EntryView->selectedItems();for(int i=0; i<entries.size();i++){	db->cloneEntry(((EntryViewItem*)entries[i])->pEntry);}setStateFileModified(true);EntryView->updateItems(currentGroup()->ID);}void KeepassMainWindow::OnEditDeleteEntry(){Q_ASSERT(EntryView->selectedItems().size()>0);QList<QTreeWidgetItem*> entries=EntryView->selectedItems();for(int i=0; i<entries.size();i++){	removeFromSearchResults(((EntryViewItem*)entries[i])->pEntry->sID);	db->deleteEntry(((EntryViewItem*)entries[i])->pEntry);}setStateFileModified(true);if(GroupView->isSearchResultGroup((GroupViewItem*)(GroupView->selectedItems()[0])))	EntryView->showSearchResults(SearchResults);else	EntryView->updateItems(currentGroup()->ID);}void KeepassMainWindow::removeFromSearchResults(int id){for(int i=0; i<SearchResults.size();i++){ if(SearchResults[i]==id){	SearchResults.removeAt(i);	return; }}}void KeepassMainWindow::OnEditUsernameToClipboard(){Clipboard->setText(currentEntry()->UserName,  QClipboard::Clipboard);ClipboardTimer.setSingleShot(true);ClipboardTimer.start(config.ClipboardTimeOut*1000);}void KeepassMainWindow::OnEditPasswordToClipboard(){currentEntry()->Password.unlock();Clipboard->setText(currentEntry()->Password.string(),QClipboard::Clipboard);ClipboardTimer.setSingleShot(true);ClipboardTimer.start(config.ClipboardTimeOut*1000);currentEntry()->Password.lock();}void KeepassMainWindow::OnClipboardTimeOut(){Clipboard->clear(QClipboard::Clipboard);}void KeepassMainWindow::OnEditSaveAttachment(){CEditEntryDlg::saveAttachment(currentEntry(),this);}void KeepassMainWindow::OnEditOpenUrl(){openBrowser(currentEntry()->URL);}void KeepassMainWindow::search(CGroup* group){CSearchDlg dlg(db,group,this,"SearchDialog",false);if(dlg.exec()){ SearchResults=dlg.Hits; GroupView->ShowSearchGroup=true; GroupView->updateItems(); GroupView->selectSearchGroup(); EntryView->showSearchResults(SearchResults);}else{}}void KeepassMainWindow::OnEditSearch(){search(NULL);}void KeepassMainWindow::OnEditGroupSearch(){search(currentGroup());}void KeepassMainWindow::OnQuickSearch(){// TODO: solution without a hidden CSearchDlg window-----	CSearchDlg dlg(db,NULL,this,"SearchDialog",false);	dlg.Edit_Search->setText(QuickSearchEdit->text());	dlg.OnButtonSearch();	SearchResults=dlg.Hits;//-------------------------------------------------------GroupView->ShowSearchGroup=true;GroupView->updateItems();GroupView->selectSearchGroup();EntryView->showSearchResults(SearchResults);}CGroup* KeepassMainWindow::currentGroup(){Q_ASSERT(GroupView->selectedItems().size());return ((GroupViewItem*)(GroupView->selectedItems()[0]))->pGroup;}CEntry* KeepassMainWindow::currentEntry(){Q_ASSERT(EntryView->selectedItems().size()==1);return static_cast<EntryViewItem*>(EntryView->selectedItems()[0])->pEntry;}void KeepassMainWindow::OnColumnVisibilityChanged(bool value){config.Columns[0]=ViewColumnsTitleAction->isChecked();config.Columns[1]=ViewColumnsUsernameAction->isChecked();config.Columns[2]=ViewColumnsUrlAction->isChecked();config.Columns[3]=ViewColumnsPasswordAction->isChecked();config.Columns[4]=ViewColumnsCommentAction->isChecked();config.Columns[5]=ViewColumnsExpireAction->isChecked();config.Columns[6]=ViewColumnsCreationAction->isChecked();config.Columns[7]=ViewColumnsLastChangeAction->isChecked();config.Columns[8]=ViewColumnsLastAccessAction->isChecked();config.Columns[9]=ViewColumnsAttachmentAction->isChecked();EntryView->updateColumns();if(FileOpen) EntryView->updateItems();}void KeepassMainWindow::OnUsernPasswVisibilityChanged(bool value){config.ListView_HidePasswords=ViewHidePasswordsAction->isChecked();config.ListView_HideUsernames=ViewHideUsernamesAction->isChecked();EntryView->refreshItems();}void KeepassMainWindow::OnFileModified(){setStateFileModified(true);}void KeepassMainWindow::closeEvent(QCloseEvent* e){config.MainWinHeight=geometry().height();config.MainWinWidth=geometry().width();config.MainWinSplit1=splitter->sizes()[0];config.MainWinSplit2=splitter->sizes()[1];config.ShowStatusbar=statusBar()->isVisible();if(FileOpen){ if(!closeDatabase()) 	e->ignore(); else	e->accept();}else e->accept();}void KeepassMainWindow::OnHideSearchGroup(){GroupView->ShowSearchGroup=false;GroupView->updateItems();EntryView->updateItems(0);SearchResults.clear();}void KeepassMainWindow::OnExtrasSettings(){CSettingsDlg dlg(this);dlg.exec();EntryView->setAlternatingRowColors(config.AlternatingRowColors);CGroup::UI_ExpandByDefault=config.ExpandGroupTree;}void KeepassMainWindow::OnHelpAbout(){CAboutDialog dlg(this);dlg.exec();}void KeepassMainWindow::OnHelpHandbook(){openBrowser(AppDir+"/../share/doc/keepass/index.html");}void KeepassMainWindow::OnViewShowToolbar(bool show){config.Toolbar=show;toolBar->setVisible(config.Toolbar);}void KeepassMainWindow::OnViewShowEntryDetails(bool show){config.EntryDetails=show;DetailView->setVisible(config.EntryDetails);}void KeepassMainWindow::OnItemExpanded(QTreeWidgetItem* item){((GroupViewItem*)item)->pGroup->UI_ItemIsExpanded=true;}void KeepassMainWindow::OnItemCollaped(QTreeWidgetItem* item){((GroupViewItem*)item)->pGroup->UI_ItemIsExpanded=false;}void KeepassMainWindow::OnEditAutoType(){Q_ASSERT(EntryView->selectedItems().size()==1);QString error;AutoType::perform(((EntryViewItem*)(EntryView->selectedItems()[0]))->pEntry,error);}void KeepassMainWindow::OnViewToolbarIconSize16(bool state){if(!state)return;ViewToolButtonSize22Action->setChecked(false);ViewToolButtonSize28Action->setChecked(false);config.ToolbarIconSize=16;toolBar->setIconSize(QSize(config.ToolbarIconSize,config.ToolbarIconSize));}void KeepassMainWindow::OnViewToolbarIconSize22(bool state){if(!state)return;ViewToolButtonSize16Action->setChecked(false);ViewToolButtonSize28Action->setChecked(false);config.ToolbarIconSize=22;toolBar->setIconSize(QSize(config.ToolbarIconSize,config.ToolbarIconSize));}void KeepassMainWindow::OnViewToolbarIconSize28(bool state){if(!state)return;ViewToolButtonSize16Action->setChecked(false);ViewToolButtonSize22Action->setChecked(false);config.ToolbarIconSize=28;toolBar->setIconSize(QSize(config.ToolbarIconSize,config.ToolbarIconSize));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -