summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-12-22 16:59:12 +0100
committerArno <am@disconnect.de>2010-12-26 20:49:27 +0100
commit7bb7295a9033c0a6729b301e7c9b76393539e29a (patch)
treedf92ec2f09e1cf6797fde07dc495efb051c94b74
parent832d48d3b9249db178f649d00c5c7134bea2becb (diff)
downloadSheMov-7bb7295a9033c0a6729b301e7c9b76393539e29a.tar.gz
SheMov-7bb7295a9033c0a6729b301e7c9b76393539e29a.tar.bz2
SheMov-7bb7295a9033c0a6729b301e7c9b76393539e29a.zip
Made colors configurable
Added a tab to ConfigurationDialog to make some colors configurable. It works somehow. The font color isn't evaluated yet, since I'm not convinced that it is a good idea. But one problem is that calling qApp->setPalette() doesn't propagate to non visible child dialogs. Dunno if it's worth fixing.
-rw-r--r--archivetreeview.cpp9
-rw-r--r--archivetreeview.h1
-rw-r--r--configurationdialog.cpp136
-rw-r--r--configurationdialog.h19
-rw-r--r--filestreemodel.cpp9
-rw-r--r--filestreemodel.h5
-rw-r--r--filestreewidget.cpp2
-rw-r--r--filestreewidget.h2
-rw-r--r--filesystemwidget.cpp2
-rw-r--r--mappingtablewidget.cpp1
-rw-r--r--seriestreewidget.cpp6
-rw-r--r--seriestreewidget.h2
-rw-r--r--shemov.cpp17
13 files changed, 202 insertions, 9 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp
index 5d8a96d..1a58041 100644
--- a/archivetreeview.cpp
+++ b/archivetreeview.cpp
@@ -82,6 +82,8 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
mNoCoverDialog = new NoCoverMovieDialog(this);
mNoCoverDialog->setHidden(true);
connect(mNoCoverDialog->view(), SIGNAL(doubleClicked(QModelIndex)), this, SLOT(selectMovie(QModelIndex)));
+ mFilesWidget->filesTree()->setAlternatingRowColors(true);
+ mSeriesWidget->seriesTree()->setAlternatingRowColors(true);
// layout
QHBoxLayout *mainLayout = new QHBoxLayout;
@@ -94,6 +96,7 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
setLayout(mainLayout);
constructWindowTitle();
+ readSettings();
}
void ArchiveTreeView::setFileViewMode(int mode){
@@ -196,6 +199,12 @@ void ArchiveTreeView::copyPath(int type){
}
}
+void ArchiveTreeView::readSettings(){
+ seriesWidget()->seriesTree()->readSettings();
+ filesWidget()->filesTree()->readSettings();
+ mFilesModel->readSettings();
+}
+
void ArchiveTreeView::currentChanged(const QItemSelection &selected, const QItemSelection &deselected){
Q_UNUSED(selected);
Q_UNUSED(deselected);
diff --git a/archivetreeview.h b/archivetreeview.h
index 7b0cd47..e2c0a9d 100644
--- a/archivetreeview.h
+++ b/archivetreeview.h
@@ -49,6 +49,7 @@ class ArchiveTreeView : public QWidget
void showNoCoverDialog();
void selectMovie(const QModelIndex &idx);
void copyPath(int type);
+ void readSettings();
private slots:
void currentChanged(const QItemSelection &selected, const QItemSelection &deselected);
diff --git a/configurationdialog.cpp b/configurationdialog.cpp
index 08186e9..7008e76 100644
--- a/configurationdialog.cpp
+++ b/configurationdialog.cpp
@@ -27,6 +27,12 @@
#include <QFile>
#include <QTextStream>
#include <QRegExpValidator>
+#include <QSignalMapper>
+#include <QColor>
+#include <QColorDialog>
+#include <QPalette>
+#include <QImage>
+#include <QPainter>
#include "configurationdialog.h"
#include "programconfigurator.h"
@@ -177,6 +183,81 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : Q
databaseWidget->setLayout(dbGrid);
mTab->addTab(databaseWidget, tr("Database"));
+ //colors tab
+ QWidget *colorsWidget = new QWidget;
+ QGridLayout *colorGrid = new QGridLayout;
+ QSignalMapper *colorMapper = new QSignalMapper(this);
+ QLabel *colorl1 = new QLabel(tr("Files marked as seen"));
+ mSeenColor = new QLabel;
+ mSeenColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mSeenColor->setScaledContents(true);
+ mSeenButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl1, 0, 0);
+ colorGrid->addWidget(mSeenColor, 0, 1);
+ colorGrid->addWidget(mSeenButton, 0, 2);
+ colorMapper->setMapping(mSeenButton, mSeenColor);
+ connect(mSeenButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl2 = new QLabel(tr("Files in clipboard"));
+ mClipboardColor = new QLabel;
+ mClipboardColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mClipboardColor->setScaledContents(true);
+ mClipboardButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl2, 1, 0);
+ colorGrid->addWidget(mClipboardColor, 1, 1);
+ colorGrid->addWidget(mClipboardButton, 1, 2);
+ colorMapper->setMapping(mClipboardButton, mClipboardColor);
+ connect(mClipboardButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl3 = new QLabel(tr("Base color for rows"));
+ mBaseColor = new QLabel;
+ mBaseColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mBaseColor->setScaledContents(true);
+ mBaseButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl3, 2, 0);
+ colorGrid->addWidget(mBaseColor, 2, 1);
+ colorGrid->addWidget(mBaseButton, 2, 2);
+ colorMapper->setMapping(mBaseButton, mBaseColor);
+ connect(mBaseButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl4 = new QLabel(tr("Alternate base for rows"));
+ mAlternateBaseColor = new QLabel;
+ mAlternateBaseColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mAlternateBaseColor->setScaledContents(true);
+ mAlternateBaseButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl4, 3, 0);
+ colorGrid->addWidget(mAlternateBaseColor, 3, 1);
+ colorGrid->addWidget(mAlternateBaseButton, 3, 2);
+ colorMapper->setMapping(mAlternateBaseButton, mAlternateBaseColor);
+ connect(mAlternateBaseButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl5 = new QLabel(tr("Font color"));
+ mFontColor = new QLabel;
+ mFontColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mFontColor->setScaledContents(true);
+ mFontColorButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl5, 4, 0);
+ colorGrid->addWidget(mFontColor, 4, 1);
+ colorGrid->addWidget(mFontColorButton, 4, 2);
+ colorMapper->setMapping(mFontColorButton, mFontColor);
+ connect(mFontColorButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl6 = new QLabel(tr("Local files"));
+ mLocalColor = new QLabel;
+ mLocalColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mLocalColor->setScaledContents(true);
+ mLocalColorButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl6, 5, 0);
+ colorGrid->addWidget(mLocalColor, 5, 1);
+ colorGrid->addWidget(mLocalColorButton, 5, 2);
+ colorMapper->setMapping(mLocalColorButton, mLocalColor);
+ connect(mLocalColorButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ connect(colorMapper, SIGNAL(mapped(QWidget*)), this, SLOT(chooseColor(QWidget*)));
+ mAlternateColors = new QCheckBox(tr("Use alternating row colors"));
+ mAlternateColors->setTristate(false);
+ connect(mAlternateColors, SIGNAL(stateChanged(int)), this, SLOT(alternateColorsChanged(int)));
+ colorGrid->addWidget(mAlternateColors, 6, 1, 1, 2, Qt::AlignLeft);
+ QVBoxLayout *colorStretchLayout = new QVBoxLayout;
+ colorStretchLayout->addStretch();
+ colorGrid->addLayout(colorStretchLayout, 7, 1, 3, Qt::AlignLeft);
+ colorsWidget->setLayout(colorGrid);
+ mTab->addTab(colorsWidget, tr("Colors"));
+
//main layout
mOk = new QPushButton(tr("Ok"));
connect(mOk, SIGNAL(clicked()), this, SLOT(accept()));
@@ -235,6 +316,26 @@ void ConfigurationDialog::readSettings(){
mDatabaseUsername->setText(s.value("database/dbuser").toString());
mDatabasePassword->setText(s.value("database/dbpass").toString());
+ //read colors
+ QVariant seen = s.value("ui/seencolor", Qt::red);
+ mColors.insert(mSeenColor, seen.value<QColor>());
+ QVariant clip = s.value("ui/clipcolor", Qt::darkBlue);
+ mColors.insert(mClipboardColor, clip.value<QColor>());
+ QVariant base = s.value("ui/basecolor", qApp->palette().base().color());
+ mColors.insert(mBaseColor, base.value<QColor>());
+ QVariant alternate = s.value("ui/alternatecolor", qApp->palette().alternateBase().color());
+ mColors.insert(mAlternateBaseColor, alternate.value<QColor>());
+ QVariant font = s.value("ui/fontcolor", qApp->palette().foreground().color());
+ mColors.insert(mFontColor, font.value<QColor>());
+ QVariant local = s.value("ui/localcolor", Qt::darkBlue);
+ mColors.insert(mLocalColor, local.value<QColor>());
+ QHash<QWidget*, QColor>::const_iterator it;
+ for(it = mColors.constBegin(); it != mColors.constEnd(); ++it){
+ setColor(it.key());
+ }
+ bool allowAlternate = s.value("ui/allowalternate", true).toBool();
+ mAlternateColors->setChecked(allowAlternate);
+ alternateColorsChanged(mAlternateColors->checkState());
}
void ConfigurationDialog::writeSettings(){
@@ -277,6 +378,15 @@ void ConfigurationDialog::writeSettings(){
//write pics
mPicConfig->writeSettings();
+
+ //write colors
+ s.setValue("ui/seencolor", mColors.value(mSeenColor));
+ s.setValue("ui/clipcolor", mColors.value(mClipboardColor));
+ s.setValue("ui/basecolor", mColors.value(mBaseColor));
+ s.setValue("ui/alternatecolor", mColors.value(mAlternateBaseColor));
+ s.setValue("ui/fontcolor", mColors.value(mFontColor));
+ s.setValue("ui/localcolor", mColors.value(mLocalColor));
+ s.setValue("ui/allowalternate", mAlternateColors->isChecked());
}
bool ConfigurationDialog::checkDvdPath(){
@@ -329,3 +439,29 @@ void ConfigurationDialog::mountError(const QString &error){
QSettings s;
s.setValue("paths/dvdmount", QString());
}
+
+void ConfigurationDialog::chooseColor(QWidget *label){
+ QColor newColor = QColorDialog::getColor(mColors.value(label), this);
+ if(newColor.isValid()){
+ mColors[label] = newColor;
+ setColor(label);
+ }
+}
+
+void ConfigurationDialog::alternateColorsChanged(int state){
+ mBaseButton->setEnabled(state == Qt::Checked);
+ mBaseColor->setEnabled(state == Qt::Checked);
+ mAlternateBaseButton->setEnabled(state == Qt::Checked);
+ mAlternateBaseColor->setEnabled(state == Qt::Checked);
+}
+
+void ConfigurationDialog::setColor(QWidget *label){
+ QLabel *curLabel = qobject_cast<QLabel*>(label);
+ if(!curLabel){
+ return;
+ }
+ QColor curColor = mColors.value(label);
+ QPixmap pm(curLabel->sizeHint());
+ pm.fill(curColor);
+ curLabel->setPixmap(pm);
+}
diff --git a/configurationdialog.h b/configurationdialog.h
index dd8e62b..0f7f76e 100644
--- a/configurationdialog.h
+++ b/configurationdialog.h
@@ -9,6 +9,7 @@
#define CONFIGURATIONDIALOG_H
#include <QDialog>
+#include <QHash>
class QPushButton;
class QTabWidget;
@@ -16,6 +17,7 @@ class QLineEdit;
class QComboBox;
class QCheckBox;
class QSpinBox;
+class QLabel;
class ProgramConfigurator;
@@ -30,12 +32,15 @@ class ConfigurationDialog : public QDialog {
private slots:
void setGrabFrameEnabled(bool enabled);
+ void chooseColor(QWidget *label);
+ void alternateColorsChanged(int);
private:
void readSettings();
void writeSettings();
bool checkDvdPath();
void mountError(const QString &error);
+ void setColor(QWidget *label);
QPushButton *mOk;
QPushButton *mCancel;
QTabWidget *mTab;
@@ -58,6 +63,20 @@ class ConfigurationDialog : public QDialog {
QCheckBox *mHoverArchive;
QCheckBox *mHoverMovies;
QSpinBox *mHoverOpacity;
+ QLabel *mSeenColor;
+ QLabel *mClipboardColor;
+ QLabel *mBaseColor;
+ QLabel *mAlternateBaseColor;
+ QLabel *mFontColor;
+ QLabel *mLocalColor;
+ QPushButton *mSeenButton;
+ QPushButton *mClipboardButton;
+ QPushButton *mBaseButton;
+ QPushButton *mAlternateBaseButton;
+ QPushButton *mFontColorButton;
+ QPushButton *mLocalColorButton;
+ QCheckBox *mAlternateColors;
+ QHash<QWidget*, QColor> mColors;
};
#endif
diff --git a/filestreemodel.cpp b/filestreemodel.cpp
index f81711d..1a8b959 100644
--- a/filestreemodel.cpp
+++ b/filestreemodel.cpp
@@ -17,6 +17,7 @@
#include <QDesktopServices>
#include <QDir>
#include <QFont>
+#include <QSettings>
#include "filestreemodel.h"
#include "smtreeitem.h"
@@ -201,7 +202,7 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{
}
if(index.column() == FileName){
if(item->data(DvdNo) == -1){
- return QColor(Qt::darkBlue);
+ return mLocalColor;
}
}
}
@@ -522,6 +523,12 @@ void FilesTreeModel::writeCache(){
}
}
+void FilesTreeModel::readSettings(){
+ QSettings s;
+ QVariant local = s.value("ui/localcolor", Qt::darkBlue);
+ mLocalColor = local.value<QColor>();
+}
+
void FilesTreeModel::populate(QSqlQuery &filesQuery){
SmTreeItem *root = new SmTreeItem(15);
SmTreeItem *files = new SmTreeItem(15, root);
diff --git a/filestreemodel.h b/filestreemodel.h
index 7acca2c..23e5f75 100644
--- a/filestreemodel.h
+++ b/filestreemodel.h
@@ -12,6 +12,7 @@
#include <QList>
#include <QHash>
#include <QMap>
+#include <QColor>
#include "smtreemodel.h"
@@ -56,6 +57,9 @@ class FilesTreeModel : public SmTreeModel {
void readCache();
void writeCache();
+ public slots:
+ void readSettings();
+
private:
//functions
void populate(QSqlQuery &filesQuery);
@@ -80,6 +84,7 @@ class FilesTreeModel : public SmTreeModel {
SeriesTreeModel *mSeriesModel;
int mMode;
const int mMagic;
+ QColor mLocalColor;
};
#endif // FILESTREEMODEL_H
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index 857b848..671d531 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -308,7 +308,7 @@ void FilesTreeView::setModel(QAbstractItemModel *model){
readHeaderConfig();
}
-void FilesTreeView::readConfig(){
+void FilesTreeView::readSettings(){
QSettings s;
mHoverPics = s.value("ui/hoverpics", true).toBool();
mHoverWin->setWindowOpacity(s.value("ui/hoveropacity", 10).toFloat() / 10.0);
diff --git a/filestreewidget.h b/filestreewidget.h
index 23c9ef8..86b6a15 100644
--- a/filestreewidget.h
+++ b/filestreewidget.h
@@ -64,7 +64,7 @@ class FilesTreeView : public QTreeView {
virtual void setModel(QAbstractItemModel *model);
public slots:
- void readConfig();
+ void readSettings();
void readHeaderConfig();
void writeHeaderConfig();
void toggleHeader(QObject *action);
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index c3c86c1..876d27d 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -58,6 +58,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar
mDirView->setEditTriggers(QAbstractItemView::NoEditTriggers);
mDirView->setSortingEnabled(true);
mDirView->sortByColumn(0, Qt::AscendingOrder);
+ mDirView->setAlternatingRowColors(true);
mFileView = new FileView;
mFileProxy = new FilesystemFileProxy;
@@ -68,6 +69,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar
mFileView->setItemsExpandable(false);
mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection);
mFileView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ mFileView->setAlternatingRowColors(true);
mPicViewer = SmGlobals::instance()->pictureViewer();
diff --git a/mappingtablewidget.cpp b/mappingtablewidget.cpp
index 03bfa75..74763b9 100644
--- a/mappingtablewidget.cpp
+++ b/mappingtablewidget.cpp
@@ -26,6 +26,7 @@ MappingTableWidget::MappingTableWidget(const QString &table, QWidget *parent) :
mModel = new MappingTableItemModel(this);
mModel->setHeaderData(0, Qt::Horizontal, mTable);
mView->setModel(mModel);
+ mView->setAlternatingRowColors(true);
//mapping model
mMappingModel = static_cast<MappingTableModel*>(SmGlobals::instance()->model(mTable));
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index fdcf24d..f068d29 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -24,6 +24,7 @@
#include <QFile>
#include <QEvent>
#include <QHoverEvent>
+#include <QPalette>
#include "seriestreewidget.h"
#include "smtreemodel.h"
@@ -314,13 +315,14 @@ void SeriesTreeWidget::addCover(){
SeriesTreeView::SeriesTreeView(QWidget *parent) : QTreeView(parent), mHoverWin(new HoverWindow), mHover(false) {
setAttribute(Qt::WA_Hover);
- readConfig();
+ readSettings();
}
-void SeriesTreeView::readConfig(){
+void SeriesTreeView::readSettings(){
QSettings s;
mHover = s.value("ui/hoverarchive", true).toBool();
mHoverWin->setWindowOpacity(s.value("ui/hoveropacity", 10).toFloat() / 10.0);
+
}
void SeriesTreeView::contextMenuEvent(QContextMenuEvent *e){
diff --git a/seriestreewidget.h b/seriestreewidget.h
index b8d89e6..fc55415 100644
--- a/seriestreewidget.h
+++ b/seriestreewidget.h
@@ -72,7 +72,7 @@ class SeriesTreeView : public QTreeView {
explicit SeriesTreeView(QWidget *parent = 0);
public slots:
- void readConfig();
+ void readSettings();
protected:
virtual void contextMenuEvent(QContextMenuEvent *e);
diff --git a/shemov.cpp b/shemov.cpp
index 79712dd..3170699 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -69,8 +69,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
connect(mATree, SIGNAL(needWindowTitleChange(QString)), this, SLOT(setWindowTitle(QString)));
connect(mATree->filesWidget()->filesTree()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
connect(mATree->seriesWidget()->seriesTree()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(updateSelectionCount(QItemSelection,QItemSelection)));
- connect(this, SIGNAL(configChanged()), mATree->seriesWidget()->seriesTree(), SLOT(readConfig()));
- connect(this, SIGNAL(configChanged()), mATree->filesWidget()->filesTree(), SLOT(readConfig()));
+ connect(this, SIGNAL(configChanged()), mATree, SLOT(readSettings()));
//newmoviewizard
mNewMovieWizard = new NewMovieWizard(this);
@@ -102,7 +101,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
setCentralWidget(centralWidget);
show();
mATree->seriesWidget()->readSettings();
- mATree->filesWidget()->filesTree()->readConfig();
+ mATree->filesWidget()->filesTree()->readSettings();
mFSWidget->readSettings();
readSettings();
mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason);
@@ -859,6 +858,18 @@ void SheMov::readSettings(){
}
}
}
+ bool alternate = s.value("ui/allowalternate").toBool();
+ QPalette pal(palette());
+ if(alternate){
+ QVariant basecolor = s.value("ui/basecolor");
+ QVariant alternatecolor = s.value("ui/alternatecolor");
+ pal.setColor(QPalette::Base, basecolor.value<QColor>());
+ pal.setColor(QPalette::AlternateBase, alternatecolor.value<QColor>());
+ }else{
+ pal.setColor(QPalette::Base, Qt::white);
+ pal.setColor(QPalette::AlternateBase, Qt::white);
+ }
+ qApp->setPalette(pal);
}
void SheMov::checkConsistency(){