2020-09-16 00:35:12 +01:00
/*
SPDX - FileCopyrightText : 2010 Volker Lanz < vl @ fidra . de >
SPDX - FileCopyrightText : 2014 - 2020 Andrius Š tikonas < andrius @ stikonas . eu >
SPDX - License - Identifier : GPL - 3.0 - or - later
*/
2010-02-17 13:18:25 +00:00
2010-03-21 11:32:31 +00:00
# include "config/configureoptionsdialog.h"
2010-03-21 11:52:07 +00:00
# include "config/generalpagewidget.h"
# include "config/filesystemcolorspagewidget.h"
2010-06-02 15:35:02 +01:00
# include "config/advancedpagewidget.h"
2010-02-17 13:18:25 +00:00
2016-01-12 00:12:49 +00:00
# include <backend/corebackendmanager.h>
2010-03-21 10:50:44 +00:00
2016-01-12 00:12:49 +00:00
# include <core/operationstack.h>
2010-03-24 23:30:20 +00:00
2016-01-12 00:12:49 +00:00
# include <fs/filesystem.h>
# include <fs/filesystemfactory.h>
2010-03-11 14:17:21 +00:00
2016-01-12 00:12:49 +00:00
# include <util/helpers.h>
2015-06-30 20:22:13 +01:00
# include "util/guihelpers.h"
2010-03-11 14:17:21 +00:00
2010-02-17 19:39:24 +00:00
# include "ui_configurepagefilesystemcolors.h"
2010-02-17 13:18:25 +00:00
2014-05-13 23:53:37 +01:00
# include <KLocalizedString>
2014-05-18 21:41:48 +01:00
# include <KMessageBox>
2010-03-11 19:40:42 +00:00
2017-10-09 13:54:31 +01:00
# include <QtGlobal>
2014-05-17 02:27:42 +01:00
# include <QIcon>
2010-03-11 14:17:21 +00:00
# include <config.h>
2010-03-03 10:46:23 +00:00
2010-03-24 23:30:20 +00:00
ConfigureOptionsDialog : : ConfigureOptionsDialog ( QWidget * parent , const OperationStack & ostack , const QString & name ) :
2015-07-13 15:17:41 +01:00
KConfigDialog ( parent , name , Config : : self ( ) ) ,
m_GeneralPageWidget ( new GeneralPageWidget ( this ) ) ,
m_FileSystemColorsPageWidget ( new FileSystemColorsPageWidget ( this ) ) ,
m_AdvancedPageWidget ( new AdvancedPageWidget ( this ) ) ,
m_OperationStack ( ostack )
2010-02-17 13:18:25 +00:00
{
2015-07-13 15:17:41 +01:00
setFaceType ( List ) ;
2010-03-03 10:46:23 +00:00
2019-09-27 21:23:59 +01:00
addPage ( & generalPageWidget ( ) , xi18nc ( " @title:tab general application settings " , " General " ) , QStringLiteral ( " partitionmanager " ) , i18n ( " General Settings " ) ) ;
2010-03-03 10:46:23 +00:00
2017-10-09 13:54:31 +01:00
connect ( & generalPageWidget ( ) . comboDefaultFileSystem ( ) , qOverload < int > ( & QComboBox : : activated ) , this , & ConfigureOptionsDialog : : onComboDefaultFileSystemActivated ) ;
2015-07-13 15:17:41 +01:00
connect ( generalPageWidget ( ) . radioButton , & QRadioButton : : toggled , this , & ConfigureOptionsDialog : : onShredSourceActivated ) ;
2010-03-21 10:50:44 +00:00
2019-09-27 21:23:59 +01:00
addPage ( & fileSystemColorsPageWidget ( ) , xi18nc ( " @title:tab " , " File System Colors " ) , QStringLiteral ( " preferences-desktop-color " ) , i18n ( " File System Color Settings " ) ) ;
2010-03-03 10:46:23 +00:00
2019-09-27 21:23:59 +01:00
addPage ( & advancedPageWidget ( ) , xi18nc ( " @title:tab advanced application settings " , " Advanced " ) , QStringLiteral ( " preferences-other " ) , i18n ( " Advanced Settings " ) ) ;
2010-06-02 15:35:02 +01:00
2018-01-16 14:14:18 +00:00
connect ( & advancedPageWidget ( ) . comboBackend ( ) , qOverload < int > ( & QComboBox : : activated ) , this , & ConfigureOptionsDialog : : onComboDefaultFileSystemActivated ) ;
2010-06-02 15:35:02 +01:00
2015-07-13 15:17:41 +01:00
KConfigGroup kcg ( KSharedConfig : : openConfig ( ) , " configureOptionsDialogs " ) ;
restoreGeometry ( kcg . readEntry < QByteArray > ( " Geometry " , QByteArray ( ) ) ) ;
2010-02-21 17:03:22 +00:00
}
/** Destroys a ConfigureOptionsDialog instance */
ConfigureOptionsDialog : : ~ ConfigureOptionsDialog ( )
{
2015-07-13 15:17:41 +01:00
KConfigGroup kcg ( KSharedConfig : : openConfig ( ) , " configureOptionsDialog " ) ;
kcg . writeEntry ( " Geometry " , saveGeometry ( ) ) ;
2010-02-17 13:18:25 +00:00
}
2010-03-11 19:40:42 +00:00
void ConfigureOptionsDialog : : updateSettings ( )
{
2015-07-13 15:17:41 +01:00
KConfigDialog : : updateSettings ( ) ;
bool changed = false ;
2018-04-07 19:54:55 +01:00
if ( generalPageWidget ( ) . defaultFileSystem ( ) ! = static_cast < FileSystem : : Type > ( Config : : defaultFileSystem ( ) ) ) {
Config : : setDefaultFileSystem ( static_cast < int > ( generalPageWidget ( ) . defaultFileSystem ( ) ) ) ;
2015-07-13 15:17:41 +01:00
changed = true ;
}
if ( generalPageWidget ( ) . radioButton - > isChecked ( ) ! = ( Config : : shredSource ( ) = = Config : : EnumShredSource : : random ) ) {
qDebug ( ) < < " updateSettings: " < < generalPageWidget ( ) . kcfg_shredSource - > checkedId ( ) ;
Config : : setShredSource ( generalPageWidget ( ) . kcfg_shredSource - > checkedId ( ) ) ;
changed = true ;
}
2017-11-07 00:47:04 +00:00
if ( advancedPageWidget ( ) . backend ( ) ! = Config : : backend ( ) ) {
2015-07-13 15:17:41 +01:00
Config : : setBackend ( advancedPageWidget ( ) . backend ( ) ) ;
changed = true ;
}
if ( changed )
2020-09-15 02:26:38 +01:00
Q_EMIT KConfigDialog : : settingsChanged ( i18n ( " General Settings " ) ) ;
2010-03-21 10:50:44 +00:00
}
bool ConfigureOptionsDialog : : hasChanged ( )
{
2015-07-13 15:17:41 +01:00
bool result = KConfigDialog : : hasChanged ( ) ;
2010-03-21 10:50:44 +00:00
2015-07-13 15:17:41 +01:00
KConfigSkeletonItem * kcItem = Config : : self ( ) - > findItem ( QStringLiteral ( " defaultFileSystem " ) ) ;
2018-04-07 19:54:55 +01:00
result = result | | ! kcItem - > isEqual ( static_cast < int > ( generalPageWidget ( ) . defaultFileSystem ( ) ) ) ;
2015-07-13 15:17:41 +01:00
result = result | | ( generalPageWidget ( ) . kcfg_shredSource - > checkedId ( ) ! = Config : : shredSource ( ) ) ;
2010-03-21 10:50:44 +00:00
2015-07-13 15:17:41 +01:00
if ( advancedPageWidget ( ) . isVisible ( ) ) {
kcItem = Config : : self ( ) - > findItem ( QStringLiteral ( " backend " ) ) ;
result = result | | ! kcItem - > isEqual ( advancedPageWidget ( ) . backend ( ) ) ;
}
2010-03-21 10:50:44 +00:00
2015-07-13 15:17:41 +01:00
return result ;
2010-03-11 19:40:42 +00:00
}
bool ConfigureOptionsDialog : : isDefault ( )
{
2015-07-13 15:17:41 +01:00
bool result = KConfigDialog : : isDefault ( ) ;
2010-03-11 19:40:42 +00:00
2015-07-13 15:17:41 +01:00
if ( result ) {
const bool useDefaults = Config : : self ( ) - > useDefaults ( true ) ;
result = ! hasChanged ( ) ;
Config : : self ( ) - > useDefaults ( useDefaults ) ;
}
2010-03-11 19:40:42 +00:00
2015-07-13 15:17:41 +01:00
return result ;
2010-03-11 19:40:42 +00:00
}
void ConfigureOptionsDialog : : updateWidgetsDefault ( )
{
2015-07-13 15:17:41 +01:00
bool useDefaults = Config : : self ( ) - > useDefaults ( true ) ;
generalPageWidget ( ) . setDefaultFileSystem ( GuiHelpers : : defaultFileSystem ( ) ) ;
generalPageWidget ( ) . radioButton - > setChecked ( true ) ;
2010-06-02 21:39:25 +01:00
2015-07-13 15:17:41 +01:00
if ( advancedPageWidget ( ) . isVisible ( ) )
advancedPageWidget ( ) . setBackend ( CoreBackendManager : : defaultBackendName ( ) ) ;
2010-06-02 21:39:25 +01:00
2015-07-13 15:17:41 +01:00
Config : : self ( ) - > useDefaults ( useDefaults ) ;
2010-03-11 19:40:42 +00:00
}
2010-03-24 23:30:20 +00:00
void ConfigureOptionsDialog : : onComboBackendActivated ( int )
{
2015-07-13 15:17:41 +01:00
Q_ASSERT ( advancedPageWidget ( ) . isVisible ( ) ) ;
if ( operationStack ( ) . size ( ) = = 0 | | KMessageBox : : warningContinueCancel ( this ,
xi18nc ( " @info " ,
" <para>Do you really want to change the backend?</para> "
" <para><warning>This will also rescan devices and thus clear the list of pending operations.</warning></para> " ) ,
2016-08-15 16:57:43 +01:00
xi18nc ( " @title:window " , " Really Change Backend? " ) ,
KGuiItem ( xi18nc ( " @action:button " , " Change the Backend " ) , QStringLiteral ( " arrow-right " ) ) ,
KGuiItem ( xi18nc ( " @action:button " , " Do Not Change the Backend " ) , QStringLiteral ( " dialog-cancel " ) ) , QStringLiteral ( " reallyChangeBackend " ) ) = = KMessageBox : : Continue ) {
2015-07-13 15:17:41 +01:00
settingsChangedSlot ( ) ;
} else
advancedPageWidget ( ) . setBackend ( CoreBackendManager : : defaultBackendName ( ) ) ;
2010-03-24 23:30:20 +00:00
}