Krita Source Code Documentation
Loading...
Searching...
No Matches
RecorderExport Class Reference

#include <recorder_export.h>

+ Inheritance diagram for RecorderExport:

Classes

class  Private
 

Public Member Functions

 RecorderExport (RecorderExportSettings *s, QWidget *parent=nullptr)
 
void setup ()
 
 ~RecorderExport ()
 

Protected Member Functions

void closeEvent (QCloseEvent *event) override
 

Private Slots

void onButtonBrowseDirectoryClicked ()
 
void onButtonBrowseExportClicked ()
 
void onButtonBrowseFfmpegClicked ()
 
void onButtonCancelClicked ()
 
void onButtonEditProfileClicked ()
 
void onButtonExportClicked ()
 
void onButtonLockFpsToggled (bool checked)
 
void onButtonLockRatioToggled (bool checked)
 
void onButtonRemoveSnapshotsClicked ()
 
void onButtonRestartClicked ()
 
void onButtonShowInFolderClicked ()
 
void onButtonWatchItClicked ()
 
void onCheckExtendResultToggled (bool checked)
 
void onCheckResizeToggled (bool checked)
 
void onCheckResultPreviewToggled (bool checked)
 
void onCleanUpFinished ()
 
void onComboProfileIndexChanged (int index)
 
void onEditVideoPathChanged (const QString &videoFilePath)
 
void onFFMpegFinished ()
 
void onFFMpegFinishedWithError (QString error)
 
void onFFMpegProgressUpdated (int frameNo)
 
void onFFMpegStarted ()
 
void onFirstFrameSecValueChanged (int value)
 
void onLastFrameSecValueChanged (int value)
 
void onSpinFpsValueChanged (int value)
 
void onSpinInputFpsValueChanged (int value)
 
void onSpinScaleHeightValueChanged (int value)
 
void onSpinScaleWidthValueChanged (int value)
 
void reject () override
 

Private Member Functions

bool eventFilter (QObject *obj, QEvent *event) override
 

Private Attributes

QScopedPointer< Privated
 
RecorderExportSettingssettings
 

Detailed Description

Definition at line 16 of file recorder_export.h.

Constructor & Destructor Documentation

◆ RecorderExport()

RecorderExport::RecorderExport ( RecorderExportSettings * s,
QWidget * parent = nullptr )
explicit

Definition at line 323 of file recorder_export.cpp.

324 : QDialog(parent)
325 , settings(s)
326 , d(new Private(this))
327{
328 d->ui->setupUi(this);
329 d->spinInputFPSMaxValue = d->ui->spinInputFps->minimum();
330 d->spinInputFPSMaxValue = d->ui->spinInputFps->maximum();
331 d->ui->buttonBrowseDirectory->setIcon(KisIconUtils::loadIcon("view-preview"));
332 d->ui->buttonBrowseFfmpeg->setIcon(KisIconUtils::loadIcon("folder"));
333 d->ui->buttonEditProfile->setIcon(KisIconUtils::loadIcon("document-edit"));
334 d->ui->buttonBrowseExport->setIcon(KisIconUtils::loadIcon("folder"));
335 d->ui->buttonLockRatio->setIcon(settings->lockRatio ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
336 d->ui->buttonLockFps->setIcon(settings->lockFps ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
337 d->ui->buttonWatchIt->setIcon(KisIconUtils::loadIcon("media-playback-start"));
338 d->ui->buttonShowInFolder->setIcon(KisIconUtils::loadIcon("folder"));
339 d->ui->buttonRemoveSnapshots->setIcon(KisIconUtils::loadIcon("edit-delete"));
340 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageSettings);
341 d->ui->spinLastFrameSec->setEnabled(d->ui->extendResultCheckBox->isChecked());
342 d->ui->spinFirstFrameSec->setEnabled(d->ui->resultPreviewCheckBox->isChecked());
343
344 connect(d->ui->buttonBrowseDirectory, SIGNAL(clicked()), SLOT(onButtonBrowseDirectoryClicked()));
345 connect(d->ui->spinInputFps, SIGNAL(valueChanged(int)), SLOT(onSpinInputFpsValueChanged(int)));
346 connect(d->ui->spinFps, SIGNAL(valueChanged(int)), SLOT(onSpinFpsValueChanged(int)));
347 connect(d->ui->resultPreviewCheckBox, SIGNAL(toggled(bool)), SLOT(onCheckResultPreviewToggled(bool)));
348 connect(d->ui->spinFirstFrameSec, SIGNAL(valueChanged(int)), SLOT(onFirstFrameSecValueChanged(int)));
349 connect(d->ui->extendResultCheckBox, SIGNAL(toggled(bool)), SLOT(onCheckExtendResultToggled(bool)));
350 connect(d->ui->spinLastFrameSec, SIGNAL(valueChanged(int)), SLOT(onLastFrameSecValueChanged(int)));
351 connect(d->ui->checkResize, SIGNAL(toggled(bool)), SLOT(onCheckResizeToggled(bool)));
352 connect(d->ui->spinScaleWidth, SIGNAL(valueChanged(int)), SLOT(onSpinScaleWidthValueChanged(int)));
353 connect(d->ui->spinScaleHeight, SIGNAL(valueChanged(int)), SLOT(onSpinScaleHeightValueChanged(int)));
354 connect(d->ui->buttonLockRatio, SIGNAL(toggled(bool)), SLOT(onButtonLockRatioToggled(bool)));
355 connect(d->ui->buttonLockFps, SIGNAL(toggled(bool)), SLOT(onButtonLockFpsToggled(bool)));
356 connect(d->ui->buttonBrowseFfmpeg, SIGNAL(clicked()), SLOT(onButtonBrowseFfmpegClicked()));
357 connect(d->ui->comboProfile, SIGNAL(currentIndexChanged(int)), SLOT(onComboProfileIndexChanged(int)));
358 connect(d->ui->buttonEditProfile, SIGNAL(clicked()), SLOT(onButtonEditProfileClicked()));
359 connect(d->ui->editVideoFilePath, SIGNAL(textChanged(QString)), SLOT(onEditVideoPathChanged(QString)));
360 connect(d->ui->buttonBrowseExport, SIGNAL(clicked()), SLOT(onButtonBrowseExportClicked()));
361 connect(d->ui->buttonBox->button(QDialogButtonBox::Save), SIGNAL(clicked()), this, SLOT(onButtonExportClicked()));
362 connect(d->ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
363 connect(d->ui->buttonCancelExport, SIGNAL(clicked()), SLOT(onButtonCancelClicked()));
364 connect(d->ui->buttonWatchIt, SIGNAL(clicked()), SLOT(onButtonWatchItClicked()));
365 connect(d->ui->buttonShowInFolder, SIGNAL(clicked()), SLOT(onButtonShowInFolderClicked()));
366 connect(d->ui->buttonRemoveSnapshots, SIGNAL(clicked()), SLOT(onButtonRemoveSnapshotsClicked()));
367 connect(d->ui->buttonRestart, SIGNAL(clicked()), SLOT(onButtonRestartClicked()));
368 connect(d->ui->resultPreviewCheckBox, SIGNAL(toggled(bool)), d->ui->spinFirstFrameSec, SLOT(setEnabled(bool)));
369 connect(d->ui->extendResultCheckBox, SIGNAL(toggled(bool)), d->ui->spinLastFrameSec, SLOT(setEnabled(bool)));
370
372 d->ui->buttonBox->button(QDialogButtonBox::Close)->setText("OK");
373 d->ui->buttonBox->button(QDialogButtonBox::Save)->setText(i18n("Export"));
374 d->ui->editVideoFilePath->installEventFilter(this);
375}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void onButtonBrowseFfmpegClicked()
void onCheckResultPreviewToggled(bool checked)
void onSpinInputFpsValueChanged(int value)
void onLastFrameSecValueChanged(int value)
void onButtonShowInFolderClicked()
void onEditVideoPathChanged(const QString &videoFilePath)
RecorderExportSettings * settings
void onSpinScaleHeightValueChanged(int value)
void onButtonEditProfileClicked()
void onFirstFrameSecValueChanged(int value)
void onButtonRemoveSnapshotsClicked()
QScopedPointer< Private > d
void onCheckExtendResultToggled(bool checked)
void onCheckResizeToggled(bool checked)
void onButtonBrowseDirectoryClicked()
void onButtonLockFpsToggled(bool checked)
void onComboProfileIndexChanged(int index)
void onSpinFpsValueChanged(int value)
void onButtonLockRatioToggled(bool checked)
void onSpinScaleWidthValueChanged(int value)
void onButtonBrowseExportClicked()
QIcon loadIcon(const QString &name)

References connect(), d, KisIconUtils::loadIcon(), RecorderExportSettings::lockFps, RecorderExportSettings::lockRatio, onButtonBrowseDirectoryClicked(), onButtonBrowseExportClicked(), onButtonBrowseFfmpegClicked(), onButtonCancelClicked(), onButtonEditProfileClicked(), onButtonExportClicked(), onButtonLockFpsToggled(), onButtonLockRatioToggled(), onButtonRemoveSnapshotsClicked(), onButtonRestartClicked(), onButtonShowInFolderClicked(), onButtonWatchItClicked(), onCheckExtendResultToggled(), onCheckResizeToggled(), onCheckResultPreviewToggled(), onComboProfileIndexChanged(), onEditVideoPathChanged(), onFirstFrameSecValueChanged(), onLastFrameSecValueChanged(), onSpinFpsValueChanged(), onSpinInputFpsValueChanged(), onSpinScaleHeightValueChanged(), onSpinScaleWidthValueChanged(), RecorderExportSettings::realTimeCaptureMode, and settings.

◆ ~RecorderExport()

RecorderExport::~RecorderExport ( )

Definition at line 377 of file recorder_export.cpp.

378{
379}

Member Function Documentation

◆ closeEvent()

void RecorderExport::closeEvent ( QCloseEvent * event)
overrideprotected

Definition at line 426 of file recorder_export.cpp.

427{
428 if (!d->tryAbortExport())
429 event->ignore();
430}

References d.

◆ eventFilter()

bool RecorderExport::eventFilter ( QObject * obj,
QEvent * event )
overrideprivate

Definition at line 712 of file recorder_export.cpp.

713{
714 if (obj == d->ui->editVideoFilePath && event->type() == QEvent::FocusOut)
715 d->updateVideoFilePath();
716
717 return QDialog::eventFilter(obj, event);
718}

References d.

◆ onButtonBrowseDirectoryClicked

void RecorderExport::onButtonBrowseDirectoryClicked ( )
privateslot

Definition at line 438 of file recorder_export.cpp.

439{
440 if (settings->framesCount != 0) {
441 QDesktopServices::openUrl(QUrl::fromLocalFile(settings->inputDirectory));
442 } else {
443 QMessageBox::warning(this, windowTitle(), i18nc("Can't browse frames of recording because no frames have been recorded", "No frames to browse."));
444 return;
445 }
446}

References RecorderExportSettings::framesCount, RecorderExportSettings::inputDirectory, and settings.

◆ onButtonBrowseExportClicked

void RecorderExport::onButtonBrowseExportClicked ( )
privateslot

Definition at line 591 of file recorder_export.cpp.

592{
593 KoFileDialog dialog(this, KoFileDialog::SaveFile, "ExportTimelapse");
594 dialog.setCaption(i18n("Export Timelapse Video As"));
595 dialog.setDefaultDir(settings->videoDirectory);
596 const QString &extension = settings->profiles[settings->profileIndex].extension;
597 dialog.setMimeTypeFilters(QStringList(KisMimeDatabase::mimeTypeForSuffix(extension)));
598 QString videoFileName = dialog.filename();
599 if (!videoFileName.isEmpty()) {
600 QFileInfo fileInfo(videoFileName);
601 settings->videoDirectory = fileInfo.absolutePath();
602 settings->videoFileName = fileInfo.completeBaseName();
603 d->updateVideoFilePath();
605 }
606}
QList< QString > QStringList
static QString mimeTypeForSuffix(const QString &suffix)
Find the mimetype for a given extension. The extension may have the form "*.xxx" or "xxx".
void setVideoDirectory(const QString &value)
QList< RecorderProfile > profiles

References d, KisMimeDatabase::mimeTypeForSuffix(), RecorderExportSettings::profileIndex, RecorderExportSettings::profiles, KoFileDialog::SaveFile, settings, RecorderExportConfig::setVideoDirectory(), RecorderExportSettings::videoDirectory, and RecorderExportSettings::videoFileName.

◆ onButtonBrowseFfmpegClicked

void RecorderExport::onButtonBrowseFfmpegClicked ( )
privateslot

Definition at line 546 of file recorder_export.cpp.

547{
548 KoFileDialog dialog(this, KoFileDialog::OpenFile, "SelectFFmpeg");
549 dialog.setCaption(i18n("Select FFmpeg Executable File"));
550 dialog.setDefaultDir(settings->ffmpegPath);
551 QString file = dialog.filename();
552 if (!file.isEmpty()) {
555 d->checkFfmpeg();
556 }
557}
void setFfmpegPath(const QString &value)

References d, RecorderExportSettings::ffmpegPath, KoFileDialog::OpenFile, RecorderExportConfig::setFfmpegPath(), and settings.

◆ onButtonCancelClicked

void RecorderExport::onButtonCancelClicked ( )
privateslot

Definition at line 628 of file recorder_export.cpp.

629{
630 if (d->cleaner) {
631 d->cleaner->stop();
632 d->cleaner->deleteLater();
633 d->cleaner = nullptr;
634 return;
635 }
636
637 if (d->tryAbortExport())
638 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageSettings);
639}

References d.

◆ onButtonEditProfileClicked

void RecorderExport::onButtonEditProfileClicked ( )
privateslot

Definition at line 566 of file recorder_export.cpp.

567{
568 RecorderProfileSettings settingsDialog(this);
569
570 connect(&settingsDialog, &RecorderProfileSettings::requestPreview, [&](const QString & arguments) {
571 settingsDialog.setPreview(settings->ffmpegPath % " -y " % d->applyVariables(arguments).replace("\n", " ")
572 % " \"" % settings->videoFilePath % "\"");
573 });
574
575 if (settingsDialog.editProfile(
577 d->fillComboProfiles();
578 d->updateVideoFilePath();
580 }
581}
void setProfiles(const QList< RecorderProfile > &value)
void requestPreview(QString arguments)
QList< RecorderProfile > defaultProfiles

References connect(), d, RecorderExportSettings::defaultProfiles, RecorderProfileSettings::editProfile(), RecorderExportSettings::ffmpegPath, RecorderExportSettings::profileIndex, RecorderExportSettings::profiles, RecorderProfileSettings::requestPreview(), RecorderProfileSettings::setPreview(), RecorderExportConfig::setProfiles(), settings, and RecorderExportSettings::videoFilePath.

◆ onButtonExportClicked

void RecorderExport::onButtonExportClicked ( )
privateslot

Definition at line 608 of file recorder_export.cpp.

609{
610 if (QFile::exists(settings->videoFilePath)) {
611 if (settings->framesCount != 0) {
612 if (QMessageBox::question(this, windowTitle(),
613 i18n("The video file already exists. Do you wish to overwrite it?"))
614 != QMessageBox::Yes) {
615 return;
616 }
617 } else {
618 QMessageBox::warning(this, windowTitle(), i18n("No frames to export."));
619 return;
620 }
621 }
622
623
624 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageProgress);
625 d->startExport();
626}

References d, RecorderExportSettings::framesCount, settings, and RecorderExportSettings::videoFilePath.

◆ onButtonLockFpsToggled

void RecorderExport::onButtonLockFpsToggled ( bool checked)
privateslot

Definition at line 528 of file recorder_export.cpp.

529{
530 settings->lockFps = checked;
531 RecorderExportConfig config(false);
532 config.setLockFps(checked);
533 d->updateFps(config);
534 if (settings->lockFps) {
535 d->ui->buttonLockFps->setIcon(KisIconUtils::loadIcon("locked"));
536 d->ui->spinInputFps->setMinimum(d->ui->spinFps->minimum());
537 d->ui->spinInputFps->setMaximum(d->ui->spinFps->maximum());
538 } else {
539 d->ui->buttonLockFps->setIcon(KisIconUtils::loadIcon("unlocked"));
540 d->ui->spinInputFps->setMinimum(d->spinInputFPSMinValue);
541 d->ui->spinInputFps->setMaximum(d->spinInputFPSMaxValue);
542 }
543
544}

References d, KisIconUtils::loadIcon(), RecorderExportSettings::lockFps, RecorderExportConfig::setLockFps(), and settings.

◆ onButtonLockRatioToggled

void RecorderExport::onButtonLockRatioToggled ( bool checked)
privateslot

Definition at line 516 of file recorder_export.cpp.

517{
518 settings->lockRatio = checked;
519 RecorderExportConfig config(false);
520 config.setLockRatio(checked);
521 if (settings->lockRatio) {
522 d->updateRatio(true);
523 config.setSize(settings->size);
524 }
525 d->ui->buttonLockRatio->setIcon(settings->lockRatio ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
526}

References d, KisIconUtils::loadIcon(), RecorderExportSettings::lockRatio, RecorderExportConfig::setLockRatio(), RecorderExportConfig::setSize(), settings, and RecorderExportSettings::size.

◆ onButtonRemoveSnapshotsClicked

void RecorderExport::onButtonRemoveSnapshotsClicked ( )
privateslot

Definition at line 679 of file recorder_export.cpp.

680{
681 const QString confirmation(i18n("The recordings for this document will be deleted"
682 " and you will not be able to export a timelapse for it again"
683 ". Note that already exported timelapses will still be preserved."
684 "\n\nDo you wish to continue?"));
685 if (QMessageBox::question(this, windowTitle(), confirmation) != QMessageBox::Yes)
686 return;
687
688 d->ui->labelStatus->setText(i18nc("Label title, Snapshot directory deleting is in progress", "Cleaning up..."));
689 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageProgress);
690
691 Q_ASSERT(d->cleaner == nullptr);
692 d->cleaner = new RecorderDirectoryCleaner({d->settings->inputDirectory});
693 connect(d->cleaner, SIGNAL(finished()), this, SLOT(onCleanUpFinished()));
694 d->cleaner->start();
695}

References connect(), d, and onCleanUpFinished().

◆ onButtonRestartClicked

void RecorderExport::onButtonRestartClicked ( )
privateslot

Definition at line 697 of file recorder_export.cpp.

698{
699 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageSettings);
700}

References d.

◆ onButtonShowInFolderClicked

void RecorderExport::onButtonShowInFolderClicked ( )
privateslot

Definition at line 674 of file recorder_export.cpp.

675{
676 QDesktopServices::openUrl(QUrl::fromLocalFile(settings->videoDirectory));
677}

References settings, and RecorderExportSettings::videoDirectory.

◆ onButtonWatchItClicked

void RecorderExport::onButtonWatchItClicked ( )
privateslot

Definition at line 669 of file recorder_export.cpp.

670{
671 QDesktopServices::openUrl(QUrl::fromLocalFile(settings->videoFilePath));
672}

References settings, and RecorderExportSettings::videoFilePath.

◆ onCheckExtendResultToggled

void RecorderExport::onCheckExtendResultToggled ( bool checked)
privateslot

Definition at line 480 of file recorder_export.cpp.

481{
482 settings->extendResult = checked;
484 d->updateVideoDuration();
485}

References d, RecorderExportSettings::extendResult, RecorderExportConfig::setExtendResult(), and settings.

◆ onCheckResizeToggled

void RecorderExport::onCheckResizeToggled ( bool checked)
privateslot

◆ onCheckResultPreviewToggled

void RecorderExport::onCheckResultPreviewToggled ( bool checked)
privateslot

Definition at line 466 of file recorder_export.cpp.

467{
468 settings->resultPreview = checked;
470 d->updateVideoDuration();
471}

References d, RecorderExportSettings::resultPreview, RecorderExportConfig::setResultPreview(), and settings.

◆ onCleanUpFinished

void RecorderExport::onCleanUpFinished ( )
privateslot

Definition at line 702 of file recorder_export.cpp.

703{
704 d->cleaner->deleteLater();
705 d->cleaner = nullptr;
706
707 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageDone);
708 d->ui->buttonRestart->hide();
709 d->ui->buttonRemoveSnapshots->hide();
710}

References d.

◆ onComboProfileIndexChanged

void RecorderExport::onComboProfileIndexChanged ( int index)
privateslot

Definition at line 559 of file recorder_export.cpp.

560{
561 settings->profileIndex = index;
562 d->updateVideoFilePath();
564}

References d, RecorderExportSettings::profileIndex, RecorderExportConfig::setProfileIndex(), and settings.

◆ onEditVideoPathChanged

void RecorderExport::onEditVideoPathChanged ( const QString & videoFilePath)
privateslot

Definition at line 583 of file recorder_export.cpp.

584{
585 QFileInfo fileInfo(videoFilePath);
586 if (!fileInfo.isRelative())
587 settings->videoDirectory = fileInfo.absolutePath();
588 settings->videoFileName = fileInfo.completeBaseName();
589}

