diff --git a/sflphone-gtk/src/configurationmanager-glue.h b/sflphone-gtk/src/configurationmanager-glue.h index e3458cd04a7d6bb2d0eb53afedf187bffde9b28b..b637a86310fb28b8f8115ebc4a964b0f070442ea 100644 --- a/sflphone-gtk/src/configurationmanager-glue.h +++ b/sflphone-gtk/src/configurationmanager-glue.h @@ -466,6 +466,81 @@ static inline #endif gboolean +org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled (DBusGProxy *proxy, gint* OUT_bool, GError **error) + +{ + return dbus_g_proxy_call (proxy, "isRingtoneEnabled", error, G_TYPE_INVALID, G_TYPE_INT, OUT_bool, G_TYPE_INVALID); +} + +typedef void (*org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled_reply) (DBusGProxy *proxy, gint OUT_bool, GError *error, gpointer userdata); + +static void +org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) +{ + DBusGAsyncData *data = (DBusGAsyncData*) user_data; + GError *error = NULL; + gint OUT_bool; + dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INT, &OUT_bool, G_TYPE_INVALID); + (*(org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled_reply)data->cb) (proxy, OUT_bool, error, data->userdata); + return; +} + +static +#ifdef G_HAVE_INLINE +inline +#endif +DBusGProxyCall* +org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled_async (DBusGProxy *proxy, org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled_reply callback, gpointer userdata) + +{ + DBusGAsyncData *stuff; + stuff = g_new (DBusGAsyncData, 1); + stuff->cb = G_CALLBACK (callback); + stuff->userdata = userdata; + return dbus_g_proxy_begin_call (proxy, "isRingtoneEnabled", org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled_async_callback, stuff, g_free, G_TYPE_INVALID); +} +static +#ifdef G_HAVE_INLINE +inline +#endif +gboolean +org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled (DBusGProxy *proxy, GError **error) + +{ + return dbus_g_proxy_call (proxy, "ringtoneEnabled", error, G_TYPE_INVALID, G_TYPE_INVALID); +} + +typedef void (*org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled_reply) (DBusGProxy *proxy, GError *error, gpointer userdata); + +static void +org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) +{ + DBusGAsyncData *data = (DBusGAsyncData*) user_data; + GError *error = NULL; + dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); + (*(org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled_reply)data->cb) (proxy, error, data->userdata); + return; +} + +static +#ifdef G_HAVE_INLINE +inline +#endif +DBusGProxyCall* +org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled_async (DBusGProxy *proxy, org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled_reply callback, gpointer userdata) + +{ + DBusGAsyncData *stuff; + stuff = g_new (DBusGAsyncData, 1); + stuff->cb = G_CALLBACK (callback); + stuff->userdata = userdata; + return dbus_g_proxy_begin_call (proxy, "ringtoneEnabled", org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled_async_callback, stuff, g_free, G_TYPE_INVALID); +} +static +#ifdef G_HAVE_INLINE +inline +#endif +gboolean org_sflphone_SFLphone_ConfigurationManager_get_codec_list (DBusGProxy *proxy, char *** OUT_list, GError **error) { diff --git a/sflphone-gtk/src/configwindow.c b/sflphone-gtk/src/configwindow.c index 698a347e8bd8d51b197c3ca1dd082a0857f8b983..f59e61f171880d4c1bfea7ceb8d6160090e4c4ac 100644 --- a/sflphone-gtk/src/configwindow.c +++ b/sflphone-gtk/src/configwindow.c @@ -35,6 +35,7 @@ * Local variables */ gboolean dialogOpen = FALSE; +gboolean ringtoneEnabled = TRUE; GtkListStore *accountStore; GtkWidget *codecTreeView; // View used instead of store to get access to selection @@ -482,6 +483,18 @@ default_account(GtkWidget *widget, gpointer data) } } +int +is_ringtone_enabled( void ) +{ + int res = dbus_is_ringtone_enabled(); + return res; +} + +void +ringtone_enabled( void ) +{ + dbus_ringtone_enabled(); +} /** * Call back when the user click on an account in the list */ @@ -938,6 +951,7 @@ create_audio_tab () GtkWidget *deviceTable; GtkWidget *codecLabel; GtkWidget *codecBox; + GtkWidget *enableTone; GtkWidget *titleLabel; GtkWidget *comboBox; @@ -1081,6 +1095,14 @@ create_audio_tab () gtk_box_pack_start(GTK_BOX(codecBox), codecTable, TRUE, TRUE, 0); gtk_widget_show(codecTable); + // check button to enable ringtones + GtkWidget* box = gtk_hbox_new( TRUE , 1); + gtk_box_pack_start( GTK_BOX(ret) , box , TRUE , TRUE , 1); + enableTone = gtk_check_button_new_with_mnemonic( "_Enable ringtones"); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enableTone), dbus_is_ringtone_enabled() ); + gtk_box_pack_start( GTK_BOX(box) , enableTone , TRUE , TRUE , 1); + g_signal_connect(G_OBJECT( enableTone) , "clicked" , G_CALLBACK( ringtone_enabled ) , NULL); + // Show all gtk_widget_show_all(ret); diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c index d29209f5d737e55f7ae0824b6cb21d17435ad0d9..6f4389b9811a3577307df909a8f99f7d85a4d501 100644 --- a/sflphone-gtk/src/dbus.c +++ b/sflphone-gtk/src/dbus.c @@ -1027,6 +1027,41 @@ dbus_get_current_audio_output_plugin() return plugin; } +int +dbus_is_ringtone_enabled() +{ + int res; + GError* error = NULL; + org_sflphone_SFLphone_ConfigurationManager_is_ringtone_enabled( + configurationManagerProxy, + &res, + &error); + g_print("After"); + if(error) + { + g_error_free(error); + } + else + g_print("DBus called is_ringtone_enabled() on ConfigurationManager\n"); + return res; +} + +void +dbus_ringtone_enabled() +{ + GError* error = NULL; + org_sflphone_SFLphone_ConfigurationManager_ringtone_enabled( + configurationManagerProxy, + &error); + g_print("After"); + if(error) + { + g_error_free(error); + } + else + g_print("DBus called ringtone_enabled() on ConfigurationManager\n"); +} + int dbus_is_iax2_enabled() { diff --git a/sflphone-gtk/src/dbus.h b/sflphone-gtk/src/dbus.h index 1cba5951a498150de2634c9010cb640634984c10..03a5c2f8cb69dde0c7a074fa14cfff4cb6b70c4d 100644 --- a/sflphone-gtk/src/dbus.h +++ b/sflphone-gtk/src/dbus.h @@ -74,6 +74,7 @@ gchar** dbus_get_current_audio_devices_index(); int dbus_get_audio_device_index(const gchar* name); gchar* dbus_get_current_audio_output_plugin(); int dbus_is_iax2_enabled( void ); +int dbus_is_ringtone_enabled( void ); /* Instance */ void dbus_register( int pid, gchar * name); diff --git a/src/dbus/configurationmanager-glue.h b/src/dbus/configurationmanager-glue.h index 5795299bb945a6567883222ae5746c87497ecd50..59e12b3505f03f31ad21c60aded86ebf556be9b9 100644 --- a/src/dbus/configurationmanager-glue.h +++ b/src/dbus/configurationmanager-glue.h @@ -32,6 +32,8 @@ public: register_method(ConfigurationManager, getRingtoneList, _getRingtoneList_stub); register_method(ConfigurationManager, getPlaybackDeviceList, _getPlaybackDeviceList_stub); register_method(ConfigurationManager, getRecordDeviceList, _getRecordDeviceList_stub); + register_method(ConfigurationManager, isRingtoneEnabled, _isRingtoneEnabled_stub); + register_method(ConfigurationManager, ringtoneEnabled, _ringtoneEnabled_stub); register_method(ConfigurationManager, getCodecList, _getCodecList_stub); register_method(ConfigurationManager, getCodecDetails, _getCodecDetails_stub); register_method(ConfigurationManager, getActiveCodecList, _getActiveCodecList_stub); @@ -114,6 +116,15 @@ public: { "list", "as", false }, { 0, 0, 0 } }; + static ::DBus::IntrospectedArgument isRingtoneEnabled_args[] = + { + { "bool", "i", false }, + { 0, 0, 0 } + }; + static ::DBus::IntrospectedArgument ringtoneEnabled_args[] = + { + { 0, 0, 0 } + }; static ::DBus::IntrospectedArgument getCodecList_args[] = { { "list", "as", false }, @@ -219,6 +230,8 @@ public: { "getRingtoneList", getRingtoneList_args }, { "getPlaybackDeviceList", getPlaybackDeviceList_args }, { "getRecordDeviceList", getRecordDeviceList_args }, + { "isRingtoneEnabled", isRingtoneEnabled_args }, + { "ringtoneEnabled", ringtoneEnabled_args }, { "getCodecList", getCodecList_args }, { "getCodecDetails", getCodecDetails_args }, { "getActiveCodecList", getActiveCodecList_args }, @@ -280,6 +293,8 @@ public: virtual std::vector< ::DBus::String > getRingtoneList( ) = 0; virtual std::vector< ::DBus::String > getPlaybackDeviceList( ) = 0; virtual std::vector< ::DBus::String > getRecordDeviceList( ) = 0; + virtual ::DBus::Int32 isRingtoneEnabled( ) = 0; + virtual void ringtoneEnabled( ) = 0; virtual std::vector< ::DBus::String > getCodecList( ) = 0; virtual std::vector< ::DBus::String > getCodecDetails( const ::DBus::Int32& payload ) = 0; virtual std::vector< ::DBus::String > getActiveCodecList( ) = 0; @@ -436,6 +451,24 @@ private: wi << argout1; return reply; } + ::DBus::Message _isRingtoneEnabled_stub( const ::DBus::CallMessage& call ) + { + ::DBus::MessageIter ri = call.reader(); + + ::DBus::Int32 argout1 = isRingtoneEnabled(); + ::DBus::ReturnMessage reply(call); + ::DBus::MessageIter wi = reply.writer(); + wi << argout1; + return reply; + } + ::DBus::Message _ringtoneEnabled_stub( const ::DBus::CallMessage& call ) + { + ::DBus::MessageIter ri = call.reader(); + + ringtoneEnabled(); + ::DBus::ReturnMessage reply(call); + return reply; + } ::DBus::Message _getCodecList_stub( const ::DBus::CallMessage& call ) { ::DBus::MessageIter ri = call.reader(); diff --git a/src/dbus/configurationmanager-introspec.xml b/src/dbus/configurationmanager-introspec.xml index 1dfca069b2b89b7702a51a245eba545de006c57d..581b48d2196c190f1abce93a36ac314d2251e2f3 100644 --- a/src/dbus/configurationmanager-introspec.xml +++ b/src/dbus/configurationmanager-introspec.xml @@ -57,6 +57,12 @@ <arg type="as" name="list" direction="out"/> </method> + <method name="isRingtoneEnabled"> + <arg type="i" name="bool" direction="out"/> + </method> + + <method name="ringtoneEnabled"> + </method> <!-- /////////////////////// --> <!-- Codecs-related methods --> diff --git a/src/dbus/configurationmanager.cpp b/src/dbus/configurationmanager.cpp index 566ce7cc6d2c4b7d210de04f5a1d6fd97f1d497b..e97ec0e41a09cea845a9d7f00ddc31bcaf40fa3f 100644 --- a/src/dbus/configurationmanager.cpp +++ b/src/dbus/configurationmanager.cpp @@ -236,3 +236,15 @@ ConfigurationManager::isIax2Enabled( void ) { return Manager::instance().isIax2Enabled( ); } + +void +ConfigurationManager::ringtoneEnabled( void ) +{ + Manager::instance().ringtoneEnabled( ); +} + +::DBus::Int32 +ConfigurationManager::isRingtoneEnabled( void ) +{ + return Manager::instance().isRingtoneEnabled( ); +} diff --git a/src/dbus/configurationmanager.h b/src/dbus/configurationmanager.h index 7fae39433f0a0813d733b71576819c541b2603b3..5089e6e0a50d688350d733a874175263f23ce170 100644 --- a/src/dbus/configurationmanager.h +++ b/src/dbus/configurationmanager.h @@ -72,6 +72,8 @@ public: std::vector< ::DBus::String > getRingtoneList( ); ::DBus::Int32 isIax2Enabled( void ); + ::DBus::Int32 isRingtoneEnabled( void ); + void ringtoneEnabled( void ); }; diff --git a/src/global.h b/src/global.h index de9c78b195abfd3d33411e239db7cc6cc6cba679..d6d485943e13ace918df69d4ee16eaf9c42828ed 100644 --- a/src/global.h +++ b/src/global.h @@ -102,5 +102,6 @@ typedef short int16; #define GSM_STRING_DESCRIPTION "gsm" #define SPEEX_STRING_DESCRIPTION "speex" +#define RINGTONE_ENABLED "1" #endif // __GLOBAL_H__ diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp index bc488f1acee67a19ddc8daa2eb41a0bb23f2cbdb..1697d142938c7f10022c10fec9c26282f8c284eb 100644 --- a/src/managerimpl.cpp +++ b/src/managerimpl.cpp @@ -1082,6 +1082,7 @@ ManagerImpl::initConfigFile (void) fill_config_int(CHECKED_TRAY, NO_STR); fill_config_str(VOICEMAIL_NUM, DFT_VOICEMAIL); fill_config_int(CONFIG_ZEROCONF, CONFIG_ZEROCONF_DEFAULT_STR); + fill_config_int(CONFIG_RINGTONE, CONFIG_RINGTONE_DEFAULT); // Loads config from ~/.sflphone/sflphonedrc or so.. if (createSettingsPath() == 1) { @@ -1360,6 +1361,18 @@ ManagerImpl::isIax2Enabled( void ) #endif } +int +ManagerImpl::isRingtoneEnabled( void ) +{ + return std::atoi( getConfigString( PREFERENCES , CONFIG_RINGTONE ).c_str()); +} + +void +ManagerImpl::ringtoneEnabled( void ) +{ + ( getConfigString( PREFERENCES , CONFIG_RINGTONE ) == RINGTONE_ENABLED )? setConfig(PREFERENCES , CONFIG_RINGTONE , "0") : setConfig( PREFERENCES , CONFIG_RINGTONE , "1"); +} + int ManagerImpl::getAudioDeviceIndex(const std::string name) { diff --git a/src/managerimpl.h b/src/managerimpl.h index 1c38a07d56e82d4f50e2b0c20cd6c1524e46d723..7a983bbe032f3a2e956872b8b9e9c34ab3c5d0f4 100644 --- a/src/managerimpl.h +++ b/src/managerimpl.h @@ -342,6 +342,8 @@ public: std::string serialize(std::vector<std::string> v); int isIax2Enabled( void ); + int isRingtoneEnabled( void ); + void ringtoneEnabled( void ); /** * Inverse of serialize */ diff --git a/src/user_cfg.h b/src/user_cfg.h index fd27e1c931222cba775c6e5c334f243db31c68d0..79eeabaaed20df13b0762a4735618caddd71771d 100644 --- a/src/user_cfg.h +++ b/src/user_cfg.h @@ -77,12 +77,13 @@ #define CHECKED_TRAY "Options.checkedTray" #define VOICEMAIL_NUM "Options.voicemailNumber" // zeroconfig module -#define CONFIG_ZEROCONF "Zeroconf.enable" +#define CONFIG_ZEROCONF "Zeroconf.enable" +#define CONFIG_RINGTONE "Ringtones.enable" // Default values #define EMPTY_FIELD "" #define DFT_STUN_SERVER "stun.fwdnet.net:3478" - +#define CONFIG_RINGTONE_DEFAULT "1" #define YES_STR "1" #define NO_STR "0" #define DFT_PULSE_LENGTH_STR "250"