00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#include <config.h>
00020
00021
#include <qvalidator.h>
00022
#include <qpushbutton.h>
00023
#include <qlineedit.h>
00024
#include <qlabel.h>
00025
#include <qlayout.h>
00026
#undef Unsorted // Required for --enable-final (qdir.h)
00027
#include <qfiledialog.h>
00028
00029
#include <kbuttonbox.h>
00030
#include <klocale.h>
00031
#include <kapplication.h>
00032
#include <klineedit.h>
00033
#include <kstdguiitem.h>
00034
00035
#include "klineeditdlg.h"
00036
00037 KLineEditDlg::KLineEditDlg(
const QString&_text,
const QString& _value,
00038
QWidget *parent )
00039 :
KDialogBase( Plain,
QString::null, Ok|Cancel|User1, Ok, parent, 0L, true,
00040 true, KStdGuiItem::clear() )
00041 {
00042
QVBoxLayout *topLayout =
new QVBoxLayout(
plainPage(), 0,
spacingHint() );
00043
QLabel *label =
new QLabel(_text,
plainPage() );
00044 topLayout->addWidget( label, 1 );
00045
00046
edit =
new KLineEdit(
plainPage(), 0L );
00047
edit->setMinimumWidth(
edit->sizeHint().width() * 3);
00048 label->setBuddy(
edit);
00049
00050 connect(
edit, SIGNAL(textChanged(
const QString&)),
00051 SLOT(
slotTextChanged(
const QString&)) );
00052 topLayout->addWidget(
edit, 1 );
00053
00054 connect(
this, SIGNAL(
user1Clicked()),
this, SLOT(
slotClear()) );
00055
edit->
setText( _value );
00056
if ( _value.isEmpty() )
00057 {
00058 enableButtonOK(
false );
00059 enableButton(KDialogBase::User1,
false);
00060 }
00061
edit->setSelection(0,
edit->text().length());
00062
edit->setFocus();
00063 }
00064
00065
00066
00067
#if 0
00068
KLineEditDlg::KLineEditDlg(
const QString&_text,
const QString& _value,
00069
QWidget *parent,
bool _file_mode )
00070 :
QDialog( parent, 0L, true )
00071 {
00072
QGridLayout *layout =
new QGridLayout(
this, 4, 3, 10);
00073
00074
QLabel *label =
new QLabel(_text,
this);
00075 layout->addWidget(label, 0, 0, AlignLeft);
00076
00077 edit =
new KLineEdit(
this, 0L );
00078 edit->setMinimumWidth(edit->sizeHint().width() * 3);
00079 connect( edit, SIGNAL(returnPressed()), SLOT(accept()) );
00080
00081
if ( _file_mode ) {
00082 completion =
new KURLCompletion();
00083 edit->
setCompletionObject( completion );
00084 edit->
setAutoDeleteCompletionObject(
true );
00085 }
else
00086
completion = 0L;
00087
00088 layout->addMultiCellWidget(edit, 1, 1, 0, _file_mode ? 1 : 2);
00089 layout->setColStretch(1, 1);
00090
00091
if (_file_mode) {
00092
QPushButton *browse =
new QPushButton(i18n(
"&Browse..."),
this);
00093 layout->addWidget(browse, 1, 2, AlignCenter);
00094 connect(browse, SIGNAL(clicked()),
00095 SLOT(slotBrowse()));
00096 }
00097
00098
QFrame *hLine =
new QFrame(
this);
00099 hLine->setFrameStyle(QFrame::Sunken|QFrame::HLine);
00100 layout->addMultiCellWidget(hLine, 2, 2, 0, 2);
00101
00102
KButtonBox *bBox =
new KButtonBox(
this);
00103 layout->addMultiCellWidget(bBox, 3, 3, 0, 2);
00104
00105 QPushButton *ok = bBox->
addButton(i18n(
"&OK"));
00106 ok->setDefault(
true);
00107 connect( ok, SIGNAL(clicked()), SLOT(accept()));
00108
00109 bBox->
addStretch(1);
00110
00111 QPushButton *
clear = bBox->
addButton(i18n(
"C&lear"));
00112 connect( clear, SIGNAL(clicked()), SLOT(
slotClear()));
00113
00114 bBox->
addStretch(1);
00115
00116 QPushButton *
cancel = bBox->
addButton(i18n(
"&Cancel"));
00117 connect( cancel, SIGNAL(clicked()), SLOT(reject()));
00118
00119 bBox->
layout();
00120
00121 layout->activate();
00122
00123
edit->
setText( _value );
00124
edit->setSelection(0,
edit->text().length());
00125
edit->setFocus();
00126 }
00127
#endif
00128
00129
00130 KLineEditDlg::~KLineEditDlg()
00131 {
00132 }
00133
00134 void KLineEditDlg::slotClear()
00135 {
00136
edit->
setText(QString::null);
00137 }
00138
00139 void KLineEditDlg::slotTextChanged(
const QString &text)
00140 {
00141
bool on;
00142
if (
edit->validator() ) {
00143
QString str =
edit->text();
00144
int index =
edit->cursorPosition();
00145 on = (
edit->validator()->validate( str, index )
00146 == QValidator::Acceptable );
00147 }
else {
00148 on = !text.isEmpty();
00149 }
00150 enableButtonOK( on );
00151 enableButton(KDialogBase::User1, text.length());
00152 }
00153
00154 QString KLineEditDlg::text()
const
00155
{
00156
return edit->text();
00157 }
00158
00159 QString KLineEditDlg::getText(
const QString &_text,
const QString& _value,
00160
bool *ok,
QWidget *parent,
QValidator *_validator )
00161 {
00162
KLineEditDlg dlg(_text, _value, parent );
00163 dlg.
lineEdit()->setValidator( _validator );
00164 dlg.
slotTextChanged( _value );
00165
00166
bool ok_ = dlg.exec() == QDialog::Accepted;
00167
if ( ok )
00168 *ok = ok_;
00169
if ( ok_ )
00170
return dlg.
text();
00171
return QString::null;
00172 }
00173
00174 QString KLineEditDlg::getText(
const QString &_caption,
const QString &_text,
00175
const QString& _value,
00176
bool *ok,
QWidget *parent,
QValidator *_validator )
00177 {
00178
KLineEditDlg dlg( _text, _value, parent );
00179 dlg.
setCaption( _caption );
00180 dlg.
lineEdit()->setValidator( _validator );
00181 dlg.
slotTextChanged( _value );
00182
00183
bool ok_ = dlg.exec() == QDialog::Accepted;
00184
if ( ok )
00185 *ok = ok_;
00186
if ( ok_ )
00187
return dlg.
text();
00188
return QString::null;
00189 }
00190
00191
void KLineEditDlg::virtual_hook(
int id,
void* data )
00192 { KDialogBase::virtual_hook(
id, data ); }
00193
00194
#include "klineeditdlg.moc"