Add a magnatune settings page (not functional yet), remove the last.fm config *dialog*, and instead make it bring up the settings dialog at the right page.

This commit is contained in:
David Sansome 2010-06-08 22:56:31 +00:00
parent 40bb827fcd
commit 43ca921d65
46 changed files with 1949 additions and 661 deletions

View File

@ -9,9 +9,9 @@ set (XGETTEXT_OPTIONS --qt --keyword=tr --flag=tr:1:pass-c-format --flag=tr:1:pa
--keyword=N_ --flag=N_:1:pass-c-format --flag=N_:1:pass-qt-format
--from-code=utf-8)
macro(add_pot outfiles header pot)
macro(add_pot header pot)
# Generate the .pot
add_custom_command(OUTPUT ${pot}
add_custom_target(pot ALL
COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE}
${XGETTEXT_OPTIONS} -C --omit-header --no-location
--directory=${CMAKE_CURRENT_SOURCE_DIR}
@ -20,7 +20,6 @@ macro(add_pot outfiles header pot)
COMMAND cat ${header} ${CMAKE_CURRENT_BINARY_DIR}/pot.temp > ${pot}
DEPENDS ${ARGN}
)
list(APPEND ${outfiles} ${pot})
endmacro(add_pot)
# Syntax is:
@ -43,7 +42,7 @@ macro(add_po outfiles po_prefix)
COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet -U --no-location --no-fuzzy-matching --backup=off
${_po} ${ADD_PO_POT}
DEPENDS ${_po})
add_dependencies("po_${_lang}" ${ADD_PO_POT})
add_dependencies("po_${_lang}" pot)
endforeach (_lang)
# Convert the .po files to .qm files

View File

