/**************************************************************************** ** ** Copyright (C) 2009 Urs Wolfer ** ** This file is part of KDE. ** ** 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; see the file COPYING. If not, write to ** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ** Boston, MA 02110-1301, USA. ** ****************************************************************************/ #include "konsoleview.h" #include #include #include #include #include #include #include #include #include KonsoleView::KonsoleView(QWidget *parent, const KUrl &url, KConfigGroup configGroup) : RemoteView(parent) { m_url = url; m_host = url.host(); m_port = url.port(); m_hostPreferences = new KonsoleHostPreferences(configGroup, this); // QSize size = QSize(640, 480); const QSize size = (qobject_cast(parent))->size(); setStatus(Connected); setFixedSize(size); setFixedSize(size); emit framebufferSizeChanged(size.width(), size.height()); KPluginFactory* factory = KPluginLoader("konsolepart").factory(); KParts::ReadOnlyPart* part = factory ? (factory->create(this)) : 0; if (part != 0) { // connect(part, SIGNAL(destroyed(QObject*)), this, SLOT(terminalExited())); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(0); mainLayout->setSpacing(0); m_terminalWidget = part->widget(); mainLayout->addWidget(m_terminalWidget); m_terminal = qobject_cast(part); m_terminal->showShellInDir(QDir::homePath()); m_terminal->sendInput("echo " + url.userName() + '@' + url.host()/* + ':' + url.port()*/ + '\n'); // m_terminal->sendInput("clear\n"); m_terminalWidget->resize(size); } } KonsoleView::~KonsoleView() { emit disconnected(); setStatus(Disconnected); } bool KonsoleView::eventFilter(QObject *obj, QEvent *event) { if (m_viewOnly) { if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease || event->type() == QEvent::MouseButtonDblClick || event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::MouseMove) return true; } return RemoteView::eventFilter(obj, event); } QSize KonsoleView::framebufferSize() { return minimumSizeHint(); } QSize KonsoleView::sizeHint() const { return RemoteView::sizeHint(); return maximumSize(); } bool KonsoleView::isQuitting() { return false; } bool KonsoleView::start() { setStatus(Connected); emit connected(); m_terminalWidget->setFocus(); return true; } HostPreferences* KonsoleView::hostPreferences() { return m_hostPreferences; } void KonsoleView::switchFullscreen(bool on) { Q_UNUSED(on); } #include "moc_konsoleview.cpp"