Skip to content

Commit

Permalink
feat: don't load disabled applet by option
Browse files Browse the repository at this point in the history
  don't load some apple.
  list all applet by tree struct.
  • Loading branch information
18202781743 committed Nov 1, 2023
1 parent c4819ed commit d58d9ef
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
27 changes: 27 additions & 0 deletions frame/pluginloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ class DPluginLoaderPrivate : public DObjectPrivate
{
D_Q(DPluginLoader);

m_plugins.clear();

for (auto item : builtinPluginPaths()) {
q->addPluginDir(item);
}
Expand All @@ -63,6 +65,11 @@ class DPluginLoaderPrivate : public DObjectPrivate
if (!info.isValid())
continue;

if (m_disabledPlugins.contains(info.pluginId())) {
qCDebug(dsLog()) << "Don't load disabled applet." << info.pluginId();
continue;
}

if (m_plugins.contains(info.pluginId()))
continue;

Expand Down Expand Up @@ -163,6 +170,7 @@ class DPluginLoaderPrivate : public DObjectPrivate

QStringList m_pluginDirs;
QMap<QString, DPluginMetaData> m_plugins;
QStringList m_disabledPlugins;

D_DECLARE_PUBLIC(DPluginLoader)
};
Expand Down Expand Up @@ -224,6 +232,25 @@ void DPluginLoader::addPluginDir(const QString &dir)
QCoreApplication::addLibraryPath(dir);
}

QStringList DPluginLoader::disabledApplets() const
{
D_DC(DPluginLoader);
return d->m_disabledPlugins;
}

void DPluginLoader::setDisabledApplets(const QStringList &pluginIds)
{
D_D(DPluginLoader);
if (pluginIds.isEmpty() || d->m_disabledPlugins == pluginIds)
return;
for (auto item : pluginIds) {
if (item.isEmpty() || d->m_disabledPlugins.contains(item))
continue;
d->m_disabledPlugins << item;
}
d->init();
}

DApplet *DPluginLoader::loadApplet(const QString &pluginId)
{
D_D(DPluginLoader);
Expand Down
3 changes: 3 additions & 0 deletions frame/pluginloader.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ class DS_SHARE DPluginLoader : public QObject, public DTK_CORE_NAMESPACE::DObjec
void addPackageDir(const QString &dir);
void addPluginDir(const QString &dir);

QStringList disabledApplets() const;
void setDisabledApplets(const QStringList &pluginIds);

DApplet *loadApplet(const QString &pluginId);

QList<DPluginMetaData> childrenPlugin(const QString &pluginId) const;
Expand Down
28 changes: 28 additions & 0 deletions shell/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@
DS_USE_NAMESPACE
DGUI_USE_NAMESPACE

void outputPluginTreeStruct(const DPluginMetaData &plugin, int level)
{
const QString separator(level * 4, ' ');
qInfo() << qPrintable(separator + plugin.pluginId());
for (auto item : DPluginLoader::instance()->childrenPlugin(plugin.pluginId())) {
outputPluginTreeStruct(item, level + 1);
}
}

int main(int argc, char *argv[])
{
QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
Expand All @@ -29,9 +38,24 @@ int main(int argc, char *argv[])
parser.addOption(coronaOption);
QCommandLineOption testOption(QStringList() << "t" << "test", "application test.");
parser.addOption(testOption);
QCommandLineOption disableAppletOption("d", "disabled applet.", "disable-applet", QString());
parser.addOption(disableAppletOption);
parser.addPositionalArgument("list", "list all applet.");

parser.process(a);

const auto positions = parser.positionalArguments();

if (positions.size() >= 1) {
const auto subcommand = positions[0];
if (subcommand == "list") {
for (auto item : DPluginLoader::instance()->rootPlugins()) {
outputPluginTreeStruct(item, 0);
}
return 0;
}
}

Dtk::Core::DLogManager::registerConsoleAppender();
Dtk::Core::DLogManager::registerFileAppender();
Dtk::Core::DLogManager::registerJournalAppender();
Expand All @@ -48,6 +72,10 @@ int main(int argc, char *argv[])
pluginIds << item.pluginId();
}
}
if (parser.isSet(disableAppletOption)) {
const auto disabledApplets = parser.values(disableAppletOption);
DPluginLoader::instance()->setDisabledApplets(disabledApplets);
}

qInfo() << "Loading plugin id" << pluginIds;
for (auto pluginId : pluginIds) {
Expand Down

0 comments on commit d58d9ef

Please sign in to comment.