summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2020-07-22 22:27:21 -0400
committerScott Murray <scott.murray@konsulko.com>2020-07-22 22:39:25 -0400
commita37400d73417dc02511813833b8f4d9b91e40a11 (patch)
treea5ee5964d970fba4c377bd4d697be91dc43d8133
parentbdcd052f995d46abeeeda3171759aabad7dd8a75 (diff)
The switch to the new compositor removed the callback to update the top panel button highlight since it was being driven by the Event_ScreenUpdated event from the old windowmanager. For now, work around this by driving the ApplicationLauncher's setCurrent method from the appropriate place in the HomescreenHandler object's tapShortcut method. If a generic mechanism for notifications on application expose becomes available via agl-shell-desktop, that should be used instead. Additionally, add an explicit call to setCurrent on initialization to highlight the top panel Launcher button, matching the actual initial UI state. Bug-AGL: SPEC-3510 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ied5dd8e78195d061585510e60a758559ca4f69b3
-rw-r--r--homescreen/src/homescreenhandler.cpp8
-rw-r--r--homescreen/src/homescreenhandler.h4
-rw-r--r--homescreen/src/main.cpp5
3 files changed, 11 insertions, 6 deletions
diff --git a/homescreen/src/homescreenhandler.cpp b/homescreen/src/homescreenhandler.cpp
index bf98a53..e31f122 100644
--- a/homescreen/src/homescreenhandler.cpp
+++ b/homescreen/src/homescreenhandler.cpp
@@ -24,11 +24,11 @@
void* HomescreenHandler::myThis = 0;
-HomescreenHandler::HomescreenHandler(Shell *_aglShell, QObject *parent) :
+HomescreenHandler::HomescreenHandler(Shell *_aglShell, ApplicationLauncher *launcher, QObject *parent) :
QObject(parent),
aglShell(_aglShell)
{
-
+ mp_launcher = launcher;
}
HomescreenHandler::~HomescreenHandler()
@@ -113,6 +113,10 @@ void HomescreenHandler::tapShortcut(QString application_id)
// the first time. Later calls to HomescreenHandler::tapShortcut will
// require calling 'agl_shell_activate_app'
agl_shell_activate_app(agl_shell, application_id.toStdString().c_str(), output);
+
+ if (mp_launcher) {
+ mp_launcher->setCurrent(application_id);
+ }
}
void HomescreenHandler::onRep_static(struct json_object* reply_contents)
diff --git a/homescreen/src/homescreenhandler.h b/homescreen/src/homescreenhandler.h
index 3d939ce..790c4fd 100644
--- a/homescreen/src/homescreenhandler.h
+++ b/homescreen/src/homescreenhandler.h
@@ -20,6 +20,7 @@
#include <QObject>
#include <libhomescreen.hpp>
+#include "applicationlauncher.h"
#include "shell.h"
#include <string>
@@ -30,7 +31,7 @@ class HomescreenHandler : public QObject
{
Q_OBJECT
public:
- explicit HomescreenHandler(Shell *aglShell, QObject *parent = 0);
+ explicit HomescreenHandler(Shell *aglShell, ApplicationLauncher *launcher = 0, QObject *parent = 0);
~HomescreenHandler();
void init(int port, const char* token);
@@ -49,6 +50,7 @@ signals:
void showInformation(QString info);
private:
LibHomeScreen *mp_hs;
+ ApplicationLauncher *mp_launcher;
Shell *aglShell;
};
diff --git a/homescreen/src/main.cpp b/homescreen/src/main.cpp
index 742daa6..8c7bb22 100644
--- a/homescreen/src/main.cpp
+++ b/homescreen/src/main.cpp
@@ -234,15 +234,14 @@ int main(int argc, char *argv[])
Shell *aglShell = new Shell(shell, &a);
// import C++ class to QML
- // qmlRegisterType<ApplicationLauncher>("HomeScreen", 1, 0, "ApplicationLauncher");
qmlRegisterType<StatusBarModel>("HomeScreen", 1, 0, "StatusBarModel");
qmlRegisterType<MasterVolume>("MasterVolume", 1, 0, "MasterVolume");
qmlRegisterUncreatableType<ChromeController>("SpeechChrome", 1, 0, "SpeechChromeController",
QLatin1String("SpeechChromeController is uncreatable."));
ApplicationLauncher *launcher = new ApplicationLauncher();
-
- HomescreenHandler* homescreenHandler = new HomescreenHandler(aglShell);
+ launcher->setCurrent(QStringLiteral("launcher"));
+ HomescreenHandler* homescreenHandler = new HomescreenHandler(aglShell, launcher);
homescreenHandler->init(port, token.toStdString().c_str());
QUrl bindingAddress;