mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 10:37:35 +02:00
Allow ordered list of preferred plugins
This commit is contained in:
parent
932838b1e3
commit
992fa63932
3 changed files with 30 additions and 22 deletions
|
@ -2959,9 +2959,15 @@ void Application::loadSettings() {
|
||||||
Menu::getInstance()->loadSettings();
|
Menu::getInstance()->loadSettings();
|
||||||
|
|
||||||
// If there is a preferred plugin, we probably messed it up with the menu settings, so fix it.
|
// If there is a preferred plugin, we probably messed it up with the menu settings, so fix it.
|
||||||
if (auto plugin = PluginManager::getInstance()->getPreferredDisplayPlugin()) {
|
auto plugins = PluginManager::getInstance()->getPreferredDisplayPlugins();
|
||||||
Q_ASSERT(plugin == getActiveDisplayPlugin());
|
for (auto plugin : plugins) {
|
||||||
Menu::getInstance()->setIsOptionChecked(plugin->getName(), true);
|
auto menu = Menu::getInstance();
|
||||||
|
if (auto action = menu->getActionForOption(plugin->getName())) {
|
||||||
|
action->setChecked(true);
|
||||||
|
action->trigger();
|
||||||
|
// Find and activat5ed highest priority plugin, bail for the rest
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getMyAvatar()->loadData();
|
getMyAvatar()->loadData();
|
||||||
|
@ -4945,9 +4951,9 @@ void Application::postLambdaEvent(std::function<void()> f) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::initPlugins(const QStringList& arguments) {
|
void Application::initPlugins(const QStringList& arguments) {
|
||||||
QCommandLineOption display("display", "Preferred display", "display");
|
QCommandLineOption display("display", "Preferred displays", "displays");
|
||||||
QCommandLineOption disableDisplays("disable-displays", "Displays to disable", "display");
|
QCommandLineOption disableDisplays("disable-displays", "Displays to disable", "displays");
|
||||||
QCommandLineOption disableInputs("disable-inputs", "Inputs to disable", "input");
|
QCommandLineOption disableInputs("disable-inputs", "Inputs to disable", "inputs");
|
||||||
|
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.addOption(display);
|
parser.addOption(display);
|
||||||
|
@ -4956,9 +4962,9 @@ void Application::initPlugins(const QStringList& arguments) {
|
||||||
parser.parse(arguments);
|
parser.parse(arguments);
|
||||||
|
|
||||||
if (parser.isSet(display)) {
|
if (parser.isSet(display)) {
|
||||||
auto preferredDisplay = parser.value(display);
|
auto preferredDisplays = parser.value(display).split(',', QString::SkipEmptyParts);
|
||||||
qInfo() << "Setting prefered display plugin:" << preferredDisplay;
|
qInfo() << "Setting prefered display plugins:" << preferredDisplays;
|
||||||
PluginManager::getInstance()->setPreferredDisplayPlugin(preferredDisplay);
|
PluginManager::getInstance()->setPreferredDisplayPlugins(preferredDisplays);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parser.isSet(disableDisplays)) {
|
if (parser.isSet(disableDisplays)) {
|
||||||
|
|
|
@ -52,7 +52,7 @@ QString getPluginIIDFromMetaData(QJsonObject object) {
|
||||||
return object[IID_KEY].toString();
|
return object[IID_KEY].toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString preferredDisplayPluginName;
|
QStringList preferredDisplayPlugins;
|
||||||
QStringList disabledDisplays;
|
QStringList disabledDisplays;
|
||||||
QStringList disabledInputs;
|
QStringList disabledInputs;
|
||||||
|
|
||||||
|
@ -178,27 +178,29 @@ const InputPluginList& PluginManager::getInputPlugins() {
|
||||||
return inputPlugins;
|
return inputPlugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginManager::setPreferredDisplayPlugin(const QString& display) {
|
void PluginManager::setPreferredDisplayPlugins(const QStringList& displays) {
|
||||||
preferredDisplayPluginName = display;
|
preferredDisplayPlugins = displays;
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayPluginPointer PluginManager::getPreferredDisplayPlugin() {
|
DisplayPluginList PluginManager::getPreferredDisplayPlugins() {
|
||||||
static DisplayPluginPointer displayPlugin;
|
static DisplayPluginList displayPlugins;
|
||||||
|
|
||||||
static std::once_flag once;
|
static std::once_flag once;
|
||||||
std::call_once(once, [&] {
|
std::call_once(once, [&] {
|
||||||
// Grab the built in plugins
|
// Grab the built in plugins
|
||||||
auto plugins = getDisplayPlugins();
|
auto plugins = getDisplayPlugins();
|
||||||
|
|
||||||
auto it = std::find_if(plugins.begin(), plugins.end(), [](DisplayPluginPointer plugin) {
|
for (auto pluginName : preferredDisplayPlugins) {
|
||||||
return plugin->getName() == preferredDisplayPluginName;
|
auto it = std::find_if(plugins.begin(), plugins.end(), [&](DisplayPluginPointer plugin) {
|
||||||
});
|
return plugin->getName() == pluginName;
|
||||||
if (it != plugins.end()) {
|
});
|
||||||
displayPlugin = *it;
|
if (it != plugins.end()) {
|
||||||
|
displayPlugins.push_back(*it);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return displayPlugin;
|
return displayPlugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,9 @@ public:
|
||||||
const DisplayPluginList& getDisplayPlugins();
|
const DisplayPluginList& getDisplayPlugins();
|
||||||
const InputPluginList& getInputPlugins();
|
const InputPluginList& getInputPlugins();
|
||||||
|
|
||||||
DisplayPluginPointer getPreferredDisplayPlugin();
|
DisplayPluginList getPreferredDisplayPlugins();
|
||||||
|
void setPreferredDisplayPlugins(const QStringList& displays);
|
||||||
|
|
||||||
void setPreferredDisplayPlugin(const QString& display);
|
|
||||||
void disableDisplayPlugin(const QString& name);
|
void disableDisplayPlugin(const QString& name);
|
||||||
void disableDisplays(const QStringList& displays);
|
void disableDisplays(const QStringList& displays);
|
||||||
void disableInputs(const QStringList& inputs);
|
void disableInputs(const QStringList& inputs);
|
||||||
|
|
Loading…
Reference in a new issue