summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configurationwidget.cpp61
-rw-r--r--configurationwidget.h9
-rw-r--r--filewidget.cpp1
-rw-r--r--globals.cpp6
-rw-r--r--globals.h5
-rw-r--r--helper.cpp17
-rw-r--r--helper.h1
-rw-r--r--searchdialog.cpp3
-rw-r--r--searchview.cpp3
-rw-r--r--shemovcleaner.cpp4
-rw-r--r--torrentwidget.cpp1
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);
}
diff --git a/globals.h b/globals.h
index e0bc5ef..c8037fe 100644
--- a/globals.h
+++ b/globals.h
@@ -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
diff --git a/helper.cpp b/helper.cpp
index c3bc118..08b8532 100644
--- a/helper.cpp
+++ b/helper.cpp
@@ -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){
diff --git a/helper.h b/helper.h
index c8982b4..4883a5f 100644
--- a/helper.h
+++ b/helper.h
@@ -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);