1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-22 12:47:44 +00:00

Make news page loading more obvious, and show if there's no news

If there's no news available (e.g. the server is down, or no internet
connection) make it look a little bit nicer.
This commit is contained in:
Joshua Goins 2023-08-18 21:48:46 -04:00
parent 8d4a081ad7
commit 18d416011a
3 changed files with 24 additions and 0 deletions

View file

@ -45,6 +45,7 @@ class Headline : public QObject
Q_PROPERTY(QList<News> news MEMBER news CONSTANT)
Q_PROPERTY(QList<News> pinned MEMBER pinned CONSTANT)
Q_PROPERTY(QList<News> topics MEMBER topics CONSTANT)
Q_PROPERTY(bool failedToLoad MEMBER failedToLoad CONSTANT)
public:
explicit Headline(QObject *parent = nullptr)
@ -56,4 +57,7 @@ public:
QList<News> news;
QList<News> pinned;
QList<News> topics;
// FIXME: wtf is this?
bool failedToLoad = false;
};

View file

@ -540,6 +540,9 @@ void LauncherCore::refreshNews()
auto document = QJsonDocument::fromJson(reply->readAll());
auto headline = new Headline(this);
if (document.isEmpty()) {
headline->failedToLoad = true;
}
const auto parseNews = [](QJsonObject object) -> News {
News news;

View file

@ -86,6 +86,7 @@ Controls.Control {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
maximumWidth: layout.maximumWidth
visible: LauncherCore.headline !== null
contentItem: ColumnLayout {
spacing: 0
@ -104,6 +105,11 @@ Controls.Control {
onClicked: applicationWindow().openUrl(modelData.url)
}
}
MobileForm.FormTextDelegate {
description: i18n("No news.")
visible: LauncherCore.headline !== null ? LauncherCore.headline.failedToLoad : false
}
}
}
@ -113,6 +119,7 @@ Controls.Control {
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
maximumWidth: layout.maximumWidth
visible: LauncherCore.headline !== null
contentItem: ColumnLayout {
spacing: 0
@ -131,6 +138,11 @@ Controls.Control {
onClicked: applicationWindow().openUrl(modelData.url)
}
}
MobileForm.FormTextDelegate {
description: i18n("No topics.")
visible: LauncherCore.headline !== null ? LauncherCore.headline.failedToLoad : false
}
}
}
@ -138,4 +150,9 @@ Controls.Control {
Layout.fillHeight: true
}
}
Kirigami.LoadingPlaceholder {
anchors.centerIn: parent
visible: LauncherCore.headline === null
}
}