Ticket #817: clock.diff

File clock.diff, 5.2 KB (added by Ben Levitt, 15 years ago)
  • themes/G.A.N.T./ui.xml

     
    12231223      </textarea>
    12241224    </container>
    12251225
     1226    <container name="clock">
     1227      <textarea name="clocktext" drawoder="0">
     1228        <area>630,8,170,35</area>
     1229        <font>title</font>
     1230        <value>h:mm AP</value>
     1231      </textarea>
     1232    </container>
     1233
    12261234    <container name="selector">
    12271235      <area>0,50,800,310</area>
    12281236      <listarea name="toptitles" draworder="2">
  • themes/blue/ui.xml

     
    774774      </textarea>
    775775    </container>
    776776   
     777    <container name="clock">
     778      <textarea name="clocktext" drawoder="0">
     779        <area>650,4,150,35</area>
     780        <font>title</font>
     781        <value>h:mm AP</value>
     782      </textarea>
     783    </container>
     784
    777785    <container name="cur_group">
    778786      <context>0</context> 
    779787      <area>20,10,280,35</area>
  • programs/mythfrontend/playbackbox.cpp

     
    252252    generatePreviewPixmap = gContext->GetNumSetting("GeneratePreviewPixmaps");
    253253    dateformat = gContext->GetSetting("DateFormat", "ddd MMMM d");
    254254    timeformat = gContext->GetSetting("TimeFormat", "h:mm AP");
     255    showClock = gContext->GetNumSetting("ShowClock", 1);
    255256
    256257    nvp = NULL;
    257258    timer = new QTimer(this);
     
    265266    timer->start(500);
    266267    gContext->addListener(this);
    267268
     269    if (showClock)
     270    {
     271        LayerSet *container = theme->GetSet("clock");
     272        if (container)
     273        {
     274            UITextType *text = (UITextType*) container->GetType("clocktext");
     275            if (text)
     276            {
     277                clockRect = text->getScreenArea();
     278                clockformat = text->GetDefaultText();
     279                clockTimer = new QTimer(this);
     280                connect(clockTimer, SIGNAL(timeout()), this, SLOT(updateClock()));
     281                clockTimer->start(100);
     282            }
     283            else
     284            {
     285                showClock = FALSE;
     286            }
     287        }
     288        else
     289        {
     290            showClock = FALSE;
     291        }
     292    }
     293
    268294    freeSpaceTimer = new QTimer(this);
    269295    connect(freeSpaceTimer, SIGNAL(timeout()), this,
    270296            SLOT(setUpdateFreeSpace()));
     
    489515    setPaletteBackgroundPixmap(myBackground);
    490516}
    491517 
     518void PlaybackBox::updateClock(void)
     519{
     520    LayerSet *container = theme->GetSet("clock");
     521    if (container)
     522    {
     523        UITextType *text = (UITextType*) container->GetType("clocktext");       
     524        if (text)
     525        {
     526            QPainter tmp(this);
     527            QPixmap pix(clockRect.size());
     528            pix.fill(this, clockRect.topLeft());
     529            tmp.drawPixmap(clockRect.topLeft(), pix);
     530
     531            QDateTime now = QDateTime::currentDateTime();
     532
     533            if (clockformat.contains('s'))
     534            {
     535                clockTimer->start(1000);
     536            }
     537            else
     538            {
     539                QTime nextMin(now.time().hour(), now.time().minute()+1);
     540                clockTimer->start(now.time().msecsTo(nextMin) + 500);
     541            }
     542
     543            QString timeStr = now.toString(clockformat);
     544            text->SetText(timeStr);
     545
     546            if(type != Delete)
     547            {
     548                text->Draw(&tmp, 0, 0);
     549            }
     550            else
     551            {
     552                text->Draw(&tmp, 0, 1);
     553            }
     554            tmp.end();
     555        }
     556    }
     557}
     558
    492559void PlaybackBox::paintEvent(QPaintEvent *e)
    493560{
    494561    if (e->erased())
     
    522589        updateVideo(&p);
    523590    }
    524591
     592    if (showClock && r.intersects(clockRect))
     593    {
     594        clockTimer->start(100);
     595    }
     596
    525597    skipCnt--;
    526598    if (skipCnt < 0)
    527599    {
     
    19031975    state = kKilling; // stop preview playback and don't restart it
    19041976    playingSomething = true;
    19051977
     1978    if (showClock)
     1979        clockTimer->stop();
     1980
    19061981    tv->setLastProgram(lastProgram);
    19071982
    19081983    if (tv->Playback(tvrec))
     
    19442019
    19452020    lastProgram = new ProgramInfo(*tvrec);
    19462021
     2022    if (showClock)
     2023        clockTimer->start(100);
     2024
    19472025    playingSomething = false;
    19482026    state = kStarting; // restart playback preview
    19492027    setEnabled(true);
  • programs/mythfrontend/playbackbox.h

     
    4343 
    4444  protected slots:
    4545    void timeout(void);
     46    void updateClock(void);
    4647
    4748    void cursorLeft();
    4849    void cursorRight();
     
    259260    QString dateformat;
    260261    QString timeformat;
    261262
     263    bool showClock;
     264    QTimer *clockTimer;
     265    QString clockformat;
     266
    262267    void grayOut(QPainter *);
    263268    void updateBackground(void);
    264269    void updateVideo(QPainter *);
     
    287292    QRect usageRect;
    288293    QRect videoRect;
    289294    QRect curGroupRect;
     295    QRect clockRect;
    290296
    291297    QTimer *fillListTimer;
    292298    int listsize;