timelabel.cpp
author Dmitriy Morozov <dmitriy@mrzv.org>
Mon, 01 Feb 2016 11:11:46 -0800
changeset 22 c62a23291b60
parent 0 7726fefc58a4
permissions -rw-r--r--
Lukas Barth's patch for Ipe 7.2.2

#include "timelabel.h"
#include <QInputDialog>
#include <iostream>

TimeLabel::TimeLabel(QWidget* parent): 
    QLabel(parent), time(0,0,0), counting(false), countingDown(false)
{
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(countTime()));
    timer->start(1000);       // one second
}

void TimeLabel::countTime()
{
    if (!counting) return;
    
    if (countingDown && !(time.hour() == 0 && time.minute() == 0 && time.second() == 0))
        time = time.addSecs(-1);
    
    if (!countingDown)
        time = time.addSecs(1);

    setText(time.toString("hh:mm:ss"));
}
        
void TimeLabel::mouseDoubleClickEvent(QMouseEvent* event)
{
    setTime();
}

void TimeLabel::setTime()
{
    bool counting_state = counting;
    counting = false;

    bool ok;
    int minutes = QInputDialog::getInt(this, tr("Minutes"),
                                       tr("Minutes to count down:"), 
                                       0, 0, 10000, 1, &ok);
    if (ok && minutes >= 0)
        time.setHMS(minutes/60,minutes%60,0);

    counting = counting_state;        
    
    setText(time.toString("hh:mm:ss"));
}

void TimeLabel::toggleCounting()
{
    counting = !counting;
}

void TimeLabel::toggleCountdown()
{
    countingDown = !countingDown;
}