From b1224c0a2bf5b1efda89e5ccad3a5a11d001ee5e Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 7 Sep 2011 04:42:05 +0200 Subject: [PATCH] * Fixed TWK-379: Properly parent 'Export Playlist' dialog and store/restore last used path. --- src/libtomahawk/tomahawksettings.cpp | 14 ++++++++++++++ src/libtomahawk/tomahawksettings.h | 3 +++ src/sourcetree/sourcetreeview.cpp | 16 ++++++++++++---- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/tomahawksettings.cpp b/src/libtomahawk/tomahawksettings.cpp index 945ab4e7d..302c0068f 100644 --- a/src/libtomahawk/tomahawksettings.cpp +++ b/src/libtomahawk/tomahawksettings.cpp @@ -863,6 +863,20 @@ TomahawkSettings::setScriptDefaultPath( const QString& path ) } +QString +TomahawkSettings::playlistDefaultPath() const +{ + return value( "playlists/defaultpath", QDir::homePath() ).toString(); +} + + +void +TomahawkSettings::setPlaylistDefaultPath( const QString& path ) +{ + setValue( "playlists/defaultpath", path ); +} + + bool TomahawkSettings::nowPlayingEnabled() const { diff --git a/src/libtomahawk/tomahawksettings.h b/src/libtomahawk/tomahawksettings.h index 1eb80940c..bdf3ee806 100644 --- a/src/libtomahawk/tomahawksettings.h +++ b/src/libtomahawk/tomahawksettings.h @@ -184,8 +184,11 @@ public: QStringList enabledScriptResolvers() const; void setEnabledScriptResolvers( const QStringList& resolvers ); + // Default paths QString scriptDefaultPath() const; void setScriptDefaultPath( const QString& path ); + QString playlistDefaultPath() const; + void setPlaylistDefaultPath( const QString& path ); // Now-Playing Settings // For now, just Adium. Soon, the world! diff --git a/src/sourcetree/sourcetreeview.cpp b/src/sourcetree/sourcetreeview.cpp index 2c306eb71..98cdfca4f 100644 --- a/src/sourcetree/sourcetreeview.cpp +++ b/src/sourcetree/sourcetreeview.cpp @@ -258,7 +258,8 @@ SourceTreeView::deletePlaylist( const QModelIndex& idxIn ) PlaylistItem* item = itemFromIndex< PlaylistItem >( idx ); playlist_ptr playlist = item->playlist(); Playlist::remove( playlist ); - } else if( type == SourcesModel::AutomaticPlaylist || type == SourcesModel::Station ) + } + else if( type == SourcesModel::AutomaticPlaylist || type == SourcesModel::Station ) { DynamicPlaylistItem* item = itemFromIndex< DynamicPlaylistItem >( idx ); dynplaylist_ptr playlist = item->dynPlaylist(); @@ -280,13 +281,20 @@ SourceTreeView::copyPlaylistLink() DynamicPlaylistItem* item = itemFromIndex< DynamicPlaylistItem >( m_contextMenuIndex ); dynplaylist_ptr playlist = item->dynPlaylist(); GlobalActionManager::instance()->copyPlaylistToClipboard( playlist ); - } else if ( type == SourcesModel::StaticPlaylist ) + } + else if ( type == SourcesModel::StaticPlaylist ) { PlaylistItem* item = itemFromIndex< PlaylistItem >( m_contextMenuIndex ); playlist_ptr playlist = item->playlist(); - QString filename = QFileDialog::getSaveFileName( this, tr( "Save XSPF" ), QDir::homePath(), tr( "Playlists (*.xspf)" ) ); - GlobalActionManager::instance()->savePlaylistToFile( playlist, filename ); + QString filename = QFileDialog::getSaveFileName( TomahawkUtils::tomahawkWindow(), tr( "Save XSPF" ), + TomahawkSettings::instance()->playlistDefaultPath(), tr( "Playlists (*.xspf)" ) ); + if ( !filename.isEmpty() ) + { + QFileInfo playlistAbsoluteFilePath = filename; + TomahawkSettings::instance()->setPlaylistDefaultPath( playlistAbsoluteFilePath.absolutePath() ); + GlobalActionManager::instance()->savePlaylistToFile( playlist, filename ); + } } }