References settings, RecorderExportSettings::videoDirectory, and RecorderExportSettings::videoFileName.

◆ onFFMpegFinished

void RecorderExport::onFFMpegFinished ( )
privateslot

Definition at line 648 of file recorder_export.cpp.

649{
650 quint64 elapsed = d->elapsedTimer.elapsed();
651 d->ui->labelRenderTime->setText(d->formatDuration(elapsed));
652 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageDone);
653 d->ui->labelVideoPathDone->setText(settings->videoFilePath);
654 d->cleanupFFMpeg();
655}

References d, settings, and RecorderExportSettings::videoFilePath.

◆ onFFMpegFinishedWithError

void RecorderExport::onFFMpegFinishedWithError ( QString error)
privateslot

Definition at line 657 of file recorder_export.cpp.

658{
659 d->ui->stackedWidget->setCurrentIndex(ExportPageIndex::PageSettings);
660 QMessageBox::critical(this, windowTitle(), i18n("Export failed. FFmpeg message:") % "\n\n" % error);
661 d->cleanupFFMpeg();
662}

References d.

◆ onFFMpegProgressUpdated

void RecorderExport::onFFMpegProgressUpdated ( int frameNo)
privateslot

Definition at line 664 of file recorder_export.cpp.

665{
666 d->ui->progressExport->setValue(frameNo * 100 / (settings->framesCount * settings->fps / static_cast<float>(settings->inputFps)));
667}

