Clementine-audio-player-Mac.../src/internet/ubuntuonesettingspage.cpp

87 lines
2.8 KiB
C++

#include "ubuntuonesettingspage.h"
#include "ui_ubuntuonesettingspage.h"
#include "core/application.h"
#include "core/closure.h"
#include "core/logging.h"
#include "internet/internetmodel.h"
#include "internet/ubuntuoneauthenticator.h"
#include "internet/ubuntuoneservice.h"
#include <QMessageBox>
UbuntuOneSettingsPage::UbuntuOneSettingsPage(SettingsDialog* parent)
: SettingsPage(parent),
ui_(new Ui::UbuntuOneSettingsPage),
service_(dialog()->app()->internet_model()->Service<UbuntuOneService>()),
authenticated_(false) {
ui_->setupUi(this);
ui_->login_state->AddCredentialField(ui_->username);
ui_->login_state->AddCredentialField(ui_->password);
ui_->login_state->AddCredentialGroup(ui_->login_container);
connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(LogoutClicked()));
connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(LoginClicked()));
connect(ui_->login_button, SIGNAL(clicked()), SLOT(LoginClicked()));
}
void UbuntuOneSettingsPage::Load() {
QSettings s;
s.beginGroup(UbuntuOneService::kSettingsGroup);
const QString user_email = s.value("user_email").toString();
if (!user_email.isEmpty()) {
ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, user_email);
ui_->username->setText(user_email);
}
}
void UbuntuOneSettingsPage::Save() {
}
void UbuntuOneSettingsPage::LoginClicked() {
const QString username = ui_->username->text();
const QString password = ui_->password->text();
ui_->password->clear();
UbuntuOneAuthenticator* authenticator = new UbuntuOneAuthenticator;
authenticator->StartAuthorisation(username, password);
NewClosure(authenticator, SIGNAL(Finished()),
this, SLOT(Connected(UbuntuOneAuthenticator*)), authenticator);
NewClosure(authenticator, SIGNAL(Finished()),
service_, SLOT(AuthenticationFinished(UbuntuOneAuthenticator*)),
authenticator);
ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress);
}
void UbuntuOneSettingsPage::LogoutClicked() {
QSettings s;
s.beginGroup(UbuntuOneService::kSettingsGroup);
s.remove("user_email");
s.remove("consumer_key");
s.remove("consumer_secret");
s.remove("token");
s.remove("token_secret");
ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut);
}
void UbuntuOneSettingsPage::Connected(UbuntuOneAuthenticator* authenticator) {
if (!authenticator->success()) {
ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut);
QMessageBox::warning(this, tr("Authentication failed"),
tr("Your username or password was incorrect."));
return;
}
ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, ui_->username->text());
authenticated_ = true;
QSettings s;
s.beginGroup(UbuntuOneService::kSettingsGroup);
s.setValue("user_email", ui_->username->text());
}