From ad179bc4eb6845b605c9e4d10171735b90e9cc11 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 20 Oct 2012 05:48:38 +0200 Subject: Make header menu generation generic Preparation for making PicturesWidget's tree headers configurable. --- shemov.cpp | 31 ++++++++++++++++++------------- shemov.h | 2 ++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/shemov.cpp b/shemov.cpp index e282de9..7a380d5 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -310,6 +310,21 @@ QAction *SheMov::createSeparator(){ return tmp; } +QSignalMapper *SheMov::createHeaderMapper(SmTreeModel *model, QActionGroup *group){ + QHash headerData = model->headerData(); + QSignalMapper *retval = new QSignalMapper(this); + group->setExclusive(false); + for(QHash::const_iterator it = headerData.constBegin(); it != headerData.constEnd(); ++it){ + QAction *a = new QAction(it.key(), this); + a->setCheckable(true); + a->setData(it.value()); + group->addAction(a); + retval->setMapping(a, a); + connect(a, SIGNAL(triggered()), retval, SLOT(map())); + } + return retval; +} + void SheMov::createStatusbar(){ QLabel *selSizeL = new QLabel(tr("Sel. Size")); mSelectedSize = new QLabel(tr("nothing selected yet")); @@ -475,19 +490,9 @@ void SheMov::createActions(){ connect(mShowAllFilesA, SIGNAL(toggled(bool)), mATree, SLOT(showAllFiles(bool))); //Tree view headers - QHash headerData = filesModel->headerData(); - QSignalMapper *headerMapper = new QSignalMapper(this); - mFilesTreeHeadersGroup = new QActionGroup(this); - mFilesTreeHeadersGroup->setExclusive(false); - for(QHash::const_iterator it = headerData.constBegin(); it != headerData.constEnd(); ++it){ - QAction *a = new QAction(it.key(), this); - a->setCheckable(true); - a->setData(it.value()); - mFilesTreeHeadersGroup->addAction(a); - headerMapper->setMapping(a, a); - connect(a, SIGNAL(triggered()), headerMapper, SLOT(map())); - } - connect(headerMapper, SIGNAL(mapped(QObject*)), mATree->filesWidget()->filesTree(), SLOT(toggleHeader(QObject*))); + mFilesTreeHeadersGroup = new QActionGroup(this); + QSignalMapper *fileTreeHeaderMapper = createHeaderMapper(filesModel, mFilesTreeHeadersGroup); + connect(fileTreeHeaderMapper, SIGNAL(mapped(QObject*)), mATree->filesWidget()->filesTree(), SLOT(toggleHeader(QObject*))); //Tree view hover mHoverTreeGroup = new QActionGroup(this); diff --git a/shemov.h b/shemov.h index dab1c84..3063eae 100644 --- a/shemov.h +++ b/shemov.h @@ -25,6 +25,7 @@ class NewMovieWizard; class DbAnalyzerDialog; class MappingTreeWidget; class PicturesWidget; +class SmTreeModel; class SheMov : public QMainWindow { Q_OBJECT @@ -63,6 +64,7 @@ class SheMov : public QMainWindow { private: QAction *createSeparator(); + QSignalMapper* createHeaderMapper(SmTreeModel *model, QActionGroup *group); void createStatusbar(); void createActions(); void createMenus(); -- cgit v1.2.3-70-g09d2