diff options
author | Arno <arno@disconnect.de> | 2018-07-21 13:41:47 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-07-21 13:41:47 +0200 |
commit | 9cbbbc0a69d13c65f14678c3187b796a374236ce (patch) | |
tree | c0fd358103c70703ecea1c6f6aefcc5f135ee7ef /archivebrowser.cpp | |
parent | 8b219f9d250470bb36e1ce1e91a409c13a375a95 (diff) | |
download | SheMov-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.
Diffstat (limited to 'archivebrowser.cpp')
-rw-r--r-- | archivebrowser.cpp | 94 |
1 files changed, 72 insertions, 22 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() { |