2015-02-07 00:32:25 +00:00
/*************************************************************************
* Copyright ( C ) 2009 , 2010 by Volker Lanz < vl @ fidra . de > *
2015-08-14 17:07:26 +01:00
* Copyright ( C ) 2015 by Teo Mrnjavac < teo @ kde . org > *
2016-03-02 18:33:40 +00:00
* Copyright ( C ) 2016 by Andrius Š tikonas < andrius @ stikonas . eu > *
2015-02-07 00:32:25 +00:00
* *
* This program is free software ; you can redistribute it and / or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation ; either version 3 of *
* the License , or ( at your option ) any later version . *
* *
* This program is distributed in the hope that it will be useful , *
* but WITHOUT ANY WARRANTY ; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the *
* GNU General Public License for more details . *
* *
* You should have received a copy of the GNU General Public License *
* along with this program . If not , see < http : //www.gnu.org/licenses/>.*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2010-01-15 18:08:01 +00:00
# include "gui/editmountpointdialog.h"
# include "gui/editmountpointdialogwidget.h"
2016-01-12 00:12:49 +00:00
# include <core/partition.h>
2010-01-15 18:08:01 +00:00
2016-08-23 16:40:16 +01:00
# include <KConfigGroup>
2014-05-18 21:41:48 +01:00
# include <KGuiItem>
2014-05-13 23:53:37 +01:00
# include <KLocalizedString>
2016-08-23 16:40:16 +01:00
# include <KMessageBox>
2014-05-17 03:06:58 +01:00
# include <KSharedConfig>
2016-08-23 16:40:16 +01:00
# include <KStandardGuiItem>
2010-01-15 18:08:01 +00:00
2015-08-14 17:07:26 +01:00
# include <QDialogButtonBox>
2010-01-15 18:08:01 +00:00
EditMountPointDialog : : EditMountPointDialog ( QWidget * parent , Partition & p ) :
2015-07-13 15:17:41 +01:00
QDialog ( parent ) ,
m_Partition ( p ) ,
m_DialogWidget ( new EditMountPointDialogWidget ( this , partition ( ) ) )
2010-01-15 18:08:01 +00:00
{
2015-07-13 15:17:41 +01:00
QVBoxLayout * mainLayout = new QVBoxLayout ( this ) ;
setLayout ( mainLayout ) ;
mainLayout - > addWidget ( & widget ( ) ) ;
setWindowTitle ( xi18nc ( " @title:window " , " Edit mount point for <filename>%1</filename> " , p . deviceNode ( ) ) ) ;
2010-02-21 17:07:47 +00:00
2015-07-13 15:17:41 +01:00
KConfigGroup kcg ( KSharedConfig : : openConfig ( ) , " editMountPointDialog " ) ;
restoreGeometry ( kcg . readEntry < QByteArray > ( " Geometry " , QByteArray ( ) ) ) ;
2015-08-14 17:07:26 +01:00
QDialogButtonBox * dbb = new QDialogButtonBox ( QDialogButtonBox : : Ok | QDialogButtonBox : : Cancel ,
Qt : : Horizontal ,
this ) ;
mainLayout - > addWidget ( dbb ) ;
connect ( dbb , & QDialogButtonBox : : accepted ,
2018-04-05 22:00:06 +01:00
this , [ = ] ( ) { accept_ ( MountPointAction : : Edit ) ; } ) ;
2015-08-14 17:07:26 +01:00
connect ( dbb , & QDialogButtonBox : : rejected ,
this , & EditMountPointDialog : : reject ) ;
2018-04-05 22:00:06 +01:00
connect ( widget ( ) . m_ButtonRemove , & QPushButton : : clicked , this , [ = ] ( ) { accept_ ( MountPointAction : : Remove ) ; } ) ;
2010-02-21 17:07:47 +00:00
}
2018-03-03 16:34:41 +00:00
/** Destroys an EditMountOptionsDialog instance */
2010-02-21 17:07:47 +00:00
EditMountPointDialog : : ~ EditMountPointDialog ( )
{
2015-07-13 15:17:41 +01:00
KConfigGroup kcg ( KSharedConfig : : openConfig ( ) , " editMountPointDialog " ) ;
kcg . writeEntry ( " Geometry " , saveGeometry ( ) ) ;
2010-01-15 18:08:01 +00:00
}
2018-03-03 16:34:41 +00:00
void EditMountPointDialog : : accept_ ( MountPointAction action )
2010-01-15 18:08:01 +00:00
{
2015-07-13 15:17:41 +01:00
if ( KMessageBox : : warningContinueCancel ( this ,
xi18nc ( " @info " , " <para>Are you sure you want to save the changes you made to the system table file <filename>/etc/fstab</filename>?</para> "
2017-09-20 20:39:59 +01:00
" <para><warning>This will overwrite the existing file on your hard drive now. This <emphasis strong='1'>can not be undone</emphasis>.</warning></para> " ) ,
2016-07-18 02:21:14 +01:00
xi18nc ( " @title:window " , " Really save changes? " ) ,
KGuiItem ( xi18nc ( " @action:button " , " Save changes " ) , QStringLiteral ( " arrow-right " ) ) ,
2015-07-13 15:17:41 +01:00
KStandardGuiItem : : cancel ( ) ,
QStringLiteral ( " reallyWriteMountPoints " ) ) = = KMessageBox : : Cancel )
return ;
2018-04-05 22:00:06 +01:00
if ( action = = MountPointAction : : Remove )
2018-03-03 16:34:41 +00:00
widget ( ) . removeMountPoint ( ) ;
2018-04-05 22:00:06 +01:00
else if ( action = = MountPointAction : : Edit )
2018-03-03 16:34:41 +00:00
widget ( ) . acceptChanges ( ) ;
if ( writeMountpoints ( widget ( ) . fstabEntries ( ) ) ) {
2018-04-05 22:00:06 +01:00
if ( action = = MountPointAction : : Edit )
2018-03-31 20:27:05 +01:00
partition ( ) . setMountPoint ( widget ( ) . editPath ( ) . currentText ( ) ) ;
2018-03-03 16:34:41 +00:00
}
2017-09-16 20:41:45 +01:00
else
KMessageBox : : sorry ( this ,
xi18nc ( " @info " , " Could not save mount points to file <filename>/etc/fstab</filename>. " ) ,
xi18nc ( " @title:window " , " Error While Saving Mount Points " ) ) ;
2010-01-15 18:08:01 +00:00
2015-07-13 15:17:41 +01:00
QDialog : : accept ( ) ;
2010-01-15 18:08:01 +00:00
}