fix(favorite):修复被收藏应用在应用组中时,仍可以添加该应用到收藏区域的问题
This commit is contained in:
parent
e7bbda07f0
commit
f0396447a7
|
@ -219,9 +219,15 @@ void AppFavoritesModel::clearFavorites()
|
||||||
FavoritesConfig::instance().clear();
|
FavoritesConfig::instance().clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AppFavoritesModel::getApp(const QString &appid, DataEntity &app)
|
bool AppFavoritesModel::isAppIncluded(const QString &appid)
|
||||||
{
|
{
|
||||||
return m_sourceModel->databaseInterface()->getApp(appid, app);
|
QModelIndex sourceIndex = m_sourceModel->index(m_sourceModel->indexOfApp(appid), 0, {});
|
||||||
|
if (!sourceIndex.isValid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPersistentModelIndex index(sourceIndex);
|
||||||
|
return m_favoritesApps.contains(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppFavoritesModel::onAppRemoved(const QModelIndex &parent, int first, int last)
|
void AppFavoritesModel::onAppRemoved(const QModelIndex &parent, int first, int last)
|
||||||
|
|
|
@ -42,7 +42,7 @@ public:
|
||||||
void addAppToFavorites(const QString &id, const int &index);
|
void addAppToFavorites(const QString &id, const int &index);
|
||||||
void removeAppFromFavorites(const QString &id);
|
void removeAppFromFavorites(const QString &id);
|
||||||
void changeFileState(const QString &url, const bool &favorite);
|
void changeFileState(const QString &url, const bool &favorite);
|
||||||
bool getApp(const QString &appid, DataEntity &app);
|
bool isAppIncluded(const QString &appid);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit AppFavoritesModel(QObject *parent = nullptr);
|
explicit AppFavoritesModel(QObject *parent = nullptr);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include "favorites-config.h"
|
#include "favorites-config.h"
|
||||||
|
#include "favorite-folder-helper.h"
|
||||||
|
|
||||||
#define FOLDER_FILE_PATH ".config/ukui-menu/"
|
#define FOLDER_FILE_PATH ".config/ukui-menu/"
|
||||||
#define FOLDER_FILE_NAME "favorite.json"
|
#define FOLDER_FILE_NAME "favorite.json"
|
||||||
|
@ -138,19 +139,24 @@ void FavoritesConfig::initConfig()
|
||||||
|
|
||||||
m_favoritesList.clear();
|
m_favoritesList.clear();
|
||||||
QJsonArray array = jsonDocument.array();
|
QJsonArray array = jsonDocument.array();
|
||||||
QJsonArray newArray;
|
bool needSync = false;
|
||||||
for (int i = 0; i < array.size(); i++) {
|
for (int i = 0; i < array.size(); i++) {
|
||||||
if (array.at(i).isString()) {
|
if (array.at(i).isString()) {
|
||||||
m_favoritesList.append(array.at(i).toString());
|
QString id = array.at(i).toString();
|
||||||
newArray.append(array.at(i));
|
// 配置文件出现错误, 某一个应用 同时出现在了 应用组的内部和外部
|
||||||
|
if (id.startsWith(APP_ID_SCHEME) && FavoriteFolderHelper::instance()->containApp(id.mid(APP_ID_SCHEME.length()))) {
|
||||||
|
needSync = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
m_favoritesList.append(id);
|
||||||
|
} else {
|
||||||
|
needSync = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
file.open(QFile::WriteOnly);
|
if (needSync) {
|
||||||
jsonDocument.setArray(newArray);
|
sync();
|
||||||
file.write(jsonDocument.toJson());
|
}
|
||||||
file.flush();
|
|
||||||
file.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // UkuiMenu
|
} // UkuiMenu
|
||||||
|
|
|
@ -80,6 +80,11 @@ void FavoritesModel::openMenu(const int &row)
|
||||||
|
|
||||||
void FavoritesModel::addAppToFavorites(const QString &id, const int &index)
|
void FavoritesModel::addAppToFavorites(const QString &id, const int &index)
|
||||||
{
|
{
|
||||||
|
if (AppFavoritesModel::instance().isAppIncluded(id) || FavoriteFolderHelper::instance()->containApp(id)) {
|
||||||
|
qWarning() << "This application is already included in the favorite apps!";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int appOrder;
|
int appOrder;
|
||||||
if (index == -1) {
|
if (index == -1) {
|
||||||
appOrder = FavoritesConfig::instance().configSize();
|
appOrder = FavoritesConfig::instance().configSize();
|
||||||
|
@ -108,8 +113,7 @@ void FavoritesModel::addAppsToNewFolder(const QString &idFrom, const QString &id
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DataEntity app;
|
if (AppFavoritesModel::instance().isAppIncluded(idFrom) && AppFavoritesModel::instance().isAppIncluded(idTo)) {
|
||||||
if (AppFavoritesModel::instance().getApp(idFrom, app) && AppFavoritesModel::instance().getApp(idTo, app)) {
|
|
||||||
FavoriteFolderHelper::instance()->addAppsToNewFolder(idFrom, idTo, "");
|
FavoriteFolderHelper::instance()->addAppsToNewFolder(idFrom, idTo, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue