diff --git a/chtmldelegate.cpp b/chtmldelegate.cpp
new file mode 100644
index 0000000..1ef2bad
--- /dev/null
+++ b/chtmldelegate.cpp
@@ -0,0 +1,47 @@
+#include "chtmldelegate.h"
+
+#include
+#include
+#include
+
+
+void cHTMLDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
+{
+ QStyleOptionViewItem options = option;
+ initStyleOption(&options, index);
+
+ painter->save();
+
+ QTextDocument doc;
+ doc.setHtml(options.text);
+
+ options.text = "";
+ options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);
+
+ // shift text right to make icon visible
+ QSize iconSize = options.icon.actualSize(options.rect.size());
+ painter->translate(options.rect.left()+iconSize.width(), options.rect.top());
+ QRect clip(0, 0, options.rect.width()+iconSize.width(), options.rect.height());
+
+ //doc.drawContents(painter, clip);
+
+ painter->setClipRect(clip);
+ QAbstractTextDocumentLayout::PaintContext ctx;
+ // set text color to red for selected item
+ if (option.state & QStyle::State_Selected)
+ ctx.palette.setColor(QPalette::Text, QColor("red"));
+ ctx.clip = clip;
+ doc.documentLayout()->draw(painter, ctx);
+
+ painter->restore();
+}
+QSize cHTMLDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
+{
+ QStyleOptionViewItem options = option;
+ initStyleOption(&options, index);
+
+ QTextDocument doc;
+ doc.setHtml(options.text);
+ doc.setTextWidth(options.rect.width());
+ return QSize(static_cast(doc.idealWidth()), static_cast(doc.size().height()));
+}
diff --git a/chtmldelegate.h b/chtmldelegate.h
new file mode 100644
index 0000000..2f1b5a4
--- /dev/null
+++ b/chtmldelegate.h
@@ -0,0 +1,15 @@
+#ifndef CHTMLDELEGATE_H
+#define CHTMLDELEGATE_H
+
+
+#include
+
+
+class cHTMLDelegate : public QStyledItemDelegate
+{
+protected:
+ void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
+ QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const;
+};
+
+#endif // CHTMLDELEGATE_H
diff --git a/cmainwindow.cpp b/cmainwindow.cpp
index d40c869..e783555 100644
--- a/cmainwindow.cpp
+++ b/cmainwindow.cpp
@@ -16,6 +16,8 @@
#include "cimage.h"
#include "cimageviewer.h"
+#include "cstyleddelegate.h"
+
#include "ui_cmainwindow.h"
#include
@@ -100,6 +102,8 @@ void cMainWindow::initUI()
{
ui->setupUi(this);
+ ui->m_lpFolderView->setItemDelegate(new cStyledDelegate);
+
QIcon::setThemeName("TangoMFK");
ui->m_lpFilter->setTitle(tr("Filter"));
diff --git a/common.cpp b/common.cpp
index 661ac33..165c709 100644
--- a/common.cpp
+++ b/common.cpp
@@ -11,6 +11,7 @@
#include "common.h"
#include "ccopier.h"
+#include "cstyleddelegate.h"
#include
#include
@@ -120,8 +121,33 @@ QStandardItem* insertPath(QString szPath, QStandardItem* lpRootItem)
for(;path < szPathList.count();path++)
{
szPath1.append(szPathList[path]);
+
QStandardItem* lpNewItem = new QStandardItem(szPathList[path]);
+
+ switch(path)
+ {
+ case 0:
+ lpNewItem->setData(QVariant::fromValue(true), STYLEDDELEGATE_BOLD);
+ lpNewItem->setData(QVariant::fromValue(false), STYLEDDELEGATE_ITALIC);
+ break;
+ case 1:
+ lpNewItem->setData(QVariant::fromValue(false), STYLEDDELEGATE_BOLD);
+ lpNewItem->setData(QVariant::fromValue(false), STYLEDDELEGATE_ITALIC);
+ break;
+ case 2:
+ lpNewItem->setData(QVariant::fromValue(false), STYLEDDELEGATE_BOLD);
+ lpNewItem->setData(QVariant::fromValue(true), STYLEDDELEGATE_ITALIC);
+ lpNewItem->setData(QVariant::fromValue(QColor(Qt::gray)), STYLEDDELEGATE_COLOR);
+ break;
+ case 3:
+ lpNewItem->setData(QVariant::fromValue(false), STYLEDDELEGATE_BOLD);
+ lpNewItem->setData(QVariant::fromValue(false), STYLEDDELEGATE_ITALIC);
+ lpNewItem->setData(QVariant::fromValue(QColor(Qt::blue)), STYLEDDELEGATE_COLOR);
+ break;
+ }
+
lpCurRoot->appendRow(lpNewItem);
+
lpNewItem->setData(QVariant::fromValue(szPath1), Qt::UserRole+1);
szPath1.append("/");
diff --git a/cstyleddelegate.cpp b/cstyleddelegate.cpp
new file mode 100644
index 0000000..d28613e
--- /dev/null
+++ b/cstyleddelegate.cpp
@@ -0,0 +1,36 @@
+#include "cstyleddelegate.h"
+
+#include
+#include
+#include
+
+#include
+
+
+void cStyledDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
+{
+ QStyleOptionViewItem options = option;
+ initStyleOption(&options, index);
+
+ bool bBold = index.data(STYLEDDELEGATE_BOLD).toBool();
+ bool bItalic = index.data(STYLEDDELEGATE_ITALIC).toBool();
+ QColor color = index.data(STYLEDDELEGATE_COLOR).value();
+
+ options.font.setBold(bBold);
+ options.font.setItalic(bItalic);
+ if(color.isValid())
+ options.palette.setColor(QPalette::Text, color);
+
+ QStyledItemDelegate::paint(painter, options, index);
+}
+
+//QSize cStyledDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
+//{
+// QStyleOptionViewItem options = option;
+// initStyleOption(&options, index);
+
+// QTextDocument doc;
+// doc.setHtml(options.text);
+// doc.setTextWidth(options.rect.width());
+// return QSize(static_cast(doc.idealWidth()), static_cast(doc.size().height()));
+//}
diff --git a/cstyleddelegate.h b/cstyleddelegate.h
new file mode 100644
index 0000000..19b5062
--- /dev/null
+++ b/cstyleddelegate.h
@@ -0,0 +1,20 @@
+#ifndef CSTYLEDDELEGATE_H
+#define CSTYLEDDELEGATE_H
+
+
+#include
+
+
+#define STYLEDDELEGATE_BOLD (Qt::UserRole+10)
+#define STYLEDDELEGATE_ITALIC (Qt::UserRole+11)
+#define STYLEDDELEGATE_COLOR (Qt::UserRole+12)
+
+
+class cStyledDelegate : public QStyledItemDelegate
+{
+protected:
+ void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
+// QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const;
+};
+
+#endif // CSTYLEDDELEGATE_H
diff --git a/pictureLibrary.pro b/pictureLibrary.pro
index f34f36c..eb2f4e6 100644
--- a/pictureLibrary.pro
+++ b/pictureLibrary.pro
@@ -79,7 +79,9 @@ SOURCES += \
ctoolboxtag.cpp \
cspoiler.cpp \
cfilterpanel.cpp \
- cexportdialog.cpp
+ cexportdialog.cpp \
+ chtmldelegate.cpp \
+ cstyleddelegate.cpp
HEADERS += \
cmainwindow.h \
@@ -107,7 +109,9 @@ HEADERS += \
ctoolboxtag.h \
cspoiler.h \
cfilterpanel.h \
- cexportdialog.h
+ cexportdialog.h \
+ chtmldelegate.h \
+ cstyleddelegate.h
FORMS += \
cmainwindow.ui \