diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2cbe23e82..a31ffe02d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -306,7 +306,6 @@ MainWindow::MainWindow(QNetworkAccessManager* network, QWidget *parent) playlistManager_->SetTabWidget(ui_.tab_widget); QTimer::singleShot(500,this,SLOT(InitPlaylists())) ; - } MainWindow::~MainWindow() { diff --git a/src/playlist.cpp b/src/playlist.cpp index 8a6a1595f..98c882acd 100644 --- a/src/playlist.cpp +++ b/src/playlist.cpp @@ -401,8 +401,8 @@ void Playlist::SetCurrentIsPaused(bool paused) { void Playlist::SaveR() const { QSettings s; Q_ASSERT(index_ != -1 ) ; - QString setGrp = kSettingsGroup + QString::number(index_) ; - s.beginGroup(setGrp); + s.beginGroup(kSettingsGroup); + s.beginGroup(title_); s.beginWriteArray("items", items_.count()); for (int i=0 ; isetObjectName(QString::fromUtf8("playlist")); @@ -94,20 +94,35 @@ bool PlaylistManager::Restore(){ playListView->setModel(playList); playList->IgnoreSorting(false); - playList->SetPlaylistIndex( i+1 ) ; + playList->SetPlaylistIndex( index+1 ) ; + playList->SetTitle(title); playList->RestoreR() ; pTabWidget_->addTab( playListView, playList->GetTitle() ); SetCurrentPlaylist(playList); pCurrentPlaylistView_ = playListView ; - playlists_ << playList ; + playlists_ << playList ; } + int nCurrentIndex = -1 ; int currentIndex = s.value("currentplaylistindex").toInt(&bOk); if(bOk) pTabWidget_->setCurrentIndex(currentIndex); return true ; } - - - +void PlaylistManager::TabCloseRequest(int index){ + const PlaylistView* playListView = qobject_cast (pTabWidget_->widget(index)) ; + Playlist* playlist = qobject_cast( playListView->model() ) ; + playlists_.removeAll(playlist); + pTabWidget_->removeTab(index); + + QSettings s ; + s.beginGroup(Playlist::kSettingsGroup); + s.remove(playlist->GetTitle()); +} +void PlaylistManager::SetTabWidget(QTabWidget* pWidget) { + if ( pTabWidget_ ) + disconnect ( pTabWidget_, SIGNAL(tabCloseRequested(int)),this, SLOT(TabCloseRequest(int))); + pTabWidget_ = pWidget ; + connect ( pTabWidget_, SIGNAL(tabCloseRequested(int)),this, SLOT(TabCloseRequest(int))); +} diff --git a/src/playlistmanager.h b/src/playlistmanager.h index df13582cd..2671194e5 100644 --- a/src/playlistmanager.h +++ b/src/playlistmanager.h @@ -14,7 +14,7 @@ class PlaylistManager : public QObject{ void addPlaylist( const QString& playlistName = QString() ) ; // accessors - void SetTabWidget( QTabWidget * pWidget ) { pTabWidget_ = pWidget ; } + void SetTabWidget( QTabWidget * pWidget ) ; QTabWidget* GetTabWidget() const {return pTabWidget_; } void SetCurrentPlaylist ( Playlist * pPlaylist ) ; @@ -32,6 +32,9 @@ class PlaylistManager : public QObject{ int playlistCount_ ; signals: void CurrentPlaylistChanged( Playlist* pPlaylist ) ; + + private slots: + void TabCloseRequest( int index ) ; }; #endif // PLAYLISTMANAGER_H