X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fidentitiessettingspage.cpp;h=1fe80c1be88e1b5b899c2327534ea7afd4c71b7f;hp=b26e45fde19e69df4ae426137b15cc8754283c7c;hb=cc6e7c08709c4e761e2fd9c2e322751015497003;hpb=9d54503555534a2c554f09a33df6afa33d6308ec diff --git a/src/qtui/settingspages/identitiessettingspage.cpp b/src/qtui/settingspages/identitiessettingspage.cpp index b26e45fd..1fe80c1b 100644 --- a/src/qtui/settingspages/identitiessettingspage.cpp +++ b/src/qtui/settingspages/identitiessettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,39 +20,37 @@ #include "identitiessettingspage.h" +#include + #include #include #include "client.h" -#include "iconloader.h" +#include "icon.h" #include "signalproxy.h" -IdentitiesSettingsPage::IdentitiesSettingsPage(QWidget *parent) - : SettingsPage(tr("IRC"), tr("Identities"), parent), - _editSsl(false) +IdentitiesSettingsPage::IdentitiesSettingsPage(QWidget* parent) + : SettingsPage(tr("IRC"), tr("Identities"), parent) { ui.setupUi(this); - ui.renameIdentity->setIcon(BarIcon("edit-rename")); - ui.addIdentity->setIcon(BarIcon("list-add-user")); - ui.deleteIdentity->setIcon(BarIcon("list-remove-user")); + ui.renameIdentity->setIcon(icon::get("edit-rename")); + ui.addIdentity->setIcon(icon::get("list-add-user")); + ui.deleteIdentity->setIcon(icon::get("list-remove-user")); - coreConnectionStateChanged(Client::isConnected()); // need a core connection! - connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool))); + coreConnectionStateChanged(Client::isConnected()); // need a core connection! + connect(Client::instance(), &Client::coreConnectionStateChanged, this, &IdentitiesSettingsPage::coreConnectionStateChanged); - connect(Client::instance(), SIGNAL(identityCreated(IdentityId)), this, SLOT(clientIdentityCreated(IdentityId))); - connect(Client::instance(), SIGNAL(identityRemoved(IdentityId)), this, SLOT(clientIdentityRemoved(IdentityId))); + connect(Client::instance(), &Client::identityCreated, this, &IdentitiesSettingsPage::clientIdentityCreated); + connect(Client::instance(), &Client::identityRemoved, this, &IdentitiesSettingsPage::clientIdentityRemoved); - connect(ui.identityEditor, SIGNAL(widgetHasChanged()), this, SLOT(widgetHasChanged())); + connect(ui.identityEditor, &IdentityEditWidget::widgetHasChanged, this, &IdentitiesSettingsPage::widgetHasChanged); #ifdef HAVE_SSL - connect(ui.identityEditor, SIGNAL(requestEditSsl()), this, SLOT(continueUnsecured())); + connect(ui.identityEditor, &IdentityEditWidget::requestEditSsl, this, &IdentitiesSettingsPage::continueUnsecured); #endif currentId = 0; - - //connect(ui.identityList, SIGNAL(editTextChanged(const QString &)), this, SLOT(widgetHasChanged())); } - void IdentitiesSettingsPage::coreConnectionStateChanged(bool connected) { setEnabled(connected); @@ -77,33 +75,31 @@ void IdentitiesSettingsPage::coreConnectionStateChanged(bool connected) } } - #ifdef HAVE_SSL void IdentitiesSettingsPage::continueUnsecured() { _editSsl = true; - QHash::iterator idIter; - for (idIter = identities.begin(); idIter != identities.end(); idIter++) { + QHash::iterator idIter; + for (idIter = identities.begin(); idIter != identities.end(); ++idIter) { idIter.value()->enableEditSsl(); } ui.identityEditor->setSslState(IdentityEditWidget::AllowSsl); } - #endif void IdentitiesSettingsPage::save() { setEnabled(false); - QList toCreate, toUpdate; + QList toCreate, toUpdate; // we need to remove our temporarily created identities. // these are going to be re-added after the core has propagated them back... - QHash::iterator i = identities.begin(); + QHash::iterator i = identities.begin(); while (i != identities.end()) { if ((*i)->id() < 0) { - CertIdentity *temp = *i; + CertIdentity* temp = *i; i = identities.erase(i); toCreate.append(temp); ui.identityList->removeItem(ui.identityList->findData(temp->id().toInt())); @@ -121,7 +117,7 @@ void IdentitiesSettingsPage::save() // canceled -> reload everything to be safe load(); } - foreach(Identity *id, toCreate) { + foreach (Identity* id, toCreate) { id->deleteLater(); } changedIdentities.clear(); @@ -130,11 +126,10 @@ void IdentitiesSettingsPage::save() setEnabled(true); } - void IdentitiesSettingsPage::load() { currentId = 0; - foreach(Identity *identity, identities.values()) { + foreach (Identity* identity, identities.values()) { identity->deleteLater(); } identities.clear(); @@ -142,20 +137,19 @@ void IdentitiesSettingsPage::load() changedIdentities.clear(); ui.identityList->clear(); setWidgetStates(); - foreach(IdentityId id, Client::identityIds()) { + foreach (IdentityId id, Client::identityIds()) { clientIdentityCreated(id); } setChangedState(false); } - void IdentitiesSettingsPage::widgetHasChanged() { bool changed = testHasChanged(); - if (changed != hasChanged()) setChangedState(changed); + if (changed != hasChanged()) + setChangedState(changed); } - void IdentitiesSettingsPage::setWidgetStates() { bool enabled = (ui.identityList->count() > 0); @@ -164,12 +158,12 @@ void IdentitiesSettingsPage::setWidgetStates() ui.deleteIdentity->setEnabled(ui.identityList->count() > 1); } - bool IdentitiesSettingsPage::testHasChanged() { - if (deletedIdentities.count()) return true; + if (deletedIdentities.count()) + return true; if (currentId < 0) { - return true; // new identity + return true; // new identity } else { if (currentId != 0) { @@ -177,7 +171,7 @@ bool IdentitiesSettingsPage::testHasChanged() CertIdentity temp(currentId, this); #ifdef HAVE_SSL // we need to set the cert and key manually, as they aren't synced - CertIdentity *old = identities[currentId]; + CertIdentity* old = identities[currentId]; temp.setSslKey(old->sslKey()); temp.setSslCert(old->sslCert()); #endif @@ -190,46 +184,52 @@ bool IdentitiesSettingsPage::testHasChanged() } } - bool IdentitiesSettingsPage::aboutToSave() { ui.identityEditor->saveToIdentity(identities[currentId]); QList errors; - foreach(Identity *id, identities.values()) { - if (id->identityName().isEmpty()) errors.append(1); - if (!id->nicks().count()) errors.append(2); - if (id->realName().isEmpty()) errors.append(3); - if (id->ident().isEmpty()) errors.append(4); + foreach (Identity* id, identities.values()) { + if (id->identityName().isEmpty()) + errors.append(1); + if (!id->nicks().count()) + errors.append(2); + if (id->realName().isEmpty()) + errors.append(3); + if (id->ident().isEmpty()) + errors.append(4); } - if (!errors.count()) return true; + if (!errors.count()) + return true; QString error(tr("The following problems need to be corrected before your changes can be applied:
    ")); - if (errors.contains(1)) error += tr("
  • All identities need an identity name set
  • "); - if (errors.contains(2)) error += tr("
  • Every identity needs at least one nickname defined
  • "); - if (errors.contains(3)) error += tr("
  • You need to specify a real name for every identity
  • "); - if (errors.contains(4)) error += tr("
  • You need to specify an ident for every identity
  • "); + if (errors.contains(1)) + error += tr("
  • All identities need an identity name set
  • "); + if (errors.contains(2)) + error += tr("
  • Every identity needs at least one nickname defined
  • "); + if (errors.contains(3)) + error += tr("
  • You need to specify a real name for every identity
  • "); + if (errors.contains(4)) + error += tr("
  • You need to specify an ident for every identity
  • "); error += tr("
