/***************************************************************************
* $Id$
**
* Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
**
* This file is part of an example program for Qt.  This example
* program may be used, distributed and modified without limitation.
**
****************************************************************************/

import org.trinitydesktop.qt.*;

class Wizard  extends TQWizard
{
protected TQHBox page1, page2, page3;
protected TQLineEdit key, firstName, lastName, address, phone, email;
protected TQLabel lKey, lFirstName, lLastName, lAddress, lPhone, lEmail;




Wizard( )
{
	this(null, null);
}

Wizard( TQWidget parent, String name )
{
    super( parent, name, true );
    setupPage1();
    setupPage2();
    setupPage3();
    connect(this, SIGNAL("selected(String)"), this, SLOT("doShowPage(String)"));
    connect(finishButton(), SIGNAL("clicked()"), tqApp(), SLOT("quit()"));
    key.setFocus();
}

void setupPage1()
{
    page1 = new TQHBox( this );
    page1.setSpacing(8);

    TQLabel info = new TQLabel( page1 );
    info.setPalette( new TQPalette(yellow()) );
    info.setText( "Enter your personal\n"
                   + "key here.\n\n"
                   + "Your personal key\n"
                   + "consists of 4 digits" );
    info.setIndent( 8 );
    info.setMaximumWidth( info.sizeHint().width() );

    TQVBox page = new TQVBox( page1 );

    TQHBox row1 = new TQHBox( page );

    new TQLabel( "Key:", row1 );

    key = new TQLineEdit( row1 );
    key.setMaxLength( 4 );
    key.setValidator( new TQIntValidator( 1000, 9999, key ) );

    connect( key, SIGNAL(" textChanged( String )"),
	     this, SLOT(" keyChanged( String )") );

    addPage( page1, "Personal Key" );

    setNextEnabled( page1, false );
    setHelpEnabled( page1, false );
}

void setupPage2()
{
    page2 = new TQHBox( this );
    page2.setSpacing(8);

    TQLabel info = new TQLabel( page2 );
    info.setPalette( new TQPalette(yellow()) );
    info.setText( "\n"
                   + "  Enter your personal  \n"
                   + "  data here.  \n\n"
                   + "  The required fields are  \n"
                   + "  First Name, Last Name \n"
                   + "  and E-Mail.  \n" );
    info.setIndent(8);
    info.setMaximumWidth( info.sizeHint().width() );

    TQVBox page = new TQVBox( page2 );

    TQHBox row1 = new TQHBox( page );
    TQHBox row2 = new TQHBox( page );
    TQHBox row3 = new TQHBox( page );
    TQHBox row4 = new TQHBox( page );
    TQHBox row5 = new TQHBox( page );

    TQLabel label1 = new TQLabel( " First Name: ", row1 );
    label1.setAlignment( Qt.AlignVCenter );
    TQLabel label2 = new TQLabel( " Last Name: ", row2 );
    label2.setAlignment( Qt.AlignVCenter );
    TQLabel label3 = new TQLabel( " Address: ", row3 );
    label3.setAlignment( Qt.AlignVCenter );
    TQLabel label4 = new TQLabel( " Phone Number: ", row4 );
    label4.setAlignment( Qt.AlignVCenter );
    TQLabel label5 = new TQLabel( " E-Mail: ", row5 );
    label5.setAlignment( Qt.AlignVCenter );

    label1.setMinimumWidth( label4.sizeHint().width() );
    label2.setMinimumWidth( label4.sizeHint().width() );
    label3.setMinimumWidth( label4.sizeHint().width() );
    label4.setMinimumWidth( label4.sizeHint().width() );
    label5.setMinimumWidth( label4.sizeHint().width() );

    firstName = new TQLineEdit( row1 );
    lastName = new TQLineEdit( row2 );
    address = new TQLineEdit( row3 );
    phone = new TQLineEdit( row4 );
    email = new TQLineEdit( row5 );

    connect( firstName, SIGNAL(" textChanged( String )"),
	     this, SLOT(" dataChanged( String )") );
    connect( lastName, SIGNAL(" textChanged( String )"),
	     this, SLOT(" dataChanged( String )") );
    connect( email, SIGNAL(" textChanged( String )"),
	     this, SLOT(" dataChanged( String )") );

    addPage( page2, "Personal Data" );

    setHelpEnabled( page2, false );
}

void setupPage3()
{
    page3 = new TQHBox( this );
    page3.setSpacing(8);

    TQLabel info = new TQLabel( page3 );
    info.setPalette( new TQPalette(yellow()) );
    info.setText( "\n"
                   + "  Look here to see of  \n"
                   + "  the data you entered  \n"
                   + "  is correct. To confirm,  \n"
                   + "  press the [Finish] button  \n"
                   + "  else go back to correct  \n"
                   + "  mistakes." );
    info.setIndent(8);
    info.setAlignment( AlignTop|AlignLeft );
    info.setMaximumWidth( info.sizeHint().width() );

    TQVBox page = new TQVBox( page3 );

    TQHBox row1 = new TQHBox( page );
    TQHBox row2 = new TQHBox( page );
    TQHBox row3 = new TQHBox( page );
    TQHBox row4 = new TQHBox( page );
    TQHBox row5 = new TQHBox( page );
    TQHBox row6 = new TQHBox( page );

    TQLabel label1 = new TQLabel( " Personal Key: ", row1 );
    label1.setAlignment( Qt.AlignVCenter );
    TQLabel label2 = new TQLabel( " First Name: ", row2 );
    label2.setAlignment( Qt.AlignVCenter );
    TQLabel label3 = new TQLabel( " Last Name: ", row3 );
    label3.setAlignment( Qt.AlignVCenter );
    TQLabel label4 = new TQLabel( " Address: ", row4 );
    label4.setAlignment( Qt.AlignVCenter );
    TQLabel label5 = new TQLabel( " Phone Number: ", row5 );
    label5.setAlignment( Qt.AlignVCenter );
    TQLabel label6 = new TQLabel( " E-Mail: ", row6 );
    label6.setAlignment( Qt.AlignVCenter );

    label1.setMinimumWidth( label1.sizeHint().width() );
    label2.setMinimumWidth( label1.sizeHint().width() );
    label3.setMinimumWidth( label1.sizeHint().width() );
    label4.setMinimumWidth( label1.sizeHint().width() );
    label5.setMinimumWidth( label1.sizeHint().width() );
    label6.setMinimumWidth( label1.sizeHint().width() );

    lKey = new TQLabel( row1 );
    lFirstName = new TQLabel( row2 );
    lLastName = new TQLabel( row3 );
    lAddress = new TQLabel( row4 );
    lPhone = new TQLabel( row5 );
    lEmail = new TQLabel( row6 );

    addPage( page3, "Finish" );

    setFinish( page3, true );
    setHelpEnabled( page3, false );
}

// The TQWizard.showPage() virtual method callback isn't implemented in the java
// bindings yet, so use the selected() signal connected to this slot 'doShowPage()'
// instead..
public void doShowPage( String title )
{
	TQWidget page = currentPage();

    if ( page == page1 ) {
    } else if ( page == page2 ) {
    } else if ( page == page3 ) {
        lKey.setText( key.text() );
        lFirstName.setText( firstName.text() );
        lLastName.setText( lastName.text() );
        lAddress.setText( address.text() );
        lPhone.setText( phone.text() );
        lEmail.setText( email.text() );
    }

    if ( page == page1 ) {
        keyChanged( key.text() );
        key.setFocus();
    } else if ( page == page2 ) {
        dataChanged( firstName.text() );
        firstName.setFocus();
    } else if ( page == page3 ) {
        finishButton().setEnabled( true );
        finishButton().setFocus();
    }
}

void keyChanged( String text )
{
    StringBuffer t = new StringBuffer(text);
    int[] p = { 0 };
    boolean on = ( key.validator().validate(t, p) == TQValidator.Acceptable );
    nextButton().setEnabled( on );
}

void dataChanged( String s )
{
    if ( !firstName.text().equals("") &&
         !lastName.text().equals("") &&
         !email.text().equals("") )
        nextButton().setEnabled( true );
    else
        nextButton().setEnabled( false );
}
}
