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

#include <recorderdocker_dock.h>

+ Inheritance diagram for RecorderDockerDock:

Classes

class  Private
 

Public Member Functions

QString observerName () override
 
 RecorderDockerDock ()
 
void setCanvas (KoCanvasBase *canvas) override
 
void unsetCanvas () override
 
 ~RecorderDockerDock ()
 
- Public Member Functions inherited from KoCanvasObserverBase
 KoCanvasObserverBase ()
 
KoCanvasBaseobservedCanvas () const
 
void setObservedCanvas (KoCanvasBase *canvas)
 
void unsetObservedCanvas ()
 
virtual ~KoCanvasObserverBase ()
 

Private Slots

void onActiveRecording (bool valueWasIncreased)
 
void onAutoRecordToggled (bool checked)
 
void onCaptureIntervalChanged (double interval)
 
void onExportButtonClicked ()
 
void onFormatChanged (int format)
 
void onLowPerformanceWarning ()
 
void onMainWindowIsBeingCreated (KisMainWindow *window)
 
void onManageRecordingsButtonClicked ()
 
void onPausedTimeout ()
 
void onQualityChanged (int value)
 
void onRealTimeCaptureModeToggled (bool checked)
 
bool onRecordButtonToggled (bool checked)
 
void onRecorderStopWarning ()
 
void onRecordIsolateLayerModeToggled (bool checked)
 
void onResolutionChanged (int resolution)
 
void onSelectRecordFolderButtonClicked ()
 
void onThreadsChanged (int threads)
 
void onUpdateRecIndicator ()
 
void onVideoFPSChanged (double interval)
 
void onWarningTimeout ()
 
void onWriterFrameWriteFailed ()
 
void onWriterStarted ()
 
void onWriterStopped ()
 
void slotScrollerStateChanged (QScroller::State state)
 

Private Attributes

Private *const d
 
RecorderExportSettings *const exportSettings
 

Additional Inherited Members

Detailed Description

Definition at line 19 of file recorderdocker_dock.h.

Constructor & Destructor Documentation

◆ RecorderDockerDock()

RecorderDockerDock::RecorderDockerDock ( )

Definition at line 361 of file recorderdocker_dock.cpp.

