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);  | 
 Swift