Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
53720694
Kaydet (Commit)
53720694
authored
Mar 23, 2012
tarafından
Michael Meeks
Kaydeden (comit)
Matúš Kukan
Tem 17, 2012
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
tubes: add hooks for send / recv file (untested)
üst
cbe4cb77
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
8 deletions
+85
-8
collab.cxx
sc/source/ui/collab/collab.cxx
+34
-3
sendfunc.cxx
sc/source/ui/collab/sendfunc.cxx
+42
-2
collab.hxx
sc/source/ui/inc/collab.hxx
+9
-3
No files found.
sc/source/ui/collab/collab.cxx
Dosyayı görüntüle @
53720694
...
...
@@ -31,9 +31,11 @@
#include <tubes/conference.hxx>
#include <tubes/contact-list.hxx>
ScCollaboration
::
ScCollaboration
(
const
Link
&
rLink
)
ScCollaboration
::
ScCollaboration
(
const
Link
&
rLinkPacket
,
const
Link
&
rLinkFile
)
:
maLink
(
rLink
),
maLinkPacket
(
rLinkPacket
),
maLinkFile
(
rLinkFile
),
mpAccount
(
NULL
),
mpContact
(
NULL
),
mpManager
(
NULL
)
...
...
@@ -51,11 +53,28 @@ ScCollaboration::~ScCollaboration()
}
void
ScCollaboration
::
receivedFile
(
rtl
::
OUString
&
rFileURL
)
{
fprintf
(
stderr
,
"file recieved '%s'
\n
"
,
rtl
::
OUStringToOString
(
rFileURL
,
RTL_TEXTENCODING_UTF8
).
getStr
()
);
if
(
maLinkFile
.
IsSet
()
)
maLinkFile
.
Call
(
&
rFileURL
);
}
extern
"C"
{
void
file_recv_cb
(
rtl
::
OUString
&
localUri
,
void
*
pUserData
)
{
ScCollaboration
*
pCollab
=
reinterpret_cast
<
ScCollaboration
*>
(
pUserData
);
pCollab
->
receivedFile
(
localUri
);
}
}
bool
ScCollaboration
::
initManager
()
{
mpManager
=
new
TeleManager
(
maLink
);
mpManager
=
new
TeleManager
(
maLink
Packet
);
bool
bOk
=
mpManager
->
connect
();
mpManager
->
prepareAccountManager
();
mpManager
->
setFileReceivedCallback
(
file_recv_cb
,
(
void
*
)
this
);
return
bOk
;
}
...
...
@@ -97,4 +116,16 @@ bool ScCollaboration::recvPacket( rtl::OString& rString, TeleConference* pConfer
return
bOk
;
}
extern
"C"
{
static
void
file_sent_cb
(
bool
aSuccess
,
void
*
/* pUserData */
)
{
fprintf
(
stderr
,
"File send %s
\n
"
,
aSuccess
?
"success"
:
"failed"
);
}
}
void
ScCollaboration
::
sendFile
(
rtl
::
OUString
&
rFileURL
)
{
mpManager
->
sendFile
(
rFileURL
,
file_sent_cb
,
NULL
);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sc/source/ui/collab/sendfunc.cxx
Dosyayı görüntüle @
53720694
...
...
@@ -37,9 +37,12 @@
#include <tubes/conference.hxx>
// 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 <com/sun/star/frame/XLoadable.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/document/XDocumentRecovery.hpp>
namespace
css
=
::
com
::
sun
::
star
;
...
...
@@ -253,6 +256,7 @@ public:
}
DECL_LINK
(
ReceiverCallback
,
TeleConference
*
);
DECL_LINK
(
ReceiveFileCallback
,
rtl
::
OUString
*
);
void
RecvMessage
(
const
rtl
::
OString
&
rString
)
{
...
...
@@ -299,6 +303,38 @@ IMPL_LINK( ScDocFuncRecv, ReceiverCallback, TeleConference*, pConference )
return
0
;
}
IMPL_LINK
(
ScDocFuncRecv
,
ReceiveFileCallback
,
rtl
::
OUString
*
,
pStr
)
{
fprintf
(
stderr
,
"incoming file '%s'
\n
"
,
rtl
::
OUStringToOString
(
*
pStr
,
RTL_TEXTENCODING_UTF8
).
getStr
()
);
css
::
uno
::
Sequence
<
css
::
beans
::
PropertyValue
>
aLoadArgs
(
5
);
aLoadArgs
[
0
].
Name
=
rtl
::
OUString
(
"URL"
);
aLoadArgs
[
0
].
Value
<<=
(
*
pStr
);
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
&
)
{
fprintf
(
stderr
,
"exception when loading !
\n
"
);
}
return
0
;
}
class
ScDocFuncSend
:
public
ScDocFunc
{
ScDocFuncRecv
*
mpChain
;
...
...
@@ -337,7 +373,9 @@ class ScDocFuncSend : public ScDocFunc
fprintf
(
stderr
,
"Temp file is '%s'
\n
"
,
rtl
::
OUStringToOString
(
aFileURL
,
RTL_TEXTENCODING_UTF8
).
getStr
()
);
}
mpCollab
->
sendFile
(
aFileURL
);
}
public
:
// FIXME: really ScDocFunc should be an abstract base, so
...
...
@@ -478,7 +516,9 @@ SC_DLLPRIVATE ScDocFunc *ScDocShell::CreateDocFunc()
ScDocFuncRecv
*
pReceiver
=
new
ScDocFuncRecv
(
*
this
,
new
ScDocFuncDirect
(
*
this
)
);
ScDocFuncSend
*
pSender
=
new
ScDocFuncSend
(
*
this
,
pReceiver
);
bool
bOk
=
true
;
ScCollaboration
*
pCollab
=
new
ScCollaboration
(
LINK
(
pReceiver
,
ScDocFuncRecv
,
ReceiverCallback
));
ScCollaboration
*
pCollab
=
new
ScCollaboration
(
LINK
(
pReceiver
,
ScDocFuncRecv
,
ReceiverCallback
),
LINK
(
pReceiver
,
ScDocFuncRecv
,
ReceiveFileCallback
)
);
bOk
=
bOk
&&
pCollab
->
initManager
();
bOk
=
bOk
&&
pCollab
->
initAccountContact
();
bOk
=
bOk
&&
pCollab
->
startCollaboration
();
...
...
sc/source/ui/inc/collab.hxx
Dosyayı görüntüle @
53720694
...
...
@@ -36,7 +36,7 @@ typedef struct _TpContact TpContact;
typedef
struct
_TpAccount
TpAccount
;
class
TeleManager
;
class
TeleConference
;
namespace
rtl
{
class
OString
;
}
namespace
rtl
{
class
OString
;
class
OUString
;
}
class
ScCollaboration
{
...
...
@@ -44,8 +44,11 @@ public:
/** @param rLink
Callback when a packet is received, called with TeleConference*
@param rLink
Callback when a file is received, called with TeleConference*
*/
ScCollaboration
(
const
Link
&
rLink
);
ScCollaboration
(
const
Link
&
rLinkPacket
,
const
Link
&
rLinkFile
);
~
ScCollaboration
();
bool
initManager
();
...
...
@@ -53,10 +56,13 @@ public:
bool
startCollaboration
();
bool
sendPacket
(
const
rtl
::
OString
&
rString
);
bool
recvPacket
(
rtl
::
OString
&
rString
,
TeleConference
*
pConference
);
void
sendFile
(
rtl
::
OUString
&
rFileURL
);
void
receivedFile
(
rtl
::
OUString
&
rFileURL
);
private
:
Link
maLink
;
Link
maLinkPacket
;
Link
maLinkFile
;
TpAccount
*
mpAccount
;
TpContact
*
mpContact
;
TeleManager
*
mpManager
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment