From eef25f4e9db7e83dbb424cb2ce402fee841faebe Mon Sep 17 00:00:00 2001 From: Philippe Renon Date: Sun, 24 Mar 2013 16:50:17 +0100 Subject: [PATCH] OP-857 OP-876 fixed regression introduced while fixing this issue (settings were not handled well anymore) - added timing debug messages - minor cleanups --- ground/openpilotgcs/src/app/main.cpp | 13 +++- .../src/plugins/coreplugin/mainwindow.cpp | 78 +++++++++++-------- .../serialpluginconfiguration.cpp | 29 ++++--- .../serialpluginconfiguration.h | 13 ++-- 4 files changed, 85 insertions(+), 48 deletions(-) diff --git a/ground/openpilotgcs/src/app/main.cpp b/ground/openpilotgcs/src/app/main.cpp index b641b4aac..98b93ff9a 100644 --- a/ground/openpilotgcs/src/app/main.cpp +++ b/ground/openpilotgcs/src/app/main.cpp @@ -50,6 +50,8 @@ #include #include +#include + enum { OptionIndent = 4, DescriptionIndent = 24 }; static const char *appNameC = "OpenPilot GCS"; @@ -234,6 +236,9 @@ static void overrideSettings(QSettings &settings, int argc, char **argv){ int main(int argc, char **argv) { + QElapsedTimer timer; + timer.start(); + #ifdef Q_OS_MAC // increase the number of file that can be opened in OpenPilot GCS struct rlimit rl; @@ -391,5 +396,11 @@ int main(int argc, char **argv) splash.showProgressMessage(QObject::tr("Application started.")); QTimer::singleShot(1500, &splash, SLOT(close())); - return app.exec(); + qDebug() << "main() took" << timer.elapsed() << "ms"; + + int ret = app.exec(); + + qDebug() << "GCS ran for" << timer.elapsed() << "ms"; + + return ret; } diff --git a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp index 299d75bbb..7dc19c262 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp @@ -84,6 +84,7 @@ #include #include #include +#include #include "dialogs/importsettings.h" #include @@ -268,16 +269,8 @@ void MainWindow::modeChanged(Core::IMode */*mode*/) void MainWindow::extensionsInitialized() { QSettings *qs = m_settings; - QString commandLine; if (!qs->allKeys().count()) { // no user settings, so try to load some default ones - foreach(QString str, qApp->arguments()) { - if (str.contains("configfile")) { - qDebug() << "ass"; - commandLine = str.split("=").at(1); - qDebug() << commandLine; - } - } QDir directory(QCoreApplication::applicationDirPath()); #ifdef Q_OS_MAC directory.cdUp(); @@ -292,6 +285,13 @@ void MainWindow::extensionsInitialized() qDebug() << "Looking for configuration files in:" << directory.absolutePath(); QString filename; + // check if command line contains a config file name + QString commandLine; + foreach(QString str, qApp->arguments()) { + if (str.contains("configfile")) { + commandLine = str.split("=").at(1); + } + } if (!commandLine.isEmpty() && QFile::exists(directory.absolutePath() + QDir::separator() + commandLine)) { // use file name specified on command line filename = directory.absolutePath() + QDir::separator() + commandLine; @@ -315,9 +315,15 @@ void MainWindow::extensionsInitialized() // create settings from file qs = new QSettings(filename, XmlConfig::XmlSettingsFormat); - // replace empty settings with new ones - delete m_settings; - m_settings = qs; + // transfer loaded settings to application settings + QStringList keys = qs->allKeys(); + foreach(QString key, keys) { + m_settings->setValue(key, qs->value(key)); + } + + // and delete loaded settings + delete qs; + qs = m_settings; qDebug() << "Configuration file" << filename << "was loaded."; } @@ -353,6 +359,7 @@ void MainWindow::extensionsInitialized() qApp->setStyleSheet(style); qs->endGroup(); + m_uavGadgetInstanceManager = new UAVGadgetInstanceManager(this); m_uavGadgetInstanceManager->readSettings(qs); @@ -397,15 +404,14 @@ QString MainWindow::loadStyleSheet(QString fileName) { void MainWindow::closeEvent(QCloseEvent *event) { - if ( !m_generalSettings->saveSettingsOnExit() ){ + if (!m_generalSettings->saveSettingsOnExit()) { m_dontSaveSettings = true; } - if ( !m_dontSaveSettings ){ + if (!m_dontSaveSettings) { emit m_coreImpl->saveSettingsRequested(); } - const QList listeners = - ExtensionSystem::PluginManager::instance()->getObjects(); + const QList listeners = ExtensionSystem::PluginManager::instance()->getObjects(); foreach (ICoreListener *listener, listeners) { if (!listener->coreAboutToClose()) { event->ignore(); @@ -415,7 +421,7 @@ void MainWindow::closeEvent(QCloseEvent *event) emit m_coreImpl->coreAboutToClose(); - if ( !m_dontSaveSettings ){ + if (!m_dontSaveSettings) { saveSettings(m_settings); m_uavGadgetInstanceManager->saveSettings(m_settings); } @@ -423,7 +429,6 @@ void MainWindow::closeEvent(QCloseEvent *event) } // Check for desktop file manager file drop events - static bool isDesktopFileManagerDrop(const QMimeData *d, QStringList *files = 0) { if (files) @@ -545,9 +550,7 @@ void MainWindow::registerDefaultContainers() ac->appendGroup(Constants::G_HELP_ABOUT); } -static Command *createSeparator(ActionManager *am, QObject *parent, - const QString &name, - const QList &context) +static Command *createSeparator(ActionManager *am, QObject *parent, const QString &name, const QList &context) { QAction *tmpaction = new QAction(parent); tmpaction->setSeparator(true); @@ -1183,13 +1186,18 @@ void MainWindow::createWorkspaces(QSettings* qs, bool diffOnly) { } else { m_uavGadgetManagers.clear(); } - for (int i = start; i < newWorkspacesNo; ++i) { - const QString name = m_workspaceSettings->name(i); + QElapsedTimer totalTimer; + totalTimer.start(); + for (int i = start; i < newWorkspacesNo; ++i) { + QElapsedTimer timer; + timer.start(); + + const QString name = m_workspaceSettings->name(i); const QString iconName = m_workspaceSettings->iconName(i); const QString modeName = m_workspaceSettings->modeName(i); - uavGadgetManager = new Core::UAVGadgetManager(CoreImpl::instance(), name, - QIcon(iconName), 90-i+1, modeName, this); + uavGadgetManager = new Core::UAVGadgetManager(CoreImpl::instance(), name, QIcon(iconName), 90 - i + 1, modeName, + this); connect(uavGadgetManager, SIGNAL(showUavGadgetMenus(bool, bool)), this, SLOT(showUavGadgetMenus(bool, bool))); @@ -1203,7 +1211,9 @@ void MainWindow::createWorkspaces(QSettings* qs, bool diffOnly) { pm->addObject(uavGadgetManager); m_uavGadgetManagers.append(uavGadgetManager); uavGadgetManager->readSettings(qs); + qDebug() << "MainWindow::createWorkspaces - creating workspace" << name << "took" << timer.elapsed() << "ms"; } + qDebug() << "MainWindow::createWorkspaces - creating workspaces took" << totalTimer.elapsed() << "ms"; } static const char *settingsGroup = "MainWindow"; @@ -1215,7 +1225,7 @@ static const char *modePriorities = "ModePriorities"; void MainWindow::readSettings(QSettings* qs, bool workspaceDiffOnly) { - if ( !qs ){ + if (!qs) { qs = m_settings; } @@ -1237,8 +1247,9 @@ void MainWindow::readSettings(QSettings* qs, bool workspaceDiffOnly) } else { resize(750, 400); } - if (qs->value(QLatin1String(maxKey), false).toBool()) + if (qs->value(QLatin1String(maxKey), false).toBool()) { setWindowState(Qt::WindowMaximized); + } setFullScreen(qs->value(QLatin1String(fullScreenKey), false).toBool()); qs->endGroup(); @@ -1263,9 +1274,11 @@ void MainWindow::readSettings(QSettings* qs, bool workspaceDiffOnly) void MainWindow::saveSettings(QSettings* qs) { - if ( m_dontSaveSettings ) return; + if (m_dontSaveSettings) { + return; + } - if ( !qs ){ + if (!qs) { qs = m_settings; } @@ -1309,7 +1322,7 @@ void MainWindow::saveSettings(QSettings* qs) void MainWindow::readSettings(IConfigurablePlugin* plugin, QSettings* qs) { - if ( !qs ){ + if (!qs) { qs = m_settings; } @@ -1332,8 +1345,11 @@ void MainWindow::readSettings(IConfigurablePlugin* plugin, QSettings* qs) void MainWindow::saveSettings(IConfigurablePlugin* plugin, QSettings* qs) { - if ( m_dontSaveSettings ) return; - if ( !qs ){ + if (m_dontSaveSettings) { + return; + } + + if (!qs) { qs = m_settings; } diff --git a/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.cpp b/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.cpp index 75510f52c..8d8c9bbe6 100644 --- a/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.cpp +++ b/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.cpp @@ -30,11 +30,13 @@ #include "utils/pathutils.h" #include +#include + /** * Loads a saved configuration or defaults if non exist. * */ -SerialPluginConfiguration::SerialPluginConfiguration(QString classId, QSettings* qSettings, QObject *parent) : +SerialPluginConfiguration::SerialPluginConfiguration(QString classId, QSettings *qSettings, QObject *parent) : IUAVGadgetConfiguration(classId, parent), m_speed("57600") { @@ -43,6 +45,10 @@ SerialPluginConfiguration::SerialPluginConfiguration(QString classId, QSettings* settings = Core::ICore::instance()->settings(); } +SerialPluginConfiguration::~SerialPluginConfiguration() +{ +} + /** * Clones a configuration. * @@ -50,7 +56,7 @@ SerialPluginConfiguration::SerialPluginConfiguration(QString classId, QSettings* IUAVGadgetConfiguration *SerialPluginConfiguration::clone() { SerialPluginConfiguration *m = new SerialPluginConfiguration(this->classId()); - m->m_speed=m_speed; + m->m_speed = m_speed; return m; } @@ -61,23 +67,24 @@ IUAVGadgetConfiguration *SerialPluginConfiguration::clone() void SerialPluginConfiguration::saveConfig(QSettings* settings) const { settings->setValue("speed", m_speed); } + void SerialPluginConfiguration::restoresettings() { settings->beginGroup(QLatin1String("SerialConnection")); - QString str=(settings->value(QLatin1String("speed"), tr("")).toString()); - if(str.isEmpty()) - m_speed="57600"; - else - m_speed=str; + QString str = (settings->value(QLatin1String("speed"), tr("")).toString()); + qDebug() << "SerialPluginConfiguration::restoresettings - speed" << str; + if (str.isEmpty()) { + m_speed = "57600"; + } + else { + m_speed = str; + } settings->endGroup(); - } + void SerialPluginConfiguration::savesettings() const { settings->beginGroup(QLatin1String("SerialConnection")); settings->setValue(QLatin1String("speed"), m_speed); settings->endGroup(); } -SerialPluginConfiguration::~SerialPluginConfiguration() -{ -} diff --git a/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.h b/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.h index 793ad102b..41a1e2c5a 100644 --- a/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.h +++ b/ground/openpilotgcs/src/plugins/serialconnection/serialpluginconfiguration.h @@ -40,16 +40,19 @@ class SerialPluginConfiguration : public IUAVGadgetConfiguration { Q_OBJECT public: - explicit SerialPluginConfiguration(QString classId, QSettings* qSettings = 0, QObject *parent = 0); - QString speed() {return m_speed;} - void saveConfig(QSettings* settings) const; + explicit SerialPluginConfiguration(QString classId, QSettings *qSettings = 0, QObject *parent = 0); + virtual ~SerialPluginConfiguration(); + + QString speed() { return m_speed; } + void saveConfig(QSettings *settings) const; IUAVGadgetConfiguration *clone(); void savesettings() const; void restoresettings(); - virtual ~SerialPluginConfiguration(); + private: QString m_speed; - QSettings* settings; + QSettings *settings; + public slots: void setSpeed(QString speed) { m_speed = speed; }