diff options
author | Bocklage, Jens <Jens_Bocklage@mentor.com> | 2016-06-24 16:19:10 +0200 |
---|---|---|
committer | Bocklage, Jens <Jens_Bocklage@mentor.com> | 2016-06-24 16:19:10 +0200 |
commit | ca3605ea664834acdf712e691be8f0358b1c6b6f (patch) | |
tree | 58b60fe19816136209a4a7302ed6d44e733fcc37 /HomeScreenSimulator/src/mainwindow.cpp | |
parent | ff25a2a06428ffb0d6d8aeddb5faaa301b4201fe (diff) |
v0.1.0
06/24/2016
- reworked status bar
- reviewed D-Bus interfaces, now using signals instead of methods for day/night mode
- created new home screen simulator app
- license changed to Apache 2.0
- put D-Bus introspections in one central place
- disabled "only one instance allowed" for development
Diffstat (limited to 'HomeScreenSimulator/src/mainwindow.cpp')
-rw-r--r-- | HomeScreenSimulator/src/mainwindow.cpp | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/HomeScreenSimulator/src/mainwindow.cpp b/HomeScreenSimulator/src/mainwindow.cpp new file mode 100644 index 0000000..ffc5170 --- /dev/null +++ b/HomeScreenSimulator/src/mainwindow.cpp @@ -0,0 +1,146 @@ +/* + * 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_dBusDayNightModeAdapter(0), + mp_dBusStatusBarProxy(0), + mp_dBusPopupProxy(0) +{ + mp_ui->setupUi(this); + + // dbus setup + QDBusConnection dbus = QDBusConnection::sessionBus(); + + // publish dbus day night mode interface + mp_dBusDayNightModeAdapter = new DaynightmodeAdaptor((QObject*)this); + + dbus.registerService("org.agl.homescreen.simulator"); + dbus.registerObject("/", this); + + mp_dBusStatusBarProxy = new org::agl::statusbar("org.agl.homescreen", + "/StatusBar", + QDBusConnection::sessionBus(), + 0); + mp_dBusPopupProxy = new org::agl::popup("org.agl.homescreen", + "/Popup", + QDBusConnection::sessionBus(), + 0); + QSettings settings; + this->move(settings.value("homescreensimulator/pos").toPoint()); + mp_ui->radioButton_DayMode->setChecked(settings.value("homescreensimulator/daymode", true).toBool()); // if nothing is stored, use "true" + mp_ui->radioButton_NightMode->setChecked(settings.value("homescreensimulator/nightmode", false).toBool()); // if nothing is stored, use "false" +} + +MainWindow::~MainWindow() +{ + QSettings settings; + settings.setValue("homescreensimulator/pos", this->pos()); + settings.setValue("homescreensimulator/daymode", mp_ui->radioButton_DayMode->isChecked()); + settings.setValue("homescreensimulator/nightmode", mp_ui->radioButton_NightMode->isChecked()); + + delete mp_dBusPopupProxy; + delete mp_dBusStatusBarProxy; + + if (0 == mp_dBusDayNightModeAdapter) + { + delete mp_dBusDayNightModeAdapter; + } + delete mp_ui; +} + +void MainWindow::on_radioButton_DayMode_toggled(bool checked) +{ + if (checked) + { + emit(dayNightMode(SystemDayNight::DAYNIGHTMODE_DAY)); + } +} + +void MainWindow::on_radioButton_NightMode_toggled(bool checked) +{ + if (checked) + { + emit(dayNightMode(SystemDayNight::DAYNIGHTMODE_NIGHT)); + } +} + +void MainWindow::on_pushButton_Update_clicked() +{ + QList<int> availablePlaceholders = mp_dBusStatusBarProxy->getAvailablePlaceholders(); + mp_ui->tableWidget_Status->verticalHeader()->setVisible(false); + mp_ui->tableWidget_Status->clear(); + mp_ui->tableWidget_Status->setRowCount(availablePlaceholders.size()); + mp_ui->tableWidget_Status->setColumnCount(3); + + QList<QString> horizontalHeaderLabels; + horizontalHeaderLabels.append("Placeholder #"); + horizontalHeaderLabels.append("Text"); + horizontalHeaderLabels.append("iconURI"); + mp_ui->tableWidget_Status->setHorizontalHeaderLabels(horizontalHeaderLabels); + + // disable trigger for the update + mp_ui->tableWidget_Status->blockSignals(true); + + for (int i = 0; i < availablePlaceholders.size(); ++i) + { + mp_ui->tableWidget_Status->setItem(i, 0, new QTableWidgetItem(QString::number(availablePlaceholders[i]))); + mp_ui->tableWidget_Status->item(i, 0)->setFlags(Qt::ItemIsSelectable); + mp_ui->tableWidget_Status->setItem(i, 1, new QTableWidgetItem(mp_dBusStatusBarProxy->getStatusText(availablePlaceholders[i]))); + mp_ui->tableWidget_Status->setItem(i, 2, new QTableWidgetItem(mp_dBusStatusBarProxy->getStatusIcon(availablePlaceholders[i]))); + } + + // enable trigger again + mp_ui->tableWidget_Status->blockSignals(false); +} + +void MainWindow::on_pushButton_Exit_clicked() +{ + QApplication::exit(); +} + +void MainWindow::on_tableWidget_Status_cellChanged(int row, int column) +{ + // text + if (1 == column) + { + mp_dBusStatusBarProxy->setStatusText(mp_ui->tableWidget_Status->item(row, 0)->text().toInt(), mp_ui->tableWidget_Status->item(row, 1)->text()); + } + + // icon + if (2 == column) + { + mp_dBusStatusBarProxy->setStatusIcon(mp_ui->tableWidget_Status->item(row, 0)->text().toInt(), mp_ui->tableWidget_Status->item(row, 2)->text()); + } +} + +void MainWindow::on_pushButton_Send_clicked() +{ + mp_dBusPopupProxy->showPopup(0, mp_ui->plainTextEdit_Popup->toPlainText()); +} + +void MainWindow::on_pushButton_IconExample_clicked() +{ + on_pushButton_Update_clicked(); + + // THIS IS JUST AN EXAMPLE!!! It only works, because the alias for the pic is defined in the + // Home Screen app resources... + mp_ui->tableWidget_Status->setItem(0, 2, new QTableWidgetItem(":/icons/home_day.png")); +} |