diff options
author | Bocklage, Jens <Jens_Bocklage@mentor.com> | 2016-09-30 14:31:09 +0200 |
---|---|---|
committer | Bocklage, Jens <Jens_Bocklage@mentor.com> | 2016-09-30 14:59:21 +0200 |
commit | cf8cd699e91df40c3f9070019f7c561432b4b4dd (patch) | |
tree | f1801eb22d1b51c80401f56eede6f79fb985333a /HomeScreen | |
parent | 0a468d9b5ae7b3e5ba106facf17698d89b1ce200 (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.pro | 6 | ||||
-rw-r--r-- | HomeScreen/README.md | 18 | ||||
-rw-r--r-- | HomeScreen/resources/popupwidget.ui | 10 | ||||
-rw-r--r-- | HomeScreen/src/applauncherwidget.cpp | 23 | ||||
-rw-r--r-- | HomeScreen/src/applauncherwidget.h | 7 | ||||
-rw-r--r-- | HomeScreen/src/controlbarwidget.cpp | 4 | ||||
-rw-r--r-- | HomeScreen/src/homescreencontrolinterface.cpp | 6 | ||||
-rw-r--r-- | HomeScreen/src/homescreencontrolinterface.h | 4 | ||||
-rw-r--r-- | HomeScreen/src/layouthandler.cpp | 180 | ||||
-rw-r--r-- | HomeScreen/src/layouthandler.h | 33 | ||||
-rw-r--r-- | HomeScreen/src/main.cpp | 9 | ||||
-rw-r--r-- | HomeScreen/src/mainwindow.cpp | 21 | ||||
-rw-r--r-- | HomeScreen/src/mainwindow.h | 6 | ||||
-rw-r--r-- | HomeScreen/src/popupwidget.cpp | 20 | ||||
-rw-r--r-- | HomeScreen/src/popupwidget.h | 5 |
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; }; |