aboutsummaryrefslogtreecommitdiffstats
path: root/src/mainwindow.cpp
blob: 40189b3e4a6b2e88424e0bf9fa50177443cce764 (plain)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*
 * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    mp_ui(new Ui::MainWindow),
    mp_statusBarWidget(0),
    mp_dBusDayNightMode_StatusBarWidget(0),
    mp_controlBarWidget(0),
    mp_dBusDayNightMode_ControlBarWidget(0),
    m_dayNightMode(SystemDayNight::DAYNIGHTMODE_DAY), // TODO: read from system
    mp_daynightmodeAdaptor(0),
    mp_popupAdaptor(0),
    mp_dBusPopup(0),
    mp_popupWidget(0)
{
    // dbus setup
    QDBusConnection dbus = QDBusConnection::sessionBus();

    // publish dbus day night mode interface
    mp_daynightmodeAdaptor = new DaynightmodeAdaptor((QObject*)this);
    // publish dbus popup interface
    mp_popupAdaptor = new PopupAdaptor((QObject*)this);

    dbus.registerObject("/MainWindow", this);
    dbus.registerService("org.agl.mainwindow");

    // no window decoration
    setWindowFlags(Qt::FramelessWindowHint);
    mp_ui->setupUi(this);

    mp_statusBarWidget = new StatusBarWidget(this);
    mp_statusBarWidget->raise();
    // apply layout
    mp_statusBarWidget->setGeometry(0, 0, 800, 60);
    // connect to the dBus interface provided by the status bar widget
    mp_dBusDayNightMode_StatusBarWidget = new org::agl::daynightmode("org.agl.mainwindow",
                                              "/StatusBarWidget",
                                              QDBusConnection::sessionBus(),
                                              0);

    mp_controlBarWidget = new ControlBarWidget(this);
    mp_controlBarWidget->raise();
    // apply layout
    mp_controlBarWidget->setGeometry(0, 540, 800, 60);
    // connect to the dBus interface provided by the control bar widget
    mp_dBusDayNightMode_ControlBarWidget = new org::agl::daynightmode("org.agl.mainwindow",
                                              "/ControlBarWidget",
                                              QDBusConnection::sessionBus(),
                                              0);
}

MainWindow::~MainWindow()
{
    delete mp_dBusDayNightMode_ControlBarWidget;
    delete mp_dBusDayNightMode_StatusBarWidget;

    if (0 == mp_dBusPopup)
    {
        delete mp_dBusPopup;
    }
    if (0 != mp_popupWidget)
    {
        delete mp_popupWidget;
    }



    delete mp_popupAdaptor;
    delete mp_daynightmodeAdaptor;
    delete mp_statusBarWidget;
    delete mp_ui;
}

void MainWindow::setDayNightMode(int mode)
{
    switch (mode)
    {
    case SystemDayNight::DAYNIGHTMODE_DAY:
        m_dayNightMode = SystemDayNight::DAYNIGHTMODE_DAY;
        mp_ui->widget_Background->setStyleSheet(QString("background-image: url(:/images/backgrounds/bg_blue_day.png)"));
        // home icon
        mp_ui->widget_Home_Icon->setStyleSheet(QString("border-image: url(:/icons/home_day.png) 0 0 0 0 stretch stretch;"));

        break;
    case SystemDayNight::DAYNIGHTMODE_NIGHT:
        m_dayNightMode = SystemDayNight::DAYNIGHTMODE_NIGHT;
        mp_ui->widget_Background->setStyleSheet(QString("background-image: url(:/images/backgrounds/bg_blue_night.png)"));
        // home icon
        mp_ui->widget_Home_Icon->setStyleSheet(QString("border-image: url(:/icons/home_night.png) 0 0 0 0 stretch stretch;"));

        break;
    default:
        m_dayNightMode = SystemDayNight::DAYNIGHTMODE_UNDEFINED;
    }

    mp_dBusDayNightMode_StatusBarWidget->setDayNightMode(m_dayNightMode);
    mp_dBusDayNightMode_ControlBarWidget->setDayNightMode(m_dayNightMode);
}

void MainWindow::showPopup(int type, const QString &text)
{
    if (0 == mp_popupWidget)
    {
        qDebug("0 == mp_popupWidget");
        mp_popupWidget = new PopupWidget(this);
    }

    mp_popupWidget->move(0, 0);
    mp_popupWidget->show();

    if (0 == mp_dBusPopup)
    {
        qDebug("0 == mp_dBusPopup");
        // connect to the dBus interface provided by the popup widget
        mp_dBusPopup = new org::agl::popup("org.agl.mainwindow",
                                                  "/PopupWidget",
                                                  QDBusConnection::sessionBus(),
                                                  0);
    }
    mp_dBusPopup->showPopup(type, text);
}

void MainWindow::changeEvent(QEvent* event)
{
    if (QEvent::LanguageChange == event->type())
    {
        mp_ui->retranslateUi(this);
    }

    QMainWindow::changeEvent(event);
}