Oops: forgot to commit few files :(

This commit is contained in:
Arnaud Bienner 2011-09-20 00:54:22 +02:00
parent 399829291d
commit 7cee645539
3 changed files with 276 additions and 0 deletions

View File

@ -0,0 +1,122 @@
/* This file is part of Clementine.
Copyright 2010, David Sansome <me@davidsansome.com>
Clementine is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Clementine is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "groovesharksettingspage.h"
#include "core/network.h"
#include "groovesharkservice.h"
#include "internetmodel.h"
#include "ui_groovesharksettingspage.h"
#include "ui/iconloader.h"
#include <QMessageBox>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QSettings>
#include <QtDebug>
GrooveSharkSettingsPage::GrooveSharkSettingsPage(SettingsDialog* dialog)
: SettingsPage(dialog),
network_(new NetworkAccessManager(this)),
ui_(new Ui_GrooveSharkSettingsPage),
service_(InternetModel::Service<GrooveSharkService>()),
validated_(false)
{
ui_->setupUi(this);
setWindowIcon(QIcon(":/providers/grooveshark.png"));
connect(ui_->login, SIGNAL(clicked()), SLOT(Login()));
connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(Logout()));
connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(Login()));
connect(service_, SIGNAL(LoginFinished(bool)), SLOT(LoginFinished(bool)));
ui_->login_state->AddCredentialField(ui_->username);
ui_->login_state->AddCredentialField(ui_->password);
ui_->login_state->AddCredentialGroup(ui_->account_group);
}
GrooveSharkSettingsPage::~GrooveSharkSettingsPage() {
delete ui_;
}
void GrooveSharkSettingsPage::Login() {
if (service_->IsLoggedIn()) {
return;
}
ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress);
service_->Login(ui_->username->text(), ui_->password->text());
}
void GrooveSharkSettingsPage::Load() {
QSettings s;
s.beginGroup(GrooveSharkService::kSettingsGroup);
original_username_ = s.value("username").toString();
ui_->username->setText(original_username_);
validated_ = false;
UpdateLoginState();
}
void GrooveSharkSettingsPage::Save() {
QSettings s;
s.beginGroup(GrooveSharkService::kSettingsGroup);
s.setValue("username", ui_->username->text());
s.setValue("sessionid", service_->session_id());
}
void GrooveSharkSettingsPage::LoginFinished(bool success) {
validated_ = success;
Save();
UpdateLoginState();
}
void GrooveSharkSettingsPage::UpdateLoginState() {
const bool logged_in = service_->IsLoggedIn();
ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn
: LoginStateWidget::LoggedOut,
ui_->username->text());
ui_->login_state->SetAccountTypeVisible(!logged_in);
switch (service_->login_state()) {
case GrooveSharkService::LoginState_NoPremium:
ui_->login_state->SetAccountTypeText(tr("You do not have a GrooveShark Anywhere account."));
break;
case GrooveSharkService::LoginState_AuthFailed:
ui_->login_state->SetAccountTypeText(tr("Your username or password was incorrect."));
break;
default:
ui_->login_state->SetAccountTypeText(tr("A GrooveShark Anywhere account is required."));
break;
}
//ui_->login_state->SetAccountTypeText(tr("A GrooveShark Anywhere account is required."));
}
void GrooveSharkSettingsPage::Logout() {
service_->Logout();
UpdateLoginState();
}

View File

@ -0,0 +1,55 @@
/* This file is part of Clementine.
Copyright 2010, David Sansome <me@davidsansome.com>
Clementine is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Clementine is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GROOVESHARKSETTINGSPAGE_H
#define GROOVESHARKSETTINGSPAGE_H
#include "ui/settingspage.h"
class NetworkAccessManager;
class Ui_GrooveSharkSettingsPage;
class GrooveSharkService;
class GrooveSharkSettingsPage : public SettingsPage {
Q_OBJECT
public:
GrooveSharkSettingsPage(SettingsDialog* dialog);
~GrooveSharkSettingsPage();
void Load();
void Save();
private slots:
void Login();
void LoginFinished(bool success);
void Logout();
private:
void UpdateLoginState();
private:
NetworkAccessManager* network_;
Ui_GrooveSharkSettingsPage* ui_;
GrooveSharkService* service_;
bool validated_;
QString original_username_;
QString original_password_;
};
#endif // GROOVESHARKSETTINGSPAGE_H

View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GrooveSharkSettingsPage</class>
<widget class="QWidget" name="GrooveSharkSettingsPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>141</height>
</rect>
</property>
<property name="windowTitle">
<string>GrooveShark</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="LoginStateWidget" name="login_state" native="true"/>
</item>
<item>
<widget class="QGroupBox" name="account_group">
<property name="title">
<string>Account details</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QWidget" name="login_container" native="true">
<property name="enabled">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>0</number>
</property>
<item row="1" column="0">
<widget class="QLabel" name="username_label">
<property name="text">
<string>Username</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="username"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="password_label">
<property name="text">
<string>Password</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="password">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="login">
<property name="text">
<string>Login</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>30</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>LoginStateWidget</class>
<extends>QWidget</extends>
<header>widgets/loginstatewidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../../data/data.qrc"/>
</resources>
<connections/>
</ui>