1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/***************************************************************************
inputdlg.h - description
-------------------
begin : Mon Aug 26 2002
copyright : (C) 2002 by Andy Qua
email : andy.qua@blueyonder.co.uk
***************************************************************************/
/***************************************************************************
* *
* 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 <qlayout.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qspinbox.h>
#include <qcombobox.h>
#include <qwidgetstack.h>
#include <qvalidator.h>
#include <qapplication.h>
#include "inputdlg.h"
#include "global.h"
InputDialog :: InputDialog( const QString &label, QWidget* parent, const char* name,
bool modal )
: QDialog( parent, name, modal )
{
lineEdit = 0;
QVBoxLayout *vbox = new QVBoxLayout( this, 6, 6 );
QLabel* l = new QLabel( label, this );
vbox->addWidget( l );
lineEdit = new QLineEdit( this );
vbox->addWidget( lineEdit );
QHBoxLayout *hbox = new QHBoxLayout( 6 );
vbox->addLayout( hbox, AlignRight );
ok = new QPushButton( tr( "&OK" ), this );
ok->setDefault( TRUE );
QPushButton *cancel = new QPushButton( tr( "&Cancel" ), this );
QSize bs( ok->sizeHint() );
if ( cancel->sizeHint().width() > bs.width() )
bs.setWidth( cancel->sizeHint().width() );
ok->setFixedSize( bs );
cancel->setFixedSize( bs );
hbox->addWidget( new QWidget( this ) );
hbox->addWidget( ok );
hbox->addWidget( cancel );
connect( lineEdit, SIGNAL( returnPressed() ),
this, SLOT( tryAccept() ) );
connect( lineEdit, SIGNAL( textChanged( const QString & ) ),
this, SLOT( textChanged( const QString & ) ) );
connect( ok, SIGNAL( clicked() ), this, SLOT( accept() ) );
connect( cancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
resize( QMAX( sizeHint().width(), 240 ), sizeHint().height() );
}
/*!
Destructor.
*/
InputDialog::~InputDialog()
{
}
void InputDialog :: setText( const QString &text )
{
lineEdit->setText( text );
lineEdit->selectAll();
}
QString InputDialog :: getText()
{
return lineEdit->text();
}
QString InputDialog::getText( const QString &caption, const QString &label,
const QString &text, bool *ok, QWidget *parent,
const char *name )
{
InputDialog *dlg = new InputDialog( label, parent, name, true );
dlg->setCaption( caption );
dlg->setText( text );
QString result;
*ok = dlg->exec() == QDialog::Accepted;
if ( *ok )
result = dlg->getText();
delete dlg;
return result;
}
void InputDialog :: textChanged( const QString &s )
{
ok->setEnabled( !s.isEmpty() );
}
void InputDialog :: tryAccept()
{
if ( !lineEdit->text().isEmpty() )
accept();
}
|