72 lines
3 KiB
C++
72 lines
3 KiB
C++
// For license of this file, see <project-root-folder>/LICENSE.md.
|
|
|
|
#include "services/gmail/gui/formeditgmailaccount.h"
|
|
|
|
#include "gui/guiutilities.h"
|
|
#include "miscellaneous/application.h"
|
|
#include "miscellaneous/iconfactory.h"
|
|
#include "network-web/oauth2service.h"
|
|
#include "network-web/webfactory.h"
|
|
#include "services/gmail/definitions.h"
|
|
#include "services/gmail/gmailserviceroot.h"
|
|
#include "services/gmail/gui/gmailaccountdetails.h"
|
|
|
|
FormEditGmailAccount::FormEditGmailAccount(QWidget* parent)
|
|
: FormAccountDetails(qApp->icons()->miscIcon(QSL("gmail")), parent), m_details(new GmailAccountDetails(this)) {
|
|
insertCustomTab(m_details, tr("Server setup"), 0);
|
|
activateTab(0);
|
|
|
|
m_details->m_ui.m_txtUsername->setFocus();
|
|
}
|
|
|
|
void FormEditGmailAccount::apply() {
|
|
FormAccountDetails::apply();
|
|
|
|
bool editing_account = true;
|
|
|
|
if (m_account == nullptr) {
|
|
// We want to confirm newly created account.
|
|
// So save new account into DB, setup its properties.
|
|
m_account = new GmailServiceRoot(nullptr);
|
|
editing_account = false;
|
|
}
|
|
|
|
// We copy credentials from testing OAuth to live OAuth.
|
|
account<GmailServiceRoot>()->network()->oauth()->setAccessToken(m_details->m_oauth->accessToken());
|
|
account<GmailServiceRoot>()->network()->oauth()->setRefreshToken(m_details->m_oauth->refreshToken());
|
|
account<GmailServiceRoot>()->network()->oauth()->setTokensExpireIn(m_details->m_oauth->tokensExpireIn());
|
|
|
|
account<GmailServiceRoot>()->network()->oauth()->setClientId(m_details->m_ui.m_txtAppId->lineEdit()->text());
|
|
account<GmailServiceRoot>()->network()->oauth()->setClientSecret(m_details->m_ui.m_txtAppKey->lineEdit()->text());
|
|
account<GmailServiceRoot>()->network()->oauth()->setRedirectUrl(m_details->m_ui.m_txtRedirectUrl->lineEdit()->text());
|
|
|
|
account<GmailServiceRoot>()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text());
|
|
account<GmailServiceRoot>()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value());
|
|
account<GmailServiceRoot>()->saveAccountDataToDatabase();
|
|
accept();
|
|
|
|
if (editing_account) {
|
|
account<GmailServiceRoot>()->completelyRemoveAllData();
|
|
account<GmailServiceRoot>()->syncIn();
|
|
}
|
|
}
|
|
|
|
void FormEditGmailAccount::setEditableAccount(ServiceRoot* editable_account) {
|
|
FormAccountDetails::setEditableAccount(editable_account);
|
|
|
|
if (m_details->m_oauth != nullptr) {
|
|
m_details->m_oauth->logout();
|
|
m_details->m_oauth->deleteLater();
|
|
}
|
|
|
|
m_details->m_oauth = account<GmailServiceRoot>()->network()->oauth();
|
|
m_details->hookNetwork();
|
|
|
|
// Setup the GUI.
|
|
m_details->m_ui.m_txtAppId->lineEdit()->setText(m_details->m_oauth->clientId());
|
|
m_details->m_ui.m_txtAppKey->lineEdit()->setText(m_details->m_oauth->clientSecret());
|
|
m_details->m_ui.m_txtRedirectUrl->lineEdit()->setText(m_details->m_oauth->redirectUrl());
|
|
|
|
m_details->m_ui.m_txtUsername->lineEdit()->setText(account<GmailServiceRoot>()->network()->username());
|
|
m_details->m_ui.m_spinLimitMessages->setValue(account<GmailServiceRoot>()->network()->batchSize());
|
|
}
|