Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
savoirfairelinux
jami-daemon
Commits
37292c9b
Commit
37292c9b
authored
Mar 26, 2012
by
Tristan Matthews
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* #9490: store accountID, not account pointer in tree store.
Only the accountlist should be storing account_t pointers.
parent
e5b384df
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
108 additions
and
98 deletions
+108
-98
gnome/src/accountlist.c
gnome/src/accountlist.c
+8
-3
gnome/src/actions.c
gnome/src/actions.c
+4
-7
gnome/src/codeclist.c
gnome/src/codeclist.c
+3
-3
gnome/src/config/accountconfigdialog.c
gnome/src/config/accountconfigdialog.c
+26
-28
gnome/src/config/accountconfigdialog.h
gnome/src/config/accountconfigdialog.h
+4
-0
gnome/src/config/accountlistconfigdialog.c
gnome/src/config/accountlistconfigdialog.c
+55
-47
gnome/src/config/accountlistconfigdialog.h
gnome/src/config/accountlistconfigdialog.h
+1
-3
gnome/src/dbus/dbus.c
gnome/src/dbus/dbus.c
+2
-3
gnome/src/logger.h
gnome/src/logger.h
+5
-4
No files found.
gnome/src/accountlist.c
View file @
37292c9b
...
...
@@ -75,6 +75,8 @@ static gint get_state_struct(gconstpointer a, gconstpointer b)
void
account_list_init
()
{
if
(
accountQueue
)
account_list_free
();
accountQueue
=
g_queue_new
();
}
...
...
@@ -199,6 +201,7 @@ void account_list_free()
{
g_queue_foreach
(
accountQueue
,
account_list_free_elm
,
NULL
);
g_queue_free
(
accountQueue
);
accountQueue
=
NULL
;
}
void
...
...
@@ -225,7 +228,7 @@ account_list_get_registered_accounts(void)
guint
res
=
0
;
for
(
guint
i
=
0
;
i
<
account_list_get_size
();
i
++
)
if
(
account_list_get_nth
(
i
)
->
state
==
(
ACCOUNT_STATE_REGISTERED
))
if
(
account_list_get_nth
(
i
)
->
state
==
(
ACCOUNT_STATE_REGISTERED
))
res
++
;
return
res
;
...
...
@@ -321,7 +324,7 @@ account_t *create_default_account()
{
account_t
*
account
=
g_new0
(
account_t
,
1
);
account
->
properties
=
dbus_get_account_details
(
NULL
);
account
->
accountID
=
g_strdup
(
"new"
);
//FIXME
: replace with NULL
for new accounts
account
->
accountID
=
g_strdup
(
"new"
);
//
FIXME:
maybe
replace with NULL
?
account
->
credential_information
=
NULL
;
sflphone_fill_codec_list_per_account
(
account
);
return
account
;
...
...
@@ -341,16 +344,18 @@ void initialize_credential_information(account_t *account)
void
account_replace
(
account_t
*
account
,
const
gchar
*
key
,
const
gchar
*
value
)
{
g_assert
(
account
&&
account
->
properties
);
g_hash_table_replace
(
account
->
properties
,
g_strdup
(
key
),
g_strdup
(
value
));
}
void
account_insert
(
account_t
*
account
,
const
gchar
*
key
,
const
gchar
*
value
)
{
g_assert
(
account
&&
account
->
properties
);
g_hash_table_insert
(
account
->
properties
,
g_strdup
(
key
),
g_strdup
(
value
));
}
gpointer
account_lookup
(
const
account_t
*
account
,
gconstpointer
key
)
{
g_assert
(
account
->
properties
);
g_assert
(
account
&&
account
->
properties
);
return
g_hash_table_lookup
(
account
->
properties
,
key
);
}
gnome/src/actions.c
View file @
37292c9b
...
...
@@ -57,6 +57,7 @@
#include "actions.h"
#include "dbus/dbus.h"
#include "logger.h"
#include "config/accountlistconfigdialog.h"
#include "contacts/calltab.h"
#include "contacts/searchbar.h"
#include "contacts/addrbookfactory.h"
...
...
@@ -202,12 +203,8 @@ sflphone_hung_up(callable_obj_t * c)
statusbar_update_clock
(
""
);
}
/** Internal to actions: Fill account list */
void
sflphone_fill_account_list
(
void
)
{
int
count
=
current_account_get_message_number
();
account_list_free
();
account_list_init
();
gchar
**
array
=
dbus_account_list
();
...
...
@@ -224,7 +221,7 @@ void sflphone_fill_account_list(void)
}
for
(
unsigned
i
=
0
;
i
<
account_list_get_size
();
i
++
)
{
account_t
*
a
=
account_list_get_nth
(
i
);
account_t
*
a
=
account_list_get_nth
(
i
);
if
(
a
==
NULL
)
{
ERROR
(
"SFLphone: Error: Could not find account %d in list"
,
i
);
...
...
@@ -278,9 +275,10 @@ void sflphone_fill_account_list(void)
}
// Set the current account message number
current_account_set_message_number
(
c
ount
);
current_account_set_message_number
(
c
urrent_account_get_message_number
()
);
sflphone_fill_codec_list
();
account_store_fill
();
}
gboolean
sflphone_init
(
GError
**
error
)
...
...
@@ -297,7 +295,6 @@ gboolean sflphone_init(GError **error)
contacts_tab
=
calltab_init
(
TRUE
,
CONTACTS
);
history_tab
=
calltab_init
(
TRUE
,
HISTORY
);
account_list_init
();
codec_capabilities_load
();
conferencelist_init
(
current_calls_tab
);
...
...
gnome/src/codeclist.c
View file @
37292c9b
...
...
@@ -217,7 +217,7 @@ void codec_list_update_to_daemon(const account_t *acc)
int
c
=
0
;
int
i
;
for
(
i
=
0
;
i
<
length
;
i
++
)
{
for
(
i
=
0
;
i
<
length
;
++
i
)
{
codec_t
*
currentCodec
=
codec_list_get_nth
(
i
,
acc
->
codecs
);
if
(
currentCodec
)
{
...
...
@@ -240,14 +240,14 @@ void codec_list_update_to_daemon(const account_t *acc)
// Allocate NULL array at the end for Dbus
codecList
=
(
void
*
)
g_realloc
(
codecList
,
(
c
+
1
)
*
sizeof
(
void
*
));
*
(
codecList
+
c
)
=
NULL
;
*
(
codecList
+
c
)
=
NULL
;
// call dbus function with array of strings
dbus_set_active_audio_codec_list
(
codecList
,
acc
->
accountID
);
// Delete memory
for
(
i
=
0
;
i
<
c
;
i
++
)
g_free
((
gchar
*
)
*
(
codecList
+
i
));
g_free
((
gchar
*
)
*
(
codecList
+
i
)
);
g_free
(
codecList
);
}
...
...
gnome/src/config/accountconfigdialog.c
View file @
37292c9b
...
...
@@ -206,7 +206,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
password
=
g_hash_table_lookup
(
element
,
ACCOUNT_PASSWORD
);
}
}
else
password
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_PASSWORD
);
password
=
account
_lookup
(
account
,
ACCOUNT_PASSWORD
);
GtkWidget
*
frame
=
gnome_main_section_new
(
_
(
"Account Parameters"
));
gtk_widget_show
(
frame
);
...
...
@@ -214,7 +214,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
GtkWidget
*
table
=
NULL
;
if
(
account_is_SIP
(
account
))
table
=
gtk_table_new
(
9
,
2
,
FALSE
/* homogeneous */
);
table
=
gtk_table_new
(
9
,
2
,
FALSE
/* homogeneous */
);
else
if
(
account_is_IAX
(
account
))
table
=
gtk_table_new
(
8
,
2
,
FALSE
);
else
{
...
...
@@ -234,7 +234,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
entry_alias
=
gtk_entry_new
();
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
entry_alias
);
gchar
*
alias
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_ALIAS
);
gchar
*
alias
=
account
_lookup
(
account
,
ACCOUNT_ALIAS
);
gtk_entry_set_text
(
GTK_ENTRY
(
entry_alias
),
alias
);
gtk_table_attach
(
GTK_TABLE
(
table
),
entry_alias
,
1
,
2
,
row
,
row
+
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -276,8 +276,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
entry_hostname
=
gtk_entry_new
();
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
entry_hostname
);
const
gchar
*
hostname
=
g_hash_table_lookup
(
account
->
properties
,
ACCOUNT_HOSTNAME
);
const
gchar
*
hostname
=
account_lookup
(
account
,
ACCOUNT_HOSTNAME
);
gtk_entry_set_text
(
GTK_ENTRY
(
entry_hostname
),
hostname
);
gtk_table_attach
(
GTK_TABLE
(
table
),
entry_hostname
,
1
,
2
,
row
,
row
+
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -293,7 +292,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
GTK_ENTRY_ICON_PRIMARY
,
gdk_pixbuf_new_from_file
(
PERSON_IMG
,
NULL
));
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
entry_username
);
gchar
*
username
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_USERNAME
);
gchar
*
username
=
account
_lookup
(
account
,
ACCOUNT_USERNAME
);
gtk_entry_set_text
(
GTK_ENTRY
(
entry_username
),
username
);
gtk_table_attach
(
GTK_TABLE
(
table
),
entry_username
,
1
,
2
,
row
,
row
+
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -337,7 +336,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
entry_route_set
=
gtk_entry_new
();
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
entry_route_set
);
gchar
*
route_set
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_ROUTE
);
gchar
*
route_set
=
account
_lookup
(
account
,
ACCOUNT_ROUTE
);
gtk_entry_set_text
(
GTK_ENTRY
(
entry_route_set
),
route_set
);
gtk_table_attach
(
GTK_TABLE
(
table
),
entry_route_set
,
1
,
2
,
row
,
row
+
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -347,7 +346,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
entry_mailbox
=
gtk_entry_new
();
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
entry_mailbox
);
gchar
*
mailbox
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_MAILBOX
);
gchar
*
mailbox
=
account
_lookup
(
account
,
ACCOUNT_MAILBOX
);
mailbox
=
mailbox
?
mailbox
:
""
;
gtk_entry_set_text
(
GTK_ENTRY
(
entry_mailbox
),
mailbox
);
gtk_table_attach
(
GTK_TABLE
(
table
),
entry_mailbox
,
1
,
2
,
row
,
row
+
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -358,7 +357,7 @@ static GtkWidget* create_basic_tab(const account_t *account)
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
entry_user_agent
=
gtk_entry_new
();
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
entry_user_agent
);
gchar
*
user_agent
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_USERAGENT
);
gchar
*
user_agent
=
account
_lookup
(
account
,
ACCOUNT_USERAGENT
);
gtk_entry_set_text
(
GTK_ENTRY
(
entry_user_agent
),
user_agent
);
gtk_table_attach
(
GTK_TABLE
(
table
),
entry_user_agent
,
1
,
2
,
row
,
row
+
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -726,17 +725,16 @@ create_security_widget(const account_t *account)
// Load from SIP/IAX/Unknown ?
if
(
account
&&
account
->
properties
)
{
curKeyExchange
=
g_hash_table_lookup
(
account
->
properties
,
ACCOUNT_KEY_EXCHANGE
);
curKeyExchange
=
account_lookup
(
account
,
ACCOUNT_KEY_EXCHANGE
);
if
(
curKeyExchange
==
NULL
)
curKeyExchange
=
"none"
;
curSRTPEnabled
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_SRTP_ENABLED
);
curSRTPEnabled
=
account
_lookup
(
account
,
ACCOUNT_SRTP_ENABLED
);
if
(
curSRTPEnabled
==
NULL
)
curSRTPEnabled
=
"false"
;
curTLSEnabled
=
g_hash_table
_lookup
(
account
->
properties
,
TLS_ENABLE
);
curTLSEnabled
=
account
_lookup
(
account
,
TLS_ENABLE
);
if
(
curTLSEnabled
==
NULL
)
curTLSEnabled
=
"false"
;
...
...
@@ -854,8 +852,8 @@ create_network(const account_t *account)
gchar
*
local_port
=
NULL
;
if
(
account
)
{
local_interface
=
g_hash_table
_lookup
(
account
->
properties
,
LOCAL_INTERFACE
);
local_port
=
g_hash_table
_lookup
(
account
->
properties
,
LOCAL_PORT
);
local_interface
=
account
_lookup
(
account
,
LOCAL_INTERFACE
);
local_port
=
account
_lookup
(
account
,
LOCAL_PORT
);
}
GtkWidget
*
table
,
*
frame
;
...
...
@@ -922,20 +920,20 @@ GtkWidget* create_published_address(const account_t *account)
// Get the user configuration
if
(
account
)
{
use_tls
=
g_hash_table
_lookup
(
account
->
properties
,
TLS_ENABLE
);
published_sameas_local
=
g_hash_table
_lookup
(
account
->
properties
,
PUBLISHED_SAMEAS_LOCAL
);
use_tls
=
account
_lookup
(
account
,
TLS_ENABLE
);
published_sameas_local
=
account
_lookup
(
account
,
PUBLISHED_SAMEAS_LOCAL
);
if
(
utf8_case_equal
(
published_sameas_local
,
"true"
))
{
published_address
=
dbus_get_address_from_interface_name
(
g_hash_table
_lookup
(
account
->
properties
,
LOCAL_INTERFACE
));
published_port
=
g_hash_table
_lookup
(
account
->
properties
,
LOCAL_PORT
);
published_address
=
dbus_get_address_from_interface_name
(
account
_lookup
(
account
,
LOCAL_INTERFACE
));
published_port
=
account
_lookup
(
account
,
LOCAL_PORT
);
}
else
{
published_address
=
g_hash_table
_lookup
(
account
->
properties
,
PUBLISHED_ADDRESS
);
published_port
=
g_hash_table
_lookup
(
account
->
properties
,
PUBLISHED_PORT
);
published_address
=
account
_lookup
(
account
,
PUBLISHED_ADDRESS
);
published_port
=
account
_lookup
(
account
,
PUBLISHED_PORT
);
}
stun_enable
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_SIP_STUN_ENABLED
);
stun_server
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_SIP_STUN_SERVER
);
published_sameas_local
=
g_hash_table
_lookup
(
account
->
properties
,
PUBLISHED_SAMEAS_LOCAL
);
stun_enable
=
account
_lookup
(
account
,
ACCOUNT_SIP_STUN_ENABLED
);
stun_server
=
account
_lookup
(
account
,
ACCOUNT_SIP_STUN_SERVER
);
published_sameas_local
=
account
_lookup
(
account
,
PUBLISHED_SAMEAS_LOCAL
);
}
gnome_main_section_new_with_table
(
_
(
"Published address"
),
&
frame
,
&
table
,
2
,
3
);
...
...
@@ -1061,7 +1059,7 @@ create_audiocodecs_configuration(const account_t *account)
gtk_widget_show
(
dtmf
);
overrtp
=
gtk_radio_button_new_with_label
(
NULL
,
_
(
"RTP"
));
const
gchar
*
const
dtmf_type
=
g_hash_table
_lookup
(
account
->
properties
,
ACCOUNT_DTMF_TYPE
);
const
gchar
*
const
dtmf_type
=
account
_lookup
(
account
,
ACCOUNT_DTMF_TYPE
);
const
gboolean
dtmf_are_rtp
=
utf8_case_equal
(
dtmf_type
,
OVERRTP
);
gtk_toggle_button_set_active
(
GTK_TOGGLE_BUTTON
(
overrtp
),
dtmf_are_rtp
);
gtk_table_attach
(
GTK_TABLE
(
table
),
overrtp
,
0
,
1
,
0
,
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
...
...
@@ -1079,7 +1077,7 @@ create_audiocodecs_configuration(const account_t *account)
file_chooser
=
gtk_file_chooser_button_new
(
_
(
"Choose a ringtone"
),
GTK_FILE_CHOOSER_ACTION_OPEN
);
gpointer
ptr
=
g_hash_table
_lookup
(
account
->
properties
,
CONFIG_RINGTONE_ENABLED
);
gpointer
ptr
=
account
_lookup
(
account
,
CONFIG_RINGTONE_ENABLED
);
enable_tone
=
gtk_check_button_new_with_mnemonic
(
_
(
"_Enable ringtones"
));
const
gboolean
ringtone_enabled
=
g_strcmp0
(
ptr
,
"true"
)
==
0
;
gtk_toggle_button_set_active
(
GTK_TOGGLE_BUTTON
(
enable_tone
),
ringtone_enabled
);
...
...
@@ -1088,7 +1086,7 @@ create_audiocodecs_configuration(const account_t *account)
// file chooser button
gtk_file_chooser_set_current_folder
(
GTK_FILE_CHOOSER
(
file_chooser
)
,
g_get_home_dir
());
ptr
=
g_hash_table
_lookup
(
account
->
properties
,
CONFIG_RINGTONE_PATH
);
ptr
=
account
_lookup
(
account
,
CONFIG_RINGTONE_PATH
);
gtk_file_chooser_set_filename
(
GTK_FILE_CHOOSER
(
file_chooser
)
,
ptr
);
gtk_widget_set_sensitive
(
file_chooser
,
ringtone_enabled
);
...
...
@@ -1315,7 +1313,7 @@ void show_account_window(account_t *account)
update_account_from_basic_tab
(
account
);
/** @todo Verify if it's the best condition to check */
if
(
utf8_case_equal
(
account
->
accountID
,
"new"
))
if
(
g_strcmp0
(
account
->
accountID
,
"new"
))
dbus_add_account
(
account
);
else
dbus_set_account_details
(
account
);
...
...
gnome/src/config/accountconfigdialog.h
View file @
37292c9b
...
...
@@ -43,4 +43,8 @@
*/
void
show_account_window
(
account_t
*
a
);
/**
* Resets local cache of account pointers */
void
reset_account_store
();
#endif
gnome/src/config/accountlistconfigdialog.c
View file @
37292c9b
...
...
@@ -52,7 +52,7 @@ static GtkWidget *move_up_button;
static
GtkWidget
*
status_bar
;
static
GtkListStore
*
account_store
;
static
GtkDialog
*
account_list_dialog
;
static
account_t
*
selected_account
;
static
gchar
*
selected_account
ID
;
// Account properties
enum
{
...
...
@@ -60,15 +60,16 @@ enum {
COLUMN_ACCOUNT_TYPE
,
COLUMN_ACCOUNT_STATUS
,
COLUMN_ACCOUNT_ACTIVE
,
COLUMN_ACCOUNT_D
ATA
,
COLUMN_ACCOUNT_
I
D
,
COLUMN_ACCOUNT_COUNT
};
static
void
delete_account_cb
(
void
)
{
RETURN_IF_NULL
(
selected_account
,
"No selected account in delete action"
);
dbus_remove_account
(
selected_account
->
accountID
);
selected_account
=
NULL
;
RETURN_IF_NULL
(
selected_accountID
,
"No selected account in delete action"
);
dbus_remove_account
(
selected_accountID
);
g_free
(
selected_accountID
);
selected_accountID
=
NULL
;
}
static
void
row_activated_cb
(
GtkTreeView
*
view
UNUSED
,
...
...
@@ -76,16 +77,16 @@ static void row_activated_cb(GtkTreeView *view UNUSED,
GtkTreeViewColumn
*
col
UNUSED
,
gpointer
user_data
UNUSED
)
{
RETURN_IF_NULL
(
selected_account
,
"No selected account in edit action"
);
DEBUG
(
"%s: accountID=%s
\n
"
,
__PRETTY_FUNCTION__
,
selected_
account
->
accountID
);
show_account_window
(
selected_account
);
RETURN_IF_NULL
(
selected_account
ID
,
"No selected account in edit action"
);
DEBUG
(
"%s:
Selected
accountID=%s
\n
"
,
__PRETTY_FUNCTION__
,
selected_accountID
);
show_account_window
(
account_list_get_by_id
(
selected_account
ID
)
);
}
static
void
edit_account_cb
(
GtkButton
*
button
UNUSED
,
gpointer
data
UNUSED
)
{
RETURN_IF_NULL
(
selected_account
,
"No selected account in edit action"
);
DEBUG
(
"%s: accountID=%s
\n
"
,
__PRETTY_FUNCTION__
,
selected_
account
->
accountID
);
show_account_window
(
selected_account
);
RETURN_IF_NULL
(
selected_account
ID
,
"No selected account in edit action"
);
DEBUG
(
"%s:
Selected
accountID=%s
\n
"
,
__PRETTY_FUNCTION__
,
selected_accountID
);
show_account_window
(
account_list_get_by_id
(
selected_account
ID
)
);
}
static
void
add_account_cb
(
void
)
...
...
@@ -94,38 +95,46 @@ static void add_account_cb(void)
show_account_window
(
new_account
);
}
static
void
account_store_
fill
(
GtkTreeIter
*
iter
,
account_t
*
a
)
static
void
account_store_
add
(
GtkTreeIter
*
iter
,
account_t
*
a
ccount
)
{
const
gchar
*
enabled
=
g_hash_table_lookup
(
a
->
properties
,
ACCOUNT_ENABLED
);
const
gchar
*
type
=
g_hash_table_lookup
(
a
->
properties
,
ACCOUNT_TYPE
);
DEBUG
(
"Config:
Fill
ing account
s
: Account is enabled :%s"
,
enabled
);
const
gchar
*
enabled
=
account_lookup
(
account
,
ACCOUNT_ENABLED
);
const
gchar
*
type
=
account_lookup
(
account
,
ACCOUNT_TYPE
);
DEBUG
(
"Config:
Add
ing account: Account is enabled :%s"
,
enabled
);
gtk_list_store_set
(
account_store
,
iter
,
COLUMN_ACCOUNT_ALIAS
,
g_hash_table_lookup
(
a
->
properties
,
ACCOUNT_ALIAS
),
account_lookup
(
account
,
ACCOUNT_ALIAS
),
COLUMN_ACCOUNT_TYPE
,
type
,
COLUMN_ACCOUNT_STATUS
,
account_state_name
(
a
->
state
),
COLUMN_ACCOUNT_STATUS
,
account_state_name
(
a
ccount
->
state
),
COLUMN_ACCOUNT_ACTIVE
,
utf8_case_equal
(
enabled
,
"true"
),
COLUMN_ACCOUNT_DATA
,
a
,
-
1
);
COLUMN_ACCOUNT_ID
,
account
->
accountID
,
-
1
);
}
static
void
invalidate_selected_accountID
()
{
if
(
selected_accountID
)
{
g_free
(
selected_accountID
);
selected_accountID
=
NULL
;
}
}
/**
* Fills the treelist with accounts
*/
void
account_
list_config_dialog
_fill
()
void
account_
store
_fill
()
{
invalidate_selected_accountID
();
RETURN_IF_NULL
(
account_list_dialog
,
"No account dialog"
);
gtk_list_store_clear
(
account_store
);
// IP2IP account must be first
account_t
*
ip2ip
=
account_list_get_by_id
(
"IP2IP"
);
account_t
*
ip2ip
=
account_list_get_by_id
(
IP2IP_PROFILE
);
RETURN_IF_NULL
(
ip2ip
,
"Could not find IP2IP account"
);
GtkTreeIter
iter
;
gtk_list_store_append
(
account_store
,
&
iter
);
account_store_
fill
(
&
iter
,
ip2ip
);
account_store_
add
(
&
iter
,
ip2ip
);
for
(
size_t
i
=
0
;
i
<
account_list_get_size
();
++
i
)
{
account_t
*
a
=
account_list_get_nth
(
i
);
...
...
@@ -134,7 +143,7 @@ void account_list_config_dialog_fill()
// we don't want to process the IP2IP twice
if
(
a
!=
ip2ip
)
{
gtk_list_store_append
(
account_store
,
&
iter
);
account_store_
fill
(
&
iter
,
a
);
account_store_
add
(
&
iter
,
a
);
}
}
}
...
...
@@ -147,7 +156,7 @@ select_account_cb(GtkTreeSelection *selection, GtkTreeModel *model)
{
GtkTreeIter
iter
;
if
(
!
gtk_tree_selection_get_selected
(
selection
,
&
model
,
&
iter
))
{
selected_account
=
NULL
;
invalidate_
selected_account
ID
()
;
gtk_widget_set_sensitive
(
move_up_button
,
FALSE
);
gtk_widget_set_sensitive
(
move_down_button
,
FALSE
);
gtk_widget_set_sensitive
(
edit_button
,
FALSE
);
...
...
@@ -158,13 +167,14 @@ select_account_cb(GtkTreeSelection *selection, GtkTreeModel *model)
// The Gvalue will be initialized in the following function
GValue
val
;
memset
(
&
val
,
0
,
sizeof
(
val
));
gtk_tree_model_get_value
(
model
,
&
iter
,
COLUMN_ACCOUNT_D
ATA
,
&
val
);
gtk_tree_model_get_value
(
model
,
&
iter
,
COLUMN_ACCOUNT_
I
D
,
&
val
);
selected_account
=
(
account_t
*
)
g_value_get_
pointer
(
&
val
);
selected_account
ID
=
g_strdup
(
g_value_get_
string
(
&
val
)
)
;
g_value_unset
(
&
val
);
DEBUG
(
"Selected account has accountID %s"
,
selected_accountID
);
account_t
*
selected_account
=
account_list_get_by_id
(
selected_accountID
);
RETURN_IF_NULL
(
selected_account
,
"Selected account is NULL"
);
DEBUG
(
"Selected account has accountID %s"
,
selected_account
->
accountID
);
gtk_widget_set_sensitive
(
edit_button
,
TRUE
);
...
...
@@ -208,7 +218,7 @@ enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,
gpointer
data
)
{
// The IP2IP profile can't be disabled
if
(
utf8_case_equal
(
path
,
"0"
))
if
(
g_strcmp0
(
path
,
"0"
)
==
0
)
return
;
// Get pointer on object
...
...
@@ -217,9 +227,11 @@ enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,
GtkTreeIter
iter
;
gtk_tree_model_get_iter
(
model
,
&
iter
,
tree_path
);
gboolean
enable
;
account_t
*
acc
;
gchar
*
id
;
gtk_tree_model_get
(
model
,
&
iter
,
COLUMN_ACCOUNT_ACTIVE
,
&
enable
,
COLUMN_ACCOUNT_DATA
,
&
acc
,
-
1
);
COLUMN_ACCOUNT_ID
,
&
id
,
-
1
);
account_t
*
account
=
account_list_get_by_id
(
id
);
g_assert
(
account
);
enable
=
!
enable
;
DEBUG
(
"Account is %d enabled"
,
enable
);
...
...
@@ -228,13 +240,11 @@ enable_account_cb(GtkCellRendererToggle *rend UNUSED, gchar* path,
enable
,
-
1
);
// Modify account state
gchar
*
registration_state
=
enable
?
g_strdup
(
"true"
)
:
g_strdup
(
"false"
)
;
const
gchar
*
registration_state
=
enable
?
"true"
:
"false"
;
DEBUG
(
"Replacing registration state with %s"
,
registration_state
);
g_hash_table_replace
(
acc
->
properties
,
g_strdup
(
ACCOUNT_ENABLED
),
registration_state
);
dbus_send_register
(
acc
->
accountID
,
enable
);
account_replace
(
account
,
ACCOUNT_ENABLED
,
registration_state
);
dbus_send_register
(
account
->
accountID
,
enable
);
}
/**
...
...
@@ -259,7 +269,7 @@ account_move(gboolean move_up, gpointer data)
// The first real account in the list can't move up because of the IP2IP account
// It can still move down though
if
(
utf8_case_equal
(
path
,
"1"
)
&&
move_up
)
if
(
g_strcmp0
(
path
,
"1"
)
==
0
&&
move_up
)
return
;
GtkTreePath
*
tree_path
=
gtk_tree_path_new_from_string
(
path
);
...
...
@@ -343,13 +353,12 @@ highlight_ip_profile(GtkTreeViewColumn *col UNUSED, GtkCellRenderer *rend,
{
GValue
val
;
memset
(
&
val
,
0
,
sizeof
(
val
));
gtk_tree_model_get_value
(
tree_model
,
iter
,
COLUMN_ACCOUNT_DATA
,
&
val
);
account_t
*
current
=
(
account_t
*
)
g_value_get_pointer
(
&
val
);
gtk_tree_model_get_value
(
tree_model
,
iter
,
COLUMN_ACCOUNT_ID
,
&
val
);
account_t
*
current
=
account_list_get_by_id
(
g_value_get_string
(
&
val
));
g_value_unset
(
&
val
);
if
(
current
!=
NULL
)
{
// Make the first line appear diffe
rent
ly
// Make the IP2IP account appear differently
if
(
cur
rent
)
{
if
(
account_is_IP2IP
(
current
))
{
g_object_set
(
G_OBJECT
(
rend
),
"weight"
,
PANGO_WEIGHT_THIN
,
"style"
,
PANGO_STYLE_ITALIC
,
"stretch"
,
...
...
@@ -381,8 +390,8 @@ highlight_registration(GtkTreeViewColumn *col UNUSED, GtkCellRenderer *rend,
{
GValue
val
;
memset
(
&
val
,
0
,
sizeof
(
val
));
gtk_tree_model_get_value
(
tree_model
,
iter
,
COLUMN_ACCOUNT_D
ATA
,
&
val
);
account_t
*
current
=
(
account_
t
*
)
g_value_get_
pointer
(
&
val
);
gtk_tree_model_get_value
(
tree_model
,
iter
,
COLUMN_ACCOUNT_
I
D
,
&
val
);
account_t
*
current
=
account_
list_get_by_id
(
g_value_get_
string
(
&
val
)
)
;
g_value_unset
(
&
val
);
if
(
current
)
...
...
@@ -395,7 +404,6 @@ highlight_registration(GtkTreeViewColumn *col UNUSED, GtkCellRenderer *rend,
static
GtkWidget
*
create_account_list
()
{
selected_account
=
NULL
;
GtkWidget
*
table
=
gtk_table_new
(
1
,
2
,
FALSE
/* homogeneous */
);
gtk_table_set_col_spacings
(
GTK_TABLE
(
table
),
10
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
table
),
10
);
...
...
@@ -413,10 +421,10 @@ create_account_list()
G_TYPE_STRING
,
// Protocol
G_TYPE_STRING
,
// Status
G_TYPE_BOOLEAN
,
// Enabled / Disabled
G_TYPE_
POINTER
// Pointer to the Object
G_TYPE_
STRING
// AccountID
);
account_
list_config_dialog
_fill
();
account_
store
_fill
();
GtkTreeView
*
tree_view
=
GTK_TREE_VIEW
(
gtk_tree_view_new_with_model
(
GTK_TREE_MODEL
(
account_store
)));
GtkTreeSelection
*
tree_selection
=
gtk_tree_view_get_selection
(
tree_view
);
...
...
gnome/src/config/accountlistconfigdialog.h
View file @
37292c9b
...
...
@@ -32,9 +32,7 @@
#ifndef __SFL_ACCOUNTLISTDIALOG_H__
#define __SFL_ACCOUNTLISTDIALOG_H__
#include <sflphone_const.h>
void
show_account_list_config_dialog
(
void
);
void
account_
list_config_dialog
_fill
(
void
);
void
account_
store
_fill
(
void
);
#endif
gnome/src/dbus/dbus.c
View file @
37292c9b
...
...
@@ -38,7 +38,6 @@
#include "configurationmanager-glue.h"
#include "instance-glue.h"
#include "preferencesdialog.h"
#include "accountlistconfigdialog.h"
#include "mainwindow.h"
#include "marshaller.h"
#include "sliders.h"
...
...
@@ -427,7 +426,6 @@ accounts_changed_cb(DBusGProxy *proxy UNUSED, void *foo UNUSED)
{
sflphone_fill_account_list
();
sflphone_fill_ip2ip_profile
();
account_list_config_dialog_fill
();
status_bar_display_account
();
statusicon_set_tooltip
();
}
...
...
@@ -1096,7 +1094,8 @@ dbus_add_account(account_t *a)
g_assert
(
a
->
properties
);
DEBUG
(
"Adding %s account"
,
a
->
accountID
);
GError
*
error
=
NULL
;
g_free
(
a
->
accountID
);
if
(
a
->
accountID
)
g_free
(
a
->
accountID
);
a
->
accountID
=
NULL
;
org_sflphone_SFLphone_ConfigurationManager_add_account
(
config_proxy
,
a
->
properties
,
&
a
->
accountID
,
&
error
);
...
...
gnome/src/logger.h
View file @
37292c9b
...
...
@@ -28,8 +28,8 @@
* as that of the covered work.
*/
#ifndef
__
LOGGER_H
#define
__
LOGGER_H
#ifndef LOGGER_H
_
#define LOGGER_H
_
void
internal_log
(
const
int
level
,
const
char
*
format
,
...);
void
set_log_level
(
const
int
level
);
...
...
@@ -44,7 +44,8 @@ void set_log_level (const int level);
#define INFO(...) internal_log(LOG_INFO, __VA_ARGS__)
#define DEBUG(...) internal_log(LOG_DEBUG, __VA_ARGS__)
/* Prints an error message and returns if the pointer A is NULL */
#define RETURN_IF_NULL(A, M, ...) \
if ((A)
== NULL
) { ERROR(M, ##__VA_ARGS__); return; }
if (
!
(A)) { ERROR(M, ##__VA_ARGS__); return; }
#endif
#endif
// LOGGER_H_
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