@ -24,6 +24,7 @@
# include <QInputDialog>
# include <QInputDialog>
# include <QMenu>
# include <QMenu>
# include <QStandardItemModel>
# include <QStandardItemModel>
# include "misc.h"
// display a right-click menu
// display a right-click menu
void RSSImp : : displayRSSListMenu ( const QPoint & pos ) {
void RSSImp : : displayRSSListMenu ( const QPoint & pos ) {
@ -48,14 +49,14 @@
// delete a stream by a button
// delete a stream by a button
void RSSImp : : on_delStream_button_clicked ( ) {
void RSSImp : : on_delStream_button_clicked ( ) {
if ( getNumStreamSelected ( ) < 0 | | rssmanager . getNbStream ( ) = = 0 ) {
if ( getNumStreamSelected ( ) < 0 | | rssmanager . getNbStreams ( ) = = 0 ) {
qDebug ( " no stream selected " ) ;
qDebug ( " no stream selected " ) ;
return ;
return ;
} else {
} else {
int ok = QMessageBox : : question ( this , tr ( " Are you sure? -- qBittorrent " ) , tr ( " Are you sure you want to delete this stream from the list? " ) ,
int ok = QMessageBox : : question ( this , tr ( " Are you sure? -- qBittorrent " ) , tr ( " Are you sure you want to delete this stream from the list? " ) ,
tr ( " &Yes " ) , tr ( " &No " ) ,
tr ( " &Yes " ) , tr ( " &No " ) ,
QString ( ) , 0 , 1 ) ;
QString ( ) , 0 , 1 ) ;
if ( ok = = 0 ) {
if ( ok = = 0 ) {
textBrowser - > clear ( ) ;
textBrowser - > clear ( ) ;
listNews - > clear ( ) ;
listNews - > clear ( ) ;
rssmanager . removeStream ( rssmanager . getStream ( getNumStreamSelected ( ) ) ) ;
rssmanager . removeStream ( rssmanager . getStream ( getNumStreamSelected ( ) ) ) ;
@ -71,7 +72,7 @@
// display the news of a stream when click on it
// display the news of a stream when click on it
void RSSImp : : on_listStreams_clicked ( ) {
void RSSImp : : on_listStreams_clicked ( ) {
if ( rssmanager . getNbStream ( ) > 0 ) {
if ( rssmanager . getNbStreams ( ) > 0 ) {
moveCurrentItem ( ) ;
moveCurrentItem ( ) ;
rssmanager . getStream ( getNumStreamSelected ( ) ) - > setRead ( ) ;
rssmanager . getStream ( getNumStreamSelected ( ) ) - > setRead ( ) ;
// update the color of the stream, is it old ?
// update the color of the stream, is it old ?
@ -105,16 +106,16 @@
else
else
listStreams - > setCurrentItem ( listStreams - > topLevelItem ( 0 ) ) ;
listStreams - > setCurrentItem ( listStreams - > topLevelItem ( 0 ) ) ;
}
}
}
}
//right-clik on stream : delete it
//right-clik on stream : delete it
void RSSImp : : deleteStream ( ) {
void RSSImp : : deleteStream ( ) {
if ( rssmanager . getNbStream ( ) = = 0 ) {
if ( rssmanager . getNbStreams ( ) = = 0 ) {
qDebug ( " no stream selected " ) ;
qDebug ( " no stream selected " ) ;
return ;
return ;
} else {
} else {
int ok = QMessageBox : : question ( this , tr ( " Are you sure? -- qBittorrent " ) , tr ( " Are you sure you want to delete this stream from the list ? " ) , tr ( " &Yes " ) , tr ( " &No " ) , QString ( ) , 0 , 1 ) ;
int ok = QMessageBox : : question ( this , tr ( " Are you sure? -- qBittorrent " ) , tr ( " Are you sure you want to delete this stream from the list ? " ) , tr ( " &Yes " ) , tr ( " &No " ) , QString ( ) , 0 , 1 ) ;
if ( ok = = 0 ) {
if ( ok = = 0 ) {
moveCurrentItem ( ) ;
moveCurrentItem ( ) ;
textBrowser - > clear ( ) ;
textBrowser - > clear ( ) ;
listNews - > clear ( ) ;
listNews - > clear ( ) ;
@ -126,7 +127,7 @@
//right-clik on stream : give him an alias
//right-clik on stream : give him an alias
void RSSImp : : renameStream ( ) {
void RSSImp : : renameStream ( ) {
if ( rssmanager . getNbStream ( ) = = 0 ) {
if ( rssmanager . getNbStreams ( ) = = 0 ) {
qDebug ( " no stream selected " ) ;
qDebug ( " no stream selected " ) ;
return ;
return ;
} else {
} else {
@ -144,7 +145,7 @@
//right-clik on stream : refresh it
//right-clik on stream : refresh it
void RSSImp : : refreshStream ( ) {
void RSSImp : : refreshStream ( ) {
if ( rssmanager . getNbStream ( ) > 0 ) {
if ( rssmanager . getNbStreams ( ) > 0 ) {
moveCurrentItem ( ) ;
moveCurrentItem ( ) ;
short index = getNumStreamSelected ( ) ;
short index = getNumStreamSelected ( ) ;
textBrowser - > clear ( ) ;
textBrowser - > clear ( ) ;
@ -152,16 +153,18 @@
listStreams - > topLevelItem ( index ) - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/loading.png " ) ) ) ;
listStreams - > topLevelItem ( index ) - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/loading.png " ) ) ) ;
rssmanager . refresh ( index ) ;
rssmanager . refresh ( index ) ;
}
}
updateLastRefreshedTimeForStreams ( ) ;
}
}
//right-click somewhere, refresh all the streams
//right-click somewhere, refresh all the streams
void RSSImp : : refreshAllStreams ( ) {
void RSSImp : : refreshAllStreams ( ) {
textBrowser - > clear ( ) ;
textBrowser - > clear ( ) ;
listNews - > clear ( ) ;
listNews - > clear ( ) ;
unsigned short nbstream = rssmanager . getNbStream ( ) ;
unsigned short nbstream = rssmanager . getNbStreams ( ) ;
for ( unsigned short i = 0 ; i < nbstream ; i + + )
for ( unsigned short i = 0 ; i < nbstream ; + + i )
listStreams - > topLevelItem ( i ) - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/loading.png " ) ) ) ;
listStreams - > topLevelItem ( i ) - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/loading.png " ) ) ) ;
rssmanager . refreshAll ( ) ;
rssmanager . refreshAll ( ) ;
updateLastRefreshedTimeForStreams ( ) ;
}
}
//right-click, register a new stream
//right-click, register a new stream
@ -179,30 +182,19 @@
// fills the streamList
// fills the streamList
void RSSImp : : refreshStreamList ( ) {
void RSSImp : : refreshStreamList ( ) {
unsigned short nbstream = rssmanager . getNbStream ( ) ;
unsigned short nbstream = rssmanager . getNbStreams ( ) ;
listStreams - > clear ( ) ;
listStreams - > clear ( ) ;
QList < QTreeWidgetItem * > streams ;
QList < QTreeWidgetItem * > streams ;
for ( unsigned short i = 0 ; i < nbstream ; i + + ) {
for ( unsigned short i = 0 ; i < nbstream ; + + i ) {
QTreeWidgetItem * stream = new QTreeWidgetItem ( listStreams ) ;
QTreeWidgetItem * stream = new QTreeWidgetItem ( listStreams ) ;
QTreeWidgetItem * description = new QTreeWidgetItem ( stream ) ;
QTreeWidgetItem * url = new QTreeWidgetItem ( stream ) ;
QTreeWidgetItem * time = new QTreeWidgetItem ( stream ) ;
description - > setText ( 0 , tr ( " no description available " ) ) ;
url - > setText ( 0 , rssmanager . getStream ( i ) - > getUrl ( ) ) ;
time - > setText ( 0 , tr ( " no refresh " ) ) ;
description - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/description.png " ) ) ) ;
url - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/url.png " ) ) ) ;
time - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/time.png " ) ) ) ;
description - > setData ( 0 , Qt : : ForegroundRole , QVariant ( QColor ( " grey " ) ) ) ;
url - > setData ( 0 , Qt : : ForegroundRole , QVariant ( QColor ( " grey " ) ) ) ;
time - > setData ( 0 , Qt : : ForegroundRole , QVariant ( QColor ( " grey " ) ) ) ;
updateStreamName ( i , NEWS ) ;
updateStreamName ( i , NEWS ) ;
stream - > setToolTip ( 0 , QString ( " <b> " ) + tr ( " Description: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getDescription ( ) + QString ( " <br/><b> " ) + tr ( " url: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getUrl ( ) + QString ( " <br/><b> " ) + tr ( " Last refresh: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getLastRefreshElapsedString ( ) ) ;
}
}
}
}
// fills the newsList
// fills the newsList
void RSSImp : : refreshNewsList ( ) {
void RSSImp : : refreshNewsList ( ) {
if ( rssmanager . getNbStream ( ) > 0 ) {
if ( rssmanager . getNbStreams ( ) > 0 ) {
RssStream * currentstream = rssmanager . getStream ( getNumStreamSelected ( ) ) ;
RssStream * currentstream = rssmanager . getStream ( getNumStreamSelected ( ) ) ;
listNews - > clear ( ) ;
listNews - > clear ( ) ;
unsigned short currentStreamSize = currentstream - > getListSize ( ) ;
unsigned short currentStreamSize = currentstream - > getListSize ( ) ;
@ -211,8 +203,7 @@
if ( currentstream - > getItem ( i ) - > isRead ( ) ) {
if ( currentstream - > getItem ( i ) - > isRead ( ) ) {
listNews - > item ( i ) - > setData ( Qt : : ForegroundRole , QVariant ( QColor ( " grey " ) ) ) ;
listNews - > item ( i ) - > setData ( Qt : : ForegroundRole , QVariant ( QColor ( " grey " ) ) ) ;
listNews - > item ( i ) - > setData ( Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/sphere.png " ) ) ) ;
listNews - > item ( i ) - > setData ( Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/sphere.png " ) ) ) ;
}
} else {
else {
listNews - > item ( i ) - > setData ( Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/sphere2.png " ) ) ) ;
listNews - > item ( i ) - > setData ( Qt : : DecorationRole , QVariant ( QIcon ( " :/Icons/sphere2.png " ) ) ) ;
listNews - > item ( i ) - > setData ( Qt : : ForegroundRole , QVariant ( QColor ( " blue " ) ) ) ;
listNews - > item ( i ) - > setData ( Qt : : ForegroundRole , QVariant ( QColor ( " blue " ) ) ) ;
}
}
@ -231,6 +222,13 @@
}
}
}
}
void RSSImp : : updateLastRefreshedTimeForStreams ( ) {
unsigned int nbStreams = rssmanager . getNbStreams ( ) ;
for ( unsigned int i = 0 ; i < nbStreams ; + + i ) {
listStreams - > topLevelItem ( i ) - > setToolTip ( 0 , QString ( " <b> " ) + tr ( " Description: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getDescription ( ) + QString ( " <br/><b> " ) + tr ( " url: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getUrl ( ) + QString ( " <br/><b> " ) + tr ( " Last refresh: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getLastRefreshElapsedString ( ) ) ;
}
}
// show the number of news for a stream, his status and an icon
// show the number of news for a stream, his status and an icon
void RSSImp : : updateStreamName ( const unsigned short & i , const unsigned short & type ) {
void RSSImp : : updateStreamName ( const unsigned short & i , const unsigned short & type ) {
// icon has just been download
// icon has just been download
@ -268,9 +266,7 @@
}
}
listStreams - > topLevelItem ( i ) - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( rssmanager . getStream ( i ) - > getIconPath ( ) ) ) ) ;
listStreams - > topLevelItem ( i ) - > setData ( 0 , Qt : : DecorationRole , QVariant ( QIcon ( rssmanager . getStream ( i ) - > getIconPath ( ) ) ) ) ;
// update description and display last refresh
// update description and display last refresh
if ( rssmanager . getStream ( i ) - > getDescription ( ) ! = " " )
listStreams - > topLevelItem ( i ) - > setToolTip ( 0 , QString ( " <b> " ) + tr ( " Description: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getDescription ( ) + QString ( " <br/><b> " ) + tr ( " url: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getUrl ( ) + QString ( " <br/><b> " ) + tr ( " Last refresh: " ) + QString ( " </b> " ) + rssmanager . getStream ( i ) - > getLastRefreshElapsedString ( ) ) ;
listStreams - > topLevelItem ( i ) - > child ( DESCRIPTION_CHILD ) - > setText ( 0 , rssmanager . getStream ( i ) - > getDescription ( ) ) ;
listStreams - > topLevelItem ( i ) - > child ( TIME_CHILD ) - > setText ( 0 , rssmanager . getStream ( i ) - > getLastRefresh ( ) ) ;
}
}
}
}
@ -286,14 +282,16 @@
actionRefresh - > setIcon ( QIcon ( QString : : fromUtf8 ( " :/Icons/refresh.png " ) ) ) ;
actionRefresh - > setIcon ( QIcon ( QString : : fromUtf8 ( " :/Icons/refresh.png " ) ) ) ;
actionCreate - > setIcon ( QIcon ( QString : : fromUtf8 ( " :/Icons/skin/add.png " ) ) ) ;
actionCreate - > setIcon ( QIcon ( QString : : fromUtf8 ( " :/Icons/skin/add.png " ) ) ) ;
actionRefreshAll - > setIcon ( QIcon ( QString : : fromUtf8 ( " :/Icons/refresh.png " ) ) ) ;
actionRefreshAll - > setIcon ( QIcon ( QString : : fromUtf8 ( " :/Icons/refresh.png " ) ) ) ;
connect ( listStreams , SIGNAL ( customContextMenuRequested ( const QPoint & ) ) , this , SLOT ( displayRSSListMenu ( const QPoint & ) ) ) ;
connect ( listStreams , SIGNAL ( customContextMenuRequested ( const QPoint & ) ) , this , SLOT ( displayRSSListMenu ( const QPoint & ) ) ) ;
connect ( actionDelete , SIGNAL ( triggered ( ) ) , this , SLOT ( deleteStream ( ) ) ) ;
connect ( actionDelete , SIGNAL ( triggered ( ) ) , this , SLOT ( deleteStream ( ) ) ) ;
connect ( actionRename , SIGNAL ( triggered ( ) ) , this , SLOT ( renameStream ( ) ) ) ;
connect ( actionRename , SIGNAL ( triggered ( ) ) , this , SLOT ( renameStream ( ) ) ) ;
connect ( actionRefresh , SIGNAL ( triggered ( ) ) , this , SLOT ( refreshStream ( ) ) ) ;
connect ( actionRefresh , SIGNAL ( triggered ( ) ) , this , SLOT ( refreshStream ( ) ) ) ;
connect ( actionCreate , SIGNAL ( triggered ( ) ) , this , SLOT ( createStream ( ) ) ) ;
connect ( actionCreate , SIGNAL ( triggered ( ) ) , this , SLOT ( createStream ( ) ) ) ;
connect ( actionRefreshAll , SIGNAL ( triggered ( ) ) , this , SLOT ( refreshAllStreams ( ) ) ) ;
connect ( actionRefreshAll , SIGNAL ( triggered ( ) ) , this , SLOT ( refreshAllStreams ( ) ) ) ;
connect ( & refreshTimeTimer , SIGNAL ( timeout ( ) ) , this , SLOT ( updateLastRefreshedTimeForStreams ( ) ) ) ;
connect ( & rssmanager , SIGNAL ( streamNeedRefresh ( const unsigned short & , const unsigned short & ) ) , this , SLOT ( updateStreamName ( const unsigned short & , const unsigned short & ) ) ) ;
connect ( & rssmanager , SIGNAL ( streamNeedRefresh ( const unsigned short & , const unsigned short & ) ) , this , SLOT ( updateStreamName ( const unsigned short & , const unsigned short & ) ) ) ;
refreshTimeTimer . start ( 60000 ) ; // 1min
refreshStreamList ( ) ;
refreshStreamList ( ) ;
refreshTextBrowser ( ) ;
refreshTextBrowser ( ) ;
}
}
@ -303,5 +301,5 @@
short RSSImp : : getNumStreamSelected ( ) {
short RSSImp : : getNumStreamSelected ( ) {
return listStreams - > indexOfTopLevelItem ( listStreams - > currentItem ( ) ) ;
return listStreams - > indexOfTopLevelItem ( listStreams - > currentItem ( ) ) ;
}
}