#
#
# patch "res/forms/workspace_floater.ui"
# from [fcc18234e572f930fe1da8a69c86657da94c34e8]
# to [165989f017be406ba809198e0a3f08a7e5ebed5f]
#
# patch "src/util/IconProvider.cpp"
# from [2a1d882189b0e4a1b047fbf5c2d7cf5ab36e99b1]
# to [1ac69c33c4dcd6da77d0411c5ee3cf3688a41a43]
#
============================================================
--- res/forms/workspace_floater.ui fcc18234e572f930fe1da8a69c86657da94c34e8
+++ res/forms/workspace_floater.ui 165989f017be406ba809198e0a3f08a7e5ebed5f
@@ -5,8 +5,8 @@
0
0
- 340
- 530
+ 448
+ 684
@@ -14,17 +14,14 @@
-
-
-
-
- 0
- 0
-
+
+
+ QFrame::Panel
-
-
+
+ QFrame::Sunken
-
+
-
-
============================================================
--- src/util/IconProvider.cpp 2a1d882189b0e4a1b047fbf5c2d7cf5ab36e99b1
+++ src/util/IconProvider.cpp 1ac69c33c4dcd6da77d0411c5ee3cf3688a41a43
@@ -38,14 +38,21 @@ IconProvider::IconProvider()
IconProvider::IconProvider()
{
- QStyle *style = QApplication::style();
+ QStyle * style = QApplication::style();
+ int iconSize = style->pixelMetric(QStyle::PM_ListViewIconSize);
// default icons if no state matches
- fileIcons["default"] = QIcon(style->standardPixmap(QStyle::SP_FileIcon));
- folderIcons["default"] = QIcon(style->standardPixmap(QStyle::SP_DirClosedIcon));
- folderIcons["default"].addPixmap(style->standardPixmap(QStyle::SP_DirOpenIcon),
- QIcon::Active, QIcon::On);
+ fileIcons["default"] = QIcon(style->standardIcon(QStyle::SP_FileIcon));
+ folderIcons["default"] = QIcon(style->standardIcon(QStyle::SP_DirClosedIcon));
+
+ folderIcons["default"].addPixmap(
+ style->standardIcon(QStyle::SP_DirOpenIcon).pixmap(iconSize),
+ QIcon::Active, QIcon::On
+ );
+
+ folderIcons["cdup"] = QIcon(style->standardIcon(QStyle::SP_FileDialogToParent));
+
// node overlay states
QMap states;
states["added"] = QString(":/overlays/added.png");
@@ -59,10 +66,12 @@ IconProvider::IconProvider()
states["renamed"] = QString(":/overlays/renamed.png");
states["unknown"] = QString(":/overlays/unknown.png");
- // special overlay states
- states["cdup"] = QString(":/overlays/cdup.png");
+ // FIXME: remove this
+ //states["cdup"] = QString(":/overlays/cdup.png");
QMapIterator i(states);
+ Qt::AspectRatioMode ratio = Qt::KeepAspectRatio;
+ Qt::TransformationMode transform = Qt::SmoothTransformation;
while (i.hasNext())
{
@@ -72,41 +81,63 @@ IconProvider::IconProvider()
// the basic icons have to be recreated for each state
// since we later paint on them
- QImage fileImage(style->standardPixmap(QStyle::SP_FileIcon).toImage());
- QImage folderImageClosed(style->standardPixmap(QStyle::SP_DirClosedIcon).toImage());
- QImage folderImageOpened(style->standardPixmap(QStyle::SP_DirOpenIcon).toImage());
+ QImage fileImage(
+ fileIcons["default"].
+ pixmap(iconSize).
+ toImage()
+ );
+ QImage folderImageClosed(
+ folderIcons["default"].
+ pixmap(iconSize, QIcon::Normal, QIcon::Off).
+ toImage()
+ );
+ QImage folderImageOpened(
+ folderIcons["default"].
+ pixmap(iconSize, QIcon::Normal, QIcon::On).
+ toImage()
+ );
// note: the overlays are scaled to fit the different icon sizes
// on different platforms / with different stylings, so the overlay
// always perfectly fits the actual image
+ //
// file icon
+ //
QPainter filePainter(&fileImage);
if (i.key() == "ignored")
+ {
filePainter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
+ }
filePainter.drawImage(
- 0, 0,
- overlay.scaled(fileImage.width(), fileImage.height())
+ 0, 0, overlay.scaled(fileImage.size(), ratio, transform)
);
filePainter.end();
fileIcons[i.key()] = QIcon(QPixmap::fromImage(fileImage));
+ //
// folder icons
+ //
QPainter folderPainter1(&folderImageClosed);
if (i.key() == "ignored")
+ {
folderPainter1.setCompositionMode(QPainter::CompositionMode_SourceAtop);
+ }
+
folderPainter1.drawImage(
- 0, 0,
- overlay.scaled(folderImageClosed.width(), folderImageClosed.height())
+ 0, 0, overlay.scaled(folderImageClosed.size(), ratio, transform)
);
folderPainter1.end();
+
QPainter folderPainter2(&folderImageOpened);
if (i.key() == "ignored")
+ {
folderPainter2.setCompositionMode(QPainter::CompositionMode_SourceAtop);
+ }
+
folderPainter2.drawImage(
- 0, 0,
- overlay.scaled(folderImageOpened.width(), folderImageOpened.height())
+ 0, 0, overlay.scaled(folderImageOpened.size(), ratio, transform)
);
folderPainter2.end();