mirror of
https://github.com/KDE/latte-dock.git
synced 2025-03-09 00:58:15 +03:00
improve and simplify context menu data
This commit is contained in:
parent
5d1bf42709
commit
7f64126d5f
@ -27,11 +27,9 @@
|
||||
<method name="showSettingsWindow">
|
||||
<arg name="page" type="i" direction="in"/>
|
||||
</method>
|
||||
<method name="setContextMenuView">
|
||||
<arg name="id" type="i" direction="in"/>
|
||||
</method>
|
||||
<method name="contextMenuData">
|
||||
<arg name="data" type="as" direction="out"/>
|
||||
<arg name="containmentId" type="u" direction="in"/>
|
||||
</method>
|
||||
<method name="setBackgroundFromBroadcast">
|
||||
<arg name="activity" type="s" direction="in"/>
|
||||
|
@ -1133,36 +1133,33 @@ void Corona::showSettingsWindow(int page)
|
||||
m_layoutsManager->showLatteSettingsDialog(p);
|
||||
}
|
||||
|
||||
void Corona::setContextMenuView(int id)
|
||||
{
|
||||
//! set context menu view id
|
||||
m_contextMenuViewId = id;
|
||||
}
|
||||
|
||||
QStringList Corona::contextMenuData()
|
||||
QStringList Corona::contextMenuData(const uint &containmentId)
|
||||
{
|
||||
QStringList data;
|
||||
Types::ViewType viewType{Types::DockView};
|
||||
auto view = m_layoutsManager->synchronizer()->viewForContainment(m_contextMenuViewId);
|
||||
auto view = m_layoutsManager->synchronizer()->viewForContainment(containmentId);
|
||||
|
||||
if (view) {
|
||||
viewType = view->type();
|
||||
}
|
||||
|
||||
data << QString::number((int)m_layoutsManager->memoryUsage());
|
||||
data << m_layoutsManager->synchronizer()->currentLayoutsNames().join(";;");
|
||||
data << QString::number((int)viewType);
|
||||
data << QString::number((int)m_layoutsManager->memoryUsage()); // Memory Usage
|
||||
data << m_layoutsManager->centralLayoutsNames().join(";;"); // All Active layouts
|
||||
data << m_layoutsManager->synchronizer()->currentLayoutsNames().join(";;"); // All Current layouts
|
||||
|
||||
QStringList layoutsmenu;
|
||||
|
||||
for(const auto &layoutName : m_layoutsManager->synchronizer()->menuLayouts()) {
|
||||
if (m_layoutsManager->synchronizer()->centralLayout(layoutName)) {
|
||||
data << QString("1," + layoutName);
|
||||
} else if (m_layoutsManager->memoryUsage() == Latte::MemoryUsage::SingleLayout) {
|
||||
data << QString("0," + layoutName);
|
||||
if (m_layoutsManager->synchronizer()->centralLayout(layoutName)
|
||||
|| m_layoutsManager->memoryUsage() == Latte::MemoryUsage::SingleLayout) {
|
||||
layoutsmenu << layoutName;
|
||||
}
|
||||
}
|
||||
|
||||
//! reset context menu view id
|
||||
m_contextMenuViewId = -1;
|
||||
data << layoutsmenu.join(";;");
|
||||
data << QString::number((int)viewType); //Selected View type
|
||||
data << (view ? view->layout()->name() : QString()); //Selected View layout*/
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -158,8 +158,8 @@ public:
|
||||
void quitApplication();
|
||||
void switchToLayout(QString layout);
|
||||
void showSettingsWindow(int page);
|
||||
void setContextMenuView(int id);
|
||||
QStringList contextMenuData();
|
||||
|
||||
QStringList contextMenuData(const uint &containmentId);
|
||||
|
||||
public slots:
|
||||
void aboutApplication();
|
||||
@ -225,8 +225,6 @@ private:
|
||||
//!it can be used on startup to change memory usage from command line
|
||||
int m_userSetMemoryUsage{ -1};
|
||||
|
||||
int m_contextMenuViewId{-1};
|
||||
|
||||
QString m_layoutNameOnStartUp;
|
||||
QString m_importFullConfigurationFile;
|
||||
|
||||
|
@ -36,7 +36,13 @@
|
||||
#include <Plasma/Corona>
|
||||
#include <Plasma/ServiceJob>
|
||||
|
||||
const int LAYOUTSPOS = 3;
|
||||
const int MEMORYINDEX = 0;
|
||||
const int ACTIVELAYOUTSINDEX = 1;
|
||||
const int CURRENTLAYOUTSINDEX = 2;
|
||||
const int LAYOUTMENUINDEX = 3;
|
||||
const int VIEWTYPEINDEX = 4;
|
||||
const int VIEWLAYOUTINDEX = 5;
|
||||
|
||||
const char LAYOUTSNAME[] = "layouts";
|
||||
const char PREFERENCESNAME[] = "preferences";
|
||||
const char QUITLATTENAME[] = "quit latte";
|
||||
@ -222,17 +228,12 @@ QList<QAction *> Menu::contextualActions()
|
||||
QDBusInterface iface("org.kde.lattedock", "/Latte", "", QDBusConnection::sessionBus());
|
||||
|
||||
if (iface.isValid()) {
|
||||
iface.call("setContextMenuView", (int)containment()->id());
|
||||
QDBusReply<QStringList> replyData = iface.call("contextMenuData");
|
||||
QDBusReply<QStringList> replyData = iface.call("contextMenuData", containment()->id());
|
||||
|
||||
m_data = replyData.value();
|
||||
}
|
||||
|
||||
ViewType viewType{DockView};
|
||||
|
||||
if (m_data.size() >= LAYOUTSPOS + 1) {
|
||||
viewType = static_cast<ViewType>((m_data[2]).toInt());
|
||||
}
|
||||
ViewType viewType{static_cast<ViewType>((m_data[VIEWTYPEINDEX]).toInt())};
|
||||
|
||||
const QString configureActionText = (viewType == DockView) ? i18n("&Edit Dock...") : i18n("&Edit Panel...");
|
||||
m_configureAction->setText(configureActionText);
|
||||
@ -295,29 +296,29 @@ void Menu::populateLayouts()
|
||||
{
|
||||
m_switchLayoutsMenu->clear();
|
||||
|
||||
LayoutsMemoryUsage memoryUsage = static_cast<LayoutsMemoryUsage>((m_data[0]).toInt());
|
||||
QStringList currentNames = m_data[1].split(";;");
|
||||
LayoutsMemoryUsage memoryUsage = static_cast<LayoutsMemoryUsage>((m_data[MEMORYINDEX]).toInt());
|
||||
QStringList activeNames = m_data[ACTIVELAYOUTSINDEX].split(";;");
|
||||
QStringList currentNames = m_data[CURRENTLAYOUTSINDEX].split(";;");
|
||||
QStringList layoutMenuNames = m_data[LAYOUTMENUINDEX].split(";;");
|
||||
|
||||
bool hasActiveNoCurrentLayout{false};
|
||||
|
||||
if (memoryUsage == LayoutsMemoryUsage::MultipleLayouts) {
|
||||
for (int i = LAYOUTSPOS; i < m_data.size(); ++i) {
|
||||
QString layout = m_data[i].right(m_data[i].length() - 2);
|
||||
if (!currentNames.contains(layout)) {
|
||||
for (int i = 0; i<activeNames.count(); ++i) {
|
||||
if (!currentNames.contains(activeNames[i])) {
|
||||
hasActiveNoCurrentLayout = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = LAYOUTSPOS; i < m_data.size(); ++i) {
|
||||
bool isActive = m_data[i].startsWith("0") ? false : true;
|
||||
for (int i = 0; i < layoutMenuNames.count(); ++i) {
|
||||
bool isActive = activeNames.contains(layoutMenuNames[i]);
|
||||
|
||||
QString layout = m_data[i].right(m_data[i].length() - 2);
|
||||
QString layoutText = layout;
|
||||
QString layoutText = layoutMenuNames[i];
|
||||
|
||||
bool isCurrent = ((memoryUsage == SingleLayout && isActive)
|
||||
|| (memoryUsage == MultipleLayouts && currentNames.contains(layout)));
|
||||
|| (memoryUsage == MultipleLayouts && currentNames.contains(layoutMenuNames[i])));
|
||||
|
||||
if (isCurrent && hasActiveNoCurrentLayout) {
|
||||
layoutText += QString(" " + i18nc("current layout", "[Current]"));
|
||||
@ -335,7 +336,7 @@ void Menu::populateLayouts()
|
||||
}
|
||||
}
|
||||
|
||||
layoutAction->setData(layout);
|
||||
layoutAction->setData(layoutMenuNames[i]);
|
||||
|
||||
if (isCurrent) {
|
||||
QFont font = layoutAction->font();
|
||||
|
Loading…
x
Reference in New Issue
Block a user