Skip to content

Commit 93d7fc6

Browse files
committed
FindIcon implementation
1 parent 868285a commit 93d7fc6

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#ifndef RUNASGPU_ICONFINDER_HPP
2+
#define RUNASGPU_ICONFINDER_HPP
3+
4+
#include <QIcon>
5+
#include <QString>
6+
7+
QIcon FindIcon(const QString& iconName);
8+
9+
#endif //RUNASGPU_ICONFINDER_HPP

Sources/AppGUI/UI/MainWindow.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <RunAsGPU/Shared/GraphicalUnit.hpp>
77
#include <RunAsGPU/Shared/Runner.hpp>
8+
#include <IconFinder.hpp>
89

910
#include "Model/AppListModel.hpp"
1011
#include "Model/AppListDelegate.hpp"
@@ -106,9 +107,9 @@ void Ui_MainWindow::performLogic() const {
106107
appList->setFocusPolicy(Qt::StrongFocus);
107108

108109
model->addItem(Application("Blender", "3D modeling software", "/usr/bin/blender",
109-
QIcon("/home/bc100dev/.local/share/icons/kora/apps/scalable/blender.svg")));
110+
FindIcon("blender")));
110111
model->addItem(Application("Firefox", "Mozilla Firefox", "/usr/bin/firefox",
111-
QIcon("/home/bc100dev/.local/share/icons/kora/apps/scalable/firefox.svg")));
112+
FindIcon("firefox")));
112113

113114
QObject::connect(appList->selectionModel(), &QItemSelectionModel::currentChanged,
114115
[&](const QModelIndex &current, const QModelIndex &) {
@@ -128,9 +129,6 @@ void Ui_MainWindow::performLogic() const {
128129
// "Add Application" button logic
129130
QObject::connect(btnApplicationAdd, &QPushButton::clicked, [&]() {
130131
// TODO: show app selection dialog
131-
model->addItem(
132-
Application(QString("Terminator"), QString("Nice looking Terminal"), QString("/usr/bin/terminator"),
133-
QIcon("/usr/share/icons/HighContrast/16x16/apps/terminator.png")));
134132
});
135133

136134
// "Run Application" button logic
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include <IconFinder.hpp>
2+
#include <QFileInfo>
3+
4+
QIcon FindIcon(const QString& name) {
5+
QIcon icon = QIcon::fromTheme(name);
6+
if (!icon.isNull())
7+
return icon;
8+
9+
QStringList iconPaths = {
10+
"/usr/share/icons/hicolor/48x48/apps/" + name + ".png",
11+
"/usr/share/icons/hicolor/128x128/apps/" + name + ".png",
12+
"/usr/share/icons/hicolor/scalable/apps/" + name + ".svg",
13+
"/usr/share/pixmaps/" + name + ".png"
14+
};
15+
16+
for (const QString& iconPath : iconPaths) {
17+
if (QFileInfo::exists(iconPath))
18+
return QIcon(iconPath);
19+
}
20+
21+
return QIcon::fromTheme("application-x-executable");
22+
}

0 commit comments

Comments
 (0)