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,\ ...@@ -47,7 +47,6 @@ $(eval $(call gb_Library_use_libraries,tubes,\
svt \ svt \
svxcore \ svxcore \
tl \ tl \
utl \
vcl \ vcl \
$(gb_UWINAPI) \ $(gb_UWINAPI) \
)) ))
......
...@@ -30,10 +30,10 @@ $(eval $(call gb_Module_Module,tubes)) ...@@ -30,10 +30,10 @@ $(eval $(call gb_Module_Module,tubes))
ifeq ($(ENABLE_TELEPATHY),TRUE) ifeq ($(ENABLE_TELEPATHY),TRUE)
$(eval $(call gb_Module_add_targets,tubes,\ $(eval $(call gb_Module_add_targets,tubes,\
AllLangResTarget_tubes \ Executable_liboapprover \
Library_tubes \ Library_tubes \
Package_inc \ Package_inc \
Executable_liboapprover \ UI_tubes \
)) ))
$(eval $(call gb_Module_add_subsequentcheck_targets,tubes,\ $(eval $(call gb_Module_add_subsequentcheck_targets,tubes,\
......
...@@ -6,14 +6,11 @@ ...@@ -6,14 +6,11 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this # 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/. # 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_UI_add_uifiles,tubes,\
tubes/uiconfig/ui/contacts \
$(eval $(call gb_SrsTarget_add_files,tubes/res,\
tubes/source/contacts.src \
)) ))
# vim: set noet sw=4 ts=4: # vim: set noet sw=4 ts=4:
...@@ -28,44 +28,26 @@ ...@@ -28,44 +28,26 @@
#include <sal/config.h> #include <sal/config.h>
#include "contacts.hrc"
#include <svtools/filter.hxx> #include <svtools/filter.hxx>
#include <svx/simptabl.hxx>
#include <tools/resid.hxx>
#include <tubes/conference.hxx> #include <tubes/conference.hxx>
#include <tubes/collaboration.hxx> #include <tubes/collaboration.hxx>
#include <tubes/manager.hxx> #include <tubes/manager.hxx>
#include <unotools/confignode.hxx> #include <vcl/button.hxx>
#include <vcl/fixed.hxx>
#include <vcl/dialog.hxx> #include <vcl/dialog.hxx>
#include <vcl/unohelp.hxx> #include <vcl/lstbox.hxx>
#include <map>
#include <vector>
#include <telepathy-glib/telepathy-glib.h> #include <telepathy-glib/telepathy-glib.h>
namespace { namespace {
ResId TubesResId( sal_uInt32 nId )
{
static ResMgr* pResMgr = NULL;
if (!pResMgr)
{
pResMgr = ResMgr::CreateResMgr( "tubes" );
}
return ResId( nId, *pResMgr );
}
class TubeContacts : public ModelessDialog class TubeContacts : public ModelessDialog
{ {
FixedLine maLabel; PushButton* mpBtnDemo;
PushButton maBtnDemo; PushButton* mpBtnBuddy;
PushButton maBtnConnect; PushButton* mpBtnGroup;
PushButton maBtnGroup; PushButton* mpBtnInvite;
PushButton maBtnInvite; PushButton* mpBtnListen;
PushButton maBtnListen; ListBox* mpList;
SvxSimpleTableContainer maListContainer;
SvxSimpleTable maList;
Collaboration* mpCollaboration; Collaboration* mpCollaboration;
DECL_LINK( BtnDemoHdl, void * ); DECL_LINK( BtnDemoHdl, void * );
...@@ -78,12 +60,11 @@ class TubeContacts : public ModelessDialog ...@@ -78,12 +60,11 @@ class TubeContacts : public ModelessDialog
void Invite() void Invite()
{ {
AccountContactPair *pAC = NULL; if (mpList->GetSelectEntryCount())
if (maList.FirstSelected())
pAC = static_cast<AccountContactPair*> (maList.FirstSelected()->GetUserData());
if (pAC)
{ {
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 ...@@ -107,13 +88,11 @@ class TubeContacts : public ModelessDialog
void StartBuddySession() void StartBuddySession()
{ {
AccountContactPair *pAC = NULL; if (mpList->GetSelectEntryCount())
if (maList.FirstSelected())
pAC = static_cast<AccountContactPair*> (maList.FirstSelected()->GetUserData());
if (pAC)
{ {
TpAccount* pAccount = pAC->first; sal_uInt16 i = mpList->GetSelectEntryPos();
TpContact* pContact = pAC->second; TpAccount* pAccount = maACs[i].first;
TpContact* pContact = maACs[i].second;
SAL_INFO( "tubes", "picked " << tp_contact_get_identifier( pContact ) ); SAL_INFO( "tubes", "picked " << tp_contact_get_identifier( pContact ) );
TeleConference* pConference = TeleManager::startBuddySession( pAccount, pContact ); TeleConference* pConference = TeleManager::startBuddySession( pAccount, pContact );
if (!pConference) if (!pConference)
...@@ -129,12 +108,10 @@ class TubeContacts : public ModelessDialog ...@@ -129,12 +108,10 @@ class TubeContacts : public ModelessDialog
void StartGroupSession() void StartGroupSession()
{ {
AccountContactPair *pAC = NULL; if (mpList->GetSelectEntryCount())
if (maList.FirstSelected())
pAC = static_cast<AccountContactPair*> (maList.FirstSelected()->GetUserData());
if (pAC)
{ {
TpAccount* pAccount = pAC->first; sal_uInt16 i = mpList->GetSelectEntryPos();
TpAccount* pAccount = maACs[i].first;
SAL_INFO( "tubes", "picked " << tp_account_get_display_name( pAccount ) ); SAL_INFO( "tubes", "picked " << tp_account_get_display_name( pAccount ) );
TeleConference* pConference = TeleManager::startGroupSession( pAccount, TeleConference* pConference = TeleManager::startGroupSession( pAccount,
rtl::OUString("liboroom"), rtl::OUString("conference.jabber.org") ); rtl::OUString("liboroom"), rtl::OUString("conference.jabber.org") );
...@@ -149,36 +126,20 @@ class TubeContacts : public ModelessDialog ...@@ -149,36 +126,20 @@ class TubeContacts : public ModelessDialog
public: public:
TubeContacts( Collaboration* pCollaboration ) : TubeContacts( Collaboration* pCollaboration ) :
ModelessDialog( NULL, TubesResId( RID_TUBES_DLG_CONTACTS ) ), ModelessDialog( NULL, "ContactsDialog", "tubes/ui/contacts.ui" ),
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 ),
mpCollaboration( pCollaboration ) mpCollaboration( pCollaboration )
{ {
Hide(); get( mpBtnListen, "listen");
maBtnDemo.SetClickHdl( LINK( this, TubeContacts, BtnDemoHdl ) ); get( mpBtnInvite, "invite");
maBtnConnect.SetClickHdl( LINK( this, TubeContacts, BtnConnectHdl ) ); get( mpBtnDemo, "demo");
maBtnGroup.SetClickHdl( LINK( this, TubeContacts, BtnGroupHdl ) ); get( mpBtnBuddy, "buddy");
maBtnInvite.SetClickHdl( LINK( this, TubeContacts, BtnInviteHdl ) ); get( mpBtnGroup, "group");
maBtnListen.SetClickHdl( LINK( this, TubeContacts, BtnListenHdl ) ); get( mpList, "contacts");
mpBtnListen->SetClickHdl( LINK( this, TubeContacts, BtnListenHdl ) );
static long aStaticTabs[]= mpBtnInvite->SetClickHdl( LINK( this, TubeContacts, BtnInviteHdl ) );
{ mpBtnDemo->SetClickHdl( LINK( this, TubeContacts, BtnDemoHdl ) );
3 /* count */, 0, 20, 100, 150, 200 mpBtnBuddy->SetClickHdl( LINK( this, TubeContacts, BtnConnectHdl ) );
}; mpBtnGroup->SetClickHdl( LINK( this, TubeContacts, BtnGroupHdl ) );
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 );
} }
virtual ~TubeContacts() virtual ~TubeContacts()
{ {
...@@ -193,13 +154,13 @@ public: ...@@ -193,13 +154,13 @@ public:
void Populate() void Populate()
{ {
SAL_INFO( "tubes", "Populating contact list dialog" ); SAL_INFO( "tubes", "Populating contact list dialog" );
maList.Clear(); mpList->Clear();
maACs.clear(); maACs.clear();
AccountContactPairV aPairs = TeleManager::getContacts(); AccountContactPairV aPairs = TeleManager::getContacts();
AccountContactPairV::iterator it; AccountContactPairV::iterator it;
// make sure we have enough memory to not need re-allocation // 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() ); maACs.reserve( aPairs.size() );
for( it = aPairs.begin(); it != aPairs.end(); ++it ) for( it = aPairs.begin(); it != aPairs.end(); ++it )
{ {
...@@ -218,15 +179,13 @@ public: ...@@ -218,15 +179,13 @@ public:
} }
} }
rtl::OUStringBuffer aEntry( 128 ); rtl::OUStringBuffer aEntry( 128 );
aEntry.append( sal_Unicode( '\t' ) ); aEntry.append( " " );
aEntry.append( fromUTF8 ( tp_contact_get_alias( it->second ) ) ); 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( fromUTF8 ( tp_contact_get_identifier( it->second ) ) );
aEntry.append( sal_Unicode( '\t' ) ); mpList->InsertEntry( aEntry.makeStringAndClear(), aImage);
SvLBoxEntry* pEntry = maList.InsertEntry( aEntry.makeStringAndClear(), aImage, aImage );
// FIXME: ref the TpAccount, TpContact ... // FIXME: ref the TpAccount, TpContact ...
maACs.push_back( AccountContactPair( it->first, it->second ) ); maACs.push_back( AccountContactPair( it->first, it->second ) );
pEntry->SetUserData( &maACs.back() );
g_object_unref (it->first); g_object_unref (it->first);
g_object_unref (it->second); 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