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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -604,6 +604,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Radio service couldn't be loaded :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..."
msgstr "Add another stream..."
@ -907,8 +910,11 @@ msgstr "Add Stream"
msgid "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"
msgstr "Save this stream in the Radio tab"
msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager"
msgstr "Cover Manager"
@ -1252,6 +1258,9 @@ msgstr "Volume %1%"
msgid "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"
#~ msgstr "Options"

View File

@ -610,6 +610,9 @@ msgstr "Buscar en Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Servicio de radio no pudo ser cargado :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..."
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:"
msgstr "Ingrese la URL de un flujo de radio por internet:"
msgid "Save this stream in the Radio tab"
msgstr "Guardar este flujo en la seccion de Radios"
msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager"
msgstr "Gestor de carátulas"
@ -1264,6 +1270,9 @@ msgstr "Volumen %1%"
msgid "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"
#~ msgstr "Opciones"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -605,6 +605,9 @@ msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Kunne ikke laste inn radiotjeneste :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..."
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:"
msgstr "Skriv adressen (URL) til en internett radiostrøm"
msgid "Save this stream in the Radio tab"
msgstr "Lagre denne strømmen"
msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager"
msgstr "Behandling av plateomslag"
@ -1254,6 +1260,9 @@ msgstr "Volum %1%"
msgid "0:00:00"
msgstr "0:00:00"
#~ msgid "Save this stream in the Radio tab"
#~ msgstr "Lagre denne strømmen"
#~ msgid "Options"
#~ msgstr "Instillinger"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -606,6 +606,9 @@ msgstr "Sök Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Radiotjänsten kunde inte laddas :-("
msgid "Edit..."
msgstr ""
msgid "Add another stream..."
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:"
msgstr "Skriv in webbadressen till en radiostation på Internet:"
msgid "Save this stream in the Radio tab"
msgstr "Spara den här stationen i radiotabben"
msgid "Save this stream in the Internet tab"
msgstr ""
msgid "Give it a name:"
msgstr ""
msgid "Cover Manager"
msgstr "Omslagshanterare"
@ -1257,6 +1263,9 @@ msgstr "Volym %1%"
msgid "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"
#~ msgstr "Flaggor"

View File

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

View File

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

View File

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

View File

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

View File

@ -30,7 +30,13 @@ class AddStreamDialog : public QDialog {
AddStreamDialog(QWidget *parent = 0);
~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;
QString name() const;
void accept();

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>400</width>
<height>122</height>
<height>168</height>
</rect>
</property>
<property name="windowTitle">
@ -27,13 +27,32 @@
<item>
<widget class="QCheckBox" name="save">
<property name="text">
<string>Save this stream in the Radio tab</string>
<string>Save this stream in the Internet tab</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</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>
<spacer name="verticalSpacer">
<property name="orientation">
@ -59,6 +78,12 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>url</tabstop>
<tabstop>save</tabstop>
<tabstop>name</tabstop>
<tabstop>button_box</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
@ -68,12 +93,12 @@
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
<x>257</x>
<y>158</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
<y>167</y>
</hint>
</hints>
</connection>
@ -84,12 +109,28 @@
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
<x>325</x>
<y>158</y>
</hint>
<hint type="destinationlabel">
<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>
</hints>
</connection>

View File

@ -40,6 +40,7 @@
#include "radio/radiomodel.h"
#include "radio/radioview.h"
#include "radio/radioviewcontainer.h"
#include "radio/savedradio.h"
#include "transcoder/transcodedialog.h"
#include "ui/about.h"
#include "ui/addstreamdialog.h"
@ -325,6 +326,14 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
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
QMenu* tray_menu = new QMenu(this);
tray_menu->addAction(ui_->action_previous_track);