You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesvn/src/urldlg.cpp

147 lines
4.6 KiB

/***************************************************************************
* Copyright (C) 2005-2007 by Rajko Albrecht *
* ral@alwins-world.de *
* *
* 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. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#include "urldlg.h"
#include <kcombobox.h>
#include <kurlrequester.h>
#include <layout.h>
#include <kconfig.h>
#include <klocale.h>
#include <kglobal.h>
#include <klineedit.h>
#include <kurl.h>
#include <kdebug.h>
#include <tqlabel.h>
UrlDlg::UrlDlg(TQWidget *parent, const char *name)
: KDialogBase(Plain, TQString(), Ok|Cancel|User1, Ok, parent, name,
true,true, KStdGuiItem::clear())
{
init_dlg();
}
UrlDlg::~UrlDlg()
{
}
/*!
\fn UrlDlg::init_dlg
*/
void UrlDlg::init_dlg()
{
TQVBoxLayout * topLayout = new TQVBoxLayout( plainPage(), 0, spacingHint());
TQLabel * label = new TQLabel(i18n("Open repository or working copy") , plainPage());
topLayout->addWidget(label);
KHistoryCombo * combo = new KHistoryCombo(0,"history_combo");
combo->setDuplicatesEnabled(false);
KConfig *kc = KGlobal::config();
KConfigGroupSaver ks( kc, TQString::fromLatin1("Open-repository settings") );
int max = kc->readNumEntry( TQString::fromLatin1("Maximum history"), 15 );
combo->setMaxCount( max );
TQStringList list = kc->readListEntry( TQString::fromLatin1("History") );
combo->setHistoryItems(list);
combo->setMinimumWidth(100);
combo->adjustSize();
if (combo->width()>300) {
combo->resize(300,combo->height());
}
urlRequester_ = new KURLRequester(combo, plainPage(), "urlRequester");
topLayout->addWidget( urlRequester_ );
urlRequester_->setFocus();
KFile::Mode mode = static_cast<KFile::Mode>(KFile::ExistingOnly|KFile::Directory);
urlRequester_->setMode(mode);
connect(urlRequester_->comboBox(),TQT_SIGNAL(textChanged(const TQString&)),TQT_SLOT(slotTextChanged(const TQString&)));
enableButtonOK( false );
enableButton( KDialogBase::User1, false );
connect( this, TQT_SIGNAL(user1Clicked()), TQT_SLOT(slotClear()));
urlRequester_->adjustSize();
resize(TQSize(400,sizeHint().height()));
}
/*!
\fn UrlDlg::accept()
*/
void UrlDlg::accept()
{
KHistoryCombo *combo = static_cast<KHistoryCombo*>(urlRequester_->comboBox());
if (combo) {
combo->addToHistory(urlRequester_->url());
KConfig *kc = KGlobal::config();
KConfigGroupSaver ks(kc, TQString::fromLatin1("Open-repository settings"));
kc->writeEntry(TQString::fromLatin1("History"), combo->historyItems());
kc->sync();
}
KDialogBase::accept();
}
/*!
\fn UrlDlg::slotTextChanged(const TQString&)
*/
void UrlDlg::slotTextChanged(const TQString&text)
{
bool state = !text.stripWhiteSpace().isEmpty();
enableButtonOK( state );
enableButton( KDialogBase::User1, state );
}
/*!
\fn UrlDlg::slotClear()
*/
void UrlDlg::slotClear()
{
urlRequester_->clear();
}
/*!
\fn UrlDlg::selectedURL()
*/
KURL UrlDlg::selectedURL()
{
if ( result() == TQDialog::Accepted ) {
KURL uri = urlRequester_->url();
return uri;
//return KURL::fromPathOrURL( urlRequester_->url() );
} else {
return KURL();
}
}
/*!
\fn UrlDlg::getURL(TQWidget*parent)
*/
KURL UrlDlg::getURL(TQWidget*parent)
{
UrlDlg dlg(parent);
dlg.setCaption(i18n("Open"));
dlg.exec();
const KURL& url = dlg.selectedURL();
return url;
}
#include "urldlg.moc"