X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=HomeScreen%2Fsrc%2Fmainwindow.cpp;h=82336ca1fc7329f4601e5b97afd553600773961f;hb=337319e30026b0bae453dc7363f27469fa2ab526;hp=e2b55a970c829702ef418b80052ec784c38e89b3;hpb=ca3605ea664834acdf712e691be8f0358b1c6b6f;p=staging%2FHomeScreen.git diff --git a/HomeScreen/src/mainwindow.cpp b/HomeScreen/src/mainwindow.cpp index e2b55a9..82336ca 100644 --- a/HomeScreen/src/mainwindow.cpp +++ b/HomeScreen/src/mainwindow.cpp @@ -16,31 +16,38 @@ #include "mainwindow.h" #include "ui_mainwindow.h" +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), mp_ui(new Ui::MainWindow), mp_statusBarWidget(0), mp_controlBarWidget(0), - m_dayNightMode(SystemDayNight::DAYNIGHTMODE_DAY), // TODO: read from system - mp_dayNightModeProxy(0), - mp_popupWidget(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_dayNightModeProxy = new org::agl::daynightmode("org.agl.homescreen.simulator", //"org.agl.systeminfoprovider" + mp_dBusDayNightModeProxy = new org::agl::daynightmode("org.agl.homescreen.simulator", //"org.agl.systeminfoprovider" "/", QDBusConnection::sessionBus(), 0); - QObject::connect(mp_dayNightModeProxy, SIGNAL(dayNightMode(int)), this, SLOT(dayNightModeSlot(int))); + 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("/MainWindow", this); + dbus.registerObject("/Proximity", this); dbus.registerService("org.agl.homescreen"); // no window decoration setWindowFlags(Qt::FramelessWindowHint); + mp_ui->setupUi(this); mp_statusBarWidget = new StatusBarWidget(this); @@ -53,43 +60,118 @@ MainWindow::MainWindow(QWidget *parent) : // apply layout mp_controlBarWidget->move(0, 1920-60); - mp_popupWidget = new PopupWidget(this); + 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_dayNightModeProxy; + delete mp_applauncherwidget; + delete mp_settingsWidget; + delete mp_controlBarWidget; delete mp_statusBarWidget; + delete mp_proximityAdaptor; delete mp_ui; } void MainWindow::dayNightModeSlot(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; - } + 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)