@ -83,9 +83,9 @@ set(SOURCES
radio/fixlastfm.cpp
radio/lastfmconfig.cpp
radio/lastfmconfigdialog.cpp
radio/lastfmservice.cpp
radio/lastfmstationdialog.cpp
radio/magnatuneconfig.cpp
radio/magnatuneplaylistitem.cpp
radio/magnatuneservice.cpp
radio/radioitem.cpp
@ -188,9 +188,9 @@ set(HEADERS
playlistparsers/xspfparser.h
radio/lastfmconfig.h
radio/lastfmconfigdialog.h
radio/lastfmservice.h
radio/lastfmstationdialog.h
radio/magnatuneconfig.h
radio/magnatuneservice.h
radio/radiomimedata.h
radio/radiomodel.h
@ -246,8 +246,8 @@ set(UI
playlist/playlistsequence.ui
radio/lastfmconfig.ui
radio/lastfmconfigdialog.ui
radio/lastfmstationdialog.ui
radio/magnatuneconfig.ui
radio/radioviewcontainer.ui
transcoder/transcodedialog.ui
@ -363,7 +363,7 @@ qt4_wrap_cpp(MOC ${HEADERS})
qt4_wrap_ui(UIC ${UI})
qt4_add_resources(QRC ${RESOURCES})
add_pot(POT
add_pot(
${CMAKE_CURRENT_SOURCE_DIR}/translations/header
${CMAKE_CURRENT_SOURCE_DIR}/translations/clementine.pot
${SOURCES} ${MOC} ${UIC}
@ -380,9 +380,10 @@ add_library(clementine_lib
${UIC}
${QRC}
${PO}
${POT}
)
add_dependencies(clementine_lib pot)
target_link_libraries(clementine_lib
qtsingleapplication
qtiocompressor

View File

@ -6,104 +6,95 @@
<rect>
<x>0</x>
<y>0</y>
<width>386</width>
<height>273</height>
<width>773</width>
<height>555</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Enter your Last.fm details below:</string>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Account details</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Last.fm username</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="username"/>
</item>
<item>
<widget class="QPushButton" name="sign_out">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Sign out</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Last.fm password</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="password">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="label_7">
<property name="text">
<string>You can scrobble tracks for free, but only &lt;span style=&quot; font-weight:600;&quot;&gt;paid subscribers&lt;/span&gt; can stream Last.fm radio from Clementine.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Last.fm username</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="username"/>
</item>
<item>
<widget class="QPushButton" name="sign_out">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Sign out</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Last.fm password</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="password">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="scrobble">
<property name="text">
<string>Scrobble tracks that I listen to</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="love_ban_">
<property name="text">
<string>Show the &quot;love&quot; and &quot;ban&quot; buttons</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Note that you must be a &lt;span style=&quot; font-weight:600;&quot;&gt;paid subscriber&lt;/span&gt; to listen to Last.fm radio from within Clementine.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Preferences</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QCheckBox" name="scrobble">
<property name="text">
<string>Scrobble tracks that I listen to</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="love_ban_">
<property name="text">
<string>Show the &quot;love&quot; and &quot;ban&quot; buttons</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>

View File

@ -1,52 +0,0 @@
/* This file is part of Clementine.
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 "lastfmconfigdialog.h"
#include "ui_lastfmconfigdialog.h"
LastFMConfigDialog::LastFMConfigDialog(QWidget *parent)
: QDialog(parent),
ui_(new Ui_LastFMConfigDialog)
{
ui_->setupUi(this);
connect(ui_->lastfm, SIGNAL(ValidationComplete(bool)), SLOT(ValidationComplete(bool)));
}
LastFMConfigDialog::~LastFMConfigDialog() {
delete ui_;
}
void LastFMConfigDialog::showEvent(QShowEvent *) {
ui_->lastfm->Load();
}
void LastFMConfigDialog::accept() {
if (ui_->lastfm->NeedsValidation()) {
ui_->lastfm->Validate();
ui_->buttonBox->setEnabled(false);
} else {
ui_->lastfm->Save();
QDialog::accept();
}
}
void LastFMConfigDialog::ValidationComplete(bool success) {
ui_->buttonBox->setEnabled(true);
if (success)
QDialog::accept();
}

View File

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LastFMConfigDialog</class>
<widget class="QDialog" name="LastFMConfigDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>295</height>
</rect>
</property>
<property name="windowTitle">
<string>Last.fm</string>
</property>
<property name="windowIcon">
<iconset resource="../../data/data.qrc">
<normaloff>:/last.fm/as.png</normaloff>:/last.fm/as.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="LastFMConfig" name="lastfm" native="true"/>
</item>
<item>
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>LastFMConfig</class>
<extends>QWidget</extends>
<header>radio/lastfmconfig.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../../data/data.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>LastFMConfigDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>LastFMConfigDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -17,11 +17,11 @@
#include "lastfmservice.h"
#include "radioitem.h"
#include "lastfmstationdialog.h"
#include "lastfmconfigdialog.h"
#include "radiomodel.h"
#include "core/networkaccessmanager.h"
#include "core/song.h"
#include "ui/iconloader.h"
#include "ui/settingsdialog.h"
#include <boost/scoped_ptr.hpp>
@ -97,11 +97,7 @@ void LastFMService::ReloadSettings() {
}
void LastFMService::ShowConfig() {
if (!config_) {
config_.reset(new LastFMConfigDialog);
}
config_->show();
model()->settings_dialog()->OpenAtPage(SettingsDialog::Page_Lastfm);
}
bool LastFMService::IsAuthenticated() const {

View File

@ -30,7 +30,6 @@ uint qHash(const lastfm::Track& track);
#include <lastfm/ws.h>
#include "radioservice.h"
#include "lastfmconfigdialog.h"
#include "lastfmstationdialog.h"
#include "core/song.h"
@ -157,7 +156,6 @@ class LastFMService : public RadioService {
lastfm::Track next_metadata_;
QQueue<lastfm::Track> playlist_;
boost::scoped_ptr<LastFMConfigDialog> config_;
boost::scoped_ptr<LastFMStationDialog> station_dialog_;
boost::scoped_ptr<QMenu> context_menu_;

View File

@ -0,0 +1,39 @@
/* This file is part of Clementine.
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 "magnatuneconfig.h"
#include "magnatuneservice.h"
#include "ui_magnatuneconfig.h"
MagnatuneConfig::MagnatuneConfig(QWidget *parent)
: QWidget(parent),
ui_(new Ui_MagnatuneConfig)
{
ui_->setupUi(this);
connect(ui_->membership, SIGNAL(currentIndexChanged(int)), SLOT(MembershipChanged(int)));
}
MagnatuneConfig::~MagnatuneConfig() {
delete ui_;
}
void MagnatuneConfig::MembershipChanged(int value) {
bool enabled = MagnatuneService::MembershipType(value) !=
MagnatuneService::Membership_None;
ui_->login_container->setEnabled(enabled);
ui_->preferences_group->setEnabled(enabled);
}

View File

@ -14,27 +14,24 @@
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LASTFMCONFIGDIALOG_H
#define LASTFMCONFIGDIALOG_H
#ifndef MAGNATUNECONFIG_H
#define MAGNATUNECONFIG_H
#include <QDialog>
#include <QWidget>
class Ui_LastFMConfigDialog;
class Ui_MagnatuneConfig;
class LastFMConfigDialog : public QDialog {
class MagnatuneConfig : public QWidget {
Q_OBJECT
public:
LastFMConfigDialog(QWidget* parent = 0);
~LastFMConfigDialog();
public:
MagnatuneConfig(QWidget* parent = 0);
~MagnatuneConfig();
void accept();
void showEvent(QShowEvent *);
private slots:
void MembershipChanged(int value);
private slots:
void ValidationComplete(bool success);
private:
Ui_LastFMConfigDialog* ui_;
private:
Ui_MagnatuneConfig* ui_;
};
#endif // LASTFMCONFIGDIALOG_H
#endif // MAGNATUNECONFIG_H

View File

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MagnatuneConfig</class>
<widget class="QWidget" name="MagnatuneConfig">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>448</width>
<height>310</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Account details</string>
</property>
<layout class="QFormLayout" name="formLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Membership type</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="membership">
<item>
<property name="text">
<string>I don't have a Magnatune account</string>
</property>
</item>
<item>
<property name="text">
<string>Streaming membership</string>
</property>
</item>
<item>
<property name="text">
<string>Download membership</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>You can listen to Magnatune songs for free without an account. Purchasing a membership removes the messages at the end of each track.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QWidget" name="login_container" native="true">
<property name="enabled">
<bool>false</bool>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="username_label">
<property name="text">
<string>Username</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="username"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="password_label">
<property name="text">
<string>Password</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="password">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="preferences_group">
<property name="enabled">
<bool>false</bool>
</property>
<property name="title">
<string>Preferences</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Preferred audio format</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="format">
<item>
<property name="text">
<string>Ogg Vorbis</string>
</property>
</item>
<item>
<property name="text">
<string>FLAC</string>
</property>
</item>
<item>
<property name="text">
<string>WAV</string>
</property>
</item>
<item>
<property name="text">
<string>VBR MP3</string>
</property>
</item>
<item>
<property name="text">
<string>128k MP3</string>
</property>
</item>
</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>
<resources/>
<connections/>
</ui>

View File

@ -1,4 +1,6 @@
#include "magnatuneplaylistitem.h"
#include "magnatuneservice.h"
#include "radiomodel.h"
MagnatunePlaylistItem::MagnatunePlaylistItem(const QString& type)
: LibraryPlaylistItem(type)
@ -18,6 +20,18 @@ bool MagnatunePlaylistItem::InitFromQuery(const QSqlQuery &query) {
return song_.is_valid();
}
PlaylistItem::Options MagnatunePlaylistItem::options() const {
return SpecialPlayBehaviour;
}
QUrl MagnatunePlaylistItem::Url() const {
return QUrl::fromEncoded(song_.filename().toAscii());
}
PlaylistItem::SpecialLoadResult MagnatunePlaylistItem::StartLoading() {
MagnatuneService* service = RadioModel::Service<MagnatuneService>();
QUrl url(Url());
return SpecialLoadResult(PlaylistItem::SpecialLoadResult::TrackAvailable,
url, service->ModifyUrl(url));
}

View File

@ -10,7 +10,10 @@ class MagnatunePlaylistItem : public LibraryPlaylistItem {
bool InitFromQuery(const QSqlQuery &query);
Options options() const;
QUrl Url() const;
SpecialLoadResult StartLoading();
};
#endif // MAGNATUNEPLAYLISTITEM_H

View File

@ -34,6 +34,7 @@
#include <QMenu>
#include <QDesktopServices>
#include <QCoreApplication>
#include <QSettings>
#include <QtDebug>
@ -45,6 +46,8 @@ const char* MagnatuneService::kDatabaseUrl =
"http://magnatune.com/info/song_info_xml.gz";
const char* MagnatuneService::kSongsTable = "magnatune_songs";
const char* MagnatuneService::kHomepage = "http://magnatune.com";
const char* MagnatuneService::kStreamingHostname = "streaming.magnatune.com";
const char* MagnatuneService::kDownloadHostname = "download.magnatune.com";
MagnatuneService::MagnatuneService(RadioModel* parent)
: RadioService(kServiceName, parent),
@ -53,9 +56,12 @@ MagnatuneService::MagnatuneService(RadioModel* parent)
library_backend_(NULL),
library_model_(NULL),
library_sort_model_(new QSortFilterProxyModel(this)),
membership_(Membership_None),
total_song_count_(0),
network_(parent->network()->network())
{
ReloadSettings();
// Create the library backend in the database thread
library_backend_ = parent->db_thread()->CreateInThread<LibraryBackend>();
library_backend_->Init(parent->db_thread()->Worker(), kSongsTable,
@ -83,6 +89,15 @@ MagnatuneService::~MagnatuneService() {
delete context_menu_;
}
void MagnatuneService::ReloadSettings() {
QSettings s;
s.beginGroup(kSettingsGroup);
membership_ = MembershipType(s.value("membership", Membership_None).toInt());
username_ = s.value("username").toString();
password_ = s.value("password").toString();
}
RadioItem* MagnatuneService::CreateRootItem(RadioItem *parent) {
root_ = new RadioItem(this, RadioItem::Type_Service, kServiceName, parent);
root_->icon = QIcon(":magnatune.png");
@ -255,3 +270,22 @@ bool MagnatuneService::SetupLibraryFilter(LibraryFilterWidget* w) const {
return true;
}
QUrl MagnatuneService::ModifyUrl(const QUrl& url) const {
QUrl ret(url);
switch(membership_) {
case Membership_None:
return ret;
case Membership_Streaming:
ret.setHost(kStreamingHostname);
break;
case Membership_Download:
ret.setHost(kDownloadHostname);
break;
}
ret.setUserName(username_);
ret.setPassword(password_);
return ret;
}

View File

@ -35,11 +35,20 @@ class MagnatuneService : public RadioService {
MagnatuneService(RadioModel* parent);
~MagnatuneService();
// Values are saved in QSettings
enum MembershipType {
Membership_None = 0,
Membership_Streaming = 1,
Membership_Download = 2,
};
static const char* kServiceName;
static const char* kSettingsGroup;
static const char* kDatabaseUrl;
static const char* kSongsTable;
static const char* kHomepage;
static const char* kStreamingHostname;
static const char* kDownloadHostname;
RadioItem* CreateRootItem(RadioItem* parent);
void LazyPopulate(RadioItem* item);
@ -49,6 +58,12 @@ class MagnatuneService : public RadioService {
bool SetupLibraryFilter(LibraryFilterWidget *) const;
void ReloadSettings();
// Magnatune specific stuff
MembershipType membership_type() const { return membership_; }
QUrl ModifyUrl(const QUrl& url) const;
private slots:
void UpdateTotalSongCount(int count) { total_song_count_ = count; }
void ReloadDatabase();
@ -72,6 +87,10 @@ class MagnatuneService : public RadioService {
LibraryModel* library_model_;
QSortFilterProxyModel* library_sort_model_;
MembershipType membership_;
QString username_;
QString password_;
int total_song_count_;
QNetworkAccessManager* network_;

View File

@ -33,7 +33,8 @@ RadioModel::RadioModel(BackgroundThread<Database>* db_thread,
: SimpleTreeModel<RadioItem>(new RadioItem(this), parent),
db_thread_(db_thread),
merged_model_(new MergedProxyModel(this)),
network_(network)
network_(network),
settings_dialog_(NULL)
{
Q_ASSERT(sServices.isEmpty());

View File

@ -29,6 +29,7 @@ class RadioService;
class LastFMService;
class MergedProxyModel;
class Database;
class SettingsDialog;
class RadioModel : public SimpleTreeModel<RadioItem> {
Q_OBJECT
@ -43,6 +44,9 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
Role_Key,
};
// Initialisation
void SetSettingsDialog(SettingsDialog* settings_dialog) { settings_dialog_ = settings_dialog; }
// Needs to be static for RadioPlaylistItem::restore
static RadioService* ServiceByName(const QString& name);
@ -70,6 +74,7 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
BackgroundThread<Database>* db_thread() const { return db_thread_; }
MergedProxyModel* merged_model() const { return merged_model_; }
NetworkAccessManager* network() const { return network_; }
SettingsDialog* settings_dialog() const { return settings_dialog_; }
signals:
void TaskStarted(MultiLoadingIndicator::TaskType);
@ -93,6 +98,7 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
BackgroundThread<Database>* db_thread_;
MergedProxyModel* merged_model_;
NetworkAccessManager* network_;
SettingsDialog* settings_dialog_;
};
#endif // RADIOMODEL_H

View File

@ -918,7 +918,7 @@ msgstr ""
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -930,23 +930,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -957,6 +957,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1176,6 +1208,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -920,8 +920,8 @@ msgstr "Opakovat"
msgid "Shuffle"
msgstr "Zamíchat"
msgid "Enter your Last.fm details below:"
msgstr "Níže zadejte přihlašovací údaje pro Last.fm:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Uživatelské jméno k Last.fm"
@ -932,25 +932,23 @@ msgstr "Odhlásit"
msgid "Last.fm password"
msgstr "Heslo k Last.fm"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Skrobbovat skladby, které poslouchám"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Ukaž \"oblíbené\" a \"zakaž\" tlačítka"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Pamatujte, že musíte být <span style=\" font-weight:600;\">platící uživatel</"
"span> abyste v Clementine mohli poslouchat rádio Last.fm."
msgid "Authenticating..."
msgstr "Ověřuji..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Přehrát umělce nebo značku"
@ -963,6 +961,38 @@ msgstr ""
msgid "Tag"
msgstr "Značka"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1182,6 +1212,12 @@ msgstr "Chování"
msgid "Notifications"
msgstr "Upozornění"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Prolínání"
@ -1329,6 +1365,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Níže zadejte přihlašovací údaje pro Last.fm:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Pamatujte, že musíte být <span style=\" font-weight:600;\">platící "
#~ "uživatel</span> abyste v Clementine mohli poslouchat rádio Last.fm."
#~ msgid "&Hide tray icon"
#~ msgstr "S&krýt ikonu v systémovém panelu"

View File

@ -923,8 +923,8 @@ msgstr "Gentag"
msgid "Shuffle"
msgstr "Bland"
msgid "Enter your Last.fm details below:"
msgstr "Indtast dine Last.fm-detaljer herunder:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm-brugernavn"
@ -935,25 +935,23 @@ msgstr "Log ud"
msgid "Last.fm password"
msgstr "Last.fm-adgangskode"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Scrobble-spor som jeg lytter til"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Vis \"elsker\" og \"bandlys\"-knapperne"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Bemærk at du skal være en <span style=\" font-weight:600;\">betalende "
"abonnent</span> for at lytte til Last.fm fra Clementine."
msgid "Authenticating..."
msgstr "Autentificerer..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Spil kunstner eller mærke"
@ -966,6 +964,38 @@ msgstr ""
msgid "Tag"
msgstr "Mærke"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1185,6 +1215,12 @@ msgstr "Opførsel"
msgid "Notifications"
msgstr "Bekendtgørelser"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Fading"
@ -1332,6 +1368,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Indtast dine Last.fm-detaljer herunder:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Bemærk at du skal være en <span style=\" font-weight:600;\">betalende "
#~ "abonnent</span> for at lytte til Last.fm fra Clementine."
#~ msgid "Add media..."
#~ msgstr "Tilføj medie..."

View File

@ -922,8 +922,8 @@ msgstr "Wiederholen"
msgid "Shuffle"
msgstr "Zufällige Wiedergabe"
msgid "Enter your Last.fm details below:"
msgstr "Geben Sie hier Ihre Last.fm Daten ein:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm Benutzername"
@ -934,25 +934,23 @@ msgstr "Abmelden"
msgid "Last.fm password"
msgstr "Last.fm Passwort"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Stücke die ich höre \"scrobbeln\""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "\"Lieben\" und \"Bannen\" Knöpfe anzeigen"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Sie müssen zahlender Last.fm Kunde sein um Last.fm über Clementine hören zu "
"können"
msgid "Authenticating..."
msgstr "Authentifiziere..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Spiele Künstler oder Stichwort"
@ -965,6 +963,38 @@ msgstr ""
msgid "Tag"
msgstr "Stichwort"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Musik konvertieren"
@ -1184,6 +1214,12 @@ msgstr "Verhalten"
msgid "Notifications"
msgstr "Benachrichtigungen"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Überblenden"
@ -1333,6 +1369,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Geben Sie hier Ihre Last.fm Daten ein:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Sie müssen zahlender Last.fm Kunde sein um Last.fm über Clementine hören "
#~ "zu können"
#~ msgid "%1's Library"
#~ msgstr "%1s Musiksammlung"

View File

@ -926,8 +926,8 @@ msgstr "Επανάληψη"
msgid "Shuffle"
msgstr "Ανακάτεμα"
msgid "Enter your Last.fm details below:"
msgstr "Εισάγετε τις λεπτομέρειες για το Last.fm:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm όνομα χρήστη"
@ -938,25 +938,23 @@ msgstr "Αποσύνδεση"
msgid "Last.fm password"
msgstr "Last.fm συνθηματικό"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Κάνε \"srobble\" τα κομμάτια που ακούω"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Εμφάνισε τα κουμπιά \"αγάπη\"και \"απαγόρευση\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Σημείωσε πως πρέπει να είσαι <span style=\" font-weight:600;\">συνδρομητής</"
"span> για να ακούσεις Last.fm από το Clementine."
msgid "Authenticating..."
msgstr "Πιστοποίηση..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Αναπαραγωγή καλλιτέχνη ή ετικέτας"
@ -969,6 +967,38 @@ msgstr ""
msgid "Tag"
msgstr "Ετικέτα"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Επανακωδικοποίηση Μουσικής"
@ -1188,6 +1218,12 @@ msgstr "Συμπεριφορά"
msgid "Notifications"
msgstr "Ειδοποιήσεις"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "«Σβήσιμο»"
@ -1335,6 +1371,16 @@ msgstr "Σφάλμα του Clementine."
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Εισάγετε τις λεπτομέρειες για το Last.fm:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Σημείωσε πως πρέπει να είσαι <span style=\" font-weight:600;"
#~ "\">συνδρομητής</span> για να ακούσεις Last.fm από το Clementine."
#~ msgid "%1's Neighborhood"
#~ msgstr "%1's Συνοικιακά"

View File

@ -922,8 +922,8 @@ msgstr "Repeat"
msgid "Shuffle"
msgstr "Shuffle"
msgid "Enter your Last.fm details below:"
msgstr "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm username"
@ -934,25 +934,23 @@ msgstr "Sign out"
msgid "Last.fm password"
msgstr "Last.fm password"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Scrobble tracks that I listen to"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Show the \"love\" and \"ban\" buttons"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgid "Authenticating..."
msgstr "Authenticating..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Play Artist or Tag"
@ -964,6 +962,38 @@ msgstr ""
msgid "Tag"
msgstr "Tag"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Transcode Music"
@ -1183,6 +1213,12 @@ msgstr "Behaviour"
msgid "Notifications"
msgstr "Notifications"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Fading"
@ -1329,3 +1365,13 @@ msgstr "Clementine Error"
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Enter your Last.fm details below:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."

View File

@ -919,8 +919,8 @@ msgstr "Repeat"
msgid "Shuffle"
msgstr "Shuffle"
msgid "Enter your Last.fm details below:"
msgstr "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm username"
@ -931,25 +931,23 @@ msgstr "Sign out"
msgid "Last.fm password"
msgstr "Last.fm password"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Scrobble tracks that I listen to"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Show the \"love\" and \"ban\" buttons"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgid "Authenticating..."
msgstr "Authenticating..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Play Artist or Tag"
@ -961,6 +959,38 @@ msgstr ""
msgid "Tag"
msgstr "Tag"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1180,6 +1210,12 @@ msgstr "Behaviour"
msgid "Notifications"
msgstr "Notifications"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Fading"
@ -1327,6 +1363,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Enter your Last.fm details below:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgid "Add media..."
#~ msgstr "Add media..."

View File

@ -930,8 +930,8 @@ msgstr "Repetir"
msgid "Shuffle"
msgstr "Aleatorio"
msgid "Enter your Last.fm details below:"
msgstr "Ingrese su información de Last.fm debajo:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Usuario"
@ -942,25 +942,23 @@ msgstr "Cerrar sesión"
msgid "Last.fm password"
msgstr "Contraseña"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Enviar las pistas que reproduzco"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Mostrar los botones \"Me encanta\" y \"Prohibir\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Recuerda que tienes que ser un <span style=\" font-weight:600;\">Suscriptor "
"de Paga</span> para poder escuchar la radio de Last.fm desde Clementine."
msgid "Authenticating..."
msgstr "Autenticando..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Reproducir Artista o Etiqueta"
@ -973,6 +971,38 @@ msgstr ""
msgid "Tag"
msgstr "Etiqueta"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Convertir Música"
@ -1192,6 +1222,12 @@ msgstr "Comportamiento"
msgid "Notifications"
msgstr "Notificaciones"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Disolver"
@ -1341,6 +1377,17 @@ msgstr "Error de Clementine"
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Ingrese su información de Last.fm debajo:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Recuerda que tienes que ser un <span style=\" font-weight:600;"
#~ "\">Suscriptor de Paga</span> para poder escuchar la radio de Last.fm "
#~ "desde Clementine."
#~ msgid "&Hide tray icon"
#~ msgstr "&Ocultar icono de la bandeja"

View File

@ -918,7 +918,7 @@ msgstr ""
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -930,23 +930,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -957,6 +957,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1176,6 +1208,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -926,8 +926,8 @@ msgstr "Répéter"
msgid "Shuffle"
msgstr "Mélanger"
msgid "Enter your Last.fm details below:"
msgstr "Inscrivez vos identifiants Last.fm ci-dessous :"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Nom d'utilisateur"
@ -938,25 +938,23 @@ msgstr ""
msgid "Last.fm password"
msgstr "Mot de passe"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Envoyer les titres des pistes que j'écoute (scrobble)"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"N'oubliez pas que vous devez être <span style=\" font-weight:600;\">abonné "
"(payant)</span> pour écouter la radio Last.fm avec Clementine."
msgid "Authenticating..."
msgstr "Authentification en cours..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Écouter une radio par artiste ou par tag"
@ -969,6 +967,38 @@ msgstr ""
msgid "Tag"
msgstr "Tag"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1188,6 +1218,12 @@ msgstr ""
msgid "Notifications"
msgstr "Notifications"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Fondu"
@ -1337,6 +1373,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Inscrivez vos identifiants Last.fm ci-dessous :"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "N'oubliez pas que vous devez être <span style=\" font-weight:600;"
#~ "\">abonné (payant)</span> pour écouter la radio Last.fm avec Clementine."
#~ msgid "Options"
#~ msgstr "Options"

View File

@ -920,7 +920,7 @@ msgstr ""
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -932,23 +932,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -959,6 +959,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1178,6 +1210,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -927,8 +927,8 @@ msgstr "Ripeti"
msgid "Shuffle"
msgstr "Mescola"
msgid "Enter your Last.fm details below:"
msgstr "Inserisci di seguito i tuoi dettagli Last.fm:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Nome utente Last.fm"
@ -939,25 +939,23 @@ msgstr "Disconnetti"
msgid "Last.fm password"
msgstr "Password Last.fm"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Scrobbling delle tracce ascoltate"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Mostra i pulsanti \"Mi piace\" e \"Vieta\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Nota che è necessario essere un <span style=\" font-weight:600;\">abbonato a "
"pagamento</span> per ascoltare una radio Last.fm da Clementine."
msgid "Authenticating..."
msgstr "Autenticazione in corso..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Riproduci artista o tag"
@ -970,6 +968,38 @@ msgstr ""
msgid "Tag"
msgstr "Tag"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Transcodifica musica"
@ -1189,6 +1219,12 @@ msgstr "Comportamento"
msgid "Notifications"
msgstr "Notifiche"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Dissolvenza"
@ -1338,6 +1374,17 @@ msgstr "Errore di Clementine"
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Inserisci di seguito i tuoi dettagli Last.fm:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Nota che è necessario essere un <span style=\" font-weight:600;"
#~ "\">abbonato a pagamento</span> per ascoltare una radio Last.fm da "
#~ "Clementine."
#~ msgid "Add media..."
#~ msgstr "Aggiungi media..."

View File

@ -920,7 +920,7 @@ msgstr ""
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -932,23 +932,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -959,6 +959,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1178,6 +1210,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -921,8 +921,8 @@ msgstr "Repetér"
msgid "Shuffle"
msgstr "Stokk om"
msgid "Enter your Last.fm details below:"
msgstr "Fyll inn din Last.fm brukerinformasjon under:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm brukernavn"
@ -933,25 +933,23 @@ msgstr "Logg ut"
msgid "Last.fm password"
msgstr "Last.fm passord"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Fortell last.fm om sangene jeg har lyttet til"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Vis \"Elsk\" og \"Bannlys\" knappene"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Vennligst anmerk at du må være en <span style=\" font-weight:600;\">betalt "
"abonnent</span> for å lytte til Last.fm radio i Clementine."
msgid "Authenticating..."
msgstr "Autentiserer …"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Spill artist eller merkelapp"
@ -963,6 +961,38 @@ msgstr ""
msgid "Tag"
msgstr "Merkelapp"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1182,6 +1212,12 @@ msgstr ""
msgid "Notifications"
msgstr "Meldinger"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""
@ -1329,6 +1365,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Fyll inn din Last.fm brukerinformasjon under:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Vennligst anmerk at du må være en <span style=\" font-weight:600;"
#~ "\">betalt abonnent</span> for å lytte til Last.fm radio i Clementine."
#~ msgid "Add media..."
#~ msgstr "Legg til media..."

View File

@ -918,7 +918,7 @@ msgstr "Repetir"
msgid "Shuffle"
msgstr "Lectura aleatòria"
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -930,23 +930,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr "Autentificacion en cors..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr ""
@ -957,6 +957,38 @@ msgstr ""
msgid "Tag"
msgstr "Etiqueta"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1176,6 +1208,12 @@ msgstr "Compòrtament"
msgid "Notifications"
msgstr "Notificacions"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Fondut"

View File

@ -920,8 +920,8 @@ msgstr "Powtarzaj"
msgid "Shuffle"
msgstr "Losuj"
msgid "Enter your Last.fm details below:"
msgstr "Podaj swoje dane dla Last.fm:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Użytkownik Last.fm"
@ -932,25 +932,23 @@ msgstr ""
msgid "Last.fm password"
msgstr "Hasło Last.fm"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Wysyłaj informacje o utworach których słucham"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Musisz posiadać <span style=\" font-weight:600;\">opłacone konto</span> aby "
"słuchać radia Last.fm w Clementine."
msgid "Authenticating..."
msgstr "Uwierzytelnianie..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Odtwarzaj Wykonawcę lub Znacznik"
@ -961,6 +959,38 @@ msgstr "Wpisz <b>wykonawcę</b> lub <b>znacznik</b> aby słuchać radia Last.fm.
msgid "Tag"
msgstr "Znacznik"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1180,6 +1210,12 @@ msgstr ""
msgid "Notifications"
msgstr "Powiadomienia"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""
@ -1327,6 +1363,16 @@ msgstr ""
msgid "0:00:00"
msgstr ""
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Podaj swoje dane dla Last.fm:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Musisz posiadać <span style=\" font-weight:600;\">opłacone konto</span> "
#~ "aby słuchać radia Last.fm w Clementine."
#~ msgid "Add media..."
#~ msgstr "Dodaj media..."

View File

@ -923,8 +923,8 @@ msgstr "Repetir"
msgid "Shuffle"
msgstr "Baralhar"
msgid "Enter your Last.fm details below:"
msgstr "Introduza em baixo os seus detalhes Last.fm:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Nome de utilizador Last.fm"
@ -935,25 +935,23 @@ msgstr "Sair"
msgid "Last.fm password"
msgstr "Palavra-passe Last.fm"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Actualizar/registar as faixas que EU oiço"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Mostrar os botões \"adorar\" e \"excluir\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Note que deverá ser <span style=\" font-weight:600;\"> um assinante </span> "
"para ouvir as rádio Last.fm com o Clementine."
msgid "Authenticating..."
msgstr "A Autenticar..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Reproduzir Artista ou Tag"
@ -965,6 +963,38 @@ msgstr ""
msgid "Tag"
msgstr "Tag"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Conversão de Música"
@ -1184,6 +1214,12 @@ msgstr "Comportamento"
msgid "Notifications"
msgstr "Notificações"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Desvanecer"
@ -1332,6 +1368,16 @@ msgstr "Erro do Clementine"
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Introduza em baixo os seus detalhes Last.fm:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Note que deverá ser <span style=\" font-weight:600;\"> um assinante </"
#~ "span> para ouvir as rádio Last.fm com o Clementine."
#~ msgid "%1's Neighborhood"
#~ msgstr "Vizinhos da %1's"

View File

@ -926,8 +926,8 @@ msgstr "Repetir"
msgid "Shuffle"
msgstr "Reprodução Aleatória"
msgid "Enter your Last.fm details below:"
msgstr "Digite seus dados do Last.fm abaixo:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Nome de usuário Last.fm"
@ -938,25 +938,23 @@ msgstr "Sair"
msgid "Last.fm password"
msgstr "Senha do Last.fm"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Adicionar ao meu perfil os dados das músicas que eu ouvir"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Exibir os botões \"adoro\" e \"odeio\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Nota: Você deve ser um <span style=\" fonte-weight:600;\">assinante</span> "
"para ouvir a rádio Last.fm do Clementine."
msgid "Authenticating..."
msgstr "Autenticando..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Reproduzir Artista ou Marcador"
@ -969,6 +967,38 @@ msgstr ""
msgid "Tag"
msgstr "Marcador"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Transcodificar Música"
@ -1188,6 +1218,12 @@ msgstr "Comportamento"
msgid "Notifications"
msgstr "Notificações"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Diminuindo"
@ -1334,3 +1370,13 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Digite seus dados do Last.fm abaixo:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Nota: Você deve ser um <span style=\" fonte-weight:600;\">assinante</"
#~ "span> para ouvir a rádio Last.fm do Clementine."

View File

@ -919,7 +919,7 @@ msgstr "Repetă"
msgid "Shuffle"
msgstr "Amestecă"
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -931,23 +931,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr ""
@ -958,6 +958,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1177,6 +1209,12 @@ msgstr "Comportament"
msgid "Notifications"
msgstr "Notificări"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -924,8 +924,8 @@ msgstr "Повторить"
msgid "Shuffle"
msgstr "Перемешать"
msgid "Enter your Last.fm details below:"
msgstr "Введите ваши данные Last.fm:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Логин Last.fm"
@ -936,25 +936,23 @@ msgstr "Выйти"
msgid "Last.fm password"
msgstr "Пароль Last.fm"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Скробблить треки, которые я слушаю"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Показывать кнопки \"Избранное\" и \"Запретить\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Обратите внимание, что вы должны быть <span style=\"font-weight:600;"
"\">платным подписчиком</span> ,чтобы слушать радио Last.fm из Clementine."
msgid "Authenticating..."
msgstr "Аутентификация..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Проиграть исполнителя или тег"
@ -965,6 +963,38 @@ msgstr "Укажите <b>исполнителя</b> или <b>тег</b> что
msgid "Tag"
msgstr "Тег"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Перекодировать композиции"
@ -1184,6 +1214,12 @@ msgstr "Поведение"
msgid "Notifications"
msgstr "Уведомления"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Затухание"
@ -1332,6 +1368,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Введите ваши данные Last.fm:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Обратите внимание, что вы должны быть <span style=\"font-weight:600;"
#~ "\">платным подписчиком</span> ,чтобы слушать радио Last.fm из Clementine."
#~ msgid "Add media..."
#~ msgstr "Добавить..."

View File

@ -923,8 +923,8 @@ msgstr "Opakovať"
msgid "Shuffle"
msgstr "Zamiešať"
msgid "Enter your Last.fm details below:"
msgstr "Vložte svoje Last.fm detaily nižšie:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm použ. meno"
@ -935,25 +935,23 @@ msgstr "Odhlásiť"
msgid "Last.fm password"
msgstr "Last.fm heslo"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Skrobblovať skladby, ktoré počúvam"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Zobrazovať \"obľúbené\" a \"neznášané\" tlačítka"
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Pamätajte, že musíte byť <span style=\" font-weight:600;\">platiaci "
"odberateľ</span> aby ste mohli počúvať Last.fm rádio v Clementine."
msgid "Authenticating..."
msgstr "Autentifikácia..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Hrať interpréta alebo tag"
@ -966,6 +964,38 @@ msgstr ""
msgid "Tag"
msgstr "Tag"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Transkódovať hudbu"
@ -1185,6 +1215,12 @@ msgstr "Správanie"
msgid "Notifications"
msgstr "Notifikácie"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Zoslabovanie"
@ -1332,6 +1368,16 @@ msgstr "Chyba Clementine"
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Vložte svoje Last.fm detaily nižšie:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Pamätajte, že musíte byť <span style=\" font-weight:600;\">platiaci "
#~ "odberateľ</span> aby ste mohli počúvať Last.fm rádio v Clementine."
#~ msgid "&Hide tray icon"
#~ msgstr "&Skryť tray ikonu"

View File

@ -923,8 +923,8 @@ msgstr "Upprepa"
msgid "Shuffle"
msgstr "Slumpvist"
msgid "Enter your Last.fm details below:"
msgstr "Fyll i dina Last.fm uppgifter nedan:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
msgstr "Last.fm användarnamn"
@ -935,25 +935,23 @@ msgstr "Logga ut"
msgid "Last.fm password"
msgstr "Last.fm lösenord"
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr "Scrobbla spår som jag lyssnar till"
msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Visa knapparna \"gilla\" och \"banlys\""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
"Du måste ha ett <span style=\"font-weight:600;\">betalabonnemang</span> för "
"att kunna lyssna på Last.fm radio i Clementine."
msgid "Authenticating..."
msgstr "Kontrollerar behörighet..."
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr "Spela upp artist eller tagg"
@ -966,6 +964,38 @@ msgstr ""
msgid "Tag"
msgstr "Tagg"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr "Omkoda musik"
@ -1185,6 +1215,12 @@ msgstr "Beteende"
msgid "Notifications"
msgstr "Underrättelser"
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr "Toning"
@ -1332,6 +1368,16 @@ msgstr ""
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Enter your Last.fm details below:"
#~ msgstr "Fyll i dina Last.fm uppgifter nedan:"
#~ msgid ""
#~ "Note that you must be a <span style=\" font-weight:600;\">paid "
#~ "subscriber</span> to listen to Last.fm radio from within Clementine."
#~ msgstr ""
#~ "Du måste ha ett <span style=\"font-weight:600;\">betalabonnemang</span> "
#~ "för att kunna lyssna på Last.fm radio i Clementine."
#~ msgid "Options"
#~ msgstr "Flaggor"

View File

@ -918,7 +918,7 @@ msgstr "Tekrarla"
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -930,23 +930,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
msgid "Play Artist or Tag"
msgstr ""
@ -957,6 +957,38 @@ msgstr ""
msgid "Tag"
msgstr "Etiket"
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1176,6 +1208,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr "Last.fm"
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -610,7 +610,7 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -622,23 +622,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -687,6 +687,38 @@ msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -1115,6 +1147,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -918,7 +918,7 @@ msgstr ""
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -930,23 +930,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -957,6 +957,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1176,6 +1208,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -918,7 +918,7 @@ msgstr ""
msgid "Shuffle"
msgstr ""
msgid "Enter your Last.fm details below:"
msgid "Account details"
msgstr ""
msgid "Last.fm username"
@ -930,23 +930,23 @@ msgstr ""
msgid "Last.fm password"
msgstr ""
msgid ""
"You can scrobble tracks for free, but only <span style=\" font-weight:600;"
"\">paid subscribers</span> can stream Last.fm radio from Clementine."
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Scrobble tracks that I listen to"
msgstr ""
msgid "Show the \"love\" and \"ban\" buttons"
msgstr ""
msgid ""
"Note that you must be a <span style=\" font-weight:600;\">paid subscriber</"
"span> to listen to Last.fm radio from within Clementine."
msgstr ""
msgid "Authenticating..."
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Play Artist or Tag"
msgstr ""
@ -957,6 +957,38 @@ msgstr ""
msgid "Tag"
msgstr ""
msgid "Membership type"
msgstr ""
msgid "I don't have a Magnatune account"
msgstr ""
msgid "Streaming membership"
msgstr ""
msgid "Download membership"
msgstr ""
msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a "
"membership removes the messages at the end of each track."
msgstr ""
msgid "Username"
msgstr ""
msgid "Password"
msgstr ""
msgid "Preferred audio format"
msgstr ""
msgid "VBR MP3"
msgstr ""
msgid "128k MP3"
msgstr ""
msgid "Transcode Music"
msgstr ""
@ -1176,6 +1208,12 @@ msgstr ""
msgid "Notifications"
msgstr ""
msgid "Last.fm"
msgstr ""
msgid "Magnatune"
msgstr ""
msgid "Fading"
msgstr ""

View File

@ -138,6 +138,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
library_ = new Library(database_, this);
cover_manager_.reset(new AlbumCoverManager(network, library_->backend()));
settings_dialog_.reset(new SettingsDialog); // Needs RadioModel
radio_model_->SetSettingsDialog(settings_dialog_.get());
// Initialise the UI
ui_->setupUi(this);

View File

@ -18,6 +18,7 @@
#include "iconloader.h"
#include "mainwindow.h"
#include "settingsdialog.h"
#include "ui_settingsdialog.h"
#include "engines/enginebase.h"
#include "widgets/osd.h"
#include "widgets/osdpretty.h"
@ -33,137 +34,139 @@
SettingsDialog::SettingsDialog(QWidget* parent)
: QDialog(parent),
ui_(new Ui_SettingsDialog),
loading_settings_(false),
pretty_popup_(new OSDPretty(OSDPretty::Mode_Draggable))
{
ui_.setupUi(this);
ui_->setupUi(this);
pretty_popup_->SetMessage(tr("OSD Preview"), tr("Drag to reposition"),
QImage(":nocover.png"));
// Icons
ui_.list->item(0)->setIcon(IconLoader::Load("media-playback-start")); // Playback
ui_.list->item(2)->setIcon(IconLoader::Load("help-hint")); // Notifications
ui_.list->item(3)->setIcon(IconLoader::Load("folder-sound")); // Library
ui_->list->item(0)->setIcon(IconLoader::Load("media-playback-start")); // Playback
ui_->list->item(2)->setIcon(IconLoader::Load("help-hint")); // Notifications
ui_->list->item(3)->setIcon(IconLoader::Load("folder-sound")); // Library
// Playback
connect(ui_.fading_cross, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_.fading_out, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_.fading_auto, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->fading_cross, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->fading_out, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->fading_auto, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
#ifdef HAVE_GSTREAMER
connect(ui_.gst_plugin, SIGNAL(currentIndexChanged(int)), SLOT(GstPluginChanged(int)));
connect(ui_->gst_plugin, SIGNAL(currentIndexChanged(int)), SLOT(GstPluginChanged(int)));
#endif
connect(ui_.replaygain_preamp, SIGNAL(valueChanged(int)), SLOT(RgPreampChanged(int)));
ui_.replaygain_preamp_label->setMinimumWidth(
QFontMetrics(ui_.replaygain_preamp_label->font()).width("-WW.W dB"));
RgPreampChanged(ui_.replaygain_preamp->value());
connect(ui_->replaygain_preamp, SIGNAL(valueChanged(int)), SLOT(RgPreampChanged(int)));
ui_->replaygain_preamp_label->setMinimumWidth(
QFontMetrics(ui_->replaygain_preamp_label->font()).width("-WW.W dB"));
RgPreampChanged(ui_->replaygain_preamp->value());
// Behaviour
connect(ui_.b_show_tray_icon_, SIGNAL(toggled(bool)), SLOT(ShowTrayIconToggled(bool)));
connect(ui_->b_show_tray_icon_, SIGNAL(toggled(bool)), SLOT(ShowTrayIconToggled(bool)));
// Last.fm
connect(ui_.lastfm, SIGNAL(ValidationComplete(bool)), SLOT(LastFMValidationComplete(bool)));
connect(ui_->lastfm, SIGNAL(ValidationComplete(bool)), SLOT(LastFMValidationComplete(bool)));
// List box
connect(ui_.list, SIGNAL(currentTextChanged(QString)), SLOT(CurrentTextChanged(QString)));
ui_.list->setCurrentRow(0);
connect(ui_->list, SIGNAL(currentTextChanged(QString)), SLOT(CurrentTextChanged(QString)));
ui_->list->setCurrentRow(0);
// Notifications
ui_.notifications_bg_preset->setItemData(0, QColor(OSDPretty::kPresetBlue), Qt::DecorationRole);
ui_.notifications_bg_preset->setItemData(1, QColor(OSDPretty::kPresetOrange), Qt::DecorationRole);
ui_->notifications_bg_preset->setItemData(0, QColor(OSDPretty::kPresetBlue), Qt::DecorationRole);
ui_->notifications_bg_preset->setItemData(1, QColor(OSDPretty::kPresetOrange), Qt::DecorationRole);
connect(ui_.notifications_none, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_.notifications_native, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_.notifications_tray, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_.notifications_pretty, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_.notifications_opacity, SIGNAL(valueChanged(int)), SLOT(PrettyOpacityChanged(int)));
connect(ui_.notifications_bg_preset, SIGNAL(activated(int)), SLOT(PrettyColorPresetChanged(int)));
connect(ui_.notifications_fg_choose, SIGNAL(clicked()), SLOT(ChooseFgColor()));
connect(ui_->notifications_none, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_->notifications_native, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_->notifications_tray, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_->notifications_pretty, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged()));
connect(ui_->notifications_opacity, SIGNAL(valueChanged(int)), SLOT(PrettyOpacityChanged(int)));
connect(ui_->notifications_bg_preset, SIGNAL(activated(int)), SLOT(PrettyColorPresetChanged(int)));
connect(ui_->notifications_fg_choose, SIGNAL(clicked()), SLOT(ChooseFgColor()));
if (!OSD::SupportsNativeNotifications())
ui_.notifications_native->setEnabled(false);
ui_->notifications_native->setEnabled(false);
if (!OSD::SupportsTrayPopups())
ui_.notifications_tray->setEnabled(false);
ui_->notifications_tray->setEnabled(false);
connect(ui_.stacked_widget, SIGNAL(currentChanged(int)), SLOT(UpdatePopupVisible()));
connect(ui_.notifications_pretty, SIGNAL(toggled(bool)), SLOT(UpdatePopupVisible()));
connect(ui_->stacked_widget, SIGNAL(currentChanged(int)), SLOT(UpdatePopupVisible()));
connect(ui_->notifications_pretty, SIGNAL(toggled(bool)), SLOT(UpdatePopupVisible()));
// Make sure the list is big enough to show all the items
ui_.list->setMinimumWidth(ui_.list->sizeHintForColumn(0));
ui_->list->setMinimumWidth(ui_->list->sizeHintForColumn(0));
}
SettingsDialog::~SettingsDialog() {
delete pretty_popup_;
delete ui_;
}
void SettingsDialog::CurrentTextChanged(const QString &text) {
ui_.title->setText("<b>" + text + "</b>");
ui_->title->setText("<b>" + text + "</b>");
}
void SettingsDialog::SetLibraryDirectoryModel(LibraryDirectoryModel* model) {
ui_.library_config->SetModel(model);
ui_->library_config->SetModel(model);
}
void SettingsDialog::LastFMValidationComplete(bool success) {
ui_.buttonBox->setEnabled(true);
ui_->buttonBox->setEnabled(true);
if (success)
accept();
}
void SettingsDialog::accept() {
if (ui_.lastfm->NeedsValidation()) {
ui_.lastfm->Validate();
ui_.buttonBox->setEnabled(false);
if (ui_->lastfm->NeedsValidation()) {
ui_->lastfm->Validate();
ui_->buttonBox->setEnabled(false);
return;
} else {
ui_.lastfm->Save();
ui_->lastfm->Save();
}
QSettings s;
// Behaviour
MainWindow::StartupBehaviour behaviour;
if (ui_.b_always_hide_->isChecked()) behaviour = MainWindow::Startup_AlwaysHide;
if (ui_.b_always_show_->isChecked()) behaviour = MainWindow::Startup_AlwaysShow;
if (ui_.b_remember_->isChecked()) behaviour = MainWindow::Startup_Remember;
if (ui_->b_always_hide_->isChecked()) behaviour = MainWindow::Startup_AlwaysHide;
if (ui_->b_always_show_->isChecked()) behaviour = MainWindow::Startup_AlwaysShow;
if (ui_->b_remember_->isChecked()) behaviour = MainWindow::Startup_Remember;
s.beginGroup(MainWindow::kSettingsGroup);
s.setValue("showtray", ui_.b_show_tray_icon_->isChecked());
s.setValue("showtray", ui_->b_show_tray_icon_->isChecked());
s.setValue("startupbehaviour", int(behaviour));
s.endGroup();
// Playback
s.beginGroup(Engine::Base::kSettingsGroup);
s.setValue("FadeoutEnabled", ui_.fading_out->isChecked());
s.setValue("FadeoutDuration", ui_.fading_duration->value());
s.setValue("CrossfadeEnabled", ui_.fading_cross->isChecked());
s.setValue("AutoCrossfadeEnabled", ui_.fading_auto->isChecked());
s.setValue("FadeoutEnabled", ui_->fading_out->isChecked());
s.setValue("FadeoutDuration", ui_->fading_duration->value());
s.setValue("CrossfadeEnabled", ui_->fading_cross->isChecked());
s.setValue("AutoCrossfadeEnabled", ui_->fading_auto->isChecked());
s.endGroup();
#ifdef HAVE_GSTREAMER
s.beginGroup(GstEngine::kSettingsGroup);
s.setValue("sink", ui_.gst_plugin->itemData(ui_.gst_plugin->currentIndex()).toString());
s.setValue("device", ui_.gst_device->text());
s.setValue("rgenabled", ui_.replaygain->isChecked());
s.setValue("rgmode", ui_.replaygain_mode->currentIndex());
s.setValue("rgpreamp", float(ui_.replaygain_preamp->value()) / 10 - 15);
s.setValue("rgcompression", ui_.replaygain_compression->isChecked());
s.setValue("sink", ui_->gst_plugin->itemData(ui_->gst_plugin->currentIndex()).toString());
s.setValue("device", ui_->gst_device->text());
s.setValue("rgenabled", ui_->replaygain->isChecked());
s.setValue("rgmode", ui_->replaygain_mode->currentIndex());
s.setValue("rgpreamp", float(ui_->replaygain_preamp->value()) / 10 - 15);
s.setValue("rgcompression", ui_->replaygain_compression->isChecked());
s.endGroup();
#endif
// Notifications
OSD::Behaviour osd_behaviour = OSD::Disabled;
if (ui_.notifications_none->isChecked()) osd_behaviour = OSD::Disabled;
else if (ui_.notifications_native->isChecked()) osd_behaviour = OSD::Native;
else if (ui_.notifications_tray->isChecked()) osd_behaviour = OSD::TrayPopup;
else if (ui_.notifications_pretty->isChecked()) osd_behaviour = OSD::Pretty;
if (ui_->notifications_none->isChecked()) osd_behaviour = OSD::Disabled;
else if (ui_->notifications_native->isChecked()) osd_behaviour = OSD::Native;
else if (ui_->notifications_tray->isChecked()) osd_behaviour = OSD::TrayPopup;
else if (ui_->notifications_pretty->isChecked()) osd_behaviour = OSD::Pretty;
s.beginGroup(OSD::kSettingsGroup);
s.setValue("Behaviour", int(osd_behaviour));
s.setValue("Timeout", ui_.notifications_duration->value() * 1000);
s.setValue("ShowOnVolumeChange", ui_.notifications_volume->isChecked());
s.setValue("ShowArt", ui_.notifications_art->isChecked());
s.setValue("Timeout", ui_->notifications_duration->value() * 1000);
s.setValue("ShowOnVolumeChange", ui_->notifications_volume->isChecked());
s.setValue("ShowArt", ui_->notifications_art->isChecked());
s.endGroup();
s.beginGroup(OSDPretty::kSettingsGroup);
@ -174,7 +177,7 @@ void SettingsDialog::accept() {
s.setValue("popup_pos", pretty_popup_->popup_pos());
s.endGroup();
ui_.library_config->Save();
ui_->library_config->Save();
QDialog::accept();
}
@ -185,42 +188,42 @@ void SettingsDialog::showEvent(QShowEvent*) {
// Behaviour
s.beginGroup(MainWindow::kSettingsGroup);
ui_.b_show_tray_icon_->setChecked(s.value("showtray", true).toBool());
ui_->b_show_tray_icon_->setChecked(s.value("showtray", true).toBool());
MainWindow::StartupBehaviour behaviour = MainWindow::StartupBehaviour(
s.value("startupbehaviour", MainWindow::Startup_Remember).toInt());
switch (behaviour) {
case MainWindow::Startup_AlwaysHide: ui_.b_always_hide_->setChecked(true); break;
case MainWindow::Startup_AlwaysShow: ui_.b_always_show_->setChecked(true); break;
case MainWindow::Startup_Remember: ui_.b_remember_->setChecked(true); break;
case MainWindow::Startup_AlwaysHide: ui_->b_always_hide_->setChecked(true); break;
case MainWindow::Startup_AlwaysShow: ui_->b_always_show_->setChecked(true); break;
case MainWindow::Startup_Remember: ui_->b_remember_->setChecked(true); break;
}
s.endGroup();
// Last.fm
ui_.lastfm->Load();
ui_->lastfm->Load();
// Playback
s.beginGroup(Engine::Base::kSettingsGroup);
ui_.fading_out->setChecked(s.value("FadeoutEnabled", true).toBool());
ui_.fading_cross->setChecked(s.value("CrossfadeEnabled", true).toBool());
ui_.fading_auto->setChecked(s.value("AutoCrossfadeEnabled", false).toBool());
ui_.fading_duration->setValue(s.value("FadeoutDuration", 2000).toInt());
ui_->fading_out->setChecked(s.value("FadeoutEnabled", true).toBool());
ui_->fading_cross->setChecked(s.value("CrossfadeEnabled", true).toBool());
ui_->fading_auto->setChecked(s.value("AutoCrossfadeEnabled", false).toBool());
ui_->fading_duration->setValue(s.value("FadeoutDuration", 2000).toInt());
s.endGroup();
#ifdef HAVE_GSTREAMER
s.beginGroup(GstEngine::kSettingsGroup);
QString sink = s.value("sink", GstEngine::kAutoSink).toString();
ui_.gst_plugin->setCurrentIndex(0);
for (int i=0 ; i<ui_.gst_plugin->count() ; ++i) {
if (ui_.gst_plugin->itemData(i).toString() == sink) {
ui_.gst_plugin->setCurrentIndex(i);
ui_->gst_plugin->setCurrentIndex(0);
for (int i=0 ; i<ui_->gst_plugin->count() ; ++i) {
if (ui_->gst_plugin->itemData(i).toString() == sink) {
ui_->gst_plugin->setCurrentIndex(i);
break;
}
}
ui_.gst_device->setText(s.value("device").toString());
ui_.replaygain->setChecked(s.value("rgenabled", false).toBool());
ui_.replaygain_mode->setCurrentIndex(s.value("rgmode", 0).toInt());
ui_.replaygain_preamp->setValue(s.value("rgpreamp", 0.0).toDouble() * 10 + 150);
ui_.replaygain_compression->setChecked(s.value("rgcompression", true).toBool());
ui_->gst_device->setText(s.value("device").toString());
ui_->replaygain->setChecked(s.value("rgenabled", false).toBool());
ui_->replaygain_mode->setCurrentIndex(s.value("rgmode", 0).toInt());
ui_->replaygain_preamp->setValue(s.value("rgpreamp", 0.0).toDouble() * 10 + 150);
ui_->replaygain_compression->setChecked(s.value("rgcompression", true).toBool());
s.endGroup();
#endif
@ -230,47 +233,47 @@ void SettingsDialog::showEvent(QShowEvent*) {
switch (osd_behaviour) {
case OSD::Native:
if (OSD::SupportsNativeNotifications()) {
ui_.notifications_native->setChecked(true);
ui_->notifications_native->setChecked(true);
break;
}
// Fallthrough
case OSD::Pretty:
ui_.notifications_pretty->setChecked(true);
ui_->notifications_pretty->setChecked(true);
break;
case OSD::TrayPopup:
if (OSD::SupportsTrayPopups()) {
ui_.notifications_tray->setChecked(true);
ui_->notifications_tray->setChecked(true);
break;
}
// Fallthrough
case OSD::Disabled:
default:
ui_.notifications_none->setChecked(true);
ui_->notifications_none->setChecked(true);
break;
}
ui_.notifications_duration->setValue(s.value("Timeout", 5000).toInt() / 1000);
ui_.notifications_volume->setChecked(s.value("ShowOnVolumeChange", false).toBool());
ui_.notifications_art->setChecked(s.value("ShowArt", true).toBool());
ui_->notifications_duration->setValue(s.value("Timeout", 5000).toInt() / 1000);
ui_->notifications_volume->setChecked(s.value("ShowOnVolumeChange", false).toBool());
ui_->notifications_art->setChecked(s.value("ShowArt", true).toBool());
s.endGroup();
// Pretty OSD
pretty_popup_->ReloadSettings();
ui_.notifications_opacity->setValue(pretty_popup_->background_opacity() * 100);
ui_->notifications_opacity->setValue(pretty_popup_->background_opacity() * 100);
QRgb color = pretty_popup_->background_color();
if (color == OSDPretty::kPresetBlue)
ui_.notifications_bg_preset->setCurrentIndex(0);
ui_->notifications_bg_preset->setCurrentIndex(0);
else if (color == OSDPretty::kPresetOrange)
ui_.notifications_bg_preset->setCurrentIndex(1);
ui_->notifications_bg_preset->setCurrentIndex(1);
else
ui_.notifications_bg_preset->setCurrentIndex(2);
ui_.notifications_bg_preset->setItemData(2, QColor(color), Qt::DecorationRole);
ui_->notifications_bg_preset->setCurrentIndex(2);
ui_->notifications_bg_preset->setItemData(2, QColor(color), Qt::DecorationRole);
UpdatePopupVisible();
ui_.library_config->Load();
ui_->library_config->Load();
loading_settings_ = false;
}
@ -280,11 +283,11 @@ void SettingsDialog::hideEvent(QHideEvent *) {
}
void SettingsDialog::NotificationTypeChanged() {
bool enabled = !ui_.notifications_none->isChecked();
bool pretty = ui_.notifications_pretty->isChecked();
bool enabled = !ui_->notifications_none->isChecked();
bool pretty = ui_->notifications_pretty->isChecked();
ui_.notifications_general->setEnabled(enabled);
ui_.notifications_pretty_group->setEnabled(pretty);
ui_->notifications_general->setEnabled(enabled);
ui_->notifications_pretty_group->setEnabled(pretty);
}
void SettingsDialog::PrettyOpacityChanged(int value) {
@ -294,8 +297,8 @@ void SettingsDialog::PrettyOpacityChanged(int value) {
void SettingsDialog::UpdatePopupVisible() {
pretty_popup_->setVisible(
isVisible() &&
ui_.notifications_pretty->isChecked() &&
ui_.stacked_widget->currentWidget() == ui_.notifications_page);
ui_->notifications_pretty->isChecked() &&
ui_->stacked_widget->currentWidget() == ui_->notifications_page);
}
void SettingsDialog::PrettyColorPresetChanged(int index) {
@ -324,7 +327,7 @@ void SettingsDialog::ChooseBgColor() {
return;
pretty_popup_->set_background_color(color.rgb());
ui_.notifications_bg_preset->setItemData(2, color, Qt::DecorationRole);
ui_->notifications_bg_preset->setItemData(2, color, Qt::DecorationRole);
}
void SettingsDialog::ChooseFgColor() {
@ -336,35 +339,35 @@ void SettingsDialog::ChooseFgColor() {
}
void SettingsDialog::ShowTrayIconToggled(bool on) {
ui_.b_always_hide_->setEnabled(on);
if (!on && ui_.b_always_hide_->isChecked())
ui_.b_remember_->setChecked(true);
ui_->b_always_hide_->setEnabled(on);
if (!on && ui_->b_always_hide_->isChecked())
ui_->b_remember_->setChecked(true);
}
#ifdef HAVE_GSTREAMER
void SettingsDialog::SetGstEngine(const GstEngine *engine) {
GstEngine::PluginDetailsList list = engine->GetOutputsList();
ui_.gst_plugin->setItemData(0, GstEngine::kAutoSink);
ui_->gst_plugin->setItemData(0, GstEngine::kAutoSink);
foreach (const GstEngine::PluginDetails& details, list) {
if (details.name == "autoaudiosink")
continue;
ui_.gst_plugin->addItem(details.long_name, details.name);
ui_->gst_plugin->addItem(details.long_name, details.name);
}
ui_.gst_group->setEnabled(true);
ui_.replaygain_group->setEnabled(true);
ui_->gst_group->setEnabled(true);
ui_->replaygain_group->setEnabled(true);
}
#endif // HAVE_GSTREAMER
void SettingsDialog::GstPluginChanged(int index) {
#ifdef HAVE_GSTREAMER
QString name = ui_.gst_plugin->itemData(index).toString();
QString name = ui_->gst_plugin->itemData(index).toString();
bool enabled = GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(name);
ui_.gst_device->setEnabled(enabled);
ui_.gst_device_label->setEnabled(enabled);
ui_->gst_device->setEnabled(enabled);
ui_->gst_device_label->setEnabled(enabled);
#endif // HAVE_GSTREAMER
}
@ -372,11 +375,16 @@ void SettingsDialog::RgPreampChanged(int value) {
float db = float(value) / 10 - 15;
QString db_str;
db_str.sprintf("%+.1f dB", db);
ui_.replaygain_preamp_label->setText(db_str);
ui_->replaygain_preamp_label->setText(db_str);
}
void SettingsDialog::FadingOptionsChanged() {
ui_.fading_options->setEnabled(
ui_.fading_out->isChecked() || ui_.fading_cross->isChecked() ||
ui_.fading_auto->isChecked());
ui_->fading_options->setEnabled(
ui_->fading_out->isChecked() || ui_->fading_cross->isChecked() ||
ui_->fading_auto->isChecked());
}
void SettingsDialog::OpenAtPage(Page page) {
ui_->list->setCurrentRow(page);
show();
}

View File

@ -20,12 +20,13 @@
#include <QDialog>
#include "config.h"
#include "ui_settingsdialog.h"
class LibraryDirectoryModel;
class OSDPretty;
class Ui_SettingsDialog;
#ifdef HAVE_GSTREAMER
class GstEngine;
class GstEngine;
#endif
class SettingsDialog : public QDialog {
@ -35,11 +36,22 @@ class SettingsDialog : public QDialog {
SettingsDialog(QWidget* parent = 0);
~SettingsDialog();
enum Page {
Page_Playback = 0,
Page_Behaviour,
Page_Notifications,
Page_Library,
Page_Lastfm,
Page_Magnatune,
};
void SetLibraryDirectoryModel(LibraryDirectoryModel* model);
#ifdef HAVE_GSTREAMER
void SetGstEngine(const GstEngine* engine);
#endif
void OpenAtPage(Page page);
// QDialog
void accept();
@ -64,7 +76,7 @@ class SettingsDialog : public QDialog {
void RgPreampChanged(int value);
private:
Ui::SettingsDialog ui_;
Ui_SettingsDialog* ui_;
bool loading_settings_;
OSDPretty* pretty_popup_;

View File

@ -79,6 +79,15 @@
<normaloff>:/last.fm/as.png</normaloff>:/last.fm/as.png</iconset>
</property>
</item>
<item>
<property name="text">
<string>Magnatune</string>
</property>
<property name="icon">
<iconset resource="../../data/data.qrc">
<normaloff>:/magnatune.png</normaloff>:/magnatune.png</iconset>
</property>
</item>
</widget>
</item>
<item>
@ -96,7 +105,7 @@
<item>
<widget class="QStackedWidget" name="stacked_widget">
<property name="currentIndex">
<number>0</number>
<number>5</number>
</property>
<widget class="QWidget" name="playback_page">
<layout class="QVBoxLayout" name="verticalLayout_10">
@ -601,6 +610,19 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="magnatune_page">
<layout class="QVBoxLayout" name="verticalLayout_11">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="MagnatuneConfig" name="magnatune" native="true"/>
</item>
</layout>
</widget>
</widget>
</item>
<item>
@ -644,6 +666,12 @@
<extends>QSlider</extends>
<header>widgets/stickyslider.h</header>
</customwidget>
<customwidget>
<class>MagnatuneConfig</class>
<extends>QWidget</extends>
<header>radio/magnatuneconfig.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>list</tabstop>