Simplify streams page
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <QFormLayout>
|
||||
#include <QIcon>
|
||||
#include <QValidator>
|
||||
#include <QUrl>
|
||||
#include "streamdialog.h"
|
||||
#include "mainwindow.h"
|
||||
#include "settings.h"
|
||||
@@ -45,45 +46,9 @@ class NameValidator : public QValidator
|
||||
}
|
||||
};
|
||||
|
||||
void IconCombo::load()
|
||||
{
|
||||
if (0==count()) {
|
||||
addItem(Icons::self()->radioStreamIcon, QString(), QString());
|
||||
QMap<QString, QIcon> icons=StreamsModel::self()->icons();
|
||||
QMap<QString, QIcon>::ConstIterator it=icons.constBegin();
|
||||
QMap<QString, QIcon>::ConstIterator end=icons.constEnd();
|
||||
|
||||
for (; it!=end; ++it) {
|
||||
if (!it.value().isNull() && !it.key().startsWith(QLatin1String("flag_"))) {
|
||||
addItem(it.value(), QString(), it.key());
|
||||
}
|
||||
}
|
||||
bool firstFlag=true;
|
||||
for (it=icons.constBegin(); it!=end; ++it) {
|
||||
if (!it.value().isNull() && it.key().startsWith(QLatin1String("flag_"))) {
|
||||
if (firstFlag) {
|
||||
if (count()) {
|
||||
insertSeparator(count());
|
||||
}
|
||||
firstFlag=false;
|
||||
}
|
||||
addItem(it.value(), QString(), it.key());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IconCombo::showEvent(QShowEvent *e)
|
||||
{
|
||||
load();
|
||||
ComboBox::showEvent(e);
|
||||
}
|
||||
|
||||
StreamDialog::StreamDialog(const QStringList &categories, const QStringList &genres, QWidget *parent, bool addToPlayQueue)
|
||||
StreamDialog::StreamDialog(QWidget *parent, bool addToPlayQueue)
|
||||
: Dialog(parent)
|
||||
, saveCombo(0)
|
||||
, iconCombo(0)
|
||||
, iconLabel(0)
|
||||
, urlHandlers(MPDConnection::self()->urlHandlers())
|
||||
{
|
||||
QWidget *wid = new QWidget(this);
|
||||
@@ -94,52 +59,24 @@ StreamDialog::StreamDialog(const QStringList &categories, const QStringList &gen
|
||||
urlEntry = new LineEdit(wid);
|
||||
saveCombo=new QComboBox(wid);
|
||||
nameEntry = new LineEdit(wid);
|
||||
if (!StreamsModel::self()->icons().isEmpty()) {
|
||||
iconCombo=new IconCombo(wid);
|
||||
}
|
||||
} else {
|
||||
nameEntry = new LineEdit(wid);
|
||||
urlEntry = new LineEdit(wid);
|
||||
if (!StreamsModel::self()->icons().isEmpty()) {
|
||||
iconCombo=new IconCombo(wid);
|
||||
}
|
||||
}
|
||||
nameEntry->setValidator(new NameValidator(this));
|
||||
catCombo = new CompletionCombo(wid);
|
||||
catCombo->setEditable(true);
|
||||
genreCombo = new CompletionCombo(wid);
|
||||
statusText = new QLabel(this);
|
||||
|
||||
if (iconCombo) {
|
||||
int size=Icon::stdSize(fontMetrics().height()*1.5);
|
||||
iconCombo->setIconSize(QSize(size,size));
|
||||
iconCombo->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
|
||||
connect(iconCombo, SIGNAL(currentIndexChanged(int)), SLOT(changed()));
|
||||
}
|
||||
|
||||
QSizePolicy sizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
sizePolicy.setHorizontalStretch(0);
|
||||
sizePolicy.setVerticalStretch(0);
|
||||
sizePolicy.setHeightForWidth(catCombo->sizePolicy().hasHeightForWidth());
|
||||
catCombo->setSizePolicy(sizePolicy);
|
||||
genreCombo->setSizePolicy(sizePolicy);
|
||||
urlEntry->setMinimumWidth(300);
|
||||
multipleGenresText=new QLabel(i18n("<i><b>NOTE:</b> Use '|' to split mutliple genres - e.g. 'Current|Classic'</i>"), this);
|
||||
nameLabel=new BuddyLabel(i18n("Name:"), wid, nameEntry);
|
||||
catLabel=new BuddyLabel(i18n("Category:"), wid, catCombo);
|
||||
genreLabel=new BuddyLabel(i18n("Genre:"), wid, genreCombo);
|
||||
if (iconCombo) {
|
||||
iconLabel=new BuddyLabel(i18n("Icon:"), wid, iconCombo);
|
||||
}
|
||||
BuddyLabel *urlLabel=new BuddyLabel(i18n("URL:"), wid, urlEntry);
|
||||
|
||||
int row=0;
|
||||
|
||||
if (addToPlayQueue) {
|
||||
saveCombo->addItem(i18n("Just add to play queue, do not save"));
|
||||
saveCombo->addItem(i18n("Add to play queue, and save in list of streams"));
|
||||
saveCombo->addItem(i18n("Add to play queue, and save to favourites"));
|
||||
saveCombo->setCurrentIndex(0);
|
||||
saveCombo->setEnabled(StreamsModel::self()->isWritable());
|
||||
saveCombo->setEnabled(StreamsModel::self()->isFavoritesWritable());
|
||||
layout->setWidget(row, QFormLayout::LabelRole, urlLabel);
|
||||
layout->setWidget(row++, QFormLayout::FieldRole, urlEntry);
|
||||
layout->setWidget(row++, QFormLayout::FieldRole, saveCombo);
|
||||
@@ -152,28 +89,14 @@ StreamDialog::StreamDialog(const QStringList &categories, const QStringList &gen
|
||||
layout->setWidget(row, QFormLayout::LabelRole, urlLabel);
|
||||
layout->setWidget(row++, QFormLayout::FieldRole, urlEntry);
|
||||
}
|
||||
if (iconCombo) {
|
||||
layout->setWidget(row, QFormLayout::LabelRole, iconLabel);
|
||||
layout->setWidget(row++, QFormLayout::FieldRole, iconCombo);
|
||||
}
|
||||
layout->setWidget(row, QFormLayout::LabelRole, catLabel);
|
||||
layout->setWidget(row++, QFormLayout::FieldRole, catCombo);
|
||||
layout->setWidget(row, QFormLayout::LabelRole, genreLabel);
|
||||
layout->setWidget(row++, QFormLayout::FieldRole, genreCombo);
|
||||
layout->setWidget(row++, QFormLayout::SpanningRole, multipleGenresText);
|
||||
|
||||
layout->setWidget(row++, QFormLayout::SpanningRole, statusText);
|
||||
setCaption(i18n("Add Stream"));
|
||||
setMainWidget(wid);
|
||||
setButtons(Ok|Cancel);
|
||||
enableButton(Ok, false);
|
||||
catCombo->clear();
|
||||
catCombo->insertItems(0, categories);
|
||||
genreCombo->clear();
|
||||
genreCombo->insertItems(0, genres);
|
||||
connect(nameEntry, SIGNAL(textChanged(const QString &)), SLOT(changed()));
|
||||
connect(urlEntry, SIGNAL(textChanged(const QString &)), SLOT(changed()));
|
||||
connect(catCombo, SIGNAL(editTextChanged(const QString &)), SLOT(changed()));
|
||||
connect(genreCombo, SIGNAL(editTextChanged(const QString &)), SLOT(changed()));
|
||||
if (addToPlayQueue) {
|
||||
urlEntry->setFocus();
|
||||
} else {
|
||||
@@ -182,33 +105,14 @@ StreamDialog::StreamDialog(const QStringList &categories, const QStringList &gen
|
||||
resize(400, 100);
|
||||
}
|
||||
|
||||
void StreamDialog::setEdit(const QString &cat, const QString &editName, const QString &editGenre, const QString &editIconName, const QString &editUrl)
|
||||
void StreamDialog::setEdit(const QString &editName, const QString &editUrl)
|
||||
{
|
||||
Q_UNUSED(editIconName)
|
||||
setCaption(i18n("Edit Stream"));
|
||||
enableButton(Ok, false);
|
||||
prevName=editName;
|
||||
prevUrl=editUrl;
|
||||
prevCat=cat;
|
||||
prevGenre=editGenre;
|
||||
prevIconName=editIconName;
|
||||
nameEntry->setText(editName);
|
||||
urlEntry->setText(editUrl);
|
||||
catCombo->setEditText(cat);
|
||||
genreCombo->setEditText(editGenre);
|
||||
|
||||
if (iconCombo) {
|
||||
iconCombo->blockSignals(true);
|
||||
iconCombo->load();
|
||||
iconCombo->setCurrentIndex(0);
|
||||
for (int i=0; i<iconCombo->count(); ++i) {
|
||||
if (iconCombo->itemData(i)==editIconName) {
|
||||
iconCombo->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
iconCombo->blockSignals(false);
|
||||
}
|
||||
}
|
||||
|
||||
void StreamDialog::saveComboChanged()
|
||||
@@ -221,16 +125,7 @@ void StreamDialog::setWidgetVisiblity()
|
||||
{
|
||||
bool s=save();
|
||||
nameEntry->setVisible(s);
|
||||
catCombo->setVisible(s);
|
||||
genreCombo->setVisible(s);
|
||||
nameLabel->setVisible(s);
|
||||
catLabel->setVisible(s);
|
||||
genreLabel->setVisible(s);
|
||||
multipleGenresText->setVisible(s);
|
||||
if (iconCombo) {
|
||||
iconCombo->setVisible(s);
|
||||
iconLabel->setVisible(s);
|
||||
}
|
||||
QApplication::processEvents();
|
||||
adjustSize();
|
||||
}
|
||||
@@ -245,11 +140,7 @@ void StreamDialog::changed()
|
||||
enableOk=!u.isEmpty();
|
||||
} else {
|
||||
QString n=name();
|
||||
QString c=category();
|
||||
QString g=genre();
|
||||
enableOk=!n.isEmpty() && !u.isEmpty() && !c.isEmpty() &&
|
||||
(n!=prevName || u!=prevUrl || c!=prevCat || g!=prevGenre || (iconCombo && icon()!=prevIconName));
|
||||
|
||||
enableOk=!n.isEmpty() && !u.isEmpty() && (n!=prevName || u!=prevUrl);
|
||||
statusText->setText(validProtocol ? QString() : i18n("<i><b>ERROR:</b> Invalid protocol</i>"));
|
||||
}
|
||||
enableOk=enableOk && validProtocol;
|
||||
|
||||
Reference in New Issue
Block a user