File indexing completed on 2024-06-09 04:52:59

0001 /*
0002     SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar>
0003     SPDX-FileCopyrightText: 2010-2022 Mladen Milinkovic <max@smoothware.net>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "progressdialog.h"
0009 
0010 #include <QLabel>
0011 #include <QProgressBar>
0012 #include <QBoxLayout>
0013 #include <QCloseEvent>
0014 #include <QDialogButtonBox>
0015 #include <QPushButton>
0016 
0017 #include <KLocalizedString>
0018 
0019 using namespace SubtitleComposer;
0020 
0021 ProgressDialog::ProgressDialog(const QString &caption, const QString &description, bool allowCancel, QWidget *parent) :
0022     QDialog(parent, Qt::WindowTitleHint)
0023 {
0024     setWindowTitle(caption);
0025     setModal(true);
0026 
0027     m_buttonBox = new QDialogButtonBox(allowCancel ? QDialogButtonBox::Cancel : QDialogButtonBox::NoButton, this);
0028     connect(m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0029     connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0030 
0031     m_label = new QLabel(this);
0032     m_label->setText(description);
0033     m_label->setAlignment(Qt::AlignHCenter);
0034 
0035     m_progressBar = new QProgressBar(this);
0036     m_progressBar->setFormat(i18nc("%p is the percent value, % is the percent sign", "%p%"));
0037     m_progressBar->setMaximum(1);
0038     m_progressBar->setValue(0);
0039 
0040     QBoxLayout *mainLayout = new QBoxLayout(QBoxLayout::TopToBottom, this);
0041     mainLayout->setContentsMargins(0, 0, 0, 0);
0042     mainLayout->addWidget(m_label);
0043     mainLayout->addWidget(m_progressBar);
0044     mainLayout->addWidget(m_buttonBox);
0045 
0046     setMinimumWidth(300);
0047     resize(QSize(300, 10));
0048 }
0049 
0050 void
0051 ProgressDialog::closeEvent(QCloseEvent *event)
0052 {
0053     event->ignore();
0054 }
0055 
0056 QString
0057 ProgressDialog::description() const
0058 {
0059     return m_label->text();
0060 }
0061 
0062 void
0063 ProgressDialog::setDescription(const QString &description)
0064 {
0065     m_label->setText(description);
0066 }
0067 
0068 int
0069 ProgressDialog::value() const
0070 {
0071     return m_progressBar->value();
0072 }
0073 
0074 void
0075 ProgressDialog::setValue(int value)
0076 {
0077     m_progressBar->setValue(value);
0078 }
0079 
0080 int
0081 ProgressDialog::minimum() const
0082 {
0083     return m_progressBar->minimum();
0084 }
0085 
0086 void
0087 ProgressDialog::setMinimum(int minimum)
0088 {
0089     m_progressBar->setMinimum(minimum);
0090 }
0091 
0092 void
0093 ProgressDialog::incrementMinimum(int delta)
0094 {
0095     m_progressBar->setMinimum(m_progressBar->minimum() + delta);
0096 }
0097 
0098 int
0099 ProgressDialog::maximum() const
0100 {
0101     return m_progressBar->maximum();
0102 }
0103 
0104 void
0105 ProgressDialog::setMaximum(int maximum)
0106 {
0107     m_progressBar->setMaximum(maximum);
0108 }
0109 
0110 void
0111 ProgressDialog::incrementMaximum(int delta)
0112 {
0113     m_progressBar->setMaximum(m_progressBar->maximum() + delta);
0114 }
0115 
0116 bool
0117 ProgressDialog::isCancellable() const
0118 {
0119     return m_buttonBox->button(QDialogButtonBox::Cancel)->isEnabled();
0120 }
0121 
0122 void
0123 ProgressDialog::setCancellable(bool cancellable)
0124 {
0125     m_buttonBox->button(QDialogButtonBox::Cancel)->setEnabled(cancellable);
0126 }
0127 
0128