diff options
author | Arno <arno@disconnect.de> | 2018-03-31 07:49:57 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-03-31 07:49:57 +0200 |
commit | cb9e431e305c9417fe4efa38263871464f71d62e (patch) | |
tree | 61541e212f4138cd3e9122b7596c731aa90dee40 | |
parent | 0b4639bd7267cc0c2641b0b75a3b72e9ae765e5f (diff) | |
download | SheMov-cb9e431e305c9417fe4efa38263871464f71d62e.tar.gz SheMov-cb9e431e305c9417fe4efa38263871464f71d62e.tar.bz2 SheMov-cb9e431e305c9417fe4efa38263871464f71d62e.zip |
Make FSWidget prettier
* add programmatically rendered icons
* make text Qt::black
* set rootIsDecorated to false
-rw-r--r-- | fswidget.cpp | 17 | ||||
-rw-r--r-- | helper.cpp | 18 | ||||
-rw-r--r-- | helper.h | 1 |
3 files changed, 34 insertions, 2 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index 8423450..658b7ed 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -155,24 +155,29 @@ void FSWidget::removeItem(QComboBox *cb){ void FSWidget::gatherData(const QString &curDir){ mFileView->setSortingEnabled(false); + mFileView->setRootIsDecorated(false); mModel->clear(); QStandardItem *root = mModel->invisibleRootItem(); QMimeDatabase mimedb; mModel->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("MIME") << tr("Size") << tr("Duration") << tr("MD5")); + QIcon videoIcon = Helper::icon(QColor(255,85,255), 'M'); + QIcon imageIcon = Helper::icon(QColor(255,85,255), 'P'); + QIcon otherIcon = Helper::icon(QColor(255,85,255), 'O'); + QBrush blackBrush(Qt::black); QDirIterator it(curDir, QDir::Files); mFileView->setUpdatesEnabled(false); while(it.hasNext()){ QFileInfo fi = it.next(); QMimeType mimeType = mimedb.mimeTypeForFile(fi); + QString mimeName = mimeType.name(); qint64 seconds = 0; Helper::Duration dur; QString durStr(tr("n/a")); QLocale l; QString size = l.toString(fi.size()); QString md5 = Helper::md5Sum(fi.absoluteFilePath()); - QIcon i(":/huge_bra.png"); - if(mimeType.name().startsWith("video")){ + if(mimeName.startsWith("video")){ QJsonDocument jDoc = Helper::streamData(fi.absoluteFilePath()); QJsonObject jObj = jDoc.object(); QJsonValue durationV = jObj["format"].toObject()["duration"]; @@ -186,9 +191,17 @@ void FSWidget::gatherData(const QString &curDir){ QStandardItem *item = new QStandardItem; item->setFont(f); item->setEditable(false); + item->setForeground(blackBrush); items << item; } items[0]->setText(fi.fileName()); + if(mimeName.startsWith("video")){ + items[0]->setIcon(videoIcon); + }else if(mimeName.startsWith("image")){ + items[0]->setIcon(imageIcon); + }else{ + items[0]->setIcon(otherIcon); + } items[1]->setText(mimeType.name()); items[2]->setText(size); items[2]->setTextAlignment(Qt::AlignRight); @@ -432,4 +432,22 @@ namespace Helper { return retval; } + const QIcon icon(const QColor &bg, const QChar c, bool bold){ + QImage img(32, 32, QImage::Format_ARGB32); + img.fill(QColor(0, 0, 0, 0)); + QPainter *p = new QPainter(&img); + p->setBrush(bg); + p->setRenderHint(QPainter::Antialiasing); + p->setRenderHint(QPainter::TextAntialiasing); + p->setRenderHint(QPainter::SmoothPixmapTransform); + QFont f("courier new"); + f.setPixelSize(30); + f.setBold(bold); + p->setPen(Qt::white); + p->drawEllipse(img.rect()); + p->setFont(f); + p->drawText(img.rect(), Qt::AlignCenter, c); + delete p; + return QIcon(QPixmap::fromImage(img)); + } } @@ -50,6 +50,7 @@ namespace Helper { QImage snapshot(const QString &path, int where); QVariant picSize(const QString &path); PicData convertArchivefileToPng(PicData data); + const QIcon icon(const QColor &bg, const QChar c, bool bold = true); class Duration { public: Duration(); |