Mercurial > hg > svgui
view widgets/ProgressDialog.cpp @ 378:22b72f0f6a4e
* More work to abstract out interactive components used in the data library,
so that it does not need to depend on QtGui.
author | Chris Cannam |
---|---|
date | Fri, 14 Mar 2008 17:14:21 +0000 |
parents | |
children | 036b75ddcd3f |
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; delete m_showTimer; m_showTimer = 0; 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) { delete m_showTimer; m_showTimer = 0; m_dialog->hide(); } else if (m_timerElapsed && !m_dialog->isVisible()) { m_dialog->show(); m_dialog->raise(); } qApp->processEvents(); } }