Mercurial > hg > svgui
view widgets/ProgressDialog.cpp @ 387:f329416bf1a5
* Permit holding Shift while dragging an instant or other edited thing,
to override the initial drag resistance (for #1928943 sticky time
instants)
* better handling of updates during progressive decode load
* ready() signal from model (used by vect)
author | Chris Cannam |
---|---|
date | Mon, 19 May 2008 17:23:11 +0000 |
parents | 036b75ddcd3f |
children | 33b7f5e54d60 |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ /* Sonic Visualiser An audio file viewer and annotation editor. Centre for Digital Music, Queen Mary, University of London. This file copyright 2007-2008 QMUL. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING included with this distribution for more information. */ #include "ProgressDialog.h" #include <QProgressDialog> #include <QApplication> #include <QTimer> ProgressDialog::ProgressDialog(QString message, bool cancellable, int timeBeforeShow, QWidget *parent) : m_showTimer(0), m_timerElapsed(false) { m_dialog = new QProgressDialog(message, cancellable ? tr("Cancel") : 0, 0, 100, parent); if (timeBeforeShow > 0) { m_dialog->hide(); m_showTimer = new QTimer; connect(m_showTimer, SIGNAL(timeout()), this, SLOT(showTimerElapsed())); m_showTimer->setSingleShot(true); m_showTimer->start(timeBeforeShow); } else { m_dialog->show(); m_dialog->raise(); m_timerElapsed = true; } if (cancellable) { connect(m_dialog, SIGNAL(canceled()), this, SIGNAL(cancelled())); } } ProgressDialog::~ProgressDialog() { delete m_showTimer; delete m_dialog; } void ProgressDialog::setMessage(QString text) { m_dialog->setLabelText(text); } void ProgressDialog::showTimerElapsed() { m_timerElapsed = true; if (m_dialog->value() > 0) { m_dialog->show(); } qApp->processEvents(); } void ProgressDialog::setProgress(int percentage) { if (percentage > m_dialog->value()) { m_dialog->setValue(percentage); if (percentage >= 100) { m_dialog->hide(); } else if (m_timerElapsed && !m_dialog->isVisible()) { m_dialog->show(); m_dialog->raise(); } qApp->processEvents(); } }