aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/src/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'homescreen/src/mainwindow.cpp')
-rw-r--r--homescreen/src/mainwindow.cpp186
1 files changed, 186 insertions, 0 deletions
diff --git a/homescreen/src/mainwindow.cpp b/homescreen/src/mainwindow.cpp
new file mode 100644
index 0000000..7a0d743
--- /dev/null
+++ b/homescreen/src/mainwindow.cpp
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2016, 2017 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"
+#include <include/daynightmode.hpp>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ mp_ui(new Ui::MainWindow),
+ mp_statusBarWidget(0),
+ mp_controlBarWidget(0),
+ mp_settingsWidget(0),
+ //mp_applauncherwidget(0),
+ mp_popupWidget(0),
+ mp_layoutHandler(new LayoutHandler()),
+ mp_dBusDayNightModeProxy(0),
+ mp_proximityAdaptor(0),
+ mp_homeScreenControlInterface(0)
+{
+ // this has to be adopted to the system setup
+ mp_dBusDayNightModeProxy = new org::agl::daynightmode("org.agl.homescreen.simulator", //"org.agl.systeminfoprovider"
+ "/",
+ QDBusConnection::sessionBus(),
+ 0);
+ QObject::connect(mp_dBusDayNightModeProxy, SIGNAL(dayNightMode(int)), this, SLOT(dayNightModeSlot(int)));
+
+ mp_proximityAdaptor = new ProximityAdaptor((QObject*)this);
+
+ // dbus setup
+ QDBusConnection dbus = QDBusConnection::sessionBus();
+ dbus.registerObject("/Proximity", this);
+ dbus.registerService("org.agl.homescreen");
+
+ // no window decoration
+ setWindowFlags(Qt::FramelessWindowHint);
+
+ mp_ui->setupUi(this);
+
+ mp_statusBarWidget = new StatusBarWidget(this);
+ mp_statusBarWidget->raise();
+ // apply layout
+ mp_statusBarWidget->move(0, 0);
+
+ mp_controlBarWidget = new ControlBarWidget(this);
+ mp_controlBarWidget->raise();
+ // apply layout
+ mp_controlBarWidget->move(0, 1920-60);
+
+ mp_settingsWidget = new SettingsWidget(this);
+ mp_settingsWidget->raise();
+ // apply layout
+ mp_settingsWidget->move(0, 60);
+ //mp_settingsWidget->hide();
+
+ /*mp_applauncherwidget = new AppLauncherWidget(this);
+ mp_applauncherwidget->raise();
+ // apply layout
+ mp_applauncherwidget->move(0, 60);*/
+
+
+ mp_popupWidget = new PopupWidget();
+ mp_controlBarWidget->raise();
+ // apply layout
+ mp_popupWidget->move(0, 0);
+
+
+ QObject::connect(mp_settingsWidget, SIGNAL(colorSchemeChanged()), this, SLOT(updateColorScheme()));
+ QObject::connect(mp_settingsWidget, SIGNAL(colorSchemeChanged()), mp_statusBarWidget, SLOT(updateColorScheme()));
+ QObject::connect(mp_settingsWidget, SIGNAL(colorSchemeChanged()), mp_controlBarWidget, SLOT(updateColorScheme()));
+ QObject::connect(mp_settingsWidget, SIGNAL(colorSchemeChanged()), mp_settingsWidget, SLOT(updateColorScheme()));
+ QObject::connect(mp_settingsWidget, SIGNAL(colorSchemeChanged()), mp_popupWidget, SLOT(updateColorScheme()));
+
+ QObject::connect(mp_controlBarWidget, SIGNAL(settingsButtonPressed()), mp_settingsWidget, SLOT(raise()));
+ //QObject::connect(mp_controlBarWidget, SIGNAL(homeButtonPressed()), mp_applauncherwidget, SLOT(raise()));
+ QObject::connect(mp_controlBarWidget, SIGNAL(hideAppLayer()), mp_layoutHandler, SLOT(hideAppLayer()));
+
+ //QObject::connect(mp_applauncherwidget, SIGNAL(newRequestsToBeVisibleApp(int)), mp_layoutHandler, SLOT(makeMeVisible(int)));
+ //QObject::connect(mp_applauncherwidget, SIGNAL(showAppLayer()), mp_layoutHandler, SLOT(showAppLayer()));
+
+
+ // apply color scheme
+ updateColorScheme();
+
+ // this is only useful during development and will be removed later
+ setWindowIcon(QIcon(":/icons/home_day.png"));
+
+ // mp_applauncherwidget->populateAppList();
+ //mp_layoutHandler->setUpLayouts();
+
+ mp_homeScreenControlInterface = new HomeScreenControlInterface(this);
+ // QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestGetAllSurfacesOfProcess(int)), mp_layoutHandler, SLOT(requestGetAllSurfacesOfProcess(int)));
+ QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestGetSurfaceStatus(int)), mp_layoutHandler, SLOT(requestGetSurfaceStatus(int)));
+ QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestsToBeVisibleApp(int)), mp_layoutHandler, SLOT(makeMeVisible(int)));
+ QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestRenderSurfaceToArea(int, int)), mp_layoutHandler, SLOT(requestRenderSurfaceToArea(int,int)));
+ QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestRenderSurfaceToAreaAllowed(int, int)), mp_layoutHandler, SLOT(requestRenderSurfaceToAreaAllowed(int,int)));
+ QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestSurfaceIdToFullScreen(int)), mp_layoutHandler, SLOT(requestSurfaceIdToFullScreen(int)));
+
+ QObject::connect(mp_popupWidget, SIGNAL(comboBoxResult(QString)), mp_layoutHandler, SLOT(setLayoutByName(QString)));
+}
+
+MainWindow::~MainWindow()
+{
+ delete mp_homeScreenControlInterface;
+
+ delete mp_dBusDayNightModeProxy;
+
+ delete mp_layoutHandler;
+
+ delete mp_popupWidget;
+ //delete mp_applauncherwidget;
+ delete mp_settingsWidget;
+ delete mp_controlBarWidget;
+ delete mp_statusBarWidget;
+ delete mp_proximityAdaptor;
+ delete mp_ui;
+}
+
+void MainWindow::dayNightModeSlot(int mode)
+{
+ QSettings settings;
+ settings.setValue("systemsettings/daynightmode", mode);
+ // make sure that everything is written to the settings file before continuing
+ settings.sync();
+
+ updateColorScheme();
+}
+
+void MainWindow::setObjectDetected(bool detected)
+{
+ qDebug("setObjectDetected %s", detected ? "true" : "false");
+ QSettings settings;
+ settings.setValue("systemsettings/proximityobjectdetected", detected);
+ // make sure that everything is written to the settings file before continuing
+ settings.sync();
+
+ updateColorScheme();
+}
+
+void MainWindow::updateColorScheme()
+{
+ QSettings settings;
+ QSettings settings_cs(QApplication::applicationDirPath() +
+ "/colorschemes/" +
+ settings.value("systemsettings/colorscheme", "default").toString() +
+ "/" +
+ QString::number(settings.value("systemsettings/proximityobjectdetected", false).toBool()) +
+ "/" +
+ QString::number(settings.value("systemsettings/daynightmode", SystemDayNight::DAYNIGHTMODE_DAY).toInt()) +
+ ".ini",
+ QSettings::IniFormat);
+
+ mp_ui->widget_background->setStyleSheet(settings_cs.value("MainWindow/widget_background_css").toString());
+ mp_ui->widget_homeIcon->setStyleSheet(settings_cs.value("MainWindow/widget_homeIcon_css").toString());
+
+ // update children
+ mp_statusBarWidget->updateColorScheme();
+ mp_controlBarWidget->updateColorScheme();
+ mp_settingsWidget->updateColorScheme();
+ //mp_applauncherwidget->updateColorScheme();
+ mp_popupWidget->updateColorScheme();
+}
+
+void MainWindow::changeEvent(QEvent* event)
+{
+ if (QEvent::LanguageChange == event->type())
+ {
+ mp_ui->retranslateUi(this);
+ }
+
+ QMainWindow::changeEvent(event);
+}
+