"); QMessageBox::warning(this, tr("One or more identities are invalid"), error); return false; } - void IdentitiesSettingsPage::clientIdentityCreated(IdentityId id) { - CertIdentity *identity = new CertIdentity(*Client::identity(id), this); + auto* identity = new CertIdentity(*Client::identity(id), this); #ifdef HAVE_SSL identity->enableEditSsl(_editSsl); #endif insertIdentity(identity); #ifdef HAVE_SSL - connect(identity, SIGNAL(sslSettingsUpdated()), this, SLOT(clientIdentityUpdated())); + connect(identity, &CertIdentity::sslSettingsUpdated, this, &IdentitiesSettingsPage::clientIdentityUpdated); #endif - connect(Client::identity(id), SIGNAL(updatedRemotely()), this, SLOT(clientIdentityUpdated())); + connect(Client::identity(id), &SyncableObject::updatedRemotely, this, &IdentitiesSettingsPage::clientIdentityUpdated); } - void IdentitiesSettingsPage::clientIdentityUpdated() { - const Identity *clientIdentity = qobject_cast(sender()); + const Identity* clientIdentity = qobject_cast(sender()); if (!clientIdentity) { qWarning() << "Invalid identity to update!"; return; @@ -239,7 +239,7 @@ void IdentitiesSettingsPage::clientIdentityUpdated() return; } - CertIdentity *identity = identities[clientIdentity->id()]; + CertIdentity* identity = identities[clientIdentity->id()]; if (identity->identityName() != clientIdentity->identityName()) renameIdentity(identity->id(), clientIdentity->identityName()); @@ -250,7 +250,6 @@ void IdentitiesSettingsPage::clientIdentityUpdated() ui.identityEditor->displayIdentity(identity); } - void IdentitiesSettingsPage::clientIdentityRemoved(IdentityId id) { if (identities.contains(id)) { @@ -260,8 +259,7 @@ void IdentitiesSettingsPage::clientIdentityRemoved(IdentityId id) } } - -void IdentitiesSettingsPage::insertIdentity(CertIdentity *identity) +void IdentitiesSettingsPage::insertIdentity(CertIdentity* identity) { IdentityId id = identity->id(); identities[id] = identity; @@ -280,36 +278,34 @@ void IdentitiesSettingsPage::insertIdentity(CertIdentity *identity) widgetHasChanged(); } - -void IdentitiesSettingsPage::renameIdentity(IdentityId id, const QString &newName) +void IdentitiesSettingsPage::renameIdentity(IdentityId id, const QString& newName) { - Identity *identity = identities[id]; + Identity* identity = identities[id]; ui.identityList->setItemText(ui.identityList->findData(identity->id().toInt()), newName); identity->setIdentityName(newName); } - -void IdentitiesSettingsPage::removeIdentity(Identity *id) +void IdentitiesSettingsPage::removeIdentity(Identity* id) { identities.remove(id->id()); ui.identityList->removeItem(ui.identityList->findData(id->id().toInt())); changedIdentities.removeAll(id->id()); - if (currentId == id->id()) currentId = 0; + if (currentId == id->id()) + currentId = 0; id->deleteLater(); setWidgetStates(); widgetHasChanged(); } - void IdentitiesSettingsPage::on_identityList_currentIndexChanged(int index) { - CertIdentity *previousIdentity = 0; + CertIdentity* previousIdentity = nullptr; if (currentId != 0 && identities.contains(currentId)) previousIdentity = identities[currentId]; if (index < 0) { - //ui.identityList->setEditable(false); - ui.identityEditor->displayIdentity(0, previousIdentity); + // ui.identityList->setEditable(false); + ui.identityEditor->displayIdentity(nullptr, previousIdentity); currentId = 0; } else { @@ -321,7 +317,6 @@ void IdentitiesSettingsPage::on_identityList_currentIndexChanged(int index) } } - void IdentitiesSettingsPage::on_addIdentity_clicked() { CreateIdentityDlg dlg(ui.identityList->model(), this); @@ -329,10 +324,11 @@ void IdentitiesSettingsPage::on_addIdentity_clicked() // find a free (negative) ID IdentityId id; for (id = 1; id <= identities.count(); id++) { - if (!identities.keys().contains(-id.toInt())) break; + if (!identities.keys().contains(-id.toInt())) + break; } id = -id.toInt(); - CertIdentity *newId = new CertIdentity(id, this); + auto* newId = new CertIdentity(id, this); #ifdef HAVE_SSL newId->enableEditSsl(_editSsl); #endif @@ -349,75 +345,79 @@ void IdentitiesSettingsPage::on_addIdentity_clicked() } } - void IdentitiesSettingsPage::on_deleteIdentity_clicked() { - Identity *id = identities[currentId]; - int ret = QMessageBox::question(this, tr("Delete Identity?"), - tr("Do you really want to delete identity \"%1\"?").arg(id->identityName()), - QMessageBox::Yes|QMessageBox::No, QMessageBox::No); - if (ret != QMessageBox::Yes) return; - if (id->id() > 0) deletedIdentities.append(id->id()); + Identity* id = identities[currentId]; + int ret = QMessageBox::question(this, + tr("Delete Identity?"), + tr("Do you really want to delete identity \"%1\"?").arg(id->identityName()), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::No); + if (ret != QMessageBox::Yes) + return; + if (id->id() > 0) + deletedIdentities.append(id->id()); currentId = 0; removeIdentity(id); } - void IdentitiesSettingsPage::on_renameIdentity_clicked() { QString oldName = identities[currentId]->identityName(); bool ok = false; - QString name = QInputDialog::getText(this, tr("Rename Identity"), - tr("Please enter a new name for the identity \"%1\"!").arg(oldName), - QLineEdit::Normal, oldName, &ok); + QString name = QInputDialog::getText(this, + tr("Rename Identity"), + tr("Please enter a new name for the identity \"%1\"!").arg(oldName), + QLineEdit::Normal, + oldName, + &ok); if (ok && !name.isEmpty()) { renameIdentity(currentId, name); widgetHasChanged(); } } - /*****************************************************************************************/ -CreateIdentityDlg::CreateIdentityDlg(QAbstractItemModel *model, QWidget *parent) +CreateIdentityDlg::CreateIdentityDlg(QAbstractItemModel* model, QWidget* parent) : QDialog(parent) { ui.setupUi(this); - ui.identityList->setModel(model); // now we use the identity list of the main page... Trolltech <3 - on_identityName_textChanged(""); // disable ok button :) + ui.identityList->setModel(model); // now we use the identity list of the main page... Trolltech <3 + on_identityName_textChanged(""); // disable ok button :) } - QString CreateIdentityDlg::identityName() const { return ui.identityName->text(); } - IdentityId CreateIdentityDlg::duplicateId() const { - if (!ui.duplicateIdentity->isChecked()) return 0; + if (!ui.duplicateIdentity->isChecked()) + return 0; if (ui.identityList->currentIndex() >= 0) { return ui.identityList->itemData(ui.identityList->currentIndex()).toInt(); } return 0; } - -void CreateIdentityDlg::on_identityName_textChanged(const QString &text) +void CreateIdentityDlg::on_identityName_textChanged(const QString& text) { ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(text.count()); } - /*********************************************************************************************/ -SaveIdentitiesDlg::SaveIdentitiesDlg(const QList &toCreate, const QList &toUpdate, const QList &toRemove, QWidget *parent) +SaveIdentitiesDlg::SaveIdentitiesDlg(const QList& toCreate, + const QList& toUpdate, + const QList& toRemove, + QWidget* parent) : QDialog(parent) { ui.setupUi(this); - ui.abort->setIcon(SmallIcon("dialog-cancel")); + ui.abort->setIcon(icon::get("dialog-cancel")); numevents = toCreate.count() + toUpdate.count() + toRemove.count(); rcvevents = 0; @@ -425,26 +425,26 @@ SaveIdentitiesDlg::SaveIdentitiesDlg(const QList &toCreate, cons ui.progressBar->setMaximum(numevents); ui.progressBar->setValue(0); - connect(Client::instance(), SIGNAL(identityCreated(IdentityId)), this, SLOT(clientEvent())); - connect(Client::instance(), SIGNAL(identityRemoved(IdentityId)), this, SLOT(clientEvent())); + connect(Client::instance(), &Client::identityCreated, this, &SaveIdentitiesDlg::clientEvent); + connect(Client::instance(), &Client::identityRemoved, this, &SaveIdentitiesDlg::clientEvent); - foreach(CertIdentity *id, toCreate) { + foreach (CertIdentity* id, toCreate) { Client::createIdentity(*id); } - foreach(CertIdentity *id, toUpdate) { - const Identity *cid = Client::identity(id->id()); + foreach (CertIdentity* id, toUpdate) { + const Identity* cid = Client::identity(id->id()); if (!cid) { qWarning() << "Invalid client identity!"; numevents--; continue; } - connect(cid, SIGNAL(updatedRemotely()), this, SLOT(clientEvent())); + connect(cid, &SyncableObject::updatedRemotely, this, &SaveIdentitiesDlg::clientEvent); Client::updateIdentity(id->id(), id->toVariantMap()); #ifdef HAVE_SSL id->requestUpdateSslSettings(); #endif } - foreach(IdentityId id, toRemove) { + foreach (IdentityId id, toRemove) { Client::removeIdentity(id); } } @@ -454,43 +454,43 @@ SaveIdentitiesDlg::SaveIdentitiesDlg(const QList &toCreate, cons } } - void SaveIdentitiesDlg::clientEvent() { ui.progressBar->setValue(++rcvevents); - if (rcvevents >= numevents) accept(); + if (rcvevents >= numevents) + accept(); } - /*************************************************************************************************/ -NickEditDlg::NickEditDlg(const QString &old, const QStringList &exist, QWidget *parent) - : QDialog(parent), oldNick(old), existing(exist) +NickEditDlg::NickEditDlg(const QString& old, QStringList exist, QWidget* parent) + : QDialog(parent) + , oldNick(old) + , existing(std::move(exist)) { ui.setupUi(this); // define a regexp for valid nicknames // TODO: add max nicklength according to ISUPPORT QString letter = "A-Za-z"; - QString special = "\x5b-\x60\x7b-\x7d"; + QString special = R"([-`{-})"; QRegExp rx(QString("[%1%2][%1%2\\d-]*").arg(letter, special)); ui.nickEdit->setValidator(new QRegExpValidator(rx, ui.nickEdit)); if (old.isEmpty()) { // new nick setWindowTitle(tr("Add Nickname")); - on_nickEdit_textChanged(""); // disable ok button + on_nickEdit_textChanged(""); // disable ok button } - else ui.nickEdit->setText(old); + else + ui.nickEdit->setText(old); } - QString NickEditDlg::nick() const { return ui.nickEdit->text(); } - -void NickEditDlg::on_nickEdit_textChanged(const QString &text) +void NickEditDlg::on_nickEdit_textChanged(const QString& text) { ui.buttonBox->button(QDialogButtonBox::Ok)->setDisabled(text.isEmpty() || existing.contains(text)); }