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

#include <recorder_snapshots_manager.h>

+ Inheritance diagram for RecorderSnapshotsManager:

Public Member Functions

void execFor (const QString &snapshotsDirectory)
 
 RecorderSnapshotsManager (QWidget *parent=nullptr)
 
 ~RecorderSnapshotsManager ()
 

Protected Member Functions

void closeEvent (QCloseEvent *event) override
 

Private Slots

void onButtonCancelCleanUpClicked ()
 
void onButtonCleanUpClicked ()
 
void onButtonSelectAllClicked ()
 
void onCleanUpFinished ()
 
void onScanningFinished (SnapshotDirInfoList snapshots)
 
void onSelectionChanged (const QItemSelection &selected, const QItemSelection &deselected)
 
void reject () override
 

Private Member Functions

void abortCleanUp ()
 
void startScanning ()
 
void updateSpaceToBeFreed ()
 

Private Attributes

RecorderDirectoryCleanercleaner
 
QPushButton * cleanUpButton
 
RecorderSnapshotsScannerscanner
 
Ui::RecorderSnapshotsManager * ui
 

Detailed Description

Definition at line 21 of file recorder_snapshots_manager.h.

Constructor & Destructor Documentation

◆ RecorderSnapshotsManager()

RecorderSnapshotsManager::RecorderSnapshotsManager ( QWidget * parent = nullptr)

Definition at line 75 of file recorder_snapshots_manager.cpp.

