Added additional commands and parsing.

Change-Id: Iae099aeb07d25435115514e1bf0c4efb31613d50
This commit is contained in:
Andrzej J. R. Hunt
2012-07-15 16:37:26 +01:00
committed by Michael Meeks
parent 4b8a3e4f4c
commit e697fd2de4
3 changed files with 71 additions and 11 deletions

View File

@@ -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");
}
}

View File

@@ -45,6 +45,7 @@ void Receiver::parseCommand( std::vector<OString> aCommand )
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 );

View File

@@ -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.
*/