aboutsummaryrefslogtreecommitdiffstats
path: root/HomeScreen
diff options
context:
space:
mode:
authorBocklage, Jens <Jens_Bocklage@mentor.com>2016-09-30 14:31:09 +0200
committerBocklage, Jens <Jens_Bocklage@mentor.com>2016-09-30 14:59:21 +0200
commitcf8cd699e91df40c3f9070019f7c561432b4b4dd (patch)
treef1801eb22d1b51c80401f56eede6f79fb985333a /HomeScreen
parent0a468d9b5ae7b3e5ba106facf17698d89b1ce200 (diff)
Implementing app launch and app surface control workflow. Using WindowManager to control layer and surfaces (ongoing).
Defining three layouts. Adding combobox selection feature to popup widget. Known issue: IVI-shell is currently disabled in AGL due to issues (porting to Yocto 2.1.1). Signed-off-by: Bocklage, Jens <Jens_Bocklage@mentor.com>
Diffstat (limited to 'HomeScreen')
-rw-r--r--HomeScreen/HomeScreen.pro6
-rw-r--r--HomeScreen/README.md18
-rw-r--r--HomeScreen/resources/popupwidget.ui10
-rw-r--r--HomeScreen/src/applauncherwidget.cpp23
-rw-r--r--HomeScreen/src/applauncherwidget.h7
-rw-r--r--HomeScreen/src/controlbarwidget.cpp4
-rw-r--r--HomeScreen/src/homescreencontrolinterface.cpp6
-rw-r--r--HomeScreen/src/homescreencontrolinterface.h4
-rw-r--r--HomeScreen/src/layouthandler.cpp180
-rw-r--r--HomeScreen/src/layouthandler.h33
-rw-r--r--HomeScreen/src/main.cpp9
-rw-r--r--HomeScreen/src/mainwindow.cpp21
-rw-r--r--HomeScreen/src/mainwindow.h6
-rw-r--r--HomeScreen/src/popupwidget.cpp20
-rw-r--r--HomeScreen/src/popupwidget.h5
15 files changed, 328 insertions, 24 deletions
diff --git a/HomeScreen/HomeScreen.pro b/HomeScreen/HomeScreen.pro
index 458db51..e73539e 100644
--- a/HomeScreen/HomeScreen.pro
+++ b/HomeScreen/HomeScreen.pro
@@ -27,7 +27,8 @@ SOURCES += \
src/controlbarwidget.cpp \
src/statusbarwidget.cpp \
src/applauncherwidget.cpp \
- src/homescreencontrolinterface.cpp
+ src/homescreencontrolinterface.cpp \
+ src/layouthandler.cpp
HEADERS += \
../interfaces/appframework.h \
@@ -40,7 +41,8 @@ HEADERS += \
src/controlbarwidget.h \
src/statusbarwidget.h \
src/applauncherwidget.h \
- src/homescreencontrolinterface.h
+ src/homescreencontrolinterface.h \
+ src/layouthandler.h
INCLUDEPATH += $$OUT_PWD/../interfaces
INCLUDEPATH += ../interfaces/
diff --git a/HomeScreen/README.md b/HomeScreen/README.md
index 7ebc287..01deabb 100644
--- a/HomeScreen/README.md
+++ b/HomeScreen/README.md
@@ -9,6 +9,19 @@ https://gerrit.automotivelinux.org/gerrit/#/admin/projects/staging/HomeScreen
AGL repo for bitbake recipe:
https://gerrit.automotivelinux.org/gerrit/#/admin/projects/AGL/meta-agl-demo/recipes-demo-hmi/HomeScreen/HomeScreen_?.bb
+v0.3.0
+09/30/2016
+
+#new features
+- app launcher improved
+- added first popup combobox selection feature
+-- used for selecting layouts
+- implemented 3 layouts
+-- one app
+-- top on bottom
+-- side by side
+- first interaction with WindowManager
+
v0.2.0
08/05/2016
@@ -67,13 +80,16 @@ v0.0.1
- define and implement control bar D-Bus-interface
- many settings have to be read from the system somewhere during app startup. This is not available right now
- interaction with application manager
+-- done for TIZEN
- interaction with wayland compositor
+-- first version of WindowManager implemented
- define and implement input device event handler
- replace my HMI design with the official AGL design (graphics/icons...)
- implement example HMI layouts
+-- three layouts implemented
- fix font issues on target
- more documentation ;)
-- add animations
+- add animations (?)
- much more...
Thanks to Umar Irshad for his free iconset available here:
diff --git a/HomeScreen/resources/popupwidget.ui b/HomeScreen/resources/popupwidget.ui
index a982adf..4eb8a8b 100644
--- a/HomeScreen/resources/popupwidget.ui
+++ b/HomeScreen/resources/popupwidget.ui
@@ -84,6 +84,16 @@ border-image: url(:/images/transparency.png);</string>
<bool>true</bool>
</property>
</widget>
+ <widget class="QComboBox" name="comboBox">
+ <property name="geometry">
+ <rect>
+ <x>90</x>
+ <y>90</y>
+ <width>211</width>
+ <height>27</height>
+ </rect>
+ </property>
+ </widget>
</widget>
</widget>
<resources/>
diff --git a/HomeScreen/src/applauncherwidget.cpp b/HomeScreen/src/applauncherwidget.cpp
index 94dd357..18c373b 100644
--- a/HomeScreen/src/applauncherwidget.cpp
+++ b/HomeScreen/src/applauncherwidget.cpp
@@ -18,6 +18,9 @@
#include "ui_applauncherwidget.h"
#include <include/daynightmode.hpp>
#include <QSettings>
+#ifdef __i386__
+ #include <QProcess>
+#endif
#define APP_LIST_COLUMN_COUNT 5
@@ -42,8 +45,6 @@ AppLauncherWidget::AppLauncherWidget(QWidget *parent) :
"/AppFramework",
QDBusConnection::sessionBus(),
0);
-
- populateAppList();
}
AppLauncherWidget::~AppLauncherWidget()
@@ -99,7 +100,13 @@ void AppLauncherWidget::populateAppList()
int i;
+#ifdef __arm__
QStringList apps = mp_dBusAppFrameworkProxy->getAvailableAppNames();
+#endif
+#ifdef __i386__
+ QStringList apps;
+ apps.append(QString("/usr/bin/gnome-terminal"));
+#endif
mp_appList->clear();
mp_appTable->setRowCount((apps.size() + (APP_LIST_COLUMN_COUNT - 1)) / APP_LIST_COLUMN_COUNT);
@@ -138,16 +145,24 @@ void AppLauncherWidget::populateAppList()
mp_appTable->item(i / APP_LIST_COLUMN_COUNT,
i % APP_LIST_COLUMN_COUNT)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
}
-
-
}
void AppLauncherWidget::on_tableView_clicked(int row, int col)
{
if (mp_appList->size() > row * APP_LIST_COLUMN_COUNT + col)
{
+#ifdef __arm__
int pid = mp_dBusAppFrameworkProxy->launchApp(mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName());
+#endif
+#ifdef __i386__
+ QProcess *myProcess = new QProcess();
+ myProcess->start(mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName(), NULL);
+ int pid = myProcess->pid();
+#endif
qDebug("%d, %d: start app %s", row, col, mp_appList->at(row * APP_LIST_COLUMN_COUNT + col).getName().toStdString().c_str());
qDebug("pid: %d", pid);
+
+ // the new app wants to be visible by default
+ newRequestsToBeVisibleApp(pid);
}
}
diff --git a/HomeScreen/src/applauncherwidget.h b/HomeScreen/src/applauncherwidget.h
index 943f6d5..a58148e 100644
--- a/HomeScreen/src/applauncherwidget.h
+++ b/HomeScreen/src/applauncherwidget.h
@@ -34,18 +34,23 @@ class AppLauncherWidget : public QWidget
public:
explicit AppLauncherWidget(QWidget *parent = 0);
~AppLauncherWidget();
+
+ void populateAppList();
+
public slots:
void updateColorScheme();
private slots:
void on_tableView_clicked(int row, int col);
+signals:
+ void newRequestsToBeVisibleApp(int pid);
+
private:
Ui::AppLauncherWidget *mp_ui;
QList<AppInfo> *mp_appList;
QTableWidget *mp_appTable;
org::agl::appframework *mp_dBusAppFrameworkProxy;
- void populateAppList();
};
#endif // APPLAUNCHERWIDGET_H
diff --git a/HomeScreen/src/controlbarwidget.cpp b/HomeScreen/src/controlbarwidget.cpp
index 2cce30b..cafbb7b 100644
--- a/HomeScreen/src/controlbarwidget.cpp
+++ b/HomeScreen/src/controlbarwidget.cpp
@@ -64,12 +64,12 @@ void ControlBarWidget::updateColorScheme()
void ControlBarWidget::on_pushButton_Settings_clicked()
{
- emit settingsButtonPressed();
+ settingsButtonPressed();
}
void ControlBarWidget::on_pushButton_Home_clicked()
{
- emit homeButtonPressed();
+ homeButtonPressed();
}
void ControlBarWidget::on_pushButton_Nav_clicked()
diff --git a/HomeScreen/src/homescreencontrolinterface.cpp b/HomeScreen/src/homescreencontrolinterface.cpp
index defc202..45c3cbd 100644
--- a/HomeScreen/src/homescreencontrolinterface.cpp
+++ b/HomeScreen/src/homescreencontrolinterface.cpp
@@ -34,9 +34,15 @@ void HomeScreenControlInterface::hardKeyPressed(int key)
qDebug("hardKeyPressed NAV key pressed!");
pid = mp_dBusAppFrameworkProxy->launchApp("demoapp");
qDebug("pid: %d", pid);
+ newRequestsToBeVisibleApp(pid);
break;
default:
qDebug("hardKeyPressed %d", key);
break;
}
}
+
+void HomeScreenControlInterface::setToFullscreen(int pid)
+{
+ qDebug("setToFullscreen %d", pid);
+}
diff --git a/HomeScreen/src/homescreencontrolinterface.h b/HomeScreen/src/homescreencontrolinterface.h
index 3480d30..e406686 100644
--- a/HomeScreen/src/homescreencontrolinterface.h
+++ b/HomeScreen/src/homescreencontrolinterface.h
@@ -16,11 +16,13 @@ public:
signals:
-public slots:
+signals:
+ void newRequestsToBeVisibleApp(int pid);
//from homescreen_adapter.h
public Q_SLOTS: // METHODS
void hardKeyPressed(int key);
+ void setToFullscreen(int pid);
private:
HomescreenAdaptor *mp_homeScreenAdaptor;
diff --git a/HomeScreen/src/layouthandler.cpp b/HomeScreen/src/layouthandler.cpp
new file mode 100644
index 0000000..a4d0f91
--- /dev/null
+++ b/HomeScreen/src/layouthandler.cpp
@@ -0,0 +1,180 @@
+#include "layouthandler.h"
+
+LayoutHandler::LayoutHandler(QObject *parent) :
+ QObject(parent),
+ mp_dBusWindowManagerProxy(0),
+ mp_dBusPopupProxy(0),
+ m_visibleApps(),
+ m_invisibleApps(),
+ m_requestsToBeVisibleApps()
+{
+ qDBusRegisterMetaType<SimplePoint>();
+ qDBusRegisterMetaType<QList<SimplePoint> >();
+ qDBusRegisterMetaType<SimpleRect>();
+ qDBusRegisterMetaType<QList<SimpleRect> >();
+
+ qDebug("D-Bus: connect to org.agl.windowmanager /windowmanager");
+ mp_dBusWindowManagerProxy = new org::agl::windowmanager("org.agl.windowmanager",
+ "/windowmanager",
+ QDBusConnection::sessionBus(),
+ 0);
+ qDebug("D-Bus: connect to org.agl.homescreen /Popup");
+ mp_dBusPopupProxy = new org::agl::popup("org.agl.homescreen",
+ "/Popup",
+ QDBusConnection::sessionBus(),
+ 0);
+}
+
+LayoutHandler::~LayoutHandler()
+{
+ delete mp_dBusPopupProxy;
+ delete mp_dBusWindowManagerProxy;
+}
+
+void LayoutHandler::setUpLayers()
+{
+ qDebug("setUpLayers");
+ QList<SimpleRect> surfaceAreas;
+ SimpleRect surfaceArea;
+
+ const int SCREEN_WIDTH = 1080;
+ const int SCREEN_HEIGHT = 1080;
+
+ const int STATUSBAR_HEIGHT = 60;
+ const int STATUSBAR_WIDTH = SCREEN_WIDTH;
+ const int STATUSBAR_X = 0;
+ const int STATUSBAR_Y = 0;
+ const int CONTROLBAR_HEIGHT = 60;
+ const int CONTROLBAR_WIDTH = SCREEN_WIDTH;
+ const int CONTROLBAR_X = 0;
+ const int CONTROLBAR_Y = SCREEN_HEIGHT - CONTROLBAR_HEIGHT;
+
+
+ // layout 1:
+ // one app surface, statusbar, control bar
+ surfaceArea.x = 0;
+ surfaceArea.y = STATUSBAR_HEIGHT;
+ surfaceArea.width = SCREEN_WIDTH;
+ surfaceArea.height = SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT;
+
+ surfaceAreas.append(surfaceArea);
+
+ mp_dBusWindowManagerProxy->addLayout(1, "one app", surfaceAreas);
+
+
+ surfaceAreas.clear();
+
+ // layout 2:
+ // two app surfaces (one on top of the other), statusbar, control bar
+
+ // top surface
+ surfaceArea.x = 0;
+ surfaceArea.y = STATUSBAR_HEIGHT;
+ surfaceArea.width = SCREEN_WIDTH;
+ surfaceArea.height = (SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT) / 2;
+
+ surfaceAreas.append(surfaceArea);
+
+ // bottom surface
+ surfaceArea.x = 0;
+ surfaceArea.y = STATUSBAR_HEIGHT / 2;
+ surfaceArea.width = SCREEN_WIDTH;
+ surfaceArea.height = (SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT) / 2;
+
+ surfaceAreas.append(surfaceArea);
+
+ mp_dBusWindowManagerProxy->addLayout(2, "top on bottom", surfaceAreas);
+
+
+ surfaceAreas.clear();
+
+ // layout 3:
+ // two app surfaces (one besides the other), statusbar, control bar
+
+ // left surface
+ surfaceArea.x = 0;
+ surfaceArea.y = STATUSBAR_HEIGHT;
+ surfaceArea.width = SCREEN_WIDTH / 2;
+ surfaceArea.height = SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT;
+
+ surfaceAreas.append(surfaceArea);
+
+ // right surface
+ surfaceArea.x = SCREEN_WIDTH / 2;
+ surfaceArea.y = STATUSBAR_HEIGHT;
+ surfaceArea.width = SCREEN_WIDTH / 2;
+ surfaceArea.height = SCREEN_HEIGHT - STATUSBAR_HEIGHT - CONTROLBAR_HEIGHT;
+
+ surfaceAreas.append(surfaceArea);
+
+ mp_dBusWindowManagerProxy->addLayout(3, "side by side", surfaceAreas);
+
+}
+
+void LayoutHandler::makeMeVisible(int pid)
+{
+ qDebug("makeMeVisible %d", pid);
+ m_requestsToBeVisibleApps.append(pid);
+
+ qDebug("m_visibleApps %d", m_visibleApps.size());
+ qDebug("m_invisibleApps %d", m_invisibleApps.size());
+ qDebug("m_requestsToBeVisibleApps %d", m_requestsToBeVisibleApps.size());
+
+ QList<int> availableLayouts = mp_dBusWindowManagerProxy->getAvailableLayouts(m_visibleApps.size() + m_requestsToBeVisibleApps.size());
+ if (0 == availableLayouts.size())
+ {
+ // no layout fits the need!
+ // replace the last app
+ qDebug("no layout fits the need!");
+ qDebug("replace the last app");
+
+ m_invisibleApps.append(m_visibleApps.last());
+ m_visibleApps.removeLast();
+
+ for (int i = 0; i < m_visibleApps.size(); ++i)
+ {
+ mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(i, i);
+ }
+ }
+ if (1 == availableLayouts.size())
+ {
+ // switch to new layout
+ qDebug("switch to new layout %d", availableLayouts.at(0));
+ m_visibleApps.append(m_requestsToBeVisibleApps);
+ m_requestsToBeVisibleApps.clear();
+
+ mp_dBusWindowManagerProxy->setLayoutById(availableLayouts.at(0));
+ for (int i = 0; i < m_visibleApps.size(); ++i)
+ {
+ mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(i, i);
+ }
+ }
+ if (1 < availableLayouts.size())
+ {
+ // more than one layout possible! Ask user.
+ qDebug("more than one layout possible! Ask user.");
+
+ QStringList choices;
+ for (int i = 0; i < availableLayouts.size(); ++i)
+ {
+ choices.append(mp_dBusWindowManagerProxy->getLayoutName(availableLayouts.at(i)));
+ }
+
+ mp_dBusPopupProxy->showPopupComboBox("Select Layout", choices);
+
+ }
+}
+
+void LayoutHandler::setLayoutByName(QString layoutName)
+{
+ // switch to new layout
+ qDebug("setLayout: switch to new layout %s", layoutName.toStdString().c_str());
+ m_visibleApps.append(m_requestsToBeVisibleApps);
+ m_requestsToBeVisibleApps.clear();
+
+ mp_dBusWindowManagerProxy->setLayoutByName(layoutName);
+ for (int i = 0; i < m_visibleApps.size(); ++i)
+ {
+ mp_dBusWindowManagerProxy->setSurfaceToLayoutArea(i, i);
+ }
+}
diff --git a/HomeScreen/src/layouthandler.h b/HomeScreen/src/layouthandler.h
new file mode 100644
index 0000000..62e4fb5
--- /dev/null
+++ b/HomeScreen/src/layouthandler.h
@@ -0,0 +1,33 @@
+#ifndef LAYOUTHANDLER_H
+#define LAYOUTHANDLER_H
+
+#include <QObject>
+#include "windowmanager_proxy.h"
+#include "popup_proxy.h"
+
+class LayoutHandler : public QObject
+{
+ Q_OBJECT
+public:
+ explicit LayoutHandler(QObject *parent = 0);
+ ~LayoutHandler();
+
+ void setUpLayers();
+
+signals:
+
+public slots:
+ void makeMeVisible(int pid);
+ void setLayoutByName(QString layoutName);
+
+private:
+ org::agl::windowmanager *mp_dBusWindowManagerProxy;
+ org::agl::popup *mp_dBusPopupProxy;
+
+ QList<int> m_visibleApps;
+ QList<int> m_invisibleApps;
+ QList<int> m_requestsToBeVisibleApps;
+
+};
+
+#endif // LAYOUTHANDLER_H
diff --git a/HomeScreen/src/main.cpp b/HomeScreen/src/main.cpp
index cc552f2..264468b 100644
--- a/HomeScreen/src/main.cpp
+++ b/HomeScreen/src/main.cpp
@@ -17,7 +17,8 @@
#include "mainwindow.h"
#include <QApplication>
#include <QSysInfo>
-#include <QSharedMemory>
+//#include <QSharedMemory>
+#include <QSurfaceFormat>
int main(int argc, char *argv[])
{
@@ -36,7 +37,11 @@ int main(int argc, char *argv[])
QCoreApplication::setOrganizationDomain("LinuxFoundation");
QCoreApplication::setOrganizationName("AutomotiveGradeLinux");
QCoreApplication::setApplicationName("HomeScreen");
- QCoreApplication::setApplicationVersion("0.2.0");
+ QCoreApplication::setApplicationVersion("0.3.0");
+
+ QSurfaceFormat format;
+ format.setDepthBufferSize(16);
+ format.setStencilBufferSize(8);
MainWindow w;
w.show();
diff --git a/HomeScreen/src/mainwindow.cpp b/HomeScreen/src/mainwindow.cpp
index 174f750..87558aa 100644
--- a/HomeScreen/src/mainwindow.cpp
+++ b/HomeScreen/src/mainwindow.cpp
@@ -26,6 +26,7 @@ MainWindow::MainWindow(QWidget *parent) :
mp_settingsWidget(0),
mp_applauncherwidget(0),
mp_popupWidget(0),
+ mp_layoutHandler(new LayoutHandler()),
mp_dBusDayNightModeProxy(0),
mp_homeScreenControlInterface(0)
{
@@ -68,6 +69,7 @@ MainWindow::MainWindow(QWidget *parent) :
// apply layout
mp_applauncherwidget->move(0, 60);
+
mp_popupWidget = new PopupWidget();
mp_controlBarWidget->raise();
// apply layout
@@ -83,6 +85,8 @@ MainWindow::MainWindow(QWidget *parent) :
QObject::connect(mp_controlBarWidget, SIGNAL(settingsButtonPressed()), mp_settingsWidget, SLOT(raise()));
QObject::connect(mp_controlBarWidget, SIGNAL(homeButtonPressed()), mp_applauncherwidget, SLOT(raise()));
+ QObject::connect(mp_applauncherwidget, SIGNAL(newRequestsToBeVisibleApp(int)), mp_layoutHandler, SLOT(makeMeVisible(int)));
+
// apply color scheme
updateColorScheme();
mp_statusBarWidget->updateColorScheme();
@@ -94,7 +98,13 @@ MainWindow::MainWindow(QWidget *parent) :
// this is only useful during development and will be removed later
setWindowIcon(QIcon(":/icons/home_day.png"));
+ mp_applauncherwidget->populateAppList();
+ mp_layoutHandler->setUpLayers();
+
mp_homeScreenControlInterface = new HomeScreenControlInterface(this);
+ QObject::connect(mp_homeScreenControlInterface, SIGNAL(newRequestsToBeVisibleApp(int)), mp_layoutHandler, SLOT(makeMeVisible(int)));
+
+ QObject::connect(mp_popupWidget, SIGNAL(comboBoxResult(QString)), mp_layoutHandler, SLOT(setLayoutByName(QString)));
}
MainWindow::~MainWindow()
@@ -102,6 +112,9 @@ MainWindow::~MainWindow()
delete mp_homeScreenControlInterface;
delete mp_dBusDayNightModeProxy;
+
+ delete mp_layoutHandler;
+
delete mp_popupWidget;
delete mp_applauncherwidget;
delete mp_settingsWidget;
@@ -151,11 +164,3 @@ void MainWindow::changeEvent(QEvent* event)
QMainWindow::changeEvent(event);
}
-void MainWindow::on_pushButton_clicked()
-{
- // start app
- QProcess process;
- QString file = "vlc";
- process.startDetached(file);
- // manage ivi shell
-}
diff --git a/HomeScreen/src/mainwindow.h b/HomeScreen/src/mainwindow.h
index cb2243e..d94546a 100644
--- a/HomeScreen/src/mainwindow.h
+++ b/HomeScreen/src/mainwindow.h
@@ -28,6 +28,8 @@
#include "applauncherwidget.h"
#include "popupwidget.h"
+#include "layouthandler.h"
+
namespace Ui {
class MainWindow;
@@ -53,8 +55,6 @@ protected:
// called when the translator loaded a new language set
void changeEvent(QEvent* event);
-private slots:
- void on_pushButton_clicked();
private:
Ui::MainWindow *mp_ui;
@@ -67,6 +67,8 @@ private:
AppLauncherWidget *mp_applauncherwidget;
PopupWidget *mp_popupWidget;
+ LayoutHandler *mp_layoutHandler;
+
org::agl::daynightmode *mp_dBusDayNightModeProxy;
HomeScreenControlInterface *mp_homeScreenControlInterface;
diff --git a/HomeScreen/src/popupwidget.cpp b/HomeScreen/src/popupwidget.cpp
index 0a27dff..919bea0 100644
--- a/HomeScreen/src/popupwidget.cpp
+++ b/HomeScreen/src/popupwidget.cpp
@@ -21,7 +21,8 @@
PopupWidget::PopupWidget(QWidget *parent) :
QWidget(parent),
mp_ui(new Ui::PopupWidget),
- mp_popupAdaptor(0)
+ mp_popupAdaptor(0),
+ m_sendComboBoxChoice(false)
{
// publish dbus popup interface
mp_popupAdaptor = new PopupAdaptor((QObject*)this);
@@ -60,6 +61,18 @@ void PopupWidget::updateColorScheme()
void PopupWidget::showPopup(int /*type*/, const QString &text)
{
+ m_sendComboBoxChoice = false;
+ mp_ui->comboBox->hide();
+ this->show();
+ this->raise();
+ mp_ui->label_Text->setText(text);
+}
+
+void PopupWidget::showPopupComboBox(const QString &text, const QStringList &choices)
+{
+ m_sendComboBoxChoice = true;
+ mp_ui->comboBox->addItems(choices);
+ mp_ui->comboBox->show();
this->show();
this->raise();
mp_ui->label_Text->setText(text);
@@ -67,5 +80,10 @@ void PopupWidget::showPopup(int /*type*/, const QString &text)
void PopupWidget::on_pushButton_OK_clicked()
{
+ if (m_sendComboBoxChoice)
+ {
+ comboBoxResult(mp_ui->comboBox->currentText());
+ m_sendComboBoxChoice = false;
+ }
this->close();
}
diff --git a/HomeScreen/src/popupwidget.h b/HomeScreen/src/popupwidget.h
index 7a73b92..eaf41de 100644
--- a/HomeScreen/src/popupwidget.h
+++ b/HomeScreen/src/popupwidget.h
@@ -38,14 +38,19 @@ public slots:
// from popup_adapter.h
public Q_SLOTS: // METHODS
void showPopup(int /*type*/, const QString &text);
+ void showPopupComboBox(const QString &text, const QStringList &choices);
private slots:
void on_pushButton_OK_clicked();
+signals:
+ void comboBoxResult(QString choice);
+
private:
Ui::PopupWidget *mp_ui;
PopupAdaptor *mp_popupAdaptor;
+ bool m_sendComboBoxChoice;
// for showPupupFor LayoutSelection
//QList<QPushButton> m_pushButtons;
};