diff options
author | Arno <am@disconnect.de> | 2012-10-20 07:46:11 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-10-20 07:46:11 +0200 |
commit | a4054f1c7b38e5996081efd7583c06ebf7758e61 (patch) | |
tree | 09c7e95a300462a384fbb29a3e619bcf0e270086 /pictureswidget.cpp | |
parent | 1a4053284a8847edbabd5b2f7dd4ef4cd93fd5d7 (diff) | |
download | SheMov-a4054f1c7b38e5996081efd7583c06ebf7758e61.tar.gz SheMov-a4054f1c7b38e5996081efd7583c06ebf7758e61.tar.bz2 SheMov-a4054f1c7b38e5996081efd7583c06ebf7758e61.zip |
Make headers in PictureView configurable
Save state of QHeaderView and restore it on startup. Maybe it's time for
a SmTreeView Class implementing these generic functions...
Diffstat (limited to 'pictureswidget.cpp')
-rw-r--r-- | pictureswidget.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/pictureswidget.cpp b/pictureswidget.cpp index 7de52b5..99091c9 100644 --- a/pictureswidget.cpp +++ b/pictureswidget.cpp @@ -19,6 +19,8 @@ #include <QMenu> #include <QFile> #include <QSettings> +#include <QActionGroup> +#include <QHash> #include "pictureswidget.h" #include "picfilesmodel.h" @@ -53,7 +55,6 @@ PicturesWidget::PicturesWidget(QWidget *parent) : QWidget(parent), mWindowTitleB QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(splitter); setLayout(mainLayout); - readSettings(); } void PicturesWidget::showPicViewer(bool toggled){ @@ -64,12 +65,14 @@ void PicturesWidget::writeSettings(){ QSettings s; MappingData selected = mMappingTree->selectedItem(); s.setValue("ui/selectedmapping", selected.path.first()); + mPictureView->writeHeaderConfig(); } void PicturesWidget::readSettings(){ QSettings s; QStringList selPath = s.value("ui/selectedmapping").toStringList(); mMappingTree->selectPath(selPath.join("/")); + mPictureView->readHeaderConfig(); } void PicturesWidget::editMappings(){ @@ -197,6 +200,37 @@ void PictureView::setHoverWinVisible(bool visible) const { mHoverWin->setVisible(visible); } +void PictureView::toggleHeader(QObject *action){ + QAction *a = qobject_cast<QAction*>(action); + Q_ASSERT(a); + int logicalIndex = a->data().toInt(); + QHeaderView *hv = header(); + hv->setSectionHidden(logicalIndex, !a->isChecked()); +} + +void PictureView::readHeaderConfig(){ + QSettings s; + QByteArray headerPos = s.value("ui/picheaderpos").toByteArray(); + if(!headerPos.isEmpty()){ + header()->restoreState(headerPos); + } + QHeaderView *hv = header(); + QHash<int, QAction*> headerActions; + foreach(QAction *a, mHeaderGroup->actions()){ + headerActions.insert(a->data().toInt(), a); + } + for(int i = 0; i < hv->count(); ++i){ + if(!hv->isSectionHidden(i)){ + headerActions.value(i)->setChecked(true); + } + } +} + +void PictureView::writeHeaderConfig(){ + QSettings s; + s.setValue("ui/picheaderpos", header()->saveState()); +} + void PictureView::hideEvent(QHideEvent *){ QByteArray pvHeader = header()->saveState(); QSettings s; |