@@ -44,9 +44,7 @@ TaskManagerSettings::TaskManagerSettings(QObject *parent)
4444 m_windowSplit = m_taskManagerDconfig->value (TASKMANAGER_WINDOWSPLIT_KEY).toBool ();
4545 Q_EMIT windowSplitChanged ();
4646 } else if (TASKMANAGER_DOCKEDITEMS_KEY == key) {
47- loadDockedItems ();
48- Q_EMIT dockedItemsChanged ();
49- Q_EMIT dockedElementsChanged ();
47+ qDebug () << " TASKMANAGER_DOCKEDITEMS_KEY is deprecated, please use TASKMANAGER_DOCKEDELEMENTS_KEY instead" ;
5048 } else if (TASKMANAGER_DOCKEDELEMENTS_KEY == key) {
5149 m_dockedElements = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDELEMENTS_KEY, {}).toStringList ();
5250 Q_EMIT dockedElementsChanged ();
@@ -56,7 +54,8 @@ TaskManagerSettings::TaskManagerSettings(QObject *parent)
5654 m_allowForceQuit = enableStr2Bool (m_taskManagerDconfig->value (TASKMANAGER_ALLOWFOCEQUIT_KEY).toString ());
5755 m_windowSplit = m_taskManagerDconfig->value (TASKMANAGER_WINDOWSPLIT_KEY).toBool ();
5856 m_dockedElements = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDELEMENTS_KEY, {}).toStringList ();
59- loadDockedItems ();
57+ migrateFromDockedItems ();
58+ Q_EMIT dockedElementsChanged ();
6059}
6160
6261bool TaskManagerSettings::isAllowedForceQuit ()
@@ -81,33 +80,24 @@ void TaskManagerSettings::setWindowSplit(bool split)
8180 m_taskManagerDconfig->setValue (TASKMANAGER_WINDOWSPLIT_KEY, m_windowSplit);
8281}
8382
84- QStringList TaskManagerSettings::dockedElements ()
83+ QStringList TaskManagerSettings::dockedElements () const
8584{
8685 return m_dockedElements;
8786}
8887
89- void TaskManagerSettings::dockedItemsPersisted ()
88+ // elementId is like "desktop/sample.app.id"
89+ bool TaskManagerSettings::isDocked (const QString &elementId) const
9090{
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);
91+ return m_dockedElements.contains (elementId);
10792}
10893
109- void TaskManagerSettings::loadDockedItems ()
94+ void TaskManagerSettings::migrateFromDockedItems ()
11095{
96+ if (!m_dockedElements.isEmpty ()) {
97+ qDebug () << " Already migrated from TASKMANAGER_DOCKEDITEMS_KEY to TASKMANAGER_DOCKEDELEMENTS_KEY" ;
98+ return ;
99+ }
100+
111101 while (!m_dockedItems.isEmpty ()) m_dockedItems.removeLast ();
112102
113103 auto dcokedDesktopFilesStrList = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDITEMS_KEY).toStringList ();
@@ -130,45 +120,55 @@ void TaskManagerSettings::loadDockedItems()
130120 }
131121
132122 // 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- }
123+ if (!m_dockedItems.isEmpty ()) {
124+ m_dockedElements = toDockedElementsStrings (m_dockedItems);
125+ }
126+ }
127+
128+ QStringList TaskManagerSettings::toDockedElementsStrings (const QJsonArray &items) const
129+ {
130+ QStringList list;
131+ for (auto item : items) {
132+ if (!item.isObject ()) {
133+ continue ;
134+ }
135+ auto itemObj = item.toObject ();
136+ if (itemObj.contains (QStringLiteral (" id" )) && itemObj.contains (QStringLiteral (" type" ))) {
137+ list << toDockedElementsString (itemObj);
142138 }
143139 }
140+ return list;
144141}
145142
146- void TaskManagerSettings::setDockedDesktopFiles (QJsonArray items)
143+ QString TaskManagerSettings::toDockedElementsString ( const QJsonObject &item) const
147144{
148- m_dockedItems = items;
149- dockedItemsPersisted ();
145+ return QStringLiteral (" desktop/%1" ).arg (item[QStringLiteral (" id" )].toString ());
150146}
151147
152- void TaskManagerSettings::appnedDockedDesktopfiles (QJsonObject item )
148+ void TaskManagerSettings::saveDockedElements ( )
153149{
154- m_dockedItems.append (item);
155- dockedItemsPersisted ();
150+ m_taskManagerDconfig->setValue (TASKMANAGER_DOCKEDELEMENTS_KEY, m_dockedElements);
156151}
157152
158- void TaskManagerSettings::removeDockedDesktopfile (QJsonObject desktopfile )
153+ void TaskManagerSettings::setDockedElements ( const QStringList &elements )
159154{
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 ();
155+ m_dockedElements = elements;
156+ Q_EMIT dockedElementsChanged ();
157+ saveDockedElements ();
158+ }
159+
160+ void TaskManagerSettings::appendDockedElements (const QString &element)
161+ {
162+ m_dockedElements.append (element);
163+ Q_EMIT dockedElementsChanged ();
164+ saveDockedElements ();
167165}
168166
169- QJsonArray TaskManagerSettings::dockedDesktopFiles ( )
167+ void TaskManagerSettings::removeDockedElements ( const QString &element )
170168{
171- return m_dockedItems;
169+ m_dockedElements.removeAll (element);
170+ Q_EMIT dockedElementsChanged ();
171+ saveDockedElements ();
172172}
173173
174174}
0 commit comments