You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
krecipes/krecipes/src/pref.cpp

679 lines
26 KiB

/***************************************************************************
* 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 <ntqlayout.h>
#include <ntqlabel.h>
#include <ntqhbox.h>
#include <ntqbuttongroup.h>
#include <ntqcheckbox.h>
#include <ntqradiobutton.h>
#include <ntqpushbutton.h>
#include <ntqtooltip.h>
#include <ntqwhatsthis.h>
#include <ntqframe.h>
#include <ntqcombobox.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"