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:
parent
be0f9dc0ba
commit
67ce3441a4
@ -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();
|
||||
|
@ -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};
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user