From 970a6158468f8aacd93ece5c32bb1564f47ff63b Mon Sep 17 00:00:00 2001 From: Alan Briolat Date: Sun, 27 Jan 2013 12:06:12 +0000 Subject: [PATCH] Improve experience of setting up a subsonic connection --- src/internet/subsonicservice.cpp | 2 +- src/internet/subsonicsettingspage.cpp | 35 ++++++++++++++++++++++++--- src/internet/subsonicsettingspage.h | 1 + src/internet/subsonicsettingspage.ui | 2 +- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/internet/subsonicservice.cpp b/src/internet/subsonicservice.cpp index 83ba8b187..45b3d8203 100644 --- a/src/internet/subsonicservice.cpp +++ b/src/internet/subsonicservice.cpp @@ -179,7 +179,7 @@ void SubsonicService::Ping() { } QUrl SubsonicService::BuildRequestUrl(const QString& view) const { - QUrl url(server_ + "rest/" + view + ".view"); + QUrl url(server_ + "/rest/" + view + ".view"); url.addQueryItem("v", kApiVersion); url.addQueryItem("c", kApiClientName); url.addQueryItem("u", username_); diff --git a/src/internet/subsonicsettingspage.cpp b/src/internet/subsonicsettingspage.cpp index 7cef147e0..a1a3214e8 100644 --- a/src/internet/subsonicsettingspage.cpp +++ b/src/internet/subsonicsettingspage.cpp @@ -1,5 +1,6 @@ #include "subsonicsettingspage.h" #include "ui_subsonicsettingspage.h" +#include "core/logging.h" #include "internetmodel.h" #include @@ -12,6 +13,8 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog) ui_->setupUi(this); setWindowIcon(QIcon(":/providers/subsonic-32.png")); + connect(ui_->server, SIGNAL(editingFinished()), + SLOT(ServerEditingFinished())); connect(ui_->login, SIGNAL(clicked()), SLOT(Login())); connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(Logout())); connect(service_, SIGNAL(LoginStateChanged(SubsonicService::LoginState)), @@ -21,6 +24,10 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog) ui_->login_state->AddCredentialField(ui_->username); ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->server_group); + + ui_->login_state->SetAccountTypeText(tr( + "Streaming from a Subsonic server requires a valid server license after the 30-day trial period.")); + ui_->login_state->SetAccountTypeVisible(true); } SubsonicSettingsPage::~SubsonicSettingsPage() @@ -37,9 +44,11 @@ void SubsonicSettingsPage::Load() ui_->username->setText(s.value("username").toString()); ui_->password->setText(s.value("password").toString()); - // These are the same settings SubsonicService will have used already, so see if - // they were successful... - LoginStateChanged(service_->login_state()); + // If the settings are complete, SubsonicService will have used them already and + // we can tell the user if they worked + if (ui_->server->text() != "" && ui_->username->text() != "") { + LoginStateChanged(service_->login_state()); + } } void SubsonicSettingsPage::Save() @@ -96,6 +105,26 @@ void SubsonicSettingsPage::LoginStateChanged(SubsonicService::LoginState newstat } } +void SubsonicSettingsPage::ServerEditingFinished() { + QString input = ui_->server->text(); + QUrl url = QUrl::fromUserInput(input); + + // Veto things that don't get guessed as an HTTP URL, the result will be unhelpful + if (!url.scheme().startsWith("http")) { + return; + } + + // A direct paste of the server URL will probably include the trailing index.view, so remove it + if (url.path().endsWith("index.view")) { + QString newpath = url.path(); + newpath.chop(10); + url.setPath(newpath); + } + + ui_->server->setText(url.toString()); + qLog(Debug) << "URL fixed:" << input << "to" << url; +} + void SubsonicSettingsPage::Login() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); diff --git a/src/internet/subsonicsettingspage.h b/src/internet/subsonicsettingspage.h index fda78c4dd..07579c400 100644 --- a/src/internet/subsonicsettingspage.h +++ b/src/internet/subsonicsettingspage.h @@ -21,6 +21,7 @@ class SubsonicSettingsPage : public SettingsPage void LoginStateChanged(SubsonicService::LoginState newstate); private slots: + void ServerEditingFinished(); void Login(); void Logout(); diff --git a/src/internet/subsonicsettingspage.ui b/src/internet/subsonicsettingspage.ui index da5706c73..d687ffc53 100644 --- a/src/internet/subsonicsettingspage.ui +++ b/src/internet/subsonicsettingspage.ui @@ -26,7 +26,7 @@ - Server + Server URL