mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-25 07:29:33 -05:00
Fixed calculation of the minimum available space for the hash status string. The window was resized again on hashing with the animation.
Fixed memory leak in hash status. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3885 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
75b0d2e797
commit
dc764eaf0e
@ -30,9 +30,10 @@
|
||||
class StatusLabel : public QLabel
|
||||
{
|
||||
public:
|
||||
StatusLabel(QLayout *layout, QWidget *parent = NULL, Qt::WindowFlags f = 0) : QLabel(parent, f)
|
||||
StatusLabel(QLayout *layout, int diffWidth, QWidget *parent = NULL, Qt::WindowFlags f = 0) : QLabel(parent, f)
|
||||
{
|
||||
m_layout = layout;
|
||||
m_diffWidth = diffWidth;
|
||||
}
|
||||
|
||||
virtual QSize minimumSizeHint() const
|
||||
@ -40,11 +41,12 @@ public:
|
||||
const QSize sizeHint = QLabel::minimumSizeHint();
|
||||
|
||||
// do not resize the layout
|
||||
return QSize(qMin(sizeHint.width(), m_layout->geometry().width()), sizeHint.height());
|
||||
return QSize(qMin(sizeHint.width(), m_layout->geometry().width() - m_diffWidth), sizeHint.height());
|
||||
}
|
||||
|
||||
private:
|
||||
QLayout *m_layout;
|
||||
int m_diffWidth;
|
||||
};
|
||||
|
||||
HashingStatus::HashingStatus(QWidget *parent)
|
||||
@ -54,10 +56,14 @@ HashingStatus::HashingStatus(QWidget *parent)
|
||||
hbox->setMargin(0);
|
||||
hbox->setSpacing(6);
|
||||
|
||||
movie = new QMovie(":/images/loader/16-loader.gif");
|
||||
movie->setSpeed(80); // 2x speed
|
||||
hashloader = new QLabel(this);
|
||||
hashloader->setMovie(movie);
|
||||
hbox->addWidget(hashloader);
|
||||
|
||||
statusHashing = new StatusLabel(hbox, this);
|
||||
movie->jumpToNextFrame(); // to calculate the real width
|
||||
statusHashing = new StatusLabel(hbox, movie->frameRect().width() + hbox->spacing(), this);
|
||||
hbox->addWidget(statusHashing);
|
||||
|
||||
QSpacerItem *horizontalSpacer = new QSpacerItem(1000, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
||||
@ -69,23 +75,25 @@ HashingStatus::HashingStatus(QWidget *parent)
|
||||
statusHashing->hide();
|
||||
|
||||
connect(NotifyQt::getInstance(), SIGNAL(hashingInfoChanged(const QString&)), SLOT(updateHashingInfo(const QString&)));
|
||||
}
|
||||
|
||||
HashingStatus::~HashingStatus()
|
||||
{
|
||||
delete(movie);
|
||||
}
|
||||
|
||||
void HashingStatus::updateHashingInfo(const QString& s)
|
||||
{
|
||||
QMovie *movie = new QMovie(":/images/loader/16-loader.gif");
|
||||
|
||||
if(s.isEmpty()) {
|
||||
statusHashing->hide();
|
||||
hashloader->hide();
|
||||
|
||||
movie->stop();
|
||||
} else {
|
||||
statusHashing->setText(s);
|
||||
statusHashing->show();
|
||||
hashloader->show();
|
||||
|
||||
hashloader->setMovie(movie);
|
||||
movie->start();
|
||||
movie->setSpeed(80); // 2x speed
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ class HashingStatus : public QWidget
|
||||
|
||||
public:
|
||||
HashingStatus(QWidget *parent = 0);
|
||||
~HashingStatus();
|
||||
|
||||
public slots:
|
||||
void updateHashingInfo(const QString&) ;
|
||||
@ -38,7 +39,6 @@ public slots:
|
||||
private:
|
||||
QLabel *statusHashing, *hashloader;
|
||||
QMovie *movie;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user