forked from LibreELEC/usb-sd-creator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
109 lines (92 loc) · 3.12 KB
/
main.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
////////////////////////////////////////////////////////////////////////////////
// This file is part of LibreELEC - http://www.libreelec.tv
// Copyright (C) 2013-2015 RasPlex project
// Copyright (C) 2016 Team LibreELEC
//
// LibreELEC is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// LibreELEC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
////////////////////////////////////////////////////////////////////////////////
#include "creator.h"
#include "version.h"
#ifdef Q_OS_UNIX
#include "privileges_unix.h"
#else
#include "privileges.h"
#endif
#include <QApplication>
#include <QFileInfo>
#include <QDesktopServices>
#include <QProxyStyle>
#include <QNetworkProxy>
#include <QDebug>
// show debug output always
//#define ALWAYS_DEBUG_OUTPUT
#ifdef Q_OS_MAC
class MacFontStyle : public QProxyStyle
{
protected:
void polish(QWidget *w)
{
//QMenu* mn = dynamic_cast<QMenu*>(w);
//if (!mn && !w->testAttribute(Qt::WA_MacNormalSize))
if (!w->testAttribute(Qt::WA_MacNormalSize))
w->setAttribute(Qt::WA_MacSmallSize);
}
};
#endif
void noMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
Q_UNUSED(type);
Q_UNUSED(context);
Q_UNUSED(msg);
}
int main(int argc, char *argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
QString argFile = "";
#ifdef Q_OS_MAC
// prevents the font size from appearing overly large on OSX
app.setStyle(new MacFontStyle);
#endif
#ifndef ALWAYS_DEBUG_OUTPUT
if (app.arguments().contains("--debug") == false)
qInstallMessageHandler(noMessageOutput);
#endif
qDebug() << "App data: Version:" << BUILD_VERSION ", Build date: " BUILD_DATE;
if (app.arguments().contains("--no-proxy") == false) {
QNetworkProxyQuery npq(QUrl("http://releases.libreelec.tv/"));
QList<QNetworkProxy> listOfProxies = QNetworkProxyFactory::systemProxyForQuery(npq);
if (listOfProxies.size()) {
QNetworkProxy::setApplicationProxy(listOfProxies[0]);
qDebug() << "Using" << listOfProxies[0];
}
}
Privileges privileges = Privileges();
privileges.Whoami();
// skip program filename
for (int i=1; i<app.arguments().size(); i++) {
QString file = app.arguments().at(i);
QFileInfo checkFile(file);
if (checkFile.exists() && checkFile.isFile()) {
argFile = file;
break;
}
}
privileges.SetUser();
privileges.Whoami();
Creator win(privileges, 0);
win.setArgFile(argFile);
win.show();
return app.exec();
}