CollectEntryDlg: fixed random crashes caused by first external paint event, finished collection routines.

git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@109 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
tarek_saidi
2006-10-22 23:20:54 +00:00
parent 83d561d3a4
commit 29f3d8b2b3
7 changed files with 135 additions and 40 deletions

View File

@@ -21,6 +21,8 @@
#include <math.h>
#include <QPainter>
#include <QRectF>
#include "PwmConfig.h"
#include "main.h"
#include "WaitAnimationWidget.h"
@@ -28,9 +30,28 @@ WaitAnimationWidget::WaitAnimationWidget(QWidget* parent):QWidget(parent){
speed=60;
setRefreshRate(25);
CurAngle=0;
connect(&timer,SIGNAL(timeout()),this,SLOT(refreshAnimation()));
timer.start();
for(int i=0;i<6;i++){
float diff=CurAngle-i*0.16666667f;
if(diff>0.5f)
diff=1.0f-diff;
if(diff<-0.5f)
diff=1.0f+diff;
CircSizes[i]=1.0+exp(-14.0f*diff*diff);
}
connect(&timer,SIGNAL(timeout()),this,SLOT(refreshAnimation()));
}
WaitAnimationWidget::~WaitAnimationWidget(){
timer.stop();
}
void WaitAnimationWidget::start(){
timer.start();
}
void WaitAnimationWidget::stop(){
timer.stop();
repaint();
}
void WaitAnimationWidget::setRefreshRate(int fps){
@@ -53,16 +74,17 @@ void WaitAnimationWidget::refreshAnimation(){
}
void WaitAnimationWidget::paintEvent(QPaintEvent* event){
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing,true);
painter.setBrush(QColor(255,255,255));
painter.setPen(QColor(255,255,255));
for(int i=0;i<6;i++){
float d=CircSizes[i]*5.0;
QRectF rect(CircPositions[i].x()-d/2,CircPositions[i].y()-d/2,d,d);
painter.drawEllipse(rect);
}
if(timer.isActive()){
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing,true);
painter.setBrush(config.BannerTextColor);
painter.setPen(config.BannerTextColor);
for(int i=0;i<6;i++){
float d=CircSizes[i]*5.0;
QRectF rect(CircPositions[i].x()-d/2,CircPositions[i].y()-d/2,d,d);
painter.drawEllipse(rect);
}
}
}
void WaitAnimationWidget::resizeEvent(QResizeEvent* event){
@@ -75,5 +97,5 @@ void WaitAnimationWidget::resizeEvent(QResizeEvent* event){
CircPositions[i].setX((r-10)*cos(-2.0*3.14159265*(0.16666667*i))+r);
CircPositions[i].setY((r-10)*sin(-2.0*3.14159265*(0.16666667*i))+r);
}
}
}