File indexing completed on 2024-04-28 05:48:39
0001 /*************************************************************************** 0002 * This file is part of Kate search plugin * 0003 * SPDX-FileCopyrightText: 2014 Kåre Särs <kare.sars@iki.fi> * 0004 * * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later * 0006 ***************************************************************************/ 0007 0008 #include "UrlInserter.h" 0009 #include <KLocalizedString> 0010 #include <QCompleter> 0011 #include <QDebug> 0012 #include <QFileDialog> 0013 #include <QFileInfo> 0014 #include <QFileSystemModel> 0015 #include <QHBoxLayout> 0016 #include <QIcon> 0017 0018 UrlInserter::UrlInserter(const QUrl &startUrl, QWidget *parent) 0019 : QWidget(parent) 0020 , m_startUrl(startUrl) 0021 , m_replace(false) 0022 { 0023 m_lineEdit = new QLineEdit(); 0024 QCompleter *completer = new QCompleter(m_lineEdit); 0025 QFileSystemModel *model = new QFileSystemModel(m_lineEdit); 0026 model->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Executable); 0027 completer->setModel(model); 0028 m_lineEdit->setCompleter(completer); 0029 0030 m_toolButton = new QToolButton(); 0031 m_toolButton->setIcon(QIcon::fromTheme(QStringLiteral("archive-insert-directory"))); 0032 m_toolButton->setToolTip(i18n("Insert path")); 0033 0034 QHBoxLayout *layout = new QHBoxLayout(this); 0035 layout->setContentsMargins(0, 0, 0, 0); 0036 layout->setSpacing(0); 0037 layout->addWidget(m_lineEdit); 0038 layout->addWidget(m_toolButton); 0039 setFocusProxy(m_lineEdit); 0040 connect(m_toolButton, &QToolButton::clicked, this, &UrlInserter::insertFolder); 0041 } 0042 0043 void UrlInserter::insertFolder() 0044 { 0045 QUrl startUrl; 0046 if (QFileInfo::exists(m_lineEdit->text())) { 0047 startUrl.setPath(m_lineEdit->text()); 0048 } else { 0049 startUrl = m_startUrl; 0050 } 0051 QString folder = QFileDialog::getExistingDirectory(this, i18n("Select directory to insert"), startUrl.path()); 0052 if (!folder.isEmpty()) { 0053 if (!m_replace) { 0054 m_lineEdit->insert(folder); 0055 } else { 0056 m_lineEdit->setText(folder); 0057 } 0058 } 0059 } 0060 0061 void UrlInserter::setReplace(bool replace) 0062 { 0063 m_replace = replace; 0064 } 0065 0066 #include "moc_UrlInserter.cpp"