-
Notifications
You must be signed in to change notification settings - Fork 0
/
browsericon.cpp
36 lines (30 loc) · 925 Bytes
/
browsericon.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "browsericon.hpp"
#include "iconsize.hpp"
#include <QFile>
#include <QTextStream>
#include <QRegExp>
#include <QObject>
BrowserIcon::BrowserIcon(QFileInfo f, QString url, QWidget *parent) :
QPushButton(QIcon::fromTheme(f.baseName()), "", parent) {
setIconSize(QSize(ICONSIZE, ICONSIZE));
setFixedSize(QSize(ICONSIZE,ICONSIZE));
exec = findExec(f, url);
}
QString findExec(QFileInfo fi, QString path) {
QFile f(fi.absoluteFilePath());
QRegExp strip("exec=", Qt::CaseInsensitive);
QRegExp search("exec=*", Qt::CaseInsensitive, QRegExp::Wildcard);
QRegExp replace("%u", Qt::CaseInsensitive);
if (!f.open(QIODevice::ReadOnly | QIODevice::Text))
return "";
QTextStream in(&f);
while (!in.atEnd()) {
QString line = in.readLine();
if (search.exactMatch(line)) {
line.remove(strip);
line.replace(replace, path);
return line;
}
}
return "";
}