summaryrefslogtreecommitdiffstats
path: root/tubes/source/contacts.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'tubes/source/contacts.cxx')
-rw-r--r--tubes/source/contacts.cxx276
1 files changed, 122 insertions, 154 deletions
diff --git a/tubes/source/contacts.cxx b/tubes/source/contacts.cxx
index b86bf9f18287..fd7855407146 100644
--- a/tubes/source/contacts.cxx
+++ b/tubes/source/contacts.cxx
@@ -12,212 +12,180 @@
#include <vcl/graphicfilter.hxx>
#include <tubes/conference.hxx>
#include <tubes/collaboration.hxx>
-#include <tubes/manager.hxx>
-#include <vcl/button.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/lstbox.hxx>
#include <telepathy-glib/telepathy-glib.h>
-namespace {
+#include <contacts.hxx>
-class TubeContacts : public ModelessDialog
+void tubes::TubeContacts::Invite()
{
- VclPtr<PushButton> mpBtnDemo;
- VclPtr<PushButton> mpBtnBuddy;
- VclPtr<PushButton> mpBtnGroup;
- VclPtr<PushButton> mpBtnInvite;
- VclPtr<PushButton> mpBtnListen;
- VclPtr<ListBox> mpList;
- Collaboration* mpCollaboration;
-
- DECL_LINK( BtnDemoHdl, Button*, void );
- DECL_LINK( BtnConnectHdl, Button*, void );
- DECL_LINK( BtnGroupHdl, Button*, void );
- DECL_LINK( BtnInviteHdl, Button*, void );
- DECL_LINK( BtnListenHdl, Button*, void );
-
- AccountContactPairV maACs;
-
- void Invite()
+ if (mpList->GetSelectEntryCount())
{
- if (mpList->GetSelectEntryCount())
- {
- sal_uInt16 i = mpList->GetSelectEntryPos();
- TpContact* pContact = maACs[i].second;
- mpCollaboration->Invite( pContact );
- }
+ sal_uInt16 i = mpList->GetSelectEntryPos();
+ TpContact* pContact = maACs[i].second;
+ mpCollaboration->Invite( pContact );
}
+}
- void Listen()
+void tubes::TubeContacts::StartDemoSession()
+{
+ TeleConference* pConference = TeleManager::startDemoSession();
+ if (!pConference)
+ SAL_WARN( "tubes", "Could not start demo session!" );
+ else
{
- if (!TeleManager::registerClients())
- SAL_INFO( "tubes", "Could not register client handlers." );
+ mpCollaboration->StartCollaboration( pConference );
+ mpCollaboration->SaveAndSendFile( nullptr );
}
+}
- void StartDemoSession()
+void tubes::TubeContacts::StartBuddySession()
+{
+ if (mpList->GetSelectEntryCount())
{
- TeleConference* pConference = TeleManager::startDemoSession();
+ sal_uInt16 i = mpList->GetSelectEntryPos();
+ TpAccount* pAccount = maACs[i].first;
+ TpContact* pContact = maACs[i].second;
+ SAL_INFO( "tubes", "picked " << tp_contact_get_identifier( pContact ) );
+ TeleConference* pConference = TeleManager::startBuddySession( pAccount, pContact );
if (!pConference)
- SAL_WARN( "tubes", "Could not start demo session!" );
+ SAL_WARN( "tubes", "Could not start session with " <<
+ tp_contact_get_identifier( pContact ) );
else
{
mpCollaboration->StartCollaboration( pConference );
- mpCollaboration->SaveAndSendFile( NULL );
+ mpCollaboration->SaveAndSendFile( pContact );
}
}
+}
- void StartBuddySession()
+void tubes::TubeContacts::StartGroupSession()
+{
+ if (mpList->GetSelectEntryCount())
{
- if (mpList->GetSelectEntryCount())
+ sal_uInt16 i = mpList->GetSelectEntryPos();
+ TpAccount* pAccount = maACs[i].first;
+ SAL_INFO( "tubes", "picked " << tp_account_get_display_name( pAccount ) );
+ TeleConference* pConference = TeleManager::startGroupSession( pAccount,
+ "liboroom", "conference.jabber.org" );
+ if (!pConference)
+ SAL_WARN( "tubes", "Could not start group session." );
+ else
{
- sal_uInt16 i = mpList->GetSelectEntryPos();
- TpAccount* pAccount = maACs[i].first;
- TpContact* pContact = maACs[i].second;
- SAL_INFO( "tubes", "picked " << tp_contact_get_identifier( pContact ) );
- TeleConference* pConference = TeleManager::startBuddySession( pAccount, pContact );
- if (!pConference)
- SAL_WARN( "tubes", "Could not start session with " <<
- tp_contact_get_identifier( pContact ) );
- else
- {
- mpCollaboration->StartCollaboration( pConference );
- mpCollaboration->SaveAndSendFile( pContact );
- }
+ mpCollaboration->StartCollaboration( pConference );
}
}
+}
- void StartGroupSession()
- {
- if (mpList->GetSelectEntryCount())
- {
- sal_uInt16 i = mpList->GetSelectEntryPos();
- TpAccount* pAccount = maACs[i].first;
- SAL_INFO( "tubes", "picked " << tp_account_get_display_name( pAccount ) );
- TeleConference* pConference = TeleManager::startGroupSession( pAccount,
- OUString("liboroom"), OUString("conference.jabber.org") );
- if (!pConference)
- SAL_WARN( "tubes", "Could not start group session." );
- else
- {
- mpCollaboration->StartCollaboration( pConference );
- }
- }
- }
+tubes::TubeContacts::TubeContacts( Collaboration* pCollaboration ) :
+ ModelessDialog( nullptr, "ContactsDialog", "tubes/ui/contacts.ui" ),
+ mpCollaboration( pCollaboration )
+{
+ get( mpBtnListen, "listen");
+ get( mpBtnInvite, "invite");
+ get( mpBtnDemo, "demo");
+ get( mpBtnBuddy, "buddy");
+ get( mpBtnGroup, "group");
+ get( mpList, "contacts");
+ mpBtnListen->SetClickHdl( LINK( this, TubeContacts, BtnListenHdl ) );
+ mpBtnInvite->SetClickHdl( LINK( this, TubeContacts, BtnInviteHdl ) );
+ mpBtnDemo->SetClickHdl( LINK( this, TubeContacts, BtnDemoHdl ) );
+ mpBtnBuddy->SetClickHdl( LINK( this, TubeContacts, BtnConnectHdl ) );
+ mpBtnGroup->SetClickHdl( LINK( this, TubeContacts, BtnGroupHdl ) );
+}
-public:
- explicit TubeContacts( Collaboration* pCollaboration ) :
- ModelessDialog( NULL, "ContactsDialog", "tubes/ui/contacts.ui" ),
- mpCollaboration( pCollaboration )
- {
- get( mpBtnListen, "listen");
- get( mpBtnInvite, "invite");
- get( mpBtnDemo, "demo");
- get( mpBtnBuddy, "buddy");
- get( mpBtnGroup, "group");
- get( mpList, "contacts");
- mpBtnListen->SetClickHdl( LINK( this, TubeContacts, BtnListenHdl ) );
- mpBtnInvite->SetClickHdl( LINK( this, TubeContacts, BtnInviteHdl ) );
- mpBtnDemo->SetClickHdl( LINK( this, TubeContacts, BtnDemoHdl ) );
- mpBtnBuddy->SetClickHdl( LINK( this, TubeContacts, BtnConnectHdl ) );
- mpBtnGroup->SetClickHdl( LINK( this, TubeContacts, BtnGroupHdl ) );
- }
- virtual ~TubeContacts()
- {
- dispose();
- }
+tubes::TubeContacts::~TubeContacts()
+{
+ disposeOnce();
+}
- virtual void dispose() override
- {
- mpBtnListen.clear();
- mpBtnGroup.clear();
- mpBtnDemo.clear();
- mpBtnBuddy.clear();
- mpBtnGroup.clear();
- mpList.clear();
- }
+void tubes::TubeContacts::dispose()
+{
+ mpBtnListen.disposeAndClear();
+ mpBtnInvite.disposeAndClear();
+ mpBtnDemo.disposeAndClear();
+ mpBtnBuddy.disposeAndClear();
+ mpBtnGroup.disposeAndClear();
+ mpList.disposeAndClear();
+ ModelessDialog::dispose();
+}
- static OUString fromUTF8( const char *pStr )
- {
- return OStringToOUString( OString( pStr, strlen( pStr ) ),
- RTL_TEXTENCODING_UTF8 );
- }
+namespace {
- void Populate()
+OUString fromUTF8( const char *pStr )
+{
+ return OStringToOUString( OString( pStr, strlen( pStr ) ),
+ RTL_TEXTENCODING_UTF8 );
+}
+
+}
+
+void tubes::TubeContacts::Populate()
+{
+ SAL_INFO( "tubes", "Populating contact list dialog" );
+ mpList->Clear();
+ maACs.clear();
+
+ AccountContactPairV aPairs = TeleManager::getContacts();
+ AccountContactPairV::iterator it;
+ // make sure we have enough memory to not need re-allocation
+ // which would invalidate pointers stored in mpList entries
+ maACs.reserve( aPairs.size() );
+ for( it = aPairs.begin(); it != aPairs.end(); ++it )
{
- SAL_INFO( "tubes", "Populating contact list dialog" );
- mpList->Clear();
- maACs.clear();
-
- AccountContactPairV aPairs = TeleManager::getContacts();
- AccountContactPairV::iterator it;
- // make sure we have enough memory to not need re-allocation
- // which would invalidate pointers stored in mpList entries
- maACs.reserve( aPairs.size() );
- for( it = aPairs.begin(); it != aPairs.end(); ++it )
+ Image aImage;
+ GFile *pAvatarFile = tp_contact_get_avatar_file( it->second );
+ if( pAvatarFile )
{
- Image aImage;
- GFile *pAvatarFile = tp_contact_get_avatar_file( it->second );
- if( pAvatarFile )
+ const OUString sAvatarFileUrl = fromUTF8( g_file_get_path ( pAvatarFile ) );
+ Graphic aGraphic;
+ if( GRFILTER_OK == GraphicFilter::LoadGraphic( sAvatarFileUrl, "", aGraphic ) )
{
- const OUString sAvatarFileUrl = fromUTF8( g_file_get_path ( pAvatarFile ) );
- Graphic aGraphic;
- if( GRFILTER_OK == GraphicFilter::LoadGraphic( sAvatarFileUrl, OUString(""), aGraphic ) )
- {
- BitmapEx aBitmap = aGraphic.GetBitmapEx();
- double fScale = 30.0 / aBitmap.GetSizePixel().Height();
- aBitmap.Scale( fScale, fScale );
- aImage = Image( aBitmap );
- }
+ BitmapEx aBitmap = aGraphic.GetBitmapEx();
+ double fScale = 30.0 / aBitmap.GetSizePixel().Height();
+ aBitmap.Scale( fScale, fScale );
+ aImage = Image( aBitmap );
}
- OUStringBuffer aEntry( 128 );
- aEntry.append( " " );
- aEntry.append( fromUTF8 ( tp_contact_get_alias( it->second ) ) );
- aEntry.append( " - " );
- aEntry.append( fromUTF8 ( tp_contact_get_identifier( it->second ) ) );
- mpList->InsertEntry( aEntry.makeStringAndClear(), aImage);
- // FIXME: ref the TpAccount, TpContact ...
- maACs.push_back( AccountContactPair( it->first, it->second ) );
-
- g_object_unref (it->first);
- g_object_unref (it->second);
}
- Show();
+ OUStringBuffer aEntry( 128 );
+ aEntry.append( " " );
+ aEntry.append( fromUTF8 ( tp_contact_get_alias( it->second ) ) );
+ aEntry.append( " - " );
+ aEntry.append( fromUTF8 ( tp_contact_get_identifier( it->second ) ) );
+ mpList->InsertEntry( aEntry.makeStringAndClear(), aImage);
+ // FIXME: ref the TpAccount, TpContact ...
+ maACs.push_back( AccountContactPair( it->first, it->second ) );
+
+ g_object_unref (it->first);
+ g_object_unref (it->second);
}
-};
+ Show();
+}
-IMPL_LINK_NOARG( TubeContacts, BtnDemoHdl, Button*, void )
+IMPL_LINK_NOARG( tubes::TubeContacts, BtnDemoHdl, Button*, void )
{
StartDemoSession();
}
-IMPL_LINK_NOARG( TubeContacts, BtnConnectHdl, Button*, void )
+IMPL_LINK_NOARG( tubes::TubeContacts, BtnConnectHdl, Button*, void )
{
StartBuddySession();
}
-IMPL_LINK_NOARG( TubeContacts, BtnGroupHdl, Button*, void )
+IMPL_LINK_NOARG( tubes::TubeContacts, BtnGroupHdl, Button*, void )
{
StartGroupSession();
}
-IMPL_LINK_NOARG( TubeContacts, BtnInviteHdl, Button*, void )
+IMPL_LINK_NOARG( tubes::TubeContacts, BtnInviteHdl, Button*, void )
{
Invite();
}
-IMPL_LINK_NOARG( TubeContacts, BtnListenHdl, Button*, void )
-{
- Listen();
-}
-
-} // anonymous namespace
-
-void Collaboration::DisplayContacts()
+IMPL_STATIC_LINK_NOARG( tubes::TubeContacts, BtnListenHdl, Button*, void )
{
- if (!mpContacts)
- mpContacts = new TubeContacts( this );
- reinterpret_cast<TubeContacts*> (mpContacts)->Populate();
+ if (!TeleManager::registerClients())
+ SAL_INFO( "tubes", "Could not register client handlers." );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */