File indexing completed on 2024-05-05 05:51:24
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2001 Christoph Cullmann <cullmann@kde.org> 0003 SPDX-FileCopyrightText: 2001 Joseph Wenninger <jowenn@kde.org> 0004 SPDX-FileCopyrightText: 2001 Anders Lund <anders.lund@lund.tdcadsl.dk> 0005 SPDX-FileCopyrightText: 2007 Mirko Stocker <me@misto.ch> 0006 SPDX-FileCopyrightText: 2009 Dominik Haumann <dhaumann kde org> 0007 0008 SPDX-License-Identifier: LGPL-2.0-only 0009 */ 0010 0011 // BEGIN Includes 0012 #include "katefilebrowserplugin.h" 0013 #include "katefilebrowser.h" 0014 #include "katefilebrowserconfig.h" 0015 0016 #include <KLocalizedString> 0017 #include <KPluginFactory> 0018 0019 #include <QIcon> 0020 #include <QKeyEvent> 0021 // END Includes 0022 0023 K_PLUGIN_FACTORY_WITH_JSON(KateFileBrowserPluginFactory, "katefilebrowserplugin.json", registerPlugin<KateFileBrowserPlugin>();) 0024 0025 // BEGIN KateFileBrowserPlugin 0026 KateFileBrowserPlugin::KateFileBrowserPlugin(QObject *parent, const QVariantList &) 0027 : KTextEditor::Plugin(parent) 0028 { 0029 } 0030 0031 QObject *KateFileBrowserPlugin::createView(KTextEditor::MainWindow *mainWindow) 0032 { 0033 KateFileBrowserPluginView *view = new KateFileBrowserPluginView(this, mainWindow); 0034 connect(view, &KateFileBrowserPluginView::destroyed, this, &KateFileBrowserPlugin::viewDestroyed); 0035 m_views.append(view); 0036 return view; 0037 } 0038 0039 void KateFileBrowserPlugin::viewDestroyed(QObject *view) 0040 { 0041 // do not access the view pointer, since it is partially destroyed already 0042 m_views.removeAll(view); 0043 } 0044 0045 int KateFileBrowserPlugin::configPages() const 0046 { 0047 return 1; 0048 } 0049 0050 KTextEditor::ConfigPage *KateFileBrowserPlugin::configPage(int number, QWidget *parent) 0051 { 0052 if (number != 0) { 0053 return nullptr; 0054 } 0055 return new KateFileBrowserConfigPage(parent, m_views[0]->m_fileBrowser); 0056 } 0057 // END KateFileBrowserPlugin 0058 0059 // BEGIN KateFileBrowserPluginView 0060 KateFileBrowserPluginView::KateFileBrowserPluginView(KTextEditor::Plugin *plugin, KTextEditor::MainWindow *mainWindow) 0061 : QObject(mainWindow) 0062 , m_toolView(mainWindow->createToolView(plugin, 0063 QStringLiteral("kate_private_plugin_katefileselectorplugin"), 0064 KTextEditor::MainWindow::Left, 0065 QIcon::fromTheme(QStringLiteral("document-open-folder")), 0066 i18n("Filesystem"))) 0067 , m_fileBrowser(new KateFileBrowser(mainWindow, m_toolView)) 0068 , m_mainWindow(mainWindow) 0069 { 0070 m_toolView->installEventFilter(this); 0071 } 0072 0073 KateFileBrowserPluginView::~KateFileBrowserPluginView() 0074 { 0075 // cleanup, kill toolview + console 0076 delete m_fileBrowser->parent(); 0077 } 0078 0079 void KateFileBrowserPluginView::readSessionConfig(const KConfigGroup &config) 0080 { 0081 m_fileBrowser->readSessionConfig(config); 0082 } 0083 0084 void KateFileBrowserPluginView::writeSessionConfig(KConfigGroup &config) 0085 { 0086 m_fileBrowser->writeSessionConfig(config); 0087 } 0088 0089 bool KateFileBrowserPluginView::eventFilter(QObject *obj, QEvent *event) 0090 { 0091 if (event->type() == QEvent::KeyPress) { 0092 QKeyEvent *ke = static_cast<QKeyEvent *>(event); 0093 if ((obj == m_toolView) && (ke->key() == Qt::Key_Escape)) { 0094 m_mainWindow->hideToolView(m_toolView); 0095 event->accept(); 0096 return true; 0097 } 0098 } 0099 return QObject::eventFilter(obj, event); 0100 } 0101 // ENDKateFileBrowserPluginView 0102 0103 #include "katefilebrowserplugin.moc" 0104 #include "moc_katefilebrowserplugin.cpp"