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

tubes: use new .ui format for contacts dialog

it looks worse; more work needed

Change-Id: If8d15d614d49b1cea751852164b3e0edf43c52a6
üst 72fe2e30
......@@ -47,7 +47,6 @@ $(eval $(call gb_Library_use_libraries,tubes,\
svt \
svxcore \
tl \
utl \
vcl \
$(gb_UWINAPI) \
))
......
......@@ -30,10 +30,10 @@ $(eval $(call gb_Module_Module,tubes))
ifeq ($(ENABLE_TELEPATHY),TRUE)
$(eval $(call gb_Module_add_targets,tubes,\
AllLangResTarget_tubes \
Executable_liboapprover \
Library_tubes \
Package_inc \
Executable_liboapprover \
UI_tubes \
))
$(eval $(call gb_Module_add_subsequentcheck_targets,tubes,\
......
......@@ -6,14 +6,11 @@
# 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_UI_UI,tubes))
$(eval $(call gb_SrsTarget_SrsTarget,tubes/res))
$(eval $(call gb_SrsTarget_add_files,tubes/res,\
tubes/source/contacts.src \
$(eval $(call gb_UI_add_uifiles,tubes,\
tubes/uiconfig/ui/contacts \
))
# vim: set noet sw=4 ts=4:
......@@ -28,44 +28,26 @@
#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/manager.hxx>
#include <unotools/confignode.hxx>
#include <vcl/fixed.hxx>
#include <vcl/button.hxx>
#include <vcl/dialog.hxx>
#include <vcl/unohelp.hxx>
#include <vcl/lstbox.hxx>
#include <map>
#include <vector>
#include <telepathy-glib/telepathy-glib.h>
namespace {
ResId TubesResId( sal_uInt32 nId )
{
static ResMgr* pResMgr = NULL;
if (!pResMgr)
{
pResMgr = ResMgr::CreateResMgr( "tubes" );
}
return ResId( nId, *pResMgr );
}
class TubeContacts : public ModelessDialog
{
FixedLine maLabel;
PushButton maBtnDemo;
PushButton maBtnConnect;
PushButton maBtnGroup;
PushButton maBtnInvite;
PushButton maBtnListen;
SvxSimpleTableContainer maListContainer;
SvxSimpleTable maList;
PushButton* mpBtnDemo;
PushButton* mpBtnBuddy;
PushButton* mpBtnGroup;
PushButton* mpBtnInvite;
PushButton* mpBtnListen;
ListBox* mpList;
Collaboration* mpCollaboration;
DECL_LINK( BtnDemoHdl, void * );
......@@ -78,12 +60,11 @@ class TubeContacts : public ModelessDialog
void Invite()
{
AccountContactPair *pAC = NULL;
if (maList.FirstSelected())
pAC = static_cast<AccountContactPair*> (maList.FirstSelected()->GetUserData());
if (pAC)
if (mpList->GetSelectEntryCount())
{
mpCollaboration->Invite( pAC->second );
sal_uInt16 i = mpList->GetSelectEntryPos();
TpContact* pContact = maACs[i].second;
mpCollaboration->Invite( pContact );
}
}
......@@ -107,13 +88,11 @@ class TubeContacts : public ModelessDialog
void StartBuddySession()
{
AccountContactPair *pAC = NULL;
if (maList.FirstSelected())
pAC = static_cast<AccountContactPair*> (maList.FirstSelected()->GetUserData());
if (pAC)
if (mpList->GetSelectEntryCount())
{
TpAccount* pAccount = pAC->first;
TpContact* pContact = pAC->second;
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)
......@@ -129,12 +108,10 @@ class TubeContacts : public ModelessDialog
void StartGroupSession()
{
AccountContactPair *pAC = NULL;
if (maList.FirstSelected())
pAC = static_cast<AccountContactPair*> (maList.FirstSelected()->GetUserData());
if (pAC)
if (mpList->GetSelectEntryCount())
{
TpAccount* pAccount = pAC->first;
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,
rtl::OUString("liboroom"), rtl::OUString("conference.jabber.org") );
......@@ -149,36 +126,20 @@ class TubeContacts : public ModelessDialog
public:
TubeContacts( Collaboration* pCollaboration ) :
ModelessDialog( NULL, TubesResId( RID_TUBES_DLG_CONTACTS ) ),
maLabel( this, TubesResId( FL_LABEL ) ),
maBtnDemo( this, TubesResId( BTN_DEMO ) ),
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 ),
ModelessDialog( NULL, "ContactsDialog", "tubes/ui/contacts.ui" ),
mpCollaboration( pCollaboration )
{
Hide();
maBtnDemo.SetClickHdl( LINK( this, TubeContacts, BtnDemoHdl ) );
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 );
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()
{
......@@ -193,13 +154,13 @@ public:
void Populate()
{
SAL_INFO( "tubes", "Populating contact list dialog" );
maList.Clear();
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 maList entries
// which would invalidate pointers stored in mpList entries
maACs.reserve( aPairs.size() );
for( it = aPairs.begin(); it != aPairs.end(); ++it )
{
......@@ -218,15 +179,13 @@ public:
}
}
rtl::OUStringBuffer aEntry( 128 );
aEntry.append( sal_Unicode( '\t' ) );
aEntry.append( " " );
aEntry.append( fromUTF8 ( tp_contact_get_alias( it->second ) ) );
aEntry.append( sal_Unicode( '\t' ) );
aEntry.append( " - " );
aEntry.append( fromUTF8 ( tp_contact_get_identifier( it->second ) ) );
aEntry.append( sal_Unicode( '\t' ) );
SvLBoxEntry* pEntry = maList.InsertEntry( aEntry.makeStringAndClear(), aImage, aImage );
mpList->InsertEntry( aEntry.makeStringAndClear(), aImage);
// FIXME: ref the TpAccount, TpContact ...
maACs.push_back( AccountContactPair( it->first, it->second ) );
pEntry->SetUserData( &maACs.back() );
g_object_unref (it->first);
g_object_unref (it->second);
......
#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 BTN_DEMO 7
#define STR_HEADER_ALIAS 20
#define STR_HEADER_NAME 21
#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_DEMO
{
Pos = MAP_APPFONT( 8, 212 );
Size = MAP_APPFONT( 50 , 10 );
Text [ en-US ] = "startDemoSession";
};
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" ;
};
};
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkDialog" id="ContactsDialog">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Select a contact to collaborate with</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area1">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="listen">
<property name="label" translatable="yes">Listen</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="invite">
<property name="label" translatable="yes">Invite</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="demo">
<property name="label" translatable="yes">StartDemoSession</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="buddy">
<property name="label" translatable="yes">StartBuddySession</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="group">
<property name="label" translatable="yes">StartGroupSession</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="contacts">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection1"/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="0">listen</action-widget>
<action-widget response="0">invite</action-widget>
<action-widget response="0">demo</action-widget>
<action-widget response="0">buddy</action-widget>
<action-widget response="0">group</action-widget>
</action-widgets>
</object>
</interface>
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