shift-shell/components/mobileshellstate/shelldbusobject.cpp
Devin Lin 2d2b7407a6 startupfeedback: Change to be window based and controlled by a model
This makes the startup feedback more robust, by having instances be controlled by a model which can listen to window changes. Being window based also allows for the close button and gestures to work properly with it, since it will show up in the task switcher as well.

Fixes:
* https://invent.kde.org/plasma/plasma-mobile/-/issues/357
* https://invent.kde.org/plasma/plasma-mobile/-/issues/338
* https://invent.kde.org/plasma/plasma-mobile/-/issues/335 (dark themes now tint the background color)
* https://invent.kde.org/plasma/plasma-mobile/-/issues/330
* https://invent.kde.org/plasma/plasma-mobile/-/issues/30
2024-07-13 16:30:07 +00:00

112 lines
2.7 KiB
C++

// SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "shelldbusobject.h"
#include "mobileadaptor.h"
#include <QDBusConnection>
ShellDBusObject::ShellDBusObject(QObject *parent)
: QObject{parent}
, m_startupFeedbackModel{new StartupFeedbackModel{this}}
{
}
void ShellDBusObject::registerObject()
{
if (!m_initialized) {
new PlasmashellAdaptor{this};
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Mobile"), this);
m_initialized = true;
}
}
StartupFeedbackModel *ShellDBusObject::startupFeedbackModel()
{
return m_startupFeedbackModel;
}
bool ShellDBusObject::doNotDisturb()
{
return m_doNotDisturb;
}
void ShellDBusObject::setDoNotDisturb(bool value)
{
if (value != m_doNotDisturb) {
m_doNotDisturb = value;
Q_EMIT doNotDisturbChanged();
}
}
bool ShellDBusObject::isActionDrawerOpen()
{
return m_isActionDrawerOpen;
}
void ShellDBusObject::setIsActionDrawerOpen(bool value)
{
if (value != m_isActionDrawerOpen) {
m_isActionDrawerOpen = value;
Q_EMIT isActionDrawerOpenChanged();
}
}
bool ShellDBusObject::isTaskSwitcherVisible()
{
return m_isTaskSwitcherVisible;
}
void ShellDBusObject::setIsTaskSwitcherVisible(bool value)
{
if (value != m_isTaskSwitcherVisible) {
m_isTaskSwitcherVisible = value;
Q_EMIT isTaskSwitcherVisibleChanged();
}
}
void ShellDBusObject::openActionDrawer()
{
Q_EMIT openActionDrawerRequested();
}
void ShellDBusObject::closeActionDrawer()
{
Q_EMIT closeActionDrawerRequested();
}
void ShellDBusObject::openAppLaunchAnimationWithPosition(int screen,
QString splashIcon,
QString title,
QString storageId,
qreal x,
qreal y,
qreal sourceIconSize)
{
if (!m_startupFeedbackModel) {
return;
}
StartupFeedback *feedback = new StartupFeedback{m_startupFeedbackModel, splashIcon, title, storageId, x, y, sourceIconSize, screen};
m_startupFeedbackModel->addApp(feedback);
}
void ShellDBusObject::triggerAppLaunchMaximizePanelAnimation(int screen, QString color)
{
Q_EMIT appLaunchMaximizePanelAnimationTriggered(screen, color);
}
void ShellDBusObject::openHomeScreen()
{
Q_EMIT openHomeScreenRequested();
}
void ShellDBusObject::resetHomeScreenPosition()
{
Q_EMIT resetHomeScreenPositionRequested();
}
void ShellDBusObject::showVolumeOSD()
{
Q_EMIT showVolumeOSDRequested();
}