sneedmc/launcher/ui/dialogs/NewsDialog.cpp
jdp_ eabd225b06 Fix bug, fix more warnings (See commit description)
This ends my series of patches fixing warnings throughout the codebase. Now, there are NO warnings except for unused parameters, tested on GCC 13.1.1 and Clang 16.0.2 with -Wall -Wextra.

Fixed dark mode crashing on Windows 8.1, 8 and 7, and removed a need for an export by moving in the function.

Any people looking at the Windows code and asking why I didn't use official version querying API's, those typically have some sort of unwanted behavior, plus checking exports to determine versions is shorter.
2023-05-08 22:08:07 -04:00

51 lines
1.7 KiB
C++

#include "NewsDialog.h"
#include "ui_NewsDialog.h"
NewsDialog::NewsDialog(QList<NewsEntryPtr> entries, QWidget* parent) : QDialog(parent), ui(new Ui::NewsDialog())
{
ui->setupUi(this);
for (auto entry : entries) {
ui->articleListWidget->addItem(entry->title);
m_entries.insert(entry->title, entry);
}
connect(ui->articleListWidget, &QListWidget::currentTextChanged, this, &NewsDialog::selectedArticleChanged);
connect(ui->toggleListButton, &QPushButton::clicked, this, &NewsDialog::toggleArticleList);
m_article_list_hidden = ui->articleListWidget->isHidden();
auto first_item = ui->articleListWidget->item(0);
first_item->setSelected(true);
auto article_entry = m_entries.constFind(first_item->text()).value();
ui->articleTitleLabel->setText(QString("<a href='%1'>%2</a>").arg(article_entry->link, first_item->text()));
ui->currentArticleContentBrowser->setText(article_entry->content);
}
NewsDialog::~NewsDialog()
{
delete ui;
}
void NewsDialog::selectedArticleChanged(const QString& new_title)
{
auto const& article_entry_ptr = m_entries.constFind(new_title);
auto const& article_entry = article_entry_ptr.value();
ui->articleTitleLabel->setText(QString("<a href='%1'>%2</a>").arg(article_entry->link, new_title));
ui->currentArticleContentBrowser->setText(article_entry->content);
}
void NewsDialog::toggleArticleList()
{
m_article_list_hidden = !m_article_list_hidden;
ui->articleListWidget->setHidden(m_article_list_hidden);
if (m_article_list_hidden)
ui->toggleListButton->setText(tr("Show article list"));
else
ui->toggleListButton->setText(tr("Hide article list"));
}