@@ -43,10 +43,6 @@ TaskManagerSettings::TaskManagerSettings(QObject *parent)
4343 } else if (TASKMANAGER_WINDOWSPLIT_KEY == key) {
4444 m_windowSplit = m_taskManagerDconfig->value (TASKMANAGER_WINDOWSPLIT_KEY).toBool ();
4545 Q_EMIT windowSplitChanged ();
46- } else if (TASKMANAGER_DOCKEDITEMS_KEY == key) {
47- loadDockedItems ();
48- Q_EMIT dockedItemsChanged ();
49- Q_EMIT dockedElementsChanged ();
5046 } else if (TASKMANAGER_DOCKEDELEMENTS_KEY == key) {
5147 m_dockedElements = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDELEMENTS_KEY, {}).toStringList ();
5248 Q_EMIT dockedElementsChanged ();
@@ -56,7 +52,7 @@ TaskManagerSettings::TaskManagerSettings(QObject *parent)
5652 m_allowForceQuit = enableStr2Bool (m_taskManagerDconfig->value (TASKMANAGER_ALLOWFOCEQUIT_KEY).toString ());
5753 m_windowSplit = m_taskManagerDconfig->value (TASKMANAGER_WINDOWSPLIT_KEY).toBool ();
5854 m_dockedElements = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDELEMENTS_KEY, {}).toStringList ();
59- loadDockedItems ();
55+ migrateFromDockedItems ();
6056}
6157
6258bool TaskManagerSettings::isAllowedForceQuit ()
@@ -81,34 +77,28 @@ void TaskManagerSettings::setWindowSplit(bool split)
8177 m_taskManagerDconfig->setValue (TASKMANAGER_WINDOWSPLIT_KEY, m_windowSplit);
8278}
8379
84- QStringList TaskManagerSettings::dockedElements ()
80+ QStringList TaskManagerSettings::dockedElements () const
8581{
8682 return m_dockedElements;
8783}
8884
89- void TaskManagerSettings::dockedItemsPersisted ()
85+ // elementId is like "desktop/sample.app.id"
86+ bool TaskManagerSettings::isDocked (const QString &elementId) const
9087{
91- QStringList list;
92-
93- for (auto dockedDesktopFile : m_dockedItems) {
94- if (!dockedDesktopFile.isObject ()) {
95- continue ;
96- }
97- YAML::Node node;
98- auto dockedDesktopFileObj = dockedDesktopFile.toObject ();
99- for (auto key : dockedDesktopFileObj.keys ()) {
100- node[key.toStdString ()] = dockedDesktopFileObj[key].toString ().toStdString ();
101- }
102- auto str = QString::fromStdString (YAML::Dump (node));
103- list << str.replace (" \n " ," ," );
104- }
105-
106- m_taskManagerDconfig->setValue (TASKMANAGER_DOCKEDITEMS_KEY, list);
88+ return m_dockedElements.contains (elementId);
10789}
10890
109- void TaskManagerSettings::loadDockedItems ()
91+ void TaskManagerSettings::migrateFromDockedItems ()
11092{
111- while (!m_dockedItems.isEmpty ()) m_dockedItems.removeLast ();
93+ if (m_taskManagerDconfig->isDefaultValue (TASKMANAGER_DOCKEDITEMS_KEY)) {
94+ qDebug () << " Won't do migration since TASKMANAGER_DOCKEDITEMS_KEY is default value" ;
95+ return ;
96+ } else if (!m_taskManagerDconfig->isDefaultValue (TASKMANAGER_DOCKEDELEMENTS_KEY)) {
97+ qDebug () << " Won't do migration since TASKMANAGER_DOCKEDELEMENTS_KEY is not default value" ;
98+ return ;
99+ }
100+
101+ QJsonArray legacyDockedItems;
112102
113103 auto dcokedDesktopFilesStrList = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDITEMS_KEY).toStringList ();
114104 foreach (auto dcokedDesktopFilesStr, dcokedDesktopFilesStrList) {
@@ -126,49 +116,44 @@ void TaskManagerSettings::loadDockedItems()
126116 auto value = it->second .as <std::string>();
127117 dockedItem[QString::fromStdString (key)] = QString::fromStdString (value);
128118 }
129- m_dockedItems .append (dockedItem);
119+ legacyDockedItems .append (dockedItem);
130120 }
131121
132- // Migrate data under the new dconfig setting entry
133- if (!m_dockedItems.isEmpty () && m_dockedElements.isEmpty ()) {
134- for (auto dockedDesktopFile : m_dockedItems) {
135- if (!dockedDesktopFile.isObject ()) {
136- continue ;
137- }
138- auto dockedDesktopFileObj = dockedDesktopFile.toObject ();
139- if (dockedDesktopFileObj.contains (QStringLiteral (" id" )) && dockedDesktopFileObj.contains (QStringLiteral (" type" ))) {
140- m_dockedElements.append (QStringLiteral (" desktop/%1" ).arg (dockedDesktopFileObj[QStringLiteral (" id" )].toString ()));
141- }
122+ for (auto dockedDesktopFile : std::as_const (legacyDockedItems)) {
123+ if (!dockedDesktopFile.isObject ()) {
124+ continue ;
125+ }
126+ auto dockedDesktopFileObj = dockedDesktopFile.toObject ();
127+ if (dockedDesktopFileObj.contains (QStringLiteral (" id" )) && dockedDesktopFileObj.contains (QStringLiteral (" type" ))) {
128+ m_dockedElements.append (QStringLiteral (" desktop/%1" ).arg (dockedDesktopFileObj[QStringLiteral (" id" )].toString ()));
142129 }
143130 }
144131}
145132
146- void TaskManagerSettings::setDockedDesktopFiles (QJsonArray items )
133+ void TaskManagerSettings::saveDockedElements ( )
147134{
148- m_dockedItems = items;
149- dockedItemsPersisted ();
135+ m_taskManagerDconfig->setValue (TASKMANAGER_DOCKEDELEMENTS_KEY, m_dockedElements);
150136}
151137
152- void TaskManagerSettings::appnedDockedDesktopfiles (QJsonObject item )
138+ void TaskManagerSettings::setDockedElements ( const QStringList &elements )
153139{
154- m_dockedItems.append (item);
155- dockedItemsPersisted ();
140+ m_dockedElements = elements;
141+ Q_EMIT dockedElementsChanged ();
142+ saveDockedElements ();
156143}
157144
158- void TaskManagerSettings::removeDockedDesktopfile (QJsonObject desktopfile )
145+ void TaskManagerSettings::appendDockedElements ( const QString &element )
159146{
160- for (int i = 0 ; i < m_dockedItems.count (); i++) {
161- if (m_dockedItems.at (i) == desktopfile) {
162- m_dockedItems.removeAt (i);
163- break ;
164- }
165- }
166- dockedItemsPersisted ();
147+ m_dockedElements.append (element);
148+ Q_EMIT dockedElementsChanged ();
149+ saveDockedElements ();
167150}
168151
169- QJsonArray TaskManagerSettings::dockedDesktopFiles ( )
152+ void TaskManagerSettings::removeDockedElements ( const QString &element )
170153{
171- return m_dockedItems;
154+ m_dockedElements.removeAll (element);
155+ Q_EMIT dockedElementsChanged ();
156+ saveDockedElements ();
172157}
173158
174159}
0 commit comments