[education/gcompris] /: core, add command-line option to hide/show the Home button in the bar
Johnny Jazeix
null at kde.org
Sun Nov 30 14:28:08 GMT 2025
Git commit 8f753e005c423afdec0185132d8066edd9bbfeb5 by Johnny Jazeix.
Committed on 30/11/2025 at 14:28.
Pushed by jjazeix into branch 'master'.
core, add command-line option to hide/show the Home button in the bar
M +8 -0 docs/docbook/index.docbook
M +10 -0 src/core/ApplicationSettings.cpp
M +14 -0 src/core/ApplicationSettings.h
M +1 -1 src/core/Bar.qml
M +1 -0 src/core/ChangeLog.qml
M +14 -0 src/core/main.cpp
https://invent.kde.org/education/gcompris/-/commit/8f753e005c423afdec0185132d8066edd9bbfeb5
diff --git a/docs/docbook/index.docbook b/docs/docbook/index.docbook
index f85b4d6e68..36db606ffc 100644
--- a/docs/docbook/index.docbook
+++ b/docs/docbook/index.docbook
@@ -317,6 +317,14 @@ or make it show real car images instead of filled rectangles (traffic).</para>
<entry>Disable the kiosk mode (default).</entry>
</row>
<row>
+<entry>--show-home-button</entry>
+<entry>Show the Home button in the bar (default).</entry>
+</row>
+<row>
+<entry>--hide-home-button</entry>
+<entry>Hide the Home button in the bar.</entry>
+</row>
+<row>
<entry>--renderer={renderer}</entry>
<entry>Specify which graphical renderer to use. On all platforms, “opengl” and software are available. On Windows, you can use “direct3d11” or “direct3d12” (if it was compiled with Qt ≥ 6.6). On &macOS;, you can use “metal”.</entry>
</row>
diff --git a/src/core/ApplicationSettings.cpp b/src/core/ApplicationSettings.cpp
index 11ecc7c310..7af561308a 100644
--- a/src/core/ApplicationSettings.cpp
+++ b/src/core/ApplicationSettings.cpp
@@ -64,6 +64,7 @@ namespace {
const char *DEFAULT_CURSOR = "defaultCursor";
const char *NO_CURSOR = "noCursor";
const char *KIOSK_KEY = "kiosk";
+ const char *HOME_BUTTON_VISIBLE_KEY = "homeButtonVisible";
const char *SECTION_VISIBLE = "sectionVisible";
const char *EXIT_CONFIRMATION = "exitConfirmation";
@@ -110,6 +111,7 @@ ApplicationSettings::ApplicationSettings(const QString &configPath, QObject *par
#else
m_isKioskMode = m_config.value(KIOSK_KEY, false).toBool();
#endif
+ m_isHomeButtonVisible = m_config.value(HOME_BUTTON_VISIBLE_KEY, true).toBool();
m_sectionVisible = m_config.value(SECTION_VISIBLE, true).toBool();
m_exitConfirmation = m_config.value(EXIT_CONFIRMATION, ApplicationInfo::getInstance()->isMobile() ? true : false).toBool();
@@ -166,6 +168,7 @@ ApplicationSettings::ApplicationSettings(const QString &configPath, QObject *par
connect(this, &ApplicationSettings::sectionVisibleChanged, this, &ApplicationSettings::notifySectionVisibleChanged);
connect(this, &ApplicationSettings::exitConfirmationChanged, this, &ApplicationSettings::notifyExitConfirmationChanged);
connect(this, &ApplicationSettings::kioskModeChanged, this, &ApplicationSettings::notifyKioskModeChanged);
+ connect(this, &ApplicationSettings::homeButtonVisibleChanged, this, &ApplicationSettings::notifyHomeButtonVisibleChanged);
connect(this, &ApplicationSettings::downloadServerUrlChanged, this, &ApplicationSettings::notifyDownloadServerUrlChanged);
connect(this, &ApplicationSettings::cachePathChanged, this, &ApplicationSettings::notifyCachePathChanged);
connect(this, &ApplicationSettings::userDataPathChanged, this, &ApplicationSettings::notifyUserDataPathChanged);
@@ -202,6 +205,7 @@ ApplicationSettings::~ApplicationSettings()
m_config.setValue(FILTER_LEVEL_MAX, m_filterLevelMax);
}
m_config.setValue(KIOSK_KEY, m_isKioskMode);
+ m_config.setValue(HOME_BUTTON_VISIBLE_KEY, m_isHomeButtonVisible);
m_config.setValue(SECTION_VISIBLE, m_sectionVisible);
m_config.setValue(EXIT_CONFIRMATION, m_exitConfirmation);
m_config.setValue(DEFAULT_CURSOR, m_defaultCursor);
@@ -359,6 +363,12 @@ void ApplicationSettings::notifyKioskModeChanged()
qDebug() << "notifyKioskMode: " << m_isKioskMode;
}
+void ApplicationSettings::notifyHomeButtonVisibleChanged()
+{
+ updateValueInConfig(GENERAL_GROUP_KEY, HOME_BUTTON_VISIBLE_KEY, m_isHomeButtonVisible);
+ qDebug() << "notifyHomeButtonVisible: " << m_isHomeButtonVisible;
+}
+
void ApplicationSettings::notifySectionVisibleChanged()
{
updateValueInConfig(GENERAL_GROUP_KEY, SECTION_VISIBLE, m_sectionVisible);
diff --git a/src/core/ApplicationSettings.h b/src/core/ApplicationSettings.h
index 14666dfafa..6ba679c97d 100644
--- a/src/core/ApplicationSettings.h
+++ b/src/core/ApplicationSettings.h
@@ -174,6 +174,10 @@ class ApplicationSettings : public QObject
*/
Q_PROPERTY(bool isKioskMode READ isKioskMode WRITE setKioskMode NOTIFY kioskModeChanged)
+ /**
+ * Whether hide/show home button in the bar.
+ */
+ Q_PROPERTY(bool isHomeButtonVisible READ isHomeButtonVisible WRITE setHomeButtonVisible NOTIFY homeButtonVisibleChanged)
/**
* Whether the section selection row is visible in the menu view.
*/
@@ -417,6 +421,13 @@ public:
Q_EMIT kioskModeChanged();
}
+ bool isHomeButtonVisible() const { return m_isHomeButtonVisible; }
+ void setHomeButtonVisible(const bool newMode)
+ {
+ m_isHomeButtonVisible = newMode;
+ Q_EMIT homeButtonVisibleChanged();
+ }
+
bool sectionVisible() const { return m_sectionVisible; }
void setSectionVisible(const bool newMode)
{
@@ -542,6 +553,7 @@ protected Q_SLOTS:
Q_INVOKABLE void notifyFilterLevelMinChanged();
Q_INVOKABLE void notifyFilterLevelMaxChanged();
Q_INVOKABLE void notifyKioskModeChanged();
+ Q_INVOKABLE void notifyHomeButtonVisibleChanged();
Q_INVOKABLE void notifySectionVisibleChanged();
Q_INVOKABLE void notifyExitConfirmationChanged();
Q_INVOKABLE void notifyFilteredBackgroundMusicChanged();
@@ -621,6 +633,7 @@ Q_SIGNALS:
void filterLevelMaxChanged();
void filterLevelOverridedByCommandLineOptionChanged();
void kioskModeChanged();
+ void homeButtonVisibleChanged();
void sectionVisibleChanged();
void exitConfirmationChanged();
void baseFontSizeChanged();
@@ -666,6 +679,7 @@ private:
QString m_locale;
QString m_font;
bool m_isKioskMode;
+ bool m_isHomeButtonVisible = true;
bool m_sectionVisible;
bool m_exitConfirmation;
QStringList m_filteredBackgroundMusic;
diff --git a/src/core/Bar.qml b/src/core/Bar.qml
index ffc2157479..5ae0798796 100644
--- a/src/core/Bar.qml
+++ b/src/core/Bar.qml
@@ -168,7 +168,7 @@ Item {
{
'bid': home,
'contentId': content.home,
- 'allowed': true
+ 'allowed': ApplicationSettings.isHomeButtonVisible
},
{
'bid': previous,
diff --git a/src/core/ChangeLog.qml b/src/core/ChangeLog.qml
index 2ae9252648..ba07277382 100644
--- a/src/core/ChangeLog.qml
+++ b/src/core/ChangeLog.qml
@@ -29,6 +29,7 @@ QtObject {
{ "versionCode": 260000, "content": [
qsTr("Translation added for Kannada and Tamil"),
qsTr("New command-line option to set the locale (--locale locale)"),
+ qsTr("New command-line option to show/hide the Home button (--hide-home-button/--show-home-button)"),
qsTr("Many usability improvements"),
qsTr("Many bug fixes")
],
diff --git a/src/core/main.cpp b/src/core/main.cpp
index 62d9003c46..7ff5800a04 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -143,6 +143,14 @@ int main(int argc, char *argv[])
QObject::tr("Specify the locale when starting GCompris."), "locale");
parser.addOption(clLocale);
+ QCommandLineOption clHideHomeButton("hide-home-button",
+ QObject::tr("Hide the Home button in the bar."));
+ parser.addOption(clHideHomeButton);
+
+ QCommandLineOption clShowHomeButton("show-home-button",
+ QObject::tr("Show the Home button in the bar (default)."));
+ parser.addOption(clShowHomeButton);
+
parser.process(app);
#ifdef WITH_RCC
@@ -205,6 +213,12 @@ int main(int argc, char *argv[])
if (parser.isSet(clWithKioskMode)) {
ApplicationSettings::getInstance()->setKioskMode(true);
}
+ if (parser.isSet(clHideHomeButton)) {
+ ApplicationSettings::getInstance()->setHomeButtonVisible(false);
+ }
+ if (parser.isSet(clShowHomeButton)) {
+ ApplicationSettings::getInstance()->setHomeButtonVisible(true);
+ }
if (parser.isSet(clLocale)) {
QString locale = parser.value(clLocale);
if (locale != "system") {
More information about the kde-doc-english
mailing list