File indexing completed on 2024-04-28 15:40:12
0001 /* SPDX-FileCopyrightText: 2003-2020 Jesper K. Pedersen <blackie@kde.org> 0002 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "DeleteDialog.h" 0007 0008 #include <Utilities/DeleteFiles.h> 0009 0010 #include <KLocalizedString> 0011 #include <QDialogButtonBox> 0012 #include <QPushButton> 0013 #include <QVBoxLayout> 0014 #include <qcheckbox.h> 0015 #include <qlabel.h> 0016 #include <qlayout.h> 0017 0018 using namespace MainWindow; 0019 0020 DeleteDialog::DeleteDialog(QWidget *parent) 0021 : QDialog(parent) 0022 , m_list() 0023 { 0024 setWindowTitle(i18nc("@title:window", "Removing Items")); 0025 QVBoxLayout *mainLayout = new QVBoxLayout; 0026 setLayout(mainLayout); 0027 0028 QWidget *top = new QWidget; 0029 QVBoxLayout *lay1 = new QVBoxLayout(top); 0030 mainLayout->addWidget(top); 0031 0032 m_label = new QLabel; 0033 lay1->addWidget(m_label); 0034 0035 m_useTrash = new QRadioButton; 0036 lay1->addWidget(m_useTrash); 0037 0038 m_deleteFile = new QRadioButton; 0039 lay1->addWidget(m_deleteFile); 0040 0041 m_deleteFromDb = new QRadioButton; 0042 lay1->addWidget(m_deleteFromDb); 0043 0044 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); 0045 buttonBox->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return); 0046 connect(buttonBox, &QDialogButtonBox::accepted, this, &DeleteDialog::deleteImages); 0047 connect(buttonBox, &QDialogButtonBox::rejected, this, &DeleteDialog::reject); 0048 mainLayout->addWidget(buttonBox); 0049 } 0050 0051 int DeleteDialog::exec(const DB::FileNameList &list) 0052 { 0053 if (!list.size()) 0054 return 0; 0055 0056 bool someFileExists = false; 0057 for (const DB::FileName &file : list) { 0058 if (file.exists()) { 0059 someFileExists = true; 0060 break; 0061 } 0062 } 0063 0064 const QString msg1 = i18np("Removing 1 item", "Removing %1 items", list.size()); 0065 const QString msg2 = i18np("Selected item will be removed from the database.<br/>What do you want to do with the file on disk?", 0066 "Selected %1 items will be removed from the database.<br/>What do you want to do with the files on disk?", 0067 list.size()); 0068 0069 const QString txt = QString::fromLatin1("<p><b><center><font size=\"+3\">%1</font><br/>%2</center></b></p>").arg(msg1, msg2); 0070 0071 m_useTrash->setText(i18np("Move file to Trash", "Move %1 files to Trash", list.size())); 0072 m_deleteFile->setText(i18np("Delete file from disk", "Delete %1 files from disk", list.size())); 0073 m_deleteFromDb->setText(i18np("Only remove the item from database", "Only remove %1 items from database", list.size())); 0074 0075 m_label->setText(txt); 0076 m_list = list; 0077 0078 // disable trash/delete options if files don't exist 0079 m_useTrash->setChecked(someFileExists); 0080 m_useTrash->setEnabled(someFileExists); 0081 m_deleteFile->setEnabled(someFileExists); 0082 m_deleteFromDb->setChecked(!someFileExists); 0083 0084 return QDialog::exec(); 0085 } 0086 0087 void DeleteDialog::deleteImages() 0088 { 0089 bool anyDeleted = Utilities::DeleteFiles::deleteFiles(m_list, m_deleteFile->isChecked() ? Utilities::DeleteFromDisk : m_useTrash->isChecked() ? Utilities::MoveToTrash 0090 : Utilities::BlockFromDatabase); 0091 if (anyDeleted) 0092 accept(); 0093 else 0094 reject(); 0095 } 0096 0097 // vi:expandtab:tabstop=4 shiftwidth=4: 0098 0099 #include "moc_DeleteDialog.cpp"