Allow names for custom saved streams. Fixes issue #242

This commit is contained in:
David Sansome 2010-05-27 22:53:07 +00:00
parent 4836b8d420
commit 791534703c
32 changed files with 382 additions and 68 deletions

View File

@ -33,6 +33,7 @@ class SimpleTreeItem {
void InsertNotify(T* _parent); void InsertNotify(T* _parent);
void DeleteNotify(int child_row); void DeleteNotify(int child_row);
void ClearNotify(); void ClearNotify();
void ChangedNotify();
void Delete(int child_row); void Delete(int child_row);
T* ChildByKey(const QString& key) const; T* ChildByKey(const QString& key) const;
@ -128,6 +129,11 @@ void SimpleTreeItem<T>::ClearNotify() {
model->EndDelete(); model->EndDelete();
} }
template <typename T>
void SimpleTreeItem<T>::ChangedNotify() {
model->EmitDataChanged(static_cast<T*>(this));
}
template <typename T> template <typename T>
SimpleTreeItem<T>::~SimpleTreeItem() { SimpleTreeItem<T>::~SimpleTreeItem() {
qDeleteAll(children); qDeleteAll(children);

View File

@ -44,6 +44,7 @@ class SimpleTreeModel : public QAbstractItemModel {
void EndInsert(); void EndInsert();
void BeginDelete(T* parent, int start, int end = -1); void BeginDelete(T* parent, int start, int end = -1);
void EndDelete(); void EndDelete();
void EmitDataChanged(T* item);
protected: protected:
virtual void LazyPopulate(T* item) = 0; virtual void LazyPopulate(T* item) = 0;
@ -144,4 +145,10 @@ void SimpleTreeModel<T>::EndDelete() {
endRemoveRows(); endRemoveRows();
} }
template <typename T>
void SimpleTreeModel<T>::EmitDataChanged(T *item) {
QModelIndex index(ItemToIndex(item));
emit dataChanged(index, index);
}
#endif // SIMPLETREEMODEL_H #endif // SIMPLETREEMODEL_H

View File

@ -15,6 +15,7 @@
*/ */
#include "savedradio.h" #include "savedradio.h"
#include "ui/addstreamdialog.h"
#include "ui/iconloader.h" #include "ui/iconloader.h"
#include <QSettings> #include <QSettings>
@ -26,13 +27,17 @@ const char* SavedRadio::kSettingsGroup = "SavedRadio";
SavedRadio::SavedRadio(RadioModel* parent) SavedRadio::SavedRadio(RadioModel* parent)
: RadioService(kServiceName, parent), : RadioService(kServiceName, parent),
root_(NULL), root_(NULL),
context_menu_(new QMenu) context_menu_(new QMenu),
edit_dialog_(new AddStreamDialog)
{ {
add_action_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Add to playlist"), this, SLOT(AddToPlaylist())); add_action_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Add to playlist"), this, SLOT(AddToPlaylist()));
remove_action_ = context_menu_->addAction(IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); remove_action_ = context_menu_->addAction(IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove()));
edit_action_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit..."), this, SLOT(Edit()));
context_menu_->addSeparator(); context_menu_->addSeparator();
context_menu_->addAction(IconLoader::Load("document-open-remote"), tr("Add another stream..."), this, SIGNAL(ShowAddStreamDialog())); context_menu_->addAction(IconLoader::Load("document-open-remote"), tr("Add another stream..."), this, SIGNAL(ShowAddStreamDialog()));
edit_dialog_->set_save_visible(false);
LoadStreams(); LoadStreams();
} }
@ -49,7 +54,7 @@ RadioItem* SavedRadio::CreateRootItem(RadioItem* parent) {
void SavedRadio::LazyPopulate(RadioItem* item) { void SavedRadio::LazyPopulate(RadioItem* item) {
switch (item->type) { switch (item->type) {
case RadioItem::Type_Service: case RadioItem::Type_Service:
foreach (const QString& stream, streams_) foreach (const Stream& stream, streams_)
ItemForStream(stream, root_); ItemForStream(stream, root_);
break; break;
@ -69,7 +74,7 @@ void SavedRadio::LoadStreams() {
int count = s.beginReadArray("streams"); int count = s.beginReadArray("streams");
for (int i=0 ; i<count ; ++i) { for (int i=0 ; i<count ; ++i) {
s.setArrayIndex(i); s.setArrayIndex(i);
streams_ << s.value("url").toString(); streams_ << Stream(s.value("url").toString(), s.value("name").toString());
} }
s.endArray(); s.endArray();
} }
@ -82,7 +87,8 @@ void SavedRadio::SaveStreams() {
s.beginWriteArray("streams", count); s.beginWriteArray("streams", count);
for (int i=0 ; i<count ; ++i) { for (int i=0 ; i<count ; ++i) {
s.setArrayIndex(i); s.setArrayIndex(i);
s.setValue("url", streams_[i]); s.setValue("url", streams_[i].url_);
s.setValue("name", streams_[i].name_);
} }
s.endArray(); s.endArray();
} }
@ -93,36 +99,56 @@ void SavedRadio::ShowContextMenu(RadioItem* item, const QModelIndex&,
add_action_->setEnabled(item != root_); add_action_->setEnabled(item != root_);
remove_action_->setEnabled(item != root_); remove_action_->setEnabled(item != root_);
edit_action_->setEnabled(item != root_);
context_menu_->popup(global_pos); context_menu_->popup(global_pos);
} }
void SavedRadio::Remove() { void SavedRadio::Remove() {
streams_.removeAll(context_item_->key); streams_.removeAll(Stream(QUrl(context_item_->key)));
context_item_->parent->DeleteNotify(context_item_->row); context_item_->parent->DeleteNotify(context_item_->row);
SaveStreams(); SaveStreams();
} }
void SavedRadio::Edit() {
edit_dialog_->set_name(context_item_->display_text);
edit_dialog_->set_url(context_item_->key);
if (edit_dialog_->exec() == QDialog::Rejected)
return;
int i = streams_.indexOf(Stream(QUrl(context_item_->key)));
Stream& stream = streams_[i];
stream.name_ = edit_dialog_->name();
stream.url_ = edit_dialog_->url();
context_item_->display_text = stream.name_;
context_item_->key = stream.url_.toString();
context_item_->ChangedNotify();
}
void SavedRadio::AddToPlaylist() { void SavedRadio::AddToPlaylist() {
emit AddItemToPlaylist(context_item_); emit AddItemToPlaylist(context_item_);
} }
RadioItem* SavedRadio::ItemForStream(const QUrl& url, RadioItem* parent) { RadioItem* SavedRadio::ItemForStream(const Stream& stream, RadioItem* parent) {
RadioItem* s = new RadioItem(this, Type_Stream, url.toString(), parent); RadioItem* s = new RadioItem(this, Type_Stream, stream.url_.toString(), parent);
if (!stream.name_.isEmpty())
s->display_text = stream.name_;
s->lazy_loaded = true; s->lazy_loaded = true;
s->icon = QIcon(":last.fm/icon_radio.png"); s->icon = QIcon(":last.fm/icon_radio.png");
s->playable = true; s->playable = true;
return s; return s;
} }
void SavedRadio::Add(const QUrl &url) { void SavedRadio::Add(const QUrl &url, const QString& name) {
if (streams_.contains(url.toString())) if (streams_.contains(Stream(url)))
return; return;
streams_ << url.toString(); Stream stream(url, name);
streams_ << stream;
if (root_->lazy_loaded) { if (root_->lazy_loaded) {
RadioItem* s = ItemForStream(url, NULL); RadioItem* s = ItemForStream(stream, NULL);
s->InsertNotify(root_); s->InsertNotify(root_);
} }
SaveStreams(); SaveStreams();

View File

@ -19,8 +19,12 @@
#include "radioservice.h" #include "radioservice.h"
#include <boost/scoped_ptr.hpp>
class QMenu; class QMenu;
class AddStreamDialog;
class SavedRadio : public RadioService { class SavedRadio : public RadioService {
Q_OBJECT Q_OBJECT
@ -41,7 +45,7 @@ class SavedRadio : public RadioService {
void ShowContextMenu(RadioItem* item, const QModelIndex& index, void ShowContextMenu(RadioItem* item, const QModelIndex& index,
const QPoint& global_pos); const QPoint& global_pos);
void Add(const QUrl& url); void Add(const QUrl& url, const QString& name = QString());
signals: signals:
void ShowAddStreamDialog(); void ShowAddStreamDialog();
@ -49,11 +53,23 @@ class SavedRadio : public RadioService {
private slots: private slots:
void AddToPlaylist(); void AddToPlaylist();
void Remove(); void Remove();
void Edit();
private: private:
struct Stream {
Stream(const QUrl& url, const QString& name = QString())
: url_(url), name_(name) {}
// For QList::contains
bool operator ==(const Stream& other) const { return url_ == other.url_; }
QUrl url_;
QString name_;
};
void LoadStreams(); void LoadStreams();
void SaveStreams(); void SaveStreams();
RadioItem* ItemForStream(const QUrl& url, RadioItem* parent); RadioItem* ItemForStream(const Stream& stream, RadioItem* parent);
private: private:
RadioItem* root_; RadioItem* root_;
@ -62,8 +78,11 @@ class SavedRadio : public RadioService {
QAction* add_action_; QAction* add_action_;
QAction* remove_action_; QAction* remove_action_;
QAction* edit_action_;
QStringList streams_; QList<Stream> streams_;
boost::scoped_ptr<AddStreamDialog> edit_dialog_;
}; };
#endif // SAVEDRADIO_H #endif // SAVEDRADIO_H

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -903,7 +906,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -605,6 +605,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Služba rádia nemohla být načtena :-(" msgstr "Služba rádia nemohla být načtena :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Přidat další proud..." msgstr "Přidat další proud..."
@ -909,8 +912,11 @@ msgstr "Přidat proud"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Zadat URL proudu internetového rádia:" msgstr "Zadat URL proudu internetového rádia:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Uložit tento proud v kartě Rádií" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Správce obalů" msgstr "Správce obalů"
@ -1254,6 +1260,9 @@ msgstr "Hlasitost %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Uložit tento proud v kartě Rádií"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Možnosti" #~ msgstr "Možnosti"

View File

@ -607,6 +607,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Radiotjeneste kunne ikke indlæses :-(" msgstr "Radiotjeneste kunne ikke indlæses :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Tilføj endnu en stream..." msgstr "Tilføj endnu en stream..."
@ -912,8 +915,11 @@ msgstr "Tilføj stream"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Indtast URL'en til en internetradiostream:" msgstr "Indtast URL'en til en internetradiostream:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Gem denne stream i radio-fanen" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Omslagshåndtering" msgstr "Omslagshåndtering"
@ -1257,6 +1263,9 @@ msgstr "Lydstyrke %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Gem denne stream i radio-fanen"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Indstillinger" #~ msgstr "Indstillinger"

View File

@ -604,6 +604,9 @@ msgstr "Magnatune durchsuchen"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Radioservice konnte nicht geladen werden" msgstr "Radioservice konnte nicht geladen werden"
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Stream hinzufügen..." msgstr "Stream hinzufügen..."
@ -910,8 +913,11 @@ msgstr "Stream hinzufügen"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Geben sie die Adresse eines Internetradios an:" msgstr "Geben sie die Adresse eines Internetradios an:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Stream zu \"Meine Internetradios\" hinzufügen" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Cover-Verwaltung" msgstr "Cover-Verwaltung"
@ -1257,6 +1263,9 @@ msgstr "Lautstärke %1"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Stream zu \"Meine Internetradios\" hinzufügen"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Einstellungen" #~ msgstr "Einstellungen"

View File

@ -607,6 +607,9 @@ msgstr "Εύρεση στο Magnatune"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Η υπηρεσίες ραδιοφώνου απέτυχαν να φορτωθούν :-(" msgstr "Η υπηρεσίες ραδιοφώνου απέτυχαν να φορτωθούν :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Προσθήκη άλλης ροής..." msgstr "Προσθήκη άλλης ροής..."
@ -913,8 +916,11 @@ msgstr "Προσθήκη ροής"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Εισαγωγή της διεύθυνσης μιας ροής ραδιοφώνου:" msgstr "Εισαγωγή της διεύθυνσης μιας ροής ραδιοφώνου:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Αποθήκευση της ροής αυτής στην καρτέλα του ραδιοφώνου" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Διαχείριση εξώφυλλων" msgstr "Διαχείριση εξώφυλλων"
@ -1258,6 +1264,9 @@ msgstr "Ένταση %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Αποθήκευση της ροής αυτής στην καρτέλα του ραδιοφώνου"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Επιλογές" #~ msgstr "Επιλογές"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Radio service couldn't be loaded :-(" msgstr "Radio service couldn't be loaded :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Add another stream..." msgstr "Add another stream..."
@ -907,8 +910,11 @@ msgstr "Add Stream"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Enter the URL of an internet radio stream:" msgstr "Enter the URL of an internet radio stream:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Save this stream in the Radio tab" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Cover Manager" msgstr "Cover Manager"
@ -1252,6 +1258,9 @@ msgstr "Volume %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Save this stream in the Radio tab"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Options" #~ msgstr "Options"

View File

@ -610,6 +610,9 @@ msgstr "Buscar en Magnatune"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Servicio de radio no pudo ser cargado :-(" msgstr "Servicio de radio no pudo ser cargado :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Añadir un flujo de radio..." msgstr "Añadir un flujo de radio..."
@ -917,8 +920,11 @@ msgstr "Añadir Flujo de Radio"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Ingrese la URL de un flujo de radio por internet:" msgstr "Ingrese la URL de un flujo de radio por internet:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Guardar este flujo en la seccion de Radios" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Gestor de carátulas" msgstr "Gestor de carátulas"
@ -1264,6 +1270,9 @@ msgstr "Volumen %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Guardar este flujo en la seccion de Radios"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Opciones" #~ msgstr "Opciones"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -903,7 +906,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -611,6 +611,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Le service radio n'a pas pu être chargé :-(" msgstr "Le service radio n'a pas pu être chargé :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Ajouter un autre flux..." msgstr "Ajouter un autre flux..."
@ -915,8 +918,11 @@ msgstr "Ajouter un flux"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Entrez l'adresse du flux d'une radio internet :" msgstr "Entrez l'adresse du flux d'une radio internet :"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Conserver un raccourci vers ce flux dans l'onglet Radio" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Gestionnaire de jaquettes" msgstr "Gestionnaire de jaquettes"
@ -1262,6 +1268,9 @@ msgstr "Volume %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Conserver un raccourci vers ce flux dans l'onglet Radio"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Options" #~ msgstr "Options"

View File

@ -605,6 +605,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Servizo de rádio non pudo ser carregado :-(" msgstr "Servizo de rádio non pudo ser carregado :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Adicionar outra stream..." msgstr "Adicionar outra stream..."
@ -905,7 +908,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -607,6 +607,9 @@ msgstr "Cerca in Magnatune"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Il servizio radio non può essere caricato :-(" msgstr "Il servizio radio non può essere caricato :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Aggiungi un altro flusso..." msgstr "Aggiungi un altro flusso..."
@ -914,8 +917,11 @@ msgstr "Aggiungi flusso"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Inserisci l'URL di flusso radio in Internet:" msgstr "Inserisci l'URL di flusso radio in Internet:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Salva questo flusso nella scheda Radio" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Gestore copertine" msgstr "Gestore copertine"
@ -1261,6 +1267,9 @@ msgstr "Volume %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Salva questo flusso nella scheda Radio"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Opzioni" #~ msgstr "Opzioni"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -905,7 +908,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -605,6 +605,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Kunne ikke laste inn radiotjeneste :-(" msgstr "Kunne ikke laste inn radiotjeneste :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Legg til enda en strøm..." msgstr "Legg til enda en strøm..."
@ -909,8 +912,11 @@ msgstr "Legg til strøm"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Skriv adressen (URL) til en internett radiostrøm" msgstr "Skriv adressen (URL) til en internett radiostrøm"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Lagre denne strømmen" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Behandling av plateomslag" msgstr "Behandling av plateomslag"
@ -1254,6 +1260,9 @@ msgstr "Volum %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Lagre denne strømmen"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Instillinger" #~ msgstr "Instillinger"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -903,7 +906,10 @@ msgstr "Apondre un flux"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -605,6 +605,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Usługa radio nie może być załadowana :-(" msgstr "Usługa radio nie może być załadowana :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Dodaj następny strumień..." msgstr "Dodaj następny strumień..."
@ -907,8 +910,11 @@ msgstr "Dodaj URL"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Dodaj URL radia internetowego:" msgstr "Dodaj URL radia internetowego:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Zapisz URL na karcie Radio" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Menadżer okładek" msgstr "Menadżer okładek"
@ -1252,6 +1258,9 @@ msgstr "Głośność %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "" msgstr ""
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Zapisz URL na karcie Radio"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Opcje" #~ msgstr "Opcje"

View File

@ -606,6 +606,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Serviço de rádio não pode ser carregado :-(" msgstr "Serviço de rádio não pode ser carregado :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Adicionar outro stream..." msgstr "Adicionar outro stream..."
@ -910,8 +913,11 @@ msgstr "Adicionar uma stream"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Introduza um URL de uma stream de rádio da internet:" msgstr "Introduza um URL de uma stream de rádio da internet:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Guarde esta stream na Rádio tab" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Gestor de Capas" msgstr "Gestor de Capas"
@ -1255,6 +1261,9 @@ msgstr "Volume %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Guarde esta stream na Rádio tab"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Opções" #~ msgstr "Opções"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -903,7 +906,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Serviciul de radio nu a putut fi încărcat :-(" msgstr "Serviciul de radio nu a putut fi încărcat :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Adaugă alt flux..." msgstr "Adaugă alt flux..."
@ -904,7 +907,10 @@ msgstr "Adaugă flux"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -604,6 +604,9 @@ msgstr "Искать на Magnatune"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Сервис радио не запустился =(" msgstr "Сервис радио не запустился =("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Добавить другой поток..." msgstr "Добавить другой поток..."
@ -909,8 +912,11 @@ msgstr "Добавить поток"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Введите адрес радиопотока:" msgstr "Введите адрес радиопотока:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Сохранить поток на вкладке Радио" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Менеджер обложек" msgstr "Менеджер обложек"
@ -1255,6 +1261,9 @@ msgstr "Громкость %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Сохранить поток на вкладке Радио"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Настройки" #~ msgstr "Настройки"

View File

@ -605,6 +605,9 @@ msgstr "Hľadať v Magnatune"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Služba rádia sa nedá načítať :-(" msgstr "Služba rádia sa nedá načítať :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Pridať ďalší stream..." msgstr "Pridať ďalší stream..."
@ -911,8 +914,11 @@ msgstr "Pridať stream"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Vložte URL internetového rádio streamu:" msgstr "Vložte URL internetového rádio streamu:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Uložiť tento stream na karte Rádio" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Správca obalov" msgstr "Správca obalov"
@ -1256,6 +1262,9 @@ msgstr "Hlasitosť %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Uložiť tento stream na karte Rádio"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Možnosti" #~ msgstr "Možnosti"

View File

@ -606,6 +606,9 @@ msgstr "Sök Magnatune"
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "Radiotjänsten kunde inte laddas :-(" msgstr "Radiotjänsten kunde inte laddas :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Lägg till en annan ström..." msgstr "Lägg till en annan ström..."
@ -912,8 +915,11 @@ msgstr "Lägg till ström"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Skriv in webbadressen till en radiostation på Internet:" msgstr "Skriv in webbadressen till en radiostation på Internet:"
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr "Spara den här stationen i radiotabben" msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Omslagshanterare" msgstr "Omslagshanterare"
@ -1257,6 +1263,9 @@ msgstr "Volym %1%"
msgid "0:00:00" msgid "0:00:00"
msgstr "0:00:00" msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Spara den här stationen i radiotabben"
#~ msgid "Options" #~ msgid "Options"
#~ msgstr "Flaggor" #~ msgstr "Flaggor"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -903,7 +906,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -595,6 +595,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -894,7 +897,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-(" msgid "Radio service couldn't be loaded :-("
msgstr "" msgstr ""
msgid "Edit..."
msgstr ""
msgid "Add another stream..." msgid "Add another stream..."
msgstr "" msgstr ""
@ -903,7 +906,10 @@ msgstr ""
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "" msgstr ""
msgid "Save this stream in the Radio tab" msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr "" msgstr ""
msgid "Cover Manager" msgid "Cover Manager"

View File

@ -41,12 +41,7 @@ AddStreamDialog::AddStreamDialog(QWidget *parent)
s.beginGroup(kSettingsGroup); s.beginGroup(kSettingsGroup);
ui_->save->setChecked(s.value("save", true).toBool()); ui_->save->setChecked(s.value("save", true).toBool());
ui_->url->setText(s.value("url").toString()); ui_->url->setText(s.value("url").toString());
ui_->name->setText(s.value("name").toString());
// Connections to the saved streams service
saved_radio_ = qobject_cast<SavedRadio*>(
RadioModel::ServiceByName(SavedRadio::kServiceName));
connect(saved_radio_, SIGNAL(ShowAddStreamDialog()), SLOT(show()));
} }
AddStreamDialog::~AddStreamDialog() { AddStreamDialog::~AddStreamDialog() {
@ -57,9 +52,27 @@ QUrl AddStreamDialog::url() const {
return QUrl(ui_->url->text()); return QUrl(ui_->url->text());
} }
QString AddStreamDialog::name() const {
return ui_->name->text();
}
void AddStreamDialog::set_name(const QString &name) {
ui_->name->setText(name);
}
void AddStreamDialog::set_url(const QUrl &url) {
ui_->url->setText(url.toString());
}
void AddStreamDialog::set_save_visible(bool visible) {
ui_->save->setVisible(visible);
if (!visible)
ui_->name_container->setEnabled(true);
}
void AddStreamDialog::accept() { void AddStreamDialog::accept() {
if (ui_->save->isChecked()) { if (ui_->save->isChecked() && saved_radio_) {
saved_radio_->Add(url()); saved_radio_->Add(url(), name());
} }
// Save settings // Save settings
@ -67,6 +80,7 @@ void AddStreamDialog::accept() {
s.beginGroup(kSettingsGroup); s.beginGroup(kSettingsGroup);
s.setValue("save", ui_->save->isChecked()); s.setValue("save", ui_->save->isChecked());
s.setValue("url", url().toString()); s.setValue("url", url().toString());
s.setValue("name", ui_->name->text());
QDialog::accept(); QDialog::accept();
} }

View File

@ -30,7 +30,13 @@ class AddStreamDialog : public QDialog {
AddStreamDialog(QWidget *parent = 0); AddStreamDialog(QWidget *parent = 0);
~AddStreamDialog(); ~AddStreamDialog();
void set_url(const QUrl& url);
void set_name(const QString& name);
void set_save_visible(bool visible);
void set_add_on_accept(SavedRadio* saved_radio) { saved_radio_ = saved_radio; }
QUrl url() const; QUrl url() const;
QString name() const;
void accept(); void accept();

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>400</width> <width>400</width>
<height>122</height> <height>168</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -27,13 +27,32 @@
<item> <item>
<widget class="QCheckBox" name="save"> <widget class="QCheckBox" name="save">
<property name="text"> <property name="text">
<string>Save this stream in the Radio tab</string> <string>Save this stream in the Internet tab</string>
</property> </property>
<property name="checked"> <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QWidget" name="name_container" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Give it a name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="name"/>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
@ -59,6 +78,12 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops>
<tabstop>url</tabstop>
<tabstop>save</tabstop>
<tabstop>name</tabstop>
<tabstop>button_box</tabstop>
</tabstops>
<resources/> <resources/>
<connections> <connections>
<connection> <connection>
@ -68,12 +93,12 @@
<slot>accept()</slot> <slot>accept()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>248</x> <x>257</x>
<y>254</y> <y>158</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>157</x> <x>157</x>
<y>274</y> <y>167</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
@ -84,12 +109,28 @@
<slot>reject()</slot> <slot>reject()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>316</x> <x>325</x>
<y>260</y> <y>158</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>286</x> <x>286</x>
<y>274</y> <y>167</y>
</hint>
</hints>
</connection>
<connection>
<sender>save</sender>
<signal>toggled(bool)</signal>
<receiver>name_container</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>65</x>
<y>75</y>
</hint>
<hint type="destinationlabel">
<x>111</x>
<y>97</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>

View File

@ -40,6 +40,7 @@
#include "radio/radiomodel.h" #include "radio/radiomodel.h"
#include "radio/radioview.h" #include "radio/radioview.h"
#include "radio/radioviewcontainer.h" #include "radio/radioviewcontainer.h"
#include "radio/savedradio.h"
#include "transcoder/transcodedialog.h" #include "transcoder/transcodedialog.h"
#include "ui/about.h" #include "ui/about.h"
#include "ui/addstreamdialog.h" #include "ui/addstreamdialog.h"
@ -325,6 +326,14 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
LastFMButtonVisibilityChanged(radio_model_->GetLastFMService()->AreButtonsVisible()); LastFMButtonVisibilityChanged(radio_model_->GetLastFMService()->AreButtonsVisible());
// Connections to the saved streams service
SavedRadio* saved_radio_ = qobject_cast<SavedRadio*>(
RadioModel::ServiceByName(SavedRadio::kServiceName));
add_stream_dialog_->set_add_on_accept(saved_radio_);
connect(saved_radio_, SIGNAL(ShowAddStreamDialog()),
add_stream_dialog_.get(), SLOT(show()));
// Tray icon // Tray icon
QMenu* tray_menu = new QMenu(this); QMenu* tray_menu = new QMenu(this);
tray_menu->addAction(ui_->action_previous_track); tray_menu->addAction(ui_->action_previous_track);