diff --git a/src/lib/EntryView.cpp b/src/lib/EntryView.cpp index 2dd91e0..fbeedd1 100644 --- a/src/lib/EntryView.cpp +++ b/src/lib/EntryView.cpp @@ -25,9 +25,12 @@ #include #include #include +#include #include "main.h" #include "EntryView.h" + + KeepassEntryView::KeepassEntryView(QWidget* parent):QTreeWidget(parent){ CurrentGroup=0; updateColumns(); @@ -65,13 +68,15 @@ ContextMenu->popup(e->globalPos()); -void KeepassEntryView::updateItems(){ +void KeepassEntryView::updateItems(unsigned int GroupID){ clear(); Items.clear(); if(!db)return; +if(!GroupID)return; EntryViewItem *tmp=NULL; for(int i=0;iEntries.size();i++){ CEntry* entry=&db->Entries[i]; + if(entry->GroupID==GroupID){ Items.push_back(tmp=new EntryViewItem(this)); Items.back()->pEntry=entry; int j=0; @@ -103,19 +108,11 @@ for(int i=0;iEntries.size();i++){ if(config.Columns[9]){ tmp->setText(j++,entry->BinaryDesc);} Items.back()->setIcon(0,EntryIcons[entry->ImageID]); -} -setCurrentGroup(CurrentGroup); -} - -void KeepassEntryView::setCurrentGroup(uint id){ -CurrentGroup=id; -for(int i=0; ipEntry->GroupID != id)); -} +}} } void KeepassEntryView::showSearchResults(QList& results){ -setCurrentGroup(0); +updateItems(0); for(int j=0; jpEntry->sID == results[j]) @@ -124,12 +121,12 @@ for(int j=0; jpEntry; -if(entry->GroupID==CurrentGroup){ + int j=0; if(config.Columns[0]){ tmp->setText(j++,entry->Title);} @@ -162,8 +159,6 @@ if(entry->GroupID==CurrentGroup){ } } -} - void KeepassEntryView::updateColumns(){ setColumnCount(0); @@ -191,7 +186,9 @@ if(config.Columns[9]){ setHeaderLabels(cols); } - +void KeepassEntryView::paintEvent(QPaintEvent * event){ +QTreeWidget::paintEvent(event); +} EntryViewItem::EntryViewItem(QTreeWidget *parent):QTreeWidgetItem(parent){ diff --git a/src/lib/EntryView.h b/src/lib/EntryView.h index 4d7e6db..80d93c0 100644 --- a/src/lib/EntryView.h +++ b/src/lib/EntryView.h @@ -30,9 +30,8 @@ class EntryViewItem; class KeepassEntryView:public QTreeWidget{ public: KeepassEntryView(QWidget* parent=0); - void updateItems(); - void refreshVisibleItems(); - void setCurrentGroup(uint GroupID); + void updateItems(unsigned int group); + void refreshItems(); void updateColumns(); void showSearchResults(QList& results); PwDatabase* db; @@ -42,6 +41,7 @@ private: int CurrentGroup; protected: virtual void contextMenuEvent(QContextMenuEvent *event); + virtual void paintEvent ( QPaintEvent * event ); }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7f68992..f3bb4a4 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -242,8 +242,7 @@ if(db->loadDatabase(filename,err)==true){ //SUCCESS setCaption(tr("Keepass - %1").arg(filename)); GroupView->updateItems(); -EntryView->updateItems(); -EntryView->setCurrentGroup(0); +EntryView->updateItems(0); setStateFileOpen(true); setStateFileModified(false); } @@ -292,8 +291,7 @@ setCaption(tr("Keepass - %1").arg(tr("[neu]"))); GroupView->db=db; EntryView->db=db; GroupView->updateItems(); -EntryView->updateItems(); -EntryView->setCurrentGroup(0); +EntryView->updateItems(0); setStateFileOpen(true); setStateFileModified(true); FileOpen=true; @@ -349,7 +347,7 @@ else{ void KeepassMainWindow::editEntry(CEntry* pEntry){ CEditEntryDlg dlg(db,pEntry,this,"EditEntryDialog",true); dlg.exec(); -EntryView->refreshVisibleItems(); +EntryView->refreshItems(); if(dlg.ModFlag)setStateFileModified(true); } @@ -541,7 +539,7 @@ if(cur){ if(GroupView->isSearchResultGroup((GroupViewItem*)cur)){ EntryView->showSearchResults(SearchResults); } - else EntryView->setCurrentGroup(((GroupViewItem*)cur)->pGroup->ID); + else EntryView->updateItems(((GroupViewItem*)cur)->pGroup->ID); } } @@ -623,7 +621,7 @@ NewEntry.GroupID=currentGroup()->ID; CEditEntryDlg dlg(db,&NewEntry,this,"EditEntryDialog",true); if(dlg.exec()){ db->addEntry(&NewEntry); - EntryView->updateItems(); + EntryView->updateItems(currentGroup()->ID); setStateFileModified(true); } } @@ -640,7 +638,7 @@ for(int i=0; icloneEntry(((EntryViewItem*)entries[i])->pEntry); } setStateFileModified(true); -EntryView->updateItems(); +EntryView->updateItems(currentGroup()->ID); } void KeepassMainWindow::OnEditDeleteEntry(){ @@ -651,7 +649,7 @@ for(int i=0; ideleteEntry(((EntryViewItem*)entries[i])->pEntry); } setStateFileModified(true); -EntryView->updateItems(); +EntryView->updateItems(currentGroup()->ID); } void KeepassMainWindow::removeFromSearchResults(int id){ @@ -747,13 +745,13 @@ config.Columns[7]=ViewColumnsLastChangeAction->isChecked(); config.Columns[8]=ViewColumnsLastAccessAction->isChecked(); config.Columns[9]=ViewColumnsAttachmentAction->isChecked(); EntryView->updateColumns(); -if(FileOpen) EntryView->updateItems(); +if(FileOpen) EntryView->refreshItems(); } void KeepassMainWindow::OnUsernPasswVisibilityChanged(bool value){ config.ListView_HidePasswords=ViewHidePasswordsAction->isChecked(); config.ListView_HideUsernames=ViewHideUsernamesAction->isChecked(); -EntryView->updateItems(); +EntryView->refreshItems(); } void KeepassMainWindow::OnFileModified(){