diff options
Diffstat (limited to 'Swift/QtUI/ScreenSharing')
4 files changed, 29 insertions, 14 deletions
diff --git a/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.cpp b/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.cpp index e6cd291..a1f1a88 100644 --- a/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.cpp +++ b/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.cpp @@ -7,17 +7,24 @@ #include "QtRemoteScreenWindow.h" #include "RemoteScreenViewerWidget.h" #include <QToolBar> +#include <QVBoxLayout> #include <Swiften/ScreenSharing/IncomingScreenSharing.h> namespace Swift { QtRemoteScreenWindow::QtRemoteScreenWindow(boost::shared_ptr<IncomingScreenSharing> incScreenSharing, QWidget *parent) - : QMainWindow(parent), RemoteScreenWindow(incScreenSharing) + : QMainWindow(parent), RemoteScreenWindow(incScreenSharing), viewer(new RemoteScreenViewerWidget(iss)) { - setCentralWidget(new RemoteScreenViewerWidget(iss)); + QVBoxLayout* centralLayout = new QVBoxLayout; + centralLayout->addWidget(viewer); + + QWidget* central = new QWidget(this); + central->setLayout(centralLayout); + + setCentralWidget(central); controlToolBar = addToolBar(tr("Control")); closeAction = controlToolBar->addAction(QIcon::fromTheme("window-close"), tr("&Terminate session"), this, SLOT(handleCloseTriggered())); } @@ -27,8 +34,8 @@ QtRemoteScreenWindow::~QtRemoteScreenWindow() } void QtRemoteScreenWindow::handleCloseTriggered() { - iss->stop(); + onStopRequest(); } } diff --git a/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.h b/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.h index 00ac803..d6c783a 100644 --- a/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.h +++ b/Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.h @@ -12,8 +12,9 @@ class QToolBar; namespace Swift { + class RemoteScreenViewerWidget; class QtRemoteScreenWindow : public QMainWindow, public RemoteScreenWindow { Q_OBJECT @@ -24,8 +25,9 @@ namespace Swift { private slots: void handleCloseTriggered(); private: + RemoteScreenViewerWidget* viewer; QAction* closeAction; QToolBar* controlToolBar; }; } diff --git a/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.cpp b/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.cpp index f601f1b..7bb3f26 100644 --- a/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.cpp +++ b/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.cpp @@ -17,9 +17,9 @@ namespace Swift { RemoteScreenViewerWidget::RemoteScreenViewerWidget(boost::shared_ptr<IncomingScreenSharing> incScreenSharing, QWidget *parent) : - QWidget(parent), iss(incScreenSharing) + QFrame(parent), iss(incScreenSharing) { iss->onNewImageReceived.connect(boost::bind(&RemoteScreenViewerWidget::handleNewImageReceived, this, _1)); } @@ -27,28 +27,34 @@ RemoteScreenViewerWidget::~RemoteScreenViewerWidget() { iss->onNewImageReceived.disconnect(boost::bind(&RemoteScreenViewerWidget::handleNewImageReceived, this, _1)); } -void RemoteScreenViewerWidget::paintEvent(QPaintEvent *) +void RemoteScreenViewerWidget::paintEvent(QPaintEvent* event) { - QPainter painter(this); + QFrame::paintEvent(event); if (!pixmap.isNull()) { + QPainter painter(this); painter.translate(geometry().center()); painter.drawPixmap(-pixmap.rect().center(), pixmap); } } void RemoteScreenViewerWidget::resizeEvent(QResizeEvent *event) { - if (!pixmap.isNull()) - pixmap = pixmap.scaled(event->size(), Qt::KeepAspectRatio); - QWidget::resizeEvent(event); + if (!pixmap.isNull()) { + int frameWidth2 = frameWidth() * 2; + QSize borders(frameWidth2, frameWidth2); + pixmap = pixmap.scaled(event->size() - borders, Qt::KeepAspectRatio); + } + QFrame::resizeEvent(event); } void RemoteScreenViewerWidget::handleNewImageReceived(const Image& image) { QImage qImg(image.data.data(), image.width, image.height, QImage::Format_RGB888); - pixmap = QPixmap::fromImage(qImg).scaled(size(), Qt::KeepAspectRatio); + int frameWidth2 = frameWidth() * 2; + QSize borders(frameWidth2, frameWidth2); + pixmap = QPixmap::fromImage(qImg).scaled(size() - borders, Qt::KeepAspectRatio); update(); } } diff --git a/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.h b/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.h index 622bd26..c074e9f 100644 --- a/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.h +++ b/Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.h @@ -5,25 +5,25 @@ */ #pragma once -#include <QWidget> +#include <QFrame> #include <boost/shared_ptr.hpp> namespace Swift { class IncomingScreenSharing; class Image; - class RemoteScreenViewerWidget : public QWidget { + class RemoteScreenViewerWidget : public QFrame { Q_OBJECT public: RemoteScreenViewerWidget(boost::shared_ptr<IncomingScreenSharing> incScreenSharing, QWidget *parent = 0); ~RemoteScreenViewerWidget(); protected: - void paintEvent(QPaintEvent *); - void resizeEvent(QResizeEvent *event); + void paintEvent(QPaintEvent* event); + void resizeEvent(QResizeEvent* event); private: void handleNewImageReceived(const Image& image); |
Swift