362 : QDockWidget(i18nc("Title of the docker", "Recorder"))
364 , d(new Private(*exportSettings, this))
365{
366 QWidget* page = new QWidget(this);
367 d->ui->setupUi(page);
368
369 d->ui->buttonManageRecordings->setIcon(KisIconUtils::loadIcon("configure-thicker"));
370 d->ui->buttonBrowse->setIcon(KisIconUtils::loadIcon("folder"));
371 d->ui->buttonRecordToggle->setIcon(KisIconUtils::loadIcon("media-record"));
372 d->ui->buttonExport->setIcon(KisIconUtils::loadIcon("document-export-16"));
373 d->ui->sliderThreads->setTickPosition(QSlider::TickPosition::TicksBelow);
374 d->ui->sliderThreads->setMinimum(1);
375 d->ui->sliderThreads->setMaximum(ThreadSystemValue::MaxThreadCount);
376 d->ui->spinThreads->setMinimum(1);
377 d->ui->spinThreads->setMaximum(ThreadSystemValue::MaxThreadCount);
378 d->threadsSpinPalette = d->ui->spinThreads->palette();
379 d->threadsSliderPalette = d->ui->sliderThreads->palette();
380
381 d->loadSettings();
383 d->updateThreadUi();
384
385 d->ui->editDirectory->setText(d->snapshotDirectory);
386 d->ui->spinQuality->setValue(d->quality);
387 d->ui->spinThreads->setValue(d->writer.recorderThreads.get());
388 d->ui->comboResolution->setCurrentIndex(d->resolution);
389 d->ui->checkBoxRealTimeCaptureMode->setChecked(d->realTimeCaptureMode);
390 d->ui->checkBoxRecordIsolateMode->setChecked(d->recordIsolateLayerMode);
391 d->ui->checkBoxAutoRecord->setChecked(d->recordAutomatically);
392
394 d->recordToggleAction = actionRegistry->makeQAction(keyActionRecordToggle, this);
395 d->exportAction = actionRegistry->makeQAction(keyActionExport, this);
396
397 connect(d->recordToggleAction, SIGNAL(toggled(bool)), d->ui->buttonRecordToggle, SLOT(setChecked(bool)));
398 connect(d->exportAction, SIGNAL(triggered()), d->ui->buttonExport, SIGNAL(clicked()));
399 connect(d->ui->buttonRecordToggle, SIGNAL(toggled(bool)), d->ui->buttonExport, SLOT(setDisabled(bool)));
401 d->ui->buttonExport->setDisabled(true);
402
403 // Need to register toolbar actions before attaching canvas else it wont appear after restart.
404 // Is there any better way to do this?
405 connect(KisPart::instance(), SIGNAL(sigMainWindowIsBeingCreated(KisMainWindow *)),
407
408 connect(d->ui->buttonManageRecordings, SIGNAL(clicked()), this, SLOT(onManageRecordingsButtonClicked()));
409 connect(d->ui->buttonBrowse, SIGNAL(clicked()), this, SLOT(onSelectRecordFolderButtonClicked()));
410 connect(d->ui->comboFormat, SIGNAL(currentIndexChanged(int)), this, SLOT(onFormatChanged(int)));
411 connect(d->ui->spinQuality, SIGNAL(valueChanged(int)), this, SLOT(onQualityChanged(int)));
412 connect(d->ui->spinThreads, SIGNAL(valueChanged(int)), this, SLOT(onThreadsChanged(int)));
413 connect(d->ui->comboResolution, SIGNAL(currentIndexChanged(int)), this, SLOT(onResolutionChanged(int)));
414 connect(d->ui->checkBoxRealTimeCaptureMode, SIGNAL(toggled(bool)), this, SLOT(onRealTimeCaptureModeToggled(bool)));
415 connect(d->ui->checkBoxRecordIsolateMode, SIGNAL(toggled(bool)), this, SLOT(onRecordIsolateLayerModeToggled(bool)));
416 connect(d->ui->checkBoxAutoRecord, SIGNAL(toggled(bool)), this, SLOT(onAutoRecordToggled(bool)));
417 connect(d->ui->buttonRecordToggle, SIGNAL(toggled(bool)), this, SLOT(onRecordButtonToggled(bool)));
418 connect(d->ui->buttonExport, SIGNAL(clicked()), this, SLOT(onExportButtonClicked()));
419
420 connect(&d->writer.recorderThreads, SIGNAL(notifyInUseChange(bool)), this, SLOT(onActiveRecording(bool)));
421 connect(&d->writer.recorderThreads, SIGNAL(notifyInUseChange(bool)), this, SLOT(onUpdateRecIndicator()));
422 connect(&d->writer, SIGNAL(started()), this, SLOT(onWriterStarted()));
423 connect(&d->writer, SIGNAL(stopped()), this, SLOT(onWriterStopped()));
424 connect(&d->writer, SIGNAL(frameWriteFailed()), this, SLOT(onWriterFrameWriteFailed()));
425 connect(&d->writer, SIGNAL(recorderStopWarning()), this, SLOT(onRecorderStopWarning()));
426 connect(&d->writer, SIGNAL(lowPerformanceWarning()), this, SLOT(onLowPerformanceWarning()));
427
428
429 QScroller *scroller = KisKineticScroller::createPreconfiguredScroller(d->ui->scrollArea);
430 if (scroller) {
431 connect(scroller, SIGNAL(stateChanged(QScroller::State)),
432 this, SLOT(slotScrollerStateChanged(QScroller::State)));
433 }
434
435 // The system is not efficient enough for the RealTime Recording Feature
437 {
438 d->ui->checkBoxRealTimeCaptureMode->setCheckState(Qt::Unchecked);
439 d->ui->checkBoxRealTimeCaptureMode->setDisabled(true);
440 d->ui->checkBoxRealTimeCaptureMode->setToolTip(
441 i18n("Your system is not efficient enough for this feature"));
442 }
443
444 setWidget(page);
445}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QAction * makeQAction(const QString &name, QObject *parent=0)
static KisActionRegistry * instance()
Main window for Krita.
static KisPart * instance()
Definition KisPart.cpp:131
QScopedPointer< Ui::RecorderDocker > ui
void slotScrollerStateChanged(QScroller::State state)
RecorderExportSettings *const exportSettings
void onThreadsChanged(int threads)
void onQualityChanged(int value)
void onRecordIsolateLayerModeToggled(bool checked)
void onRealTimeCaptureModeToggled(bool checked)
void onResolutionChanged(int resolution)
bool onRecordButtonToggled(bool checked)
void onAutoRecordToggled(bool checked)
void onActiveRecording(bool valueWasIncreased)
void onMainWindowIsBeingCreated(KisMainWindow *window)
void onFormatChanged(int format)
ThreadCounter recorderThreads
unsigned int get() const
QIcon loadIcon(const QString &name)
KRITAWIDGETUTILS_EXPORT QScroller * createPreconfiguredScroller(QAbstractScrollArea *target)
const unsigned int MaxThreadCount
const unsigned int MaxRecordThreadCount

References connect(), KisKineticScroller::createPreconfiguredScroller(), d, RecorderDockerDock::Private::exportAction, ThreadCounter::get(), KisPart::instance(), KisActionRegistry::instance(), KisIconUtils::loadIcon(), RecorderDockerDock::Private::loadRelevantExportSettings(), RecorderDockerDock::Private::loadSettings(), KisActionRegistry::makeQAction(), ThreadSystemValue::MaxRecordThreadCount, ThreadSystemValue::MaxThreadCount, onActiveRecording(), onAutoRecordToggled(), onExportButtonClicked(), onFormatChanged(), onLowPerformanceWarning(), onMainWindowIsBeingCreated(), onManageRecordingsButtonClicked(), onQualityChanged(), onRealTimeCaptureModeToggled(), onRecordButtonToggled(), onRecorderStopWarning(), onRecordIsolateLayerModeToggled(), onResolutionChanged(), onSelectRecordFolderButtonClicked(), onThreadsChanged(), onUpdateRecIndicator(), onWriterFrameWriteFailed(), onWriterStarted(), onWriterStopped(), RecorderDockerDock::Private::quality, RecorderDockerDock::Private::realTimeCaptureMode, RecorderDockerDock::Private::recordAutomatically, RecorderWriterManager::recorderThreads, RecorderDockerDock::Private::recordIsolateLayerMode, RecorderDockerDock::Private::recordToggleAction, RecorderDockerDock::Private::resolution, slotScrollerStateChanged(), RecorderDockerDock::Private::snapshotDirectory, RecorderDockerDock::Private::threadsSliderPalette, RecorderDockerDock::Private::threadsSpinPalette, RecorderDockerDock::Private::ui, RecorderDockerDock::Private::updateThreadUi(), and RecorderDockerDock::Private::writer.

◆ ~RecorderDockerDock()

RecorderDockerDock::~RecorderDockerDock ( )

Definition at line 447 of file recorderdocker_dock.cpp.

448{
449 delete d;
450 delete exportSettings;
451}

References d, and exportSettings.

Member Function Documentation

◆ observerName()

QString RecorderDockerDock::observerName ( )
inlineoverridevirtual

Reimplemented from KoCanvasObserverBase.

Definition at line 25 of file recorderdocker_dock.h.

26 {
27 return "RecorderDockerDock";
28 }

◆ onActiveRecording

void RecorderDockerDock::onActiveRecording ( bool valueWasIncreased)
privateslot

Definition at line 688 of file recorderdocker_dock.cpp.

689{
690 if (!valueWasIncreased)
691 return;
692
693 d->paused = false;
694 d->pausedTimer.start();
695}

References d, RecorderDockerDock::Private::paused, and RecorderDockerDock::Private::pausedTimer.

◆ onAutoRecordToggled

void RecorderDockerDock::onAutoRecordToggled ( bool checked)
privateslot

◆ onCaptureIntervalChanged

void RecorderDockerDock::onCaptureIntervalChanged ( double interval)
privateslot

◆ onExportButtonClicked

void RecorderDockerDock::onExportButtonClicked ( )
privateslot

Definition at line 554 of file recorderdocker_dock.cpp.

555{
556 if (!d->canvas)
557 return;
558
559 KisDocument *document = d->canvas->imageView()->document();
560
561 exportSettings->videoFileName = QFileInfo(document->caption().trimmed()).completeBaseName();
565
566 RecorderExport exportDialog(exportSettings, this);
567 exportDialog.setup();
568 exportDialog.exec();
569
571 d->ui->spinRate->setValue(exportSettings->fps);
572}

References RecorderDockerDock::Private::canvas, d, exportSettings, RecorderExportSettings::format, RecorderDockerDock::Private::format, RecorderExportSettings::fps, RecorderExportSettings::inputDirectory, RecorderDockerDock::Private::outputDirectory, RecorderExportSettings::realTimeCaptureMode, RecorderDockerDock::Private::realTimeCaptureMode, RecorderExport::setup(), RecorderDockerDock::Private::ui, and RecorderExportSettings::videoFileName.

◆ onFormatChanged

void RecorderDockerDock::onFormatChanged ( int format)
privateslot

◆ onLowPerformanceWarning

void RecorderDockerDock::onLowPerformanceWarning ( )
privateslot

Definition at line 714 of file recorderdocker_dock.cpp.

715{
716 if (d->realTimeCaptureMode) {
717 d->showWarning(i18n("Low performance warning. The recorder is not able to write all the frames in time during Real Time Capture mode.\nTry to reduce the frame rate for the ffmpeg export or reduce the scaling filtering in the canvas acceleration settings."));
718 } else {
719 d->showWarning(i18n("Low performance warning. The recorder is not able to write all the frames in time.\nTry to increase the capture interval or reduce the scaling filtering in the canvas acceleration settings."));
720 }
721}
void showWarning(const QString &hint)

References d, RecorderDockerDock::Private::realTimeCaptureMode, and RecorderDockerDock::Private::showWarning().

◆ onMainWindowIsBeingCreated

void RecorderDockerDock::onMainWindowIsBeingCreated ( KisMainWindow * window)
privateslot

Definition at line 496 of file recorderdocker_dock.cpp.

497{
498 KisKActionCollection *actionCollection = window->viewManager()->actionCollection();
499 actionCollection->addAction(keyActionRecordToggle, d->recordToggleAction);
500 actionCollection->addAction(keyActionExport, d->exportAction);
501}
A container for a set of QAction objects.
Q_INVOKABLE QAction * addAction(const QString &name, QAction *action)
KisViewManager * viewManager
virtual KisKActionCollection * actionCollection() const

References KisViewManager::actionCollection(), KisKActionCollection::addAction(), d, RecorderDockerDock::Private::exportAction, RecorderDockerDock::Private::recordToggleAction, and KisMainWindow::viewManager.

◆ onManageRecordingsButtonClicked

void RecorderDockerDock::onManageRecordingsButtonClicked ( )
privateslot

Definition at line 574 of file recorderdocker_dock.cpp.

575{
576 RecorderSnapshotsManager snapshotsManager(this);
577 snapshotsManager.execFor(d->snapshotDirectory);
578}

References d, RecorderSnapshotsManager::execFor(), and RecorderDockerDock::Private::snapshotDirectory.

◆ onPausedTimeout

void RecorderDockerDock::onPausedTimeout ( )
privateslot

◆ onQualityChanged

void RecorderDockerDock::onQualityChanged ( int value)
privateslot

◆ onRealTimeCaptureModeToggled

◆ onRecordButtonToggled

bool RecorderDockerDock::onRecordButtonToggled ( bool checked)
privateslot

Definition at line 503 of file recorderdocker_dock.cpp.

504{
505 QSignalBlocker blocker(d->ui->buttonRecordToggle);
506 d->recordToggleAction->setChecked(checked);
507
508 if (!d->canvas)
509 return false;
510
511 const QString &id = d->canvas->imageView()->document()->linkedResourcesStorageId();
512
513 bool wasEmpty = !d->enabledIds.values().contains(true);
514
515 d->enabledIds[id] = checked;
516
517 bool isEmpty = !d->enabledIds.values().contains(true);
518
519 d->writer.setEnabled(checked);
520
521 if (isEmpty == wasEmpty) {
522 d->updateRecordStatus(checked);
523 return false;
524 }
525
526
527 d->ui->buttonRecordToggle->setEnabled(false);
528
529 if (checked) {
531 d->updateUiFormat();
532 d->writer.start();
533
534 // Calculate Rec symbol activity timeout depending on the capture interval
535 // The pausedTimer interval is set to a slightly greater value than the capture interval
536 // to avoid flickering for ongoing painting. This is also the reason for the min and max
537 // values 305 and 2005 (instead of 300 and 2000, respectively).
538 if (d->realTimeCaptureMode) {
539 d->pausedTimer.setInterval(qBound(305, static_cast<int>(1000.0/static_cast<double>(exportSettings->fps)) + 5,2005));
540 } else {
541 d->pausedTimer.setInterval(qBound(305, static_cast<int>(qMax(d->captureInterval, .1) * 1000.0) + 5, 2005));
542 }
543 } else {
544 d->writer.stop();
545 d->warningTimer.stop();
546 d->pausedTimer.stop();
547 d->statusBarWarningLabel->hide();
548 d->paused = true;
549 }
550
551 return true;
552}
void updateRecordStatus(bool isRecording)
void start(bool toggleEnabled=true)
bool stop(bool toggleEnabled=true)
void setEnabled(bool enabled)

References RecorderDockerDock::Private::canvas, RecorderDockerDock::Private::captureInterval, d, RecorderDockerDock::Private::enabledIds, exportSettings, RecorderExportSettings::fps, RecorderDockerDock::Private::paused, RecorderDockerDock::Private::pausedTimer, RecorderDockerDock::Private::realTimeCaptureMode, RecorderDockerDock::Private::recordToggleAction, RecorderWriterManager::setEnabled(), RecorderWriterManager::start(), RecorderDockerDock::Private::statusBarWarningLabel, RecorderWriterManager::stop(), RecorderDockerDock::Private::ui, RecorderDockerDock::Private::updateRecordStatus(), RecorderDockerDock::Private::updateUiFormat(), RecorderDockerDock::Private::updateWriterSettings(), RecorderDockerDock::Private::warningTimer, and RecorderDockerDock::Private::writer.

◆ onRecorderStopWarning

void RecorderDockerDock::onRecorderStopWarning ( )
privateslot

Definition at line 709 of file recorderdocker_dock.cpp.

710{
711 QMessageBox::warning(this, i18nc("@title:window", "Recorder"),
712 i18n("Krita was unable to stop the recorder probably. Please try to restart Krita."));
713}

◆ onRecordIsolateLayerModeToggled

void RecorderDockerDock::onRecordIsolateLayerModeToggled ( bool checked)
privateslot

◆ onResolutionChanged

void RecorderDockerDock::onResolutionChanged ( int resolution)
privateslot

Definition at line 658 of file recorderdocker_dock.cpp.

659{
660 d->resolution = resolution;
661 RecorderConfig(false).setResolution(resolution);
662 d->loadSettings();
663}
void setResolution(int value)

References d, RecorderDockerDock::Private::loadSettings(), RecorderDockerDock::Private::resolution, and RecorderConfig::setResolution().

◆ onSelectRecordFolderButtonClicked

void RecorderDockerDock::onSelectRecordFolderButtonClicked ( )
privateslot

Definition at line 581 of file recorderdocker_dock.cpp.

582{
583 KoFileDialog dialog(this, KoFileDialog::OpenDirectory, "SelectRecordingsDirectory");
584 dialog.setCaption(i18n("Select a Directory for Recordings"));
585 dialog.setDefaultDir(d->ui->editDirectory->text());
586 QString directory = dialog.filename();
587 if (!directory.isEmpty()) {
588 d->ui->editDirectory->setText(directory);
589 RecorderConfig(false).setSnapshotDirectory(directory);
590 d->loadSettings();
591 }
592}
void setSnapshotDirectory(const QString &value)

References d, RecorderDockerDock::Private::loadSettings(), KoFileDialog::OpenDirectory, RecorderConfig::setSnapshotDirectory(), and RecorderDockerDock::Private::ui.

◆ onThreadsChanged

◆ onUpdateRecIndicator

void RecorderDockerDock::onUpdateRecIndicator ( )
privateslot

Definition at line 683 of file recorderdocker_dock.cpp.

684{
686}

References d, and RecorderDockerDock::Private::updateRecIndicator().

◆ onVideoFPSChanged

void RecorderDockerDock::onVideoFPSChanged ( double interval)
privateslot

◆ onWarningTimeout

void RecorderDockerDock::onWarningTimeout ( )
privateslot

Definition at line 723 of file recorderdocker_dock.cpp.

724{
725 d->statusBarWarningLabel->hide();
726}

References d, and RecorderDockerDock::Private::statusBarWarningLabel.

◆ onWriterFrameWriteFailed

void RecorderDockerDock::onWriterFrameWriteFailed ( )
privateslot

Definition at line 703 of file recorderdocker_dock.cpp.

704{
705 QMessageBox::warning(this, i18nc("@title:window", "Recorder"),
706 i18n("The recorder has been stopped due to failure while writing a frame. Please check free disk space and start the recorder again."));
707}

◆ onWriterStarted

void RecorderDockerDock::onWriterStarted ( )
privateslot

Definition at line 673 of file recorderdocker_dock.cpp.

674{
675 d->updateRecordStatus(true);
676}

References d, and RecorderDockerDock::Private::updateRecordStatus().

◆ onWriterStopped

void RecorderDockerDock::onWriterStopped ( )
privateslot

Definition at line 678 of file recorderdocker_dock.cpp.

679{
680 d->updateRecordStatus(false);
681}

References d, and RecorderDockerDock::Private::updateRecordStatus().

◆ setCanvas()

void RecorderDockerDock::setCanvas ( KoCanvasBase * canvas)
overridevirtual

re-implement this method in your canvas observer. It will be called whenever a canvas becomes active. Note that you are responsible for not connecting more than one time to the signals of a canvas or any of the QObjects you can access through the canvas.

Implements KoCanvasObserverBase.

Definition at line 453 of file recorderdocker_dock.cpp.

454{
455 setEnabled(canvas != nullptr);
456
457 if (d->canvas == canvas)
458 return;
459
460 d->canvas = dynamic_cast<KisCanvas2*>(canvas);
462
463 if (!d->canvas)
464 return;
465
466 KisDocument *document = d->canvas->imageView()->document();
467 d->updateComboResolution(document->image()->width(), document->image()->height());
468
469 d->prefix = d->getPrefix();
470 bool wasToggled = false;
471 if (d->recordAutomatically && !d->enabledIds.contains(document->linkedResourcesStorageId())) {
472 wasToggled = onRecordButtonToggled(true);
473 }
474 if (!wasToggled) { // onRecordButtonToggled(true) may call these, don't call them twice.
476 d->updateUiFormat();
477 }
479
480 bool enabled = d->enabledIds.value(document->linkedResourcesStorageId(), false);
481 d->writer.setEnabled(enabled);
482 d->updateRecordStatus(enabled);
483}
void updateComboResolution(quint32 width, quint32 height)
void setCanvas(QPointer< KisCanvas2 > canvas)

References RecorderDockerDock::Private::canvas, d, RecorderDockerDock::Private::enabledIds, RecorderDockerDock::Private::getPrefix(), onRecordButtonToggled(), RecorderDockerDock::Private::prefix, RecorderDockerDock::Private::recordAutomatically, RecorderWriterManager::setCanvas(), RecorderWriterManager::setEnabled(), RecorderDockerDock::Private::updateComboResolution(), RecorderDockerDock::Private::updateRecordStatus(), RecorderDockerDock::Private::updateUiFormat(), RecorderDockerDock::Private::updateUiForRealTimeMode(), RecorderDockerDock::Private::updateWriterSettings(), and RecorderDockerDock::Private::writer.

◆ slotScrollerStateChanged

void RecorderDockerDock::slotScrollerStateChanged ( QScroller::State state)
privateslot

Definition at line 728 of file recorderdocker_dock.cpp.

729{
731}
KRITAWIDGETUTILS_EXPORT void updateCursor(QWidget *source, QScroller::State state)

References KisKineticScroller::updateCursor().

◆ unsetCanvas()

void RecorderDockerDock::unsetCanvas ( )
overridevirtual

Re-implement to notify the observer that its canvas is no longer among the living. The daisies, it is pushing up. This means you don't have to disconnect, it's dead.

The old canvas should be deleted already, so if you stored a pointer to it, don't touch!

Note that currently there is a bug where in certain specific circumstances unsetCanvas can be called when it shouldn't, see for example KWStatisticsDocker for a workaround for this problem.

Implements KoCanvasObserverBase.

Definition at line 485 of file recorderdocker_dock.cpp.

486{
487 d->updateRecordStatus(false);
488 d->recordToggleAction->setChecked(false);
489 setEnabled(false);
490 d->writer.stop();
491 d->writer.setCanvas(nullptr);
492 d->canvas = nullptr;
493 d->enabledIds.clear();
494}

References RecorderDockerDock::Private::canvas, d, RecorderDockerDock::Private::enabledIds, RecorderDockerDock::Private::recordToggleAction, RecorderWriterManager::setCanvas(), RecorderWriterManager::stop(), RecorderDockerDock::Private::updateRecordStatus(), and RecorderDockerDock::Private::writer.

Member Data Documentation

◆ d

Private* const RecorderDockerDock::d
private

Definition at line 65 of file recorderdocker_dock.h.

◆ exportSettings

RecorderExportSettings* const RecorderDockerDock::exportSettings
private

Definition at line 64 of file recorderdocker_dock.h.


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