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"