Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit 68a924af authored by Roman Inflianskas's avatar Roman Inflianskas

Show a message if Konsole part is not installed

Summary:
Show a message if Konsole part is not installed

BUG: 371822
FIXED-IN: 18.04.0

{F5749731}

Reviewers: ngraham, progwolff, elvisangelaccio

Reviewed By: ngraham, progwolff, elvisangelaccio

Subscribers: rkflx, ngraham, elvisangelaccio, broulik, progwolff, #dolphin

Differential Revision: https://phabricator.kde.org/D11118
parent c0797e8a
......@@ -19,9 +19,12 @@
#include "terminalpanel.h"
#include <KIO/DesktopExecParser>
#include <KIO/Job>
#include <KIO/JobUiDelegate>
#include <KJobWidgets>
#include <KLocalizedString>
#include <KMessageWidget>
#include <KParts/ReadOnlyPart>
#include <KPluginFactory>
#include <KPluginLoader>
......@@ -29,8 +32,12 @@
#include <KShell>
#include <kde_terminal_interface.h>
#include <QAction>
#include <QDesktopServices>
#include <QDir>
#include <QLabel>
#include <QShowEvent>
#include <QTimer>
#include <QVBoxLayout>
TerminalPanel::TerminalPanel(QWidget* parent) :
......@@ -132,7 +139,29 @@ void TerminalPanel::showEvent(QShowEvent* event)
connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
m_terminalWidget = m_konsolePart->widget();
m_layout->addWidget(m_terminalWidget);
if (m_konsolePartMissingMessage) {
m_layout->removeWidget(m_konsolePartMissingMessage);
}
m_terminal = qobject_cast<TerminalInterface*>(m_konsolePart);
} else if (!m_konsolePartMissingMessage) {
const auto konsoleInstallUrl = QUrl("appstream://org.kde.konsole.desktop");
const auto konsoleNotInstalledText = i18n("Terminal cannot be shown because Konsole is not installed. "
"Please install it and then reopen the panel.");
m_konsolePartMissingMessage = new KMessageWidget(konsoleNotInstalledText, this);
m_konsolePartMissingMessage->setCloseButtonVisible(false);
m_konsolePartMissingMessage->hide();
if (KIO::DesktopExecParser::hasSchemeHandler(konsoleInstallUrl)) {
auto installKonsoleAction = new QAction(i18n("Install Konsole"), this);
connect(installKonsoleAction, &QAction::triggered, [konsoleInstallUrl]() {
QDesktopServices::openUrl(konsoleInstallUrl);
});
m_konsolePartMissingMessage->addAction(installKonsoleAction);
}
m_layout->addWidget(m_konsolePartMissingMessage);
m_layout->addStretch();
QTimer::singleShot(0, m_konsolePartMissingMessage, &KMessageWidget::animatedShow);
} else {
m_konsolePartMissingMessage->animatedShow();
}
}
if (m_terminal) {
......
......@@ -25,6 +25,7 @@
#include <QQueue>
class TerminalInterface;
class KMessageWidget;
class QVBoxLayout;
class QWidget;
......@@ -93,6 +94,7 @@ private:
QVBoxLayout* m_layout;
TerminalInterface* m_terminal;
QWidget* m_terminalWidget;
KMessageWidget* m_konsolePartMissingMessage;
KParts::ReadOnlyPart* m_konsolePart;
QString m_konsolePartCurrentDirectory;
QQueue<QString> m_sendCdToTerminalHistory;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment