summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-07-21 13:41:47 +0200
committerArno <arno@disconnect.de>2018-07-21 13:41:47 +0200
commit9cbbbc0a69d13c65f14678c3187b796a374236ce (patch)
treec0fd358103c70703ecea1c6f6aefcc5f135ee7ef
parent8b219f9d250470bb36e1ce1e91a409c13a375a95 (diff)
downloadSheMov-9cbbbc0a69d13c65f14678c3187b796a374236ce.tar.gz
SheMov-9cbbbc0a69d13c65f14678c3187b796a374236ce.tar.bz2
SheMov-9cbbbc0a69d13c65f14678c3187b796a374236ce.zip
Remove menu bar from archive browser
Well, quite some code churn. Localize QActions and remove them from SheMov. Put them in a tool bar and the context menu, the usual.
-rw-r--r--archivebrowser.cpp94
-rw-r--r--archivebrowser.h4
-rw-r--r--shemov.cpp89
-rw-r--r--shemov.h29
4 files changed, 76 insertions, 140 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp
index 1fbbeab..27418fd 100644
--- a/archivebrowser.cpp
+++ b/archivebrowser.cpp
@@ -19,6 +19,8 @@
#include <QToolBar>
#include <QSplitter>
#include <QProgressDialog>
+#include <QHeaderView>
+#include <QMenu>
#include "archivebrowser.h"
#include "archivebrowsermodel.h"
@@ -38,32 +40,83 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize
mTree->setModel(mProxy);
mTree->setColumnHidden(ArchiveBrowserModel::GenericId, true);
mTree->setColumnHidden(ArchiveBrowserModel::NodeType, true);
-
mTree->setItemDelegateForColumn(ArchiveBrowserModel::TotalSize, new SizeDelegate(this));
mTree->setItemDelegateForColumn(ArchiveBrowserModel::FileType, new FileTypeDelegate(this));
mTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
- mToolBar = new QToolBar;
-
- //filters + toolbar
- QHBoxLayout *filterLayout = new QHBoxLayout;
- filterLayout->setAlignment(Qt::AlignLeft);
- mQualityFilter = new QComboBox;
- QLabel *filterL = new QLabel(tr("Filters:"));
+ QToolBar *toolBar = new QToolBar;
+ QWidget *spacer1 = new QWidget;
+ toolBar->addWidget(spacer1);
+ spacer1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
QLabel *qualityL = new QLabel(tr("Quality"));
- filterLayout->addWidget(filterL);
- filterLayout->addWidget(qualityL);
+ toolBar->addWidget(qualityL);
+ mQualityFilter = new QComboBox;
+ toolBar->addWidget(mQualityFilter);
setupQualityFilter();
connect(mQualityFilter, QOverload<const QString &>::of(&QComboBox::currentIndexChanged), mProxy, &ArchiveBrowserModelProxy::setQualityFilter);
- filterLayout->addWidget(mQualityFilter);
- mSizeFilter = new QCheckBox(tr("Size Filter"));
+ toolBar->addSeparator();
+ mSizeFilter = new QCheckBox(tr("Filter by size"));
connect(mSizeFilter, &QCheckBox::stateChanged, mProxy, &ArchiveBrowserModelProxy::setSizeFilter);
- filterLayout->addWidget(mSizeFilter);
- QWidget *filterWidget = new QWidget;
- filterWidget->setLayout(filterLayout);
- mTbSplitter = new QSplitter;
- mTbSplitter->addWidget(filterWidget);
- mTbSplitter->addWidget(mToolBar);
+ toolBar->addWidget(mSizeFilter);
+ toolBar->addSeparator();
+ QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this);
+ connect(refreshA, &QAction::triggered, this, &ArchiveBrowser::refresh);
+ toolBar->addAction(refreshA);
+ mTree->addAction(refreshA);
+ toolBar->addSeparator();
+ mTree->addAction(Helper::createSeparator(this));
+ QAction *playSelectedA = new QAction(QIcon(":/dildo.png"), tr("Play selected..."), this);
+ connect(playSelectedA, &QAction::triggered, this, &ArchiveBrowser::playSelected);
+ toolBar->addAction(playSelectedA);
+ mTree->addAction(playSelectedA);
+ QAction *moveToUSBA = new QAction(QIcon(":/clean_tampon.png"), tr("Move to USB..."), this);
+ connect(moveToUSBA, &QAction::triggered, this, &ArchiveBrowser::moveToUSB);
+ toolBar->addAction(moveToUSBA);
+ mTree->addAction(moveToUSBA);
+ QAction *moveToBurnA = new QAction(QIcon(":/shackles.png"), tr("Move to burn..."), this);
+ connect(moveToBurnA, &QAction::triggered, this, &ArchiveBrowser::moveToBurn);
+ toolBar->addAction(moveToBurnA);
+ mTree->addAction(moveToBurnA);
+ toolBar->addSeparator();
+ mTree->addAction(Helper::createSeparator(this));
+ QIcon downArrowIcon = Helper::icon(QColor(255,85,255), Qt::white, QChar(0x2b07), true, true);
+ QAction *expandAllA = new QAction(downArrowIcon, tr("Expand all"), this);
+ connect(expandAllA, &QAction::triggered, archiveTree(), &SmTreeView::expandAll);
+ toolBar->addAction(expandAllA);
+ mTree->addAction(expandAllA);
+ QIcon upArrowIcon = Helper::icon(QColor(255,85,255), Qt::white, QChar(0x2b06), true, true);
+ QAction *collapseAllA = new QAction(upArrowIcon, tr("Collapse all"), this);
+ connect(collapseAllA, &QAction::triggered, archiveTree(), &SmTreeView::collapseAll);
+ toolBar->addAction(collapseAllA);
+ mTree->addAction(collapseAllA);
+ toolBar->addSeparator();
+ mTree->readHeaderConfig();
+ QHash<QString, int> hData = mModel->headerData();
+ QStringList hDataSorted = hData.keys();
+ std::sort(hDataSorted.begin(), hDataSorted.end());
+ QActionGroup *hDataAG = new QActionGroup(this);
+ hDataAG->setExclusive(false);
+ for(const QString &h : hDataSorted){
+ QAction *a = new QAction(h, this);
+ a->setCheckable(true);
+ a->setData(hData.value(h));
+ hDataAG->addAction(a);
+ if(!mTree->header()->isSectionHidden(hData.value(h))){
+ a->setChecked(true);
+ }
+ connect(a, &QAction::triggered, [=] { mTree->toggleHeader(a); });
+ }
+ QIcon headerIcon = Helper::icon(QColor(255,85,255), Qt::white, 'H', true, true);
+ QAction *headerA = new QAction(headerIcon, tr("Show headers"), this);
+ QMenu *headerMenu = new QMenu;
+ headerMenu->addActions(hDataAG->actions());
+ headerA->setMenu(headerMenu);
+ toolBar->addAction(headerA);
+ toolBar->addSeparator();
+ toolBar->addAction(SmGlobals::instance()->globalAction());
+ QWidget *spacer2 = new QWidget;
+ spacer2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
+ toolBar->addWidget(spacer2);
//connect
connect(mTree->selectionModel(), &QItemSelectionModel::selectionChanged, this, &ArchiveBrowser::browserSelectionChanged);
@@ -72,7 +125,7 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize
//make widget
QVBoxLayout *mainLayout = new QVBoxLayout;
- mainLayout->addWidget(mTbSplitter);
+ mainLayout->addWidget(toolBar);
mainLayout->addWidget(mTree);
setLayout(mainLayout);
mTree->setSortingEnabled(true);
@@ -105,18 +158,15 @@ void ArchiveBrowser::browserSelectionChanged(const QItemSelection &selected, con
}
void ArchiveBrowser::readConfig(){
- mTree->readHeaderConfig();
QSettings s;
QString qualFilter = s.value("ui/browserquality", tr("(none)")).toString();
mQualityFilter->setCurrentText(qualFilter);
- mTbSplitter->restoreState(s.value("ui/abtoolbarsplitter").toByteArray());
}
void ArchiveBrowser::writeSettings(){
mTree->writeHeaderConfig();
QSettings s;
s.setValue("ui/browserquality", mQualityFilter->currentText());
- s.setValue("ui/abtoolbarsplitter", mTbSplitter->saveState());
}
void ArchiveBrowser::moveToBurn() {
diff --git a/archivebrowser.h b/archivebrowser.h
index c85fa65..6f648a5 100644
--- a/archivebrowser.h
+++ b/archivebrowser.h
@@ -21,7 +21,6 @@ class CopyWorker;
class QSortFilterProxyModel;
class QComboBox;
class QCheckBox;
-class QToolBar;
class QSplitter;
class QProgressDialog;
@@ -30,7 +29,6 @@ class ArchiveBrowser : public QWidget {
public:
explicit ArchiveBrowser(QWidget *parent = 0);
SmTreeView *archiveTree() { return mTree; }
- QToolBar *toolBar() { return mToolBar; }
public slots:
void browserSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
@@ -60,8 +58,6 @@ class ArchiveBrowser : public QWidget {
CopyWorker *mCopyWorker;
QComboBox *mQualityFilter;
QCheckBox *mSizeFilter;
- QToolBar *mToolBar;
- QSplitter *mTbSplitter;
QProgressDialog *mUSBProgress;
ArchiveBrowserModel *mModel;
ArchiveBrowserModelProxy *mProxy;
diff --git a/shemov.cpp b/shemov.cpp
index 58a2e1c..9f9d1c0 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -161,9 +161,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
splash.showMessage(tr("Creating Menus and Statusbar..."), Qt::AlignHCenter, Qt::yellow);
qApp->processEvents();
createStatusbar();
- createActions();
createMenus();
- createToolBar();
setFsFree();
splash.showMessage(tr("Finishing..."), Qt::AlignHCenter, Qt::yellow);
@@ -211,12 +209,11 @@ void SheMov::configure(){
}
void SheMov::tabChanged(int newTab){
- if(newTab == FileManager || newTab == Movies || newTab == Pictures){
+ if(newTab == FileManager || newTab == Movies || newTab == Pictures || newTab == ArchiveBrowserTab){
menuBar()->setVisible(false);
}else{
menuBar()->setVisible(true);
}
- mArchiveBrowserViewMenuA->setVisible(newTab == ArchiveBrowserTab);
mRandomEditMenuA->setVisible(newTab == RandomDisp);
statusbarMessage(QString());
switch(newTab){
@@ -230,6 +227,9 @@ void SheMov::tabChanged(int newTab){
mPicWidget->constructWindowTitle();
setDuration(0x0, false);
break;
+ case ArchiveBrowserTab:
+ setWindowTitle(tr("Archive Browser"));
+ break;
default:
setDuration(0x0, false);
;;
@@ -316,24 +316,6 @@ void SheMov::setDuration(qint64 dur, bool maybeMore){
mSelectedDuration->setText(t);
}
-QAction *SheMov::createSeparator(){
- QAction *tmp = new QAction(this);
- tmp->setSeparator(true);
- return tmp;
-}
-
-void SheMov::createHeaderMapper(SmTreeModel *model, SmTreeView *view, QActionGroup *group){
- QHash<QString, int> headerData = model->headerData();
- group->setExclusive(false);
- for(QHash<QString, int>::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);
- connect(a, &QAction::triggered, [=] {view->toggleHeader(a); });
- }
-}
-
void SheMov::createStatusbar(){
QLabel *selDurL = new QLabel(tr("Duration"));
mSelectedDuration = new QLabel("00:00:00");
@@ -357,31 +339,6 @@ void SheMov::createStatusbar(){
statusBar()->addPermanentWidget(mFsFree);
}
-void SheMov::createActions(){
- //headers
- SmTreeModel *abrowsermodel = static_cast<SmTreeModel*>(SmGlobals::instance()->model("BrowserModel"));
- mArchiveBrowserAG = new QActionGroup(this);
- createHeaderMapper(abrowsermodel, mArchiveBrowser->archiveTree(), mArchiveBrowserAG);
- mArchiveBrowser->archiveTree()->setHeaderGroup(mArchiveBrowserAG);
-
- PictureViewer2 *picViewer = SmGlobals::instance()->pictureViewer();
- picViewer->hide();
-
- //ArchiveBrowser Actions
- mArchiveBrowserMoveToBurnA = new QAction(QIcon(":/shackles.png"), tr("Move to burn..."), this);
- connect(mArchiveBrowserMoveToBurnA, &QAction::triggered, mArchiveBrowser, &ArchiveBrowser::moveToBurn);
- mArchiveBrowserMoveToUSBA = new QAction(QIcon(":/clean_tampon.png"), tr("Move to USB..."), this);
- connect(mArchiveBrowserMoveToUSBA, &QAction::triggered, mArchiveBrowser, &ArchiveBrowser::moveToUSB);
- mArchiveBrowserRefreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this);
- connect(mArchiveBrowserRefreshA, &QAction::triggered, mArchiveBrowser, &ArchiveBrowser::refresh);
- mArchiveBrowserPlaySelectedA = new QAction(QIcon(":/dildo.png"), tr("Play selected..."), this);
- connect(mArchiveBrowserPlaySelectedA, &QAction::triggered, mArchiveBrowser, &ArchiveBrowser::playSelected);
- mArchiveBrowserExpandAllA = new QAction(tr("Expand all"), this);
- connect(mArchiveBrowserExpandAllA, &QAction::triggered, mArchiveBrowser->archiveTree(), &SmTreeView::expandAll);
- mArchiveBrowserCollapseAllA = new QAction(tr("Collapse all"), this);
- connect(mArchiveBrowserCollapseAllA, &QAction::triggered, mArchiveBrowser->archiveTree(), &SmTreeView::collapseAll);
-}
-
void SheMov::createMenus(){
//FIXME!
//fileMenu->addAction(mConsistencyA);
@@ -391,23 +348,6 @@ void SheMov::createMenus(){
analyzeMenu->addAction(mAnalyzeSeriesA);
analyzeMenu->addAction(mAnalyzePartsA);
- //Archive Browser view menu
- mArchiveBrowserViewMenu = new QMenu(tr("&View"), this);
- QMenu *abHeaderMenu = new QMenu(tr("Show headers"), this);
- abHeaderMenu->addActions(mArchiveBrowserAG->actions());
- mArchiveBrowserViewMenu->addMenu(abHeaderMenu);
- mArchiveBrowserViewMenuA = menuBar()->addMenu(mArchiveBrowserViewMenu);
- mArchiveBrowserViewMenu->addSeparator();
- mArchiveBrowserViewMenu->addAction(mArchiveBrowserPlaySelectedA);
- mArchiveBrowserViewMenu->addSeparator();
- mArchiveBrowserViewMenu->addAction(mArchiveBrowserExpandAllA);
- mArchiveBrowserViewMenu->addAction(mArchiveBrowserCollapseAllA);
- mArchiveBrowserViewMenu->addSeparator();
- mArchiveBrowserViewMenu->addAction(mArchiveBrowserMoveToBurnA);
- mArchiveBrowserViewMenu->addAction(mArchiveBrowserMoveToUSBA);
- mArchiveBrowserViewMenu->addSeparator();
- mArchiveBrowserViewMenu->addAction(mArchiveBrowserRefreshA);
-
QMenu *helpMenu = new QMenu(tr("&Help"), this);
helpMenu->addAction(mAboutShemovA);
helpMenu->addAction(mAboutQtA);
@@ -415,32 +355,11 @@ void SheMov::createMenus(){
helpMenu->addAction(mStatisticsA);
menuBar()->addMenu(helpMenu);
- // ArchiveBrowser context menu
- mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserPlaySelectedA);
- mArchiveBrowser->archiveTree()->addAction(createSeparator());
- mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserExpandAllA);
- mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserCollapseAllA);
- mArchiveBrowser->archiveTree()->addAction(createSeparator());
- mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserMoveToBurnA);
- mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserMoveToUSBA);
- mArchiveBrowser->archiveTree()->addAction(createSeparator());
- mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserRefreshA);
-
// Random
mRandomEditMenu = mRandomTab->editMenu();
mRandomEditMenuA = menuBar()->addMenu(mRandomEditMenu);
}
-void SheMov::createToolBar(){
- mArchiveBrowser->toolBar()->addAction(mArchiveBrowserPlaySelectedA);
- mArchiveBrowser->toolBar()->addSeparator();
- mArchiveBrowser->toolBar()->addAction(mArchiveBrowserRefreshA);
- mArchiveBrowser->toolBar()->addAction(mArchiveBrowserMoveToBurnA);
- mArchiveBrowser->toolBar()->addAction(mArchiveBrowserMoveToUSBA);
- mArchiveBrowser->toolBar()->addSeparator();
- mArchiveBrowser->toolBar()->addAction(mConfigA);
-}
-
void SheMov::writeSettings(){
QSettings s;
s.setValue("ui/selectedtab", mTab->currentIndex());
diff --git a/shemov.h b/shemov.h
index 8682d12..6106480 100644
--- a/shemov.h
+++ b/shemov.h
@@ -57,13 +57,9 @@ class SheMov : public QMainWindow {
void configChanged();
private:
- QAction *createSeparator();
- void createHeaderMapper(SmTreeModel *model, SmTreeView *view, QActionGroup *group);
void createStatusbar();
- void createActions();
void createMenus();
void createOpenWithMenuFS();
- void createToolBar();
void writeSettings();
void readSettings();
void createPalette();
@@ -81,28 +77,6 @@ class SheMov : public QMainWindow {
QAction *mAboutQtA;
QAction *mStatisticsA;
QAction *mConsistencyA;
- QAction *mSearchDialogA;
- QActionGroup *mPicActionGroup;
-
- //ArchiveBrowser
- QAction *mArchiveBrowserViewMenuA;
- QAction *mArchiveBrowserMoveToBurnA;
- QAction *mArchiveBrowserMoveToUSBA;
- QAction *mArchiveBrowserRefreshA;
- QAction *mArchiveBrowserPlaySelectedA;
- QAction *mArchiveBrowserExpandAllA;
- QAction *mArchiveBrowserCollapseAllA;
- QActionGroup *mArchiveBrowserAG;
-
- //ArchiveFiles actions
- QAction *mArchiveFilesPlayA;
- QAction *mArchiveFilesQualityA;
- QAction *mArchiveFilesDvdNoA;
- QAction *mArchiveFilesTypeA;
- QAction *mArchiveFilesFileNoA;
- QAction *mArchiveFilesPropertiesA;
- QAction *mArchiveFilesPreviewA;
- QAction *mArchiveRemoveFilesA;
//DB analyze actions
QAction *mAnalyzeActorsA;
@@ -110,10 +84,7 @@ class SheMov : public QMainWindow {
QAction *mAnalyzeSeriesA;
QAction *mAnalyzePartsA;
- QMenu *mPlaySelectedTimesMenuFS;
- QMenu *mArchiveBrowserViewMenu;
QMenu *mRandomEditMenu;
-
QAction *mRandomEditMenuA;
//widgets + dialogs