File indexing completed on 2024-04-28 05:46:32
0001 /* 0002 SPDX-FileCopyrightText: 2010 Volker Lanz <vl@fidra.de> 0003 SPDX-FileCopyrightText: 2014-2020 Andrius Štikonas <andrius@stikonas.eu> 0004 0005 SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #include "gui/filesystemsupportdialog.h" 0009 #include "gui/filesystemsupportdialogwidget.h" 0010 0011 #include <fs/filesystem.h> 0012 #include <fs/filesystemfactory.h> 0013 0014 #include <QDialogButtonBox> 0015 #include <QDialog> 0016 0017 #include <KConfigGroup> 0018 #include <KLocalizedString> 0019 #include <KSharedConfig> 0020 0021 /** Creates a new FileSystemSupportDialog 0022 @param parent the parent object 0023 */ 0024 FileSystemSupportDialog::FileSystemSupportDialog(QWidget* parent) : 0025 QDialog(parent), 0026 m_FileSystemSupportDialogWidget(new FileSystemSupportDialogWidget(this)) 0027 { 0028 QVBoxLayout *mainLayout = new QVBoxLayout(this); 0029 setLayout(mainLayout); 0030 mainLayout->addWidget(&dialogWidget()); 0031 setWindowTitle(xi18nc("@title:window", "File System Support")); 0032 dialogButtonBox = new QDialogButtonBox(this); 0033 dialogButtonBox -> setStandardButtons(QDialogButtonBox::Ok); 0034 mainLayout->addWidget(dialogButtonBox); 0035 0036 setupDialog(); 0037 setupConnections(); 0038 0039 KConfigGroup kcg(KSharedConfig::openConfig(), QStringLiteral("fileSystemSupportDialog")); 0040 restoreGeometry(kcg.readEntry<QByteArray>("Geometry", QByteArray())); 0041 } 0042 0043 /** Destroys a FileSystemSupportDialog */ 0044 FileSystemSupportDialog::~FileSystemSupportDialog() 0045 { 0046 KConfigGroup kcg(KSharedConfig::openConfig(), QStringLiteral("fileSystemSupportDialog")); 0047 kcg.writeEntry("Geometry", saveGeometry()); 0048 } 0049 0050 QSize FileSystemSupportDialog::sizeHint() const 0051 { 0052 return QSize(690, 490); 0053 } 0054 0055 void FileSystemSupportDialog::setupDialog() 0056 { 0057 QIcon yes = QIcon::fromTheme(QStringLiteral("data-success")); 0058 QIcon no = QIcon::fromTheme(QStringLiteral("data-error")); 0059 0060 dialogWidget().tree().clear(); 0061 0062 for (const auto &fs : FileSystemFactory::map()) { 0063 if (fs->type() == FileSystem::Type::Unknown || fs->type() == FileSystem::Type::Extended || 0064 fs->type() == FileSystem::Type::Luks || fs->type() == FileSystem::Type::Luks2) { 0065 continue; 0066 } 0067 0068 QTreeWidgetItem* item = new QTreeWidgetItem(); 0069 0070 int i = 0; 0071 item->setText(i++, fs->name()); 0072 item->setIcon(i++, fs->supportCreate() ? yes : no); 0073 item->setIcon(i++, fs->supportGrow() ? yes : no); 0074 item->setIcon(i++, fs->supportShrink() ? yes : no); 0075 item->setIcon(i++, fs->supportMove() ? yes : no); 0076 item->setIcon(i++, fs->supportCopy() ? yes : no); 0077 item->setIcon(i++, fs->supportCheck() ? yes : no); 0078 item->setIcon(i++, fs->supportGetLabel() ? yes : no); 0079 item->setIcon(i++, fs->supportSetLabel() ? yes : no); 0080 item->setIcon(i++, fs->supportGetUsed() ? yes : no); 0081 item->setIcon(i++, fs->supportBackup() ? yes : no); 0082 0083 // there is no FileSystem::supportRestore(), because we currently can't tell 0084 // if a file is an image of a supported or unsupported (or even invalid) filesystem 0085 item->setIcon(i++, yes); 0086 0087 item->setText(i++, fs->supportToolName().name.isEmpty() ? QStringLiteral("---") : fs->supportToolName().name); 0088 0089 dialogWidget().tree().addTopLevelItem(item); 0090 } 0091 0092 for (int i = 0; i < dialogWidget().tree().columnCount(); i++) 0093 dialogWidget().tree().resizeColumnToContents(i); 0094 0095 dialogWidget().tree().sortItems(0, Qt::AscendingOrder); 0096 } 0097 0098 void FileSystemSupportDialog::setupConnections() 0099 { 0100 connect(dialogButtonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &FileSystemSupportDialog::close); 0101 connect(&dialogWidget().buttonRescan(), &QPushButton::clicked, this, &FileSystemSupportDialog::onButtonRescanClicked); 0102 } 0103 0104 void FileSystemSupportDialog::onButtonRescanClicked() 0105 { 0106 FileSystemFactory::init(); 0107 setupDialog(); 0108 }