src/dbconfigureform.cpp
author viric@llimona
Thu, 18 May 2006 23:05:01 +0200
changeset 0 04114bce8fd0
permissions -rw-r--r--
Initial from sourceforge's cvs.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     1
#include <qpushbutton.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     2
#include <qapplication.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     3
#include <qvgroupbox.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     4
#include <qlayout.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     5
#include <qlineedit.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     6
#include <qlabel.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     7
#include <qregexp.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     8
#include "dbconfigureform.h"
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
     9
#include "inputfield.h"
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    10
#include "inputcombo.h"
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    11
#include <qvalidator.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    12
#include <qsqldatabase.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    13
#include <qcombobox.h>
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    14
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    15
DBConfigureForm :: DBConfigureForm( Tdb_config *mydb_config,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    16
		QWidget *parent, const char *name )
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    17
		: QDialog( parent, name, TRUE)
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    18
{
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    19
	QVBoxLayout *mainlayout = new QVBoxLayout( this ,10 );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    20
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    21
	// We store the pointer to the data we should set
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    22
	db_config = mydb_config;
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    23
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    24
	// Data InputFields
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    25
	QVGroupBox *fields = new QVGroupBox( "Data", this );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    26
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    27
	host = new InputField( tr("Host:"), db_config->host, fields);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    28
	database = new InputField( tr("Database:"), db_config->database,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    29
			fields);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    30
	username = new InputField( tr("Username:"),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    31
			db_config->username, fields);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    32
	password = new InputField( tr("Password:"), db_config->password,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    33
			fields);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    34
	driver = new InputCombo( tr("Driver:"), QSqlDatabase::drivers(),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    35
			fields);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    36
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    37
	// Password echo mode for password input field.
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    38
	password->qLineEdit()->setEchoMode(QLineEdit::Password);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    39
	// Set the default setting in driver combo
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    40
	driver->qComboBox()->setCurrentText(db_config->driver);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    41
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    42
	mainlayout->addWidget( fields );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    43
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    44
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    45
	// Apply button
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    46
	apply_button = new QPushButton( tr("Apply"), this,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    47
			"ApplyButton");
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    48
	// Accept button
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    49
	QPushButton *accept_button = new QPushButton( tr("Accept"), this,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    50
			"AcceptButton");
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    51
	// Cancel button
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    52
	QPushButton *cancel_button = new QPushButton( tr("Cancel"),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    53
			this, "CancelButton");
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    54
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    55
	// Main form buttons
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    56
	QHBoxLayout *buttons = new QHBoxLayout( mainlayout, 10 );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    57
	buttons->addWidget(apply_button);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    58
	buttons->addWidget(accept_button);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    59
	buttons->addWidget(cancel_button);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    60
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    61
	accept_button->setDefault(TRUE);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    62
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    63
	setCaption( tr("DB Configure Form") );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    64
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    65
	// Connects: buttons
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    66
	connect( apply_button, SIGNAL(clicked()), this,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    67
			SLOT(updateVariables()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    68
	connect( accept_button, SIGNAL(clicked()), this,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    69
			SLOT(acceptChanges()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    70
	connect( cancel_button, SIGNAL(clicked()), this, SLOT(reject()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    71
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    72
	// Connects: textboxes
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    73
	connect( host->qLineEdit(), SIGNAL(textChanged(const QString&)), this,
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    74
			SLOT(setFormChanged()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    75
	connect( database->qLineEdit(), SIGNAL(textChanged(const QString&)),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    76
			this, SLOT(setFormChanged()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    77
	connect( username->qLineEdit(), SIGNAL(textChanged(const QString&)),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    78
			this, SLOT(setFormChanged()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    79
	connect( password->qLineEdit(), SIGNAL(textChanged(const QString&)),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    80
			this, SLOT(setFormChanged()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    81
	connect( driver->qComboBox(), SIGNAL(activated(int)),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    82
			this, SLOT(setFormChanged()) );
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    83
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    84
	// Initial state of the form
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    85
	setFormNoChanged();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    86
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    87
	// Validators for InputFields
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    88
	host->qLineEdit()->setValidator(
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    89
			new QRegExpValidator( QRegExp( "[0-9a-z_\\-\\.]*" ),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    90
			host->qLineEdit() ));
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    91
	username->qLineEdit()->setValidator(
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    92
			new QRegExpValidator( QRegExp( "[0-9a-zA-Z_\\-\\.]+" ),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    93
			host->qLineEdit() ));
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    94
	password->qLineEdit()->setValidator(
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    95
			new QRegExpValidator( QRegExp( "[0-9a-zA-Z_\\-\\.]*" ),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    96
			host->qLineEdit() ));
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    97
	database->qLineEdit()->setValidator(
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    98
			new QRegExpValidator( QRegExp( "[0-9a-zA-Z_\\-\\.]+" ),
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
    99
			host->qLineEdit() ));
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   100
	
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   101
}
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   102
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   103
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   104
int DBConfigureForm :: updateVariables( )
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   105
{
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   106
	/*
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   107
	// ** Check if data is correct. Don't let it end if sth's wrong.
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   108
	if (host->text().find( QRegExp( "[^a-z_\\-\\.]" ) ) != -1 )
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   109
	{
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   110
		// *** A Message Box should be shown
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   111
		qWarning("Host isn't good.");
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   112
		return 1; // ERROR
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   113
	}
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   114
	*/
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   115
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   116
	// Save data
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   117
	db_config->host = host->text();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   118
	db_config->username = username->text();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   119
	db_config->database = database->text();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   120
	db_config->password = password->text();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   121
	db_config->driver = driver->text();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   122
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   123
	setFormNoChanged();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   124
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   125
	return 0;	// OK
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   126
}
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   127
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   128
void DBConfigureForm :: acceptChanges( )
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   129
{
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   130
	if (!updateVariables())
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   131
		accept();
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   132
}
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   133
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   134
void DBConfigureForm :: setFormChanged()
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   135
{
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   136
	apply_button->setEnabled(true);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   137
}
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   138
void DBConfigureForm :: setFormNoChanged()
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   139
{
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   140
	apply_button->setEnabled(false);
04114bce8fd0 Initial from sourceforge's cvs.
viric@llimona
parents:
diff changeset
   141
}