summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-10-20 07:46:11 +0200
committerArno <am@disconnect.de>2012-10-20 07:46:11 +0200
commita4054f1c7b38e5996081efd7583c06ebf7758e61 (patch)
tree09c7e95a300462a384fbb29a3e619bcf0e270086
parent1a4053284a8847edbabd5b2f7dd4ef4cd93fd5d7 (diff)
downloadSheMov-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.h2
-rw-r--r--pictureswidget.cpp36
-rw-r--r--pictureswidget.h6
-rw-r--r--shemov.cpp12
-rw-r--r--shemov.h1
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
diff --git a/shemov.cpp b/shemov.cpp
index 7a380d5..2703a56 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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);
diff --git a/shemov.h b/shemov.h
index 3063eae..d1a4ee2 100644
--- a/shemov.h
+++ b/shemov.h
@@ -167,6 +167,7 @@ class SheMov : public QMainWindow {
QActionGroup *mOpenWithGroupFS;
QActionGroup *mOpenWithGroupAV;
QActionGroup *mFilesTreeHeadersGroup;
+ QActionGroup *mPicsTreeHeaderGroup;
QActionGroup *mEditGroup;
//PictureWidget Actions