Version: 1.4.0 (using KDE KDE 3.5.3) Installed from: Gentoo Packages Compiler: gcc 4 OS: Linux I was thinking that Amarok should prompt the user to finish transferring music to media devices such as an ipod before disconnecting. currently it does the following 1) user starts transferring music to iPod (or other media device, I have an iPod) 2) user clicks the "disconnect" button, and it disconnects the ipod after finishing its current transfer. The user ideally should be asked if they are sure, and/or offer to finish sending the list of music to be transferred before disconnecting. That or have a "Sync" button that does all that in one shot. Ie: plug in ipod -> click sync -> music I have queued to be sent gets sent, and ipod is ejected. Just a thought.
SVN commit 566401 by aumuell: sk if transfer to media device should be finished for all queued tracks or should be interrupted after current track when pressing disconnect BUG: 129716 M +2 -2 ChangeLog M +24 -0 src/mediabrowser.cpp M +2 -0 src/mediabrowser.h --- trunk/extragear/multimedia/amarok/ChangeLog #566400:566401 @@ -29,8 +29,8 @@ to iTunes, Firefly Media Server etc. (BR 100513) CHANGES: - * It's now possible to edit scores and ratings for multiple tracks in - TagDialog. + * Optionally finish transferring all queued tracks to media device after + pressing disconnect button. (BR 129716) * TagDialog won't make Amarok unresponsive while committing tags changes to files anymore. * Exact playtime as tooltip in statusbar. Patch by Markus Kaufhold --- trunk/extragear/multimedia/amarok/src/mediabrowser.cpp #566400:566401 @@ -1828,6 +1828,7 @@ , m_transferring( false ) , m_deleting( false ) , m_deferredDisconnect( false ) + , m_scheduledDisconnect( false ) , m_transfer( true ) , m_configure( true ) , m_customButton( false ) @@ -2292,6 +2293,24 @@ void MediaBrowser::disconnectClicked() { + if( currentDevice() && currentDevice()->isTransferring() ) + { + int action = KMessageBox::questionYesNoCancel( MediaBrowser::instance(), + i18n( "Transfer in progress. Finish or stop after current track?" ), + i18n( "Stop Transfer?" ), + KGuiItem(i18n("&Finish"), "goto"), + KGuiItem(i18n("&Stop"), "player_eject") ); + if( action == KMessageBox::Cancel ) + { + return; + } + else if( action == KMessageBox::Yes ) + { + currentDevice()->scheduleDisconnect(); + return; + } + } + m_toolbar->getButton(TRANSFER)->setEnabled( false ); m_toolbar->getButton(DISCONNECT)->setEnabled( false ); @@ -2771,6 +2790,11 @@ m_deferredDisconnect = false; disconnectDevice( m_runDisconnectHook ); } + else if( m_scheduledDisconnect ) + { + disconnectDevice( true ); + } + m_scheduledDisconnect = false; } int --- trunk/extragear/multimedia/amarok/src/mediabrowser.h #566400:566401 @@ -465,6 +465,7 @@ virtual void expandItem( QListViewItem *item ) {(void)item; } bool connectDevice( bool silent=false ); bool disconnectDevice( bool postdisconnecthook=true ); + void scheduleDisconnect() { m_scheduledDisconnect = true; } protected slots: void fileTransferred( KIO::Job *job ); @@ -587,6 +588,7 @@ bool m_transferring; bool m_deleting; bool m_deferredDisconnect; + bool m_scheduledDisconnect; bool m_runDisconnectHook; bool m_spacesToUnderscores; bool m_transfer;