File indexing completed on 2024-04-28 17:06:06
0001 /* 0002 SPDX-FileCopyrightText: 2004 Csaba Karai <krusader@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "kgarchives.h" 0009 0010 // QtCore 0011 #include <QPointer> 0012 // QtWidgets 0013 #include <QGridLayout> 0014 #include <QPushButton> 0015 0016 #include <KConfigCore/KSharedConfig> 0017 #include <KI18n/KLocalizedString> 0018 0019 #include "../Archive/krarchandler.h" 0020 #include "../defaults.h" 0021 #include "../krglobal.h" 0022 #include "krresulttable.h" 0023 #include "krresulttabledialog.h" 0024 #include "searchobject.h" 0025 0026 KgArchives::KgArchives(bool first, QWidget *parent) 0027 : KonfiguratorPage(first, parent) 0028 { 0029 QWidget *innerWidget = new QFrame(this); 0030 setWidget(innerWidget); 0031 setWidgetResizable(true); 0032 auto *kgArchivesLayout = new QGridLayout(innerWidget); 0033 kgArchivesLayout->setSpacing(6); 0034 0035 // ------------------------ KRARC GROUPBOX -------------------------------- 0036 0037 QGroupBox *krarcGrp = createFrame(i18n("krarc ioslave"), innerWidget); 0038 QGridLayout *krarcGrid = createGridLayout(krarcGrp); 0039 0040 KONFIGURATOR_CHECKBOX_PARAM krarcOptions[] = 0041 // cfg_class cfg_name default text restart ToolTip 0042 {{"kio_krarc", "EnableWrite", false, i18n("Enable Write Support"), false, i18n("Enable writing to archives using the krarc ioslave.")}}; 0043 0044 KonfiguratorCheckBoxGroup *krarcCheckBoxes = createCheckBoxGroup(1, 0, krarcOptions, 1, krarcGrp); 0045 0046 krarcGrid->addWidget(krarcCheckBoxes, 1, 0); 0047 krarcGrid->addWidget(new QLabel(i18n("<b>Caution when moving into archives:</b><br/>" 0048 "<b>Failure during the process might result in data loss.</b><br/>" 0049 "<b>Moving archives into themselves will delete them.</b>"), 0050 krarcGrp), 0051 2, 0052 0); 0053 0054 kgArchivesLayout->addWidget(krarcGrp, 1, 0); 0055 0056 // ------------------------ BROWSE GROUPBOX -------------------------------- 0057 0058 QGroupBox *browseGrp = createFrame(i18n("Archives handling"), innerWidget); 0059 QGridLayout *browseGrid = createGridLayout(browseGrp); 0060 0061 KONFIGURATOR_CHECKBOX_PARAM browseOptions[] = 0062 // cfg_class cfg_name default text restart ToolTip 0063 {{"Archives", 0064 "ArchivesAsDirectories", 0065 _ArchivesAsDirectories, 0066 i18n("Browse Archives As Folders"), 0067 false, 0068 i18n("Krusader will browse archives as folders.")}}; 0069 0070 KonfiguratorCheckBoxGroup *browseCheckBoxes = createCheckBoxGroup(1, 0, browseOptions, 1, browseGrp); 0071 0072 browseGrid->addWidget(browseCheckBoxes, 1, 0); 0073 0074 kgArchivesLayout->addWidget(browseGrp, 2, 0); 0075 0076 // ------------------------ FINE-TUNING GROUPBOX -------------------------------- 0077 0078 QGroupBox *fineTuneGrp = createFrame(i18n("Fine-Tuning"), innerWidget); 0079 QGridLayout *fineTuneGrid = createGridLayout(fineTuneGrp); 0080 0081 KONFIGURATOR_CHECKBOX_PARAM finetuners[] = 0082 // cfg_class cfg_name default text restart ToolTip 0083 {{"Archives", "Test Archives", _TestArchives, i18n("Test archive after packing"), false, i18n("Check the archive's integrity after packing it.")}, 0084 {"Archives", 0085 "Test Before Unpack", 0086 _TestBeforeUnpack, 0087 i18n("Test archive before unpacking"), 0088 false, 0089 i18n("Some corrupted archives might cause a crash; therefore, testing is suggested.")}}; 0090 0091 KonfiguratorCheckBoxGroup *finetunes = createCheckBoxGroup(1, 0, finetuners, 2, fineTuneGrp); 0092 0093 disableNonExistingPackers(); 0094 fineTuneGrid->addWidget(finetunes, 1, 0); 0095 0096 kgArchivesLayout->addWidget(fineTuneGrp, 3, 0); 0097 0098 if (first) 0099 slotAutoConfigure(); 0100 } 0101 0102 void KgArchives::slotAutoConfigure() 0103 { 0104 QPointer<KrResultTableDialog> dlg = new KrResultTableDialog(this, 0105 KrResultTableDialog::Archiver, 0106 i18n("Search results"), 0107 i18n("Searching for packers..."), 0108 "utilities-file-archiver", 0109 i18n("Make sure to install new packers in your <code>$PATH</code> (e.g. /usr/bin)")); 0110 dlg->exec(); 0111 0112 disableNonExistingPackers(); 0113 0114 delete dlg; 0115 } 0116 0117 void KgArchives::disableNonExistingPackers() 0118 { 0119 KConfigGroup group(krConfig, "Archives"); 0120 group.writeEntry("Supported Packers", KrArcHandler::supportedPackers()); 0121 }