Ticket #571: osd-jumplength.patch

File osd-jumplength.patch, 4.5 KB (added by mythtv@…, 20 years ago)

patch against head

  • libs/libmythtv/tv_play.cpp

     
    187187      exitPlayer(false), paused(false), errored(false),
    188188      stretchAdjustment(false),
    189189      audiosyncAdjustment(false), audiosyncBaseline(LONG_LONG_MIN),
     190      skipAdjustment(kSkipNone), skipNumeric(false),
    190191      editmode(false), zoomMode(false), sigMonMode(false),
    191192      update_osd_pos(false), endOfRecording(false), requestDelete(false),
    192193      doSmartForward(false),
     
    18571858        }
    18581859    }
    18591860
     1861    if (skipAdjustment != kSkipNone)
     1862    {
     1863        for (unsigned int i = 0; i < actions.size(); i++)
     1864        {
     1865            action = actions[i];
     1866            handled = true;
     1867
     1868            if (action == "LEFT")
     1869                ChangeSkip(-1);
     1870            else if (action == "RIGHT")
     1871                ChangeSkip(1);
     1872            else if (action == "UP")
     1873                ChangeSkip(-10);
     1874            else if (action == "DOWN")
     1875                ChangeSkip(10);
     1876            else if (action == "0" || action == "1" || action == "2" ||
     1877                     action == "3" || action == "4" || action == "5" ||
     1878                     action == "6" || action == "7" || action == "8" ||
     1879                     action == "9")
     1880                ChangeSkip(1000000 + action.toInt());
     1881            else
     1882                handled = false;
     1883        }
     1884    }
     1885
    18601886#if DEBUG_ACTIONS
    18611887    for (uint i = 0; i < actions.size(); ++i)
    18621888        VERBOSE(VB_IMPORTANT, LOC + QString("handled(%1) actions[%2](%3)")
     
    40404066    }
    40414067}
    40424068
     4069void TV::ChangeSkip(int dir, bool allowEdit)
     4070{
     4071    int *val;
     4072    int newval;
     4073    QString desc;
     4074
     4075    switch (skipAdjustment)
     4076    {
     4077        case kSkipNone:
     4078            return;
     4079        case kSkipForward:
     4080            val = &fftime;
     4081            desc = tr("Skip Ahead");
     4082            break;
     4083        case kSkipReverse:
     4084            val = &rewtime;
     4085            desc = tr("Skip Back");
     4086            break;
     4087        case kSkipJump:
     4088            val = &jumptime;
     4089            desc = tr("Jump");
     4090            break;
     4091        default:
     4092            return;
     4093    }
     4094
     4095    newval = *val;
     4096
     4097    if (dir > 1000000)
     4098    {
     4099        if (!skipNumeric) newval = 0;
     4100        else newval *= 10;
     4101        skipNumeric = true;
     4102        newval += (dir - 1000000);
     4103    }
     4104    else
     4105    {
     4106        skipNumeric = false;
     4107        newval += dir;
     4108    }
     4109
     4110    if (newval < 0) newval = 0;
     4111
     4112    *val = newval;
     4113
     4114    if (GetOSD() && !browsemode)
     4115    {
     4116        QString text;
     4117        int dispval = newval;
     4118
     4119        if (skipAdjustment == kSkipForward || skipAdjustment == kSkipReverse)
     4120        {
     4121            dispval *= 10;
     4122            text = QString(" %1 s").arg(newval);
     4123        }
     4124        else
     4125        {
     4126            dispval *= 100;
     4127            text = QString(" %1 m").arg(newval);
     4128        }
     4129
     4130        GetOSD()->StartPause(dispval, false, desc, desc + text, 10,
     4131                        kOSDFunctionalType_SkipAdjust);
     4132        update_osd_pos = false;
     4133    }
     4134
     4135    if (!allowEdit) skipAdjustment = kSkipNone;
     4136}
     4137
    40434138void TV::ToggleMute(void)
    40444139{
    40454140    kMuteState mute_status;
     
    45274622        case kOSDFunctionalType_AudioSyncAdjust:
    45284623            audiosyncAdjustment = false;
    45294624            break;
     4625        case kOSDFunctionalType_SkipAdjust:
     4626            skipAdjustment = kSkipNone;
     4627            break;
    45304628        case kOSDFunctionalType_Default:
    45314629            break;
    45324630    }
     
    47274825        ToggleLetterbox(action.right(1).toInt());
    47284826        hidetree = false;
    47294827    }
     4828    else if (action == "EDITFFTIME")
     4829    {
     4830        skipAdjustment = kSkipForward;
     4831        ChangeSkip(0);
     4832    }
     4833    else if (action == "EDITREWTIME")
     4834    {
     4835        skipAdjustment = kSkipReverse;
     4836        ChangeSkip(0);
     4837    }
     4838    else if (action == "EDITJUMPTIME")
     4839    {
     4840        skipAdjustment = kSkipJump;
     4841        ChangeSkip(0);
     4842    }
    47304843    else if (action == "NEXTAUDIO")
    47314844        ChangeAudioTrack(1);
    47324845    else if (action == "PREVAUDIO")
     
    49335046        }
    49345047    }
    49355048
     5049    item = new OSDGenericTree(treeMenu, tr("Change Skip Lengths"));
     5050    subitem = new OSDGenericTree(item, tr("Change Skip Ahead"), "EDITFFTIME");
     5051    subitem = new OSDGenericTree(item, tr("Change Skip Back"), "EDITREWTIME");
     5052    subitem = new OSDGenericTree(item, tr("Change Jump"), "EDITJUMPTIME");
     5053
    49365054    int letterbox = nvp->GetLetterbox();
    49375055    item = new OSDGenericTree(treeMenu, tr("Change Aspect Ratio"));
    49385056    subitem = new OSDGenericTree(item, tr("4:3"), "TOGGLEASPECT" +