Kaydet (Commit) 57e5be3f authored tarafından Matúš Kukan's avatar Matúš Kukan

tubes: move ScDocFuncRecv::fileReceived to TeleManager_fileReceived

Change-Id: Ie2ab2c2d545f6fcbdc21171868c99b1756c90792
üst 58d4ab69
......@@ -91,14 +91,6 @@ class TubeContacts : public ModelessDialog
{
fprintf( stderr, "Could not register client handlers.\n" );
}
else
{
// FIXME: These signals should not be bind to a document specific code.
// Receiving file is not related to any document.
mpManager->sigFileReceived.connect( boost::bind(
&ScDocFuncRecv::fileReceived, mpSender->GetReceiver(), _1 ) );
}
}
void StartBuddySession()
......
......@@ -28,7 +28,6 @@
#include "sal/config.h"
#include <tubes/warnings_guard_boost_signals2.hpp>
#include <vector>
#include "cell.hxx"
......@@ -39,24 +38,18 @@
#include <tubes/manager.hxx>
#include <tubes/conference.hxx>
#include <tubes/contact-list.hxx>
#include <tubes/constants.h>
// new file send/recv fun ...
#include <com/sun/star/uno/Sequence.hxx>
#include <unotools/tempfile.hxx>
#include <unotools/localfilehelper.hxx>
#include <comphelper/mediadescriptor.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/componentcontext.hxx>
#include <com/sun/star/frame/XLoadable.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/document/XDocumentRecovery.hpp>
#include <com/sun/star/util/XCloseable.hpp>
namespace css = ::com::sun::star;
// FIXME: this is only meant for demo I think
extern void TeleManager_fileReceived( const OUString& );
// FIXME: really ScDocFunc should be an abstract base
ScDocFuncRecv::ScDocFuncRecv( ScDocFuncDirect *pChain )
: mpChain( pChain )
......@@ -115,64 +108,6 @@ void ScDocFuncRecv::packetReceived( TelePacket &rPacket )
RecvMessage( aString );
}
void ScDocFuncRecv::fileReceived( const rtl::OUString &rStr )
{
fprintf( stderr, "incoming file '%s'\n",
rtl::OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
// using the frame::XLoadable interface fails with a DoubleInitializationException
/* css::uno::Sequence < css::beans::PropertyValue > aLoadArgs(5);
aLoadArgs[0].Name = rtl::OUString( "URL" );
aLoadArgs[0].Value <<= rpStr;
aLoadArgs[1].Name = rtl::OUString( "FilterName" );
aLoadArgs[1].Value <<= rtl::OUString( "calc8" );
aLoadArgs[2].Name = rtl::OUString( "Referer" );
aLoadArgs[2].Value <<= rtl::OUString( "" );
// no interaction handler ?
aLoadArgs[3].Name = rtl::OUString( "MacroExecutionMode" );
aLoadArgs[3].Value <<= sal_Int32( 3 );
aLoadArgs[4].Name = rtl::OUString( "UpdateDocMode" );
aLoadArgs[4].Value <<= sal_Int32( 2 );
try
{
css::uno::Reference < css::frame::XLoadable > xLoad(
rDocShell.GetBaseModel(), css::uno::UNO_QUERY_THROW );
xLoad->load( aLoadArgs );
}
catch ( css::uno::Exception& e )
{
fprintf( stderr, "exception when loading '%s' !\n",
rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
} */
// #2 - tried out the SfxAutoReloadTimer_Impl - shove stuff at the SID_RELOAD slot ...
// #3 - can we use the framework/inc/services/frame.hxx 's "sTargetFrameName"
// magic to load into our current frame ? ... :-)
css::uno::Reference< css::lang::XMultiServiceFactory > rFactory =
::comphelper::getProcessServiceFactory();
css::uno::Sequence < css::beans::PropertyValue > args(0);
// FIXME: should this be hidden before it is synched & ready ? ...
// args[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hidden"));
// args[0].Value <<= sal_True;
try
{
css::uno::Reference < css::frame::XComponentLoader > xLoader(
::comphelper::getProcessServiceFactory()->createInstance(
"com.sun.star.frame.Desktop" ),
css::uno::UNO_QUERY_THROW );
css::uno::Reference < css::util::XCloseable > xDoc(
xLoader->loadComponentFromURL( rStr, "_blank", 0, args ),
css::uno::UNO_QUERY_THROW );
}
catch ( css::uno::Exception& e )
{
fprintf( stderr, "exception when loading '%s' !\n",
rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
/*
* Provides a local bus that doesn't require an IM channel for
* quick demoing, export INTERCEPT=demo # to enable.
......@@ -202,15 +137,6 @@ class ScDocFuncDemo : public ScDocFuncRecv
= aCopy.begin(); i != aCopy.end(); ++i)
(*i)->RecvMessage(rString);
}
virtual void fileReceived( const rtl::OUString &rStr )
{
// FIXME: Lifecycle nightmare
std::vector< boost::shared_ptr<ScDocFuncRecv> > aCopy( maClients );
for (std::vector< boost::shared_ptr<ScDocFuncRecv> >::iterator i
= aCopy.begin(); i != aCopy.end(); ++i)
(*i)->fileReceived( rStr );
}
};
extern "C"
......@@ -262,7 +188,7 @@ void ScDocFuncSend::SendFile( const rtl::OUString &sUuid )
if (mpConference)
mpConference->sendFile( aFileURL, file_sent_cb, NULL );
else
mpDirect->fileReceived( aFileURL );
TeleManager_fileReceived( aFileURL );
// FIXME: unlink the file after send ...
}
......
......@@ -219,7 +219,6 @@ public:
void packetReceived( TelePacket &rPacket );
virtual void fileReceived( const rtl::OUString &rStr );
virtual void RecvMessage( const rtl::OString &rString );
};
......
......@@ -32,12 +32,16 @@ $(eval $(call gb_Library_set_include,tubes,\
$$(INCLUDE) \
))
$(eval $(call gb_Library_use_sdk_api,tubes))
$(eval $(call gb_Library_add_defs,tubes,\
-DTUBES_DLLIMPLEMENTATION \
))
$(eval $(call gb_Library_use_libraries,tubes,\
$(gb_STDLIBS) \
comphelper \
cppu \
sal \
salhelper \
))
......
......@@ -39,7 +39,6 @@
#include <rtl/ref.hxx>
#include <tools/link.hxx>
#include <telepathy-glib/telepathy-glib.h>
#include <tubes/warnings_guard_boost_signals2.hpp>
#include <map>
// For testing purposes, we might need more in future.
......@@ -140,8 +139,6 @@ public:
void disconnect();
boost::signals2::signal<void ( const rtl::OUString &localUri )> sigFileReceived;
/// Only for use with MainLoopFlusher
GMainLoop* getMainLoop() const;
......
......@@ -33,6 +33,21 @@
#include <osl/mutex.hxx>
#include <cstring>
// new file send/recv fun ...
#include <com/sun/star/uno/Sequence.hxx>
#include <unotools/tempfile.hxx>
#include <unotools/localfilehelper.hxx>
#include <comphelper/mediadescriptor.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/componentcontext.hxx>
#include <com/sun/star/frame/XLoadable.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/document/XDocumentRecovery.hpp>
#include <com/sun/star/util/XCloseable.hpp>
namespace css = ::com::sun::star;
#if defined SAL_LOG_INFO
namespace
......@@ -172,6 +187,65 @@ bool TeleManager::hasWaitingConference()
return !pImpl->msCurrentUUID.isEmpty();
}
// FIXME this is exported only because of ScDocFuncDemo
SAL_DLLPUBLIC_EXPORT void TeleManager_fileReceived( const rtl::OUString &rStr )
{
fprintf( stderr, "incoming file '%s'\n",
rtl::OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
// using the frame::XLoadable interface fails with a DoubleInitializationException
/* css::uno::Sequence < css::beans::PropertyValue > aLoadArgs(5);
aLoadArgs[0].Name = rtl::OUString( "URL" );
aLoadArgs[0].Value <<= rpStr;
aLoadArgs[1].Name = rtl::OUString( "FilterName" );
aLoadArgs[1].Value <<= rtl::OUString( "calc8" );
aLoadArgs[2].Name = rtl::OUString( "Referer" );
aLoadArgs[2].Value <<= rtl::OUString( "" );
// no interaction handler ?
aLoadArgs[3].Name = rtl::OUString( "MacroExecutionMode" );
aLoadArgs[3].Value <<= sal_Int32( 3 );
aLoadArgs[4].Name = rtl::OUString( "UpdateDocMode" );
aLoadArgs[4].Value <<= sal_Int32( 2 );
try
{
css::uno::Reference < css::frame::XLoadable > xLoad(
rDocShell.GetBaseModel(), css::uno::UNO_QUERY_THROW );
xLoad->load( aLoadArgs );
}
catch ( css::uno::Exception& e )
{
fprintf( stderr, "exception when loading '%s' !\n",
rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
} */
// #2 - tried out the SfxAutoReloadTimer_Impl - shove stuff at the SID_RELOAD slot ...
// #3 - can we use the framework/inc/services/frame.hxx 's "sTargetFrameName"
// magic to load into our current frame ? ... :-)
css::uno::Reference< css::lang::XMultiServiceFactory > rFactory =
::comphelper::getProcessServiceFactory();
css::uno::Sequence < css::beans::PropertyValue > args(0);
// FIXME: should this be hidden before it is synched & ready ? ...
// args[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hidden"));
// args[0].Value <<= sal_True;
try
{
css::uno::Reference < css::frame::XComponentLoader > xLoader(
::comphelper::getProcessServiceFactory()->createInstance(
"com.sun.star.frame.Desktop" ),
css::uno::UNO_QUERY_THROW );
css::uno::Reference < css::util::XCloseable > xDoc(
xLoader->loadComponentFromURL( rStr, "_blank", 0, args ),
css::uno::UNO_QUERY_THROW );
}
catch ( css::uno::Exception& e )
{
fprintf( stderr, "exception when loading '%s' !\n",
rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel *, gpointer pUserData)
{
TeleManager* pManager = reinterpret_cast<TeleManager*>(pUserData);
......@@ -187,7 +261,7 @@ void TeleManager::TransferDone( EmpathyFTHandler *handler, TpFileTransferChannel
OString sUuid( OUStringToOString( aUri.copy( first + 1, last - first - 1),
RTL_TEXTENCODING_UTF8));
pImpl->msCurrentUUID = sUuid;
pManager->sigFileReceived( aUri );
TeleManager_fileReceived( aUri );
g_object_unref( handler);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment