diff options
-rw-r--r-- | archivebrowser.cpp | 94 | ||||
-rw-r--r-- | archivebrowser.h | 4 | ||||
-rw-r--r-- | shemov.cpp | 89 | ||||
-rw-r--r-- | shemov.h | 29 |
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; @@ -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()); @@ -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 |