MainWindow::MainWindow(QWidget *parent) : QMainWindow{parent} , ui{new Ui::MainWindow} { ms_mainWindow = this; // Setup UI controls. ui->setupUi(this); m_movingPixmapOverlay = std::make_unique<Util::MovingPixmapOverlay>(centralWidget()); m_statusBarProgress = new StatusBarProgressWidget{this}; ui->statusBar->addPermanentWidget(m_statusBarProgress); setupMenu(); setupToolSelector(); setupHelpURLs(); // Setup window properties. setWindowIcon(Util::loadIcon(Q("mkvtoolnix-gui.png"), QList<int>{} << 32 << 48 << 64 << 128 << 256)); retranslateUi(); Util::restoreWidgetGeometry(this); jobTool()->loadAndStart(); #if defined(HAVE_CURL_EASY_H) silentlyCheckForUpdates(); #endif // HAVE_CURL_EASY_H }
bool MainWindow::beforeCloseCheckRunningJobs() { auto tool = jobTool(); if (!tool) return true; auto model = tool->model(); if (!model->hasRunningJobs()) return true; if ( Util::Settings::get().m_warnBeforeAbortingJobs && (Util::MessageBox::question(this) ->title(QY("Abort running jobs")) .text(Q("%1 %2").arg(QY("There is currently a job running.")).arg(QY("Do you really want to abort all currently running jobs?"))) .buttonLabel(QMessageBox::Yes, QY("&Abort jobs")) .buttonLabel(QMessageBox::No, QY("Cancel")) .exec()) == QMessageBox::No) return false; model->stop(); model->withAllJobs([](Jobs::Job &job) { if (Jobs::Job::Running == job.status()) { job.setQuitAfterFinished(true); job.abort(); } }); return false; }
void MainWindow::closeEvent(QCloseEvent *event) { auto ok = mergeTool()->closeAllTabs(); ok = ok && headerEditorTool()->closeAllTabs(); ok = ok && chapterEditorTool()->closeAllTabs(); ok = ok && beforeCloseCheckRunningJobs(); if (!ok) { event->ignore(); return; } auto reg = Util::Settings::registry(); auto tool = jobTool(); if (tool) tool->model()->saveJobs(*reg); Util::saveWidgetGeometry(this); event->accept(); }
bool MainWindow::beforeCloseCheckRunningJobs() { auto tool = jobTool(); if (!tool) return true; auto model = tool->model(); if (!model->hasRunningJobs()) return true; if ( Util::Settings::get().m_warnBeforeAbortingJobs && Util::MessageBox::question(this, QY("Abort running jobs"), Q("%1 %2").arg(QY("There is currently a job running.")).arg(QY("Do you want to abort that job and quit?"))) == QMessageBox::No) return false; model->stop(); model->withAllJobs([](Jobs::Job &job) { if (Jobs::Job::Running == job.m_status) { job.m_quitAfterFinished = true; job.abort(); } }); return false; }