Ticket #5008: music_exit_action.patch

File music_exit_action.patch, 4.2 KB (added by Ron Frazier <ron@…>, 4 years ago)
  • mythmusic/mythmusic/playbackbox.h

     
    173173    bool keyboard_accelerators; 
    174174    bool volume_control; 
    175175 
     176    QString exit_action; 
     177 
    176178    MythPopupBox *playlist_popup; 
    177179 
    178180    // 
  • mythmusic/mythmusic/playbackbox.cpp

     
    8484    cycle_visualizer = gContext->GetNumSetting("VisualCycleOnSongChange", 0); 
    8585    show_album_art = gContext->GetNumSetting("VisualAlbumArtOnSongChange", 0); 
    8686    random_visualizer = gContext->GetNumSetting("VisualRandomize", 0); 
     87    exit_action = gContext->GetSetting("MusicExitAction", "prompt"); 
    8788 
    8889    m_pushedButton = NULL; 
    8990 
     
    377378        { 
    378379            if (!gPlayer->isPlaying() || m_parent->IsExitingToMain()) 
    379380            { 
    380                 gPlayer->savePosition(); 
    381                 stopAll(); 
    382                 done(kDialogCodeAccepted); 
     381                if (exit_action == "play") 
     382                { 
     383                    gPlayer->setListener(NULL); 
     384                    gPlayer->setVisual(NULL); 
     385                    done(kDialogCodeAccepted); 
     386                } 
     387                else 
     388                { 
     389                    gPlayer->savePosition(); 
     390                    stopAll(); 
     391                    done(kDialogCodeAccepted); 
     392                }; 
    383393            } 
    384394            else 
    385395            { 
    386                 DialogBox *dialog = new DialogBox(gContext->GetMainWindow(), 
    387                                 tr("Exiting Music Player\n" 
    388                                     "Do you want to continue playing in the background?")); 
    389                 dialog->AddButton(tr("No - Exit, Stop Playing")); 
    390                 dialog->AddButton(tr("Yes - Exit, Continue Playing")); 
    391                 dialog->AddButton(tr("Cancel")); 
    392                 int res = dialog->exec(); 
    393                 dialog->deleteLater(); 
     396                int res; 
     397                if (exit_action == "stop") 
     398                    res = kDialogCodeButton0; 
     399                else if (exit_action == "play") 
     400                    res = kDialogCodeButton1; 
     401                else 
     402                { 
     403                        DialogBox *dialog = new DialogBox(gContext->GetMainWindow(), 
     404                                    tr("Exiting Music Player\n" 
     405                                        "Do you want to continue playing in the background?")); 
     406                        dialog->AddButton(tr("No - Exit, Stop Playing")); 
     407                        dialog->AddButton(tr("Yes - Exit, Continue Playing")); 
     408                        dialog->AddButton(tr("Cancel")); 
     409                        res = dialog->exec(); 
     410                        dialog->deleteLater(); 
     411                }; 
    394412 
    395413                if (res == kDialogCodeButton0) 
    396414                { 
  • mythmusic/mythmusic/globalsettings.cpp

     
    377377    return gc; 
    378378}; 
    379379 
     380static HostComboBox *ExitAction() 
     381{ 
     382    HostComboBox *gc = new HostComboBox("MusicExitAction"); 
     383    gc->setLabel(QObject::tr("Action on exit")); 
     384    gc->addSelection(QObject::tr("Prompt"), "prompt"); 
     385    gc->addSelection(QObject::tr("Stop Playing"), "stop"); 
     386    gc->addSelection(QObject::tr("Keep Playing"), "play"); 
     387    gc->setHelpText(QObject::tr("Specify what action to take when exiting mythmusic plugin.")); 
     388    return gc; 
     389}; 
     390 
    380391static HostSlider *VisualModeDelay() 
    381392{ 
    382393    HostSlider *gc = new HostSlider("VisualModeDelay", 0, 100, 1); 
     
    637648    playersettings->setLabel(QObject::tr("Playback Settings")); 
    638649    playersettings->addChild(PlayMode()); 
    639650    playersettings->addChild(ResumeMode()); 
     651    playersettings->addChild(ExitAction()); 
    640652    playersettings->addChild(SetSearchMaxResultsReturned()); 
    641653    playersettings->addChild(UseShowRatings()); 
    642654    playersettings->addChild(UseShowWholeTree());