summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archivetreeview.cpp10
-rw-r--r--filestreewidget.cpp34
-rw-r--r--filestreewidget.h12
-rw-r--r--fileview.cpp40
-rw-r--r--fileview.h9
-rw-r--r--pictureswidget.cpp33
-rw-r--r--pictureswidget.h9
-rw-r--r--seriestreewidget.cpp2
-rw-r--r--shemov.cpp28
-rw-r--r--shemov.pro6
-rw-r--r--smtreeview.cpp51
-rw-r--r--smtreeview.h32
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();
diff --git a/fileview.h b/fileview.h
index 9bec73f..2ddf3dd 100644
--- a/fileview.h
+++ b/fileview.h
@@ -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);
diff --git a/shemov.cpp b/shemov.cpp
index 9d44fc3..eed20df 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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));
diff --git a/shemov.pro b/shemov.pro
index d62cd41..3b81463 100644
--- a/shemov.pro
+++ b/shemov.pro
@@ -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