diff --git a/src/libtomahawk/playlist.cpp b/src/libtomahawk/playlist.cpp index 2712bbe30..1b5f037aa 100644 --- a/src/libtomahawk/playlist.cpp +++ b/src/libtomahawk/playlist.cpp @@ -119,7 +119,7 @@ Playlist::Playlist( const source_ptr& src, , m_currentItem( 0 ) , m_busy( false ) { -// qDebug() << Q_FUNC_INFO << "1"; + qDebug() << Q_FUNC_INFO << "1" << title; init(); } @@ -144,7 +144,7 @@ Playlist::Playlist( const source_ptr& author, , m_initEntries( entries ) , m_busy( false ) { -// qDebug() << Q_FUNC_INFO << "2"; + qDebug() << Q_FUNC_INFO << "2" << title; init(); } diff --git a/src/libtomahawk/widgets/playlisttypeselectordlg.cpp b/src/libtomahawk/widgets/playlisttypeselectordlg.cpp index 8207edf34..9e80addcd 100644 --- a/src/libtomahawk/widgets/playlisttypeselectordlg.cpp +++ b/src/libtomahawk/widgets/playlisttypeselectordlg.cpp @@ -35,22 +35,24 @@ PlaylistTypeSelectorDlg::PlaylistTypeSelectorDlg( QWidget* parent, Qt::WindowFla #ifdef Q_WS_MAC // ui-> - ui->horizontalLayout_2->setContentsMargins( 4, 4, 4, 4 ); + ui->verticalLayout->setContentsMargins( 4, 0, 4, 4 ); setSizeGripEnabled( false ); + resize( width(), 150 ); setMinimumSize( size() ); setMaximumSize( size() ); // to remove the resize grip on osx this is the only way +#else + ui->verticalLayout->setContentsMargins( 9, 0, 9, 9 ); #endif + ui->line->setMaximumHeight( ui->label->height() ); + ui->line->setContentsMargins( 0, 0, 0, 0 ); m_isAutoPlaylist = false; - m_playlistName = ""; connect( ui->manualPlaylistButton, SIGNAL( clicked() ), this, SLOT( createNormalPlaylist() )); connect( ui->autoPlaylistButton, SIGNAL( clicked() ), this, SLOT( createAutomaticPlaylist() )); - connect( ui->autoPlaylistNameLine, SIGNAL( textChanged( const QString& )), - this, SLOT( enableAutoPlaylistButton( const QString& ))); } @@ -72,7 +74,6 @@ void PlaylistTypeSelectorDlg::createAutomaticPlaylist() { m_isAutoPlaylist = true; - m_playlistName = ui->autoPlaylistNameLine->text(); done( QDialog::Accepted ); // return code is used to vaidate we did not exit out of the Dialog successfully } @@ -80,7 +81,7 @@ PlaylistTypeSelectorDlg::createAutomaticPlaylist() QString PlaylistTypeSelectorDlg::playlistName() const { - return m_playlistName; + return ui->playlistNameLine->text(); } @@ -89,11 +90,3 @@ PlaylistTypeSelectorDlg::playlistTypeIsAuto() const { return m_isAutoPlaylist; } - - -void -PlaylistTypeSelectorDlg::enableAutoPlaylistButton( const QString &text ) -{ - ui->autoPlaylistButton->setEnabled( !text.isEmpty() ); -} - diff --git a/src/libtomahawk/widgets/playlisttypeselectordlg.h b/src/libtomahawk/widgets/playlisttypeselectordlg.h index de00c1504..ac90ef40f 100644 --- a/src/libtomahawk/widgets/playlisttypeselectordlg.h +++ b/src/libtomahawk/widgets/playlisttypeselectordlg.h @@ -40,15 +40,13 @@ public: QString playlistName() const; private slots: - void createNormalPlaylist(); - void createAutomaticPlaylist(); - void enableAutoPlaylistButton( const QString& ); + void createNormalPlaylist(); + void createAutomaticPlaylist(); private: bool m_isAutoPlaylist; // if not an auto playlist then its a normal playlist Ui::PlaylistTypeSelectorDlg *ui; - QString m_playlistName; }; diff --git a/src/libtomahawk/widgets/playlisttypeselectordlg.ui b/src/libtomahawk/widgets/playlisttypeselectordlg.ui index 3ae6c25df..bb17630a5 100644 --- a/src/libtomahawk/widgets/playlisttypeselectordlg.ui +++ b/src/libtomahawk/widgets/playlisttypeselectordlg.ui @@ -6,8 +6,8 @@ 0 0 - 482 - 169 + 420 + 100 @@ -18,8 +18,8 @@ - 482 - 145 + 420 + 100 @@ -34,21 +34,15 @@ false - + - - - 0 - - - 2 - + - 221 - 40 + 190 + 0 @@ -63,42 +57,12 @@ - + Qt::Vertical - - - 20 - 28 - - - - - - - - Create Manual Playlist - - - - - - - Qt::Vertical - - - - - - - 4 - - - 1 - @@ -118,57 +82,42 @@ + + + + - - - Qt::Vertical + + + Name: - - - 20 - 40 - + + 1 - + - - - - - Name: - - - 1 - - - - - - - New Playlist... - - - - + + + New Playlist... + + + + + + - - - Qt::Vertical + + + Create Manual Playlist - - - 20 - 40 - - - + - false + true Create Automatic Playlist diff --git a/src/sourcetree/items/categoryitems.cpp b/src/sourcetree/items/categoryitems.cpp index d57551a14..86bc03134 100644 --- a/src/sourcetree/items/categoryitems.cpp +++ b/src/sourcetree/items/categoryitems.cpp @@ -68,34 +68,44 @@ CategoryAddItem::activate() { case SourcesModel::PlaylistsCategory: { - PlaylistTypeSelectorDlg playlistSelectorDlg( TomahawkApp::instance()->mainWindow() ); - int successfulReturn = playlistSelectorDlg.exec(); - - if ( !playlistSelectorDlg.playlistTypeIsAuto() && successfulReturn ) { - - // only show if none is shown yet - if( !ViewManager::instance()->isNewPlaylistPageVisible() ) { - //fix this namespace resolution problem, was not there before - Tomahawk::ViewPage* p = ViewManager::instance()->show( new NewPlaylistWidget() ); - model()->linkSourceItemToPage( this, p ); - } - - } else if ( playlistSelectorDlg.playlistTypeIsAuto() && successfulReturn ) { - // create Auto Playlist - QString playlistName = playlistSelectorDlg.playlistName(); - APP->mainWindow()->createAutomaticPlaylist( playlistName ); - } else if ( !successfulReturn ) { - model()->viewPageActivated( ViewManager::instance()->currentPage() ); - } + PlaylistTypeSelectorDlg* playlistSelectorDlg = new PlaylistTypeSelectorDlg( TomahawkApp::instance()->mainWindow(), Qt::Sheet ); +#ifndef Q_OS_MAC + playlistSelectorDlg->setModal( true ); +#endif + connect( playlistSelectorDlg, SIGNAL( finished( int ) ), this, SLOT( dialogClosed( int ) ) ); + playlistSelectorDlg->show(); break; - } + } case SourcesModel::StationsCategory: APP->mainWindow()->createStation(); break; } } +void +CategoryAddItem::dialogClosed( int ret ) +{ + PlaylistTypeSelectorDlg* playlistSelectorDlg = qobject_cast< PlaylistTypeSelectorDlg* >( sender() ); + Q_ASSERT( playlistSelectorDlg ); + + QString playlistName = playlistSelectorDlg->playlistName(); + if ( playlistName.isEmpty() ) + playlistName = tr( "New Playlist" ); + + if ( !playlistSelectorDlg->playlistTypeIsAuto() && ret ) { + + playlist_ptr playlist = Tomahawk::Playlist::create( SourceList::instance()->getLocal(), uuid(), playlistName, "", "", false, QList< query_ptr>() ); + ViewManager::instance()->show( playlist ); + + } else if ( playlistSelectorDlg->playlistTypeIsAuto() && ret ) { + // create Auto Playlist + APP->mainWindow()->createAutomaticPlaylist( playlistName ); + } else if ( !ret ) { + model()->viewPageActivated( ViewManager::instance()->currentPage() ); + } + playlistSelectorDlg->deleteLater(); +} Qt::ItemFlags CategoryAddItem::flags() const diff --git a/src/sourcetree/items/categoryitems.h b/src/sourcetree/items/categoryitems.h index 52468ff06..a7de58b0f 100644 --- a/src/sourcetree/items/categoryitems.h +++ b/src/sourcetree/items/categoryitems.h @@ -37,6 +37,7 @@ public: private slots: void parsedDroppedTracks( const QList< Tomahawk::query_ptr >& tracks ); + void dialogClosed( int ret ); private: SourcesModel::CategoryType m_categoryType; diff --git a/src/tomahawkwindow.cpp b/src/tomahawkwindow.cpp index 153982a35..3d99bdc48 100644 --- a/src/tomahawkwindow.cpp +++ b/src/tomahawkwindow.cpp @@ -524,26 +524,34 @@ TomahawkWindow::createStation() void TomahawkWindow::createPlaylist() { - PlaylistTypeSelectorDlg playlistSelectorDlg; - int successfulReturn = playlistSelectorDlg.exec(); + PlaylistTypeSelectorDlg* playlistSelectorDlg = new PlaylistTypeSelectorDlg( TomahawkApp::instance()->mainWindow(), Qt::Sheet ); +#ifndef Q_OS_MAC + playlistSelectorDlg->setModal( true ); +#endif + connect( playlistSelectorDlg, SIGNAL( finished( int ) ), this, SLOT( playlistCreateDialogFinished( int ) ) ); - if ( !playlistSelectorDlg.playlistTypeIsAuto() && successfulReturn ) - { - // only show if none is shown yet - if ( !ViewManager::instance()->isNewPlaylistPageVisible() ) - { - ViewManager::instance()->show( new NewPlaylistWidget() ); - } - - } - else if ( playlistSelectorDlg.playlistTypeIsAuto() && successfulReturn ) - { - // create Auto Playlist - QString playlistName = playlistSelectorDlg.playlistName(); - APP->mainWindow()->createAutomaticPlaylist( playlistName ); - } + playlistSelectorDlg->show(); } +void TomahawkWindow::playlistCreateDialogFinished( int ret ) +{ + PlaylistTypeSelectorDlg* playlistSelectorDlg = qobject_cast< PlaylistTypeSelectorDlg* >( sender() ); + Q_ASSERT( playlistSelectorDlg ); + + QString playlistName = playlistSelectorDlg->playlistName(); + if ( playlistName.isEmpty() ) + playlistName = tr( "New Playlist" ); + + if ( !playlistSelectorDlg->playlistTypeIsAuto() && ret ) { + + playlist_ptr playlist = Tomahawk::Playlist::create( SourceList::instance()->getLocal(), uuid(), playlistName, "", "", false, QList< query_ptr>() ); + ViewManager::instance()->show( playlist ); + } else if ( playlistSelectorDlg->playlistTypeIsAuto() && ret ) { + // create Auto Playlist + createAutomaticPlaylist( playlistName ); + } + playlistSelectorDlg->deleteLater(); +} void TomahawkWindow::audioStarted() diff --git a/src/tomahawkwindow.h b/src/tomahawkwindow.h index 32e41bc2a..f6980f78a 100644 --- a/src/tomahawkwindow.h +++ b/src/tomahawkwindow.h @@ -98,6 +98,7 @@ private slots: void minimize(); void maximize(); + void playlistCreateDialogFinished( int ret ); private: void loadSettings(); void saveSettings();