2 #include <QInputDialog>
3 #include <QNetworkRequest>
4 #include <QNetworkReply>
8 //=========================================================
9 Playlist::Playlist() : QDialog( 0 )
11 ui
= new Ui::Playlist
;
14 manager
= new QNetworkAccessManager( this );
15 connect( manager
, SIGNAL(finished(QNetworkReply
*)), this, SLOT(readNetwork(QNetworkReply
*)));
17 list
= new QStringListModel( this );
18 ui
->playlistView
->setModel( list
);
22 //=========================================================
28 //=========================================================
29 void Playlist::on_addItems_clicked()
31 QUrl
url( QInputDialog::getText( this, "Playlist URL", "URL" ));
35 qDebug( "Opening %s", qPrintable( url
.toString()));
36 if( url
.scheme() == "http" )
37 manager
->get( QNetworkRequest( url
));
38 else if( url
.scheme() == "file" ){
39 QFile
f( url
.toLocalFile());
40 if( !f
.open( QFile::ReadOnly
)){
41 qDebug( "can't open file: %s", qPrintable( f
.fileName()));
48 qDebug( "No handlers for this scheme" );
50 //=========================================================
51 void Playlist::on_removeItems_clicked()
55 //=========================================================
56 void Playlist::on_startPlay_clicked()
65 QStringList items
= list
->stringList();
67 qDebug( "empty list" );
71 manager
->get( QNetworkRequest( QUrl( items
.first())));
73 //=========================================================
74 void Playlist::on_stopPlay_clicked()
82 //=========================================================
83 void Playlist::addM3U( const QString
& data
)
85 QStringList m3u_list
= data
.split( "\n" );
86 if( m3u_list
.isEmpty())
89 if( m3u_list
.takeFirst().simplified() != "#EXTM3U" ){
90 qDebug( "Invalid M3U signature" );
94 QStringList dataList
= list
->stringList();
95 while( !m3u_list
.isEmpty()){
96 QString item
= m3u_list
.takeFirst().simplified();
97 if( item
.startsWith('#'))
105 dataList
.append( item
);
108 list
->setStringList( dataList
);
110 //=========================================================
111 void Playlist::readNetwork( QNetworkReply
*reply
)
113 qDebug( "__FUNCTION__ " );
115 if( reply
->error() == QNetworkReply::NoError
){
116 QByteArray data
= reply
->readAll();
117 if( data
.left( 7 ) == QByteArray( "#EXTM3U"))
120 player
= new Player( data
);
121 player
->start( QThread::LowestPriority
);
125 qDebug( "fetch failed: %d", (int)reply
->error());