performance improvement in EntryView class
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@47 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
@@ -25,9 +25,12 @@
|
||||
#include <QDropEvent>
|
||||
#include <QMouseEvent>
|
||||
#include <QHeaderView>
|
||||
#include <QTime>
|
||||
#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;i<db->Entries.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;i<db->Entries.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; i<Items.size();i++){
|
||||
setItemHidden(Items[i],(Items[i]->pEntry->GroupID != id));
|
||||
}
|
||||
}}
|
||||
}
|
||||
|
||||
void KeepassEntryView::showSearchResults(QList<Q_UINT32>& results){
|
||||
setCurrentGroup(0);
|
||||
updateItems(0);
|
||||
for(int j=0; j<results.size(); j++){
|
||||
for(int i=0; i<Items.size();i++){
|
||||
if(Items[i]->pEntry->sID == results[j])
|
||||
@@ -124,12 +121,12 @@ for(int j=0; j<results.size(); j++){
|
||||
}
|
||||
}
|
||||
|
||||
void KeepassEntryView::refreshVisibleItems(){
|
||||
void KeepassEntryView::refreshItems(){
|
||||
EntryViewItem *tmp=NULL;
|
||||
for(int i=0;i<Items.size();i++){
|
||||
tmp=Items[i];
|
||||
CEntry* entry=tmp->pEntry;
|
||||
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){
|
||||
|
||||
|
||||
@@ -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<Q_UINT32>& results);
|
||||
PwDatabase* db;
|
||||
@@ -42,6 +41,7 @@ private:
|
||||
int CurrentGroup;
|
||||
protected:
|
||||
virtual void contextMenuEvent(QContextMenuEvent *event);
|
||||
virtual void paintEvent ( QPaintEvent * event );
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user