From: Manuel Nickschas Date: Sun, 3 Feb 2008 20:29:38 +0000 (+0000) Subject: Switched client-side account data to using AccountId now rather than the account... X-Git-Tag: 0.2.0-alpha1~126 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=ee6e4f90ce63d7eb3a54937cffb33510398d2349 Switched client-side account data to using AccountId now rather than the account name. You can now derive from CoreAccountSettings to manage settings related to the currently connected core account (see clientsettings.h). NOTE: Your existing accounts will NOT be migrated, you'll have to re-enter them! --- diff --git a/src/client/client.cpp b/src/client/client.cpp index c73e4966..9e22ce08 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -34,6 +34,7 @@ #include "util.h" QPointer Client::instanceptr = 0; +AccountId Client::_currentCoreAccount = 0; /*** Initialization/destruction ***/ @@ -71,7 +72,7 @@ Client::~Client() { } void Client::init() { - + _currentCoreAccount = 0; _networkModel = new NetworkModel(this); connect(this, SIGNAL(bufferUpdated(BufferInfo)), _networkModel, SLOT(bufferUpdated(BufferInfo))); @@ -116,6 +117,14 @@ void Client::init() { /*** public static methods ***/ +AccountId Client::currentCoreAccount() { + return _currentCoreAccount; +} + +void Client::setCurrentCoreAccount(AccountId id) { + _currentCoreAccount = id; +} + QList Client::allBufferInfos() { QList bufferids; foreach(Buffer *buffer, buffers()) { @@ -276,10 +285,11 @@ void Client::userInput(BufferInfo bufferInfo, QString message) { /*** core connection stuff ***/ -void Client::setConnectedToCore(QIODevice *sock) { +void Client::setConnectedToCore(QIODevice *sock, AccountId id) { socket = sock; signalProxy()->addPeer(socket); _connectedToCore = true; + setCurrentCoreAccount(id); } void Client::setSyncedToCore() { @@ -295,6 +305,7 @@ void Client::disconnectFromCore() { } _connectedToCore = false; _syncedToCore = false; + setCurrentCoreAccount(0); emit disconnected(); emit coreConnectionStateChanged(false); diff --git a/src/client/client.h b/src/client/client.h index d6ae6c08..40bf332d 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -92,6 +92,8 @@ public: static BufferModel *bufferModel(); static SignalProxy *signalProxy(); + static AccountId currentCoreAccount(); + static AbstractUiMsg *layoutMsg(const Message &); static bool isConnected(); @@ -145,8 +147,6 @@ signals: public slots: //void selectBuffer(Buffer *); - void setConnectedToCore(QIODevice *socket); - void setSyncedToCore(); void disconnectFromCore(); void setCoreConfiguration(const QVariantMap &settings); @@ -171,6 +171,9 @@ private slots: void coreNetworkCreated(NetworkId); void coreNetworkRemoved(NetworkId); + void setConnectedToCore(QIODevice *socket, AccountId id); + void setSyncedToCore(); + private: Client(QObject *parent = 0); virtual ~Client(); @@ -178,6 +181,8 @@ private: static void addNetwork(Network *); + static void setCurrentCoreAccount(AccountId); + static QPointer instanceptr; QPointer socket; @@ -199,6 +204,8 @@ private: QTimer *layoutTimer; QList layoutQueue; + static AccountId _currentCoreAccount; + friend class ClientSyncer; }; diff --git a/src/client/clientsettings.cpp b/src/client/clientsettings.cpp index 1fd1efbe..87ad8166 100644 --- a/src/client/clientsettings.cpp +++ b/src/client/clientsettings.cpp @@ -36,56 +36,55 @@ ClientSettings::~ClientSettings() { /***********************************************************************************************/ -CoreAccountSettings::CoreAccountSettings() : ClientSettings("CoreAccounts") { - +CoreAccountSettings::CoreAccountSettings(const QString &subgroup) : ClientSettings("CoreAccounts") { + _subgroup = subgroup; } -QStringList CoreAccountSettings::knownAccounts() { - return localChildKeys("Accounts"); +QList CoreAccountSettings::knownAccounts() { + QList ids; + foreach(QString key, localChildGroups()) { + ids << key.toInt(); + } + return ids; } -QString CoreAccountSettings::lastAccount() { - return localValue("LastAccount", "").toString(); +AccountId CoreAccountSettings::lastAccount() { + return localValue("LastAccount", 0).toInt(); } -void CoreAccountSettings::setLastAccount(const QString &account) { - setLocalValue("LastAccount", account); +void CoreAccountSettings::setLastAccount(AccountId account) { + setLocalValue("LastAccount", account.toInt()); } -QString CoreAccountSettings::autoConnectAccount() { - return localValue("AutoConnectAccount", "").toString(); +AccountId CoreAccountSettings::autoConnectAccount() { + return localValue("AutoConnectAccount", 0).toInt(); } -void CoreAccountSettings::setAutoConnectAccount(const QString &account) { - setLocalValue("AutoConnectAccount", account); +void CoreAccountSettings::setAutoConnectAccount(AccountId account) { + setLocalValue("AutoConnectAccount", account.toInt()); } -void CoreAccountSettings::storeAccount(const QString name, const QVariantMap &data) { - setLocalValue(QString("Accounts/%2").arg(name), data); +void CoreAccountSettings::storeAccountData(AccountId id, const QVariantMap &data) { + setLocalValue(QString("%1/Connection").arg(id.toInt()), data); } -QVariantMap CoreAccountSettings::retrieveAccount(const QString &name) { - return localValue(QString("Accounts/%2").arg(name), QVariant()).toMap(); +QVariantMap CoreAccountSettings::retrieveAccountData(AccountId id) { + return localValue(QString("%1/Connection").arg(id.toInt()), QVariant()).toMap(); } -void CoreAccountSettings::storeAllAccounts(const QHash accounts) { - removeLocalKey(QString("Accounts")); - foreach(QString name, accounts.keys()) { - storeAccount(name, accounts[name]); - } +void CoreAccountSettings::setAccountValue(const QString &key, const QVariant &value) { + if(!Client::currentCoreAccount().isValid()) return; + setLocalValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), value); } -QHash CoreAccountSettings::retrieveAllAccounts() { - QHash accounts; - foreach(QString name, knownAccounts()) { - accounts[name] = retrieveAccount(name); - } - return accounts; +QVariant CoreAccountSettings::accountValue(const QString &key, const QVariant &def) { + if(!Client::currentCoreAccount().isValid()) return QVariant(); + return localValue(QString("%1/%2/%3").arg(Client::currentCoreAccount().toInt()).arg(_subgroup).arg(key), def); } -void CoreAccountSettings::removeAccount(const QString &account) { - removeLocalKey(QString("Accounts/%1").arg(account)); +void CoreAccountSettings::removeAccount(AccountId id) { + removeLocalKey(QString("%1").arg(id.toInt())); } diff --git a/src/client/clientsettings.h b/src/client/clientsettings.h index 3b03c4c9..9a935977 100644 --- a/src/client/clientsettings.h +++ b/src/client/clientsettings.h @@ -22,6 +22,7 @@ #define _CLIENTSETTINGS_H_ #include "settings.h" +#include "types.h" class ClientSettings : public Settings { @@ -33,25 +34,35 @@ class ClientSettings : public Settings { }; -// TODO accountid, account-specific settings +// Deriving from CoreAccountSettings: +// MySettings() : CoreAccountSettings("MyGroup") {}; +// Then use accountValue() / setAccountValue() to retrieve/store data associated to the currently +// connected account. This is stored in CoreAccounts/$ACCID/MyGroup/$KEY) then. +// +// Note that you'll get invalid data (and setting is ignored) if you are not connected to a core! class CoreAccountSettings : public ClientSettings { public: - CoreAccountSettings(); + // stores account-specific data in CoreAccounts/$ACCID/$SUBGROUP/$KEY) + CoreAccountSettings(const QString &subgroup = "General"); - QStringList knownAccounts(); - QString lastAccount(); - void setLastAccount(const QString &account); - QString autoConnectAccount(); - void setAutoConnectAccount(const QString &account); + QList knownAccounts(); + AccountId lastAccount(); + void setLastAccount(AccountId); + AccountId autoConnectAccount(); + void setAutoConnectAccount(AccountId); - void storeAccount(const QString name, const QVariantMap &data); - QVariantMap retrieveAccount(const QString &name); - void storeAllAccounts(const QHash accounts); - QHash retrieveAllAccounts(); - void removeAccount(const QString &account); + void storeAccountData(AccountId id, const QVariantMap &data); + QVariantMap retrieveAccountData(AccountId); + void removeAccount(AccountId); + protected: + void setAccountValue(const QString &key, const QVariant &data); + QVariant accountValue(const QString &key, const QVariant &def = QVariant()); + + private: + QString _subgroup; }; #endif diff --git a/src/client/clientsyncer.cpp b/src/client/clientsyncer.cpp index d77e7af3..b8cf4b29 100644 --- a/src/client/clientsyncer.cpp +++ b/src/client/clientsyncer.cpp @@ -107,7 +107,6 @@ void ClientSyncer::connectToCore(const QVariantMap &conn) { // emit coreConnectionError(tr("Already connected to Core!")); // return; // } - if(socket != 0) { socket->deleteLater(); socket = 0; @@ -193,7 +192,7 @@ void ClientSyncer::sessionStateReceived(const QVariantMap &state) { disconnect(this, SIGNAL(recvPartialItem(quint32, quint32)), this, SIGNAL(sessionProgress(quint32, quint32))); disconnect(socket, 0, this, 0); // rest of communication happens through SignalProxy //Client::signalProxy()->addPeer(socket); - Client::instance()->setConnectedToCore(socket); + Client::instance()->setConnectedToCore(socket, coreConnectionInfo["AccountId"].value()); syncToCore(state); } diff --git a/src/common/global.cpp b/src/common/global.cpp index edf795e3..95f43e7b 100644 --- a/src/common/global.cpp +++ b/src/common/global.cpp @@ -87,11 +87,13 @@ void Global::registerMetaTypes() { qRegisterMetaType("BufferId"); qRegisterMetaType("NetworkId"); qRegisterMetaType("UserId"); + qRegisterMetaType("AccountId"); qRegisterMetaTypeStreamOperators("IdentityId"); qRegisterMetaTypeStreamOperators("BufferId"); qRegisterMetaTypeStreamOperators("NetworkId"); qRegisterMetaTypeStreamOperators("UserId"); + qRegisterMetaTypeStreamOperators("AccountId"); } diff --git a/src/common/types.h b/src/common/types.h index 551bd13a..949306b8 100644 --- a/src/common/types.h +++ b/src/common/types.h @@ -79,11 +79,16 @@ struct IdentityId : public SignedId { //inline operator QVariant() const { return QVariant::fromValue(*this); } }; +struct AccountId : public SignedId { + inline AccountId(int _id = 0) : SignedId(_id) {}; +}; + Q_DECLARE_METATYPE(UserId); Q_DECLARE_METATYPE(MsgId); Q_DECLARE_METATYPE(BufferId); Q_DECLARE_METATYPE(NetworkId); Q_DECLARE_METATYPE(IdentityId); +Q_DECLARE_METATYPE(AccountId); //! Base class for exceptions. struct Exception { diff --git a/src/qtui/coreconnectdlg.cpp b/src/qtui/coreconnectdlg.cpp index 93a1d7c1..250c0085 100644 --- a/src/qtui/coreconnectdlg.cpp +++ b/src/qtui/coreconnectdlg.cpp @@ -40,12 +40,18 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool autoconnect) : QDialog(pare ui.accountButtonBox->button(QDialogButtonBox::Ok)->setDefault(true); CoreAccountSettings s; - QString lastacc = s.lastAccount(); + AccountId lastacc = s.lastAccount(); autoConnectAccount = s.autoConnectAccount(); - accounts = s.retrieveAllAccounts(); - ui.accountList->addItems(accounts.keys()); - QList l = ui.accountList->findItems(lastacc, Qt::MatchExactly); - if(l.count()) ui.accountList->setCurrentItem(l[0]); + QListWidgetItem *currentItem = 0; + foreach(AccountId id, s.knownAccounts()) { + if(!id.isValid()) continue; + QVariantMap data = s.retrieveAccountData(id); + accounts[id] = data; + QListWidgetItem *item = new QListWidgetItem(data["AccountName"].toString(), ui.accountList); + item->setData(Qt::UserRole, QVariant::fromValue(id)); + if(id == lastacc) currentItem = item; + } + if(currentItem) ui.accountList->setCurrentItem(currentItem); else ui.accountList->setCurrentRow(0); setAccountWidgetStates(); @@ -68,7 +74,8 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool autoconnect) : QDialog(pare connect(ui.loginButtonBox, SIGNAL(rejected()), this, SLOT(restartPhaseNull())); connect(ui.syncButtonBox->button(QDialogButtonBox::Abort), SIGNAL(clicked()), this, SLOT(restartPhaseNull())); - if(autoconnect && ui.accountList->count() && !autoConnectAccount.isEmpty() && autoConnectAccount == ui.accountList->currentItem()->text()) { + if(autoconnect && ui.accountList->count() && autoConnectAccount.isValid() + && autoConnectAccount == ui.accountList->currentItem()->data(Qt::UserRole).value()) { doingAutoConnect = true; on_accountButtonBox_accepted(); } @@ -77,7 +84,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool autoconnect) : QDialog(pare CoreConnectDlg::~CoreConnectDlg() { if(ui.accountList->selectedItems().count()) { CoreAccountSettings s; - s.setLastAccount(ui.accountList->selectedItems()[0]->text()); + s.setLastAccount(ui.accountList->selectedItems()[0]->data(Qt::UserRole).value()); } } @@ -96,19 +103,20 @@ void CoreConnectDlg::setAccountWidgetStates() { ui.deleteAccount->setEnabled(selectedItems.count()); ui.autoConnect->setEnabled(selectedItems.count()); if(selectedItems.count()) { - ui.autoConnect->setChecked(selectedItems[0]->text() == autoConnectAccount); + ui.autoConnect->setChecked(selectedItems[0]->data(Qt::UserRole).value() == autoConnectAccount); } + ui.accountButtonBox->button(QDialogButtonBox::Ok)->setEnabled(ui.accountList->count()); } void CoreConnectDlg::on_autoConnect_clicked(bool state) { if(!state) { - autoConnectAccount = QString(); + autoConnectAccount = 0; } else { if(ui.accountList->selectedItems().count()) { - autoConnectAccount = ui.accountList->selectedItems()[0]->text(); + autoConnectAccount = ui.accountList->selectedItems()[0]->data(Qt::UserRole).value(); } else { qWarning() << "Checked auto connect without an enabled item!"; // should never happen! - autoConnectAccount = QString(); + autoConnectAccount = 0; } } setAccountWidgetStates(); @@ -117,43 +125,50 @@ void CoreConnectDlg::on_autoConnect_clicked(bool state) { void CoreConnectDlg::on_addAccount_clicked() { QStringList existing; for(int i = 0; i < ui.accountList->count(); i++) existing << ui.accountList->item(i)->text(); - CoreAccountEditDlg dlg(QString(), QVariantMap(), existing, this); + CoreAccountEditDlg dlg(0, QVariantMap(), existing, this); if(dlg.exec() == QDialog::Accepted) { - accounts[dlg.accountName()] = dlg.accountData(); - ui.accountList->addItem(dlg.accountName()); - ui.accountList->setCurrentItem(ui.accountList->findItems(dlg.accountName(), Qt::MatchExactly)[0]); + // find free ID + AccountId id = accounts.count() + 1; + for(AccountId i = 1; i <= accounts.count(); i++) { + if(!accounts.keys().contains(i)) { + id = i; + break; + } + } + QVariantMap data = dlg.accountData(); + data["AccountId"] = QVariant::fromValue(id); + accounts[id] = data; + QListWidgetItem *item = new QListWidgetItem(data["AccountName"].toString(), ui.accountList); + item->setData(Qt::UserRole, QVariant::fromValue(id)); + ui.accountList->setCurrentItem(item); } } void CoreConnectDlg::on_editAccount_clicked() { QStringList existing; for(int i = 0; i < ui.accountList->count(); i++) existing << ui.accountList->item(i)->text(); - QString current = ui.accountList->currentItem()->text(); - QVariantMap acct = accounts[current]; - CoreAccountEditDlg dlg(current, acct, existing, this); + AccountId id = ui.accountList->currentItem()->data(Qt::UserRole).value(); + QVariantMap acct = accounts[id]; + CoreAccountEditDlg dlg(id, acct, existing, this); if(dlg.exec() == QDialog::Accepted) { - if(current != dlg.accountName()) { - if(autoConnectAccount == current) autoConnectAccount = dlg.accountName(); - accounts.remove(current); - current = dlg.accountName(); - ui.accountList->currentItem()->setText(current); - } - accounts[current] = dlg.accountData(); + QVariantMap data = dlg.accountData(); + ui.accountList->currentItem()->setText(data["AccountName"].toString()); + accounts[id] = data; } - //ui.accountList->setCurrent } void CoreConnectDlg::on_deleteAccount_clicked() { - QString current = ui.accountList->currentItem()->text(); + AccountId id = ui.accountList->currentItem()->data(Qt::UserRole).value(); int ret = QMessageBox::question(this, tr("Remove Account Settings"), tr("Do you really want to remove your local settings for this Quassel Core account?
" "Note: This will not remove or change any data on the Core itself!"), QMessageBox::Yes|QMessageBox::No, QMessageBox::No); if(ret == QMessageBox::Yes) { int idx = ui.accountList->currentRow(); - delete ui.accountList->item(idx); - ui.accountList->setCurrentRow(qMin(idx, ui.accountList->count())); - accounts.remove(current); + delete ui.accountList->takeItem(idx); + ui.accountList->setCurrentRow(qMin(idx, ui.accountList->count()-1)); + accounts[id]["Delete"] = true; // we only flag this here, actual deletion happens on accept! + setAccountWidgetStates(); } } @@ -165,13 +180,20 @@ void CoreConnectDlg::on_accountList_itemDoubleClicked(QListWidgetItem *item) { void CoreConnectDlg::on_accountButtonBox_accepted() { // save accounts CoreAccountSettings s; - s.storeAllAccounts(accounts); + foreach(QVariantMap acct, accounts.values()) { + AccountId id = acct["AccountId"].value(); + if(acct.contains("Delete")) { + s.removeAccount(id); + } else { + s.storeAccountData(id, acct); + } + } s.setAutoConnectAccount(autoConnectAccount); ui.stackedWidget->setCurrentWidget(ui.loginPage); - accountName = ui.accountList->currentItem()->text(); - account = s.retrieveAccount(accountName); - s.setLastAccount(accountName); + account = ui.accountList->currentItem()->data(Qt::UserRole).value(); + accountData = accounts[account]; + s.setLastAccount(account); connectToCore(); } @@ -183,7 +205,7 @@ void CoreConnectDlg::on_accountButtonBox_accepted() { void CoreConnectDlg::connectToCore() { ui.connectIcon->setPixmap(QPixmap::fromImage(QImage(":/22x22/actions/network-disconnect"))); - ui.connectLabel->setText(tr("Connect to %1").arg(account["Host"].toString())); + ui.connectLabel->setText(tr("Connect to %1").arg(accountData["Host"].toString())); ui.coreInfoLabel->setText(""); ui.loginStack->setCurrentWidget(ui.loginEmptyPage); ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); @@ -194,14 +216,14 @@ void CoreConnectDlg::connectToCore() { //connect(Client::instance(), SIGNAL(coreConnectionPhaseOne(const QVariantMap &)), this, SLOT(phaseOneFinished - clientSyncer->connectToCore(account); + clientSyncer->connectToCore(accountData); } void CoreConnectDlg::initPhaseError(const QString &error) { doingAutoConnect = false; ui.connectIcon->setPixmap(QPixmap::fromImage(QImage(":/22x22/status/dialog-error"))); //ui.connectLabel->setBrush(QBrush("red")); - ui.connectLabel->setText(tr("
Connection to %1 failed!
").arg(account["Host"].toString())); + ui.connectLabel->setText(tr("
Connection to %1 failed!
").arg(accountData["Host"].toString())); ui.coreInfoLabel->setText(error); ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Retry|QDialogButtonBox::Cancel); ui.loginButtonBox->button(QDialogButtonBox::Retry)->setDefault(true); @@ -216,7 +238,7 @@ void CoreConnectDlg::initPhaseMsg(const QString &msg) { void CoreConnectDlg::initPhaseSocketState(QAbstractSocket::SocketState state) { QString s; - QString host = account["Host"].toString(); + QString host = accountData["Host"].toString(); switch(state) { case QAbstractSocket::UnconnectedState: s = tr("Not connected to %1.").arg(host); break; case QAbstractSocket::HostLookupState: s = tr("Looking up %1...").arg(host); break; @@ -243,10 +265,10 @@ void CoreConnectDlg::startLogin() { ui.loginStack->setMinimumSize(ui.loginStack->sizeHint()); ui.loginStack->updateGeometry(); ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); ui.loginButtonBox->button(QDialogButtonBox::Ok)->setDefault(true); - if(!account["User"].toString().isEmpty()) { - ui.user->setText(account["User"].toString()); - if(account["RememberPasswd"].toBool()) { - ui.password->setText(account["Password"].toString()); + if(!accountData["User"].toString().isEmpty()) { + ui.user->setText(accountData["User"].toString()); + if(accountData["RememberPasswd"].toBool()) { + ui.password->setText(accountData["Password"].toString()); ui.rememberPasswd->setChecked(true); ui.loginButtonBox->setFocus(); } else { @@ -266,12 +288,12 @@ void CoreConnectDlg::doLogin() { ui.password->setDisabled(true); ui.rememberPasswd->setDisabled(true); ui.loginButtonBox->button(QDialogButtonBox::Ok)->setDisabled(true); - account["User"] = ui.user->text(); - account["RememberPasswd"] = ui.rememberPasswd->isChecked(); - if(ui.rememberPasswd->isChecked()) account["Password"] = ui.password->text(); - else account.remove("Password"); + accountData["User"] = ui.user->text(); + accountData["RememberPasswd"] = ui.rememberPasswd->isChecked(); + if(ui.rememberPasswd->isChecked()) accountData["Password"] = ui.password->text(); + else accountData.remove("Password"); CoreAccountSettings s; - s.storeAccount(accountName, account); + s.storeAccountData(account, accountData); clientSyncer->loginToCore(ui.user->text(), ui.password->text()); } @@ -361,26 +383,23 @@ void CoreConnectDlg::coreIrcUsersProgress(quint32 val, quint32 max) { * CoreAccountEditDlg *****************************************************************************************/ -CoreAccountEditDlg::CoreAccountEditDlg(const QString &name, const QVariantMap &acct, const QStringList &_existing, QWidget *parent) : QDialog(parent) { +CoreAccountEditDlg::CoreAccountEditDlg(AccountId id, const QVariantMap &acct, const QStringList &_existing, QWidget *parent) : QDialog(parent) { ui.setupUi(this); existing = _existing; account = acct; - if(!name.isEmpty()) { - existing.removeAll(name); + if(id.isValid()) { + existing.removeAll(acct["AccountName"].toString()); ui.host->setText(acct["Host"].toString()); ui.port->setValue(acct["Port"].toUInt()); ui.useInternal->setChecked(acct["UseInternal"].toBool()); - ui.accountName->setText(name); + ui.accountName->setText(acct["AccountName"].toString()); } else { setWindowTitle(tr("Add Core Account")); } } -QString CoreAccountEditDlg::accountName() const { - return ui.accountName->text(); -} - QVariantMap CoreAccountEditDlg::accountData() { + account["AccountName"] = ui.accountName->text(); account["Host"] = ui.host->text(); account["Port"] = ui.port->value(); account["UseInternal"] = ui.useInternal->isChecked(); @@ -388,7 +407,7 @@ QVariantMap CoreAccountEditDlg::accountData() { } void CoreAccountEditDlg::setWidgetStates() { - bool ok = !accountName().isEmpty() && !existing.contains(accountName()) && (ui.useInternal->isChecked() || !ui.host->text().isEmpty()); + bool ok = !ui.accountName->text().isEmpty() && !existing.contains(ui.accountName->text()) && (ui.useInternal->isChecked() || !ui.host->text().isEmpty()); ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ok); } diff --git a/src/qtui/coreconnectdlg.h b/src/qtui/coreconnectdlg.h index 4714a012..69e3839b 100644 --- a/src/qtui/coreconnectdlg.h +++ b/src/qtui/coreconnectdlg.h @@ -23,6 +23,8 @@ #include +#include "types.h" + #include "ui_coreconnectdlg.h" #include "ui_coreaccounteditdlg.h" @@ -77,10 +79,10 @@ class CoreConnectDlg : public QDialog { private: Ui::CoreConnectDlg ui; - QString autoConnectAccount; - QHash accounts; - QVariantMap account; - QString accountName; + AccountId autoConnectAccount; + QHash accounts; + QVariantMap accountData; + AccountId account; bool doingAutoConnect; @@ -91,9 +93,8 @@ class CoreAccountEditDlg : public QDialog { Q_OBJECT public: - CoreAccountEditDlg(const QString &name, const QVariantMap &data, const QStringList &existing = QStringList(), QWidget *parent = 0); + CoreAccountEditDlg(AccountId id, const QVariantMap &data, const QStringList &existing = QStringList(), QWidget *parent = 0); - QString accountName() const; QVariantMap accountData(); private slots: diff --git a/version.inc b/version.inc index 4868ad6e..ead22e7c 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-pre"; quasselDate = "2008-02-03"; - quasselBuild = 453; + quasselBuild = 454; //! Minimum client build number the core needs clientBuildNeeded = 437;