References d, RecorderExportSettings::fps, RecorderExportSettings::framesCount, RecorderExportSettings::inputFps, and settings.

◆ onFFMpegStarted

void RecorderExport::onFFMpegStarted ( )
privateslot

Definition at line 642 of file recorder_export.cpp.

643{
644 d->ui->buttonCancelExport->setEnabled(true);
645 d->ui->labelStatus->setText(i18n("The timelapse video is being encoded..."));
646}

References d.

◆ onFirstFrameSecValueChanged

void RecorderExport::onFirstFrameSecValueChanged ( int value)
privateslot

Definition at line 473 of file recorder_export.cpp.

474{
477 d->updateVideoDuration();
478}
float value(const T *src, size_t ch)

References d, RecorderExportSettings::firstFrameSec, RecorderExportConfig::setFirstFrameSec(), settings, and value().

◆ onLastFrameSecValueChanged

void RecorderExport::onLastFrameSecValueChanged ( int value)
privateslot

◆ onSpinFpsValueChanged

void RecorderExport::onSpinFpsValueChanged ( int value)
privateslot

Definition at line 457 of file recorder_export.cpp.

458{
459 settings->fps = value;
460 RecorderExportConfig config(false);
461 config.setFps(value);
462 d->updateFps(config, false);
463 d->updateVideoDuration();
464}

References d, RecorderExportSettings::fps, RecorderExportConfig::setFps(), settings, and value().

◆ onSpinInputFpsValueChanged

void RecorderExport::onSpinInputFpsValueChanged ( int value)
privateslot

Definition at line 448 of file recorder_export.cpp.

449{
451 RecorderExportConfig config(false);
452 config.setInputFps(value);
453 d->updateFps(config, true);
454 d->updateVideoDuration();
455}

References d, RecorderExportSettings::inputFps, RecorderExportConfig::setInputFps(), settings, and value().

◆ onSpinScaleHeightValueChanged

void RecorderExport::onSpinScaleHeightValueChanged ( int value)
privateslot

Definition at line 508 of file recorder_export.cpp.

