00001
00002
00003
00004 #include "StQtDelayRedrawTimer.h"
00005 #include <QtCore/QTimer>
00006 #include <QDebug>
00007
00008 StQtDelayRedrawTimer::StQtDelayRedrawTimer(QObject *parent) : QObject (parent)
00009 , fComplexVolumeTimer(new QTimer(this)),fSingeVolumeTimer(new QTimer(this))
00010 , fObj(0)
00011 {
00012 fComplexVolumeTimer->stop(); fComplexVolumeTimer->setSingleShot(true);
00013 fSingeVolumeTimer ->stop(); fSingeVolumeTimer ->setSingleShot(true);
00014
00015 connect(fComplexVolumeTimer,SIGNAL(timeout()),this,SLOT(DrawObject()));
00016 connect(fSingeVolumeTimer, SIGNAL(timeout()),this,SLOT(DrawObject()));
00017 }
00018
00019 void StQtDelayRedrawTimer::DrawObject(TObject *obj,bool expanded,int depth)
00020 {
00021
00022 fObj = obj;
00023 QTimer *timer = expanded ? fComplexVolumeTimer : fSingeVolumeTimer;
00024
00025 if ( timer->isActive() ) timer->stop();
00026 int delay = 600;
00027 if ( !expanded ) delay += 0;
00028 else if ( depth < 3 ) delay += 50;
00029 else if ( depth < 5 ) delay += 350;
00030 else if ( depth < 7 ) delay += 700;
00031 else delay += 1200;
00032 timer->start(delay);
00033 }
00034
00035
00036 void StQtDelayRedrawTimer::DrawObject()
00037 {
00038 if (fObj) {
00039 emit DrawObjectSignal(fObj,sender() == fComplexVolumeTimer);
00040 }
00041 }
00042
00043 bool StQtDelayRedrawTimer::IsActive(bool expanded) const
00044 {
00045 return expanded ? fComplexVolumeTimer->isActive() : fSingeVolumeTimer->isActive();
00046 }