X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/3535ec7f7ef51ab979ec386c41267c81854fed87..d6488887ecf69d7f192b94de8dce34fae0b7eb76:/src/terminalsidebarpage.cpp diff --git a/src/terminalsidebarpage.cpp b/src/terminalsidebarpage.cpp index 841959097..25a92b380 100644 --- a/src/terminalsidebarpage.cpp +++ b/src/terminalsidebarpage.cpp @@ -22,8 +22,10 @@ #include #include #include +#include -#include +#include +#include TerminalSidebarPage::TerminalSidebarPage(QWidget* parent) : SidebarPage(parent), @@ -38,27 +40,43 @@ TerminalSidebarPage::~TerminalSidebarPage() { } +QSize TerminalSidebarPage::sizeHint() const +{ + QSize size = SidebarPage::sizeHint(); + size.setHeight(200); + return size; +} + void TerminalSidebarPage::setUrl(const KUrl& url) { - SidebarPage::setUrl(url); - // TODO: synchronize terminal - // m_terminal->showShellInDir(...); + if (!SidebarPage::url().equals(url, KUrl::CompareWithoutTrailingSlash)) { + SidebarPage::setUrl(url); + if ((m_terminal != 0) && isVisible()) { + m_terminal->sendInput("cd " + KShell::quoteArg(url.path()) + '\n'); + } + } } void TerminalSidebarPage::showEvent(QShowEvent* event) { + if (event->spontaneous()) { + SidebarPage::showEvent(event); + return; + } + if (m_terminal == 0) { - KLibFactory* factory = KLibLoader::self()->factory("libkonsolepart"); - KParts::Part* part = static_cast(factory->create(this, "KParts::ReadOnlyPart")); + KPluginFactory* factory = KPluginLoader("libkonsolepart").factory(); + KParts::ReadOnlyPart* part = factory ? (factory->create(this)) : 0; if (part != 0) { m_layout->addWidget(part->widget()); + m_terminal = qobject_cast(part); } - - // TODO: port to KDE4 - //TerminalInterface* m_terminal = static_cast(part->qt_cast("TerminalInterface")); - // like this? - //m_terminal = qobject_cast(part); } + if (m_terminal != 0) { + m_terminal->showShellInDir(url().path()); + m_terminal->sendInput("clear\n"); + } + SidebarPage::showEvent(event); }