summaryrefslogtreecommitdiffstats
path: root/part/kxenewfilesettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'part/kxenewfilesettings.cpp')
-rw-r--r--part/kxenewfilesettings.cpp207
1 files changed, 207 insertions, 0 deletions
diff --git a/part/kxenewfilesettings.cpp b/part/kxenewfilesettings.cpp
new file mode 100644
index 0000000..fcd4562
--- /dev/null
+++ b/part/kxenewfilesettings.cpp
@@ -0,0 +1,207 @@
+/***************************************************************************
+ kxenewfilesettings.cpp
+ ----------------------
+ begin : Tue Dec 02 2003
+ copyright : (C) 2003 by The KXMLEditor Team
+ email : hartig@users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "kxenewfilesettings.h"
+#include "kxenewfilesettingspage.h"
+
+#include <klocale.h>
+#include <kconfig.h>
+#include <kdebug.h>
+
+#include <qframe.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+
+#define CONF_ENTRY_NAME_DFLT_VERSION "Default version"
+#define DFLT_VALUE_DFLT_VERSION "1.0"
+
+#define CONF_ENTRY_NAME_DFLT_ENCODING "Default encoding"
+#define DFLT_VALUE_DFLT_ENCODING "UTF-8"
+
+#define CONF_ENTRY_NAME_DFLT_NEWFILE_CREAT_BEHAVIOUR "Default behaviour"
+#define DFLT_VALUE_NEWFILE_CREAT_BEHAVIOUR UseDefaults
+
+
+KXENewFileSettings::KXENewFileSettings( QObject * pParent, const char * pszName )
+ : KXESettings( "New File Settings", pParent, pszName ),
+ m_strDfltVersion( DFLT_VALUE_DFLT_VERSION ),
+ m_strDfltEncoding( DFLT_VALUE_DFLT_ENCODING ),
+ m_enmNewFileCreaBehav( DFLT_VALUE_NEWFILE_CREAT_BEHAVIOUR ),
+ m_pDialogPage(0)
+{
+}
+
+
+void KXENewFileSettings::write( KConfig * pConfig ) const
+{
+ pConfig->writeEntry( CONF_ENTRY_NAME_DFLT_VERSION, m_strDfltVersion );
+ pConfig->writeEntry( CONF_ENTRY_NAME_DFLT_ENCODING, m_strDfltEncoding );
+ pConfig->writeEntry( CONF_ENTRY_NAME_DFLT_NEWFILE_CREAT_BEHAVIOUR, m_enmNewFileCreaBehav );
+}
+
+
+void KXENewFileSettings::read( const KConfig * pConfig )
+{
+ m_strDfltVersion = pConfig->readEntry( CONF_ENTRY_NAME_DFLT_VERSION, DFLT_VALUE_DFLT_VERSION );
+ m_strDfltEncoding = pConfig->readEntry( CONF_ENTRY_NAME_DFLT_ENCODING, DFLT_VALUE_DFLT_ENCODING );
+ m_enmNewFileCreaBehav = static_cast<NewFileCreationBehaviour> ( pConfig->readNumEntry( CONF_ENTRY_NAME_DFLT_NEWFILE_CREAT_BEHAVIOUR, DFLT_VALUE_NEWFILE_CREAT_BEHAVIOUR ) );
+}
+
+
+QString KXENewFileSettings::dialogPageName() const
+{
+ return i18n( "New Files" );
+}
+
+QString KXENewFileSettings::dialogPageHeader() const
+{
+ return i18n( "New File Settings" );
+}
+
+QString KXENewFileSettings::dialogPageIcon() const
+{
+ return "files";
+}
+
+
+QWidget * KXENewFileSettings::dialogPage( QFrame * pParent )
+{
+
+ if ( ! m_pDialogPage )
+ {
+ // create the page if necessary
+ m_pDialogPage = new KXENewFileSettingsPage( pParent, "new files config.dialog page" );
+
+ // and fill its widgets with the corresponding values
+ m_pDialogPage->m_pDfltEncoding->insertStringList( encodings() );
+ updatePage();
+
+ connect( m_pDialogPage->m_pDfltVersion, SIGNAL(textChanged(const QString&)), this, SIGNAL(sigDialogPageChanged()) );
+ connect( m_pDialogPage->m_pDfltEncoding, SIGNAL(activated(int)), this, SIGNAL(sigDialogPageChanged()) );
+ connect( m_pDialogPage->m_pNewFileCreatBehav1, SIGNAL(toggled(bool)), this, SIGNAL(sigDialogPageChanged()) );
+ connect( m_pDialogPage->m_pNewFileCreatBehav2, SIGNAL(toggled(bool)), this, SIGNAL(sigDialogPageChanged()) );
+ connect( m_pDialogPage->m_pNewFileCreatBehav3, SIGNAL(toggled(bool)), this, SIGNAL(sigDialogPageChanged()) );
+ }
+
+ return m_pDialogPage;
+}
+
+void KXENewFileSettings::setFromPage()
+{
+ if ( m_pDialogPage )
+ {
+ m_strDfltVersion = m_pDialogPage->m_pDfltVersion->text();
+ m_strDfltEncoding = m_pDialogPage->m_pDfltEncoding->currentText();
+
+ if ( m_pDialogPage->m_pNewFileCreatBehav1->isChecked() )
+ m_enmNewFileCreaBehav = CreateEmptyFile;
+ else if ( m_pDialogPage->m_pNewFileCreatBehav2->isChecked() )
+ m_enmNewFileCreaBehav = CreateWithAssistance;
+ else if ( m_pDialogPage->m_pNewFileCreatBehav3->isChecked() )
+ m_enmNewFileCreaBehav = UseDefaults;
+ }
+}
+
+void KXENewFileSettings::updatePage() const
+{
+ if ( m_pDialogPage )
+ {
+ m_pDialogPage->m_pDfltVersion->setText( m_strDfltVersion );
+ m_pDialogPage->m_pDfltEncoding->setCurrentText( m_strDfltEncoding );
+
+ switch ( m_enmNewFileCreaBehav )
+ {
+ case CreateEmptyFile:
+ m_pDialogPage->m_pNewFileCreatBehav->setButton( m_pDialogPage->m_pNewFileCreatBehav->id( m_pDialogPage->m_pNewFileCreatBehav1 ) );
+ break;
+ case CreateWithAssistance:
+ m_pDialogPage->m_pNewFileCreatBehav->setButton( m_pDialogPage->m_pNewFileCreatBehav->id( m_pDialogPage->m_pNewFileCreatBehav2 ) );
+ break;
+ case UseDefaults:
+ m_pDialogPage->m_pNewFileCreatBehav->setButton( m_pDialogPage->m_pNewFileCreatBehav->id( m_pDialogPage->m_pNewFileCreatBehav3 ) );
+ break;
+ default:
+ kdError() << "KXENewFileSettings::updatePage: unknown creation behavior" << endl;
+ }
+ }
+}
+
+QStringList KXENewFileSettings::encodings()
+{
+ static QStringList lstEncs;
+ if ( lstEncs.empty() )
+ {
+ lstEncs.append("UTF-8");
+ lstEncs.append("ISO-8859-1");
+ lstEncs.append("ISO-8859-2");
+ lstEncs.append("ISO-8859-3");
+ lstEncs.append("ISO-8859-4");
+ lstEncs.append("ISO-8859-5");
+ lstEncs.append("ISO-8859-6");
+ lstEncs.append("ISO-8859-7");
+ lstEncs.append("ISO-8859-8");
+ lstEncs.append("ISO-8859-9");
+ }
+ return lstEncs;
+}
+
+
+/////////////////////////////////////////////////
+// function(s) to set this settings group data //
+/////////////////////////////////////////////////
+
+void KXENewFileSettings::setNewFileCreaBehav( NewFileCreationBehaviour enmNewFileCreaBehav, KConfig * pConfig )
+{
+ // if the data really has been changed
+ if ( m_enmNewFileCreaBehav != enmNewFileCreaBehav )
+ {
+ // set this object's data to the new one given
+ m_enmNewFileCreaBehav = enmNewFileCreaBehav;
+
+ // update the corresponding widget in the config.dialog page, if necessary
+ if ( m_pDialogPage )
+ {
+ blockSignals( true );
+
+ switch ( enmNewFileCreaBehav )
+ {
+ case CreateEmptyFile:
+ m_pDialogPage->m_pNewFileCreatBehav->setButton( m_pDialogPage->m_pNewFileCreatBehav->id( m_pDialogPage->m_pNewFileCreatBehav1 ) );
+ break;
+ case CreateWithAssistance:
+ m_pDialogPage->m_pNewFileCreatBehav->setButton( m_pDialogPage->m_pNewFileCreatBehav->id( m_pDialogPage->m_pNewFileCreatBehav2 ) );
+ break;
+ case UseDefaults:
+ m_pDialogPage->m_pNewFileCreatBehav->setButton( m_pDialogPage->m_pNewFileCreatBehav->id( m_pDialogPage->m_pNewFileCreatBehav3 ) );
+ break;
+ default:
+ kdError() << "KXENewFileSettings::dialogPage: unknown creation behavior" << endl;
+ }
+
+ blockSignals( false );
+ }
+
+ // store the new data (only the given one) to the given config file
+ setConfigGroup( pConfig );
+ pConfig->writeEntry( CONF_ENTRY_NAME_DFLT_NEWFILE_CREAT_BEHAVIOUR, m_enmNewFileCreaBehav );
+
+ // and inform everyone about the changing of our data
+ emit sigChanged();
+ }
+}