summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/ScreenSharing')
-rw-r--r--Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.cpp13
-rw-r--r--Swift/QtUI/ScreenSharing/QtRemoteScreenWindow.h2
-rw-r--r--Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.cpp20
-rw-r--r--Swift/QtUI/ScreenSharing/RemoteScreenViewerWidget.h8
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);