# # # patch "src/util/Settings.cpp" # from [b0206fb1124dfec39270920497fecd6f464b0dda] # to [6d6651c1adb2d0df84c8ce4dce23fa25518f37b8] # # patch "src/view/TreeView.cpp" # from [62776e7dac7606ce91d80eca556ab1757560b19a] # to [3fed528b1ae9f72cfe90380641e9a9f96872f212] # # patch "src/view/TreeView.h" # from [93fd0b80ea6cb842d2f4cdbd1ed93ba888498f0c] # to [9ef98c2db2fb4207f0bb466a3816c5a27624f440] # ============================================================ --- src/util/Settings.cpp b0206fb1124dfec39270920497fecd6f464b0dda +++ src/util/Settings.cpp 6d6651c1adb2d0df84c8ce4dce23fa25518f37b8 @@ -46,7 +46,6 @@ void Settings::setStartupSize(QSize size { Settings *settings = singleton(); settings->setValue("StartupSize", size); - settings->sync(); } QStringList Settings::getPreviousWorkspaces() @@ -58,7 +57,6 @@ void Settings::setPreviousWorkspaces(QSt { Settings *settings = singleton(); settings->setValue("RecentWorkspaceList", list); - settings->sync(); } void Settings::addPreviousWorkspace(QString workspace) @@ -101,33 +99,42 @@ void Settings::setMtnExePath(QString pat { Settings *settings = singleton(); settings->setValue("MtnExePath", path); - settings->sync(); } // TODO: implement suppport for column moving here void Settings::saveHeaderViewState(QHeaderView *view, QString name) { - QStringList colWidths; + QStringList cols; for (int i=0, j=view->count(); isectionSize(i))); + // save col size and visual index separated by a single colon + cols.append(QString::number(view->sectionSize(i)). + append(":"). + append(QString::number(view->visualIndex(i))) + ); } Settings *settings = singleton(); - settings->setValue(name, colWidths.join(",")); - settings->sync(); + settings->setValue(name, cols.join(",")); } -// TODO: implement suppport for column moving here void Settings::restoreHeaderViewState(QHeaderView *view, QString name) { - QStringList colWidths = singleton()->value(name).toString().split(","); - int colCount = colWidths.size(); + QString colConfig(singleton()->value(name).toString()); + QStringList cols = colConfig.split(",", QString::SkipEmptyParts); + + int colCount = cols.size(); if (colCount == 0) return; + int curColCount = view->count(); for (int i=0; i < colCount && i < curColCount; i++) { - view->resizeSection(i, colWidths.at(i).toInt()); + QStringList parts = cols.at(i).split(":", QString::SkipEmptyParts); + + Q_ASSERT(parts.size() == 2); + + view->resizeSection(i, parts.at(0).toInt()); + view->moveSection(view->visualIndex(i), parts.at(1).toInt()); } } @@ -140,5 +147,4 @@ void Settings::setSplitterState(const QB { Settings *settings = singleton(); settings->setValue(name, byteArray); - settings->sync(); } ============================================================ --- src/view/TreeView.cpp 62776e7dac7606ce91d80eca556ab1757560b19a +++ src/view/TreeView.cpp 3fed528b1ae9f72cfe90380641e9a9f96872f212 @@ -40,23 +40,35 @@ void TreeView::init(QString objName) { setObjectName(objName); + header()->setResizeMode(QHeaderView::Interactive); + + stateLoaded = false; + connect( header(), SIGNAL(sectionResized(int, int, int)), - this, SLOT(saveHeaderViewState(int, int, int)) + this, SLOT(saveHeaderViewState()) ); - // FIXME: until otherwise supported, sections can't be moved - header()->setMovable(false); + connect( + header(), SIGNAL(sectionCountChanged(int, int)), + this, SLOT(saveHeaderViewState()) + ); + + connect( + header(), SIGNAL(sectionMoved(int, int, int)), + this, SLOT(saveHeaderViewState()) + ); } void TreeView::setModel(QAbstractItemModel * model) { QTreeView::setModel(model); - // load the correct column sizes - Settings::restoreHeaderViewState(header(), QString(objectName()).append("_header")); + Settings::restoreHeaderViewState(header(), QString(objectName()).append("_header")); + stateLoaded = true; } -void TreeView::saveHeaderViewState(int i1, int i2, int i3) +void TreeView::saveHeaderViewState() { + if (!stateLoaded) return; Settings::saveHeaderViewState(header(), QString(objectName()).append("_header")); } ============================================================ --- src/view/TreeView.h 93fd0b80ea6cb842d2f4cdbd1ed93ba888498f0c +++ src/view/TreeView.h 9ef98c2db2fb4207f0bb466a3816c5a27624f440 @@ -32,10 +32,11 @@ private slots: void setModel(QAbstractItemModel*); private slots: - void saveHeaderViewState(int, int, int); + void saveHeaderViewState(); private: void init(QString); + bool stateLoaded; }; #endif