From 703f66a8d62537bf09a0e2e5ef4519b61d25a24e Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 13 Mar 2022 19:49:28 -0400 Subject: [PATCH] Only fetch the news once --- src/launcherwindow.cpp | 95 +++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 48 deletions(-) diff --git a/src/launcherwindow.cpp b/src/launcherwindow.cpp index ce600ac..c88e7a9 100644 --- a/src/launcherwindow.cpp +++ b/src/launcherwindow.cpp @@ -202,9 +202,54 @@ LauncherWindow::LauncherWindow(LauncherCore& core, QWidget* parent) : QMainWindo reloadControls(); - getHeadline(core, [this](Headline headline) { + getHeadline(core, [&](Headline headline) { this->headline = headline; - reloadControls(); + + if(!headline.banner.empty()) { + auto request = QNetworkRequest(headline.banner[0].bannerImage); + core.buildRequest(request); + + auto reply = core.mgr->get(request); + connect(reply, &QNetworkReply::finished, [=] { + QPixmap pixmap; + pixmap.loadFromData(reply->readAll()); + bannerImageView->setPixmap(pixmap); + }); + + QTreeWidgetItem* newsItem = new QTreeWidgetItem((QTreeWidgetItem*)nullptr, QStringList("News")); + for(auto news : headline.news) { + QTreeWidgetItem* item = new QTreeWidgetItem(); + item->setText(0, news.title); + item->setText(1, QLocale().toString(news.date, QLocale::ShortFormat)); + item->setData(0, Qt::UserRole, news.url); + + newsItem->addChild(item); + } + + QTreeWidgetItem* pinnedItem = new QTreeWidgetItem((QTreeWidgetItem*)nullptr, QStringList("Pinned")); + for(auto pinned : headline.pinned) { + QTreeWidgetItem* item = new QTreeWidgetItem(); + item->setText(0, pinned.title); + item->setText(1, QLocale().toString(pinned.date, QLocale::ShortFormat)); + item->setData(0, Qt::UserRole, pinned.url); + + pinnedItem->addChild(item); + } + + QTreeWidgetItem* topicsItem = new QTreeWidgetItem((QTreeWidgetItem*)nullptr, QStringList("Topics")); + for(auto news : headline.topics) { + QTreeWidgetItem* item = new QTreeWidgetItem(); + item->setText(0, news.title); + item->setText(1, QLocale().toString(news.date, QLocale::ShortFormat)); + item->setData(0, Qt::UserRole, news.url); + + qInfo() << news.url; + + topicsItem->addChild(item); + } + + newsListView->insertTopLevelItems(0, QList({newsItem, pinnedItem, topicsItem})); + } }); } @@ -222,52 +267,6 @@ void LauncherWindow::reloadControls() { currentlyReloadingControls = true; - if(!headline.banner.empty()) { - auto request = QNetworkRequest(headline.banner[0].bannerImage); - core.buildRequest(request); - - auto reply = core.mgr->get(request); - connect(reply, &QNetworkReply::finished, [=] { - QPixmap pixmap; - pixmap.loadFromData(reply->readAll()); - bannerImageView->setPixmap(pixmap); - }); - - QTreeWidgetItem* newsItem = new QTreeWidgetItem((QTreeWidgetItem*)nullptr, QStringList("News")); - for(auto news : headline.news) { - QTreeWidgetItem* item = new QTreeWidgetItem(); - item->setText(0, news.title); - item->setText(1, QLocale().toString(news.date, QLocale::ShortFormat)); - item->setData(0, Qt::UserRole, news.url); - - newsItem->addChild(item); - } - - QTreeWidgetItem* pinnedItem = new QTreeWidgetItem((QTreeWidgetItem*)nullptr, QStringList("Pinned")); - for(auto pinned : headline.pinned) { - QTreeWidgetItem* item = new QTreeWidgetItem(); - item->setText(0, pinned.title); - item->setText(1, QLocale().toString(pinned.date, QLocale::ShortFormat)); - item->setData(0, Qt::UserRole, pinned.url); - - pinnedItem->addChild(item); - } - - QTreeWidgetItem* topicsItem = new QTreeWidgetItem((QTreeWidgetItem*)nullptr, QStringList("Topics")); - for(auto news : headline.topics) { - QTreeWidgetItem* item = new QTreeWidgetItem(); - item->setText(0, news.title); - item->setText(1, QLocale().toString(news.date, QLocale::ShortFormat)); - item->setData(0, Qt::UserRole, news.url); - - qInfo() << news.url; - - topicsItem->addChild(item); - } - - newsListView->insertTopLevelItems(0, QList({newsItem, pinnedItem, topicsItem})); - } - const int oldIndex = profileSelect->currentIndex(); profileSelect->clear();