1
0
mirror of https://github.com/KDE/latte-dock.git synced 2025-02-07 13:57:40 +03:00

MultipleLayouts:launchers signals made layout aware

This commit is contained in:
Michail Vourlakos 2018-01-21 20:17:58 +02:00
parent be0f9dc0ba
commit 67ce3441a4
7 changed files with 87 additions and 38 deletions

View File

@ -32,11 +32,20 @@ LaunchersSignals::~LaunchersSignals()
{
}
QList<Plasma::Applet *> LaunchersSignals::lattePlasmoids()
QList<Plasma::Applet *> LaunchersSignals::lattePlasmoids(QString layoutName)
{
QList<Plasma::Applet *> applets;
foreach (auto containment, m_manager->corona()->containments()) {
Layout *layout = m_manager->activeLayout(layoutName);
QList<Plasma::Containment *> containments;
if (layoutName.isEmpty()) {
containments = m_manager->corona()->containments();
} else if (layout) {
containments = *(layout->containments());
}
foreach (auto containment, containments) {
for (auto *applet : containment->applets()) {
KPluginMetaData meta = applet->kPackage().metadata();
@ -49,13 +58,17 @@ QList<Plasma::Applet *> LaunchersSignals::lattePlasmoids()
return applets;
}
void LaunchersSignals::addLauncher(int launcherGroup, QString launcher)
void LaunchersSignals::addLauncher(QString layoutName, int launcherGroup, QString launcher)
{
if ((Dock::LaunchersGroup)launcherGroup == Dock::UniqueLaunchers) {
Dock::LaunchersGroup group = static_cast<Dock::LaunchersGroup>(launcherGroup);
if ((Dock::LaunchersGroup)group == Dock::UniqueLaunchers) {
return;
}
foreach (auto applet, lattePlasmoids()) {
QString lName = (group == Dock::LayoutLaunchers) ? layoutName : "";
foreach (auto applet, lattePlasmoids(lName)) {
if (QQuickItem *appletInterface = applet->property("_plasma_graphicObject").value<QQuickItem *>()) {
const auto &childItems = appletInterface->childItems();
@ -79,13 +92,17 @@ void LaunchersSignals::addLauncher(int launcherGroup, QString launcher)
}
}
void LaunchersSignals::removeLauncher(int launcherGroup, QString launcher)
void LaunchersSignals::removeLauncher(QString layoutName, int launcherGroup, QString launcher)
{
if ((Dock::LaunchersGroup)launcherGroup == Dock::UniqueLaunchers) {
Dock::LaunchersGroup group = static_cast<Dock::LaunchersGroup>(launcherGroup);
if ((Dock::LaunchersGroup)group == Dock::UniqueLaunchers) {
return;
}
foreach (auto applet, lattePlasmoids()) {
QString lName = (group == Dock::LayoutLaunchers) ? layoutName : "";
foreach (auto applet, lattePlasmoids(lName)) {
if (QQuickItem *appletInterface = applet->property("_plasma_graphicObject").value<QQuickItem *>()) {
const auto &childItems = appletInterface->childItems();
@ -109,13 +126,17 @@ void LaunchersSignals::removeLauncher(int launcherGroup, QString launcher)
}
}
void LaunchersSignals::addLauncherToActivity(int launcherGroup, QString launcher, QString activity)
void LaunchersSignals::addLauncherToActivity(QString layoutName, int launcherGroup, QString launcher, QString activity)
{
if ((Dock::LaunchersGroup)launcherGroup == Dock::UniqueLaunchers) {
Dock::LaunchersGroup group = static_cast<Dock::LaunchersGroup>(launcherGroup);
if ((Dock::LaunchersGroup)group == Dock::UniqueLaunchers) {
return;
}
foreach (auto applet, lattePlasmoids()) {
QString lName = (group == Dock::LayoutLaunchers) ? layoutName : "";
foreach (auto applet, lattePlasmoids(lName)) {
if (QQuickItem *appletInterface = applet->property("_plasma_graphicObject").value<QQuickItem *>()) {
const auto &childItems = appletInterface->childItems();
@ -139,13 +160,17 @@ void LaunchersSignals::addLauncherToActivity(int launcherGroup, QString launcher
}
}
void LaunchersSignals::removeLauncherFromActivity(int launcherGroup, QString launcher, QString activity)
void LaunchersSignals::removeLauncherFromActivity(QString layoutName, int launcherGroup, QString launcher, QString activity)
{
if ((Dock::LaunchersGroup)launcherGroup == Dock::UniqueLaunchers) {
Dock::LaunchersGroup group = static_cast<Dock::LaunchersGroup>(launcherGroup);
if ((Dock::LaunchersGroup)group == Dock::UniqueLaunchers) {
return;
}
foreach (auto applet, lattePlasmoids()) {
QString lName = (group == Dock::LayoutLaunchers) ? layoutName : "";
foreach (auto applet, lattePlasmoids(lName)) {
if (QQuickItem *appletInterface = applet->property("_plasma_graphicObject").value<QQuickItem *>()) {
const auto &childItems = appletInterface->childItems();
@ -169,13 +194,17 @@ void LaunchersSignals::removeLauncherFromActivity(int launcherGroup, QString lau
}
}
void LaunchersSignals::urlsDropped(int launcherGroup, QStringList urls)
void LaunchersSignals::urlsDropped(QString layoutName, int launcherGroup, QStringList urls)
{
if ((Dock::LaunchersGroup)launcherGroup == Dock::UniqueLaunchers) {
Dock::LaunchersGroup group = static_cast<Dock::LaunchersGroup>(launcherGroup);
if ((Dock::LaunchersGroup)group == Dock::UniqueLaunchers) {
return;
}
foreach (auto applet, lattePlasmoids()) {
QString lName = (group == Dock::LayoutLaunchers) ? layoutName : "";
foreach (auto applet, lattePlasmoids(lName)) {
if (QQuickItem *appletInterface = applet->property("_plasma_graphicObject").value<QQuickItem *>()) {
const auto &childItems = appletInterface->childItems();
@ -199,13 +228,17 @@ void LaunchersSignals::urlsDropped(int launcherGroup, QStringList urls)
}
}
void LaunchersSignals::moveTask(int senderId, int launcherGroup, int from, int to)
void LaunchersSignals::moveTask(QString layoutName, int senderId, int launcherGroup, int from, int to)
{
if ((Dock::LaunchersGroup)launcherGroup == Dock::UniqueLaunchers) {
Dock::LaunchersGroup group = static_cast<Dock::LaunchersGroup>(launcherGroup);
if ((Dock::LaunchersGroup)group == Dock::UniqueLaunchers) {
return;
}
foreach (auto applet, lattePlasmoids()) {
QString lName = (group == Dock::LayoutLaunchers) ? layoutName : "";
foreach (auto applet, lattePlasmoids(lName)) {
if (applet->id() != senderId) {
if (QQuickItem *appletInterface = applet->property("_plasma_graphicObject").value<QQuickItem *>()) {
const auto &childItems = appletInterface->childItems();

View File

@ -44,15 +44,15 @@ public:
~LaunchersSignals() override;
public slots:
Q_INVOKABLE void addLauncher(int launcherGroup, QString launcher);
Q_INVOKABLE void removeLauncher(int launcherGroup, QString launcher);
Q_INVOKABLE void addLauncherToActivity(int launcherGroup, QString launcher, QString activity);
Q_INVOKABLE void removeLauncherFromActivity(int launcherGroup, QString launcher, QString activity);
Q_INVOKABLE void urlsDropped(int launcherGroup, QStringList urls);
Q_INVOKABLE void moveTask(int senderId, int launcherGroup, int from, int to);
Q_INVOKABLE void addLauncher(QString layoutName, int launcherGroup, QString launcher);
Q_INVOKABLE void removeLauncher(QString layoutName, int launcherGroup, QString launcher);
Q_INVOKABLE void addLauncherToActivity(QString layoutName, int launcherGroup, QString launcher, QString activity);
Q_INVOKABLE void removeLauncherFromActivity(QString layoutName, int launcherGroup, QString launcher, QString activity);
Q_INVOKABLE void urlsDropped(QString layoutName, int launcherGroup, QStringList urls);
Q_INVOKABLE void moveTask(QString layoutName, int senderId, int launcherGroup, int from, int to);
private:
QList<Plasma::Applet *> lattePlasmoids();
QList<Plasma::Applet *> lattePlasmoids(QString layoutName);
private:
LayoutManager *m_manager{nullptr};

View File

@ -502,6 +502,11 @@ QHash<const Plasma::Containment *, DockView *> *Layout::dockViews()
return &m_dockViews;
}
QList<Plasma::Containment *> *Layout::containments()
{
return &m_containments;
}
const QStringList Layout::appliedActivities()
{
if (!m_corona) {

View File

@ -98,6 +98,7 @@ public:
const QStringList appliedActivities();
QList<Plasma::Containment *> *containments();
QHash<const Plasma::Containment *, DockView *> *dockViews();
//! Bind this dockView and its relevant containments(including systrays)

View File

@ -631,7 +631,8 @@ PlasmaComponents.ContextMenu {
var launcher = get(atm.LauncherUrl);
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.removeLauncher(latteDock.launchersGroup, launcher);
latteDock.universalLayoutManager.launchersSignals.removeLauncher(root.managedLayoutName,
latteDock.launchersGroup, launcher);
} else {
root.launcherForRemoval = launcher;
tasksModel.requestRemoveLauncher(launcher);
@ -640,7 +641,8 @@ PlasmaComponents.ContextMenu {
} else {
var launcher = get(atm.LauncherUrl);
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.addLauncher(latteDock.launchersGroup, launcher);
latteDock.universalLayoutManager.launchersSignals.addLauncher(root.managedLayoutName,
latteDock.launchersGroup, launcher);
} else {
tasksModel.requestAddLauncher(launcher);
}
@ -686,7 +688,8 @@ PlasmaComponents.ContextMenu {
function() {
if (result.checked) {
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.addLauncherToActivity(latteDock.launchersGroup, url, id);
latteDock.universalLayoutManager.launchersSignals.addLauncherToActivity(root.managedLayoutName,
latteDock.launchersGroup, url, id);
} else {
if (id !== tasksModel.activity && (activities[0] === "00000000-0000-0000-0000-000000000000")) {
root.launcherForRemoval = url;
@ -696,7 +699,8 @@ PlasmaComponents.ContextMenu {
}
} else {
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.removeLauncherFromActivity(latteDock.launchersGroup, url, id);
latteDock.universalLayoutManager.launchersSignals.removeLauncherFromActivity(root.managedLayoutName,
latteDock.launchersGroup, url, id);
} else {
if (id === tasksModel.activity) {
root.launcherForRemoval = url;
@ -752,7 +756,8 @@ PlasmaComponents.ContextMenu {
var launcher = get(atm.LauncherUrlWithoutIcon);
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.removeLauncher(latteDock.launchersGroup, launcher);
latteDock.universalLayoutManager.launchersSignals.removeLauncher(root.managedLayoutName,
latteDock.launchersGroup, launcher);
} else {
root.launcherForRemoval = launcher
tasksModel.requestRemoveLauncher(launcher);
@ -782,7 +787,8 @@ PlasmaComponents.ContextMenu {
parabolicManager.addLauncherToBeMoved(separatorName, Math.max(0,pos));
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.addLauncher(latteDock.launchersGroup, separatorName);
latteDock.universalLayoutManager.launchersSignals.addLauncher(root.managedLayoutName,
latteDock.launchersGroup, separatorName);
} else {
tasksModel.requestAddLauncher(separatorName);
}
@ -803,7 +809,8 @@ PlasmaComponents.ContextMenu {
var launcher = get(atm.LauncherUrlWithoutIcon);
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.removeLauncher(latteDock.launchersGroup, launcher);
latteDock.universalLayoutManager.launchersSignals.removeLauncher(root.managedLayoutName,
latteDock.launchersGroup, launcher);
} else {
root.launcherForRemoval = launcher;
tasksModel.requestRemoveLauncher(launcher);

View File

@ -553,7 +553,8 @@ Item {
tasksModel.move(from, to);
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.moveTask(plasmoid.id, latteDock.launchersGroup, from, to);
latteDock.universalLayoutManager.launchersSignals.moveTask(root.managedLayoutName,
plasmoid.id, latteDock.launchersGroup, from, to);
}
if (isSeparator(launcherUrl)) {

View File

@ -198,6 +198,7 @@ Item {
property alias hoveredIndex: icList.hoveredIndex
property QtObject currentLayout : latteDock && latteDock.dockManagedLayout ? latteDock.dockManagedLayout : null
property var managedLayoutName: currentLayout ? currentLayout.name : ""
property Item latteDock: null
//END Now Dock Panel properties
@ -277,7 +278,6 @@ Item {
target: latteDock && latteDock.universalLayoutManager ? latteDock.universalLayoutManager : null
onCurrentLayoutNameChanged: root.publishTasksGeometries();
}
@ -1036,7 +1036,8 @@ Item {
onUrlsDropped: {
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.urlsDropped(latteDock.launchersGroup, urls);
latteDock.universalLayoutManager.launchersSignals.urlsDropped(root.managedLayoutName,
latteDock.launchersGroup, urls);
} else {
urlsDroppedOnArea(urls);
}
@ -1496,7 +1497,8 @@ Item {
if (separatorName !== "") {
if (latteDock && latteDock.launchersGroup >= Latte.Dock.LayoutLaunchers) {
latteDock.universalLayoutManager.launchersSignals.removeLauncher(latteDock.launchersGroup, separatorName);
latteDock.universalLayoutManager.launchersSignals.removeLauncher(root.managedLayoutName,
latteDock.launchersGroup, separatorName);
} else {
root.launcherForRemoval = separatorName;
tasksModel.requestRemoveLauncher(separatorName);