aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/streambrowser/streamwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/General/streambrowser/streamwindow.cpp')
-rw-r--r--src/plugins/General/streambrowser/streamwindow.cpp83
1 files changed, 76 insertions, 7 deletions
diff --git a/src/plugins/General/streambrowser/streamwindow.cpp b/src/plugins/General/streambrowser/streamwindow.cpp
index a367fa9a9..6bf73f6d4 100644
--- a/src/plugins/General/streambrowser/streamwindow.cpp
+++ b/src/plugins/General/streambrowser/streamwindow.cpp
@@ -31,10 +31,12 @@
#include <QMenu>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
+#include <QIcon>
#include <algorithm>
#include <qmmp/qmmpsettings.h>
#include <qmmp/qmmp.h>
#include <qmmpui/playlistmanager.h>
+#include "editstreamdialog.h"
#include "ui_streamwindow.h"
#include "streamwindow.h"
@@ -125,19 +127,24 @@ StreamWindow::StreamWindow(QWidget *parent)
readXml(&file2, m_favoritesModel);
//create menus
m_iceCastMenu = new QMenu(this);
- m_iceCastMenu->addAction(tr("&Add to favorites"), this, SLOT(addToFavorites()));
- QAction *addAction = m_iceCastMenu->addAction(tr("&Add to playlist"), this,
- SLOT(on_addPushButton_clicked()));
+ m_addToFavoritesAction = m_iceCastMenu->addAction(QIcon::fromTheme("user-bookmarks"), tr("&Add to favorites"),
+ this, SLOT(addToFavorites()));
+ m_addAction = m_iceCastMenu->addAction(QIcon::fromTheme("list-add"),
+ tr("&Add to playlist"), this, SLOT(on_addPushButton_clicked()));
m_favoritesMenu = new QMenu(this);
- m_favoritesMenu->addAction(addAction);
+ m_favoritesMenu->addAction(m_addAction);
+ m_favoritesMenu->addAction(QIcon::fromTheme("document-new"), tr("&Create"),
+ this, SLOT(createStream()));
+ m_editAction = m_favoritesMenu->addAction(QIcon::fromTheme("document-properties"), tr("&Edit"),
+ this, SLOT(editStream()));
m_favoritesMenu->addSeparator();
- m_favoritesMenu->addAction(tr("&Remove"), this, SLOT(removeFromFavorites()), QKeySequence::Delete);
+ m_removeAction = m_favoritesMenu->addAction(QIcon::fromTheme("edit-delete"), tr("&Remove"),
+ this, SLOT(removeFromFavorites()), QKeySequence::Delete);
addActions(m_favoritesMenu->actions());
}
StreamWindow::~StreamWindow()
-{
-}
+{}
void StreamWindow::showText(QNetworkReply *reply)
{
@@ -201,11 +208,17 @@ void StreamWindow::on_filterLineEdit_textChanged(const QString &text)
void StreamWindow::execIceCastMenu(const QPoint &pos)
{
+ QModelIndex index = m_ui->icecastTableView->selectionModel()->currentIndex();
+ m_addToFavoritesAction->setEnabled(index.isValid());
m_iceCastMenu->exec(m_ui->icecastTableView->viewport()->mapToGlobal(pos));
}
void StreamWindow::execFavoritesMenu(const QPoint &pos)
{
+ QModelIndex index = m_ui->favoritesTableView->selectionModel()->currentIndex();
+ m_addAction->setEnabled(index.isValid());
+ m_editAction->setEnabled(index.isValid());
+ m_removeAction->setEnabled(index.isValid());
m_favoritesMenu->exec(m_ui->favoritesTableView->viewport()->mapToGlobal(pos));
}
@@ -224,6 +237,62 @@ void StreamWindow::addToFavorites()
}
}
+void StreamWindow::createStream()
+{
+ EditStreamDialog dialog(this);
+ if(dialog.exec() == QDialog::Accepted)
+ {
+ QMap<EditStreamDialog::Key, QString> values = dialog.values();
+
+ if(values[EditStreamDialog::NAME].isEmpty())
+ values[EditStreamDialog::NAME] = values[EditStreamDialog::URL].section("/", -1);
+
+ m_favoritesModel->appendRow(QList<QStandardItem *> ()
+ << new QStandardItem(values[EditStreamDialog::NAME])
+ << new QStandardItem(values[EditStreamDialog::GENRE])
+ << new QStandardItem(values[EditStreamDialog::BITRATE])
+ << new QStandardItem(values[EditStreamDialog::TYPE]));
+
+ QStandardItem *item = m_favoritesModel->item(m_favoritesModel->rowCount()-1, 0);
+ item->setToolTip(values[EditStreamDialog::NAME] + "\n" + values[EditStreamDialog::URL]);
+ item->setData(values[EditStreamDialog::URL]);
+ }
+}
+
+void StreamWindow::editStream()
+{
+ QModelIndex index = m_ui->favoritesTableView->selectionModel()->currentIndex();
+ if(!index.isValid())
+ return;
+
+ int row = m_favoritesFilterModel->mapToSource(index).row();
+
+ EditStreamDialog dialog(this);
+ dialog.setWindowTitle(tr("Edit Stream"));
+ QMap<EditStreamDialog::Key, QString> values;
+ values[EditStreamDialog::URL] = m_favoritesModel->item(row, 0)->data().toString();
+ values[EditStreamDialog::NAME] = m_favoritesModel->item(row, 0)->text();
+ values[EditStreamDialog::GENRE] = m_favoritesModel->item(row, 1)->text();
+ values[EditStreamDialog::BITRATE] = m_favoritesModel->item(row, 2)->text();
+ values[EditStreamDialog::TYPE] = m_favoritesModel->item(row, 3)->text();
+ dialog.setValues(values);
+
+ if(dialog.exec() == QDialog::Accepted)
+ {
+ QMap<EditStreamDialog::Key, QString> values = dialog.values();
+
+ if(values[EditStreamDialog::NAME].isEmpty())
+ values[EditStreamDialog::NAME] = values[EditStreamDialog::URL].section("/", -1);
+
+ m_favoritesModel->item(row, 0)->setData(values[EditStreamDialog::URL]);
+ m_favoritesModel->item(row, 0)->setText(values[EditStreamDialog::NAME]);
+ m_favoritesModel->item(row, 1)->setText(values[EditStreamDialog::GENRE]);
+ m_favoritesModel->item(row, 2)->setText(values[EditStreamDialog::BITRATE]);
+ m_favoritesModel->item(row, 3)->setText(values[EditStreamDialog::TYPE]);
+ m_favoritesModel->item(row, 0)->setToolTip(values[EditStreamDialog::NAME] + "\n" + values[EditStreamDialog::URL]);
+ }
+}
+
void StreamWindow::removeFromFavorites()
{
if(m_ui->tabWidget->currentIndex() != 0)