CoreConnectDlg::CoreConnectDlg(QWidget* parent) : QDialog(parent) { _settingsPage = new CoreAccountSettingsPage(this); _settingsPage->setStandAlone(true); _settingsPage->load(); CoreAccountSettings s; AccountId lastAccount = s.lastAccount(); if (lastAccount.isValid()) _settingsPage->setSelectedAccount(lastAccount); setWindowTitle(tr("Connect to Core")); setWindowIcon(icon::get("network-disconnect")); auto* layout = new QVBoxLayout(this); layout->addWidget(_settingsPage); auto* buttonBox = new QDialogButtonBox(this); buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); layout->addWidget(buttonBox); connect(_settingsPage, &CoreAccountSettingsPage::connectToCore, this, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); }
CoreConnectDlg::CoreConnectDlg(QWidget *parent) : QDialog(parent) { _settingsPage = new CoreAccountSettingsPage(this); _settingsPage->setStandAlone(true); _settingsPage->load(); CoreAccountSettings s; AccountId lastAccount = s.lastAccount(); if (lastAccount.isValid()) _settingsPage->setSelectedAccount(lastAccount); setWindowTitle(tr("Connect to Core")); setWindowIcon(QIcon::fromTheme("network-disconnect")); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(_settingsPage); QDialogButtonBox *buttonBox = new QDialogButtonBox(this); buttonBox->setStandardButtons(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); layout->addWidget(buttonBox); connect(_settingsPage, SIGNAL(connectToCore(AccountId)), SLOT(accept())); connect(buttonBox, SIGNAL(accepted()), SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), SLOT(reject())); }
void ClientSyncer::useInternalCore() { AccountId internalAccountId; CoreAccountSettings accountSettings; QList<AccountId> knownAccounts = accountSettings.knownAccounts(); foreach(AccountId id, knownAccounts) { if(!id.isValid()) continue; QVariantMap data = accountSettings.retrieveAccountData(id); if(data.contains("InternalAccount") && data["InternalAccount"].toBool()) { internalAccountId = id; break; } } if(!internalAccountId.isValid()) { for(AccountId i = 1;; i++) { if(!knownAccounts.contains(i)) { internalAccountId = i; break; } } QVariantMap data; data["InternalAccount"] = true; accountSettings.storeAccountData(internalAccountId, data); } coreConnectionInfo["AccountId"] = QVariant::fromValue<AccountId>(internalAccountId); emit startInternalCore(this); emit connectToInternalCore(Client::instance()->signalProxy()); }
void CoreAccountSettingsPage::setWidgetStates() { AccountId accId = selectedAccount(); bool editable = accId.isValid() && accId != model()->internalAccount(); ui.editAccountButton->setEnabled(editable); ui.deleteAccountButton->setEnabled(editable); }
void CoreAccountSettingsPage::on_deleteAccountButton_clicked() { if(!ui.accountView->selectionModel()->selectedIndexes().count()) return; AccountId id = ui.accountView->selectionModel()->selectedIndexes().at(0).data(CoreAccountModel::AccountIdRole).value<AccountId>(); if(id.isValid()) { model()->removeAccount(id); widgetHasChanged(); } }
bool CoreConnection::connectToCore(AccountId accId) { if (isConnected()) return false; CoreAccountSettings s; // FIXME: Don't force connection to internal core in mono client if (Quassel::runMode() == Quassel::Monolithic) { _account = accountModel()->account(accountModel()->internalAccount()); Q_ASSERT(_account.isValid()); } else { if (!accId.isValid()) { // check our settings and figure out what to do if (!s.autoConnectOnStartup()) return false; if (s.autoConnectToFixedAccount()) accId = s.autoConnectAccount(); else accId = s.lastAccount(); if (!accId.isValid()) return false; } _account = accountModel()->account(accId); if (!_account.accountId().isValid()) { return false; } if (Quassel::runMode() != Quassel::Monolithic) { if (_account.isInternal()) return false; } } s.setLastAccount(accId); connectToCurrentAccount(); return true; }
QList<AccountId> CoreAccountSettings::knownAccounts() { QList<AccountId> ids; foreach(QString key, localChildGroups()) { AccountId acc = key.toInt(); if(acc.isValid()) ids << acc; }