Ticket #2978: ticket_2748_final.diff

File ticket_2748_final.diff, 7.2 KB (added by skamithi, 13 years ago)

final patch. made some minor changes in the positioning of the menu options so it matches what is currentl there. will test run it for a little while before commiting.

  • libs/libmythtv/tv_play.h

     
    131131    void PromptStopWatchingRecording(void);
    132132    void PromptDeleteRecording(QString title);
    133133    bool PromptRecGroupPassword(void);
    134    
     134    bool BookmarkAllowed(void);
     135    bool DeleteAllowed(void);
    135136
    136137    // Boolean queries
    137138
  • libs/libmythtv/tv_play.cpp

     
    24192419                {
    24202420                    int result = GetOSD()->GetDialogResponse(dialogname);
    24212421
     2422                    if (result > 0)
     2423                    {
     2424                        if (!BookmarkAllowed())
     2425                            result++;
     2426                        if (result > 2 && !DeleteAllowed())
     2427                            result++;
     2428                    }
     2429
    24222430                    switch (result)
    24232431                    {
    2424                         case 0: case 3:
     2432                        case 0: case 4:
    24252433                            DoPause();
    24262434                            break;
    24272435                        case 1:
     
    24292437                            exitPlayer = true;
    24302438                            wantsToQuit = true;
    24312439                            break;
    2432                         case 4:
     2440                        case 3:
    24332441                            dialogname = "";
    24342442                            DoPause();
    24352443                            PromptDeleteRecording(
     
    24412449                            break;
    24422450                    }
    24432451                }
    2444                 else if (dialogname == "videoexitplayoptions")
    2445                 {
    2446                     int result = GetOSD()->GetDialogResponse(dialogname);
    2447 
    2448                     switch (result)
    2449                     {
    2450                         case 0: case 1:
    2451                             DoPause();
    2452                             break;
    2453                         default:
    2454                             exitPlayer = true;
    2455                             wantsToQuit = true;
    2456                             break;
    2457                     }
    2458                 }
    24592452                else if (dialogname == "askdeleterecording")
    24602453                {
    24612454                    int result = GetOSD()->GetDialogResponse(dialogname);
     
    28592852
    28602853            if (StateIsLiveTV(GetState()))
    28612854            {
    2862                 if (nvp && gContext->GetNumSetting("PlaybackExitPrompt") == 2)
    2863                     nvp->SetBookmark();
    2864                 if (nvp && gContext->GetNumSetting("AutomaticSetWatched", 0))
    2865                     nvp->SetWatched();
    2866                 exitPlayer = true;
    2867                 wantsToQuit = true;
     2855                if (nvp && 12 & gContext->GetNumSetting("PlaybackExitPrompt"))
     2856                    PromptStopWatchingRecording();
     2857                else
     2858                {
     2859                    exitPlayer = true;
     2860                    wantsToQuit = true;
     2861                }
    28682862            }
    28692863            else
    28702864            {
    2871                 if (nvp && gContext->GetNumSetting("PlaybackExitPrompt") == 1 &&
     2865                if (nvp && 5 & gContext->GetNumSetting("PlaybackExitPrompt") &&
    28722866                    !underNetworkControl && !prbuffer->InDVDMenuOrStillFrame())
    28732867                {
    28742868                    PromptStopWatchingRecording();
     
    75397533    }
    75407534}
    75417535
     7536/* \fn TV::BookmarkAllowed(void)
     7537 * \brief Returns true if bookmarks are allowed for the current player.
     7538 */
     7539bool TV::BookmarkAllowed(void)
     7540{
     7541    if ((prbuffer->isDVD() && (!gContext->GetNumSetting("EnableDVDBookmark", 0)
     7542        || prbuffer->DVD()->GetTotalTimeOfTitle() < 120)) ||
     7543        StateIsLiveTV(GetState()) ||
     7544        (playbackinfo->isVideo && !prbuffer->isDVD()))
     7545        return false;
    75427546
     7547    return true;
     7548}
     7549
     7550/* \fn TV::DeleteAllowed(void)
     7551 * \brief Returns true if the delete menu option should be offered.
     7552 */
     7553bool TV::DeleteAllowed(void)
     7554{
     7555    if (prbuffer->isDVD() || StateIsLiveTV(GetState()))
     7556        return false;
     7557    return true;
     7558}
     7559
    75437560void
    75447561TV::PromptStopWatchingRecording(void)
    75457562{
     
    75507567   
    75517568    dialogboxTimer.restart();
    75527569    QString message;
     7570    QString videotype;
    75537571    QStringList options;
    7554     bool allowbookmark = true;
    7555     bool allowdvdbookmark = gContext->GetNumSetting("EnableDVDBookmark", 0);
    7556     if (prbuffer->isDVD())
    7557     {
    7558         if (!allowdvdbookmark ||
    7559             prbuffer->DVD()->GetTotalTimeOfTitle() < 120)
    7560         {
    7561             allowbookmark = false;
    7562         }
    7563     }
     7572
     7573    if (StateIsLiveTV(GetState()))
     7574        videotype = "Live TV";
     7575    else if (prbuffer->isDVD())
     7576        videotype = "this DVD";
    75647577    else if (playbackinfo->isVideo)
    7565         allowbookmark = false;
     7578        videotype = "this Video";
     7579    else
     7580        videotype = "this recording";
     7581
     7582    message = tr("You are exiting %1").arg(videotype);
    75667583   
    7567     if (playbackinfo && allowbookmark)
     7584    if (playbackinfo && BookmarkAllowed())
    75687585    {
    7569         QString videotype = (prbuffer->isDVD()) ? "DVD":"recording";
    7570         message = tr("You are exiting this %1").arg(videotype);
    7571 
    75727586        options += tr("Save this position and go to the menu");
    75737587        options += tr("Do not save, just exit to the menu");
    7574         options += tr("Keep watching");
    7575         if (!prbuffer->isDVD())
    7576             options += tr("Delete this recording");
    7577 
    7578         dialogname = "exitplayoptions";
    75797588    }
    75807589    else
    7581     {
     7590        options += tr("Exit %1").arg(videotype);
    75827591
    7583         message = tr("You are exiting this Video/DVD");
    7584        
    7585         options += tr("Keep Watching");
    7586         options += tr("Exit Video");
    7587        
    7588         dialogname = "videoexitplayoptions";
    7589     }
     7592    if (playbackinfo && DeleteAllowed())
     7593        options += tr("Delete this recording");
    75907594
     7595    options += tr("Keep watching");
     7596    dialogname = "exitplayoptions";
     7597
    75917598    if (GetOSD())
    75927599        GetOSD()->NewDialogBox(dialogname, message, options, 0);
    75937600}
     
    76437650        return false;
    76447651   
    76457652    return (dialogname == "askdeleterecording" ||
    7646             dialogname == "exitplayoptions"    ||
    7647             dialogname == "videoexitplayoptions");
     7653            dialogname == "exitplayoptions");
    76487654}
    76497655
    76507656void TV::setLastProgram(ProgramInfo *rcinfo)
  • programs/mythfrontend/globalsettings.cpp

     
    12431243    gc->setLabel(QObject::tr("Action on playback exit"));
    12441244    gc->addSelection(QObject::tr("Just exit"), "0");
    12451245    gc->addSelection(QObject::tr("Save position and exit"), "2");
    1246     gc->addSelection(QObject::tr("Always prompt"), "1");
     1246    gc->addSelection(QObject::tr("Always prompt (excluding Live TV)"), "1");
     1247    gc->addSelection(QObject::tr("Always prompt (including Live TV)"), "4");
     1248    gc->addSelection(QObject::tr("Prompt for Live TV only"), "8");
    12471249    gc->setHelpText(QObject::tr("If set to prompt, a menu will be displayed "
    12481250                    "when you exit playback mode.  The options available will "
    12491251                    "allow you to save your position, delete the "