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/dialogs/dbimportdialog.cpp

220 lines
6.6 KiB

/***************************************************************************
* Copyright (C) 2004 by *
* 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 "dbimportdialog.h"
#include <unistd.h> //for getuid()
#include <pwd.h> //getpwuid()
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <ntqpushbutton.h>
#include <ntqbuttongroup.h>
#include <ntqradiobutton.h>
#include <ntqwidgetstack.h>
#include <ntqwidget.h>
#include <ntqlineedit.h>
#include <ntqlabel.h>
#include <ntqlayout.h>
#include <ntqtooltip.h>
#include <ntqwhatsthis.h>
#include <ntqhbox.h>
#include <tdeconfig.h>
#include <kdebug.h>
#include <tdelocale.h>
#include <kurlrequester.h>
#include <knuminput.h>
DBImportDialog::DBImportDialog( TQWidget *parent, const char *name )
: KDialogBase( parent, name, true, i18n( "Database Import" ),
KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok )
{
setButtonBoxOrientation( Vertical );
TQHBox *page = makeHBoxMainWidget();
dbButtonGroup = new TQButtonGroup( page, "dbButtonGroup" );
dbButtonGroup->setSizePolicy( TQSizePolicy( ( TQSizePolicy::SizeType ) 4, ( TQSizePolicy::SizeType ) 5, 0, 0, dbButtonGroup->sizePolicy().hasHeightForWidth() ) );
dbButtonGroup->setColumnLayout( 0, TQt::Vertical );
dbButtonGroup->layout() ->setSpacing( 6 );
dbButtonGroup->layout() ->setMargin( 11 );
dbButtonGroupLayout = new TQVBoxLayout( dbButtonGroup->layout() );
dbButtonGroupLayout->setAlignment( TQt::AlignTop );
liteRadioButton = new TQRadioButton( dbButtonGroup, "liteRadioButton" );
liteRadioButton->setChecked( TRUE );
dbButtonGroupLayout->addWidget( liteRadioButton );
mysqlRadioButton = new TQRadioButton( dbButtonGroup, "mysqlRadioButton" );
dbButtonGroupLayout->addWidget( mysqlRadioButton );
psqlRadioButton = new TQRadioButton( dbButtonGroup, "psqlRadioButton" );
dbButtonGroupLayout->addWidget( psqlRadioButton );
paramStack = new TQWidgetStack( page, "paramStack" );
paramStack->setSizePolicy( TQSizePolicy( ( TQSizePolicy::SizeType ) 7, ( TQSizePolicy::SizeType ) 5, 0, 0, paramStack->sizePolicy().hasHeightForWidth() ) );
sqlitePage = new TQWidget( paramStack, "sqlitePage" );
serverPageLayout_2 = new TQVBoxLayout( sqlitePage, 11, 6, "serverPageLayout_2" );
TQLabel *sqliteLabel = new TQLabel( i18n( "Database file:" ), sqlitePage );
serverPageLayout_2->addWidget( sqliteLabel );
sqliteDBRequester = new KURLRequester( sqlitePage, "sqliteDBRequester" );
sqliteDBRequester->setShowLocalProtocol( false );
serverPageLayout_2->addWidget( sqliteDBRequester );
TQSpacerItem *vSpacer = new TQSpacerItem( 20, 20, TQSizePolicy::Minimum, TQSizePolicy::Expanding );
serverPageLayout_2->addItem(vSpacer);
paramStack->addWidget( sqlitePage, 1 );
serverPage = new TQWidget( paramStack, "serverPage" );
serverPageLayout = new TQVBoxLayout( serverPage, 11, 6, "serverPageLayout" );
layout5 = new TQGridLayout( 0, 1, 1, 0, 6, "layout5" );
hostEdit = new TQLineEdit( serverPage, "hostEdit" );
layout5->addWidget( hostEdit, 0, 1 );
hostLabel = new TQLabel( serverPage, "hostLabel" );
layout5->addWidget( hostLabel, 0, 0 );
userEdit = new TQLineEdit( serverPage, "userEdit" );
layout5->addWidget( userEdit, 1, 1 );
userLabel = new TQLabel( serverPage, "userLabel" );
layout5->addWidget( userLabel, 1, 0 );
passwordEdit = new TQLineEdit( serverPage, "passwordEdit" );
passwordEdit->setEchoMode( TQLineEdit::Password );
layout5->addWidget( passwordEdit, 2, 1 );
passwordLabel = new TQLabel( serverPage, "passwordLabel" );
layout5->addWidget( passwordLabel, 2, 0 );
portEdit = new KIntNumInput( serverPage, "portEdit" );
portEdit->setMinValue(0);
portEdit->setValue(0);
layout5->addWidget( portEdit, 3, 1 );
portLabel = new TQLabel( serverPage, "portLabel" );
layout5->addWidget( portLabel, 3, 0 );
nameEdit = new TQLineEdit( serverPage, "nameEdit" );
layout5->addWidget( nameEdit, 4, 1 );
nameLabel = new TQLabel( serverPage, "nameLabel" );
layout5->addWidget( nameLabel, 4, 0 );
serverPageLayout->addLayout( layout5 );
paramStack->addWidget( serverPage, 0 );
languageChange();
#if (!HAVE_MYSQL)
mysqlRadioButton->setEnabled( false );
#endif
#if (!HAVE_POSTGRESQL)
psqlRadioButton->setEnabled( false );
#endif
#if (!(HAVE_SQLITE || HAVE_SQLITE3))
liteRadioButton->setEnabled( false );
#if (HAVE_MYSQL)
dbButtonGroup->setButton( 1 ); // Otherwise by default liteCheckBox is checked even if it's disabled
switchDBPage(1);
#else
#if (HAVE_POSTGRESQL)
dbButtonGroup->setButton( 2 );
switchDBPage(2);
#endif
#endif
#endif
// signals and slots connections
connect( dbButtonGroup, TQ_SIGNAL( clicked( int ) ), this, TQ_SLOT( switchDBPage( int ) ) );
}
void DBImportDialog::languageChange()
{
dbButtonGroup->setTitle( i18n( "Database" ) );
liteRadioButton->setText( "SQLite" );
mysqlRadioButton->setText( "MySQL" );
psqlRadioButton->setText( "PostgreSQL" );
hostLabel->setText( i18n( "Server:" ) );
userLabel->setText( i18n( "Username:" ) );
passwordLabel->setText( i18n( "Password:" ) );
nameLabel->setText( i18n( "Database name:" ) );
portLabel->setText( i18n( "Port:" ) );
portEdit->setSpecialValueText( i18n("Default") );
//set defaults
hostEdit->setText( "localhost" );
nameEdit->setText( "Krecipes" );
// get username
uid_t userID;
struct passwd *user;
userID = getuid();
user = getpwuid ( userID );
TQString username(user->pw_name);
userEdit->setText( username );
}
void DBImportDialog::switchDBPage( int id )
{
switch ( id ) {
case 0: //SQLite
paramStack->raiseWidget( sqlitePage );
break;
case 1: //MySQL
case 2: //PostgreSQL
paramStack->raiseWidget( serverPage );
break;
}
}
TQString DBImportDialog::dbType() const
{
int id = dbButtonGroup->id( dbButtonGroup->selected() );
switch ( id ) {
case 0:
return "SQLite";
case 1:
return "MySQL";
case 2:
return "PostgreSQL";
default:
return TQString::null;
}
}
void DBImportDialog::serverParams( TQString &host, TQString &user, TQString &pass, int &port, TQString &table ) const
{
host = hostEdit->text();
user = userEdit->text();
pass = passwordEdit->text();
table = nameEdit->text();
port = portEdit->value();
}
TQString DBImportDialog::dbFile() const
{
return sqliteDBRequester->url();
}
#include "dbimportdialog.moc"