File indexing completed on 2025-02-02 04:11:26
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 #include "stalefiles_dialog.hpp" 0007 #include "ui_stalefiles_dialog.h" 0008 #include <QEvent> 0009 #include <QFileInfo> 0010 0011 using namespace glaxnimate::gui; 0012 0013 class StalefilesDialog::Private 0014 { 0015 public: 0016 Ui::StalefilesDialog ui; 0017 QList<KAutoSaveFile*> stale; 0018 KAutoSaveFile* current = nullptr; 0019 int index = -1; 0020 }; 0021 0022 StalefilesDialog::StalefilesDialog(const QList<KAutoSaveFile*>& stale, QWidget* parent) 0023 : QDialog(parent), d(std::make_unique<Private>()) 0024 { 0025 d->ui.setupUi(this); 0026 d->stale = stale; 0027 for ( const auto& file : stale ) 0028 { 0029 QFileInfo finfo(file->managedFile().toString()); 0030 auto item = new QListWidgetItem(finfo.fileName(), d->ui.list_widget); 0031 item->setToolTip(finfo.filePath()); 0032 } 0033 } 0034 0035 StalefilesDialog::~StalefilesDialog() = default; 0036 0037 void StalefilesDialog::changeEvent ( QEvent* e ) 0038 { 0039 QWidget::changeEvent(e); 0040 0041 if ( e->type() == QEvent::LanguageChange) 0042 { 0043 d->ui.retranslateUi(this); 0044 } 0045 } 0046 0047 void glaxnimate::gui::StalefilesDialog::current_changed(int index) 0048 { 0049 d->index = index; 0050 if ( index >= 0 && index < d->stale.size() ) 0051 d->current = d->stale[index]; 0052 else 0053 d->current = nullptr; 0054 0055 d->ui.button_open->setEnabled(d->current); 0056 d->ui.button_delete->setEnabled(d->current); 0057 } 0058 0059 void glaxnimate::gui::StalefilesDialog::delete_all() 0060 { 0061 for ( auto stale : d->stale ) 0062 { 0063 stale->remove(); 0064 delete stale; 0065 } 0066 d->index = -1; 0067 d->current = nullptr; 0068 d->stale.clear(); 0069 reject(); 0070 } 0071 0072 void glaxnimate::gui::StalefilesDialog::delete_selected() 0073 { 0074 if ( d->current ) 0075 { 0076 d->current->remove(); 0077 d->stale.removeAt(d->index); 0078 delete d->current; 0079 int row = d->index; 0080 d->index = -1; 0081 d->current = nullptr; 0082 d->ui.list_widget->takeItem(row); 0083 if ( d->stale.size() == 0 ) 0084 reject(); 0085 } 0086 } 0087 0088 KAutoSaveFile * glaxnimate::gui::StalefilesDialog::selected() const 0089 { 0090 return d->current; 0091 } 0092 0093 0094 void glaxnimate::gui::StalefilesDialog::cleanup(KAutoSaveFile* keep) 0095 { 0096 for ( auto stale : d->stale ) 0097 { 0098 if ( stale != keep ) 0099 delete stale; 0100 } 0101 }