summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configurationdialog.cpp91
-rw-r--r--configurationdialog.h3
-rw-r--r--filesystemwidget.cpp2
-rw-r--r--smdirmodel.cpp33
-rw-r--r--smdirmodel.h5
5 files changed, 113 insertions, 21 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp
index ce36ee6..015a33a 100644
--- a/configurationdialog.cpp
+++ b/configurationdialog.cpp
@@ -98,20 +98,6 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S
QVBoxLayout *miscLayout = new QVBoxLayout;
miscLayout->setAlignment(Qt::AlignTop);
- //misc - icons
- QGroupBox *iconBox = new QGroupBox(tr("Icon for folders"));
- QHBoxLayout *iconLayout = new QHBoxLayout;
- mIconForFolder = new QComboBox;
- mIconModel = new QStandardItemModel;
- const QHash<QString, QString> icons = SmGlobals::instance()->icons();
- for(QHash<QString, QString>::const_iterator it = icons.constBegin(); it != icons.constEnd(); ++it){
- QStandardItem *item = new QStandardItem(QIcon(it.value()), it.key());
- mIconModel->appendRow(item);
- }
- mIconForFolder->setModel(mIconModel);
- iconLayout->addWidget(mIconForFolder);
- iconBox->setLayout(iconLayout);
-
//misc - hover
QGroupBox *hoverBox = new QGroupBox(tr("Hover options"));
QVBoxLayout *hoverLayout = new QVBoxLayout;
@@ -155,12 +141,56 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S
archiveBox->setLayout(archiveLayout);
//misc - assemble
- miscLayout->addWidget(iconBox);
miscLayout->addWidget(hoverBox);
miscLayout->addWidget(archiveBox);
miscWidget->setLayout(miscLayout);
mTab->addTab(miscWidget, tr("Misc. settings"));
+ // icons
+ mIconModel = new QStandardItemModel;
+ const QHash<QString, QString> icons = SmGlobals::instance()->icons();
+ for(QHash<QString, QString>::const_iterator it = icons.constBegin(); it != icons.constEnd(); ++it){
+ QStandardItem *item = new QStandardItem(QIcon(it.value()), it.key());
+ mIconModel->appendRow(item);
+ }
+ QGroupBox *folderIconBox = new QGroupBox(tr("Icon for folders"));
+ QHBoxLayout *folderIconLayout = new QHBoxLayout;
+ mIconForFolder = new QComboBox;
+ mIconForFolder->setModel(mIconModel);
+ folderIconLayout->addWidget(mIconForFolder);
+ folderIconBox->setLayout(folderIconLayout);
+
+ QGroupBox *movieIconBox = new QGroupBox(tr("Icon for movies"));
+ QHBoxLayout *movieIconLayout = new QHBoxLayout;
+ mIconForMovie = new QComboBox;
+ mIconForMovie->setModel(mIconModel);
+ movieIconLayout->addWidget(mIconForMovie);
+ movieIconBox->setLayout(movieIconLayout);
+
+ QGroupBox *pictureIconBox = new QGroupBox(tr("Icon for pictures"));
+ QHBoxLayout *pictureIconLayout = new QHBoxLayout;
+ mIconForPic = new QComboBox;
+ mIconForPic->setModel(mIconModel);
+ pictureIconLayout->addWidget(mIconForPic);
+ pictureIconBox->setLayout(pictureIconLayout);
+
+ QGroupBox *otherIconBox = new QGroupBox(tr("Icon for other"));
+ QHBoxLayout *otherIconLayout = new QHBoxLayout;
+ mIconForOther = new QComboBox;
+ mIconForOther->setModel(mIconModel);
+ otherIconLayout->addWidget(mIconForOther);
+ otherIconBox->setLayout(otherIconLayout);
+
+ QVBoxLayout *iconWidgetLayout = new QVBoxLayout;
+ iconWidgetLayout->addWidget(folderIconBox);
+ iconWidgetLayout->addWidget(movieIconBox);
+ iconWidgetLayout->addWidget(pictureIconBox);
+ iconWidgetLayout->addWidget(otherIconBox);
+ iconWidgetLayout->addStretch();
+ QWidget *iconWidget = new QWidget;
+ iconWidget->setLayout(iconWidgetLayout);
+ mTab->addTab(iconWidget, tr("Icons"));
+
// movie viewer
QGroupBox *movieBox = new QGroupBox(tr("Movie viewer"));
QHBoxLayout *movieBoxLayout = new QHBoxLayout;
@@ -383,12 +413,25 @@ void ConfigurationDialog::setGrabFrameEnabled(bool enabled){
void ConfigurationDialog::readSettings(){
QSettings s;
- //read misc
- QString icon = s.value("ui/foldericon", "Dildo").toString();
- int pos = mIconForFolder->findText(icon);
- if(pos != -1){
- mIconForFolder->setCurrentIndex(pos);
- }
+ //read icons
+ QString iconText = s.value("ui/foldericon", "Dildo").toString();
+ int pos = mIconForFolder->findText(iconText);
+ pos = pos > -1 ? pos : 0;
+ mIconForFolder->setCurrentIndex(pos);
+ iconText = s.value("ui/movieicon", "Dildo").toString();
+ pos = mIconForMovie->findText(iconText);
+ pos = pos > -1 ? pos : 0;
+ mIconForMovie->setCurrentIndex(pos);
+ iconText = s.value("ui/pictureicon", "Dildo").toString();
+ pos = mIconForPic->findText(iconText);
+ pos = pos > -1 ? pos : 0;
+ mIconForPic->setCurrentIndex(pos);
+ iconText = s.value("ui/othericon", "Dildo").toString();
+ pos = mIconForOther->findText(iconText);
+ pos = pos > -1 ? pos : 0;
+ mIconForOther->setCurrentIndex(pos);
+
+ // read misc
mHoverPics->setChecked(s.value("ui/hoverpics", false).toBool());
mHoverArchive->setChecked(s.value("ui/hoverarchive", false).toBool());
mHoverMovies->setChecked(s.value("ui/hovermovies", false).toBool());
@@ -475,7 +518,13 @@ void ConfigurationDialog::writeSettings(){
s.setValue("paths/strippath", mStripPath->text());
s.setValue("paths/coverpath", mCoverPath->text());
+ //write icons
s.setValue("ui/foldericon", mIconForFolder->currentText());
+ s.setValue("ui/movieicon", mIconForMovie->currentText());
+ s.setValue("ui/pictureicon", mIconForPic->currentText());
+ s.setValue("ui/othericon", mIconForOther->currentText());
+
+ //write misc
s.setValue("ui/hoverpics", (mHoverPics->checkState() == Qt::Checked));
s.setValue("ui/hoverarchive", (mHoverArchive->checkState() == Qt::Checked));
s.setValue("ui/hoveropacity", mHoverOpacity->value());
diff --git a/configurationdialog.h b/configurationdialog.h
index b6bf0a8..f678f65 100644
--- a/configurationdialog.h
+++ b/configurationdialog.h
@@ -69,6 +69,9 @@ class ConfigurationDialog : public SmDialog {
QLineEdit *mStripPath;
QLineEdit *mGrabFrameFrom;
QComboBox *mIconForFolder;
+ QComboBox *mIconForMovie;
+ QComboBox *mIconForPic;
+ QComboBox *mIconForOther;
QComboBox *mInfoBox;
QComboBox *mMapBox;
QCheckBox *mHoverPics;
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index f91955e..457d903 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -356,6 +356,8 @@ void FilesystemWidget::writeSettings(){
void FilesystemWidget::configChanged(){
mModel->setIconProvider(mIconProvider);
+ mFileModel->readSettings();
+ mFileModel->refresh();
}
void FilesystemWidget::dvdMount(){
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 9b35706..a02c47c 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -9,12 +9,15 @@
#include <QDateTime>
#include <QFile>
#include <QTimer>
+#include <QSettings>
+#include <QHash>
#include <sys/stat.h>
#include "smdirmodel.h"
#include "smdirwatcher.h"
#include "smtreeitem.h"
+#include "smglobals.h"
#include "helper.h"
SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mHeaders(headers){
@@ -25,6 +28,7 @@ SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeMode
mRunTimer->setInterval(2000);
connect(mRunTimer, SIGNAL(timeout()), mWatch, SLOT(start()));
mRunTimer->start();
+ readSettings();
}
SmDirModel::~SmDirModel(){
@@ -54,6 +58,18 @@ QVariant SmDirModel::data(const QModelIndex &index, int role) const{
return i->data(Bitrate);
case FullPathRole:
return i->data(FullPath);
+ case Qt::DecorationRole: {
+ if(index.column() == 0){
+ QStringList mime = i->data(Type).toString().split('/');
+ if(mime.at(0) == "inode"){
+ return mIcons.value("folder");
+ }
+ if(!mIcons.contains(mime.at(0))){
+ return mIcons.value("other");
+ }
+ return mIcons.value(mime.at(0).toLower());
+ }
+ }
default:
return SmTreeModel::data(index, role);
}
@@ -122,6 +138,23 @@ void SmDirModel::dirEvent(const QString &file, int e){
}
}
+void SmDirModel::readSettings(){
+ const QHash<QString, QString> icons = SmGlobals::instance()->icons();
+ QSettings s;
+ QString iconName = s.value("ui/foldericon").toString();
+ mIcons.insert("folder", QIcon(icons.value(iconName)));
+ iconName = s.value("ui/movieicon").toString();
+ mIcons.insert("video", QIcon(icons.value(iconName)));
+ iconName = s.value("ui/pictureicon").toString();
+ mIcons.insert("image", QIcon(icons.value(iconName)));
+ iconName = s.value("ui/othericon").toString();
+ mIcons.insert("other", QIcon(icons.value(iconName)));
+}
+
+void SmDirModel::refresh(){
+ populate();
+}
+
void SmDirModel::populate(){
SmTreeItem *root = new SmTreeItem(mHeaders.size());
QDir d = QDir(mCur);
diff --git a/smdirmodel.h b/smdirmodel.h
index 690efac..d087558 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -13,6 +13,8 @@
#include <QModelIndex>
#include <QList>
#include <QFileInfo>
+#include <QMap>
+#include <QIcon>
#include <smtreemodel.h>
#include <smdirwatcher.h>
@@ -37,6 +39,8 @@ class SmDirModel : public SmTreeModel {
public slots:
void setDir(const QString &dir);
void dirEvent(const QString &file, int e);
+ void readSettings();
+ void refresh();
private slots:
void populate();
@@ -47,6 +51,7 @@ class SmDirModel : public SmTreeModel {
QStringList mHeaders;
QString mCur;
QTimer *mRunTimer;
+ QMap<QString, QIcon> mIcons;
};
#endif // SMDIRMODEL_H