]> git.sur5r.net Git - minitube/blobdiff - src/iconutils.cpp
2.5.2
[minitube] / src / iconutils.cpp
index 6b0f61ed2ead07235e85f2f22bee8ff3020dd01b..b975411159ff0ef638b3d557c6086363e969c778 100644 (file)
@@ -33,9 +33,9 @@ QIcon IconUtils::fromTheme(const QString &name) {
 QIcon IconUtils::fromResources(const QString &name) {
     QIcon icon = QIcon(QString(":/images/%1.png").arg(name));
     if (!icon.isNull()) {
-        icon.addPixmap(QString(":/images/%1_active.png").arg(name), QIcon::Active);
-        icon.addPixmap(QString(":/images/%1_selected.png").arg(name), QIcon::Selected);
-        icon.addPixmap(QString(":/images/%1_disabled.png").arg(name), QIcon::Disabled);
+        icon.addPixmap(IconUtils::pixmap(QString(":/images/%1_active.png").arg(name)), QIcon::Active);
+        icon.addPixmap(IconUtils::pixmap(QString(":/images/%1_selected.png").arg(name)), QIcon::Selected);
+        icon.addPixmap(IconUtils::pixmap(QString(":/images/%1_disabled.png").arg(name)), QIcon::Disabled);
     }
     return icon;
 }
@@ -110,3 +110,19 @@ void IconUtils::setupAction(QAction *action) {
                              action->shortcut().toString(QKeySequence::NativeText) +
                              ")");
 }
+
+QPixmap IconUtils::pixmap(const QString &name) {
+    // Check if a "@2x" file exists
+    QString fileName = name;
+    if (qApp->devicePixelRatio() > 1.0) {
+        int dotIndex = fileName.lastIndexOf(QLatin1Char('.'));
+        if (dotIndex != -1) {
+            QString at2xfileName = fileName;
+            at2xfileName.insert(dotIndex, QStringLiteral("@2x"));
+            if (QFile::exists(at2xfileName))
+                fileName = at2xfileName;
+        }
+    }
+
+    return QPixmap(fileName);
+}