summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filesystemwidget.cpp3
-rw-r--r--fileview.cpp39
-rw-r--r--fileview.h7
-rw-r--r--shemov.cpp8
-rw-r--r--shemov.h1
5 files changed, 56 insertions, 2 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 28822fd..64dfd1c 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -75,7 +75,6 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar
mFileView->setSelectionBehavior(QAbstractItemView::SelectRows);
mFileView->setAlternatingRowColors(true);
- mFileView->setColumnHidden(static_cast<int>(SmDirModel::FullPath), true);
mFileProxy->setDynamicSortFilter(true);
connect(mFileView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), mFileView, SLOT(selectedFilesChanged()));
connect(mFileModel, SIGNAL(modelAboutToBeReset()), mFileView, SLOT(saveSelection()));
@@ -340,6 +339,7 @@ void FilesystemWidget::readSettings(){
}
QPoint picViewerPos = s.value("windows/picviewer").toPoint();
mPicViewer->move(picViewerPos);
+ mFileView->readConfig();
}
void FilesystemWidget::writeSettings(){
@@ -352,6 +352,7 @@ void FilesystemWidget::writeSettings(){
s.setValue("paths/selecteddir", dir);
}
s.setValue("windows/picviewer", mPicViewer->pos());
+ mFileView->writeConfig();
}
void FilesystemWidget::configChanged(){
diff --git a/fileview.cpp b/fileview.cpp
index 7797d73..489338b 100644
--- a/fileview.cpp
+++ b/fileview.cpp
@@ -26,6 +26,7 @@
#include <QtWidgets/QInputDialog>
#include <QPalette>
#include <QTimer>
+#include <QHeaderView>
#include "fileview.h"
#include "hoverwindow.h"
@@ -41,7 +42,6 @@ FileView::FileView(QWidget *parent) : QTreeView(parent), mDeleteA(0) {
mHoverWin = new HoverWindow(this);
QSize curSize = SmGlobals::instance()->cursorSize();
mHoverWin->setHoverOffset(QPoint(curSize.width() + 30, 0));
- readConfig();
SmGlobals::instance()->treeWidgets().append(this);
}
@@ -109,6 +109,11 @@ void FileView::readConfig(){
mWhen = s.value("ui/grabframe", "00:00:00").toString();
mHoverWin->setWindowOpacity(s.value("ui/hoveropacity", 10).toFloat() / 10.0);
mCursorOffset = s.value("ui/cursoroffset").toInt();
+ readHeaderConfig();
+}
+
+void FileView::writeConfig(){
+ writeHeaderConfig();
}
void FileView::resizeColumns(int columns) {
@@ -259,6 +264,38 @@ 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 fac6f21..9bec73f 100644
--- a/fileview.h
+++ b/fileview.h
@@ -22,6 +22,7 @@ class QEvent;
class QFileInfo;
class FilesystemFileProxy;
class SmDirModel;
+class QActionGroup;
class FileView : public QTreeView {
Q_OBJECT
@@ -30,6 +31,7 @@ class FileView : public QTreeView {
~FileView() {}
virtual void setModel(QAbstractItemModel *model);
const QVariant duration() const;
+ void setHeaderGroup(QActionGroup *ag) { mHeaderGroup = ag; }
signals:
void upDir();
@@ -46,9 +48,13 @@ class FileView : public QTreeView {
void unmarkFiles();
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);
@@ -78,6 +84,7 @@ class FileView : public QTreeView {
FilesystemFileProxy *mProxy;
SmDirModel *mModel;
Helper::Duration mDuration;
+ QActionGroup *mHeaderGroup;
};
#endif
diff --git a/shemov.cpp b/shemov.cpp
index d65c1d1..9d44fc3 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -534,6 +534,10 @@ void SheMov::createActions(){
mFilesTreeHeadersGroup = new QActionGroup(this);
QSignalMapper *fileTreeHeaderMapper = createHeaderMapper(filesModel, mFilesTreeHeadersGroup);
connect(fileTreeHeaderMapper, SIGNAL(mapped(QObject*)), mATree->filesWidget()->filesTree(), SLOT(toggleHeader(QObject*)));
+ mFileSysHeaderGroup = new QActionGroup(this);
+ QSignalMapper *fileSysHeaderMapper = createHeaderMapper(qobject_cast<SmTreeModel*>(mFSWidget->fileModel()), mFileSysHeaderGroup);
+ connect(fileSysHeaderMapper, SIGNAL(mapped(QObject*)), mFSWidget->fileView(), SLOT(toggleHeader(QObject*)));
+ mFSWidget->fileView()->setHeaderGroup(mFileSysHeaderGroup);
mPicsTreeHeaderGroup = new QActionGroup(this);
SmTreeModel *picFilesModel = static_cast<SmTreeModel*>(SmGlobals::instance()->model("PicFiles"));
QSignalMapper *picsTreeHeaderMapper = createHeaderMapper(picFilesModel, mPicsTreeHeaderGroup);
@@ -843,6 +847,10 @@ void SheMov::createMenus(){
mFSHoverMenu->addActions(mFSHoverGroup->actions());
mFSViewMenu->addMenu(mFSHoverMenu);
mFSViewMenu->addSeparator();
+ QMenu *fsHeaderMenu = new QMenu(tr("Show headers"), this);
+ fsHeaderMenu->addActions(mFileSysHeaderGroup->actions());
+ mFSViewMenu->addMenu(fsHeaderMenu);
+ mFSViewMenu->addSeparator();
mFSViewMenu->addAction(mRefreshA);
mViewFSMenuA = menuBar()->addMenu(mFSViewMenu);
diff --git a/shemov.h b/shemov.h
index 3963e07..106d81f 100644
--- a/shemov.h
+++ b/shemov.h
@@ -167,6 +167,7 @@ class SheMov : public QMainWindow {
QActionGroup *mOpenWithGroupFS;
QActionGroup *mOpenWithGroupAV;
QActionGroup *mFilesTreeHeadersGroup;
+ QActionGroup *mFileSysHeaderGroup;
QActionGroup *mPicsTreeHeaderGroup;
QActionGroup *mEditGroup;