Unity 8
indicatorsclient.cpp
1 /*
2  * Copyright 2013 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authors:
17  * Renato Araujo Oliveira Filho <renato@canonical.com>
18  * Nick Dedekind <nick.dedekind@canonical.com>
19  */
20 
21 #include "indicatorsclient.h"
22 
23 #include <paths.h>
24 
25 #include <QQuickView>
26 #include <QQmlContext>
27 #include <QQmlEngine>
28 #include <QDebug>
29 
30 IndicatorsClient::IndicatorsClient(int &argc, char **argv)
31  : QObject(0),
32  m_view(0)
33 {
34  m_application = new QApplication(argc, argv);
35 
36  QStringList args = m_application->arguments();
37 
38  m_view = new QQuickView;
39  m_view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory() + "/Panel/Indicators/client/"));
40  prependImportPaths(m_view->engine(), ::overrideImportPaths());
41  appendImportPaths(m_view->engine(), ::fallbackImportPaths());
42 
43  QString profile = QStringLiteral("phone");
44  if (args.contains(QStringLiteral("-profile")) && args.size() > args.indexOf(QStringLiteral("-profile")) + 1) {
45  profile = args.at(args.indexOf(QStringLiteral("-profile")) + 1);
46  }
47  m_view->rootContext()->setContextProperty(QStringLiteral("indicatorProfile"), profile);
48 
49  m_view->setSource(QUrl(QStringLiteral("IndicatorsClient.qml")));
50  m_view->setResizeMode(QQuickView::SizeRootObjectToView);
51  if (args.contains(QStringLiteral("-windowgeometry")) && args.size() > args.indexOf(QStringLiteral("-windowgeometry")) + 1) {
52  QStringList geometryArg = args.at(args.indexOf(QStringLiteral("-windowgeometry")) + 1).split('x');
53  if (geometryArg.size() == 2) {
54  m_view->resize(geometryArg.at(0).toInt(), geometryArg.at(1).toInt());
55  }
56  }
57  else {
58  //Usable size on desktop
59  m_view->setMinimumSize(QSize(480, 720));
60  }
61 }
62 
63 IndicatorsClient::~IndicatorsClient()
64 {
65  if (m_view != 0) {
66  delete m_view;
67  }
68 
69  delete m_application;
70 }
71 
72 void IndicatorsClient::setupUI()
73 {
74 
75 }
76 
77 int IndicatorsClient::run()
78 {
79  m_view->show();
80  return m_application->exec();
81 }