Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 15 additions & 7 deletions src/dde-control-center/dccmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ DccManager::DccManager(QObject *parent)
QJSEngine::setObjectOwnership(m_noParentObjects, QQmlEngine::CppOwnership);

initConfig();
connect(m_plugins, &PluginManager::addObject, this, &DccManager::addObject, Qt::QueuedConnection);
connect(m_plugins, &PluginManager::addObject, this, &DccManager::addObject);
connect(m_plugins, &PluginManager::loadAllFinished, this, &DccManager::tryShow, Qt::QueuedConnection);
m_showTimer = new QTimer(this);
connect(m_showTimer, &QTimer::timeout, this, &DccManager::tryShow);
Expand Down Expand Up @@ -468,22 +468,27 @@ void DccManager::initConfig()
connect(m_dconfig, &DConfig::valueChanged, this, &DccManager::updateModuleConfig);
}

bool DccManager::contains(const QSet<QString> &urls, const DccObject *obj)
bool DccManager::containsByName(const QSet<QString> &urls, const QString &name)
{
for (auto &&url : urls) {
if (url.contains("*")) {
if (isMatch(url, obj)) {
if (isMatchByName(url, name)) {
return true;
}
} else {
if (isEqual(url, obj)) {
if (isEqualByName(url, name)) {
return true;
}
}
}
return false;
}

bool DccManager::contains(const QSet<QString> &urls, const DccObject *obj)
{
return containsByName(urls, obj->parentName() + "/" + obj->name());
}

QStringList DccManager::splitUrl(const QString &url, QString &targetName)
{
QStringList paths = url.split("/", Qt::SkipEmptyParts);
Expand Down Expand Up @@ -777,7 +782,7 @@ void DccManager::clearShowParam()

void DccManager::tryShow()
{
if (m_showUrl.isEmpty() && !m_activeObject) {
if (m_showUrl.isEmpty() && m_showTimer) {
clearShowParam();
showPage(m_root, QString());
return;
Expand All @@ -801,6 +806,9 @@ void DccManager::tryShow()
QDBusConnection::sessionBus().send(m_showMessage.createErrorReply(QDBusError::InvalidArgs, QString("not found url:") + m_showUrl));
}
clearShowParam();
if (!m_activeObject) {
showPage(m_root, QString());
}
}
}

Expand Down Expand Up @@ -1098,9 +1106,9 @@ void DccManager::clearData()

qCDebug(dccLog()) << "delete clearData hide:" << m_hideObjects->getChildren().size() << "noAdd:" << m_noAddObjects->getChildren().size() << "noParent" << m_noParentObjects->getChildren().size();
QVector<DccObject *> deleteObjects;
deleteObjects.append(m_hideObjects);
deleteObjects.append(m_noAddObjects);
deleteObjects.append(m_noParentObjects);
deleteObjects.append(m_noAddObjects);
deleteObjects.append(m_hideObjects);
while (!deleteObjects.isEmpty()) {
auto obj = deleteObjects.takeFirst();
QVector<DccObject *> children = obj->getChildren();
Expand Down
12 changes: 7 additions & 5 deletions src/dde-control-center/dccmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,14 @@

inline const QSet<QString> &hideModule() const { return m_hideModule; }

static bool isMatchByName(const QString &url, const QString &name);
static bool isMatch(const QString &url, const DccObject *obj);
static bool isEqualByName(const QString &url, const QString &name);
static bool isEqual(const QString &url, const DccObject *obj);
static bool containsByName(const QSet<QString> &urls, const QString &name);
static bool contains(const QSet<QString> &urls, const DccObject *obj);

public Q_SLOTS:

Check warning on line 69 in src/dde-control-center/dccmanager.h

View workflow job for this annotation

GitHub Actions / cppcheck

There is an unknown macro here somewhere. Configuration is required. If Q_SLOTS is a macro then please configure it.
DccObject *object(const QString &name) override;
void addObject(DccObject *obj) override;
void removeObject(DccObject *obj) override;
Expand Down Expand Up @@ -89,12 +96,7 @@

private:
void initConfig();
bool contains(const QSet<QString> &urls, const DccObject *obj);
QStringList splitUrl(const QString &url, QString &targetName);
bool isMatchByName(const QString &url, const QString &name);
bool isMatch(const QString &url, const DccObject *obj);
bool isEqualByName(const QString &url, const QString &name);
bool isEqual(const QString &url, const DccObject *obj);
DccObject *findObject(const QString &url);
QVector<DccObject *> findObjects(const QString &url, bool one = false);
const DccObject *findParent(const DccObject *obj);
Expand Down
Loading
Loading