@@ -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,7 @@ 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 ();
6058}
6159
6260bool TaskManagerSettings::isAllowedForceQuit ()
@@ -81,34 +79,28 @@ void TaskManagerSettings::setWindowSplit(bool split)
8179 m_taskManagerDconfig->setValue (TASKMANAGER_WINDOWSPLIT_KEY , m_windowSplit);
8280}
8381
84- QStringList TaskManagerSettings::dockedElements ()
82+ QStringList TaskManagerSettings::dockedElements () const
8583{
8684 return m_dockedElements;
8785}
8886
89- void TaskManagerSettings::dockedItemsPersisted ()
87+ // elementId is like "desktop/sample.app.id"
88+ bool TaskManagerSettings::isDocked (const QString &elementId) const
9089{
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);
90+ return m_dockedElements.contains (elementId);
10791}
10892
109- void TaskManagerSettings::loadDockedItems ()
93+ void TaskManagerSettings::migrateFromDockedItems ()
11094{
111- while (!m_dockedItems.isEmpty ()) m_dockedItems.removeLast ();
95+ if (m_taskManagerDconfig->isDefaultValue (TASKMANAGER_DOCKEDITEMS_KEY )) {
96+ qDebug () << " Won't do migration since TASKMANAGER_DOCKEDITEMS_KEY is default value" ;
97+ return ;
98+ } else if (!m_taskManagerDconfig->isDefaultValue (TASKMANAGER_DOCKEDELEMENTS_KEY )) {
99+ qDebug () << " Won't do migration since TASKMANAGER_DOCKEDELEMENTS_KEY is not default value" ;
100+ return ;
101+ }
102+
103+ QJsonArray legacyDockedItems;
112104
113105 auto dcokedDesktopFilesStrList = m_taskManagerDconfig->value (TASKMANAGER_DOCKEDITEMS_KEY ).toStringList ();
114106 foreach (auto dcokedDesktopFilesStr, dcokedDesktopFilesStrList) {
@@ -126,49 +118,56 @@ void TaskManagerSettings::loadDockedItems()
126118 auto value = it->second .as <std::string>();
127119 dockedItem[QString::fromStdString (key)] = QString::fromStdString (value);
128120 }
129- m_dockedItems .append (dockedItem);
121+ legacyDockedItems .append (dockedItem);
130122 }
131123
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- }
124+ m_dockedElements = toDockedElementsStrings (legacyDockedItems);
125+ }
126+
127+ QStringList TaskManagerSettings::toDockedElementsStrings (const QJsonArray &items) const
128+ {
129+ QStringList list;
130+ for (auto item : items) {
131+ if (!item.isObject ()) {
132+ continue ;
133+ }
134+ auto itemObj = item.toObject ();
135+ if (itemObj.contains (QStringLiteral (" id" )) && itemObj.contains (QStringLiteral (" type" ))) {
136+ list << toDockedElementsString (itemObj);
142137 }
143138 }
139+ return list;
144140}
145141
146- void TaskManagerSettings::setDockedDesktopFiles (QJsonArray items)
142+ QString TaskManagerSettings::toDockedElementsString ( const QJsonObject &item) const
147143{
148- m_dockedItems = items;
149- dockedItemsPersisted ();
144+ return QStringLiteral (" desktop/%1" ).arg (item[QStringLiteral (" id" )].toString ());
150145}
151146
152- void TaskManagerSettings::appnedDockedDesktopfiles (QJsonObject item )
147+ void TaskManagerSettings::saveDockedElements ( )
153148{
154- m_dockedItems.append (item);
155- dockedItemsPersisted ();
149+ m_taskManagerDconfig->setValue (TASKMANAGER_DOCKEDELEMENTS_KEY , m_dockedElements);
156150}
157151
158- void TaskManagerSettings::removeDockedDesktopfile (QJsonObject desktopfile )
152+ void TaskManagerSettings::setDockedElements ( const QStringList &elements )
159153{
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 ();
154+ m_dockedElements = elements;
155+ Q_EMIT dockedElementsChanged ();
156+ saveDockedElements ();
157+ }
158+
159+ void TaskManagerSettings::appendDockedElements (const QString &element)
160+ {
161+ m_dockedElements.append (element);
162+ Q_EMIT dockedElementsChanged ();
163+ saveDockedElements ();
167164}
168165
169- QJsonArray TaskManagerSettings::dockedDesktopFiles ( )
166+ void TaskManagerSettings::removeDockedElements ( const QString &element )
170167{
171- return m_dockedItems;
168+ m_dockedElements.removeAll (element);
169+ Q_EMIT dockedElementsChanged ();
170+ saveDockedElements ();
172171}
173172
174173}
0 commit comments