Added "Anonymous" (aka not logged in) as an option for the account chooser

This commit is contained in:
Rasmus Karlsson 2017-12-18 21:25:19 +01:00
parent bf39851776
commit 5c6411b50b
2 changed files with 33 additions and 13 deletions

View file

@ -83,12 +83,14 @@ AccountManager::AccountManager()
if (user) {
debug::Log("[AccountManager:currentUsernameChanged] User successfully updated to {}",
newUsername);
// XXX: Should we set the user regardless if the username is found or not?
// I can see the logic in setting it to nullptr if the `currentUsername` value has been
// set to "" or an invalid username
this->Twitch.currentUser = user;
this->Twitch.userChanged.invoke();
} else {
debug::Log(
"[AccountManager:currentUsernameChanged] User successfully updated to anonymous");
this->Twitch.currentUser = this->Twitch.anonymousUser;
}
this->Twitch.userChanged.invoke();
});
}
@ -124,10 +126,14 @@ void AccountManager::load()
auto currentUser = this->Twitch.findUserByUsername(
QString::fromStdString(this->Twitch.currentUsername.getValue()));
if (currentUser) {
this->Twitch.currentUser = currentUser;
this->Twitch.userChanged.invoke();
} else {
this->Twitch.currentUser = this->Twitch.anonymousUser;
}
this->Twitch.userChanged.invoke();
}
} // namespace chatterino

View file

@ -129,28 +129,42 @@ QVBoxLayout *SettingsDialog::createAccountsTab()
// listview
auto listWidget = new QListWidget(this);
static QString anonUsername(" - anonymous - ");
listWidget->addItem(anonUsername);
for (const auto &userName : AccountManager::getInstance().Twitch.getUsernames()) {
listWidget->addItem(userName);
}
// Select the currently logged in user
if (listWidget->count() > 0) {
const QString &currentUsername =
AccountManager::getInstance().Twitch.getCurrent()->getUserName();
auto currentUser = AccountManager::getInstance().Twitch.getCurrent();
if (currentUser->isAnon()) {
listWidget->setCurrentRow(0);
} else {
const QString &currentUsername = currentUser->getUserName();
for (int i = 0; i < listWidget->count(); ++i) {
QString itemText = listWidget->item(i)->text();
if (itemText.compare(currentUsername, Qt::CaseInsensitive) == 0) {
listWidget->setCurrentRow(i);
break;
}
}
}
}
QObject::connect(listWidget, &QListWidget::clicked, this, [&, listWidget] {
if (!listWidget->selectedItems().isEmpty()) {
QString newUsername = listWidget->currentItem()->text();
if (newUsername.compare(anonUsername, Qt::CaseInsensitive) == 0) {
AccountManager::getInstance().Twitch.currentUsername = "";
} else {
AccountManager::getInstance().Twitch.currentUsername = newUsername.toStdString();
}
}
});
layout->addWidget(listWidget);