fixed display of ongoing chunks

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5994 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2012-12-16 16:10:43 +00:00
parent 68c3e19a19
commit f1b7a3eee5
2 changed files with 36 additions and 26 deletions

View File

@ -184,6 +184,39 @@ void xProgressBar::setColor()
} }
} }
void xProgressBar::overPaintSelectedChunks(const std::vector<uint32_t>& chunks,const QColor& gradColor_a1,const QColor& gradColor_a2, int width,uint32_t ss) const
{
QLinearGradient linearGrad(rect.x(), rect.y(), rect.x(), rect.y() + rect.height() - 1);
linearGrad.setColorAt(0.00, gradColor_a1);
linearGrad.setColorAt(0.16, gradColor_a2);
linearGrad.setColorAt(1.00, gradColor_a1);
painter->setBrush(linearGrad);
std::cerr << "painting chunks: " ;
for(uint32_t i=0;i<chunks.size();++i)
std::cerr << chunks[i] << " " ;
std::cerr << std::endl;
if(chunks.empty())
return ;
int last_i = chunks[0] ;
for(uint32_t i=1;i<chunks.size();++i)
if(chunks[i] > chunks[i-1]+1)
{
int nb_consecutive_chunks = chunks[i-1] - last_i + 1 ;
painter->drawRect(rect.x() + hSpan+(int)rint(last_i*width/(float)ss), rect.y() + vSpan, (int)ceil(nb_consecutive_chunks*width/(float)ss), rect.height() - 1 - vSpan * 2);
last_i = chunks[i] ;
}
int nb_consecutive_chunks = chunks.back() - last_i + 1 ;
painter->drawRect(rect.x() + hSpan+(int)rint(last_i*width/(float)ss), rect.y() + vSpan, (int)ceil(nb_consecutive_chunks*width/(float)ss), rect.height() - 1 - vSpan * 2);
}
void xProgressBar::paint() void xProgressBar::paint()
{ {
// paint the progressBar background // paint the progressBar background
@ -225,32 +258,8 @@ void xProgressBar::paint()
i += j ; i += j ;
} }
{ overPaintSelectedChunks( _pinfo.chunks_in_progress , QColor(170, 20,9), QColor(223,121,123), width,ss) ;
QColor gradColor_a1, gradColor_a2 ; overPaintSelectedChunks( _pinfo.chunks_in_checking , QColor(186,143,0), QColor(223,196, 61), width,ss) ;
gradColor_a1.setRgb(170, 20, 9);
gradColor_a2.setRgb(223, 121,123);
linearGrad.setColorAt(0.00, gradColor_a1);
linearGrad.setColorAt(0.16, gradColor_a2);
linearGrad.setColorAt(1.00, gradColor_a1);
painter->setBrush(linearGrad);
for(uint32_t i=0;i<_pinfo.chunks_in_progress.size();++i)
painter->drawRect(rect.x() + hSpan+(int)rint(_pinfo.chunks_in_progress[i]*width/(float)ss), rect.y() + vSpan, (int)ceil(1.0f*width/(float)ss), rect.height() - 1 - vSpan * 2);
}
{
QColor gradColor_a1, gradColor_a2 ;
gradColor_a1.setRgb(186, 143, 0);
gradColor_a2.setRgb(223, 196, 61);
linearGrad.setColorAt(0.00, gradColor_a1);
linearGrad.setColorAt(0.16, gradColor_a2);
linearGrad.setColorAt(1.00, gradColor_a1);
painter->setBrush(linearGrad);
for(uint32_t i=0;i<_pinfo.chunks_in_checking.size();++i)
painter->drawRect(rect.x() + hSpan+(int)rint(_pinfo.chunks_in_checking[i]*width/(float)ss), rect.y() + vSpan, (int)ceil(1.0f*width/(float)ss), rect.height() - 1 - vSpan * 2);
}
} }
else else
{ {

View File

@ -83,6 +83,7 @@ Q_OBJECT
void paint(); void paint();
void overPaintSelectedChunks(const std::vector<uint32_t>& chunks,const QColor& gradColor_a1,const QColor& gradColor_a2, int width,uint32_t ss) const ;
void setColorSchema(const int value); void setColorSchema(const int value);
void setDisplayText(const bool display); void setDisplayText(const bool display);
void setVerticalSpan(const int value); void setVerticalSpan(const int value);