X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4ab20ea043b2cd32bb8f92beed2380c2b3171b78..c9217337c717c336eb8cfcc27e9d4992bc1ebb37:/src/panels/terminal/terminalpanel.h diff --git a/src/panels/terminal/terminalpanel.h b/src/panels/terminal/terminalpanel.h index 91a75a989..8eee3c10f 100644 --- a/src/panels/terminal/terminalpanel.h +++ b/src/panels/terminal/terminalpanel.h @@ -1,35 +1,33 @@ -/*************************************************************************** - * Copyright (C) 2007-2010 by Peter Penz * - * * - * 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 * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2007-2010 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #ifndef TERMINALPANEL_H #define TERMINALPANEL_H -#include +#include "kiofuse_interface.h" +#include "panels/panel.h" + +#include -class TerminalInterfaceV2; +class TerminalInterface; +class KActionCollection; +class KMessageWidget; class QVBoxLayout; class QWidget; -namespace KIO { - class StatJob; +namespace KIO +{ +class StatJob; } +namespace KParts +{ +class ReadOnlyPart; +} +class KJob; /** * @brief Shows the terminal which is synchronized with the URL of the * active view. @@ -39,38 +37,61 @@ class TerminalPanel : public Panel Q_OBJECT public: - TerminalPanel(QWidget* parent = 0); - virtual ~TerminalPanel(); + explicit TerminalPanel(QWidget *parent = nullptr); + ~TerminalPanel() override; - /** @see QWidget::sizeHint() */ - virtual QSize sizeHint() const; + /** + * @brief This function is used to set the terminal panels's cwd to + * home when an unmounting request is received. + */ + void goHome(); + bool currentWorkingDirectoryIsChildOf(const QString &path) const; + bool isHiddenInVisibleWindow() const; + bool terminalHasFocus() const; + bool hasProgramRunning() const; + QString runningProgramName() const; + KActionCollection *actionCollection(); -public slots: - /** @see Panel::setUrl(). */ - virtual void setUrl(const KUrl& url); +public Q_SLOTS: void terminalExited(); + void dockVisibilityChanged(); -signals: +Q_SIGNALS: void hideTerminalPanel(); + /** + * Is emitted if the an URL change is requested. + */ + void changeUrl(const QUrl &url); + protected: - /** @see QWidget::showEvent() */ - virtual void showEvent(QShowEvent* event); + bool urlChanged() override; -private slots: - void slotMostLocalUrlResult(KJob* job); + void showEvent(QShowEvent *event) override; + +private Q_SLOTS: + void slotMostLocalUrlResult(KJob *job); + void slotKonsolePartCurrentDirectoryChanged(const QString &dir); private: - void changeDir(const KUrl& url); - void sendCdToTerminal(const QString& path); + enum class HistoryPolicy { AddToHistory, SkipHistory }; + + void changeDir(const QUrl &url); + void sendCdToTerminal(const QString &path, HistoryPolicy addToHistory = HistoryPolicy::AddToHistory); + void sendCdToTerminalKIOFuse(const QUrl &url); private: bool m_clearTerminal; - KIO::StatJob* m_mostLocalUrlJob; + KIO::StatJob *m_mostLocalUrlJob; - QVBoxLayout* m_layout; - TerminalInterfaceV2* m_terminal; - QWidget* m_terminalWidget; + QVBoxLayout *m_layout; + TerminalInterface *m_terminal; + QWidget *m_terminalWidget; + KMessageWidget *m_konsolePartMissingMessage; + KParts::ReadOnlyPart *m_konsolePart; + QString m_konsolePartCurrentDirectory; + QQueue m_sendCdToTerminalHistory; + org::kde::KIOFuse::VFS m_kiofuseInterface; }; #endif // TERMINALPANEL_H