6097f8d86ccc79548b8b91d7f06c3561200ddc79
[staging/HomeScreen.git] / HomeScreen / src / statusbarwidget.cpp
1 /*
2  * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "statusbarwidget.h"
18 #include "ui_statusbarwidget.h"
19 #include <include/daynightmode.hpp>
20
21 StatusBarWidget::StatusBarWidget(QWidget *parent) :
22     QWidget(parent),
23     mp_ui(new Ui::StatusBarWidget),
24     mp_statusbarAdaptor(0),
25     mp_statusbarIconURIs(new QMap<int, QString>)
26 {
27     // publish statusbar interface
28     mp_statusbarAdaptor = new StatusbarAdaptor((QObject*)this);
29
30     QDBusConnection dbus = QDBusConnection::sessionBus();
31     dbus.registerObject("/StatusBar", this);
32     dbus.registerService("org.agl.homescreen");
33
34     mp_ui->setupUi(this);
35 }
36
37 StatusBarWidget::~StatusBarWidget()
38 {
39     delete mp_statusbarAdaptor;
40     delete mp_ui;
41 }
42
43 void StatusBarWidget::updateColorScheme()
44 {
45     QSettings settings;
46     QSettings settings_cs(QApplication::applicationDirPath() +
47                           "/colorschemes/" +
48                           settings.value("systemsettings/colorscheme", "default").toString() +
49                           "/" +
50                           QString::number(settings.value("systemsettings/proximityobjectdetected", false).toBool()) +
51                           "/" +
52                           QString::number(settings.value("systemsettings/daynightmode", SystemDayNight::DAYNIGHTMODE_DAY).toInt()) +
53                           ".ini",
54                           QSettings::IniFormat);
55
56     mp_ui->widget_background->setStyleSheet(settings_cs.value(QString("StatusBarWidget/widget_background_css")).toString());
57     mp_ui->label_1->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_1_css")).toString());
58     mp_ui->label_2->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_2_css")).toString());
59     mp_ui->label_3->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_3_css")).toString());
60     mp_ui->label_4->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_4_css")).toString());
61     mp_ui->label_5->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_5_css")).toString());
62
63     mp_ui->label_1_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_1_icon_css")).toString()
64                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(1) + QString(") 0 0 0 0 stretch stretch;"));
65     mp_ui->label_2_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_2_icon_css")).toString()
66                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(2) + QString(") 0 0 0 0 stretch stretch;"));
67     mp_ui->label_3_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_3_icon_css")).toString()
68                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(3) + QString(") 0 0 0 0 stretch stretch;"));
69     mp_ui->label_4_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_4_icon_css")).toString()
70                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(4) + QString(") 0 0 0 0 stretch stretch;"));
71     mp_ui->label_5_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_5_icon_css")).toString()
72                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(5) + QString(") 0 0 0 0 stretch stretch;"));
73 }
74
75 QList<int> StatusBarWidget::getAvailablePlaceholders()
76 {
77     QList<int> result;
78
79     // for now, all are available
80     result.append(1);
81     result.append(2);
82     result.append(3);
83     result.append(4);
84     result.append(5);
85
86     return result;
87 }
88
89 QString StatusBarWidget::getStatusIcon(int placeholderIndex)
90 {
91     return mp_statusbarIconURIs->value(placeholderIndex);
92 }
93
94 QString StatusBarWidget::getStatusText(int placeholderIndex)
95 {
96     QString result = "";
97
98     switch (placeholderIndex)
99     {
100     case 1:
101         result = mp_ui->label_1->text();
102         break;
103     case 2:
104         result = mp_ui->label_2->text();
105         break;
106     case 3:
107         result = mp_ui->label_3->text();
108         break;
109     case 4:
110         result = mp_ui->label_4->text();
111         break;
112     case 5:
113         result = mp_ui->label_5->text();
114         break;
115     default:
116         break;
117     }
118
119     return result;
120 }
121
122 void StatusBarWidget::setStatusIcon(int placeholderIndex, const QString &iconURI)
123 {
124     mp_statusbarIconURIs->insert(placeholderIndex, iconURI);
125
126     updateColorScheme();
127 }
128
129 void StatusBarWidget::setStatusText(int placeholderIndex, const QString &text)
130 {
131     switch (placeholderIndex)
132     {
133     case 1:
134         mp_ui->label_1->setText(text);
135         break;
136     case 2:
137         mp_ui->label_2->setText(text);
138         break;
139     case 3:
140         mp_ui->label_3->setText(text);
141         break;
142     case 4:
143         mp_ui->label_4->setText(text);
144         break;
145     case 5:
146         mp_ui->label_5->setText(text);
147         break;
148     default:
149         break;
150     }
151 }