mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
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
This commit is contained in:
parent
c0797e8ade
commit
68a924af05
|
@ -19,9 +19,12 @@
|
||||||
|
|
||||||
#include "terminalpanel.h"
|
#include "terminalpanel.h"
|
||||||
|
|
||||||
|
#include <KIO/DesktopExecParser>
|
||||||
#include <KIO/Job>
|
#include <KIO/Job>
|
||||||
#include <KIO/JobUiDelegate>
|
#include <KIO/JobUiDelegate>
|
||||||
#include <KJobWidgets>
|
#include <KJobWidgets>
|
||||||
|
#include <KLocalizedString>
|
||||||
|
#include <KMessageWidget>
|
||||||
#include <KParts/ReadOnlyPart>
|
#include <KParts/ReadOnlyPart>
|
||||||
#include <KPluginFactory>
|
#include <KPluginFactory>
|
||||||
#include <KPluginLoader>
|
#include <KPluginLoader>
|
||||||
|
@ -29,8 +32,12 @@
|
||||||
#include <KShell>
|
#include <KShell>
|
||||||
#include <kde_terminal_interface.h>
|
#include <kde_terminal_interface.h>
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QDesktopServices>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QLabel>
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
|
#include <QTimer>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
TerminalPanel::TerminalPanel(QWidget* parent) :
|
TerminalPanel::TerminalPanel(QWidget* parent) :
|
||||||
|
@ -132,7 +139,29 @@ void TerminalPanel::showEvent(QShowEvent* event)
|
||||||
connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
|
connect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
|
||||||
m_terminalWidget = m_konsolePart->widget();
|
m_terminalWidget = m_konsolePart->widget();
|
||||||
m_layout->addWidget(m_terminalWidget);
|
m_layout->addWidget(m_terminalWidget);
|
||||||
|
if (m_konsolePartMissingMessage) {
|
||||||
|
m_layout->removeWidget(m_konsolePartMissingMessage);
|
||||||
|
}
|
||||||
m_terminal = qobject_cast<TerminalInterface*>(m_konsolePart);
|
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) {
|
if (m_terminal) {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <QQueue>
|
#include <QQueue>
|
||||||
|
|
||||||
class TerminalInterface;
|
class TerminalInterface;
|
||||||
|
class KMessageWidget;
|
||||||
class QVBoxLayout;
|
class QVBoxLayout;
|
||||||
class QWidget;
|
class QWidget;
|
||||||
|
|
||||||
|
@ -93,6 +94,7 @@ private:
|
||||||
QVBoxLayout* m_layout;
|
QVBoxLayout* m_layout;
|
||||||
TerminalInterface* m_terminal;
|
TerminalInterface* m_terminal;
|
||||||
QWidget* m_terminalWidget;
|
QWidget* m_terminalWidget;
|
||||||
|
KMessageWidget* m_konsolePartMissingMessage;
|
||||||
KParts::ReadOnlyPart* m_konsolePart;
|
KParts::ReadOnlyPart* m_konsolePart;
|
||||||
QString m_konsolePartCurrentDirectory;
|
QString m_konsolePartCurrentDirectory;
|
||||||
QQueue<QString> m_sendCdToTerminalHistory;
|
QQueue<QString> m_sendCdToTerminalHistory;
|
||||||
|
|
Loading…
Reference in a new issue