46
46
Application::Application(const QSharedPointer<SharedWakelock>& sharedWakelock,
47
DesktopFileReader *desktopFileReader,
47
const QSharedPointer<ApplicationInfo>& appInfo,
48
48
const QStringList &arguments,
49
49
ApplicationManager *parent)
50
: ApplicationInfoInterface(desktopFileReader->appId(), parent)
50
: ApplicationInfoInterface(appInfo->appId(), parent)
51
51
, m_sharedWakelock(sharedWakelock)
52
, m_desktopData(desktopFileReader)
54
, m_stage((desktopFileReader->stageHint() == "SideStage") ? Application::SideStage : Application::MainStage)
54
, m_stage(Application::MainStage)
55
55
, m_supportedStages(Application::MainStage|Application::SideStage)
56
56
, m_state(InternalState::Starting)
57
57
, m_arguments(arguments)
66
66
// Because m_state is InternalState::Starting
69
// FIXME(greyback) need to save long appId internally until ubuntu-app-launch can hide it from us
70
m_longAppId = desktopFileReader->file().remove(QRegExp(".desktop$")).split('/').last();
72
m_supportedOrientations = m_desktopData->supportedOrientations();
74
m_rotatesWindowContents = m_desktopData->rotatesWindowContents();
69
m_supportedOrientations = m_appInfo->supportedOrientations();
71
m_rotatesWindowContents = m_appInfo->rotatesWindowContents();
76
73
setStopTimer(new Timer);
131
127
bool Application::isValid() const
133
return m_desktopData->loaded();
136
QString Application::desktopFile() const
138
return m_desktopData->file();
129
return !appId().isEmpty();
141
132
QString Application::appId() const
143
return m_desktopData->appId();
134
return m_appInfo->appId();
146
137
QString Application::name() const
148
return m_desktopData->name();
139
return m_appInfo->name();
151
142
QString Application::comment() const
153
return m_desktopData->comment();
144
return m_appInfo->comment();
156
147
QUrl Application::icon() const
158
QString iconString = m_desktopData->icon();
159
QString pathString = m_desktopData->path();
161
if (QFileInfo(iconString).exists()) {
162
return QUrl(iconString);
163
} else if (QFileInfo(pathString + '/' + iconString).exists()) {
164
return QUrl(pathString + '/' + iconString);
166
return QUrl("image://theme/" + iconString);
149
return m_appInfo->icon();
170
152
QString Application::splashTitle() const
172
return m_desktopData->splashTitle();
154
return m_appInfo->splashTitle();
175
157
QUrl Application::splashImage() const
177
if (m_desktopData->splashImage().isEmpty()) {
180
QFileInfo imageFileInfo(m_desktopData->path(), m_desktopData->splashImage());
181
if (imageFileInfo.exists()) {
182
return QUrl::fromLocalFile(imageFileInfo.canonicalFilePath());
184
qCWarning(QTMIR_APPLICATIONS)
185
<< QString("Application(%1).splashImage file does not exist: \"%2\". Ignoring it.")
186
.arg(appId()).arg(imageFileInfo.absoluteFilePath());
159
return m_appInfo->splashImage();
193
162
QColor Application::colorFromString(const QString &colorString, const char *colorName) const
243
212
bool Application::splashShowHeader() const
245
QString showHeader = m_desktopData->splashShowHeader();
246
if (showHeader.toLower() == "true") {
214
return m_appInfo->splashShowHeader();
253
217
QColor Application::splashColor() const
255
QString colorStr = m_desktopData->splashColor();
219
QString colorStr = m_appInfo->splashColor();
256
220
return colorFromString(colorStr, "splashColor");
259
223
QColor Application::splashColorHeader() const
261
QString colorStr = m_desktopData->splashColorHeader();
225
QString colorStr = m_appInfo->splashColorHeader();
262
226
return colorFromString(colorStr, "splashColorHeader");
265
229
QColor Application::splashColorFooter() const
267
QString colorStr = m_desktopData->splashColorFooter();
231
QString colorStr = m_appInfo->splashColorFooter();
268
232
return colorFromString(colorStr, "splashColorFooter");
271
QString Application::exec() const
273
return m_desktopData->exec();
276
235
Application::Stage Application::stage() const