diff options
-rw-r--r-- | configurationwidget.cpp | 61 | ||||
-rw-r--r-- | configurationwidget.h | 9 | ||||
-rw-r--r-- | filewidget.cpp | 1 | ||||
-rw-r--r-- | globals.cpp | 6 | ||||
-rw-r--r-- | globals.h | 5 | ||||
-rw-r--r-- | helper.cpp | 17 | ||||
-rw-r--r-- | helper.h | 1 | ||||
-rw-r--r-- | searchdialog.cpp | 3 | ||||
-rw-r--r-- | searchview.cpp | 3 | ||||
-rw-r--r-- | shemovcleaner.cpp | 4 | ||||
-rw-r--r-- | torrentwidget.cpp | 1 |
11 files changed, 110 insertions, 1 deletions
diff --git a/configurationwidget.cpp b/configurationwidget.cpp index 33e1271..43188e6 100644 --- a/configurationwidget.cpp +++ b/configurationwidget.cpp @@ -7,11 +7,13 @@ #include <QVBoxLayout> #include <QLineEdit> #include <QFileDialog> +#include <QCheckBox> +#include <QColorDialog> #include "configurationwidget.h" #include "itemselectionwidget.h" -ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) { +ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), mColors(2) { //database setup QGridLayout *dbLayout = new QGridLayout; mDbHost = new QLineEdit; @@ -64,6 +66,38 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q //mime type filters mMimeTypeW = new ItemSelectionWidget(ItemSelectionWidget::Item, tr("Mime Type Regex")); + //colors + QLabel *baseColorT = new QLabel(tr("Base color")); + mBaseColorL = new QLabel; + mBaseColorL->setFrameStyle(QFrame::Sunken | QFrame::Panel); + mBaseColorL->setScaledContents(true); + QPushButton *baseColorB = new QPushButton(tr("Choose...")); + baseColorB->setDisabled(true); + connect(baseColorB, &QPushButton::clicked, [=] { chooseColor(mBaseColorL, 0); }); + QLabel *altColorT = new QLabel(tr("Alternate color")); + mAltColorL = new QLabel; + mAltColorL->setFrameStyle(QFrame::Sunken | QFrame::Panel); + mAltColorL->setScaledContents(true); + QPushButton *altColorB = new QPushButton(tr("Choose...")); + altColorB->setDisabled(true); + connect(altColorB, &QPushButton::clicked, [=] { chooseColor(mAltColorL, 1); }); + mUseAltColors = new QCheckBox(tr("Use alternating colors")); + connect(mUseAltColors, &QCheckBox::stateChanged, [=]{ + baseColorB->setEnabled(mUseAltColors->isChecked()); + altColorB->setEnabled(mUseAltColors->isChecked()); + }); + QGridLayout *colorGrid = new QGridLayout; + colorGrid->setAlignment(Qt::AlignTop); + colorGrid->addWidget(baseColorT, 0, 0); + colorGrid->addWidget(mBaseColorL, 0, 1); + colorGrid->addWidget(baseColorB, 0, 2); + colorGrid->addWidget(altColorT, 1, 0); + colorGrid->addWidget(mAltColorL, 1, 1); + colorGrid->addWidget(altColorB, 1, 2); + colorGrid->addWidget(mUseAltColors, 2, 0, 1, 3, Qt::AlignHCenter); + QWidget *colorW = new QWidget; + colorW->setLayout(colorGrid); + //buttons QPushButton *acceptB = new QPushButton(tr("Save")); connect(acceptB, &QPushButton::clicked, this, &ConfigurationWidget::accept); @@ -83,6 +117,7 @@ ConfigurationWidget::ConfigurationWidget(QWidget *parent, Qt::WindowFlags f) : Q tab->addTab(mCopyDirW, tr("Copy dirs")); tab->addTab(mFavDirW, tr("Fav. dirs")); tab->addTab(mMimeTypeW, tr("MIME filter")); + tab->addTab(colorW, tr("Colors")); mainLayout->addWidget(tab); mainLayout->addLayout(bLayout); readSettings(); @@ -106,6 +141,9 @@ void ConfigurationWidget::accept(){ s.setValue("favdirs", favDirs); QStringList mimeFilters = mMimeTypeW->items(); s.setValue("mimefilters", mimeFilters); + s.setValue("alternatecolors", mUseAltColors->isChecked()); + s.setValue("basecolor", mColors.at(0)); + s.setValue("altcolor", mColors.at(1)); QDialog::accept(); } @@ -130,4 +168,25 @@ void ConfigurationWidget::readSettings(){ mFavDirW->setItems(favDirs); QStringList mimeFilters = s.value("mimefilters").toStringList(); mMimeTypeW->setItems(mimeFilters); + mUseAltColors->setChecked(s.value("alternatecolors").toBool()); + QVariant c1 = s.value("basecolor"); + mColors[0] = c1.value<QColor>(); + QPixmap pm1(mBaseColorL->sizeHint()); + pm1.fill(mColors.at(0)); + mBaseColorL->setPixmap(pm1); + QVariant c2 = s.value("altcolor"); + mColors[1] = c2.value<QColor>(); + QPixmap pm2(mAltColorL->sizeHint()); + pm2.fill(mColors.at(1)); + mAltColorL->setPixmap(pm2); +} + +void ConfigurationWidget::chooseColor(QLabel *l, int colorIndex){ + QColor c = QColorDialog::getColor(mColors.at(colorIndex), this); + if(c.isValid()){ + mColors[colorIndex] = c; + QPixmap pm(l->sizeHint()); + pm.fill(c); + l->setPixmap(pm); + } } diff --git a/configurationwidget.h b/configurationwidget.h index 08488cc..8e7bb19 100644 --- a/configurationwidget.h +++ b/configurationwidget.h @@ -2,9 +2,13 @@ #define CONFIGURATIONWIDGET_H #include <QDialog> +#include <QVector> +#include <QColor> class QLineEdit; class ItemSelectionWidget; +class QLabel; +class QCheckBox; class ConfigurationWidget : public QDialog { Q_OBJECT @@ -19,6 +23,7 @@ class ConfigurationWidget : public QDialog { private: void readSettings(); + void chooseColor(QLabel *l, int colorIndex); QLineEdit *mDbHost; QLineEdit *mDbUser; QLineEdit *mDbPass; @@ -26,9 +31,13 @@ class ConfigurationWidget : public QDialog { QLineEdit *mFfProbe; QLineEdit *mFfMpeg; QLineEdit *mMkvInfo; + QLabel *mBaseColorL; + QLabel *mAltColorL; + QCheckBox *mUseAltColors; ItemSelectionWidget *mCopyDirW; ItemSelectionWidget *mFavDirW; ItemSelectionWidget *mMimeTypeW; + QVector<QColor> mColors; }; #endif // CONFIGURATIONWIDGET_H diff --git a/filewidget.cpp b/filewidget.cpp index a56d1fa..ab087dd 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -103,6 +103,7 @@ void FileWidget::setupGui(){ topL->addWidget(mMimeFilters, 1, 3); mFileView = new QTreeView; + Globals::instance()->addView(mFileView); mFileView->setSortingEnabled(true); mFileView->setUniformRowHeights(true); mFileView->setSelectionBehavior(QAbstractItemView::SelectRows); diff --git a/globals.cpp b/globals.cpp index 53bd1f0..68d710a 100644 --- a/globals.cpp +++ b/globals.cpp @@ -16,6 +16,12 @@ void Globals::addAction(QAction *a){ mActions.insert(a->data().toInt(), a); } +void Globals::addView(QTreeView *v){ + if(!mViews.contains(v)){ + mViews.append(v); + } +} + QAction *Globals::action(int actionType){ return mActions.value(actionType); } @@ -3,9 +3,11 @@ #include <QObject> #include <QHash> +#include <QVector> class QAction; class Viewer; +class QTreeView; class Globals : public QObject { Q_OBJECT @@ -13,6 +15,8 @@ class Globals : public QObject { enum ActionType { QuitAction = 0, ConfigAction = 1 }; static Globals *instance(); void addAction(QAction *a); + void addView(QTreeView *v); + const QVector<QTreeView*> views() { return mViews; } QAction *action(int actionType); Viewer *viewer(); @@ -23,6 +27,7 @@ class Globals : public QObject { static Globals *mInstance; QHash<int, QAction*> mActions; Viewer *mViewer; + QVector<QTreeView*> mViews; }; #endif // GLOBALS_H @@ -11,8 +11,10 @@ #include <QPainter> #include <QStandardPaths> #include <QDir> +#include <QTreeView> #include "helper.h" +#include "globals.h" namespace Helper { const QString md5Sum(const QString &path){ @@ -155,6 +157,21 @@ namespace Helper { return QIcon(QPixmap::fromImage(img)); } + void setAlternatingRowColors(){ + QSettings s; + bool alternate = s.value("alternatecolors").toBool(); + if(alternate){ + QColor b = s.value("basecolor").value<QColor>(); + QColor a = s.value("altcolor").value<QColor>(); + QString style = QString("background-color: rgb(%1,%2,%3);alternate-background-color: rgb(%4,%5,%6);").arg(b.red()).arg(b.green()).arg(b.blue()).arg(a.red()).arg(a.green()).arg(a.blue()); + QVector<QTreeView*> views = Globals::instance()->views(); + for(QTreeView *v : views){ + v->setAlternatingRowColors(true); + v->setStyleSheet(style); + } + } + } + Duration::Duration() : mHours(0), mMinutes(0), mSeconds(0) {} Duration::Duration(qint64 seconds){ @@ -13,6 +13,7 @@ namespace Helper { const QImage snapshot(const QString &file, int offset); const QString appDataDir(); const QIcon icon(const QColor &bg, const QChar c, bool bold = true); + void setAlternatingRowColors(); class Duration { public: Duration(); diff --git a/searchdialog.cpp b/searchdialog.cpp index e30ead6..50109b9 100644 --- a/searchdialog.cpp +++ b/searchdialog.cpp @@ -17,6 +17,7 @@ #include "searchdialog.h" #include "searchview.h" #include "helper.h" +#include "globals.h" SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ //search bar @@ -42,6 +43,7 @@ SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, QSortFilterProxyModel *resMProxy = new QSortFilterProxyModel; resMProxy->setSourceModel(mResM); mResV = new SearchView; + Globals::instance()->addView(mResV); mResV->setModel(resMProxy); connect(mResV->selectionModel(), &QItemSelectionModel::currentChanged, this, &SearchDialog::doResult); QHBoxLayout *resGBL = new QHBoxLayout; @@ -52,6 +54,7 @@ SearchDialog::SearchDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, QSortFilterProxyModel *dataMProxy = new QSortFilterProxyModel; dataMProxy->setSourceModel(mDataM); mDataV = new SearchView; + Globals::instance()->addView(mDataV); mDataV->setModel(dataMProxy); QHBoxLayout *dataGBL = new QHBoxLayout; dataGBL->addWidget(mDataV); diff --git a/searchview.cpp b/searchview.cpp index a4ba25b..c74b661 100644 --- a/searchview.cpp +++ b/searchview.cpp @@ -1,6 +1,7 @@ #include <QMenu> #include <QAction> #include <QContextMenuEvent> +#include <QApplication> #include "searchview.h" #include "helper.h" @@ -20,6 +21,8 @@ SearchView::SearchView(QWidget *parent) : QTreeView(parent){ QAction *collapseAllA = new QAction(Helper::icon(QColor(255,85,255), QChar(0x2196)), tr("Collapse all"), this); connect(collapseAllA, &QAction::triggered, this, &SearchView::collapseAll); mCtxMenu->addAction(collapseAllA); + setAlternatingRowColors(true); + setPalette(qApp->palette()); } void SearchView::expandNode(){ diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp index a0bf4f2..e31545f 100644 --- a/shemovcleaner.cpp +++ b/shemovcleaner.cpp @@ -24,6 +24,7 @@ #include "configurationwidget.h" #include "filewidget.h" #include "globals.h" +#include "helper.h" ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(parent, f) { //general setup @@ -83,6 +84,7 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p restoreGeometry(s.value("geometry").toByteArray()); mTorrentTab->torrentFileView()->setFocus(); readSettings(); + Helper::setAlternatingRowColors(); mTorrentTab->selectFirst(); mFileTab->selectFirst(); } @@ -137,6 +139,7 @@ void ShemovCleaner::configure(){ if(res == QDialog::Accepted){ openDatabase(); emit configurationChanged(); + Helper::setAlternatingRowColors(); } } @@ -236,6 +239,7 @@ void ShemovCleaner::readSettings(){ int curTab = s.value("startupTab").toInt(); mTab->setCurrentIndex(curTab); tabChanged(curTab); + } void ShemovCleaner::writeSettings(){ diff --git a/torrentwidget.cpp b/torrentwidget.cpp index bb3bf54..8cdbca1 100644 --- a/torrentwidget.cpp +++ b/torrentwidget.cpp @@ -65,6 +65,7 @@ void TorrentWidget::setupGui(){ buttonL->addWidget(doSearchTorrentsB, 1, 2); mFileView = new QTreeView; + Globals::instance()->addView(mFileView); mFileView->setSortingEnabled(true); mFileView->setSelectionBehavior(QAbstractItemView::SelectRows); mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection); |