76 : QDialog(parent)
77 , ui(new Ui::RecorderSnapshotsManager)
79 , cleaner(nullptr)
80{
81 ui->setupUi(this);
82 cleanUpButton = new QPushButton(i18n("Clean Up"), ui->buttonBox);
83 ui->buttonBox->addButton(cleanUpButton, QDialogButtonBox::ActionRole);
84
85 ui->stackedWidget->setCurrentIndex(PageProgress);
86
87 connect(scanner, SIGNAL(scanningFinished(SnapshotDirInfoList)),
89 connect(ui->buttonSelectAll, SIGNAL(clicked()), this, SLOT(onButtonSelectAllClicked()));
90 connect(cleanUpButton, SIGNAL(clicked()), this, SLOT(onButtonCleanUpClicked()));
91 connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
92}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
RecorderDirectoryCleaner * cleaner
void onScanningFinished(SnapshotDirInfoList snapshots)
RecorderSnapshotsScanner * scanner
Ui::RecorderSnapshotsManager * ui

References cleanUpButton, connect(), onButtonCleanUpClicked(), onButtonSelectAllClicked(), onScanningFinished(), scanner, and ui.

◆ ~RecorderSnapshotsManager()

RecorderSnapshotsManager::~RecorderSnapshotsManager ( )

Definition at line 94 of file recorder_snapshots_manager.cpp.

95{
96 delete scanner;
97 delete ui;
98}

References scanner, and ui.

Member Function Documentation

◆ abortCleanUp()

void RecorderSnapshotsManager::abortCleanUp ( )
private

Definition at line 198 of file recorder_snapshots_manager.cpp.

199{
200 if (cleaner == nullptr)
201 return;
202
203 cleaner->stop();
204 cleaner->deleteLater();
205 cleaner = nullptr;
206}

References cleaner, and RecorderDirectoryCleaner::stop().

◆ closeEvent()

void RecorderSnapshotsManager::closeEvent ( QCloseEvent * event)
overrideprotected

Definition at line 107 of file recorder_snapshots_manager.cpp.

108{
109 abortCleanUp();
110 QDialog::closeEvent(event);
111}

References abortCleanUp().

◆ execFor()

void RecorderSnapshotsManager::execFor ( const QString & snapshotsDirectory)

Definition at line 100 of file recorder_snapshots_manager.cpp.

101{
102 scanner->setup(snapshotsDirectory);
104 exec();
105}
void setup(const QString &snapshotDirectory)

References scanner, RecorderSnapshotsScanner::setup(), and startScanning().

◆ onButtonCancelCleanUpClicked

void RecorderSnapshotsManager::onButtonCancelCleanUpClicked ( )
privateslot

Definition at line 245 of file recorder_snapshots_manager.cpp.

246{
247 abortCleanUp();
249}

References abortCleanUp(), and startScanning().

◆ onButtonCleanUpClicked

void RecorderSnapshotsManager::onButtonCleanUpClicked ( )
privateslot

Definition at line 221 of file recorder_snapshots_manager.cpp.

222{
223 const QString confirmation(i18n("The selected recordings will be deleted"
224 " and you will not be able to export a timelapse for them again"
225 " (the already exported timelapses will be preserved though)."
226 "\nDo you wish to continue?"));
227 if (QMessageBox::question(this, windowTitle(), confirmation) != QMessageBox::Yes)
228 return;
229
230 QStringList directories;
231 const QModelIndexList &indexes = ui->treeDirectories->selectionModel()->selectedRows(ColumnName);
232 QAbstractItemModel *model = ui->treeDirectories->model();
233 for (const QModelIndex &index : indexes)
234 directories.append(model->data(index, valueRole).toString());
235
236 ui->labelProgress->setText(i18nc("Label title, Snapshot directory deleting is in progress", "Cleaning up..."));
237 ui->stackedWidget->setCurrentIndex(PageProgress);
238
239 Q_ASSERT(cleaner == nullptr);
240 cleaner = new RecorderDirectoryCleaner(directories);
241 connect(cleaner, SIGNAL(finished()), this, SLOT(onCleanUpFinished()));
242 cleaner->start();
243}
QString toString(const QString &value)

References cleaner, connect(), onCleanUpFinished(), and ui.

◆ onButtonSelectAllClicked

void RecorderSnapshotsManager::onButtonSelectAllClicked ( )
privateslot

Definition at line 208 of file recorder_snapshots_manager.cpp.

209{
210 const QModelIndexList &selectedIndexes = ui->treeDirectories->selectionModel()->selectedRows(ColumnCheck);
211 QAbstractItemModel *model = ui->treeDirectories->model();
212 int rowCount = model->rowCount();
213 bool selectAll = selectedIndexes.size() != rowCount;
214 if (selectAll) {
215 ui->treeDirectories->selectAll();
216 } else {
217 ui->treeDirectories->clearSelection();
218 }
219}
QAction * selectAll(const QObject *recvr, const char *slot, QObject *parent)

References ui.

◆ onCleanUpFinished

void RecorderSnapshotsManager::onCleanUpFinished ( )
privateslot

Definition at line 251 of file recorder_snapshots_manager.cpp.

252{
253 cleaner->deleteLater();
254 cleaner = nullptr;
255
257}

References cleaner, and startScanning().

◆ onScanningFinished

void RecorderSnapshotsManager::onScanningFinished ( SnapshotDirInfoList snapshots)
privateslot

Definition at line 119 of file recorder_snapshots_manager.cpp.

120{
121 QStandardItemModel *model = new QStandardItemModel(this);
122 model->setColumnCount(ColumnCount);
123
124 QLocale locale = this->locale();
125 const QString &dateFormat = locale.dateTimeFormat(QLocale::ShortFormat);
126 for (const SnapshotDirInfo &info : snapshots) {
127 QStandardItem *nameCol = new QStandardItem(info.name);
128 nameCol->setData(info.path, valueRole);
129 model->appendRow({
130 new CheckedIconItem(info.thumbnail, ui->treeDirectories->iconSize()),
131 nameCol,
132 new DataSortedItem(locale.formattedDataSize(info.size), info.size),
133 new DataSortedItem(info.dateTime.toString(dateFormat), info.dateTime.toMSecsSinceEpoch())
134 });
135 }
136
137 model->setHorizontalHeaderItem(ColumnCheck,
138 new QStandardItem(i18nc("Header title for preview thumbnail", "Preview")));
139 model->setHorizontalHeaderItem(ColumnName,
140 new QStandardItem(i18nc("Header title for directory name column", "Name")));
141 model->setHorizontalHeaderItem(ColumnSize,
142 new QStandardItem(i18nc("Header title for size of directory column", "Size")));
143 model->setHorizontalHeaderItem(ColumnDate,
144 new QStandardItem(i18nc("Header title for last modified date/time column", "Last Modified")));
145
146 QAbstractItemModel *oldModel = ui->treeDirectories->model();
147 QItemSelectionModel *oldSelectionModel = ui->treeDirectories->selectionModel();
148 ui->treeDirectories->setModel(model);
149 if (oldModel != nullptr)
150 oldModel->deleteLater();
151 if (oldSelectionModel != nullptr)
152 oldSelectionModel->deleteLater();
153
154 cleanUpButton->setEnabled(false);
155 ui->stackedWidget->setCurrentIndex(PageSelection);
156
157 for(int col = 0; col < (ColumnCount - 1); ++col) {
158 ui->treeDirectories->resizeColumnToContents(col);
159 const int colWidth = ui->treeDirectories->columnWidth(col);
160 ui->treeDirectories->setColumnWidth(col, colWidth + defaultColumnMargin);
161 }
162
163 connect(ui->treeDirectories->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
164 this, SLOT(onSelectionChanged(QItemSelection,QItemSelection)), Qt::UniqueConnection);
165}
void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

References cleanUpButton, connect(), onSelectionChanged(), and ui.

◆ onSelectionChanged

void RecorderSnapshotsManager::onSelectionChanged ( const QItemSelection & selected,
const QItemSelection & deselected )
privateslot

Definition at line 167 of file recorder_snapshots_manager.cpp.

168{
169 QAbstractItemModel *model = ui->treeDirectories->model();
170 for (const QModelIndex &index : selected.indexes())
171 model->setData(index.sibling(index.row(), ColumnCheck), Qt::Checked, Qt::CheckStateRole);
172 for (const QModelIndex &index : deselected.indexes())
173 model->setData(index.sibling(index.row(), ColumnCheck), Qt::Unchecked, Qt::CheckStateRole);
174
175 cleanUpButton->setEnabled(!ui->treeDirectories->selectionModel()->selectedIndexes().isEmpty());
176
178}

References cleanUpButton, ui, and updateSpaceToBeFreed().

◆ reject

void RecorderSnapshotsManager::reject ( )
overrideprivateslot

Definition at line 113 of file recorder_snapshots_manager.cpp.

114{
115 abortCleanUp();
116 QDialog::reject();
117}

References abortCleanUp().

◆ startScanning()

void RecorderSnapshotsManager::startScanning ( )
private

Definition at line 180 of file recorder_snapshots_manager.cpp.

181{
182 ui->labelProgress->setText(i18nc("Label title, Scanning for directory, files, etc..", "Scanning..."));
183 ui->stackedWidget->setCurrentIndex(PageProgress);
184 scanner->start();
185}

References scanner, and ui.

◆ updateSpaceToBeFreed()

void RecorderSnapshotsManager::updateSpaceToBeFreed ( )
private

Definition at line 187 of file recorder_snapshots_manager.cpp.

188{
189 const QModelIndexList &indexes = ui->treeDirectories->selectionModel()->selectedRows(ColumnSize);
190 qulonglong totalSize = 0;
191 QAbstractItemModel *model = ui->treeDirectories->model();
192 for (const QModelIndex &index : indexes)
193 totalSize += model->data(index, valueRole).toULongLong();
194 ui->labelSpace->setText(locale().formattedDataSize(totalSize));
195 ui->buttonSelectAll->setText(indexes.size() != model->rowCount() ? i18n("Select All") : i18n("Select None"));
196}

References ui.

Member Data Documentation

◆ cleaner

RecorderDirectoryCleaner* RecorderSnapshotsManager::cleaner
private

Definition at line 52 of file recorder_snapshots_manager.h.

◆ cleanUpButton

QPushButton* RecorderSnapshotsManager::cleanUpButton
private

Definition at line 53 of file recorder_snapshots_manager.h.

◆ scanner

RecorderSnapshotsScanner* RecorderSnapshotsManager::scanner
private

Definition at line 51 of file recorder_snapshots_manager.h.

◆ ui

Ui::RecorderSnapshotsManager* RecorderSnapshotsManager::ui
private

Definition at line 50 of file recorder_snapshots_manager.h.


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