sc/AllLangResTarget_sc.mk | 1 sc/CppunitTest_sc_ucalc.mk | 10 - sc/Library_sc.mk | 12 - sc/source/ui/collab/contacts.cxx | 290 ------------------------------- sc/source/ui/collab/contacts.hrc | 11 - sc/source/ui/collab/contacts.hxx | 35 --- sc/source/ui/collab/contacts.src | 61 ------ sc/source/ui/collab/sccollaboration.cxx | 62 ++++++ sc/source/ui/collab/sendfunc.cxx | 7 sc/source/ui/inc/sccollaboration.hxx | 31 +++ sc/source/ui/view/cellsh3.cxx | 7 scp2/inc/macros.inc | 1 scp2/macros/macro.pl | 11 - scp2/source/ooo/file_resource_ooo.scp | 3 scp2/source/ooo/module_lang_template.scp | 1 tubes/AllLangResTarget_tubes.mk | 19 ++ tubes/CppunitTest_tubes_test.mk | 4 tubes/Library_tubes.mk | 8 tubes/Module_tubes.mk | 1 tubes/Package_inc.mk | 2 tubes/inc/tubes/collaboration.hxx | 34 +++ tubes/inc/tubes/conference.hxx | 8 tubes/inc/tubes/contacts.hxx | 38 ++++ tubes/source/conference.cxx | 29 ++- tubes/source/contacts.cxx | 280 +++++++++++++++++++++++++++++ tubes/source/contacts.hrc | 11 + tubes/source/contacts.src | 60 ++++++ tubes/source/manager.cxx | 2 28 files changed, 592 insertions(+), 447 deletions(-)
New commits: commit bc21b49a464ae153341ee8d836993ca89b1a6919 Author: Matúš Kukan <[email protected]> Date: Mon Jul 30 11:49:10 2012 +0200 tubes: move sc/source/ui/collab/contacts.* to tubes - sc no longer directly links against telepathy - there is new class ScCollaboration derived from abstract Collaboration describing collaboration functionality for apps used in tubes/ - also added resource manager into tubes/ Change-Id: Ic89ae955f5b47490f4f4b8781bcee5dea5336bae diff --git a/sc/AllLangResTarget_sc.mk b/sc/AllLangResTarget_sc.mk index 90ff378..2d3c64c 100644 --- a/sc/AllLangResTarget_sc.mk +++ b/sc/AllLangResTarget_sc.mk @@ -83,7 +83,6 @@ $(eval $(call gb_SrsTarget_add_files,sc/res,\ sc/source/ui/src/condformatdlg.src \ sc/source/ui/src/condformatmgr.src \ sc/source/ui/cctrl/checklistmenu.src \ - sc/source/ui/collab/contacts.src \ sc/source/ui/navipi/navipi.src \ sc/source/ui/docshell/tpstat.src \ sc/source/ui/optdlg/calcoptionsdlg.src \ diff --git a/sc/CppunitTest_sc_ucalc.mk b/sc/CppunitTest_sc_ucalc.mk index 8301416..2796242 100644 --- a/sc/CppunitTest_sc_ucalc.mk +++ b/sc/CppunitTest_sc_ucalc.mk @@ -44,15 +44,7 @@ $(call gb_CxxObject_get_target,sc/qa/unit/ucalc): \ $(WORKDIR)/AllLangRes/sc \ ifeq ($(ENABLE_TELEPATHY),TRUE) - -$(eval $(call gb_CppunitTest_use_libraries,sc_ucalc,\ - tubes \ -)) - -$(eval $(call gb_CppunitTest_use_externals,sc_ucalc,\ - telepathy \ -)) - +$(eval $(call gb_CppunitTest_use_libraries,sc_ucalc,tubes)) endif $(eval $(call gb_CppunitTest_use_libraries,sc_ucalc, \ diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk index 998ca60..1a68be6 100644 --- a/sc/Library_sc.mk +++ b/sc/Library_sc.mk @@ -43,24 +43,16 @@ $(eval $(call gb_Library_add_defs,sc,\ $(eval $(call gb_Library_use_sdk_api,sc)) ifeq ($(ENABLE_TELEPATHY),TRUE) - -$(eval $(call gb_Library_use_libraries,sc,\ - tubes \ -)) +$(eval $(call gb_Library_use_libraries,sc,tubes)) $(eval $(call gb_Library_add_defs,sc,\ -DENABLE_TELEPATHY \ )) -$(eval $(call gb_Library_use_externals,sc,\ - telepathy \ -)) - $(eval $(call gb_Library_add_exception_objects,sc,\ - sc/source/ui/collab/contacts \ + sc/source/ui/collab/sccollaboration \ sc/source/ui/collab/sendfunc \ )) - endif $(eval $(call gb_Library_use_libraries,sc,\ diff --git a/sc/source/ui/collab/contacts.cxx b/sc/source/ui/collab/contacts.cxx deleted file mode 100644 index e6e2239..0000000 --- a/sc/source/ui/collab/contacts.cxx +++ /dev/null @@ -1,290 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License or as specified alternatively below. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * Major Contributor(s): - * Copyright (C) 2012 Michael Meeks <[email protected]> (initial developer) - * - * All Rights Reserved. - * - * For minor contributions see the git repository. - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#include "sal/config.h" - -#include <vector> -#include "contacts.hrc" -#include "sendfunc.hxx" -#include "docsh.hxx" -#include "scresid.hxx" -#include <svtools/filter.hxx> -#include <tubes/conference.hxx> -#include <tubes/contact-list.hxx> -#include <tubes/manager.hxx> -#include <vcl/fixed.hxx> -#include <vcl/dialog.hxx> -#include <svx/simptabl.hxx> - -#include <telepathy-glib/telepathy-glib.h> - -#define CONTACTS_DLG - -#ifdef CONTACTS_DLG -namespace { -class TubeContacts : public ModelessDialog -{ - FixedLine maLabel; - PushButton maBtnConnect; - PushButton maBtnGroup; - PushButton maBtnInvite; - PushButton maBtnListen; - SvxSimpleTableContainer maListContainer; - SvxSimpleTable maList; - TeleManager* mpManager; - - DECL_LINK( BtnConnectHdl, void * ); - DECL_LINK( BtnGroupHdl, void * ); - DECL_LINK( BtnInviteHdl, void * ); - DECL_LINK( BtnListenHdl, void * ); - - struct AccountContact - { - TpAccount* mpAccount; - TpContact* mpContact; - AccountContact( TpAccount* pAccount, TpContact* pContact ): - mpAccount(pAccount), mpContact(pContact) {} - }; - boost::ptr_vector<AccountContact> maACs; - - ScDocFuncSend* GetScDocFuncSendInCurrentSfxObjectShell() - { - ScDocShell *pScDocShell = dynamic_cast<ScDocShell*> (SfxObjectShell::Current()); - ScDocFunc *pDocFunc = pScDocShell ? &pScDocShell->GetDocFunc() : NULL; - return dynamic_cast<ScDocFuncSend*> (pDocFunc); - } - - ScDocFuncSend* EnsureScDocFuncSendInCurrentSfxObjectShell() - { - ScDocShell *pScDocShell = dynamic_cast<ScDocShell*> (SfxObjectShell::Current()); - ScDocFunc *pDocFunc = pScDocShell ? &pScDocShell->GetDocFunc() : NULL; - ScDocFuncSend *pSender = dynamic_cast<ScDocFuncSend*> (pDocFunc); - if (!pSender) - { - // This means pDocFunc has to be ScDocFuncDirect* and we are not collaborating yet. - ScDocFuncDirect *pDirect = dynamic_cast<ScDocFuncDirect*> (pDocFunc); - ScDocFuncRecv *pReceiver = new ScDocFuncRecv( pDirect ); - pSender = new ScDocFuncSend( *pScDocShell, pReceiver ); - pScDocShell->SetDocFunc( pSender ); - } - return pSender; - } - - void Invite() - { - AccountContact *pAC = NULL; - if (maList.FirstSelected()) - pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); - if (pAC) - { - ScDocFuncSend *pSender = GetScDocFuncSendInCurrentSfxObjectShell(); - if (pSender && pSender->GetConference()) - { - TpContact* pContact = pAC->mpContact; - pSender->GetConference()->invite( pContact ); - pSender->SendFile( pContact, OStringToOUString( - pSender->GetConference()->getUuid(), RTL_TEXTENCODING_UTF8 ) ); - } - } - } - - void Listen() - { - if (!mpManager->registerClients()) - SAL_INFO( "sc.tubes", "Could not register client handlers." ); - } - - void StartBuddySession() - { - AccountContact *pAC = NULL; - if (maList.FirstSelected()) - pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); - if (pAC) - { - TpAccount* pAccount = pAC->mpAccount; - TpContact* pContact = pAC->mpContact; - fprintf( stderr, "picked %s\n", tp_contact_get_identifier( pContact ) ); - TeleConference* pConference = mpManager->startBuddySession( pAccount, pContact ); - if (!pConference) - fprintf( stderr, "could not start session with %s\n", - tp_contact_get_identifier( pContact ) ); - else - { - ScDocFuncSend* pSender = EnsureScDocFuncSendInCurrentSfxObjectShell(); - pSender->SetCollaboration( pConference ); - pSender->SendFile( pContact, OStringToOUString( - pConference->getUuid(), RTL_TEXTENCODING_UTF8 ) ); - } - } - } - - void StartGroupSession() - { - AccountContact *pAC = NULL; - if (maList.FirstSelected()) - pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); - if (pAC) - { - TpAccount* pAccount = pAC->mpAccount; - fprintf( stderr, "picked %s\n", tp_account_get_display_name( pAccount ) ); - TeleConference* pConference = mpManager->startGroupSession( pAccount, - rtl::OUString("liboroom"), rtl::OUString("conference.jabber.org") ); - if (!pConference) - fprintf( stderr, "could not start group session\n" ); - else - { - ScDocFuncSend* pSender = EnsureScDocFuncSendInCurrentSfxObjectShell(); - pSender->SetCollaboration( pConference ); - } - } - } - -public: - TubeContacts() : - ModelessDialog( NULL, ScResId( RID_SCDLG_CONTACTS ) ), - maLabel( this, ScResId( FL_LABEL ) ), - maBtnConnect( this, ScResId( BTN_CONNECT ) ), - maBtnGroup( this, ScResId( BTN_GROUP ) ), - maBtnInvite( this, ScResId( BTN_INVITE ) ), - maBtnListen( this, ScResId( BTN_LISTEN ) ), - maListContainer( this, ScResId( CTL_LIST ) ), - maList( maListContainer ), - mpManager( new TeleManager() ) - { - Hide(); - maBtnConnect.SetClickHdl( LINK( this, TubeContacts, BtnConnectHdl ) ); - maBtnGroup.SetClickHdl( LINK( this, TubeContacts, BtnGroupHdl ) ); - maBtnInvite.SetClickHdl( LINK( this, TubeContacts, BtnInviteHdl ) ); - maBtnListen.SetClickHdl( LINK( this, TubeContacts, BtnListenHdl ) ); - - static long aStaticTabs[]= - { - 3 /* count */, 0, 20, 100, 150, 200 - }; - - maList.SvxSimpleTable::SetTabs( aStaticTabs ); - String sHeader( '\t' ); - sHeader += String( ScResId( STR_HEADER_ALIAS ) ); - sHeader += '\t'; - sHeader += String( ScResId( STR_HEADER_NAME ) ); - sHeader += '\t'; - maList.InsertHeaderEntry( sHeader, HEADERBAR_APPEND, HIB_LEFT ); - - mpManager->getContactList()->sigContactListChanged.connect( - boost::bind( &TubeContacts::Populate, this ) ); - } - virtual ~TubeContacts() - { - delete mpManager; - } - - static rtl::OUString fromUTF8( const char *pStr ) - { - return rtl::OStringToOUString( rtl::OString( pStr, strlen( pStr ) ), - RTL_TEXTENCODING_UTF8 ); - } - - void Populate() - { - SAL_INFO( "sc.tubes", "Populating contact list dialog" ); - maList.Clear(); - ContactList *pContacts = mpManager->getContactList(); - if ( pContacts ) - { - AccountContactPairV aPairs = pContacts->getContacts(); - AccountContactPairV::iterator it; - for( it = aPairs.begin(); it != aPairs.end(); ++it ) - { - Image aImage; - GFile *pAvatarFile = tp_contact_get_avatar_file( it->second ); - if( pAvatarFile ) - { - const rtl::OUString sAvatarFileUrl = fromUTF8( g_file_get_path ( pAvatarFile ) ); - Graphic aGraphic; - if( GRFILTER_OK == GraphicFilter::LoadGraphic( sAvatarFileUrl, rtl::OUString(""), aGraphic ) ) - { - BitmapEx aBitmap = aGraphic.GetBitmapEx(); - double fScale = 30.0 / aBitmap.GetSizePixel().Height(); - aBitmap.Scale( fScale, fScale ); - aImage = Image( aBitmap ); - } - } - rtl::OUStringBuffer aEntry( 128 ); - aEntry.append( sal_Unicode( '\t' ) ); - aEntry.append( fromUTF8 ( tp_contact_get_alias( it->second ) ) ); - aEntry.append( sal_Unicode( '\t' ) ); - aEntry.append( fromUTF8 ( tp_contact_get_identifier( it->second ) ) ); - aEntry.append( sal_Unicode( '\t' ) ); - SvLBoxEntry* pEntry = maList.InsertEntry( aEntry.makeStringAndClear(), aImage, aImage ); - // FIXME: ref the TpAccount, TpContact ... - maACs.push_back( new AccountContact( it->first, it->second ) ); - pEntry->SetUserData( &maACs.back() ); - } - } - Show(); - } -}; - -IMPL_LINK_NOARG( TubeContacts, BtnConnectHdl ) -{ - StartBuddySession(); - return 0; -} - -IMPL_LINK_NOARG( TubeContacts, BtnGroupHdl ) -{ - StartGroupSession(); - return 0; -} - -IMPL_LINK_NOARG( TubeContacts, BtnInviteHdl ) -{ - Invite(); - return 0; -} - -IMPL_LINK_NOARG( TubeContacts, BtnListenHdl ) -{ - Listen(); - return 0; -} - -} // anonymous namespace -#endif - -namespace tubes { -void createContacts() -{ -#ifdef CONTACTS_DLG - static TubeContacts *pContacts = new TubeContacts(); - pContacts->Populate(); -#endif -} -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/collab/contacts.hrc b/sc/source/ui/collab/contacts.hrc deleted file mode 100644 index 4d7cc5f..0000000 --- a/sc/source/ui/collab/contacts.hrc +++ /dev/null @@ -1,11 +0,0 @@ -#include "sc.hrc" // -> RID_SCDLG_CONTACTS - -#define FL_LABEL 1 -#define CTL_LIST 2 -#define BTN_CONNECT 3 -#define BTN_INVITE 4 -#define BTN_LISTEN 5 -#define BTN_GROUP 6 - -#define STR_HEADER_ALIAS 20 -#define STR_HEADER_NAME 21 diff --git a/sc/source/ui/collab/contacts.hxx b/sc/source/ui/collab/contacts.hxx deleted file mode 100644 index 9c8345e..0000000 --- a/sc/source/ui/collab/contacts.hxx +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License or as specified alternatively below. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * Major Contributor(s): - * Copyright (C) 2012 Michael Meeks <[email protected]> (initial developer) - * - * All Rights Reserved. - * - * For minor contributions see the git repository. - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#include "sal/config.h" - -namespace tubes { - void createContacts(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/collab/contacts.src b/sc/source/ui/collab/contacts.src deleted file mode 100644 index 6a868ae..0000000 --- a/sc/source/ui/collab/contacts.src +++ /dev/null @@ -1,61 +0,0 @@ -#include "sc.hrc" -#include "contacts.hrc" - -ModelessDialog RID_SCDLG_CONTACTS -{ - HelpId = HID_SCPAGE_AREAS; // has to be something ... - OutputSize = TRUE ; - SVLook = TRUE ; - Hide = FALSE ; - Moveable = TRUE ; - Closeable = TRUE ; - Size = MAP_APPFONT ( 220 , 225 ) ; - OutputSize = TRUE ; - Text [ en-US ] = "Contacts" ; - - FixedLine FL_LABEL - { - Pos = MAP_APPFONT ( 8 , 2 ) ; - Size = MAP_APPFONT ( 198 , 8 ) ; - Text [ en-US ] = "Select a contact to collaborate with" ; - }; - PushButton BTN_CONNECT - { - Pos = MAP_APPFONT( 70 , 200 ); - Size = MAP_APPFONT( 50 , 10 ); - Text [ en-US ] = "startBuddySession"; - }; - PushButton BTN_GROUP - { - Pos = MAP_APPFONT( 70 , 212 ); - Size = MAP_APPFONT( 50 , 10 ); - Text [ en-US ] = "startGroupSession"; - }; - PushButton BTN_INVITE - { - Pos = MAP_APPFONT( 130 , 200 ); - Size = MAP_APPFONT( 50 , 10 ); - Text [ en-US ] = "Invite"; - }; - PushButton BTN_LISTEN - { - Pos = MAP_APPFONT( 8 , 200 ); - Size = MAP_APPFONT( 50 , 10 ); - Text [ en-US ] = "Listen"; - }; - Control CTL_LIST - { - Pos = MAP_APPFONT ( 8 , 10 ) ; - Size = MAP_APPFONT ( 200 , 190 ) ; - Border = TRUE ; - TabStop = TRUE ; - }; - String STR_HEADER_ALIAS - { - Text [ en-US ] = "Alias" ; - }; - String STR_HEADER_NAME - { - Text [ en-US ] = "Name" ; - }; -}; diff --git a/sc/source/ui/collab/sccollaboration.cxx b/sc/source/ui/collab/sccollaboration.cxx new file mode 100644 index 0000000..758db89 --- /dev/null +++ b/sc/source/ui/collab/sccollaboration.cxx @@ -0,0 +1,62 @@ +/* -*- 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/. + */ + +#include "sccollaboration.hxx" + +#include "docsh.hxx" +#include "sendfunc.hxx" + +ScCollaboration::ScCollaboration() +{ +} + +ScCollaboration::~ScCollaboration() +{ +} + +TeleConference* ScCollaboration::GetConference() const +{ + ScDocFuncSend* pSender = GetScDocFuncSend(); + if (pSender) + return pSender->GetConference(); + + return NULL; +} + +void ScCollaboration::SetCollaboration( TeleConference* pConference ) +{ + ScDocShell* pScDocShell = dynamic_cast<ScDocShell*> (SfxObjectShell::Current()); + ScDocFunc* pDocFunc = pScDocShell ? &pScDocShell->GetDocFunc() : NULL; + ScDocFuncSend* pSender = dynamic_cast<ScDocFuncSend*> (pDocFunc); + if (!pSender) + { + // This means pDocFunc has to be ScDocFuncDirect* and we are not collaborating yet. + ScDocFuncDirect *pDirect = dynamic_cast<ScDocFuncDirect*> (pDocFunc); + ScDocFuncRecv *pReceiver = new ScDocFuncRecv( pDirect ); + pSender = new ScDocFuncSend( *pScDocShell, pReceiver ); + pScDocShell->SetDocFunc( pSender ); + } + pSender->SetCollaboration( pConference ); +} + +void ScCollaboration::SendFile( TpContact* pContact, const OUString& rURL ) +{ + ScDocFuncSend* pSender = GetScDocFuncSend(); + if (pSender) + pSender->SendFile( pContact, rURL ); +} + +ScDocFuncSend* ScCollaboration::GetScDocFuncSend() const +{ + ScDocShell *pScDocShell = dynamic_cast<ScDocShell*> (SfxObjectShell::Current()); + ScDocFunc *pDocFunc = pScDocShell ? &pScDocShell->GetDocFunc() : NULL; + return dynamic_cast<ScDocFuncSend*> (pDocFunc); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/collab/sendfunc.cxx b/sc/source/ui/collab/sendfunc.cxx index 58af1ba..1a1203d 100644 --- a/sc/source/ui/collab/sendfunc.cxx +++ b/sc/source/ui/collab/sendfunc.cxx @@ -31,12 +31,13 @@ #include <vector> #include "cell.hxx" -#include "contacts.hxx" #include "docsh.hxx" #include "docfunc.hxx" +#include "sccollaboration.hxx" #include "sendfunc.hxx" -#include <tubes/manager.hxx> #include <tubes/conference.hxx> +#include <tubes/contacts.hxx> +#include <tubes/manager.hxx> #include <com/sun/star/uno/Sequence.hxx> #include <unotools/tempfile.hxx> @@ -252,7 +253,7 @@ sal_Bool ScDocFuncSend::SetNormalString( bool& o_rbNumFmtSet, const ScAddress& r SendFile( NULL, rText ); if ( rtl::OUString( rText ) == "contacts" ) - tubes::createContacts(); + tubes::createContacts( new ScCollaboration() ); return true; // needs some code auditing action } diff --git a/sc/source/ui/inc/sccollaboration.hxx b/sc/source/ui/inc/sccollaboration.hxx new file mode 100644 index 0000000..545db92 --- /dev/null +++ b/sc/source/ui/inc/sccollaboration.hxx @@ -0,0 +1,31 @@ +/* -*- 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 INCLUDED_SC_COLLABORATION_HXX +#define INCLUDED_SC_COLLABORATION_HXX + +#include <tubes/collaboration.hxx> +class ScDocFuncSend; + +class ScCollaboration : public Collaboration +{ +public: + ScCollaboration(); + virtual ~ScCollaboration(); + + virtual TeleConference* GetConference() const; + virtual void SetCollaboration( TeleConference* pConference ); + virtual void SendFile( TpContact* pContact, const OUString& rURL ); +private: + ScDocFuncSend* GetScDocFuncSend() const; +}; + +#endif // INCLUDED_SC_COLLABORATION_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx index 19b2541..32b5a00 100644 --- a/sc/source/ui/view/cellsh3.cxx +++ b/sc/source/ui/view/cellsh3.cxx @@ -53,9 +53,8 @@ #include "scabstdlg.hxx" #ifdef ENABLE_TELEPATHY -namespace tubes { - void createContacts(); -} +#include "sccollaboration.hxx" +#include <tubes/contacts.hxx> #endif #define IS_EDITMODE() GetViewData()->HasEditView( GetViewData()->GetActivePart() ) @@ -119,7 +118,7 @@ void ScCellShell::Execute( SfxRequest& rReq ) case SID_COLLABORATION: #ifdef ENABLE_TELEPATHY - tubes::createContacts(); + tubes::createContacts( new ScCollaboration() ); #endif break; diff --git a/scp2/source/ooo/file_resource_ooo.scp b/scp2/source/ooo/file_resource_ooo.scp index 8526d97..a065312 100644 --- a/scp2/source/ooo/file_resource_ooo.scp +++ b/scp2/source/ooo/file_resource_ooo.scp @@ -124,3 +124,6 @@ STD_RES_FILE( gid_File_Res_T602Filter, t602filter ) STD_RES_FILE( gid_File_Res_Forui, forui ) STD_RES_FILE( gid_File_Res_For, for ) +#ifdef ENABLE_TELEPATHY +STD_RES_FILE( gid_File_Res_Tubes, tubes ) +#endif diff --git a/scp2/source/ooo/module_lang_template.scp b/scp2/source/ooo/module_lang_template.scp index c1235ff..aa34608 100644 --- a/scp2/source/ooo/module_lang_template.scp +++ b/scp2/source/ooo/module_lang_template.scp @@ -88,6 +88,7 @@ Module gid_Module_Langpack_Resource_Template gid_File_Res_Tk, gid_File_Res_Acc, gid_File_Res_Tpl, + gid_File_Res_Tubes, gid_File_Res_Uui, gid_File_Res_Vcl, gid_File_Res_Wzi, diff --git a/tubes/AllLangResTarget_tubes.mk b/tubes/AllLangResTarget_tubes.mk new file mode 100644 index 0000000..9cd4e1f --- /dev/null +++ b/tubes/AllLangResTarget_tubes.mk @@ -0,0 +1,19 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# 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/. +# +$(eval $(call gb_AllLangResTarget_AllLangResTarget,tubes)) + +$(eval $(call gb_AllLangResTarget_add_srs,tubes,tubes/res)) + +$(eval $(call gb_SrsTarget_SrsTarget,tubes/res)) + +$(eval $(call gb_SrsTarget_add_files,tubes/res,\ + tubes/source/contacts.src \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/tubes/CppunitTest_tubes_test.mk b/tubes/CppunitTest_tubes_test.mk index c229b2a..597102c 100644 --- a/tubes/CppunitTest_tubes_test.mk +++ b/tubes/CppunitTest_tubes_test.mk @@ -38,7 +38,11 @@ $(eval $(call gb_CppunitTest_use_libraries,tubes_test, \ comphelper \ cppu \ sal \ + svt \ + svxcore \ + tl \ utl \ + vcl \ $(gb_STDLIBS) \ )) diff --git a/tubes/Library_tubes.mk b/tubes/Library_tubes.mk index 0acd0a9..2ff9ab2 100644 --- a/tubes/Library_tubes.mk +++ b/tubes/Library_tubes.mk @@ -43,6 +43,11 @@ $(eval $(call gb_Library_use_libraries,tubes,\ comphelper \ cppu \ sal \ + svt \ + svxcore \ + tl \ + utl \ + vcl \ )) $(eval $(call gb_Library_use_externals,tubes,\ @@ -51,8 +56,9 @@ $(eval $(call gb_Library_use_externals,tubes,\ $(eval $(call gb_Library_add_exception_objects,tubes,\ tubes/source/conference \ - tubes/source/manager \ tubes/source/contact-list \ + tubes/source/contacts \ + tubes/source/manager \ )) $(eval $(call gb_Library_add_cobjects,tubes,\ diff --git a/tubes/Module_tubes.mk b/tubes/Module_tubes.mk index bc54f18..7eec798 100644 --- a/tubes/Module_tubes.mk +++ b/tubes/Module_tubes.mk @@ -30,6 +30,7 @@ $(eval $(call gb_Module_Module,tubes)) ifeq ($(ENABLE_TELEPATHY),TRUE) $(eval $(call gb_Module_add_targets,tubes,\ + AllLangResTarget_tubes \ Library_tubes \ Package_inc \ Executable_liboapprover \ diff --git a/tubes/Package_inc.mk b/tubes/Package_inc.mk index ff63f18..1502b90 100644 --- a/tubes/Package_inc.mk +++ b/tubes/Package_inc.mk @@ -26,8 +26,10 @@ $(eval $(call gb_Package_Package,tubes_inc,$(SRCDIR)/tubes/inc)) +$(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/collaboration.hxx,tubes/collaboration.hxx)) $(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/conference.hxx,tubes/conference.hxx)) $(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/contact-list.hxx,tubes/contact-list.hxx)) +$(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/contacts.hxx,tubes/contacts.hxx)) $(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/manager.hxx,tubes/manager.hxx)) $(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/tubesdllapi.h,tubes/tubesdllapi.h)) $(eval $(call gb_Package_add_file,tubes_inc,inc/tubes/warnings_guard_boost_signals2.hpp,tubes/warnings_guard_boost_signals2.hpp)) diff --git a/tubes/inc/tubes/collaboration.hxx b/tubes/inc/tubes/collaboration.hxx new file mode 100644 index 0000000..5a3dddc --- /dev/null +++ b/tubes/inc/tubes/collaboration.hxx @@ -0,0 +1,34 @@ +/* -*- 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 INCLUDED_TUBES_COLLABORATION_HXX +#define INCLUDED_TUBES_COLLABORATION_HXX + +#include <sal/config.h> + +#include <rtl/ustring.hxx> + +class TeleConference; +typedef struct _TpContact TpContact; + +class Collaboration +{ +public: + Collaboration() {} + virtual ~Collaboration() {} + + virtual TeleConference* GetConference() const = 0; + virtual void SetCollaboration( TeleConference* pConference ) = 0; + // TODO: I think this could be moved to TeleManager later. + virtual void SendFile( TpContact* pContact, const OUString& rURL ) = 0; +}; + +#endif // INCLUDED_TUBES_COLLABORATION_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tubes/inc/tubes/contacts.hxx b/tubes/inc/tubes/contacts.hxx new file mode 100644 index 0000000..a2b1f7f --- /dev/null +++ b/tubes/inc/tubes/contacts.hxx @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2012 Michael Meeks <[email protected]> (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include "sal/config.h" +#include <tubes/tubesdllapi.h> + +class Collaboration; + +namespace tubes { + void TUBES_DLLPUBLIC createContacts( Collaboration* pCollaboration ); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tubes/source/contacts.cxx b/tubes/source/contacts.cxx new file mode 100644 index 0000000..046be97 --- /dev/null +++ b/tubes/source/contacts.cxx @@ -0,0 +1,280 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2012 Michael Meeks <[email protected]> (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include <sal/config.h> + +#include "contacts.hrc" +#include <svtools/filter.hxx> +#include <svx/simptabl.hxx> +#include <tools/resid.hxx> +#include <tubes/conference.hxx> +#include <tubes/collaboration.hxx> +#include <tubes/contact-list.hxx> +#include <tubes/contacts.hxx> +#include <tubes/manager.hxx> +#include <unotools/confignode.hxx> +#include <vcl/fixed.hxx> +#include <vcl/dialog.hxx> +#include <vcl/unohelp.hxx> + +#include <vector> +#include <boost/ptr_container/ptr_vector.hpp> +#include <telepathy-glib/telepathy-glib.h> + +ResId TubesResId( sal_uInt32 nId ) +{ + static ResMgr* pResMgr = NULL; + if (!pResMgr) + { + pResMgr = ResMgr::CreateResMgr( "tubes" ); + } + return ResId( nId, *pResMgr ); +} + +#define CONTACTS_DLG + +#ifdef CONTACTS_DLG +namespace { +class TubeContacts : public ModelessDialog +{ + FixedLine maLabel; + PushButton maBtnConnect; + PushButton maBtnGroup; + PushButton maBtnInvite; + PushButton maBtnListen; + SvxSimpleTableContainer maListContainer; + SvxSimpleTable maList; + TeleManager* mpManager; + Collaboration* mpCollaboration; + + DECL_LINK( BtnConnectHdl, void * ); + DECL_LINK( BtnGroupHdl, void * ); + DECL_LINK( BtnInviteHdl, void * ); + DECL_LINK( BtnListenHdl, void * ); + + struct AccountContact + { + TpAccount* mpAccount; + TpContact* mpContact; + AccountContact( TpAccount* pAccount, TpContact* pContact ): + mpAccount(pAccount), mpContact(pContact) {} + }; + boost::ptr_vector<AccountContact> maACs; + + void Invite() + { + AccountContact *pAC = NULL; + if (maList.FirstSelected()) + pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); + if (pAC) + { + if (mpCollaboration->GetConference()) + { + TpContact* pContact = pAC->mpContact; + mpCollaboration->GetConference()->invite( pContact ); + mpCollaboration->SendFile( pContact, OStringToOUString( + mpCollaboration->GetConference()->getUuid(), RTL_TEXTENCODING_UTF8 ) ); + } + } + } + + void Listen() + { + if (!mpManager->registerClients()) + SAL_INFO( "sc.tubes", "Could not register client handlers." ); + } + + void StartBuddySession() + { + AccountContact *pAC = NULL; + if (maList.FirstSelected()) + pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); + if (pAC) + { + TpAccount* pAccount = pAC->mpAccount; + TpContact* pContact = pAC->mpContact; + fprintf( stderr, "picked %s\n", tp_contact_get_identifier( pContact ) ); + TeleConference* pConference = mpManager->startBuddySession( pAccount, pContact ); + if (!pConference) + fprintf( stderr, "could not start session with %s\n", + tp_contact_get_identifier( pContact ) ); + else + { + mpCollaboration->SetCollaboration( pConference ); + mpCollaboration->SendFile( pContact, OStringToOUString( + pConference->getUuid(), RTL_TEXTENCODING_UTF8 ) ); + } + } + } + + void StartGroupSession() + { + AccountContact *pAC = NULL; + if (maList.FirstSelected()) + pAC = static_cast<AccountContact*> (maList.FirstSelected()->GetUserData()); + if (pAC) + { + TpAccount* pAccount = pAC->mpAccount; + fprintf( stderr, "picked %s\n", tp_account_get_display_name( pAccount ) ); + TeleConference* pConference = mpManager->startGroupSession( pAccount, + rtl::OUString("liboroom"), rtl::OUString("conference.jabber.org") ); + if (!pConference) + fprintf( stderr, "could not start group session\n" ); + else + { + mpCollaboration->SetCollaboration( pConference ); + } + } + } + +public: + TubeContacts( Collaboration* pCollaboration ) : + ModelessDialog( NULL, TubesResId( RID_TUBES_DLG_CONTACTS ) ), + maLabel( this, TubesResId( FL_LABEL ) ), + maBtnConnect( this, TubesResId( BTN_CONNECT ) ), + maBtnGroup( this, TubesResId( BTN_GROUP ) ), + maBtnInvite( this, TubesResId( BTN_INVITE ) ), + maBtnListen( this, TubesResId( BTN_LISTEN ) ), + maListContainer( this, TubesResId( CTL_LIST ) ), + maList( maListContainer ), + mpManager( new TeleManager() ), + mpCollaboration( pCollaboration ) + { + Hide(); + maBtnConnect.SetClickHdl( LINK( this, TubeContacts, BtnConnectHdl ) ); + maBtnGroup.SetClickHdl( LINK( this, TubeContacts, BtnGroupHdl ) ); + maBtnInvite.SetClickHdl( LINK( this, TubeContacts, BtnInviteHdl ) ); + maBtnListen.SetClickHdl( LINK( this, TubeContacts, BtnListenHdl ) ); + + static long aStaticTabs[]= + { + 3 /* count */, 0, 20, 100, 150, 200 + }; + + maList.SvxSimpleTable::SetTabs( aStaticTabs ); + String sHeader( '\t' ); + sHeader += String( TubesResId( STR_HEADER_ALIAS ) ); + sHeader += '\t'; + sHeader += String( TubesResId( STR_HEADER_NAME ) ); + sHeader += '\t'; + maList.InsertHeaderEntry( sHeader, HEADERBAR_APPEND, HIB_LEFT ); + + mpManager->getContactList()->sigContactListChanged.connect( + boost::bind( &TubeContacts::Populate, this ) ); + } + virtual ~TubeContacts() + { + delete mpCollaboration; + delete mpManager; + } + + static rtl::OUString fromUTF8( const char *pStr ) + { + return rtl::OStringToOUString( rtl::OString( pStr, strlen( pStr ) ), + RTL_TEXTENCODING_UTF8 ); + } + + void Populate() + { + SAL_INFO( "sc.tubes", "Populating contact list dialog" ); + maList.Clear(); + ContactList *pContacts = mpManager->getContactList(); + if ( pContacts ) + { + AccountContactPairV aPairs = pContacts->getContacts(); + AccountContactPairV::iterator it; + for( it = aPairs.begin(); it != aPairs.end(); ++it ) + { + Image aImage; + GFile *pAvatarFile = tp_contact_get_avatar_file( it->second ); + if( pAvatarFile ) + { + const rtl::OUString sAvatarFileUrl = fromUTF8( g_file_get_path ( pAvatarFile ) ); + Graphic aGraphic; + if( GRFILTER_OK == GraphicFilter::LoadGraphic( sAvatarFileUrl, rtl::OUString(""), aGraphic ) ) + { + BitmapEx aBitmap = aGraphic.GetBitmapEx(); + double fScale = 30.0 / aBitmap.GetSizePixel().Height(); + aBitmap.Scale( fScale, fScale ); + aImage = Image( aBitmap ); + } + } + rtl::OUStringBuffer aEntry( 128 ); + aEntry.append( sal_Unicode( '\t' ) ); + aEntry.append( fromUTF8 ( tp_contact_get_alias( it->second ) ) ); + aEntry.append( sal_Unicode( '\t' ) ); + aEntry.append( fromUTF8 ( tp_contact_get_identifier( it->second ) ) ); + aEntry.append( sal_Unicode( '\t' ) ); + SvLBoxEntry* pEntry = maList.InsertEntry( aEntry.makeStringAndClear(), aImage, aImage ); + // FIXME: ref the TpAccount, TpContact ... + maACs.push_back( new AccountContact( it->first, it->second ) ); + pEntry->SetUserData( &maACs.back() ); + } + } + Show(); + } +}; + +IMPL_LINK_NOARG( TubeContacts, BtnConnectHdl ) +{ + StartBuddySession(); + return 0; +} + +IMPL_LINK_NOARG( TubeContacts, BtnGroupHdl ) +{ + StartGroupSession(); + return 0; +} + +IMPL_LINK_NOARG( TubeContacts, BtnInviteHdl ) +{ + Invite(); + return 0; +} + +IMPL_LINK_NOARG( TubeContacts, BtnListenHdl ) +{ + Listen(); + return 0; +} + +} // anonymous namespace +#endif + +namespace tubes { +void createContacts( Collaboration* pCollaboration ) +{ +#ifdef CONTACTS_DLG + static TubeContacts *pContacts = new TubeContacts( pCollaboration ); + pContacts->Populate(); +#endif +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tubes/source/contacts.hrc b/tubes/source/contacts.hrc new file mode 100644 index 0000000..84c5c33 --- /dev/null +++ b/tubes/source/contacts.hrc @@ -0,0 +1,11 @@ +#define RID_TUBES_DLG_CONTACTS 1000 + +#define FL_LABEL 1 +#define CTL_LIST 2 +#define BTN_CONNECT 3 +#define BTN_INVITE 4 +#define BTN_LISTEN 5 +#define BTN_GROUP 6 + +#define STR_HEADER_ALIAS 20 +#define STR_HEADER_NAME 21 diff --git a/tubes/source/contacts.src b/tubes/source/contacts.src new file mode 100644 index 0000000..0cd386a --- /dev/null +++ b/tubes/source/contacts.src @@ -0,0 +1,60 @@ +#include "contacts.hrc" + +ModelessDialog RID_TUBES_DLG_CONTACTS +{ + HelpId = "TUBES_HID"; // has to be something ... + OutputSize = TRUE ; + SVLook = TRUE ; + Hide = FALSE ; + Moveable = TRUE ; + Closeable = TRUE ; + Size = MAP_APPFONT ( 220 , 225 ) ; + OutputSize = TRUE ; + Text [ en-US ] = "Contacts" ; + + FixedLine FL_LABEL + { + Pos = MAP_APPFONT ( 8 , 2 ) ; + Size = MAP_APPFONT ( 198 , 8 ) ; + Text [ en-US ] = "Select a contact to collaborate with" ; + }; + PushButton BTN_CONNECT + { + Pos = MAP_APPFONT( 70 , 200 ); + Size = MAP_APPFONT( 50 , 10 ); + Text [ en-US ] = "startBuddySession"; + }; + PushButton BTN_GROUP + { + Pos = MAP_APPFONT( 70 , 212 ); + Size = MAP_APPFONT( 50 , 10 ); + Text [ en-US ] = "startGroupSession"; + }; + PushButton BTN_INVITE + { + Pos = MAP_APPFONT( 130 , 200 ); + Size = MAP_APPFONT( 50 , 10 ); + Text [ en-US ] = "Invite"; + }; + PushButton BTN_LISTEN + { + Pos = MAP_APPFONT( 8 , 200 ); + Size = MAP_APPFONT( 50 , 10 ); + Text [ en-US ] = "Listen"; + }; + Control CTL_LIST + { + Pos = MAP_APPFONT ( 8 , 10 ) ; + Size = MAP_APPFONT ( 200 , 190 ) ; + Border = TRUE ; + TabStop = TRUE ; + }; + String STR_HEADER_ALIAS + { + Text [ en-US ] = "Alias" ; + }; + String STR_HEADER_NAME + { + Text [ en-US ] = "Name" ; + }; +}; commit 4311938f7e838c6263b0e5774e611ec213cb02c6 Author: Matúš Kukan <[email protected]> Date: Sat Jul 28 11:16:01 2012 +0200 tubes: impose strict ordering on 1-1 collaboration - master (the one who started the session) echoes back packets from slave, who only then, after receiving own commands executes them Change-Id: I8b5a1d1bae0d665b65fe2ec0121430178728274d diff --git a/tubes/inc/tubes/conference.hxx b/tubes/inc/tubes/conference.hxx index e5c5d37..6a02604 100644 --- a/tubes/inc/tubes/conference.hxx +++ b/tubes/inc/tubes/conference.hxx @@ -46,7 +46,11 @@ class TeleConference { public: - TeleConference( TeleManager* pManager, TpAccount *pAccount, TpDBusTubeChannel* pChannel, const OString sUuid = OString() ); + TeleConference( TeleManager* pManager, + TpAccount* pAccount, + TpDBusTubeChannel* pChannel, + const OString sUuid = OString(), + bool bMaster = false ); ~TeleConference(); /// Close channel and call finalize() @@ -80,6 +84,7 @@ public: bool setTube( GDBusConnection* pTube ); void setTubeOfferedHandlerInvoked( bool b ); bool isTubeOfferedHandlerInvoked() const; + bool isMaster() const; /** Queue incoming data as OString */ void queue( const OString& rPacket ); void setUuid( const OString& rUuid ) { msUuid = rUuid; } @@ -97,6 +102,7 @@ private: TpAccount* mpAccount; TpDBusTubeChannel* mpChannel; OString msUuid; + bool mbMaster; TeleConferenceImpl* pImpl; }; diff --git a/tubes/source/conference.cxx b/tubes/source/conference.cxx index bc2dc75..f024685 100644 --- a/tubes/source/conference.cxx +++ b/tubes/source/conference.cxx @@ -131,7 +131,13 @@ static void TeleConference_MethodCallHandler( SAL_INFO( "tubes", "TeleConference_MethodCallHandler: received packet from sender " << (pSender ? pSender : "(null)") << " with size " << nPacketSize); - pConference->queue( OString( pPacketData, nPacketSize ) ); + OString aPacket( pPacketData, nPacketSize ); + pConference->queue( aPacket ); + // Master needs to send the packet back to impose ordering, + // so the slave can execute his command. + if (pConference->isMaster()) + pConference->sendPacket( aPacket ); + g_dbus_method_invocation_return_value( pInvocation, 0 ); g_variant_unref( ay); @@ -226,12 +232,14 @@ static void TeleConference_TubeAcceptedHandler( } -TeleConference::TeleConference( TeleManager* pManager, TpAccount* pAccount, TpDBusTubeChannel* pChannel, const OString sUuid ) +TeleConference::TeleConference( TeleManager* pManager, TpAccount* pAccount, + TpDBusTubeChannel* pChannel, const OString sUuid, bool bMaster ) : - mpManager( pManager), - mpAccount( NULL), - mpChannel( NULL), - msUuid( sUuid), + mpManager( pManager ), + mpAccount( NULL ), + mpChannel( NULL ), + msUuid( sUuid ), + mbMaster( bMaster ), pImpl( new TeleConferenceImpl() ) { setChannel( pAccount, pChannel ); @@ -431,12 +439,17 @@ bool TeleConference::sendPacket( const OString& rPacket ) G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); - /* FIXME: need to impose an ordering on packets. */ - queue( rPacket ); + // If we started the session, we can execute commands immediately. + if (mbMaster) + queue( rPacket ); return true; } +bool TeleConference::isMaster() const +{ + return mbMaster; +} void TeleConference::queue( const OString &rPacket ) { diff --git a/tubes/source/manager.cxx b/tubes/source/manager.cxx index c0f7427..40754a4 100644 --- a/tubes/source/manager.cxx +++ b/tubes/source/manager.cxx @@ -676,7 +676,7 @@ TeleConference* TeleManager::startBuddySession( TpAccount *pAccount, TpContact * setChannelReadyHandlerInvoked( false); - TeleConference* pConference = new TeleConference( this, NULL, NULL, createUuid() ); + TeleConference* pConference = new TeleConference( this, NULL, NULL, createUuid(), true ); tp_account_channel_request_create_and_handle_channel_async( pChannelRequest, NULL, TeleManager_ChannelReadyHandler, pConference ); commit 326235584f9dc17c0adf4c02180f45d4c3dc1e64 Author: Matúš Kukan <[email protected]> Date: Thu Aug 2 00:07:03 2012 +0200 scp2: SHORT_RESFILE_ALL_LANG seems to be unused Change-Id: I62b313fc8d8c6dfc821012783365307c8280a96c diff --git a/scp2/inc/macros.inc b/scp2/inc/macros.inc index 5982668..afd65e2 100755 --- a/scp2/inc/macros.inc +++ b/scp2/inc/macros.inc @@ -58,7 +58,6 @@ #endif #define RESFILENAME(name,lang) STRING(CONCAT3(name,lang,.res)) -#define SHORTRESFILENAME(name,lang) STRING(CONCAT3(name,lang,.res)) #define READMETXTFILENAME(name,lang,ext) STRING(CONCAT4(name,lang,.,ext)) #define READMEFILENAME(name,lang) STRING(CONCAT2(name,lang)) #define EXTRAFILENAME(name,lang) STRING(CONCAT3(name,lang,.zip)) diff --git a/scp2/macros/macro.pl b/scp2/macros/macro.pl index ef492b0..9ea949c 100644 --- a/scp2/macros/macro.pl +++ b/scp2/macros/macro.pl @@ -67,7 +67,6 @@ write_EXTRA_ALL_LANG_BUT_EN_US(); write_EXTRA_ALL_GOOD_HELP_LOCALIZATIONS_LANG(); write_EXTRA_IDENT_ALL_LANG(); write_RESFILE_ALL_LANG(); -write_SHORT_RESFILE_ALL_LANG(); write_README_ALL_LANG(); write_README_TXT_ALL_LANG(); write_VALUE_ALL_LANG_LETTER_DIR(); @@ -195,16 +194,6 @@ sub write_RESFILE_ALL_LANG print OUTFILE "\n\n"; } -sub write_SHORT_RESFILE_ALL_LANG -{ - print OUTFILE "#define SHORT_RESFILE_ALL_LANG(name) "; - foreach $lang (@completelangiso) { - print OUTFILE "\\\n\tName ($lang) = SHORTRESFILENAME(name,$lang)"; - print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]); - } - print OUTFILE "\n\n"; -} - sub write_README_ALL_LANG { print OUTFILE "#define README_ALL_LANG(key, name) ";
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
