[Libreoffice-commits] .: Branch 'feature/remote' - 2 commits - android/sdremote sd/source
Andrzej J.R. Hunt
ajrhunt at kemper.freedesktop.org
Thu Jul 12 09:52:54 PDT 2012
android/sdremote/src/org/libreoffice/impressremote/communication/Client.java | 80 +------
android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java | 77 ++-----
sd/source/ui/remotecontrol/Listener.cxx | 1
sd/source/ui/remotecontrol/Listener.hxx | 2
sd/source/ui/remotecontrol/Receiver.cxx | 108 +++-------
sd/source/ui/remotecontrol/Server.cxx | 17 -
sd/source/ui/remotecontrol/Server.hxx | 8
7 files changed, 101 insertions(+), 192 deletions(-)
New commits:
commit aebd43aebb9fa46dbeb690ad13bf8bc27bec8b5b
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Thu Jul 12 17:48:29 2012 +0100
Intermediate commit for mmeeks.
Change-Id: I4e8e4322d670247bc87e1b1ac6dccaa0a79a1e4d
diff --git a/sd/source/ui/remotecontrol/Listener.cxx b/sd/source/ui/remotecontrol/Listener.cxx
index 699d7a6..959b694 100644
--- a/sd/source/ui/remotecontrol/Listener.cxx
+++ b/sd/source/ui/remotecontrol/Listener.cxx
@@ -57,6 +57,7 @@ void SAL_CALL Listener::resumed (void)
void SAL_CALL Listener::slideEnded (sal_Bool bReverse)
throw (css::uno::RuntimeException)
{
+ (void) bReverse;
JsonBuilder *aBuilder = json_builder_new();
diff --git a/sd/source/ui/remotecontrol/Server.cxx b/sd/source/ui/remotecontrol/Server.cxx
index d838b67..04c51bd 100644
--- a/sd/source/ui/remotecontrol/Server.cxx
+++ b/sd/source/ui/remotecontrol/Server.cxx
@@ -7,20 +7,13 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
#include <vector>
#include "sddll.hxx"
#include "Server.hxx"
-#include "Receiver.hxx"
-
-
using namespace std;
using namespace sd;
-using rtl::OUString;
-using rtl::OString;
Server::Server()
: Thread( "ServerThread" ), mSocket(), mReceiver()
@@ -38,6 +31,10 @@ void Server::listenThread()
while (true)
{
vector<char> aBuffer;
+ char aReadBuffer[100];
+ aRet = mStreamSocket.read
+
+
int aRet;
char aTemp;
while ( (aRet = mStreamSocket.read( &aTemp, 1)) && aTemp != 0x0d ) // look for newline
@@ -49,7 +46,7 @@ void Server::listenThread()
return;
}
aBuffer.push_back('\0');
- OString aTempStr( &aBuffer.front() );
+ rtl::OString aTempStr( &aBuffer.front() );
const sal_Char* aLengthChar = aTempStr.getStr();
sal_Int32 aLen = strtol( aLengthChar, NULL, 10);
@@ -63,7 +60,7 @@ void Server::listenThread()
return;
}
- aTempStr = OString( aMessage ); //, (sal_Int32) aLen, CHARSET, 0u
+ aTempStr = rtl::OString( aMessage ); //, (sal_Int32) aLen, CHARSET, 0u
const sal_Char* aCommandChar = aTempStr.getStr();
mReceiver.parseCommand( aCommandChar, aTempStr.getLength(), mStreamSocket );
@@ -96,8 +93,6 @@ void Server::execute()
}
-
-
Server *sd::Server::spServer = NULL;
void Server::setup()
diff --git a/sd/source/ui/remotecontrol/Server.hxx b/sd/source/ui/remotecontrol/Server.hxx
index 1ee1885..e953ff5 100644
--- a/sd/source/ui/remotecontrol/Server.hxx
+++ b/sd/source/ui/remotecontrol/Server.hxx
@@ -14,13 +14,12 @@
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
-#include <netinet/in.h>
+
#include <osl/socket.hxx>
+#include <salhelper/thread.hxx>
#include <com/sun/star/presentation/XSlideShowListener.hpp>
-#include <salhelper/thread.hxx>
-
#include "Receiver.hxx"
/**
commit b26d6f459fde2885c34ba566b588ee1f4868eebe
Author: Andrzej J. R. Hunt <andrzej at ahunt.org>
Date: Thu Jul 12 17:22:12 2012 +0100
Changed from JSON to plaintext for Server->Client. Namespace usage cleanup.
Change-Id: I7e1b229b475e476c71ec3a110696942299b25733
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java
index 049950a..47321e5 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Client.java
@@ -1,9 +1,12 @@
package org.libreoffice.impressremote.communication;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
import org.apache.http.util.ByteArrayBuffer;
import org.json.JSONException;
@@ -44,69 +47,28 @@ public abstract class Client {
}
private void listen() {
- while (true) {
- ByteArrayBuffer aBuffer = new ByteArrayBuffer(0);
- int aTemp;
- System.out.println("Now listening");
- try {
- while ((aTemp = mInputStream.read()) != 0x0a) {
- if (aTemp == -1) {
- System.out.println("EOF Reached!!!");
- }
- System.out.println("Char: " + aTemp);
- aBuffer.append((byte) aTemp);
- }
- } catch (IOException e1) {
- // TODO stream couldn't be opened.
- e1.printStackTrace();
- }
- System.out.println("Escaped the loop!");
- String aLengthString;
- try {
- aLengthString = new String(aBuffer.toByteArray(), CHARSET);
- } catch (Exception e1) {
- e1.printStackTrace();
- throw new Error("Specified network encoding [" + CHARSET
- + " not available.");
- }
-
- int aLength = Integer.parseInt(aLengthString);
- System.out.println("Lenth = " + aLength);
- byte[] aCommand = new byte[aLength];
- try {
- int readIn = 0;
- while (readIn < aLength) {
- readIn += mInputStream.read(aCommand, 0, aLength - readIn);
-// System.out.println("Read in :" + readIn + " of : "
-// + aLength);
- }
- } catch (IOException e) {
- // TODO close and notify that the connection has closed
- e.printStackTrace();
- }
- String aCommandString;
- try {
- aCommandString = new String(aCommand, CHARSET);
- } catch (UnsupportedEncodingException e) {
- throw new Error("Specified network encoding [" + CHARSET
- + " not available.");
- }
- mReceiver.parseCommand(aCommandString);
- }
- }
-
- private void parseCommand(String aCommand) {
- JSONObject aCommandObject;
- String aInstruction;
+ BufferedReader aReader;
try {
- aCommandObject = new JSONObject(aCommand);
- aInstruction = aCommandObject.getString("command");
- if (aInstruction.equals("slide_changed")) {
- // TODO: process and notify
+ System.out.println("deb:Listening");
+ aReader = new BufferedReader(new InputStreamReader(mInputStream,
+ CHARSET));
+ while (true) {
+ ArrayList<String> aList = new ArrayList<String>();
+ String aTemp;
+ // read until empty line
+ while ((aTemp = aReader.readLine()).length() != 0) {
+ System.out.println("deb__:" + aTemp);
+ aList.add(aTemp);
+ }
+ System.out.println("deb:parsing");
+ mReceiver.parseCommand(aList);
}
- } catch (JSONException e) {
+ } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } catch (IOException e1) {
+ // TODO stream couldn't be opened.
+ e1.printStackTrace();
}
}
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
index a46cd4f..40c491b 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
@@ -8,6 +8,8 @@
*/
package org.libreoffice.impressremote.communication;
+import java.util.ArrayList;
+
import org.json.JSONException;
import org.json.JSONObject;
@@ -25,57 +27,40 @@ public class Receiver {
mActivityMessenger = aActivityMessenger;
}
- public void parseCommand(String aJSONCommandString) {
+ public void parseCommand(ArrayList<String> aCommand) {
if (mActivityMessenger == null) {
return;
}
- try {
-// int aPrinted = 0;
-// while (aPrinted < aJSONCommandString.length()) {
-// if (aPrinted + 100 < aJSONCommandString.length())
-// System.out.println(aJSONCommandString.substring(aPrinted,
-// aPrinted + 100));
-// else
-// System.out.println(aJSONCommandString.substring(aPrinted));
-// aPrinted += 100;
-// }
-
- JSONObject aJSONCommand = new JSONObject(aJSONCommandString);
- String aInstruction = aJSONCommand.getString("command");
- if (aInstruction.equals("slide_updated")) {
- int aSlideNumber = aJSONCommand.getInt("slide_number");
- Message aMessage = Message.obtain(null,
- CommunicationService.MSG_SLIDE_CHANGED);
- Bundle aData = new Bundle();
- aData.putInt("slide_number", aSlideNumber);
- aMessage.setData(aData);
- try {
- mActivityMessenger.send(aMessage);
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } else if (aInstruction.equals("slide_preview")) {
- int aSlideNumber = aJSONCommand.getInt("slide_number");
- String aImageString = aJSONCommand.getString("image_preview");
- byte[] aImage = Base64.decode(aImageString, Base64.DEFAULT);
- Message aMessage = Message.obtain(null,
- CommunicationService.MSG_SLIDE_PREVIEW);
- Bundle aData = new Bundle();
- aData.putInt("slide_number", aSlideNumber);
- aData.putByteArray("preview_image", aImage);
- aMessage.setData(aData);
- try {
- mActivityMessenger.send(aMessage);
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ String aInstruction = aCommand.get(0);
+ if (aInstruction.equals("slide_updated")) {
+ int aSlideNumber = Integer.parseInt(aCommand.get(1));
+ Message aMessage = Message.obtain(null,
+ CommunicationService.MSG_SLIDE_CHANGED);
+ Bundle aData = new Bundle();
+ aData.putInt("slide_number", aSlideNumber);
+ aMessage.setData(aData);
+ try {
+ mActivityMessenger.send(aMessage);
+ } catch (RemoteException e) {
+ // Dead Handler -- i.e. Activity gone.
+ }
+ } else if (aInstruction.equals("slide_preview")) {
+ int aSlideNumber = Integer.parseInt(aCommand.get(1));
+ String aImageString = aCommand.get(2);
+ byte[] aImage = Base64.decode(aImageString, Base64.DEFAULT);
+ Message aMessage = Message.obtain(null,
+ CommunicationService.MSG_SLIDE_PREVIEW);
+ Bundle aData = new Bundle();
+ aData.putInt("slide_number", aSlideNumber);
+ aData.putByteArray("preview_image", aImage);
+ aMessage.setData(aData);
+ try {
+ mActivityMessenger.send(aMessage);
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
}
}
diff --git a/sd/source/ui/remotecontrol/Listener.hxx b/sd/source/ui/remotecontrol/Listener.hxx
index 2009074..8b2b97f 100644
--- a/sd/source/ui/remotecontrol/Listener.hxx
+++ b/sd/source/ui/remotecontrol/Listener.hxx
@@ -18,8 +18,6 @@
#include <osl/socket.hxx>
namespace css = ::com::sun::star;
-//using namespace ::com::sun::star::presentation;
-
namespace sd {
class Listener
: protected ::cppu::BaseMutex,
diff --git a/sd/source/ui/remotecontrol/Receiver.cxx b/sd/source/ui/remotecontrol/Receiver.cxx
index 9015d79..06c9328 100644
--- a/sd/source/ui/remotecontrol/Receiver.cxx
+++ b/sd/source/ui/remotecontrol/Receiver.cxx
@@ -20,11 +20,12 @@
#include <rtl/ustrbuf.hxx>
#include <sax/tools/converter.hxx>
using namespace sd;
-using namespace ::com::sun::star::presentation;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::document;
+// using namespace ::com::sun::star::presentation;
+// using namespace ::com::sun::star;
+// using namespace ::com::sun::star::frame;
+// using namespace ::com::sun::star::beans;
+// using namespace ::com::sun::star::document;
+namespace css = ::com::sun::star;
using rtl::OUString;
using rtl::OString;
using namespace ::osl;
@@ -38,7 +39,7 @@ Receiver::~Receiver()
{
}
-void Receiver::executeCommand( JsonObject *aObject, Reference<XSlideShowController> xSlideShowController )
+void Receiver::executeCommand( JsonObject *aObject, css::uno::Reference<css::presentation::XSlideShowController> xSlideShowController )
{
const char* aInstruction = json_node_get_string( json_object_get_member( aObject, "command" ) );
@@ -63,18 +64,20 @@ void Receiver::executeCommand( JsonObject *aObject, Reference<XSlideShowControll
void Receiver::parseCommand( const char* aCommand, sal_Int32 size, osl::StreamSocket &aStreamSocket )
{
- Reference<XSlideShowController> xSlideShowController;
+ css::uno::Reference<css::presentation::XSlideShowController> xSlideShowController;
try {
- uno::Reference< lang::XMultiServiceFactory > xServiceManager(
- ::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
- uno::Reference< XFramesSupplier > xFramesSupplier( xServiceManager->createInstance(
+ 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" ) , UNO_QUERY_THROW );
- uno::Reference< frame::XFrame > xFrame ( xFramesSupplier->getActiveFrame(), UNO_QUERY_THROW );
+ css::uno::Reference< css::frame::XFrame > xFrame ( xFramesSupplier->getActiveFrame(), UNO_QUERY_THROW );
Reference<XPresentationSupplier> xPS ( xFrame->getController()->getModel(), UNO_QUERY_THROW);
Reference<XPresentation2> xPresentation(xPS->getPresentation(), UNO_QUERY_THROW);
// Throws an exception if now slideshow running
- xSlideShowController = Reference<XSlideShowController>( xPresentation->getController(), UNO_QUERY_THROW );
- sendPreview( 1, xSlideShowController, aStreamSocket );
+ xSlideShowController = Reference<css::presentation::XSlideShowController>(
+ xPresentation->getController(), UNO_QUERY_THROW );
+ // FIXME: remove later, this is just to test functionality
+ sendPreview( 0, xSlideShowController, aStreamSocket );
}
catch ( com::sun::star::uno::RuntimeException &e )
{
@@ -108,59 +111,26 @@ void Receiver::parseCommand( const char* aCommand, sal_Int32 size, osl::StreamSo
void sendPreview(sal_uInt32 aSlideNumber, Reference<XSlideShowController> xSlideShowController, osl::StreamSocket &mStreamSocket )
{
- sal_uInt64 aSize;
-
- uno::Sequence<sal_Int8> aData = preparePreview( aSlideNumber, xSlideShowController, 320, 240, aSize );
+ sal_uInt64 aSize; // Unused
+ css::uno::Sequence<sal_Int8> aImageData = preparePreview( aSlideNumber, xSlideShowController, 320, 240, aSize );
rtl::OUStringBuffer aStrBuffer;
-// char* aDataEncoded = (char*) xmlSecBase64Encode( (xmlSecByte *) aData, aSize, 0 );
- ::sax::Converter::encodeBase64( aStrBuffer, aData );
-
- OUString aEncodedString = aStrBuffer.makeStringAndClear();
- OString aEncodedShortString = rtl::OUStringToOString( aEncodedString, RTL_TEXTENCODING_UTF8 );
-// aEncodedString.convertToString( &aEncodedShortString, RTL_TEXTENCODING_UTF8 , 0);
-
- JsonBuilder *aBuilder = json_builder_new();
-
-
- json_builder_begin_object( aBuilder );
-
- json_builder_set_member_name( aBuilder, "command" );
- json_builder_add_string_value( aBuilder, "slide_preview" );
-
- json_builder_set_member_name( aBuilder, "slide_number" );
- json_builder_add_int_value( aBuilder, 2 );
+ ::sax::Converter::encodeBase64( aStrBuffer, aImageData );
- json_builder_set_member_name( aBuilder, "image_preview" );
- json_builder_add_string_value( aBuilder, aEncodedShortString.getStr() );
+ OString aEncodedShortString = rtl::OUStringToOString(
+ aStrBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
- // FIXME: get the slide number
- json_builder_end_object( aBuilder );
+ // Start the writing
+ mStreamSocket.write( "slide_preview\n", strlen( "slide_preview\n" ) );
- 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();
-
- fprintf( stderr, "%s\n", aCommand );
-
- mStreamSocket.write( aLengthChar, aLengthLength );
+ rtl::OString aSlideNumberString(rtl::OUStringToOString(
+ rtl::OUString::valueOf( 2 ) , RTL_TEXTENCODING_UTF8 )); // FIXME get number
+ mStreamSocket.write( aSlideNumberString.getStr(), aSlideNumberString.getLength() );
mStreamSocket.write( "\n", 1 );
- mStreamSocket.write( aCommand, aLen );
- // Transmit here.
- g_free( aCommand );
+ mStreamSocket.write( aEncodedShortString.getStr(), aEncodedShortString.getLength() );
+ mStreamSocket.write( "\n\n", 2 );
+
}
@@ -172,21 +142,21 @@ Sequence<sal_Int8> preparePreview(sal_uInt32 aSlideNumber, Reference<XSlideShowC
FileBase::createTempFile( 0, 0, &aFileURL );
- uno::Reference< lang::XMultiServiceFactory > xServiceManager(
- ::comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
+ css::uno::Reference< css::lang::XMultiServiceFactory > xServiceManager(
+ ::comphelper::getProcessServiceFactory(), css::uno::UNO_QUERY_THROW );
- uno::Reference< XFilter > xFilter( xServiceManager->createInstance(
- "com.sun.star.drawing.GraphicExportFilter" ) , UNO_QUERY_THROW );
+ css::uno::Reference< css::document::XFilter > xFilter( xServiceManager->createInstance(
+ "com.sun.star.drawing.GraphicExportFilter" ) , css::uno::UNO_QUERY_THROW );
- uno::Reference< XExporter > xExporter( xFilter, uno::UNO_QUERY_THROW );
+ css::uno::Reference< css::document::XExporter > xExporter( xFilter, css::uno::UNO_QUERY_THROW );
- uno::Reference< lang::XComponent > xSourceDoc(
- xSlideShowController->getSlideByIndex( aSlideNumber ) , uno::UNO_QUERY_THROW );
+ css::uno::Reference< css::lang::XComponent > xSourceDoc(
+ xSlideShowController->getSlideByIndex( aSlideNumber ) , css::uno::UNO_QUERY_THROW );
xExporter->setSourceDocument( xSourceDoc );
- Sequence< beans::PropertyValue > aFilterData(3);
+ css::uno::Sequence< css::beans::PropertyValue > aFilterData(3);
aFilterData[0].Name = "PixelWidth";
aFilterData[0].Value <<= 2000;
aFilterData[1].Name = "PixelHeight";
@@ -197,7 +167,7 @@ Sequence<sal_Int8> preparePreview(sal_uInt32 aSlideNumber, Reference<XSlideShowC
aFilterData[2].Name = "ColorMode";
aFilterData[2].Value <<= 0; // Color
- uno::Sequence< beans::PropertyValue > aProps(3);
+ css::uno::Sequence< css::beans::PropertyValue > aProps(3);
aProps[0].Name = "MediaType";
aProps[0].Value <<= OUString( "image/png" );
@@ -218,7 +188,7 @@ Sequence<sal_Int8> preparePreview(sal_uInt32 aSlideNumber, Reference<XSlideShowC
sal_uInt64 aRead;
rSize = 0;
aFile.getSize( rSize );
- uno::Sequence<sal_Int8> aContents( rSize );
+ css::uno::Sequence<sal_Int8> aContents( rSize );
aFile.read( aContents.getArray(), rSize, aRead );
aFile.close();
diff --git a/sd/source/ui/remotecontrol/Server.hxx b/sd/source/ui/remotecontrol/Server.hxx
index ba6f8cd..1ee1885 100644
--- a/sd/source/ui/remotecontrol/Server.hxx
+++ b/sd/source/ui/remotecontrol/Server.hxx
@@ -12,12 +12,11 @@
// SERVER
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <osl/socket.hxx>
-//#include <com/sun/star/presentation/AnimationEffect.hpp>
+
#include <com/sun/star/presentation/XSlideShowListener.hpp>
#include <salhelper/thread.hxx>
More information about the Libreoffice-commits
mailing list