diff options
-rw-r--r-- | archivetreeview.cpp | 10 | ||||
-rw-r--r-- | filestreewidget.cpp | 34 | ||||
-rw-r--r-- | filestreewidget.h | 12 | ||||
-rw-r--r-- | fileview.cpp | 40 | ||||
-rw-r--r-- | fileview.h | 9 | ||||
-rw-r--r-- | pictureswidget.cpp | 33 | ||||
-rw-r--r-- | pictureswidget.h | 9 | ||||
-rw-r--r-- | seriestreewidget.cpp | 2 | ||||
-rw-r--r-- | shemov.cpp | 28 | ||||
-rw-r--r-- | shemov.pro | 6 | ||||
-rw-r--r-- | smtreeview.cpp | 51 | ||||
-rw-r--r-- | smtreeview.h | 32 |
12 files changed, 118 insertions, 148 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp index 79d3af0..fbda038 100644 --- a/archivetreeview.cpp +++ b/archivetreeview.cpp @@ -98,7 +98,6 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent), mShowAllFil setLayout(mainLayout); constructWindowTitle(); - readSettings(); } void ArchiveTreeView::setFileViewMode(int mode){ @@ -221,9 +220,10 @@ void ArchiveTreeView::copyPath(int type){ } void ArchiveTreeView::readSettings(){ - seriesWidget()->seriesTree()->readSettings(); - filesWidget()->filesTree()->readSettings(); - mFilesModel->readSettings(); + seriesWidget()->readSettings(); + seriesWidget()->seriesTree()->readSettings(); + filesWidget()->filesTree()->readSettings(); + mFilesModel->readSettings(); QSettings s; QString iconName = s.value("ui/foldericon", "Dildo").toString(); const QHash<QString, QString> icons = SmGlobals::instance()->icons(); @@ -233,7 +233,7 @@ void ArchiveTreeView::readSettings(){ MappingTableItemModel *actorsModel = mActorsWidget->model(); actorsModel->setDecorationIcon(decorationIcon); MappingTableItemModel *genreModel = mGenresWidget->model(); - genreModel->setDecorationIcon(decorationIcon); + genreModel->setDecorationIcon(decorationIcon); } void ArchiveTreeView::currentChanged(const QItemSelection &selected, const QItemSelection &deselected){ diff --git a/filestreewidget.cpp b/filestreewidget.cpp index 3f03636..eec2fc3 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -358,47 +358,23 @@ void FilesTreeWidget::playItems(const QStringList &paths){ QProcess::startDetached(prog, args); } -FilesTreeView::FilesTreeView(QWidget *parent) : QTreeView(parent), mHoverPics(false){ +FilesTreeView::FilesTreeView(QWidget *parent) : SmTreeView("ui/headerpos", parent), mHoverPics(false){ setAttribute(Qt::WA_Hover); mHoverWin = new HoverWindow(this); SmGlobals::instance()->treeWidgets().append(this); } -void FilesTreeView::setModel(QAbstractItemModel *model){ - QTreeView::setModel(model); - for(int i = 0; i < header()->count(); ++i){ - header()->setSectionHidden(i, true); - } - readHeaderConfig(); -} - void FilesTreeView::readSettings(){ - QSettings s; + QSettings s; mHoverPics = s.value("ui/hoverpics", true).toBool(); mHoverWin->setWindowOpacity(s.value("ui/hoveropacity", 10).toFloat() / 10.0); mHoverMovies = s.value("ui/hovermovies", true).toBool(); mCursorOffest = s.value("ui/cursoroffset").toInt(); + readHeaderConfig(); } -void FilesTreeView::readHeaderConfig(){ - QSettings s; - QByteArray headerPos = s.value("ui/headerpos").toByteArray(); - if(!headerPos.isEmpty()){ - header()->restoreState(headerPos); - } -} - -void FilesTreeView::writeHeaderConfig(){ - QSettings s; - s.setValue("ui/headerpos", header()->saveState()); -} - -void FilesTreeView::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 FilesTreeView::writeSettings(){ + writeHeaderConfig(); } void FilesTreeView::contextMenuEvent(QContextMenuEvent *event){ diff --git a/filestreewidget.h b/filestreewidget.h index 5068b91..6369300 100644 --- a/filestreewidget.h +++ b/filestreewidget.h @@ -9,11 +9,12 @@ #define FILESTREEWIDGET_H #include <QtWidgets/QWidget> -#include <QtWidgets/QTreeView> #include <QtWidgets/QDialog> #include <QPersistentModelIndex> #include <QSortFilterProxyModel> +#include "smtreeview.h" + typedef QList<QPersistentModelIndex> PersistenModelIndexList; class FilesTreeView; @@ -64,17 +65,14 @@ class FilesTreeWidget : public QWidget { qint64 mSelectedSize; }; -class FilesTreeView : public QTreeView { +class FilesTreeView : public SmTreeView { Q_OBJECT public: explicit FilesTreeView(QWidget *parent = 0); - virtual void setModel(QAbstractItemModel *model); public slots: - void readSettings(); - void readHeaderConfig(); - void writeHeaderConfig(); - void toggleHeader(QObject *action); + void readSettings(); + void writeSettings(); protected: virtual void contextMenuEvent(QContextMenuEvent *event); diff --git a/fileview.cpp b/fileview.cpp index 489338b..c30a1e5 100644 --- a/fileview.cpp +++ b/fileview.cpp @@ -35,7 +35,7 @@ #include "smdirmodel.h" #include "framecache.h" -FileView::FileView(QWidget *parent) : QTreeView(parent), mDeleteA(0) { +FileView::FileView(QWidget *parent) : SmTreeView("ui/fsheaderpos", parent), mDeleteA(0) { setAttribute(Qt::WA_Hover); setRootIsDecorated(false); setEditTriggers(QAbstractItemView::NoEditTriggers); @@ -116,12 +116,6 @@ void FileView::writeConfig(){ writeHeaderConfig(); } -void FileView::resizeColumns(int columns) { - for(int i = 0; i < columns; ++i){ - resizeColumnToContents(i); - } -} - void FileView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint){ QTreeView::closeEditor(editor, hint); QSortFilterProxyModel *proxy = qobject_cast<QSortFilterProxyModel*>(model()); @@ -264,38 +258,6 @@ void FileView::restoreSelection(){ } } -void FileView::readHeaderConfig(){ - QSettings s; - QByteArray headerPos = s.value("ui/fsheaderpos").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 FileView::writeHeaderConfig(){ - QSettings s; - s.setValue("ui/fsheaderpos", header()->saveState()); -} - - -void FileView::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()); -} - bool FileView::exitHover(bool exitVal){ mHoverWin->setVisible(false); mCurHover = QModelIndex(); @@ -10,6 +10,7 @@ #include <QtWidgets/QTreeView> +#include "smtreeview.h" #include "helper.h" class QContextMenuEvent; @@ -24,14 +25,13 @@ class FilesystemFileProxy; class SmDirModel; class QActionGroup; -class FileView : public QTreeView { +class FileView : public SmTreeView { Q_OBJECT public: FileView(QWidget *parent = 0); ~FileView() {} virtual void setModel(QAbstractItemModel *model); const QVariant duration() const; - void setHeaderGroup(QActionGroup *ag) { mHeaderGroup = ag; } signals: void upDir(); @@ -49,12 +49,8 @@ class FileView : public QTreeView { void createFolder(); void readConfig(); void writeConfig(); - void resizeColumns(int columns); void saveSelection(); void restoreSelection(); - void readHeaderConfig(); - void writeHeaderConfig(); - void toggleHeader(QObject *action); protected slots: virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); @@ -84,7 +80,6 @@ class FileView : public QTreeView { FilesystemFileProxy *mProxy; SmDirModel *mModel; Helper::Duration mDuration; - QActionGroup *mHeaderGroup; }; #endif diff --git a/pictureswidget.cpp b/pictureswidget.cpp index fd9812e..7951df5 100644 --- a/pictureswidget.cpp +++ b/pictureswidget.cpp @@ -127,7 +127,7 @@ void PicturesWidget::showInPicViewer(const QModelIndex &idx){ } } -PictureView::PictureView(QWidget *parent) : QTreeView(parent) { +PictureView::PictureView(QWidget *parent) : SmTreeView("ui/picheaderpos", parent) { //setup models mModel = static_cast<PicFilesModel*>(SmGlobals::instance()->model("PicFiles")); mProxy = new QSortFilterProxyModel(this); @@ -205,37 +205,6 @@ 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 850d7ae..91bcfa7 100644 --- a/pictureswidget.h +++ b/pictureswidget.h @@ -9,11 +9,11 @@ #define PICTURESWIDGET_H #include <QtWidgets/QWidget> -#include <QtWidgets/QTreeView> #include <QSqlDatabase> #include "smtreemodel.h" #include "pictureviewer2.h" +#include "smtreeview.h" class PictureView; class MappingTreeWidget; @@ -62,7 +62,7 @@ class PicturesWidget : public QWidget { QAction *mPicViewerA; }; -class PictureView : public QTreeView { +class PictureView : public SmTreeView { Q_OBJECT public: explicit PictureView(QWidget *parent = 0); @@ -71,7 +71,6 @@ 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); @@ -80,9 +79,6 @@ 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 *); @@ -107,7 +103,6 @@ class PictureView : public QTreeView { QList<int> mFilesMappings; PictureViewer2 *mPV; MappingTreeModel *mMappingTreeModel; - QActionGroup *mHeaderGroup; }; #endif // PICTURESWIDGET_H diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index b790be5..b977c08 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -74,7 +74,7 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ for(int i = 1; i < SeriesTreeModel::NumFields; ++i){ mView->setColumnHidden(i, true); } - mView->resizeColumnToContents(0); + mView->resizeColumnToContents(0); mView->setSelectionMode(QAbstractItemView::ExtendedSelection); mView->setEditTriggers(QAbstractItemView::NoEditTriggers); mView->setExpandsOnDoubleClick(false); @@ -146,12 +146,10 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla setCentralWidget(centralWidget); show(); splash.finish(this); - mATree->seriesWidget()->readSettings(); - mATree->filesWidget()->filesTree()->readSettings(); + mATree->readSettings(); mFSWidget->readSettings(); - readSettings(); + readSettings(); mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason); - mATree->filesWidget()->filesTree()->header()->resizeSections(QHeaderView::ResizeToContents); mPicWidget->readSettings(); Helper::centerWidget(picViewer); } @@ -159,14 +157,14 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla void SheMov::closeEvent(QCloseEvent *event){ mFSWidget->writeSettings(); mFSWidget->pictureViewer()->close(); - mATree->seriesWidget()->writeSettings(); + mATree->seriesWidget()->writeSettings(); + mATree->filesWidget()->filesTree()->writeSettings(); mPicWidget->picViewer2()->writeSettings(); mPicWidget->writeSettings(); - FilesTreeModel *filesModel = static_cast<FilesTreeModel*>(SmGlobals::instance()->model("FilesModel")); - filesModel->writeCache(); - writeSettings(); - delete SmGlobals::instance(); - event->accept(); + FilesTreeModel *filesModel = static_cast<FilesTreeModel*>(SmGlobals::instance()->model("FilesModel")); + filesModel->writeCache(); + writeSettings(); + event->accept(); } void SheMov::updateSelectedCount(int count){ @@ -534,6 +532,7 @@ void SheMov::createActions(){ mFilesTreeHeadersGroup = new QActionGroup(this); QSignalMapper *fileTreeHeaderMapper = createHeaderMapper(filesModel, mFilesTreeHeadersGroup); connect(fileTreeHeaderMapper, SIGNAL(mapped(QObject*)), mATree->filesWidget()->filesTree(), SLOT(toggleHeader(QObject*))); + mATree->filesWidget()->filesTree()->setHeaderGroup(mFilesTreeHeadersGroup); mFileSysHeaderGroup = new QActionGroup(this); QSignalMapper *fileSysHeaderMapper = createHeaderMapper(qobject_cast<SmTreeModel*>(mFSWidget->fileModel()), mFileSysHeaderGroup); connect(fileSysHeaderMapper, SIGNAL(mapped(QObject*)), mFSWidget->fileView(), SLOT(toggleHeader(QObject*))); @@ -1084,15 +1083,6 @@ void SheMov::readSettings(){ mMountDvdA->setChecked(false); } } - QList<QVariant> visibleHeadersDefault = QList<QVariant>() << 0 << 1 << 2 << 3 << 4 << 13; - QList<QVariant> visibleHeaders = s.value("ui/visibleheaders", visibleHeadersDefault).toList(); - foreach(QVariant h, visibleHeaders){ - foreach(QAction *a, mFilesTreeHeadersGroup->actions()){ - if(a->data() == h){ - a->trigger(); - } - } - } int seriesFilterMode = s.value("archive/filtermode").toInt(); QAction *filterAction = qobject_cast<QAction*>(mFilterMapper->mapping(seriesFilterMode)); @@ -42,7 +42,8 @@ SOURCES = main.cpp \ picfilesmodel.cpp \ smdirwatcher.cpp \ smdirmodel.cpp \ - framecache.cpp + framecache.cpp \ + smtreeview.cpp HEADERS = \ filesystemdirproxy.h \ filesystemwidget.h \ @@ -80,6 +81,7 @@ HEADERS = \ picfilesmodel.h \ smdirwatcher.h \ smdirmodel.h \ - framecache.h + framecache.h \ + smtreeview.h LIBS += -lmagic -lXfixes -lX11 RESOURCES = shemov.qrc diff --git a/smtreeview.cpp b/smtreeview.cpp new file mode 100644 index 0000000..411857a --- /dev/null +++ b/smtreeview.cpp @@ -0,0 +1,51 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#include <QSettings> +#include <QHeaderView> +#include <QAction> +#include <QActionGroup> + +#include "smtreeview.h" + +SmTreeView::SmTreeView(const QString &hSetting, QWidget *parent) : QTreeView(parent), mHeaderSetting(hSetting){ + header()->setSectionResizeMode(QHeaderView::ResizeToContents); +} + +#include <QDebug> + +void SmTreeView::readHeaderConfig(){ + QSettings s; + QByteArray headerPos = s.value(mHeaderSetting).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)){ + qDebug() << mHeaderSetting << headerActions.value(i) << "checked" << headerActions.value(i)->isCheckable(); + headerActions.value(i)->setChecked(true); + } + } +} + +void SmTreeView::writeHeaderConfig(){ + QSettings s; + s.setValue(mHeaderSetting, header()->saveState()); +} + +void SmTreeView::toggleHeader(QObject *action){ + QAction *a = qobject_cast<QAction*>(action); + int logicalIndex = a->data().toInt(); + QHeaderView *hv = header(); + hv->setSectionHidden(logicalIndex, !a->isChecked()); + qDebug() << mHeaderSetting << a->text() << "toggled" << a->isChecked(); +} diff --git a/smtreeview.h b/smtreeview.h new file mode 100644 index 0000000..eff41d5 --- /dev/null +++ b/smtreeview.h @@ -0,0 +1,32 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#ifndef SMTREEVIEW_H +#define SMTREEVIEW_H + +#include <QTreeView> + +class QActionGroup; + +class SmTreeView : public QTreeView { + Q_OBJECT + public: + SmTreeView(QWidget *parent = 0) : QTreeView(parent) {} + SmTreeView(const QString &hSetting, QWidget *parent = 0); + virtual void setHeaderGroup(QActionGroup *ag) { mHeaderGroup = ag; } + + public slots: + void readHeaderConfig(); + void writeHeaderConfig(); + void toggleHeader(QObject *action); + + private: + const QString mHeaderSetting; + QActionGroup *mHeaderGroup; +}; + +#endif // SMTREEVIEW_H |