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 @@ -8,15 +8,22 @@ #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())); @@ -28,7 +35,7 @@ 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 @@ -13,6 +13,7 @@ class QToolBar; namespace Swift { + class RemoteScreenViewerWidget; class QtRemoteScreenWindow : public QMainWindow, public RemoteScreenWindow { Q_OBJECT @@ -25,6 +26,7 @@ namespace Swift { 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 @@ -18,7 +18,7 @@ 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)); } @@ -28,10 +28,11 @@ 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); } @@ -39,15 +40,20 @@ void RemoteScreenViewerWidget::paintEvent(QPaintEvent *) 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 @@ -6,7 +6,7 @@ #pragma once -#include <QWidget> +#include <QFrame> #include <boost/shared_ptr.hpp> @@ -14,15 +14,15 @@ 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); |