[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [sflphone-kde] src: [ #50496 ] Improve the screen sharing implementation
From: Emmanuel Lepage Vallee <emmanuel.lepage () savoirfairelinux ! com>
Date: 2014-06-30 22:20:40
Message-ID: E1X1jwG-0002iO-S4 () scm ! kde ! org
[Download RAW message or body]
Git commit 9b8dafaa095cb0f321b90d1efce9066072867748 by Emmanuel Lepage Vallee.
Committed on 30/06/2014 at 22:20.
Pushed by lepagevalleeemmanuel into branch 'master'.
[ #50496 ] Improve the screen sharing implementation
M +6 -2 src/lib/video/videodevicemodel.cpp
M +105 -58 src/widgets/ui/screensharingwidget.ui
M +39 -0 src/widgets/videodock.cpp
M +4 -0 src/widgets/videodock.h
http://commits.kde.org/sflphone-kde/9b8dafaa095cb0f321b90d1efce9066072867748
diff --git a/src/lib/video/videodevicemodel.cpp b/src/lib/video/videodevicemodel.cpp
index cbb8725..ae4a814 100644
--- a/src/lib/video/videodevicemodel.cpp
+++ b/src/lib/video/videodevicemodel.cpp
@@ -182,7 +182,7 @@ ExtendedVideoDeviceModel* ExtendedVideoDeviceModel::m_spInstance \
= nullptr;
ExtendedVideoDeviceModel::ExtendedVideoDeviceModel() : \
QAbstractListModel(QCoreApplication::instance()) {
-
+ m_Display.rect = QRect(0,0,0,0);
}
ExtendedVideoDeviceModel* ExtendedVideoDeviceModel::instance()
@@ -259,7 +259,10 @@ void ExtendedVideoDeviceModel::switchTo(const int idx)
DBus::VideoManager::instance().switchInput(ProtocolPrefix::NONE);
break;
case ExtendedDeviceList::SCREEN:
- DBus::VideoManager::instance().switchInput( \
QString(ProtocolPrefix::DISPLAY)+"0:100x100"); + \
DBus::VideoManager::instance().switchInput( \
QString(ProtocolPrefix::DISPLAY)+QString(":%1 %2x%3") + \
.arg(m_Display.index) + .arg(m_Display.rect.width())
+ .arg(m_Display.rect.height()));
break;
case ExtendedDeviceList::FILE:
DBus::VideoManager::instance().switchInput(
@@ -296,6 +299,7 @@ void ExtendedVideoDeviceModel::setDisplay(int index, QRect rect)
{
m_Display.index = index ;
m_Display.rect = rect ;
+ switchTo(ExtendedDeviceList::SCREEN);
}
VideoDevice* VideoDeviceModel::getDevice(const QString& devId) const
diff --git a/src/widgets/ui/screensharingwidget.ui \
b/src/widgets/ui/screensharingwidget.ui index 3839455..44dd86e 100644
--- a/src/widgets/ui/screensharingwidget.ui
+++ b/src/widgets/ui/screensharingwidget.ui
@@ -6,46 +6,97 @@
<rect>
<x>0</x>
<y>0</y>
- <width>260</width>
- <height>89</height>
+ <width>320</width>
+ <height>136</height>
</rect>
</property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="2" column="1" colspan="2">
- <widget class="QSpinBox" name="m_pWidth"/>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Offset (x,y):</string>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="1" column="0" rowspan="2" colspan="3">
+ <widget class="QFrame" name="m_pFrame">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
</property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Size (width,height):</string>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
</property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="m_pWidth"/>
+ </item>
+ <item row="1" column="4">
+ <widget class="QSpinBox" name="m_pHeight"/>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="m_pDisplay"/>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Display id:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" colspan="2">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>x</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="5">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="2">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>,</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Offset (x,y):</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="m_pX"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Size (width,height):</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="4">
+ <widget class="QSpinBox" name="m_pY"/>
+ </item>
+ </layout>
</widget>
</item>
- <item row="3" column="5">
- <widget class="QSpinBox" name="m_pY"/>
- </item>
- <item row="2" column="3" colspan="2">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>x</string>
- </property>
- </widget>
+ <item row="0" column="1" colspan="2">
+ <widget class="QComboBox" name="m_pScreens"/>
</item>
<item row="0" column="0">
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="label_6">
<property name="text">
- <string>Display id:</string>
+ <string>Screen:</string>
</property>
</widget>
</item>
- <item row="4" column="0" colspan="2">
+ <item row="3" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -61,37 +112,33 @@
</property>
</spacer>
</item>
- <item row="3" column="6">
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="0" column="1" colspan="2">
- <widget class="QSpinBox" name="m_pDisplay"/>
- </item>
- <item row="2" column="5">
- <widget class="QSpinBox" name="m_pHeight"/>
- </item>
- <item row="3" column="1" colspan="2">
- <widget class="QSpinBox" name="m_pX"/>
- </item>
- <item row="3" column="3" colspan="2">
- <widget class="QLabel" name="label_5">
- <property name="text">
- <string>,</string>
- </property>
- </widget>
- </item>
</layout>
+ <zorder>m_pScreens</zorder>
+ <zorder>m_pFrame</zorder>
+ <zorder>label</zorder>
+ <zorder>label_6</zorder>
+ <zorder>verticalSpacer</zorder>
</widget>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>m_pScreens</sender>
+ <signal>currentIndexChanged(int)</signal>
+ <receiver>ScreenSharing</receiver>
+ <slot>slotScreenIndexChanged(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>133</x>
+ <y>11</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>295</x>
+ <y>20</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <slot>slotScreenIndexChanged(int)</slot>
+ </slots>
</ui>
diff --git a/src/widgets/videodock.cpp b/src/widgets/videodock.cpp
index 4524215..a6e8b17 100644
--- a/src/widgets/videodock.cpp
+++ b/src/widgets/videodock.cpp
@@ -21,6 +21,7 @@
#include <QtGui/QGridLayout>
#include <QtGui/QWidgetItem>
#include <QtGui/QGraphicsView>
+#include <QtGui/QDesktopWidget>
#include <QtGui/QLabel>
#include <KLocale>
@@ -67,9 +68,36 @@ public:
ScreenSharingWidget(QWidget* parent) : QWidget(parent)
{
setupUi(this);
+ setupScreenCombo();
+ m_pFrame->setVisible(false);
+ slotScreenIndexChanged(0);
}
+private:
+ //Helper
+ void setupScreenCombo();
+private Q_SLOTS:
+ void slotScreenIndexChanged(int idx);
};
+void ScreenSharingWidget::setupScreenCombo()
+{
+ for (int i =0; i < QApplication::desktop()->screenCount();i++) {
+ m_pScreens->addItem(QString::number(i));
+ }
+ m_pScreens->addItem(i18n("Custom"));
+}
+
+
+void ScreenSharingWidget::slotScreenIndexChanged(int idx)
+{
+ if (idx == m_pScreens->count()-1) {
+ m_pFrame->setVisible(true);
+ }
+ else {
+ ExtendedVideoDeviceModel::instance()->setDisplay(0,QApplication::desktop()->screenGeometry(idx));
+ m_pFrame->setVisible(false);
+ }
+}
///Constructor
@@ -128,6 +156,9 @@ void VideoDock::addRenderer(VideoRenderer* r)
m_pVideoWidet->addRenderer(r);
}
+
+
+
void VideoDock::slotDeviceChanged(int index)
{
switch (index) {
@@ -158,6 +189,8 @@ void VideoDock::slotDeviceChanged(int index)
if ( !m_pMediaPicker ) {
m_pMediaPicker = new MediaPicker(this);
m_pMoreOpts->addWidget(m_pMediaPicker,11,0,1,4);
+ connect(m_pMediaPicker->m_pPicker,SIGNAL(urlSelected(KUrl)),
+ this,SLOT(slotFileSelected(KUrl)));
}
m_pMediaPicker->setVisible(true);
break;
@@ -178,5 +211,11 @@ void VideoDock::slotDeviceChanged(int index)
};
}
+
+void VideoDock::slotFileSelected(const KUrl& url)
+{
+ ExtendedVideoDeviceModel::instance()->setFile(url);
+}
+
#include "moc_videodock.cpp"
#include "videodock.moc"
diff --git a/src/widgets/videodock.h b/src/widgets/videodock.h
index 227c6a1..a624a26 100644
--- a/src/widgets/videodock.h
+++ b/src/widgets/videodock.h
@@ -23,6 +23,9 @@
//Qt
class QGridLayout;
+//KDE
+class KUrl;
+
//SFLPhone
class VideoWidget3;
class VideoRenderer;
@@ -46,6 +49,7 @@ private:
private Q_SLOTS:
void slotDeviceChanged(int index);
+ void slotFileSelected(const KUrl& url);
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic