1 #include "mainwindow.h"
\r
2 #include "operationdialog.h"
\r
3 #include "ui_operationdialog.h"
\r
7 OperationDialog::OperationDialog(QWidget *parent) :
\r
9 ui(new Ui::OperationDialog),
\r
14 resize(parent->width() * 0.8, height());
\r
17 OperationDialog::~OperationDialog()
\r
22 void OperationDialog::setAutoClose(bool yes)
\r
24 ui->chkAutoClose->setChecked(yes);
\r
27 bool OperationDialog::autoClose() const
\r
29 return ui->chkAutoClose->isChecked();
\r
32 void OperationDialog::showEvent(QShowEvent *)
\r
34 ui->textEdit->setVisible(false);
\r
36 QThread *thread = new QThread();
\r
37 m_worker->moveToThread(thread);
\r
38 m_worker->setProgressText(ui->label);
\r
39 connect(thread, SIGNAL(started()), m_worker, SLOT(operate()));
\r
40 connect(m_worker, SIGNAL(finished()), thread, SLOT(quit()));
\r
42 connect(thread, SIGNAL(finished()), m_worker, SLOT(deleteLater()));
\r
43 connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
\r
45 connect(m_worker, SIGNAL(operation(QString)), this, SLOT(onOperation(QString)));
\r
46 connect(m_worker, SIGNAL(success(QString)), this, SLOT(onSuccess(QString)));
\r
47 connect(m_worker, SIGNAL(error(QString)), this, SLOT(onError(QString)));
\r
48 connect(m_worker, SIGNAL(finished()), this, SLOT(onFinished()));
\r
49 connect(m_worker, SIGNAL(canceled()), this, SLOT(onCanceled()));
\r
54 void OperationDialog::onOperation(const QString &msg)
\r
56 ui->textEdit->append(msg + " ... ");
\r
59 void OperationDialog::onSuccess(const QString &msg)
\r
61 ui->textEdit->append("<font color='green'>" + msg + "</font>");
\r
64 void OperationDialog::onError(const QString &msg)
\r
67 ui->textEdit->append("<font color='red'><strong>" + msg + "</strong></font>");
\r
70 void OperationDialog::onFinished()
\r
72 ui->progressBar->setMaximum(1);
\r
73 ui->progressBar->setValue(1);
\r
74 ui->btnCloseCancel->setText(tr("閉じる"));
\r
76 ui->textEdit->append("");
\r
77 ui->textEdit->append(tr("完了"));
\r
78 if (!m_Error && ui->chkAutoClose->checkState() == Qt::Checked) {
\r
83 void OperationDialog::onCanceled()
\r
85 ui->progressBar->setMaximum(1);
\r
86 ui->progressBar->setValue(1);
\r
87 ui->btnCloseCancel->setText(tr("閉じる"));
\r
89 ui->textEdit->append("");
\r
90 ui->textEdit->append(tr("操作は途中でキャンセルされました。"));
\r
93 void OperationDialog::on_btnCloseCancel_clicked()
\r
95 if (ui->btnCloseCancel->text() == tr("閉じる")) {
\r
99 m_worker->requestStop();
\r
103 void OperationDialog::on_btnShowDetail_clicked()
\r
105 if (ui->textEdit->isVisible()) {
\r
106 ui->textEdit->setVisible(false);
\r
107 ui->btnShowDetail->setText(tr("詳細を表示"));
\r
110 ui->textEdit->setVisible(true);
\r
111 ui->btnShowDetail->setText(tr("詳細を隠す"));
\r