509{
510 settings->size.setHeight(value);
511 if (settings->lockRatio)
512 d->updateRatio(false);
514}
void setSize(const QSize &value)

References d, RecorderExportSettings::lockRatio, RecorderExportConfig::setSize(), settings, RecorderExportSettings::size, and value().

◆ onSpinScaleWidthValueChanged

void RecorderExport::onSpinScaleWidthValueChanged ( int value)
privateslot

Definition at line 500 of file recorder_export.cpp.

501{
502 settings->size.setWidth(value);
503 if (settings->lockRatio)
504 d->updateRatio(true);
506}

References d, RecorderExportSettings::lockRatio, RecorderExportConfig::setSize(), settings, RecorderExportSettings::size, and value().

◆ reject

void RecorderExport::reject ( )
overrideprivateslot

Definition at line 432 of file recorder_export.cpp.

433{
434 if (d->tryAbortExport())
435 QDialog::reject();
436}

References d.

◆ setup()

void RecorderExport::setup ( )

Definition at line 381 of file recorder_export.cpp.

382{
383 RecorderExportConfig config(true);
384 d->updateFps(config);
385 d->updateFrameInfo();
386
387 if (settings->framesCount == 0) {
388 d->ui->labelRecordInfo->setText(i18nc("Can't export recording because nothing to export", "No frames to export"));
389 d->ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
390 } else {
391 d->ui->labelRecordInfo->setText(QString("%1: %2x%3 %4, %5 %6")
392 .arg(i18nc("General information about recording", "Recording info"))
393 .arg(settings->imageSize.width())
394 .arg(settings->imageSize.height())
395 .arg(i18nc("Pixel dimension suffix", "px"))
396 .arg(settings->framesCount)
397 .arg(i18nc("The suffix after number of frames", "frame(s)"))
398 );
399 }
400
401
402 // Don't load lockFps flag from config, if liveCaptureMode was just set by the user
403 config.loadConfiguration(settings, !settings->realTimeCaptureModeWasSet);
405
406 d->ui->spinInputFps->setValue(settings->inputFps);
407 d->ui->spinFps->setValue(settings->fps);
408 d->ui->resultPreviewCheckBox->setChecked(settings->resultPreview);
409 d->ui->spinFirstFrameSec->setValue(settings->firstFrameSec);
410 d->ui->extendResultCheckBox->setChecked(settings->extendResult);
411 d->ui->spinLastFrameSec->setValue(settings->lastFrameSec);
412 d->ui->checkResize->setChecked(settings->resize);
413 d->ui->spinScaleWidth->setValue(settings->size.width());
414 d->ui->spinScaleHeight->setValue(settings->size.height());
415 d->ui->buttonLockRatio->setChecked(settings->lockRatio);
416 d->ui->buttonLockRatio->setIcon(settings->lockRatio ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
417 d->ui->labelRealTimeCaptureNotion->setVisible(settings->realTimeCaptureMode);
418 d->ui->buttonLockFps->setChecked(settings->lockFps);
419 d->ui->buttonLockFps->setIcon(settings->lockFps ? KisIconUtils::loadIcon("locked") : KisIconUtils::loadIcon("unlocked"));
420 d->fillComboProfiles();
421 d->checkFfmpeg();
422 d->updateVideoFilePath();
423 d->updateVideoDuration();
424}

References d, RecorderExportSettings::extendResult, RecorderExportSettings::firstFrameSec, RecorderExportSettings::fps, RecorderExportSettings::framesCount, RecorderExportSettings::imageSize, RecorderExportSettings::inputFps, RecorderExportSettings::lastFrameSec, RecorderExportConfig::loadConfiguration(), KisIconUtils::loadIcon(), RecorderExportSettings::lockFps, RecorderExportSettings::lockRatio, RecorderExportSettings::realTimeCaptureMode, RecorderExportSettings::realTimeCaptureModeWasSet, RecorderExportSettings::resize, RecorderExportSettings::resultPreview, settings, and RecorderExportSettings::size.

Member Data Documentation

◆ d

QScopedPointer<Private> RecorderExport::d
private

Definition at line 72 of file recorder_export.h.

◆ settings

RecorderExportSettings* RecorderExport::settings
private

Definition at line 71 of file recorder_export.h.


The documentation for this class was generated from the following files: