summaryrefslogtreecommitdiffstats
path: root/archivebrowser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archivebrowser.cpp')
-rw-r--r--archivebrowser.cpp94
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() {