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 }