kio
kurlrequesterdlg.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <sys/stat.h>
00022 #include <unistd.h>
00023
00024 #include <qlabel.h>
00025 #include <qlayout.h>
00026 #include <qstring.h>
00027 #include <qtoolbutton.h>
00028
00029 #include <kaccel.h>
00030 #include <kfiledialog.h>
00031 #include <kglobal.h>
00032 #include <kiconloader.h>
00033 #include <klineedit.h>
00034 #include <klocale.h>
00035 #include <krecentdocument.h>
00036 #include <kurl.h>
00037 #include <kurlrequester.h>
00038
00039 #include "kurlrequesterdlg.h"
00040
00041
00042 KURLRequesterDlg::KURLRequesterDlg( const QString& urlName, QWidget *parent,
00043 const char *name, bool modal )
00044 : KDialogBase( Plain, QString::null, Ok|Cancel|User1, Ok, parent, name,
00045 modal, true, KStdGuiItem::clear() )
00046 {
00047 initDialog(i18n( "Location:" ), urlName);
00048 }
00049
00050 KURLRequesterDlg::KURLRequesterDlg( const QString& urlName, const QString& _text, QWidget *parent, const char *name, bool modal )
00051 : KDialogBase( Plain, QString::null, Ok|Cancel|User1, Ok, parent, name,
00052 modal, true, KStdGuiItem::clear() )
00053 {
00054 initDialog(_text, urlName);
00055 }
00056
00057 KURLRequesterDlg::~KURLRequesterDlg()
00058 {
00059 }
00060
00061 void KURLRequesterDlg::initDialog(const QString &text,const QString &urlName)
00062 {
00063 QVBoxLayout * topLayout = new QVBoxLayout( plainPage(), 0,
00064 spacingHint() );
00065
00066 QLabel * label = new QLabel( text , plainPage() );
00067 topLayout->addWidget( label );
00068
00069 urlRequester_ = new KURLRequester( urlName, plainPage(), "urlRequester" );
00070 urlRequester_->setMinimumWidth( urlRequester_->sizeHint().width() * 3 );
00071 topLayout->addWidget( urlRequester_ );
00072 urlRequester_->setFocus();
00073 connect( urlRequester_->lineEdit(), SIGNAL(textChanged(const QString&)),
00074 SLOT(slotTextChanged(const QString&)) );
00075 bool state = !urlName.isEmpty();
00076 enableButtonOK( state );
00077 enableButton( KDialogBase::User1, state );
00078
00079
00080
00081
00082
00083 connect( this, SIGNAL( user1Clicked() ), SLOT( slotClear() ) );
00084 }
00085
00086 void KURLRequesterDlg::slotTextChanged(const QString & text)
00087 {
00088 bool state = !text.stripWhiteSpace().isEmpty();
00089 enableButtonOK( state );
00090 enableButton( KDialogBase::User1, state );
00091 }
00092
00093 void KURLRequesterDlg::slotClear()
00094 {
00095 urlRequester_->clear();
00096 }
00097
00098 KURL KURLRequesterDlg::selectedURL() const
00099 {
00100 if ( result() == QDialog::Accepted )
00101 return KURL::fromPathOrURL( urlRequester_->url() );
00102 else
00103 return KURL();
00104 }
00105
00106
00107 KURL KURLRequesterDlg::getURL(const QString& dir, QWidget *parent,
00108 const QString& caption)
00109 {
00110 KURLRequesterDlg dlg(dir, parent, "filedialog", true);
00111
00112 dlg.setCaption(caption.isNull() ? i18n("Open") : caption);
00113
00114 dlg.exec();
00115
00116 const KURL& url = dlg.selectedURL();
00117 if (url.isValid())
00118 KRecentDocument::add(url);
00119
00120 return url;
00121 }
00122
00123 KFileDialog * KURLRequesterDlg::fileDialog()
00124 {
00125 return urlRequester_->fileDialog();
00126 }
00127
00128 KURLRequester * KURLRequesterDlg::urlRequester()
00129 {
00130 return urlRequester_;
00131 }
00132
00133 #include "kurlrequesterdlg.moc"
00134
00135