Support for color schemes
[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 "../interfaces/daynightmode.h"
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/daynightmode", SystemDayNight::DAYNIGHTMODE_DAY).toInt()) +
51                           ".ini",
52                           QSettings::IniFormat);
53
54     mp_ui->widget->setStyleSheet(settings_cs.value(QString("StatusBarWidget/widget")).toString());
55     mp_ui->label_1->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_1")).toString());
56     mp_ui->label_2->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_2")).toString());
57     mp_ui->label_3->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_3")).toString());
58     mp_ui->label_4->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_4")).toString());
59     mp_ui->label_5->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_5")).toString());
60
61     mp_ui->label_1_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_1_icon")).toString()
62                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(1) + QString(") 0 0 0 0 stretch stretch;"));
63     mp_ui->label_2_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_2_icon")).toString()
64                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(2) + QString(") 0 0 0 0 stretch stretch;"));
65     mp_ui->label_3_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_3_icon")).toString()
66                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(3) + QString(") 0 0 0 0 stretch stretch;"));
67     mp_ui->label_4_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_4_icon")).toString()
68                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(4) + QString(") 0 0 0 0 stretch stretch;"));
69     mp_ui->label_5_icon->setStyleSheet(settings_cs.value(QString("StatusBarWidget/label_5_icon")).toString()
70                                        + QString(" border-image: url(") + mp_statusbarIconURIs->value(5) + QString(") 0 0 0 0 stretch stretch;"));
71 }
72
73 QList<int> StatusBarWidget::getAvailablePlaceholders()
74 {
75     QList<int> result;
76
77     // for now, all are available
78     result.append(1);
79     result.append(2);
80     result.append(3);
81     result.append(4);
82     result.append(5);
83
84     return result;
85 }
86
87 QString StatusBarWidget::getStatusIcon(int placeholderIndex)
88 {
89     return mp_statusbarIconURIs->value(placeholderIndex);
90 }
91
92 QString StatusBarWidget::getStatusText(int placeholderIndex)
93 {
94     QString result = "";
95
96     switch (placeholderIndex)
97     {
98     case 1:
99         result = mp_ui->label_1->text();
100         break;
101     case 2:
102         result = mp_ui->label_2->text();
103         break;
104     case 3:
105         result = mp_ui->label_3->text();
106         break;
107     case 4:
108         result = mp_ui->label_4->text();
109         break;
110     case 5:
111         result = mp_ui->label_5->text();
112         break;
113     default:
114         break;
115     }
116
117     return result;
118 }
119
120 void StatusBarWidget::setStatusIcon(int placeholderIndex, const QString &iconURI)
121 {
122     mp_statusbarIconURIs->insert(placeholderIndex, iconURI);
123
124     updateColorScheme();
125 }
126
127 void StatusBarWidget::setStatusText(int placeholderIndex, const QString &text)
128 {
129     switch (placeholderIndex)
130     {
131     case 1:
132         mp_ui->label_1->setText(text);
133         break;
134     case 2:
135         mp_ui->label_2->setText(text);
136         break;
137     case 3:
138         mp_ui->label_3->setText(text);
139         break;
140     case 4:
141         mp_ui->label_4->setText(text);
142         break;
143     case 5:
144         mp_ui->label_5->setText(text);
145         break;
146     default:
147         break;
148     }
149 }