Finish column order storage

git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@326 b624d157-de02-0410-bad0-e51aec6abb33
master
sniperbeamer 15 years ago
parent 21fe83bb82
commit 9c3ef9a709
  1. 24
      src/KpxConfig.h
  2. 133
      src/lib/EntryView.cpp

@ -49,8 +49,16 @@ public:
QColor bannerColor2(){return stringToColor(settings.value("Options/BannerColor2","0,117,175").toString());} QColor bannerColor2(){return stringToColor(settings.value("Options/BannerColor2","0,117,175").toString());}
QColor bannerTextColor(){return stringToColor(settings.value("Options/BannerTextColor","222,222,222").toString());} QColor bannerTextColor(){return stringToColor(settings.value("Options/BannerTextColor","222,222,222").toString());}
int clipboardTimeOut(){return settings.value("Options/ClipboardTimeOut",20).toInt();} int clipboardTimeOut(){return settings.value("Options/ClipboardTimeOut",20).toInt();}
QByteArray entryView(){return settings.value("UI/EntryView").toByteArray();} QBitArray columns(){return stringToBitArray(settings.value("UI/Columns","11111000000").toString(),11);}
QByteArray entryViewSearch(){return settings.value("UI/EntryViewSearch").toByteArray();} QList<int> columnOrder(){return stringToIntArray(settings.value("UI/ColumnOrder","100,100,100,100,100,100,100,100,100,100,100").toString(),11);}
QList<int> columnSizes(){return stringToIntArray(settings.value("UI/ColumnSizes","15,10,10,10,10,10,10,10,10,10,10").toString(),11);}
int columnSort(){return settings.value("UI/ColumnSort",0).toInt();}
Qt::SortOrder columnSortOrder(){return static_cast<Qt::SortOrder>(settings.value("UI/ColumnSortOrder",Qt::AscendingOrder).toInt());}
QBitArray searchColumns(){return stringToBitArray(settings.value("UI/SearchColumns","11111000000").toString(),11);}
QList<int> searchColumnOrder(){return stringToIntArray(settings.value("UI/SearchColumnOrder","100,100,100,100,100,100,100,100,100,100,100").toString(),11);}
QList<int> searchColumnSizes(){return stringToIntArray(settings.value("UI/SearchColumnSizes","15,10,10,10,10,10,10,10,10,10,10").toString(),11);}
int searchColumnSort(){return settings.value("UI/SearchColumnSort",0).toInt();}
Qt::SortOrder searchColumnSortOrder(){return static_cast<Qt::SortOrder>(settings.value("UI/SearchColumnSortOrder",Qt::AscendingOrder).toInt());}
QStringList fileDlgHistory(unsigned index){return settings.value(QString("FileDlgHistory/ENTRY%1").arg(index)).toStringList();} QStringList fileDlgHistory(unsigned index){return settings.value(QString("FileDlgHistory/ENTRY%1").arg(index)).toStringList();}
GrpTreeState groupTreeState(){return stringToGrpTreeState(settings.value("Options/GroupTreeState").toString());} GrpTreeState groupTreeState(){return stringToGrpTreeState(settings.value("Options/GroupTreeState").toString());}
bool hidePasswords(){return settings.value("UI/HidePasswords",true).toBool();} bool hidePasswords(){return settings.value("UI/HidePasswords",true).toBool();}
@ -112,8 +120,16 @@ public:
void setBannerColor2(const QColor& value){settings.setValue("Options/BannerColor2",colorToString(value));} void setBannerColor2(const QColor& value){settings.setValue("Options/BannerColor2",colorToString(value));}
void setBannerTextColor(const QColor& value){settings.setValue("Options/BannerTextColor",colorToString(value));} void setBannerTextColor(const QColor& value){settings.setValue("Options/BannerTextColor",colorToString(value));}
void setClipboardTimeOut(int value){settings.setValue("Options/ClipboardTimeOut",value);} void setClipboardTimeOut(int value){settings.setValue("Options/ClipboardTimeOut",value);}
void setEntryView(const QByteArray& value){settings.setValue("UI/EntryView",value);} void setColumns(const QBitArray& value){settings.setValue("UI/Columns",bitArrayToString(value));}
void setEntryViewSearch(const QByteArray& value){settings.setValue("UI/EntryViewSearch",value);} void setColumnOrder(const QList<int>& value){settings.setValue("UI/ColumnOrder",intArrayToString(value));}
void setColumnSizes(const QList<int>& value){settings.setValue("UI/ColumnSizes",intArrayToString(value));}
void setColumnSort(int value){settings.setValue("UI/ColumnSort",value);}
void setColumnSortOrder(int value){settings.setValue("UI/ColumnSortOrder",value);}
void setSearchColumns(const QBitArray& value){settings.setValue("UI/SearchColumns",bitArrayToString(value));}
void setSearchColumnOrder(const QList<int>& value){settings.setValue("UI/SearchColumnOrder",intArrayToString(value));}
void setSearchColumnSizes(const QList<int>& value){settings.setValue("UI/SearchColumnSizes",intArrayToString(value));}
void setSearchColumnSort(int value){settings.setValue("UI/SearchColumnSort",value);}
void setSearchColumnSortOrder(int value){settings.setValue("UI/SearchColumnSortOrder",value);}
void setFileDlgHistory(unsigned index,const QStringList& value){settings.setValue(QString("FileDlgHistory/ENTRY%1").arg(index), value);} void setFileDlgHistory(unsigned index,const QStringList& value){settings.setValue(QString("FileDlgHistory/ENTRY%1").arg(index), value);}
void setGroupTreeState(GrpTreeState value){settings.setValue("Options/GroupTreeState",grpTreeStateToString(value));} void setGroupTreeState(GrpTreeState value){settings.setValue("Options/GroupTreeState",grpTreeStateToString(value));}
void setHidePasswords(bool value){settings.setValue("UI/HidePasswords",value);} void setHidePasswords(bool value){settings.setValue("UI/HidePasswords",value);}

