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
|
/***************************************************************************
* Copyright (C) 2005-2009 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 "ui_urldlg.h"
#include <KUrlRequester>
#include <KConfigGroup>
#include <KHistoryComboBox>
#include <KLocalizedString>
#include <KSharedConfig>
#include <QLabel>
#include <QVBoxLayout>
UrlDlg::UrlDlg(QWidget *parent)
: QDialog(parent)
, m_urlRequester(nullptr)
, m_ui(new Ui::UrlDlg)
{
m_ui->setupUi(this);
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setShortcut(Qt::CTRL | Qt::Key_Return);
KHistoryComboBox *combo = new KHistoryComboBox(this);
combo->setDuplicatesEnabled(false);
KConfigGroup kc = KSharedConfig::openConfig()->group("Open-repository settings");
int max = kc.readEntry(QLatin1String("Maximum history"), 15);
combo->setMaxCount(max);
const QStringList list = kc.readEntry(QLatin1String("History"), QStringList());
combo->setHistoryItems(list);
combo->setMinimumWidth(100);
combo->adjustSize();
if (combo->width() > 300) {
combo->resize(300, combo->height());
}
m_urlRequester = new KUrlRequester(combo, this);
m_ui->topLayout->insertWidget(1, m_urlRequester);
m_urlRequester->setFocus();
m_urlRequester->setMode(KFile::ExistingOnly | KFile::Directory);
connect(m_urlRequester->comboBox(), &KComboBox::currentTextChanged,
this, &UrlDlg::slotTextChanged);
slotTextChanged(QString());
m_urlRequester->adjustSize();
connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &UrlDlg::accept);
}
UrlDlg::~UrlDlg()
{
delete m_ui;
}
void UrlDlg::accept()
{
KHistoryComboBox *combo = static_cast<KHistoryComboBox *>(m_urlRequester->comboBox());
if (combo) {
combo->addToHistory(m_urlRequester->url().url());
KConfigGroup kc = KSharedConfig::openConfig()->group("Open-repository settings");
kc.writeEntry(QLatin1String("History"), combo->historyItems());
kc.sync();
}
QDialog::accept();
}
/*!
\fn UrlDlg::slotTextChanged(const QString&)
*/
void UrlDlg::slotTextChanged(const QString &text)
{
bool state = !text.trimmed().isEmpty();
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(state);
}
/*!
\fn UrlDlg::getUrl(QWidget*parent)
*/
QUrl UrlDlg::getUrl(QWidget *parent)
{
QUrl ret;
QPointer<UrlDlg> dlg(new UrlDlg(parent));
dlg->setWindowTitle(i18nc("@title:window", "Open"));
if (dlg->exec() == QDialog::Accepted) {
// added by Wellu Mäkinen <wellu@wellu.org>
//
// get rid of leading whitespace
// that is %20 in encoded form
QString url = dlg->m_urlRequester->url().toString();
// decodes %20 to normal spaces
// trims the whitespace from both ends
// of the URL
ret = QUrl(url.trimmed());
}
delete dlg;
return ret;
}
|