diff options
author | Arno <am@disconnect.de> | 2013-03-17 09:30:45 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-03-17 09:30:45 +0100 |
commit | ffe0b7556907bc4c6dfaed87a98e7fe68378cfa2 (patch) | |
tree | 392ed3498245ef97691959dbb2f648f1d03c01e6 | |
parent | 744c94e9a1197068457cc52dde57472cb89e1819 (diff) | |
download | SheMov-ffe0b7556907bc4c6dfaed87a98e7fe68378cfa2.tar.gz SheMov-ffe0b7556907bc4c6dfaed87a98e7fe68378cfa2.tar.bz2 SheMov-ffe0b7556907bc4c6dfaed87a98e7fe68378cfa2.zip |
Icons for SmDirModel
Made Icons for SmDirModel configurable. For now it's folders, movies,
pictures and others.
-rw-r--r-- | configurationdialog.cpp | 91 | ||||
-rw-r--r-- | configurationdialog.h | 3 | ||||
-rw-r--r-- | filesystemwidget.cpp | 2 | ||||
-rw-r--r-- | smdirmodel.cpp | 33 | ||||
-rw-r--r-- | smdirmodel.h | 5 |
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 |