@ -21,10 +21,13 @@
#include <QHeaderView> #include <QHeaderView>
#include <QClipboard> #include <QClipboard>
#include <QProcess> #include <QProcess>
#include <algorithm>
#include "lib/AutoType.h" #include "lib/AutoType.h"
#include "lib/EntryView.h" #include "lib/EntryView.h"
#include "dialogs/EditEntryDlg.h" #include "dialogs/EditEntryDlg.h"
#define NUM_COLUMNS 11
// just for the lessThan funtion // just for the lessThan funtion
/*QList<EntryViewItem*>* pItems; /*QList<EntryViewItem*>* pItems;
KeepassEntryView* pEntryView;*/ KeepassEntryView* pEntryView;*/
@ -34,7 +37,8 @@ KeepassEntryView::KeepassEntryView(QWidget* parent):QTreeWidget(parent){
header()->setResizeMode(QHeaderView::Interactive); header()->setResizeMode(QHeaderView::Interactive);
header()->setStretchLastSection(false); header()->setStretchLastSection(false);
header()->setClickable(true); header()->setClickable(true);
//header()->setCascadingSectionResizes(true); header()->setCascadingSectionResizes(true);
header()->setStretchLastSection(true);
retranslateColumns(); retranslateColumns();
restoreHeaderView(); restoreHeaderView();
@ -68,84 +72,69 @@ void KeepassEntryView::setColumnVisible(int col, bool visible) {
} }
void KeepassEntryView::saveHeaderView() { void KeepassEntryView::saveHeaderView() {
if (ViewMode == Normal) QBitArray columns(NUM_COLUMNS);
config->setEntryView( header()->saveState() ); QList<int> columnOrder;
else QList<int> columnsSizes;
config->setEntryViewSearch( header()->saveState() ); int columnSort = header()->sortIndicatorSection();
Qt::SortOrder columnSortOrder = header()->sortIndicatorOrder();
for (int i=0; i<NUM_COLUMNS; ++i) {
columns.setBit(i, columnVisible(i));
columnOrder << header()->visualIndex(i);
columnsSizes << header()->sectionSize(i);
}
if (ViewMode == Normal) {
config->setColumns(columns);
config->setColumnOrder(columnOrder);
config->setColumnSizes(columnsSizes);
config->setColumnSort(columnSort);
config->setColumnSortOrder(columnSortOrder);
}
else {
config->setSearchColumns(columns);
config->setSearchColumnOrder(columnOrder);
config->setSearchColumnSizes(columnsSizes);
config->setSearchColumnSort(columnSort);
config->setSearchColumnSortOrder(columnSortOrder);
}
} }
void KeepassEntryView::restoreHeaderView() { void KeepassEntryView::restoreHeaderView() {
QBitArray columns;
QList<int> columnOrder;
QList<int> columnSizes;
int columnSort;
Qt::SortOrder columnSortOrder;
if (ViewMode == Normal) { if (ViewMode == Normal) {
QByteArray state = config->entryView(); columns = config->columns();
if (state.isEmpty()) { columnOrder = config->columnOrder();
for (int i=10; i>=0; --i) { columnSizes = config->columnSizes();
if (i <= 3) { columnSort = config->columnSort();
setColumnVisible(i, true); columnSortOrder = config->columnSortOrder();
header()->moveSection(header()->visualIndex(i), 0); columns[10] = 0; // just to be sure
}
else {
setColumnVisible(i, false);
}
}
header()->setSortIndicator(0, Qt::AscendingOrder);
header()->setSortIndicatorShown(true);
header()->resizeSection(0, (int) (header()->sectionSize(0) * 1.5));
}
else {
header()->restoreState(state);
setColumnVisible(10, false); // just to be sure
QApplication::processEvents();
//QHash<int, int> sectionSize;
QList<int> visibleSections;
for (int i=0; i<=10; ++i) {
if (columnVisible(i)) {
qDebug("%d",i);
visibleSections.append(i);
header()->hideSection(i);
}
}
QApplication::processEvents();
for (int i=0; i<visibleSections.size(); ++i) {
qDebug("%d",visibleSections[i]);
header()->showSection(visibleSections[i]);
}
/*for (int i=0; i<=10; ++i) {
if (columnVisible(i)) {
int size = header()->sectionSize(i);
header()->resizeSection(i, 1);
header()->resizeSection(i, size);
}
}*/
}
} }
else { else {
QByteArray state = config->entryViewSearch(); columns = config->searchColumns();
if (state.isEmpty()) { columnOrder = config->searchColumnOrder();
for (int i=10; i>=0; --i) { columnSizes = config->searchColumnSizes();
if (i <= 3 || i == 10) { columnSort = config->searchColumnSort();
setColumnVisible(i, true); columnSortOrder = config->searchColumnSortOrder();
header()->moveSection(header()->visualIndex(i), 0); }
}
else { QMap<int,int> order; // key=visual index; value=logical index
setColumnVisible(i, false); for (int i=0; i<NUM_COLUMNS; ++i) {
} order.insert(columnOrder[i], i);
} }
header()->moveSection(header()->visualIndex(10), 0);
header()->setSortIndicator(10, Qt::AscendingOrder); for (QMap<int,int>::const_iterator i = order.constBegin(); i != order.constEnd(); ++i) {
header()->setSortIndicatorShown(true); setColumnVisible(i.value(), columns.testBit(i.value()));
} header()->moveSection(header()->visualIndex(i.value()), NUM_COLUMNS-1);
else { header()->resizeSection(i.value(), std::max(columnSizes[i.value()], header()->minimumSectionSize()));
header()->restoreState(state);
}
} }
header()->setSortIndicator(columnSort, columnSortOrder);
} }
void KeepassEntryView::OnGroupChanged(IGroupHandle* group){ void KeepassEntryView::OnGroupChanged(IGroupHandle* group){