diff --git a/data/debug-interface/styles.css b/data/debug-interface/styles.css index 5e4f2f22..946d4cc0 100644 --- a/data/debug-interface/styles.css +++ b/data/debug-interface/styles.css @@ -263,7 +263,7 @@ button::-moz-focus-inner { border: 0; } .categories-area { display: -webkit-flex; display: flex; - flex-flow: row nowrap; + flex-flow: row wrap; } .debug-category { @@ -335,11 +335,11 @@ button::-moz-focus-inner { border: 0; } } input:checked + .slider { - background-color: #2196F3; + background-color: #57baae; } input:focus + .slider { - box-shadow: 0 0 1px #2196F3; + box-shadow: 0 0 1px #57baae; } input:checked + .slider:before { diff --git a/libnymea-core/debugserverhandler.cpp b/libnymea-core/debugserverhandler.cpp index 44709bd1..c6929011 100644 --- a/libnymea-core/debugserverhandler.cpp +++ b/libnymea-core/debugserverhandler.cpp @@ -1720,42 +1720,62 @@ QByteArray DebugServerHandler::createDebugXmlDocument() writer.writeCharacters(""); writer.writeEndElement(); // textarea + writer.writeEmptyElement("hr"); + //: The network section of the debug interface + writer.writeTextElement("h2", tr("Logging filters")); + writer.writeEmptyElement("hr"); + writer.writeStartElement("div"); writer.writeAttribute("class", "categories-area"); - // Application debug category - writer.writeStartElement("div"); - writer.writeAttribute("class", "debug-category"); - writer.writeTextElement("p", "Application"); - writer.writeStartElement("label"); - writer.writeAttribute("class", "switch"); - writer.writeStartElement("input"); - writer.writeAttribute("type", "checkbox"); - writer.writeEndElement(); // input - writer.writeStartElement("span"); - writer.writeAttribute("class", "slider round"); - writer.writeCharacters(""); - writer.writeEndElement(); // span - writer.writeEndElement(); // label - writer.writeEndElement(); // div debug-category + QStringList loggingCategories = NymeaCore::loggingFilters(); + loggingCategories.sort(); + + foreach (const QString &loggingCategory, loggingCategories) { + writer.writeStartElement("div"); + writer.writeAttribute("class", "debug-category"); + writer.writeTextElement("p", loggingCategory); + writer.writeStartElement("label"); + writer.writeAttribute("class", "switch"); + writer.writeStartElement("input"); + writer.writeAttribute("type", "checkbox"); + writer.writeEndElement(); // input + writer.writeStartElement("span"); + writer.writeAttribute("class", "slider round"); + writer.writeCharacters(""); + writer.writeEndElement(); // span + writer.writeEndElement(); // label + writer.writeEndElement(); // div debug-category + } + + writer.writeEndElement(); // div categories-area + + writer.writeEmptyElement("hr"); + //: The network section of the debug interface + writer.writeTextElement("h2", tr("Logging filters plugins")); + writer.writeEmptyElement("hr"); writer.writeStartElement("div"); - writer.writeAttribute("class", "debug-category"); - writer.writeTextElement("p", "DeviceManager"); - writer.writeStartElement("label"); - writer.writeAttribute("class", "switch"); - writer.writeStartElement("input"); - writer.writeAttribute("type", "checkbox"); - writer.writeEndElement(); // input - writer.writeStartElement("span"); - writer.writeAttribute("class", "slider round"); - writer.writeCharacters(""); - writer.writeEndElement(); // span - writer.writeEndElement(); // label - writer.writeEndElement(); // div debug-category + writer.writeAttribute("class", "categories-area"); - - // Provide options for debug categories + QStringList loggingCategoriesPlugins = NymeaCore::loggingFiltersPlugins(); + loggingCategoriesPlugins.sort(); + foreach (const QString &loggingCategory, loggingCategoriesPlugins) { + writer.writeStartElement("div"); + writer.writeAttribute("class", "debug-category"); + writer.writeTextElement("p", loggingCategory); + writer.writeStartElement("label"); + writer.writeAttribute("class", "switch"); + writer.writeStartElement("input"); + writer.writeAttribute("type", "checkbox"); + writer.writeEndElement(); // input + writer.writeStartElement("span"); + writer.writeAttribute("class", "slider round"); + writer.writeCharacters(""); + writer.writeEndElement(); // span + writer.writeEndElement(); // label + writer.writeEndElement(); // div debug-category + } writer.writeEndElement(); // div categories-area diff --git a/libnymea-core/nymeacore.cpp b/libnymea-core/nymeacore.cpp index b5686a1b..5252e40a 100644 --- a/libnymea-core/nymeacore.cpp +++ b/libnymea-core/nymeacore.cpp @@ -690,6 +690,65 @@ QStringList NymeaCore::getAvailableLanguages() return availableLanguages; } +/*! Returns the list of logging categories from the core and the libnymea. */ +QStringList NymeaCore::loggingFilters() +{ + QStringList loggingFilters = { + "Warnings", + "Application", + "System", + "Platform", + "PlatformUpdate", + "PlatformZeroConf", + "Device", + "DeviceManager", + "RuleEngine", + "RuleEngineDebug", + "Hardware", + "Bluetooth", + "LogEngine", + "ServerManager", + "TcpServer", + "TcpServerTraffic", + "WebServer", + "WebServerTraffic", + "DebugServer", + "WebSocketServer", + "WebSocketServerTraffic", + "JsonRpc", + "JsonRpcTraffic", + "Rest", + "OAuth2", + "TimeManager", + "Coap", + "Avahi", + "AvahiDebug", + "UPnP", + "Cloud", + "CloudTraffic", + "NetworkManager", + "UserManager", + "AWS", + "AWSTraffic", + "BluetoothServer", + "BluetoothServerTraffic", + "Mqtt", + "Translations" + }; + + return loggingFilters; +} + +QStringList NymeaCore::loggingFiltersPlugins() +{ + QStringList loggingFiltersPlugins; + foreach (const QJsonObject &pluginMetadata, DeviceManagerImplementation::pluginsMetadata()) { + QString pluginName = pluginMetadata.value("name").toString(); + loggingFiltersPlugins << pluginName.left(1).toUpper() + pluginName.mid(1); + } + return loggingFiltersPlugins; +} + /*! Returns a pointer to the \l{BluetoothServer} instance owned by NymeaCore. */ BluetoothServer *NymeaCore::bluetoothServer() const { diff --git a/libnymea-core/nymeacore.h b/libnymea-core/nymeacore.h index 8b10dee2..4b6a1b78 100644 --- a/libnymea-core/nymeacore.h +++ b/libnymea-core/nymeacore.h @@ -96,6 +96,8 @@ public: Platform *platform() const; static QStringList getAvailableLanguages(); + static QStringList loggingFilters(); + static QStringList loggingFiltersPlugins(); signals: void initialized(); diff --git a/server/main.cpp b/server/main.cpp index b8a6d054..4d4037b5 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -97,55 +97,9 @@ int main(int argc, char *argv[]) application.setApplicationName("nymead"); application.setApplicationVersion(NYMEA_VERSION_STRING); - // logging filers for core and libnymea - QStringList loggingFilters = { - "Warnings", - "Application", - "System", - "Platform", - "PlatformUpdate", - "PlatformZeroConf", - "Device", - "DeviceManager", - "RuleEngine", - "RuleEngineDebug", - "Hardware", - "Bluetooth", - "LogEngine", - "ServerManager", - "TcpServer", - "TcpServerTraffic", - "WebServer", - "WebServerTraffic", - "DebugServer", - "WebSocketServer", - "WebSocketServerTraffic", - "JsonRpc", - "JsonRpcTraffic", - "Rest", - "OAuth2", - "TimeManager", - "Coap", - "Avahi", - "AvahiDebug", - "UPnP", - "Cloud", - "CloudTraffic", - "NetworkManager", - "UserManager", - "AWS", - "AWSTraffic", - "BluetoothServer", - "BluetoothServerTraffic", - "Mqtt", - "Translations" - }; - - QStringList loggingFiltersPlugins; - foreach (const QJsonObject &pluginMetadata, DeviceManagerImplementation::pluginsMetadata()) { - QString pluginName = pluginMetadata.value("name").toString(); - loggingFiltersPlugins << pluginName.left(1).toUpper() + pluginName.mid(1); - } + // Logging filers for core + libnymea and plugins + QStringList loggingFilters = NymeaCore::loggingFilters(); + QStringList loggingFiltersPlugins = NymeaCore::loggingFiltersPlugins(); // Translator for the server application QTranslator translator;