[Libreoffice-commits] .: Branch 'feature/remote' - 6 commits - android/sdremote sd/source
Andrzej J.R. Hunt
ajrhunt at kemper.freedesktop.org
Tue Jul 17 14:29:07 PDT 2012
android/sdremote/src/org/libreoffice/impressremote/communication/Client.java | 1
android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java | 1
android/sdremote/src/org/libreoffice/impressremote/communication/Transmitter.java | 28 ++
sd/source/ui/inc/Server.hxx | 56 +++++
sd/source/ui/remotecontrol/Listener.cxx | 111 ++++++----
sd/source/ui/remotecontrol/Listener.hxx | 40 ++-
sd/source/ui/remotecontrol/Receiver.cxx | 65 ++++-
sd/source/ui/remotecontrol/Server.cxx | 52 ++++
sd/source/ui/remotecontrol/Server.hxx | 51 ----
sd/source/ui/remotecontrol/Transmitter.cxx | 8
sd/source/ui/slideshow/slideshow.cxx | 3
11 files changed, 289 insertions(+), 127 deletions(-)
New commits:
commit e11572d3d61e0e9ad0d2f9b0553bdaed5a09bac4
Merge: fc5b5d4... 51bd28c...
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Tue Jul 17 23:28:17 2012 +0200
Merge again due to changes in repository.
Conflicts:
sd/source/ui/remotecontrol/Receiver.cxx
Change-Id: If2549a32df3d3864f293013c1ac93cc79193d3af
commit fc5b5d464e60c2698006eefbd315a351ce30da2a
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Tue Jul 17 23:22:39 2012 +0200
Merged changes.
Change-Id: I436a3ac7af0fbad3f37c6799de9186142f0af430
diff --git a/sd/source/ui/remotecontrol/Transmitter.cxx b/sd/source/ui/remotecontrol/Transmitter.cxx
index bc25355..24189a3 100644
--- a/sd/source/ui/remotecontrol/Transmitter.cxx
+++ b/sd/source/ui/remotecontrol/Transmitter.cxx
@@ -34,7 +34,7 @@ Transmitter::execute()
osl::MutexGuard aQueueGuard( mQueueMutex );
while ( mHighPriority.size() )
{
- OString aMessage = mHighPriority.front();
+ OString aMessage( mHighPriority.front() );
mHighPriority.pop();
fprintf(stderr , " Writing HIGHP:\n%s<<END>>", aMessage.getStr() );
mStreamSocket.write( aMessage.getStr(), aMessage.getLength() );
@@ -42,7 +42,7 @@ Transmitter::execute()
if( mLowPriority.size() )
{
- OString aMessage = mLowPriority.front();
+ OString aMessage( mLowPriority.front() );
mLowPriority.pop();
fprintf(stderr , " Writing LOWP:\n%s<<END>>", aMessage.getStr() );
mStreamSocket.write( aMessage.getStr(), aMessage.getLength() );
commit cf901534f1264ccbd0c4c55d2ef90ae128499e13
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Tue Jul 17 23:03:31 2012 +0200
Fixed constructor issue in Listener, fixed usage of Transmitter.
Change-Id: I875cb1fba51faadafd8f7f0e34ef6b56a818bb7a
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java
index d4c1c4e..98f713b 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java
@@ -56,6 +56,7 @@ public abstract class Client {
String aTemp;
// read until empty line
while ((aTemp = aReader.readLine()).length() != 0) {
+ System.out.println("Read:" + aTemp);
aList.add(aTemp);
}
mReceiver.parseCommand(aList);
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
index e26ef31..8418cab 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
@@ -25,6 +25,7 @@ public class Receiver {
}
public void parseCommand(ArrayList<String> aCommand) {
+ System.out.println("parsing " +aCommand.get(0));
if (mActivityMessenger == null) {
return;
}
diff --git a/sd/source/ui/remotecontrol/Listener.cxx b/sd/source/ui/remotecontrol/Listener.cxx
index 25f5107..a13752f 100644
--- a/sd/source/ui/remotecontrol/Listener.cxx
+++ b/sd/source/ui/remotecontrol/Listener.cxx
@@ -10,26 +10,39 @@
#include <comphelper/processfactory.hxx>
#include <com/sun/star/presentation/XPresentationSupplier.hpp>
#include <com/sun/star/presentation/XPresentation2.hpp>
+
+#include <rtl/strbuf.hxx>
+
#include "Listener.hxx"
using namespace sd;
using namespace ::com::sun::star::presentation;
using namespace ::com::sun::star::frame;
using rtl::OString;
+using rtl::OStringBuffer;
-Listener::Listener( sd::Transmitter& rTransmitter )
+Listener::Listener( sd::Transmitter *aTransmitter )
: ::cppu::WeakComponentImplHelper1< XSlideShowListener>( m_aMutex )
{
+ fprintf( stderr, "Creating Transmitter\n" );
+ mTransmitter = aTransmitter;
}
-void Listener::init(css::uno::Reference< css::presentation::XSlideShowController > aController)
+Listener::~Listener()
{
- aController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
}
-
-
+void Listener::init(css::uno::Reference< css::presentation::XSlideShowController >& aController)
+{
+ fprintf( stderr, "Initing Transmitter\n" );
+ if (aController.is() )
+ {
+// mController = aController;
+ aController->addSlideShowListener(static_cast<XSlideShowListener*>(this));-
+ }
+ fprintf( stderr, "Initiated Transmitter\n" );
+}
//----- XAnimationListener ----------------------------------------------------
void SAL_CALL Listener::beginEvent(const css::uno::Reference<
@@ -46,10 +59,11 @@ void SAL_CALL Listener::endEvent( const css::uno::Reference<
}
void SAL_CALL Listener::repeat( const css::uno::Reference<
- css::animations::XAnimationNode >& rNode, ::sal_Int32 Repeat )
+ css::animations::XAnimationNode >& rNode, ::sal_Int32 aRepeat )
throw (css::uno::RuntimeException)
{
(void) rNode;
+ (void) aRepeat;
}
@@ -68,40 +82,16 @@ void SAL_CALL Listener::resumed (void)
void SAL_CALL Listener::slideEnded (sal_Bool bReverse)
throw (css::uno::RuntimeException)
{
+ fprintf( stderr, "slideEnded\n" );
(void) bReverse;
- fprintf( stderr, "slidenede\n" );
-// (void) bReverse;
-// JsonBuilder *aBuilder = json_builder_new();
-//
-//
-// json_builder_begin_object( aBuilder );
-// json_builder_set_member_name( aBuilder, "slide_number");
-// json_builder_add_int_value( aBuilder, 2 );
-// // FIXME: get the slide number
-// json_builder_end_object( aBuilder );
-//
-// JsonGenerator *aGen = json_generator_new();
-// JsonNode *aRoot = json_builder_get_root( aBuilder );
-// json_generator_set_root( aGen, aRoot );
-// char *aCommand = json_generator_to_data( aGen, NULL);
-//
-// json_node_free( aRoot );
-// g_object_unref ( aGen );
-// g_object_unref ( aBuilder );
-//
-// sal_Int32 aLen = strlen( aCommand );
-//
-// OString aLengthString = OString::valueOf( aLen );
-// const char *aLengthChar = aLengthString.getStr();
-//
-// sal_Int32 aLengthLength = aLengthString.getLength();
-//
-// mStreamSocket.write( aLengthChar, aLengthLength );
-// mStreamSocket.write( "\n", 1 );
-// mStreamSocket.write( aCommand, aLen );
-// // Transmit here.
-//
-// g_free( aCommand );
+ sal_Int32 aSlide = mController->getCurrentSlideIndex();
+
+ OStringBuffer aBuilder( "slide_updated\n" );
+ aBuilder.append( OString::valueOf( aSlide ) );
+ aBuilder.append( "\n\n" );
+
+ mTransmitter->addMessage( aBuilder.makeStringAndClear() ,
+ Transmitter::Priority::HIGH );
}
void SAL_CALL Listener::hyperLinkClicked (const rtl::OUString &)
@@ -112,17 +102,19 @@ void SAL_CALL Listener::hyperLinkClicked (const rtl::OUString &)
void SAL_CALL Listener::slideTransitionStarted (void)
throw (css::uno::RuntimeException)
{
+ fprintf( stderr, "slideTransitionStarted\n" );
}
void SAL_CALL Listener::slideTransitionEnded (void)
throw (css::uno::RuntimeException)
{
- fprintf( stderr, "slidetreatasdfanede\n" );
+ fprintf( stderr, "slideTransitionEnded\n" );
}
void SAL_CALL Listener::slideAnimationsEnded (void)
throw (css::uno::RuntimeException)
{
+ fprintf( stderr, "slideAnimationsEnded\n" );
}
void SAL_CALL Listener::disposing (void)
@@ -134,6 +126,7 @@ void SAL_CALL Listener::disposing (
const css::lang::EventObject& rEvent)
throw (::com::sun::star::uno::RuntimeException)
{
+ (void) rEvent;
// FIXME: disconnect as appropriate
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/sd/source/ui/remotecontrol/Listener.hxx b/sd/source/ui/remotecontrol/Listener.hxx
index e05c259..a70ede1 100644
--- a/sd/source/ui/remotecontrol/Listener.hxx
+++ b/sd/source/ui/remotecontrol/Listener.hxx
@@ -28,8 +28,9 @@ class Listener
public ::cppu::WeakComponentImplHelper1< css::presentation::XSlideShowListener >
{
public:
- Listener( sd::Transmitter& rTransmitter );
- void init( css::uno::Reference< css::presentation::XSlideShowController > aController);
+ Listener( sd::Transmitter *aTransmitter );
+ ~Listener();
+ void init( css::uno::Reference< css::presentation::XSlideShowController >& aController);
// XAnimationListener
virtual void SAL_CALL beginEvent(const css::uno::Reference<
@@ -57,8 +58,9 @@ public:
throw (com::sun::star::uno::RuntimeException);
private:
- css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
osl::StreamSocket mStreamSocket;
+ sd::Transmitter *mTransmitter;
+ css::uno::Reference< css::presentation::XSlideShowController > mController;
};
}
#endif // _SD_IMPRESSREMOTE_LISTENER_HXX
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 28f01be..153ffc5 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -42,9 +42,6 @@ Receiver::~Receiver()
void Receiver::parseCommand( std::vector<OString> aCommand )
{
- fprintf( stderr, "Parsing:\n");
- for (size_t i = 0; i < aCommand.size(); i++)
- {
uno::Reference<presentation::XSlideShowController> xSlideShowController;
uno::Reference<presentation::XPresentation2> xPresentation;
try {
@@ -113,7 +110,7 @@ void Receiver::parseCommand( std::vector<OString> aCommand )
}
}
// FIXME: remove later, this is just to test functionality
- //sendPreview( 0, xSlideShowController, mTransmitter );
+ sendPreview( 0, xSlideShowController, mTransmitter );
}
@@ -190,8 +187,6 @@ preparePreview(sal_uInt32 aSlideNumber,
xFilter->filter( aProps );
- fprintf( stderr, "%s\n", rtl::OUStringToOString( aFileURL , RTL_TEXTENCODING_UTF8 ).getStr() );
-
// FIXME: error handling.
File aFile( aFileURL );
diff --git a/sd/source/ui/remotecontrol/Server.cxx b/sd/source/ui/remotecontrol/Server.cxx
index ad17ac4..748cbf9 100644
--- a/sd/source/ui/remotecontrol/Server.cxx
+++ b/sd/source/ui/remotecontrol/Server.cxx
@@ -10,6 +10,8 @@
#include <algorithm>
#include <vector>
+#include <comphelper/processfactory.hxx>
+
#include "sddll.hxx"
#include "Server.hxx"
#include "Receiver.hxx"
@@ -32,13 +34,13 @@ Server::~Server()
// Run as a thread
void Server::listenThread()
{
- Transmitter aTransmitter( mStreamSocket );
- mTransmitter = &aTransmitter;
- Receiver aReceiver( &aTransmitter );
+// Transmitter aTransmitter( mStreamSocket );
+ mTransmitter = new Transmitter( mStreamSocket);
+ Receiver aReceiver( mTransmitter );
+ mTransmitter->addMessage( "Hello world\n\n", Transmitter::Priority::HIGH );
- uno::Reference<presentation::XSlideShowController> xSlideShowController;
- uno::Reference<presentation::XPresentation2> xPresentation;
try {
+ fprintf( stderr, "Trying to add a Listener in listenThread\n" );
uno::Reference< lang::XMultiServiceFactory > xServiceManager(
::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
uno::Reference< frame::XFramesSupplier > xFramesSupplier( xServiceManager->createInstance(
@@ -50,11 +52,13 @@ void Server::listenThread()
if ( xPresentation->isRunning() )
{
presentationStarted( xPresentation->getController() );
+ fprintf( stderr, "Added the listener\n");
}
+ fprintf( stderr, "We aren't running\n" );
}
catch ( com::sun::star::uno::RuntimeException &e )
{
- //return;
+ fprintf( stderr, "Exeption on add\n" );
}
@@ -95,6 +99,7 @@ void Server::listenThread()
// TODO: deal with transmision errors gracefully.
}
+ delete mTransmitter;
mTransmitter = NULL;
}
@@ -127,8 +132,10 @@ void Server::presentationStarted( css::uno::Reference<
{
if ( mTransmitter )
{
- Listener* aListener = new Listener( *mTransmitter );
+ fprintf( stderr, "Adding Listener on start of presentation.\n" );
+ Listener* aListener = new Listener( mTransmitter );
aListener->init( rController );
+ fprintf( stderr, "Added the listener as desired.\n" );
}
}
diff --git a/sd/source/ui/remotecontrol/Transmitter.cxx b/sd/source/ui/remotecontrol/Transmitter.cxx
index 276fc89..bc25355 100644
--- a/sd/source/ui/remotecontrol/Transmitter.cxx
+++ b/sd/source/ui/remotecontrol/Transmitter.cxx
@@ -26,6 +26,7 @@ Transmitter::Transmitter( StreamSocket &aSocket )
void
Transmitter::execute()
{
+ fprintf( stderr, "Waiting\n" );
while( mQueuesNotEmpty.wait() )
{
while ( true )
@@ -35,6 +36,7 @@ Transmitter::execute()
{
OString aMessage = mHighPriority.front();
mHighPriority.pop();
+ fprintf(stderr , " Writing HIGHP:\n%s<<END>>", aMessage.getStr() );
mStreamSocket.write( aMessage.getStr(), aMessage.getLength() );
}
@@ -42,10 +44,10 @@ Transmitter::execute()
{
OString aMessage = mLowPriority.front();
mLowPriority.pop();
+ fprintf(stderr , " Writing LOWP:\n%s<<END>>", aMessage.getStr() );
mStreamSocket.write( aMessage.getStr(), aMessage.getLength() );
}
- //fprintf( stderr, "Lowsize:%i, Highsize:%i\n", mLowPriority.size(), mHighPriority.size() );
if ( (mLowPriority.size() == 0) && (mHighPriority.size() == 0) )
{
mQueuesNotEmpty.reset();
commit ecd6199ce68458f28820b78b4443abfad0afd46e
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Tue Jul 17 17:48:07 2012 +0200
Added registration of the slideshow listener.
Change-Id: I Icaf2fe03e5f5b8ee9de3138b8dd28d837c734e94
diff --git a/sd/source/ui/remotecontrol/Listener.cxx b/sd/source/ui/remotecontrol/Listener.cxx
index 47cf1fa..25f5107 100644
--- a/sd/source/ui/remotecontrol/Listener.cxx
+++ b/sd/source/ui/remotecontrol/Listener.cxx
@@ -18,50 +18,14 @@ using namespace ::com::sun::star::frame;
using rtl::OString;
-Listener::Listener( css::uno::Reference< css::presentation::XSlideShowController > aController, sd::Transmitter& rTransmitter )
- : ::cppu::WeakComponentImplHelper2< XSlideShowListener,
- XFrameActionListener >( m_aMutex )
+Listener::Listener( sd::Transmitter& rTransmitter )
+ : ::cppu::WeakComponentImplHelper1< XSlideShowListener>( m_aMutex )
{
- fprintf( stderr, "Hello from a listener...\n" );
- try
- {
- css::uno::Reference< css::lang::XMultiServiceFactory > xServiceManager(
- ::comphelper::getProcessServiceFactory(), css::uno::UNO_QUERY_THROW );
- css::uno::Reference< css::frame::XFrame > xDesktop( xServiceManager->createInstance(
- "com.sun.star.frame.Desktop" ) , css::uno::UNO_QUERY_THROW );
- xDesktop->addFrameActionListener( static_cast<XFrameActionListener*>(this));
- }
- catch ( css::uno::RuntimeException &e )
- {
- //return;
- }
- if( aController.is() )
- {
-// css::uno::Reference< css::lang::XMultiServiceFactory > xServiceManager(
-// ::comphelper::getProcessServiceFactory(), css::uno::UNO_QUERY_THROW );
-// css::uno::Reference< css::frame::XFramesSupplier > xFramesSupplier(
-// xServiceManager->createInstance( "com.sun.star.frame.Desktop" ) ,
-// css::uno::UNO_QUERY_THROW );
-// css::uno::Reference< css::frame::XFrame > xFrame (
-// xFramesSupplier->getActiveFrame(), css::uno::UNO_QUERY_THROW );
-// css::uno::Reference<css::presentation::XPresentationSupplier> xPS (
-// xFrame->getController()->getModel(), css::uno::UNO_QUERY_THROW);
-// css::uno::Reference<css::presentation::XPresentation2> xPresentation(
-// xPS->getPresentation(), css::uno::UNO_QUERY_THROW);
-// // Throws an exception if now slideshow running
-// css::uno::Reference<css::presentation::XSlideShowController> xSlideShowController(
-// xPresentation->getController(), css::uno::UNO_QUERY_THROW );
-// xSlideShowController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
-// fprintf(stderr, "Registered the slideshowlistener\n" );
- fprintf(stderr, "Trying to add the slideshowlistener\n" );
- aController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
- fprintf(stderr, "Registered the slideshowlistener\n" );
- }
- else
- {
- fprintf(stderr, "rController isn't\n" );
- }
+}
+void Listener::init(css::uno::Reference< css::presentation::XSlideShowController > aController)
+{
+ aController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
}
@@ -161,12 +125,6 @@ void SAL_CALL Listener::slideAnimationsEnded (void)
{
}
-void SAL_CALL Listener::frameAction (const css::frame::FrameActionEvent& rEvent)
- throw (::com::sun::star::uno::RuntimeException)
-{
- fprintf( stderr, "FrameAction\n" );
-}
-
void SAL_CALL Listener::disposing (void)
{
// FIXME: disconnect as appropriate
diff --git a/sd/source/ui/remotecontrol/Listener.hxx b/sd/source/ui/remotecontrol/Listener.hxx
index 56635dc..e05c259 100644
--- a/sd/source/ui/remotecontrol/Listener.hxx
+++ b/sd/source/ui/remotecontrol/Listener.hxx
@@ -14,7 +14,7 @@
#include <com/sun/star/presentation/XSlideShowListener.hpp>
#include <com/sun/star/presentation/XSlideShowController.hpp>
-#include <cppuhelper/compbase2.hxx>
+#include <cppuhelper/compbase1.hxx>
#include <cppuhelper/basemutex.hxx>
#include <osl/socket.hxx>
@@ -25,11 +25,11 @@ namespace css = ::com::sun::star;
namespace sd {
class Listener
: protected ::cppu::BaseMutex,
- public ::cppu::WeakComponentImplHelper2< css::presentation::XSlideShowListener, css::frame::XFrameActionListener >
+ public ::cppu::WeakComponentImplHelper1< css::presentation::XSlideShowListener >
{
public:
- Listener( css::uno::Reference< css::presentation::XSlideShowController > aController, sd::Transmitter& rTransmitter );
-
+ Listener( sd::Transmitter& rTransmitter );
+ void init( css::uno::Reference< css::presentation::XSlideShowController > aController);
// XAnimationListener
virtual void SAL_CALL beginEvent(const css::uno::Reference<
@@ -50,10 +50,6 @@ public:
virtual void SAL_CALL hyperLinkClicked( const ::rtl::OUString& hyperLink )
throw (css::uno::RuntimeException);
- // XFrameActionListener
- virtual void SAL_CALL frameAction (const css::frame::FrameActionEvent& rEvent)
- throw (css::uno::RuntimeException);
-
// XEventListener
virtual void SAL_CALL disposing (void);
virtual void SAL_CALL disposing (
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 52f6a1b..28f01be 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -8,6 +8,9 @@
*/
#include "Receiver.hxx"
#include <string.h>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/presentation/XPresentation2.hpp>
#include <com/sun/star/frame/XFramesSupplier.hpp>
#include <com/sun/star/document/XFilter.hpp>
#include <com/sun/star/document/XExporter.hpp>
@@ -40,10 +43,8 @@ Receiver::~Receiver()
void Receiver::parseCommand( std::vector<OString> aCommand )
{
fprintf( stderr, "Parsing:\n");
- for (uint i = 0; i < aCommand.size(); i++)
+ for (size_t i = 0; i < aCommand.size(); i++)
{
- fprintf( stderr, "%s\n", aCommand[i].getStr() );}
- fprintf( stderr, "End parse\n" );
uno::Reference<presentation::XSlideShowController> xSlideShowController;
uno::Reference<presentation::XPresentation2> xPresentation;
try {
@@ -133,7 +134,7 @@ void sendPreview(sal_uInt32 aSlideNumber,
aBuffer.append( "slide_preview\n" );
- rtl::OString aSlideNumberString( rtl::OString::valueOf( 2 ) ); // FIXME get number
+ rtl::OString aSlideNumberString( rtl::OString::valueOf( sal_Int32(2) ) ); // FIXME get number
aBuffer.append( aSlideNumberString.getStr() );
aBuffer.append( "\n" );
diff --git a/sd/source/ui/remotecontrol/Server.cxx b/sd/source/ui/remotecontrol/Server.cxx
index 9ad7f69..ad17ac4 100644
--- a/sd/source/ui/remotecontrol/Server.cxx
+++ b/sd/source/ui/remotecontrol/Server.cxx
@@ -17,6 +17,7 @@
using namespace std;
using namespace sd;
+using namespace ::com::sun::star;
using rtl::OString;
Server::Server()
@@ -35,6 +36,28 @@ void Server::listenThread()
mTransmitter = &aTransmitter;
Receiver aReceiver( &aTransmitter );
+ uno::Reference<presentation::XSlideShowController> xSlideShowController;
+ uno::Reference<presentation::XPresentation2> xPresentation;
+ try {
+ uno::Reference< lang::XMultiServiceFactory > xServiceManager(
+ ::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
+ uno::Reference< frame::XFramesSupplier > xFramesSupplier( xServiceManager->createInstance(
+ "com.sun.star.frame.Desktop" ) , uno::UNO_QUERY_THROW );
+ uno::Reference< frame::XFrame > xFrame ( xFramesSupplier->getActiveFrame(), uno::UNO_QUERY_THROW );
+ uno::Reference<presentation::XPresentationSupplier> xPS ( xFrame->getController()->getModel(), uno::UNO_QUERY_THROW);
+ uno::Reference<presentation::XPresentation2> xPresentation(
+ xPS->getPresentation(), uno::UNO_QUERY_THROW);
+ if ( xPresentation->isRunning() )
+ {
+ presentationStarted( xPresentation->getController() );
+ }
+ }
+ catch ( com::sun::star::uno::RuntimeException &e )
+ {
+ //return;
+ }
+
+
// TODO: decryption
while (true)
{
@@ -72,6 +95,7 @@ void Server::listenThread()
// TODO: deal with transmision errors gracefully.
}
+ mTransmitter = NULL;
}
@@ -101,10 +125,11 @@ void Server::execute()
void Server::presentationStarted( css::uno::Reference<
css::presentation::XSlideShowController > rController )
{
-
- fprintf( stderr, "Registering\n" );
- new Listener( rController, *mTransmitter );
-
+ if ( mTransmitter )
+ {
+ Listener* aListener = new Listener( *mTransmitter );
+ aListener->init( rController );
+ }
}
commit 091fcbc61e1a8c98ca145b0968b5ac25b25f0626
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Tue Jul 17 16:44:46 2012 +0200
Create listener when presentation is started.
Change-Id: I830bb6e20046ebc80c740ca77bb97dddca1e4c02
diff --git a/sd/source/ui/inc/Server.hxx b/sd/source/ui/inc/Server.hxx
new file mode 100644
index 0000000..952dcdd
--- /dev/null
+++ b/sd/source/ui/inc/Server.hxx
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+#ifndef _SD_IMPRESSREMOTE_SERVER_HXX
+#define _SD_IMPRESSREMOTE_SERVER_HXX
+
+// SERVER
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+#include <osl/socket.hxx>
+#include <salhelper/thread.hxx>
+
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+
+namespace css = ::com::sun::star;
+
+/**
+* The port for use for the main communication between LibO and remote control app.
+*/
+#define PORT 1599
+
+#define CHARSET RTL_TEXTENCODING_UTF8
+
+namespace sd
+{
+
+ class Transmitter;
+
+ class Server : public salhelper::Thread
+ {
+ public:
+ static void setup();
+ static void presentationStarted( css::uno::Reference<
+ css::presentation::XSlideShowController > rController );
+ private:
+ Server();
+ ~Server();
+ static Server *spServer;
+ osl::AcceptorSocket mSocket;
+ osl::StreamSocket mStreamSocket;
+ void listenThread();
+ void execute();
+ static Transmitter *mTransmitter;
+ };
+}
+
+#endif // _SD_IMPRESSREMOTE_SERVER_HXX
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/sd/source/ui/remotecontrol/Listener.cxx b/sd/source/ui/remotecontrol/Listener.cxx
index 9679912..47cf1fa 100644
--- a/sd/source/ui/remotecontrol/Listener.cxx
+++ b/sd/source/ui/remotecontrol/Listener.cxx
@@ -7,35 +7,88 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-#include <cstring>
-
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/presentation/XPresentation2.hpp>
#include "Listener.hxx"
using namespace sd;
using namespace ::com::sun::star::presentation;
+using namespace ::com::sun::star::frame;
using rtl::OString;
-Listener::Listener( const css::uno::Reference<XSlideShowController>& rxSlideShowController,
- osl::StreamSocket aSocket )
- : ::cppu::WeakComponentImplHelper1< XSlideShowListener >( m_aMutex ),
- mxSlideShowController(rxSlideShowController),
- mStreamSocket( aSocket )
+Listener::Listener( css::uno::Reference< css::presentation::XSlideShowController > aController, sd::Transmitter& rTransmitter )
+ : ::cppu::WeakComponentImplHelper2< XSlideShowListener,
+ XFrameActionListener >( m_aMutex )
{
- if( mxSlideShowController.is() )
+ fprintf( stderr, "Hello from a listener...\n" );
+ try
+ {
+ css::uno::Reference< css::lang::XMultiServiceFactory > xServiceManager(
+ ::comphelper::getProcessServiceFactory(), css::uno::UNO_QUERY_THROW );
+ css::uno::Reference< css::frame::XFrame > xDesktop( xServiceManager->createInstance(
+ "com.sun.star.frame.Desktop" ) , css::uno::UNO_QUERY_THROW );
+ xDesktop->addFrameActionListener( static_cast<XFrameActionListener*>(this));
+ }
+ catch ( css::uno::RuntimeException &e )
{
- // Listen for events from the slide show controller.
- mxSlideShowController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
+ //return;
}
+ if( aController.is() )
+ {
+// css::uno::Reference< css::lang::XMultiServiceFactory > xServiceManager(
+// ::comphelper::getProcessServiceFactory(), css::uno::UNO_QUERY_THROW );
+// css::uno::Reference< css::frame::XFramesSupplier > xFramesSupplier(
+// xServiceManager->createInstance( "com.sun.star.frame.Desktop" ) ,
+// css::uno::UNO_QUERY_THROW );
+// css::uno::Reference< css::frame::XFrame > xFrame (
+// xFramesSupplier->getActiveFrame(), css::uno::UNO_QUERY_THROW );
+// css::uno::Reference<css::presentation::XPresentationSupplier> xPS (
+// xFrame->getController()->getModel(), css::uno::UNO_QUERY_THROW);
+// css::uno::Reference<css::presentation::XPresentation2> xPresentation(
+// xPS->getPresentation(), css::uno::UNO_QUERY_THROW);
+// // Throws an exception if now slideshow running
+// css::uno::Reference<css::presentation::XSlideShowController> xSlideShowController(
+// xPresentation->getController(), css::uno::UNO_QUERY_THROW );
+// xSlideShowController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
+// fprintf(stderr, "Registered the slideshowlistener\n" );
+ fprintf(stderr, "Trying to add the slideshowlistener\n" );
+ aController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
+ fprintf(stderr, "Registered the slideshowlistener\n" );
+ }
+ else
+ {
+ fprintf(stderr, "rController isn't\n" );
+ }
}
-Listener::~Listener()
+
+
+
+//----- XAnimationListener ----------------------------------------------------
+void SAL_CALL Listener::beginEvent(const css::uno::Reference<
+ css::animations::XAnimationNode >& rNode ) throw (css::uno::RuntimeException)
{
+ (void) rNode;
+}
+void SAL_CALL Listener::endEvent( const css::uno::Reference<
+ css::animations::XAnimationNode >& rNode ) throw (css::uno::RuntimeException)
+{
+ (void) rNode;
}
+void SAL_CALL Listener::repeat( const css::uno::Reference<
+ css::animations::XAnimationNode >& rNode, ::sal_Int32 Repeat )
+ throw (css::uno::RuntimeException)
+{
+ (void) rNode;
+}
+
+
//----- XSlideShowListener ----------------------------------------------------
void SAL_CALL Listener::paused (void)
@@ -51,6 +104,8 @@ void SAL_CALL Listener::resumed (void)
void SAL_CALL Listener::slideEnded (sal_Bool bReverse)
throw (css::uno::RuntimeException)
{
+ (void) bReverse;
+ fprintf( stderr, "slidenede\n" );
// (void) bReverse;
// JsonBuilder *aBuilder = json_builder_new();
//
@@ -98,10 +153,29 @@ void SAL_CALL Listener::slideTransitionStarted (void)
void SAL_CALL Listener::slideTransitionEnded (void)
throw (css::uno::RuntimeException)
{
+ fprintf( stderr, "slidetreatasdfanede\n" );
}
void SAL_CALL Listener::slideAnimationsEnded (void)
throw (css::uno::RuntimeException)
{
}
+
+void SAL_CALL Listener::frameAction (const css::frame::FrameActionEvent& rEvent)
+ throw (::com::sun::star::uno::RuntimeException)
+{
+ fprintf( stderr, "FrameAction\n" );
+}
+
+void SAL_CALL Listener::disposing (void)
+{
+// FIXME: disconnect as appropriate
+}
+
+void SAL_CALL Listener::disposing (
+ const css::lang::EventObject& rEvent)
+ throw (::com::sun::star::uno::RuntimeException)
+{
+// FIXME: disconnect as appropriate
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/sd/source/ui/remotecontrol/Listener.hxx b/sd/source/ui/remotecontrol/Listener.hxx
index 8c2ef1b..56635dc 100644
--- a/sd/source/ui/remotecontrol/Listener.hxx
+++ b/sd/source/ui/remotecontrol/Listener.hxx
@@ -10,33 +10,55 @@
#define _SD_IMPRESSREMOTE_LISTENER_HXX
#include <sal/config.h>
+#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/presentation/XSlideShowListener.hpp>
#include <com/sun/star/presentation/XSlideShowController.hpp>
-#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/compbase2.hxx>
#include <cppuhelper/basemutex.hxx>
#include <osl/socket.hxx>
+#include "Transmitter.hxx"
+
namespace css = ::com::sun::star;
namespace sd {
class Listener
: protected ::cppu::BaseMutex,
- public ::cppu::WeakComponentImplHelper1< css::presentation::XSlideShowListener >
+ public ::cppu::WeakComponentImplHelper2< css::presentation::XSlideShowListener, css::frame::XFrameActionListener >
{
public:
- Listener( const css::uno::Reference<css::presentation::XSlideShowController>& rxSlideShowController,
- osl::StreamSocket aSocket );
- ~Listener();
+ Listener( css::uno::Reference< css::presentation::XSlideShowController > aController, sd::Transmitter& rTransmitter );
+
+
+ // XAnimationListener
+ virtual void SAL_CALL beginEvent(const css::uno::Reference<
+ css::animations::XAnimationNode >& rNode ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL endEvent( const css::uno::Reference<
+ css::animations::XAnimationNode >& rNode ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL repeat( const css::uno::Reference<
+ css::animations::XAnimationNode >& rNode, ::sal_Int32 Repeat )
+ throw (css::uno::RuntimeException);
// XSlideShowListener
- virtual void SAL_CALL paused( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL resumed( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL slideTransitionStarted( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL slideTransitionEnded( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL slideAnimationsEnded( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL slideEnded(sal_Bool bReverse) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL hyperLinkClicked( const ::rtl::OUString& hyperLink ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL paused( ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL resumed( ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL slideTransitionStarted( ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL slideTransitionEnded( ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL slideAnimationsEnded( ) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL slideEnded(sal_Bool bReverse) throw (css::uno::RuntimeException);
+ virtual void SAL_CALL hyperLinkClicked( const ::rtl::OUString& hyperLink )
+ throw (css::uno::RuntimeException);
+
+ // XFrameActionListener
+ virtual void SAL_CALL frameAction (const css::frame::FrameActionEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing (void);
+ virtual void SAL_CALL disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
private:
css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 6f8c8d5..52f6a1b 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -116,7 +116,6 @@ void Receiver::parseCommand( std::vector<OString> aCommand )
}
-
void sendPreview(sal_uInt32 aSlideNumber,
uno::Reference<presentation::XSlideShowController> xSlideShowController, Transmitter *aTransmitter )
{
diff --git a/sd/source/ui/remotecontrol/Server.cxx b/sd/source/ui/remotecontrol/Server.cxx
index f858a36..9ad7f69 100644
--- a/sd/source/ui/remotecontrol/Server.cxx
+++ b/sd/source/ui/remotecontrol/Server.cxx
@@ -13,6 +13,7 @@
#include "sddll.hxx"
#include "Server.hxx"
#include "Receiver.hxx"
+#include "Listener.hxx"
using namespace std;
using namespace sd;
@@ -31,7 +32,9 @@ Server::~Server()
void Server::listenThread()
{
Transmitter aTransmitter( mStreamSocket );
+ mTransmitter = &aTransmitter;
Receiver aReceiver( &aTransmitter );
+
// TODO: decryption
while (true)
{
@@ -94,7 +97,20 @@ void Server::execute()
}
+
+void Server::presentationStarted( css::uno::Reference<
+ css::presentation::XSlideShowController > rController )
+{
+
+ fprintf( stderr, "Registering\n" );
+ new Listener( rController, *mTransmitter );
+
+}
+
+
+
Server *sd::Server::spServer = NULL;
+Transmitter *sd::Server::mTransmitter = NULL;
void Server::setup()
{
diff --git a/sd/source/ui/remotecontrol/Server.hxx b/sd/source/ui/remotecontrol/Server.hxx
deleted file mode 100644
index bc2de65..0000000
--- a/sd/source/ui/remotecontrol/Server.hxx
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-#ifndef _SD_IMPRESSREMOTE_SERVER_HXX
-#define _SD_IMPRESSREMOTE_SERVER_HXX
-
-// SERVER
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#include <osl/socket.hxx>
-#include <salhelper/thread.hxx>
-
-#include <com/sun/star/presentation/XSlideShowListener.hpp>
-
-/**
-* The port for use for the main communication between LibO and remote control app.
-*/
-#define PORT 1599
-
-#define CHARSET RTL_TEXTENCODING_UTF8
-
-namespace sd
-{
-
- class Server : public salhelper::Thread
- {
- public:
- static void setup();
- private:
- Server();
- ~Server();
- static Server *spServer;
- osl::AcceptorSocket mSocket;
- osl::StreamSocket mStreamSocket;
- void listenThread();
- void execute();
- };
-}
-
-#endif // _SD_IMPRESSREMOTE_SERVER_HXX
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
\ No newline at end of file
diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx
index ffd8cef..a48de21 100644
--- a/sd/source/ui/slideshow/slideshow.cxx
+++ b/sd/source/ui/slideshow/slideshow.cxx
@@ -58,6 +58,7 @@
#include "sdattr.hrc"
#include "FactoryIds.hxx"
#include "ViewShell.hxx"
+#include "Server.hxx"
#include "SlideShowRestarter.hxx"
#include "DrawController.hxx"
#include <boost/bind.hpp>
@@ -267,6 +268,7 @@ void SlideShow::CreateController( ViewShell* pViewSh, ::sd::View* pView, ::Wind
// multiple slide show instances for one document.
mxController = xController;
mbIsInStartup = false;
+ Server::presentationStarted( getController() );
}
// --------------------------------------------------------------------
@@ -910,6 +912,7 @@ void SAL_CALL SlideShow::startWithArguments( const Sequence< PropertyValue >& rA
StartFullscreenPresentation();
else
StartInPlacePresentation();
+
}
// --------------------------------------------------------------------
commit 975127d0d851b0d12231c2f87b20318dea0a8981
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Sun Jul 15 16:37:26 2012 +0100
Added additional commands and parsing.
Change-Id: Iae099aeb07d25435115514e1bf0c4efb31613d50
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Transmitter.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Transmitter.java
index 40bb918..679b287 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/Transmitter.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Transmitter.java
@@ -1,5 +1,7 @@
package org.libreoffice.impressremote.communication;
+import android.graphics.Color;
+
/**
* Interface to send commands to the server.
*
@@ -26,4 +28,30 @@ public class Transmitter {
mClient.sendCommand("goto_slide\n" + slide + "\n\n");
}
+ /**
+ * Blank the screen to the default colour (set server-side), which is
+ * generally black. This is slightly faster than using
+ * <code> blankScreen( colour ) </code>.
+ */
+ public void blankScreen() {
+ mClient.sendCommand("presentation_blank_screen\n\n");
+ }
+
+ /**
+ * Set the screen to a specific colour. Only use if a non default colour is
+ * needed.
+ * @param aColor
+ */
+ public void blankScreen(Color aColor) {
+ // Fixme: check how to get colour in integer form.
+ mClient.sendCommand("presentation_blank_screen\n" + aColor + "\n\n");
+ }
+
+ public void startPresentation() {
+ mClient.sendCommand("presentation_start\n\n");
+ }
+
+ public void stopPresentation() {
+ mClient.sendCommand("presentation_stop\n\n");
+ }
}
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 87eee7f..6f8c8d5 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -40,11 +40,12 @@ Receiver::~Receiver()
void Receiver::parseCommand( std::vector<OString> aCommand )
{
fprintf( stderr, "Parsing:\n");
- for (int i = 0; i < aCommand.size(); i++)
+ for (uint i = 0; i < aCommand.size(); i++)
{
fprintf( stderr, "%s\n", aCommand[i].getStr() );}
fprintf( stderr, "End parse\n" );
uno::Reference<presentation::XSlideShowController> xSlideShowController;
+ uno::Reference<presentation::XPresentation2> xPresentation;
try {
uno::Reference< lang::XMultiServiceFactory > xServiceManager(
::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
@@ -52,31 +53,64 @@ void Receiver::parseCommand( std::vector<OString> aCommand )
"com.sun.star.frame.Desktop" ) , uno::UNO_QUERY_THROW );
uno::Reference< frame::XFrame > xFrame ( xFramesSupplier->getActiveFrame(), uno::UNO_QUERY_THROW );
uno::Reference<presentation::XPresentationSupplier> xPS ( xFrame->getController()->getModel(), uno::UNO_QUERY_THROW);
- uno::Reference<presentation::XPresentation2> xPresentation(xPS->getPresentation(), uno::UNO_QUERY_THROW);
+ xPresentation = uno::Reference<presentation::XPresentation2>(
+ xPS->getPresentation(), uno::UNO_QUERY_THROW);
// Throws an exception if now slideshow running
xSlideShowController = uno::Reference<presentation::XSlideShowController>(
xPresentation->getController(), uno::UNO_QUERY_THROW );
}
catch ( com::sun::star::uno::RuntimeException &e )
{
- return;
+ //return;
}
- if ( aCommand[0].compareTo( "transition_next" ) == 0 )
+ if ( aCommand[0].equals( "transition_next" ) )
{
- xSlideShowController->gotoNextEffect();
+ if ( xSlideShowController.is() )
+ xSlideShowController->gotoNextEffect();
}
- else if ( aCommand[0].compareTo( "transition_previous" ) == 0 )
+ else if ( aCommand[0].equals( "transition_previous" ) )
{
- xSlideShowController->gotoPreviousEffect();
+ if ( xSlideShowController.is() )
+ xSlideShowController->gotoPreviousEffect();
}
- else if ( aCommand[0].compareTo( "goto_slide" ) == 0 )
+ else if ( aCommand[0].equals( "goto_slide" ) )
{
// FIXME: if 0 returned, then not a valid number
sal_Int32 aSlide = aCommand[1].toInt32();
- xSlideShowController->gotoSlideIndex( aSlide );
+ if ( xSlideShowController.is() )
+ xSlideShowController->gotoSlideIndex( aSlide );
+ }
+ else if ( aCommand[0].equals( "presentation_start" ) )
+ {
+ if ( xPresentation.is() )
+ xPresentation->start();
+ }
+ else if ( aCommand[0].equals( "presentation_stop" ) )
+ {
+ if ( xPresentation.is() )
+ xPresentation->end();
+ }
+ else if ( aCommand[0].equals( "presentation_blank_screen" ) )
+ {
+ sal_Int32 aColour = 0; // Default is black
+ if ( aCommand.size() > 1 )
+ {
+// aColour = FIXME: get the colour in some format from this string
+// Determine the formatting first.
+ }
+ if ( xSlideShowController.is() )
+ {
+ xSlideShowController->blankScreen( aColour );
+ }
+ }
+ else if ( aCommand[0].equals( "presentation_resume" ) )
+ {
+ if ( xSlideShowController.is() )
+ {
+ xSlideShowController->resume();
+ }
}
-
// FIXME: remove later, this is just to test functionality
//sendPreview( 0, xSlideShowController, mTransmitter );
diff --git a/sd/source/ui/remotecontrol/Server.hxx b/sd/source/ui/remotecontrol/Server.hxx
index 2b3c706..bc2de65 100644
--- a/sd/source/ui/remotecontrol/Server.hxx
+++ b/sd/source/ui/remotecontrol/Server.hxx
@@ -20,8 +20,6 @@
#include <com/sun/star/presentation/XSlideShowListener.hpp>
-
-
/**
* The port for use for the main communication between LibO and remote control app.
*/
More information about the Libreoffice-commits
mailing list