summaryrefslogtreecommitdiffstats
path: root/src/pref.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2024-10-13 11:56:14 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2024-10-29 21:58:42 +0900
commit2879ff70be9271550477982a1a6371714db38562 (patch)
treec2054149dba923ab080fe7093432c7663a990111 /src/pref.cpp
parent3eb38d2556f676d1027746f20bf12a1dd74451ef (diff)
downloadkrecipes-2879ff70be9271550477982a1a6371714db38562.tar.gz
krecipes-2879ff70be9271550477982a1a6371714db38562.zip
Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it> (cherry picked from commit 0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502)
Diffstat (limited to 'src/pref.cpp')
-rw-r--r--src/pref.cpp678
1 files changed, 678 insertions, 0 deletions
diff --git a/src/pref.cpp b/src/pref.cpp
new file mode 100644
index 0000000..c2575cf
--- /dev/null
+++ b/src/pref.cpp
@@ -0,0 +1,678 @@
+/***************************************************************************
+* Copyright (C) 2003 by *
+* Unai Garro (ugarro@users.sourceforge.net) *
+* Cyril Bosselut (bosselut@b1project.com) *
+* Jason Kivlighn (jkivlighn@gmail.com) *
+* *
+* Copyright (C) 2004-2006 Jason Kivlighn (jkivlighn@gmail.com) *
+* *
+* 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 "pref.h"
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tqlayout.h>
+#include <tqlabel.h>
+#include <tqhbox.h>
+#include <tqbuttongroup.h>
+#include <tqcheckbox.h>
+#include <tqradiobutton.h>
+#include <tqpushbutton.h>
+#include <tqtooltip.h>
+#include <tqwhatsthis.h>
+#include <tqframe.h>
+#include <tqcombobox.h>
+
+#include <tdeapplication.h>
+#include <tdeconfig.h>
+#include <kiconloader.h>
+#include <tdelocale.h>
+#include <kstandarddirs.h>
+#include <tdefiledialog.h>
+#include <knuminput.h>
+#include <klineedit.h>
+#include <kurlrequester.h>
+#include <kdebug.h>
+
+KrecipesPreferences::KrecipesPreferences( TQWidget *parent )
+ : KDialogBase( IconList, i18n( "Krecipes Preferences" ),
+ Help | Ok | Cancel, Ok, parent )
+{
+ // this is the base class for your preferences dialog. it is now
+ // a TreeList dialog.. but there are a number of other
+ // possibilities (including Tab, Swallow, and just Plain)
+ TQFrame * frame;
+
+ TDEConfig *config = TDEGlobal::config();
+ config->setGroup( "DBType" );
+
+ TDEIconLoader il;
+ frame = addPage( i18n( "Server Settings" ),
+ TQString( i18n( "Database Server Options (%1)" ) ).arg( config->readEntry( "Type" ) ),
+ il.loadIcon( "network_local", TDEIcon::NoGroup, 32 ) );
+ TQHBoxLayout* layout = new TQHBoxLayout( frame );
+ m_pageServer = new ServerPrefs( frame );
+ layout->addWidget( m_pageServer );
+ m_helpMap.insert(0,"configure-server-settings");
+
+ frame = addPage( i18n( "Formatting" ), i18n( "Customize Formatting" ), il.loadIcon( "math_frac", TDEIcon::NoGroup, 32 ) );
+ TQHBoxLayout* formatting_layout = new TQHBoxLayout( frame );
+ m_pageNumbers = new NumbersPrefs( frame );
+ formatting_layout->addWidget( m_pageNumbers );
+ m_helpMap.insert(1,"custom-formatting");
+
+ frame = addPage( i18n( "Import/Export" ), i18n( "Recipe Import and Export Options" ), il.loadIcon( "go-down", TDEIcon::NoGroup, 32 ) );
+ TQHBoxLayout* import_layout = new TQHBoxLayout( frame );
+ m_pageImport = new ImportPrefs( frame );
+ import_layout->addWidget( m_pageImport );
+ m_helpMap.insert(2,"import-export-preference");
+
+ frame = addPage( i18n( "Performance" ), i18n( "Performance Options" ), il.loadIcon( "launch", TDEIcon::NoGroup, 32 ) );
+ TQHBoxLayout* performance_layout = new TQHBoxLayout( frame );
+ m_pagePerformance = new PerformancePrefs( frame );
+ performance_layout->addWidget( m_pagePerformance );
+ m_helpMap.insert(3,"configure-performance");
+
+ // Signals & Slots
+ connect ( this, TQ_SIGNAL( okClicked() ), this, TQ_SLOT( saveSettings() ) );
+
+}
+
+void KrecipesPreferences::slotHelp()
+{
+ kapp->invokeHelp( m_helpMap[activePageIndex()] );
+}
+
+
+MySQLServerPrefs::MySQLServerPrefs( TQWidget *parent ) : TQWidget( parent )
+{
+ TQGridLayout * layout = new TQGridLayout( this, 1, 1, 0, 0 );
+ layout->setSpacing( KDialog::spacingHint() );
+ layout->setMargin( 0 );
+
+ TQSpacerItem* spacerTop = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerTop, 0, 1 );
+ TQSpacerItem* spacerLeft = new TQSpacerItem( 10, 10, TQSizePolicy::Fixed, TQSizePolicy::Minimum );
+ layout->addItem( spacerLeft, 1, 0 );
+
+ TQLabel* serverText = new TQLabel( i18n( "Server:" ), this );
+ serverText->setFixedSize( TQSize( 100, 20 ) );
+ serverText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( serverText, 1, 1 );
+
+ serverEdit = new KLineEdit( this );
+ serverEdit->setFixedSize( TQSize( 120, 20 ) );
+ serverEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( serverEdit, 1, 2 );
+
+ TQSpacerItem* spacerRow1 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow1, 2, 1 );
+
+ TQLabel* usernameText = new TQLabel( i18n( "Username:" ), this );
+ usernameText->setFixedSize( TQSize( 100, 20 ) );
+ usernameText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( usernameText, 3, 1 );
+
+ usernameEdit = new KLineEdit( this );
+ usernameEdit->setFixedSize( TQSize( 120, 20 ) );
+ usernameEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( usernameEdit, 3, 2 );
+
+ TQSpacerItem* spacerRow2 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow2, 4, 1 );
+
+ TQLabel* passwordText = new TQLabel( i18n( "Password:" ), this );
+ passwordText->setFixedSize( TQSize( 100, 20 ) );
+ passwordText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( passwordText, 5, 1 );
+
+ passwordEdit = new KLineEdit( this );
+ passwordEdit->setFixedSize( TQSize( 120, 20 ) );
+ passwordEdit->setEchoMode( TQLineEdit::Password );
+ passwordEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( passwordEdit, 5, 2 );
+
+ TQSpacerItem* spacerRow3 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow3, 6, 1 );
+
+ TQLabel* portText = new TQLabel( i18n( "Port:" ), this );
+ portText->setFixedSize( TQSize( 100, 20 ) );
+ portText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( portText, 7, 1 );
+
+ portEdit = new KIntNumInput( this );
+ portEdit->setMinValue(0);
+ portEdit->setSpecialValueText( i18n("Default") );
+ portEdit->setFixedSize( TQSize( 120, 20 ) );
+ portEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( portEdit, 7, 2 );
+
+ TQSpacerItem* spacerRow4 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow4, 8, 1 );
+
+ TQLabel* dbNameText = new TQLabel( i18n( "Database name:" ), this );
+ dbNameText->setFixedSize( TQSize( 100, 20 ) );
+ dbNameText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( dbNameText, 9, 1 );
+
+ dbNameEdit = new KLineEdit( this );
+ dbNameEdit->setFixedSize( TQSize( 120, 20 ) );
+ dbNameEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( dbNameEdit, 9, 2 );
+
+ TQSpacerItem* spacerRow5 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::MinimumExpanding );
+ layout->addItem( spacerRow5, 10, 1 );
+
+ // Backup options
+ TQGroupBox *backupGBox = new TQGroupBox( this, "backupGBox" );
+ backupGBox->setTitle( i18n( "Backup" ) );
+ backupGBox->setColumns( 2 );
+ layout->addMultiCellWidget( backupGBox, 10, 10, 1, 4 );
+
+ TQLabel *dumpPathLabel = new TQLabel( backupGBox );
+ dumpPathLabel->setText( TQString(i18n( "Path to '%1':" )).arg("mysqldump") );
+ dumpPathRequester = new KURLRequester( backupGBox );
+ dumpPathRequester->setFilter( "mysqldump" );
+
+ TQLabel *mysqlPathLabel = new TQLabel( backupGBox );
+ mysqlPathLabel->setText( TQString(i18n( "Path to '%1':" )).arg("mysql") );
+ mysqlPathRequester = new KURLRequester( backupGBox );
+ mysqlPathRequester->setFilter( "mysql" );
+
+
+ TQSpacerItem* spacerRow6 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::MinimumExpanding );
+ layout->addItem( spacerRow6, 11, 1 );
+ TQSpacerItem* spacerRight = new TQSpacerItem( 10, 10, TQSizePolicy::MinimumExpanding, TQSizePolicy::Fixed );
+ layout->addItem( spacerRight, 1, 4 );
+
+ // Load & Save Current Settings
+ TDEConfig *config = kapp->config();
+ config->setGroup( "Server" );
+ serverEdit->setText( config->readEntry( "Host", "localhost" ) );
+ usernameEdit->setText( config->readEntry( "Username", "" ) );
+ passwordEdit->setText( config->readEntry( "Password", "" ) );
+ portEdit->setValue( config->readNumEntry( "Port", 0 ) );
+ dbNameEdit->setText( config->readEntry( "DBName", "Krecipes" ) );
+ dumpPathRequester->setURL( config->readEntry( "MySQLDumpPath", "mysqldump" ) );
+ mysqlPathRequester->setURL( config->readEntry( "MySQLPath", "mysql" ) );
+}
+
+void MySQLServerPrefs::saveOptions( void )
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Server" );
+ config->writeEntry( "Host", serverEdit->text() );
+ config->writeEntry( "Username", usernameEdit->text() );
+ config->writeEntry( "Password", passwordEdit->text() );
+ config->writeEntry( "Port", portEdit->value() );
+ config->writeEntry( "DBName", dbNameEdit->text() );
+ config->writeEntry( "MySQLDumpPath", dumpPathRequester->url() );
+ config->writeEntry( "MySQLPath", mysqlPathRequester->url() );
+}
+
+
+PostgreSQLServerPrefs::PostgreSQLServerPrefs( TQWidget *parent ) : TQWidget( parent )
+{
+ TQGridLayout * layout = new TQGridLayout( this, 1, 1, 0, 0 );
+ layout->setSpacing( KDialog::spacingHint() );
+ layout->setMargin( 0 );
+
+ TQSpacerItem* spacerTop = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerTop, 0, 1 );
+ TQSpacerItem* spacerLeft = new TQSpacerItem( 10, 10, TQSizePolicy::Fixed, TQSizePolicy::Minimum );
+ layout->addItem( spacerLeft, 1, 0 );
+
+ TQLabel* serverText = new TQLabel( i18n( "Server:" ), this );
+ serverText->setFixedSize( TQSize( 100, 20 ) );
+ serverText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( serverText, 1, 1 );
+
+ serverEdit = new KLineEdit( this );
+ serverEdit->setFixedSize( TQSize( 120, 20 ) );
+ serverEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( serverEdit, 1, 2 );
+
+ TQSpacerItem* spacerRow1 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow1, 2, 1 );
+
+ TQLabel* usernameText = new TQLabel( i18n( "Username:" ), this );
+ usernameText->setFixedSize( TQSize( 100, 20 ) );
+ usernameText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( usernameText, 3, 1 );
+
+ usernameEdit = new KLineEdit( this );
+ usernameEdit->setFixedSize( TQSize( 120, 20 ) );
+ usernameEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( usernameEdit, 3, 2 );
+
+ TQSpacerItem* spacerRow2 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow2, 4, 1 );
+
+ TQLabel* passwordText = new TQLabel( i18n( "Password:" ), this );
+ passwordText->setFixedSize( TQSize( 100, 20 ) );
+ passwordText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( passwordText, 5, 1 );
+
+ passwordEdit = new KLineEdit( this );
+ passwordEdit->setFixedSize( TQSize( 120, 20 ) );
+ passwordEdit->setEchoMode( TQLineEdit::Password );
+ passwordEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( passwordEdit, 5, 2 );
+
+ TQSpacerItem* spacerRow3 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow3, 6, 1 );
+
+ TQLabel* portText = new TQLabel( i18n( "Port:" ), this );
+ portText->setFixedSize( TQSize( 100, 20 ) );
+ portText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( portText, 7, 1 );
+
+ portEdit = new KIntNumInput( this );
+ portEdit->setMinValue(0);
+ portEdit->setSpecialValueText( i18n("Default") );
+ portEdit->setFixedSize( TQSize( 120, 20 ) );
+ portEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( portEdit, 7, 2 );
+
+ TQSpacerItem* spacerRow4 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Fixed );
+ layout->addItem( spacerRow4, 8, 1 );
+
+ TQLabel* dbNameText = new TQLabel( i18n( "Database name:" ), this );
+ dbNameText->setFixedSize( TQSize( 100, 20 ) );
+ dbNameText->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( dbNameText, 9, 1 );
+
+ dbNameEdit = new KLineEdit( this );
+ dbNameEdit->setFixedSize( TQSize( 120, 20 ) );
+ dbNameEdit->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ layout->addWidget( dbNameEdit, 9, 2 );
+
+ TQSpacerItem* spacerRow5 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::MinimumExpanding );
+ layout->addItem( spacerRow5, 10, 1 );
+
+ // Backup options
+ TQGroupBox *backupGBox = new TQGroupBox( this, "backupGBox" );
+ backupGBox->setTitle( i18n( "Backup" ) );
+ backupGBox->setColumns( 2 );
+ layout->addMultiCellWidget( backupGBox, 10, 10, 1, 4 );
+
+ TQLabel *dumpPathLabel = new TQLabel( backupGBox );
+ dumpPathLabel->setText( TQString(i18n( "Path to '%1':" )).arg("pg_dump") );
+ dumpPathRequester = new KURLRequester( backupGBox );
+ dumpPathRequester->setFilter( "pg_dump" );
+
+ TQLabel *psqlPathLabel = new TQLabel( backupGBox );
+ psqlPathLabel->setText( TQString(i18n( "Path to '%1':" )).arg("psql") );
+ psqlPathRequester = new KURLRequester( backupGBox );
+ psqlPathRequester->setFilter( "psql" );
+
+
+ TQSpacerItem* spacerRow6 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::MinimumExpanding );
+ layout->addItem( spacerRow6, 11, 1 );
+ TQSpacerItem* spacerRight = new TQSpacerItem( 10, 10, TQSizePolicy::MinimumExpanding, TQSizePolicy::Fixed );
+ layout->addItem( spacerRight, 1, 4 );
+
+ // Load & Save Current Settings
+ TDEConfig *config = kapp->config();
+ config->setGroup( "Server" );
+ serverEdit->setText( config->readEntry( "Host", "localhost" ) );
+ usernameEdit->setText( config->readEntry( "Username", "" ) );
+ passwordEdit->setText( config->readEntry( "Password", "" ) );
+ portEdit->setValue( config->readNumEntry( "Port", 0 ) );
+ dbNameEdit->setText( config->readEntry( "DBName", "Krecipes" ) );
+ dumpPathRequester->setURL( config->readEntry( "PgDumpPath", "pg_dump" ) );
+ psqlPathRequester->setURL( config->readEntry( "PsqlPath", "psql" ) );
+}
+
+void PostgreSQLServerPrefs::saveOptions( void )
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Server" );
+ config->writeEntry( "Host", serverEdit->text() );
+ config->writeEntry( "Username", usernameEdit->text() );
+ config->writeEntry( "Password", passwordEdit->text() );
+ config->writeEntry( "Port", portEdit->value() );
+ config->writeEntry( "DBName", dbNameEdit->text() );
+ config->writeEntry( "PgDumpPath", dumpPathRequester->url() );
+ config->writeEntry( "PsqlPath", psqlPathRequester->url() );
+}
+
+
+
+SQLiteServerPrefs::SQLiteServerPrefs( TQWidget *parent ) : TQWidget( parent )
+{
+ TQVBoxLayout * Form1Layout = new TQVBoxLayout( this );
+
+ TQHBox *hbox = new TQHBox( this );
+ ( void ) new TQLabel( i18n( "Database file:" ), hbox );
+
+ fileRequester = new KURLRequester( hbox );
+ hbox->setStretchFactor( fileRequester, 2 );
+
+ Form1Layout->addWidget( hbox );
+
+ TQSpacerItem* spacerRow5 = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::MinimumExpanding );
+ Form1Layout->addItem( spacerRow5 );
+
+ TQString sqliteBinary;
+ #if HAVE_SQLITE3
+ sqliteBinary = "sqlite3";
+ #elif HAVE_SQLITE
+ sqliteBinary = "sqlite";
+ #endif
+
+ // Backup options
+ TQGroupBox *backupGBox = new TQGroupBox( this, "backupGBox" );
+ backupGBox->setTitle( i18n( "Backup" ) );
+ backupGBox->setColumns( 2 );
+ Form1Layout->addWidget( backupGBox );
+
+ TQLabel *dumpPathLabel = new TQLabel( backupGBox );
+ dumpPathLabel->setText( TQString(i18n( "Path to '%1':" )).arg(sqliteBinary) );
+ dumpPathRequester = new KURLRequester( backupGBox );
+ dumpPathRequester->setFilter( sqliteBinary );
+
+ // Load & Save Current Settings
+ TDEConfig *config = kapp->config();
+ config->setGroup( "Server" );
+ fileRequester->setURL( config->readEntry( "DBFile", locateLocal( "appdata", "krecipes.krecdb" ) ) );
+ dumpPathRequester->setURL( config->readEntry( "SQLitePath", sqliteBinary ) );
+}
+
+void SQLiteServerPrefs::saveOptions( void )
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Server" );
+ config->writeEntry( "DBFile", fileRequester->url() );
+ config->writeEntry( "SQLitePath", dumpPathRequester->url() );
+}
+
+
+// Server Setttings Dialog
+ServerPrefs::ServerPrefs( TQWidget *parent )
+ : TQWidget( parent )
+{
+ TQVBoxLayout * Form1Layout = new TQVBoxLayout( this, 11, 6 );
+
+ TDEConfig *config = kapp->config();
+ config->setGroup( "DBType" );
+ TQString DBtype = config->readEntry( "Type" );
+ if ( DBtype == "MySQL" )
+ serverWidget = new MySQLServerPrefs( this );
+ else if ( DBtype == "PostgreSQL" )
+ serverWidget = new PostgreSQLServerPrefs( this );
+ else
+ serverWidget = new SQLiteServerPrefs( this );
+
+ serverWidget->setSizePolicy( TQSizePolicy::MinimumExpanding, TQSizePolicy::Minimum );
+ Form1Layout->addWidget( serverWidget );
+
+ Form1Layout->addItem( new TQSpacerItem( 20, 40, TQSizePolicy::Minimum, TQSizePolicy::Expanding ) );
+
+ wizard_button = new TQCheckBox( i18n( "Re-run wizard on next startup" ), this );
+ wizard_button->setSizePolicy( TQSizePolicy::MinimumExpanding, TQSizePolicy::Minimum );
+ Form1Layout->addWidget( wizard_button );
+
+ TQLabel *note = new TQLabel( i18n( "Note: Krecipes must be restarted for most server preferences to take effect." ), this );
+ Form1Layout->addWidget( note );
+
+ adjustSize();
+}
+
+
+void KrecipesPreferences::saveSettings( void )
+{
+ m_pageServer->saveOptions();
+ m_pageNumbers->saveOptions();
+ m_pageImport->saveOptions();
+ m_pagePerformance->saveOptions();
+}
+
+// Save Server settings
+void ServerPrefs::saveOptions( void )
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "DBType" );
+ TQString DBtype = config->readEntry( "Type" );
+ if ( DBtype == "MySQL" )
+ ( ( MySQLServerPrefs* ) serverWidget ) ->saveOptions();
+ else if ( DBtype == "PostgreSQL" )
+ ( ( PostgreSQLServerPrefs* ) serverWidget ) ->saveOptions();
+ else
+ ( ( SQLiteServerPrefs* ) serverWidget ) ->saveOptions();
+
+ if ( wizard_button->isChecked() ) {
+ config->setGroup( "Wizard" );
+ config->writeEntry( "SystemSetup", false );
+ }
+}
+
+//=============Numbers Preferences Dialog================//
+NumbersPrefs::NumbersPrefs( TQWidget *parent )
+ : TQWidget( parent )
+{
+ Form1Layout = new TQVBoxLayout( this, 11, 6 );
+
+ numberButtonGroup = new TQButtonGroup( this );
+ numberButtonGroup->setColumnLayout( 0, TQt::Vertical );
+ numberButtonGroup->layout() ->setSpacing( 6 );
+ numberButtonGroup->layout() ->setMargin( 11 );
+ numberButtonGroup->resize( TQSize() );
+ numberButtonGroupLayout = new TQVBoxLayout( numberButtonGroup->layout() );
+ numberButtonGroupLayout->setAlignment( TQt::AlignTop );
+
+ fractionRadioButton = new TQRadioButton( numberButtonGroup );
+ numberButtonGroupLayout->addWidget( fractionRadioButton );
+
+ decimalRadioButton = new TQRadioButton( numberButtonGroup );
+ numberButtonGroupLayout->addWidget( decimalRadioButton );
+ Form1Layout->addWidget( numberButtonGroup );
+
+ numberButtonGroup->insert( decimalRadioButton, 0 );
+ numberButtonGroup->insert( fractionRadioButton, 1 );
+
+ //ingredient display format
+ TQGroupBox *ingredientGrpBox = new TQGroupBox( 2, TQt::Vertical, i18n( "Ingredients" ), this );
+
+ TQHBox *ingredientBox = new TQHBox( ingredientGrpBox );
+ ( void ) new TQLabel( i18n( "Ingredient Format:" ), ingredientBox );
+ ingredientEdit = new KLineEdit( ingredientBox );
+ ( void ) new TQLabel( i18n( "%n: Name<br>"
+ "%p: Preparation method<br>"
+ "%a: Amount<br>"
+ "%u: Unit"
+ ), ingredientGrpBox );
+
+ Form1Layout->addWidget( ingredientGrpBox );
+
+ //unit display format
+ TQGroupBox *abbrevGrpBox = new TQGroupBox( 1, TQt::Vertical, i18n( "Units" ), this );
+ TQHBox *abbrevBox = new TQHBox( abbrevGrpBox );
+ abbrevButton = new TQCheckBox( i18n( "Use abbreviations" ), abbrevBox );
+ Form1Layout->addWidget( abbrevGrpBox );
+
+
+ Form1Layout->addItem( new TQSpacerItem( 20, 40, TQSizePolicy::Minimum, TQSizePolicy::Expanding ) );
+
+ adjustSize();
+
+ languageChange();
+
+ // Load Current Settings
+ TDEConfig *config = kapp->config();
+ config->setGroup( "Formatting" );
+
+ int button = ( config->readBoolEntry( "Fraction", false ) ) ? 1 : 0;
+ numberButtonGroup->setButton( button );
+
+ ingredientEdit->setText( config->readEntry( "Ingredient", "%n%p: %a %u" ) );
+
+ abbrevButton->setChecked( config->readBoolEntry( "AbbreviateUnits", false ) );
+}
+
+void NumbersPrefs::saveOptions()
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Formatting" );
+
+ bool fraction = !numberButtonGroup->find( 0 ) ->isOn();
+ config->writeEntry( "Fraction", fraction );
+
+ config->writeEntry( "Ingredient", ingredientEdit->text() );
+
+ config->writeEntry( "AbbreviateUnits", abbrevButton->isChecked() );
+}
+
+void NumbersPrefs::languageChange()
+{
+ numberButtonGroup->setTitle( i18n( "Number Format" ) );
+ fractionRadioButton->setText( i18n( "Fraction" ) );
+ decimalRadioButton->setText( i18n( "Decimal" ) );
+}
+
+//=============Import/Export Preferences Dialog================//
+ImportPrefs::ImportPrefs( TQWidget *parent )
+ : TQWidget( parent )
+{
+ // Load Current Settings
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Import" );
+
+ bool overwrite = config->readBoolEntry( "OverwriteExisting", false );
+ bool direct = config->readBoolEntry( "DirectImport", false );
+
+ Form1Layout = new TQVBoxLayout( this, 11, 6 );
+
+ TQGroupBox *importGroup = new TQGroupBox(2,TQt::Vertical,i18n("Import"), this);
+
+ overwriteCheckbox = new TQCheckBox( i18n( "Overwrite recipes with same title" ), importGroup );
+ overwriteCheckbox->setChecked( overwrite );
+ overwriteCheckbox->setSizePolicy( TQSizePolicy::MinimumExpanding, TQSizePolicy::Minimum );
+
+ directImportCheckbox = new TQCheckBox( i18n( "Ask which recipes to import" ), importGroup );
+ directImportCheckbox->setChecked( !direct );
+ directImportCheckbox->setSizePolicy( TQSizePolicy::MinimumExpanding, TQSizePolicy::Minimum );
+
+ Form1Layout->addWidget(importGroup);
+
+ TQGroupBox *exportGroup = new TQGroupBox(1,TQt::Vertical,i18n("Export"), this);
+
+ TQHBox *clipboardHBox = new TQHBox(exportGroup);
+ clipboardHBox->setSpacing(6);
+ TQLabel *clipboardLabel = new TQLabel(i18n("'Copy to Clipboard' format:"),clipboardHBox);
+ clipBoardFormatComboBox = new TQComboBox( clipboardHBox );
+ clipBoardFormatComboBox->insertItem(TQString("%3 (*.txt)").arg(i18n("Plain Text")));
+ clipBoardFormatComboBox->insertItem("Krecipes (*.kreml)");
+ clipBoardFormatComboBox->insertItem("Meal-Master (*.mmf)");
+ clipBoardFormatComboBox->insertItem("Rezkonv (*.rk)");
+ clipBoardFormatComboBox->insertItem("RecipeML (*.xml)");
+ //clipBoardFormatComboBox->insertItem("CookML (*.cml)");
+ clipboardHBox->setStretchFactor(clipBoardFormatComboBox,1);
+
+ config->setGroup( "Export" );
+ TQString clipboardFormat = config->readEntry("ClipboardFormat");
+ if ( clipboardFormat == "*.kreml" )
+ clipBoardFormatComboBox->setCurrentItem(1);
+ else if ( clipboardFormat == "*.mmf" )
+ clipBoardFormatComboBox->setCurrentItem(2);
+ else if ( clipboardFormat == "*.xml" )
+ clipBoardFormatComboBox->setCurrentItem(3);
+ else
+ clipBoardFormatComboBox->setCurrentItem(0);
+
+ Form1Layout->addWidget(exportGroup);
+
+ Form1Layout->addItem( new TQSpacerItem( 20, 40, TQSizePolicy::Minimum, TQSizePolicy::Expanding ) );
+
+ TQWhatsThis::add( directImportCheckbox,
+ i18n("When this is enabled, the importer will show every recipe in the file(s) and allow you to select which recipes you want imported.\n \
+ \
+ Disable this to always import every recipe, which allows for faster and less memory-intensive imports.")
+ );
+
+ adjustSize();
+}
+
+void ImportPrefs::saveOptions()
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Import" );
+
+ config->writeEntry( "OverwriteExisting", overwriteCheckbox->isChecked() );
+ config->writeEntry( "DirectImport", !directImportCheckbox->isChecked() );
+
+ config->setGroup( "Export" );
+ TQString ext = clipBoardFormatComboBox->currentText().mid(clipBoardFormatComboBox->currentText().find("(")+1,clipBoardFormatComboBox->currentText().length()-clipBoardFormatComboBox->currentText().find("(")-2);
+ config->writeEntry( "ClipboardFormat", ext );
+}
+
+
+//=============Performance Options Dialog================//
+PerformancePrefs::PerformancePrefs( TQWidget *parent )
+ : TQWidget( parent )
+{
+ // Load Current Settings
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Performance" );
+
+ int cat_limit = config->readNumEntry( "CategoryLimit", -1 );
+ int limit = config->readNumEntry( "Limit", -1 );
+
+ Form1Layout = new TQVBoxLayout( this, 11, 6 );
+
+ searchAsYouTypeBox = new TQCheckBox( i18n( "Search as you type" ), this );
+ searchAsYouTypeBox->setChecked( config->readBoolEntry( "SearchAsYouType", true ) );
+
+ TQLabel *explainationLabel = new TQLabel( i18n("In most instances these options do not need to be changed. However, limiting the amount of items displayed at once will <b>allow Krecipes to better perform when the database is loaded with many thousands of recipes</b>."), this );
+ explainationLabel->setTextFormat( TQt::RichText );
+
+ TQHBox *catLimitHBox = new TQHBox( this );
+ catLimitInput = new KIntNumInput(catLimitHBox);
+ catLimitInput->setLabel( i18n( "Number of categories to display at once:" ) );
+ catLimitInput->setRange(0,5000,20,true);
+ catLimitInput->setSpecialValueText( i18n("Unlimited") );
+
+ if ( cat_limit > 0 )
+ catLimitInput->setValue( cat_limit );
+
+ TQHBox *limitHBox = new TQHBox( this );
+ limitInput = new KIntNumInput(limitHBox);
+ limitInput->setLabel( i18n( "Number of elements to display at once:" ) );
+ limitInput->setRange(0,100000,1000,true);
+ limitInput->setSpecialValueText( i18n("Unlimited") );
+
+ if ( limit > 0 )
+ limitInput->setValue( limit );
+
+ Form1Layout->addWidget( searchAsYouTypeBox );
+ Form1Layout->addWidget( explainationLabel );
+ Form1Layout->addWidget( catLimitHBox );
+ Form1Layout->addWidget( limitHBox );
+
+ Form1Layout->addItem( new TQSpacerItem( 20, 40, TQSizePolicy::Minimum, TQSizePolicy::Expanding ) );
+
+ adjustSize();
+}
+
+void PerformancePrefs::saveOptions()
+{
+ TDEConfig * config = kapp->config();
+ config->setGroup( "Performance" );
+
+ int catLimit = ( catLimitInput->value() == 0 ) ? -1 : catLimitInput->value();
+ config->writeEntry( "CategoryLimit", catLimit );
+
+ int limit = ( limitInput->value() == 0 ) ? -1 : limitInput->value();
+ config->writeEntry( "Limit", limit );
+
+ config->writeEntry( "SearchAsYouType", searchAsYouTypeBox->isChecked() );
+}
+
+#include "pref.moc"