ui squawk refactoring

This commit is contained in:
Blue 2022-04-11 18:45:12 +03:00
parent 69e0c88d8d
commit 2c26c7e264
Signed by untrusted user: blue
GPG key ID: 9B203B252A63EE38
13 changed files with 263 additions and 61 deletions

View file

@ -27,13 +27,12 @@ Squawk::Squawk(QWidget *parent) :
accounts(nullptr),
preferences(nullptr),
about(nullptr),
dialogueQueue(this),
rosterModel(),
conversations(),
contextMenu(new QMenu()),
dbus("org.freedesktop.Notifications", "/org/freedesktop/Notifications", "org.freedesktop.Notifications", QDBusConnection::sessionBus()),
vCards(),
requestedAccountsForPasswords(),
prompt(nullptr),
currentConversation(nullptr),
restoreSelection(),
needToRestore(false)
@ -925,50 +924,8 @@ void Squawk::onItemCollepsed(const QModelIndex& index)
}
}
void Squawk::requestPassword(const QString& account)
{
requestedAccountsForPasswords.push_back(account);
checkNextAccountForPassword();
}
void Squawk::checkNextAccountForPassword()
{
if (prompt == nullptr && requestedAccountsForPasswords.size() > 0) {
prompt = new QInputDialog(this);
QString accName = requestedAccountsForPasswords.front();
connect(prompt, &QDialog::accepted, this, &Squawk::onPasswordPromptAccepted);
connect(prompt, &QDialog::rejected, this, &Squawk::onPasswordPromptRejected);
prompt->setInputMode(QInputDialog::TextInput);
prompt->setTextEchoMode(QLineEdit::Password);
prompt->setLabelText(tr("Input the password for account %1").arg(accName));
prompt->setWindowTitle(tr("Password for account %1").arg(accName));
prompt->setTextValue("");
prompt->exec();
}
}
void Squawk::onPasswordPromptAccepted()
{
emit responsePassword(requestedAccountsForPasswords.front(), prompt->textValue());
onPasswordPromptDone();
}
void Squawk::onPasswordPromptDone()
{
prompt->deleteLater();
prompt = nullptr;
requestedAccountsForPasswords.pop_front();
checkNextAccountForPassword();
}
void Squawk::onPasswordPromptRejected()
{
//for now it's the same on reject and on accept, but one day I'm gonna make
//"Asking for the password again on the authentication failure" feature
//and here I'll be able to break the circle of password requests
emit responsePassword(requestedAccountsForPasswords.front(), prompt->textValue());
onPasswordPromptDone();
}
void Squawk::requestPassword(const QString& account) {
dialogueQueue.addAction(account, DialogQueue::askPassword);}
void Squawk::subscribeConversation(Conversation* conv)
{