diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-10-13 11:56:14 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-10-29 21:58:42 +0900 |
commit | 2879ff70be9271550477982a1a6371714db38562 (patch) | |
tree | c2054149dba923ab080fe7093432c7663a990111 /src/pref.cpp | |
parent | 3eb38d2556f676d1027746f20bf12a1dd74451ef (diff) | |
download | krecipes-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.cpp | 678 |
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" |