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 SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> 0005 SPDX-FileCopyrightText: 2018 Abhijeet Sharma <sharma.abhijeet2096@gmail.com> 0006 0007 SPDX-License-Identifier: GPL-3.0-or-later 0008 */ 0009 0010 #include "gui/editmountpointdialog.h" 0011 #include "gui/editmountpointdialogwidget.h" 0012 0013 #include <core/partition.h> 0014 0015 #include <KConfigGroup> 0016 #include <KGuiItem> 0017 #include <KLocalizedString> 0018 #include <KMessageBox> 0019 #include <KSharedConfig> 0020 #include <KStandardGuiItem> 0021 0022 #include <QDialogButtonBox> 0023 0024 EditMountPointDialog::EditMountPointDialog(QWidget* parent, Partition& p) : 0025 QDialog(parent), 0026 m_Partition(p), 0027 m_DialogWidget(new EditMountPointDialogWidget(this, partition())) 0028 { 0029 QVBoxLayout *mainLayout = new QVBoxLayout(this); 0030 setLayout(mainLayout); 0031 mainLayout->addWidget(&widget()); 0032 setWindowTitle(xi18nc("@title:window", "Edit mount point for <filename>%1</filename>", p.deviceNode())); 0033 0034 KConfigGroup kcg(KSharedConfig::openConfig(), QStringLiteral("editMountPointDialog")); 0035 restoreGeometry(kcg.readEntry<QByteArray>("Geometry", QByteArray())); 0036 0037 QDialogButtonBox* dbb = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, 0038 Qt::Horizontal, 0039 this ); 0040 mainLayout->addWidget(dbb); 0041 connect(dbb, &QDialogButtonBox::accepted, 0042 this, [=] () {accept_(MountPointAction::Edit);} ); 0043 connect(dbb, &QDialogButtonBox::rejected, 0044 this, &EditMountPointDialog::reject); 0045 connect(widget().m_ButtonRemove, &QPushButton::clicked, this, [=] () {accept_(MountPointAction::Remove);} ); 0046 connect(m_DialogWidget, &EditMountPointDialogWidget::isValidChanged, this, [dbb](bool newValid) { 0047 dbb->button(QDialogButtonBox::Ok)->setEnabled(newValid); 0048 }); 0049 dbb->button(QDialogButtonBox::Ok)->setEnabled(m_DialogWidget->isValid()); 0050 } 0051 0052 /** Destroys an EditMountOptionsDialog instance */ 0053 EditMountPointDialog::~EditMountPointDialog() 0054 { 0055 KConfigGroup kcg(KSharedConfig::openConfig(), QStringLiteral("editMountPointDialog")); 0056 kcg.writeEntry("Geometry", saveGeometry()); 0057 } 0058 0059 void EditMountPointDialog::accept_(MountPointAction action) 0060 { 0061 const auto dialogResult = KMessageBox::warningContinueCancel(this, 0062 xi18nc("@info", "<para>Are you sure you want to save the changes you made to the system table file <filename>/etc/fstab</filename>?</para>" 0063 "<para><warning>This will overwrite the existing file on your hard drive now. This <emphasis strong='1'>can not be undone</emphasis>.</warning></para>"), 0064 xi18nc("@title:window", "Really save changes?"), 0065 KGuiItem(xi18nc("@action:button", "Save changes"), QStringLiteral("arrow-right")), 0066 KStandardGuiItem::cancel(), 0067 QStringLiteral("reallyWriteMountPoints")); 0068 if (dialogResult == KMessageBox::Cancel) 0069 return; 0070 if(action == MountPointAction::Remove) 0071 widget().removeMountPoint(); 0072 else if (action == MountPointAction::Edit) 0073 widget().acceptChanges(); 0074 if (writeMountpoints(widget().fstabEntries())) { 0075 if (action == MountPointAction::Edit) 0076 partition().setMountPoint(widget().editPath().currentText()); 0077 } 0078 else 0079 KMessageBox::error(this, 0080 xi18nc("@info", "Could not save mount points to file <filename>/etc/fstab</filename>."), 0081 xi18nc("@title:window", "Error While Saving Mount Points")); 0082 0083 QDialog::accept(); 0084 }