From 14cba59ab3de5fa74cb3a3c1f0d0406971d08f28 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 4 Jun 2017 20:42:16 +0200 Subject: [PATCH 1/6] Logging: distinguish different failures in module instantiation. --- src/libcalamaresui/modulesystem/ViewModule.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libcalamaresui/modulesystem/ViewModule.cpp b/src/libcalamaresui/modulesystem/ViewModule.cpp index a06ec3fba..ba054a8b1 100644 --- a/src/libcalamaresui/modulesystem/ViewModule.cpp +++ b/src/libcalamaresui/modulesystem/ViewModule.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -51,14 +52,14 @@ ViewModule::loadSelf() PluginFactory* pf = qobject_cast< PluginFactory* >( m_loader->instance() ); if ( !pf ) { - cDebug() << Q_FUNC_INFO << m_loader->errorString(); + cDebug() << Q_FUNC_INFO << "No factory:" << m_loader->errorString(); return; } m_viewStep = pf->create< Calamares::ViewStep >(); if ( !m_viewStep ) { - cDebug() << Q_FUNC_INFO << m_loader->errorString(); + cDebug() << Q_FUNC_INFO << "create() failed" << m_loader->errorString(); return; } // cDebug() << "ViewModule loading self for instance" << instanceKey() From 17b8a9d8842e2a7f68b07d83c40438a73af3afdb Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 4 Jun 2017 17:47:19 -0400 Subject: [PATCH 2/6] Logging: format the multi-line warning about no-supported-languages --- src/modules/locale/LocalePage.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index 97826fa84..f2e9ad9a9 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -1,6 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014-2016, Teo Mrnjavac + * Copyright 2017, Adriaan de Groot * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -350,14 +351,16 @@ LocalePage::init( const QString& initialRegion, if ( m_localeGenLines.isEmpty() ) { cDebug() << "WARNING: cannot acquire a list of available locales." - << "The locale and localecfg modules will be broken as long as this " + << "The locale and localecfg modules will be broken as long as this " "system does not provide" - << " * a /usr/share/i18n/SUPPORTED file" - << "\tOR" - << " * a well-formed /etc/locale.gen" - << "\tOR" - << " * a complete pre-compiled locale-gen database which allows complete locale -a output."; - + << "\n\t " + << "* a well-formed" + << supported.fileName() + << "\n\tOR" + << "* a well-formed" + << (localeGenPath.isEmpty() ? QLatin1Literal("/etc/locale.gen") : localeGenPath) + << "\n\tOR" + << "* a complete pre-compiled locale-gen database which allows complete locale -a output."; return; // something went wrong and there's nothing we can do about it. } @@ -432,14 +435,7 @@ LocalePage::guessLocaleConfiguration() // If we cannot say anything about available locales if ( m_localeGenLines.isEmpty() ) { - cDebug() << "WARNING: cannot acquire a list of available locales." - << "The locale and localecfg modules will be broken as long as this " - "system does not provide" - << " * a /usr/share/i18n/SUPPORTED file" - << "\tOR" - << " * a well-formed /etc/locale.gen" - << "\tOR" - << " * a complete pre-compiled locale-gen database which allows complete locale -a output."; + cDebug() << "WARNING: guessLocaleConfiguration can't guess from an empty list."; return LocaleConfiguration::createDefault(); } From d29acf4a06170d469d1f15594c08f8882e2c3cde Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Tue, 6 Jun 2017 05:46:12 -0400 Subject: [PATCH 3/6] Logging: add a global storage dump method --- src/libcalamares/GlobalStorage.cpp | 11 +++++++++++ src/libcalamares/GlobalStorage.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 5cef6f931..1ade3d3bc 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -18,6 +18,8 @@ #include "GlobalStorage.h" +#include "utils/Logger.h" + #ifdef WITH_PYTHON #include "PythonHelper.h" @@ -80,6 +82,15 @@ GlobalStorage::value( const QString& key ) const return m.value( key ); } +void +GlobalStorage::debugDump() const +{ + for ( auto it = m.cbegin(); it != m.cend(); ++it ) + { + cDebug() << it.key() << '\t' << it.value(); + } +} + } // namespace Calamares #ifdef WITH_PYTHON diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h index 20af3978c..301800adc 100644 --- a/src/libcalamares/GlobalStorage.h +++ b/src/libcalamares/GlobalStorage.h @@ -57,6 +57,8 @@ public: int remove( const QString& key ); QVariant value( const QString& key ) const; + void debugDump() const; + signals: void changed(); From 3ae12f2573c4ff26a34e6a9959f8465c7c6a01a0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 5 Jun 2017 14:50:27 -0400 Subject: [PATCH 4/6] Keyboard: avoid multiple connects When selecting keyboard layout, pause, then select another, the QTimer wasn't being disconnected from the previously selected language, so the second selection would fire the timeout, and then call *two* slots .. and then three, ... Disconnect when the timer fires, too. --- src/modules/keyboard/KeyboardPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/keyboard/KeyboardPage.cpp b/src/modules/keyboard/KeyboardPage.cpp index 9dafae8b7..117530a88 100644 --- a/src/modules/keyboard/KeyboardPage.cpp +++ b/src/modules/keyboard/KeyboardPage.cpp @@ -323,6 +323,7 @@ KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWi QProcess::execute( QString( "setxkbmap -layout \"%1\" -variant \"%2\"" ) .arg( layout, variant ).toUtf8() ); cDebug() << "xkbmap selection changed to: " << layout << "-" << variant; + m_setxkbmapTimer.disconnect( this ); } ); m_setxkbmapTimer.start( QApplication::keyboardInputInterval() ); From e0988a5e1970691a5d487fb248a6f1c9a196fca5 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 5 Jun 2017 14:02:41 +0100 Subject: [PATCH 5/6] Timezones: make some TZ+0 pixels transparent, since otherwise it claims Amsterdam --- src/modules/locale/images/timezone_0.0.png | Bin 14040 -> 13219 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/modules/locale/images/timezone_0.0.png b/src/modules/locale/images/timezone_0.0.png index 987f6caa313ce0cac3b6aa8ce795d16cf53727f3..6178a0ce19bfe0d5f4f30d15f72ce1fb234d8cbc 100644 GIT binary patch literal 13219 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 literal 14040 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 b=-V2x*w~pQ?hB9sjnJgU6~szJ^nCsY Date: Mon, 5 Jun 2017 09:31:53 -0400 Subject: [PATCH 6/6] Locale: refactor to update labels in one place only --- src/modules/locale/LocalePage.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/modules/locale/LocalePage.cpp b/src/modules/locale/LocalePage.cpp index f2e9ad9a9..81c324021 100644 --- a/src/modules/locale/LocalePage.cpp +++ b/src/modules/locale/LocalePage.cpp @@ -172,9 +172,7 @@ LocalePage::LocalePage( QWidget* parent ) !dlg->selectedLCLocale().isEmpty() ) { m_selectedLocaleConfiguration.lang = dlg->selectedLCLocale(); - m_localeLabel->setText( tr( "The system language will be set to %1." ) - .arg( prettyLCLocale( - m_selectedLocaleConfiguration.lang ) ) ); + this->updateLocaleLabels(); } dlg->deleteLater(); @@ -204,9 +202,7 @@ LocalePage::LocalePage( QWidget* parent ) m_selectedLocaleConfiguration.lc_measurement = dlg->selectedLCLocale(); m_selectedLocaleConfiguration.lc_identification = dlg->selectedLCLocale(); - m_formatsLabel->setText( tr( "The numbers and dates locale will be set to %1." ) - .arg( prettyLCLocale( - m_selectedLocaleConfiguration.lc_numeric ) ) ); + this->updateLocaleLabels(); } dlg->deleteLater();