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 | |
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...
-rw-r--r-- | filestreewidget.h | 2 | ||||
-rw-r--r-- | pictureswidget.cpp | 36 | ||||
-rw-r--r-- | pictureswidget.h | 6 | ||||
-rw-r--r-- | shemov.cpp | 12 | ||||
-rw-r--r-- | shemov.h | 1 |
5 files changed, 54 insertions, 3 deletions
diff --git a/filestreewidget.h b/filestreewidget.h index f6cd8e8..73f5d72 100644 --- a/filestreewidget.h +++ b/filestreewidget.h @@ -87,7 +87,7 @@ class FilesTreeView : public QTreeView { HoverWindow *mHoverWin; bool mHoverPics; bool mHoverMovies; - qint16 mCursorOffest; + qint16 mCursorOffest; }; class FilesTreeSortModel : public QSortFilterProxyModel { 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; diff --git a/pictureswidget.h b/pictureswidget.h index 9618e6e..4d8db73 100644 --- a/pictureswidget.h +++ b/pictureswidget.h @@ -28,6 +28,7 @@ class QEvent; class HoverWindow; class PictureViewer2; class QAction; +class QActionGroup; struct MappingData; class PicturesWidget : public QWidget { @@ -69,6 +70,7 @@ class PictureView : public QTreeView { QSortFilterProxyModel *proxy() { return mProxy; } void setPV(PictureViewer2 *pv) { mPV = pv; } PictureViewer2 *PV() { return mPV; } + void setHeaderGroup(QActionGroup *ag) { mHeaderGroup = ag; } public slots: void mappingChanged(int pMapId); @@ -77,6 +79,9 @@ class PictureView : public QTreeView { void setPVData(int replace = false); void setPVAll(); void setHoverWinVisible(bool visible) const; + void toggleHeader(QObject *action); + void readHeaderConfig(); + void writeHeaderConfig(); protected: virtual void hideEvent(QHideEvent *); @@ -101,6 +106,7 @@ class PictureView : public QTreeView { QList<int> mFilesMappings; PictureViewer2 *mPV; MappingTreeModel *mMappingTreeModel; + QActionGroup *mHeaderGroup; }; #endif // PICTURESWIDGET_H @@ -132,6 +132,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla readSettings(); mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason); mATree->filesWidget()->filesTree()->header()->resizeSections(QHeaderView::ResizeToContents); + mPicWidget->readSettings(); Helper::centerWidget(picViewer); } @@ -489,10 +490,15 @@ void SheMov::createActions(){ mShowTreeGroup->addAction(mShowAllFilesA); connect(mShowAllFilesA, SIGNAL(toggled(bool)), mATree, SLOT(showAllFiles(bool))); - //Tree view headers + //headers mFilesTreeHeadersGroup = new QActionGroup(this); QSignalMapper *fileTreeHeaderMapper = createHeaderMapper(filesModel, mFilesTreeHeadersGroup); connect(fileTreeHeaderMapper, SIGNAL(mapped(QObject*)), mATree->filesWidget()->filesTree(), SLOT(toggleHeader(QObject*))); + mPicsTreeHeaderGroup = new QActionGroup(this); + SmTreeModel *picFilesModel = static_cast<SmTreeModel*>(SmGlobals::instance()->model("PicFiles")); + QSignalMapper *picsTreeHeaderMapper = createHeaderMapper(picFilesModel, mPicsTreeHeaderGroup); + connect(picsTreeHeaderMapper, SIGNAL(mapped(QObject*)), mPicWidget->picView(), SLOT(toggleHeader(QObject*))); + mPicWidget->picView()->setHeaderGroup(mPicsTreeHeaderGroup); //Tree view hover mHoverTreeGroup = new QActionGroup(this); @@ -792,6 +798,10 @@ void SheMov::createMenus(){ mPicViewMenu->addAction(mPVAddA); mPicViewMenu->addAction(mPVReplaceA); mPicViewMenu->addSeparator(); + QMenu *headerMenu = new QMenu(tr("Show headers"), this); + headerMenu->addActions(mPicsTreeHeaderGroup->actions()); + mPicViewMenu->addMenu(headerMenu); + mPicViewMenu->addSeparator(); mPicViewMenu->addAction(mPVShuffleA); mPicViewMenu->addAction(mPWRefreshA); mViewPicMenuA = menuBar()->addMenu(mPicViewMenu); @@ -167,6 +167,7 @@ class SheMov : public QMainWindow { QActionGroup *mOpenWithGroupFS; QActionGroup *mOpenWithGroupAV; QActionGroup *mFilesTreeHeadersGroup; + QActionGroup *mPicsTreeHeaderGroup; QActionGroup *mEditGroup; //PictureWidget Actions |