diff options
-rw-r--r-- | filesystemwidget.cpp | 3 | ||||
-rw-r--r-- | fileview.cpp | 39 | ||||
-rw-r--r-- | fileview.h | 7 | ||||
-rw-r--r-- | shemov.cpp | 8 | ||||
-rw-r--r-- | shemov.h | 1 |
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(); @@ -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 @@ -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); @@ -167,6 +167,7 @@ class SheMov : public QMainWindow { QActionGroup *mOpenWithGroupFS; QActionGroup *mOpenWithGroupAV; QActionGroup *mFilesTreeHeadersGroup; + QActionGroup *mFileSysHeaderGroup; QActionGroup *mPicsTreeHeaderGroup; QActionGroup *mEditGroup; |