File: CountDownWidget.C

package info (click to toggle)
witty 3.1.2-3
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 45,512 kB
  • ctags: 35,832
  • sloc: cpp: 69,469; ansic: 66,945; xml: 4,383; sh: 594; perl: 108; makefile: 106
file content (43 lines) | stat: -rw-r--r-- 887 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 * Copyright (C) 2008 Emweb bvba, Kessel-Lo, Belgium.
 *
 * See the LICENSE file for terms of use.
 */

#include <boost/lexical_cast.hpp>

#include <Wt/WTimer>
#include "CountDownWidget.h"

CountDownWidget::CountDownWidget(int start, int stop, unsigned msec,
				 WContainerWidget *parent)
  : WText(parent),
    done_(this),
    start_(start),
    stop_(stop)
{
  stop_ = std::min(start_ - 1, stop_);  // stop must be smaller than start
  current_ = start_;

  timer_ = new WTimer(this);
  timer_->setInterval(msec);
  timer_->timeout().connect(SLOT(this, CountDownWidget::timerTick));
  timer_->start();

  setText(boost::lexical_cast<std::string>(current_));
}

void CountDownWidget::cancel()
{
  timer_->stop();
}

void CountDownWidget::timerTick()
{
  setText(boost::lexical_cast<std::string>(--current_));

  if (current_ <= stop_) {
    timer_->stop();
    done_.emit();
  }
}