Ticket #5008: music_exit_action.patch

File music_exit_action.patch, 4.2 KB (added by Ron Frazier <ron@…>, 16 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());