diff --git a/gtk/incall_view.c b/gtk/incall_view.c index 15b1396bb..db056fdc8 100644 --- a/gtk/incall_view.c +++ b/gtk/incall_view.c @@ -646,16 +646,26 @@ static void volume_control_value_changed(GtkScaleButton *button, gdouble value, } } +static void volume_control_button_update_value(GtkWidget *widget) { + LinphoneCall *call = (LinphoneCall *)g_object_get_data(G_OBJECT(widget), "call"); + VolumeControlType type = (VolumeControlType)g_object_get_data(G_OBJECT(widget), "type"); + + if(type == VOLUME_CTRL_PLAYBACK) { + gtk_scale_button_set_value(GTK_SCALE_BUTTON(widget), linphone_call_get_speaker_volume_gain(call)); + } else if(type == VOLUME_CTRL_RECORD) { + gtk_scale_button_set_value(GTK_SCALE_BUTTON(widget), linphone_call_get_microphone_volume_gain(call)); + } +} + +static gboolean volume_control_button_enter_event_handler(GtkWidget *widget) { + volume_control_button_update_value(widget); + return FALSE; +} + static void volume_control_init(GtkWidget *vol_ctrl, VolumeControlType type, LinphoneCall *call) { g_object_set_data(G_OBJECT(vol_ctrl), "call", call); g_object_set_data(G_OBJECT(vol_ctrl), "type", (gpointer)type); - - if(type == VOLUME_CTRL_PLAYBACK) { - gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_ctrl), linphone_call_get_speaker_volume_gain(call)); - } else if(type == VOLUME_CTRL_RECORD) { - gtk_scale_button_set_value(GTK_SCALE_BUTTON(vol_ctrl), linphone_call_get_microphone_volume_gain(call)); - } - + g_signal_connect(G_OBJECT(vol_ctrl), "enter-notify-event", G_CALLBACK(volume_control_button_enter_event_handler), NULL); g_signal_connect(G_OBJECT(vol_ctrl), "value-changed", G_CALLBACK(volume_control_value_changed), NULL); } @@ -864,22 +874,11 @@ void linphone_gtk_in_call_view_set_transfer_status(LinphoneCall *call,LinphoneCa } void linphone_gtk_draw_mute_button(GtkButton *button, gboolean active){ + const char *icon_name = active ? "linphone-micro-muted" : "linphone-micro-enabled"; + GtkWidget *image = gtk_image_new_from_icon_name(icon_name, GTK_ICON_SIZE_BUTTON); + gtk_button_set_image(button, image); + gtk_widget_show(image); g_object_set_data(G_OBJECT(button),"active",GINT_TO_POINTER(active)); - if (active){ - GtkWidget *image=create_pixmap("mic_muted.png"); - /*gtk_button_set_label(GTK_BUTTON(button),_("Unmute"));*/ - if (image!=NULL) { - gtk_button_set_image(GTK_BUTTON(button),image); - gtk_widget_show(image); - } - }else{ - GtkWidget *image=create_pixmap("mic_active.png"); - /*gtk_button_set_label(GTK_BUTTON(button),_("Mute"));*/ - if (image!=NULL) { - gtk_button_set_image(GTK_BUTTON(button),image); - gtk_widget_show(image); - } - } } void linphone_gtk_mute_clicked(GtkButton *button){ diff --git a/gtk/main.c b/gtk/main.c index f9bc2722d..5a03ac033 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -2124,6 +2124,17 @@ int main(int argc, char *argv[]){ /*for pulseaudio:*/ g_setenv("PULSE_PROP_media.role", "phone", TRUE); #endif + + /* Add the data directory of Linphone to XDG_DATA_DIRS to enable GTK+ to find + the Linphone specific icons */ + tmp = g_getenv("XDG_DATA_DIRS"); + if(tmp && strlen(tmp) > 0) { + char *xdg_data_dirs = g_strdup_printf("%s:%s", tmp, PACKAGE_DATA_DIR "/linphone"); + g_setenv("XDG_DATA_DIRS", xdg_data_dirs, TRUE); + g_free(xdg_data_dirs); + } else { + g_setenv("XDG_DATA_DIRS", PACKAGE_DATA_DIR "/linphone", FALSE); + } lang=linphone_gtk_get_lang(config_file); if (lang == NULL || lang[0]=='\0'){ diff --git a/gtk/main.ui b/gtk/main.ui index 50f2a106f..3f9d7fbe5 100644 --- a/gtk/main.ui +++ b/gtk/main.ui @@ -2,6 +2,7 @@ + True False @@ -304,10 +305,7 @@ none False vertical - audio-volume-muted -audio-volume-high -audio-volume-low -audio-volume-medium + linphone-micro-enabled False @@ -350,10 +348,7 @@ audio-volume-medium none False vertical - audio-volume-muted -audio-volume-high -audio-volume-low -audio-volume-medium + linphone-speaker-enabled False diff --git a/pixmaps/CMakeLists.txt b/pixmaps/CMakeLists.txt index 800869425..cae9128b7 100644 --- a/pixmaps/CMakeLists.txt +++ b/pixmaps/CMakeLists.txt @@ -20,6 +20,8 @@ # ############################################################################ +set(ICONS_INSTALL_DIR ${PACKAGE_DATA_DIR}/linphone/icons/hicolor) + file(GLOB PIXMAPS "*.png" "linphone.icns") install(FILES ${PIXMAPS} @@ -27,6 +29,14 @@ install(FILES ${PIXMAPS} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) +install(FILES svg/linphone-micro-muted.svg + svg/linphone-speaker-muted.svg + svg/linphone-micro-enabled.svg + svg/linphone-speaker-enabled.svg + DESTINATION ${ICONS_INSTALL_DIR}/scalable/status + PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ +) + install(FILES linphone.png DESTINATION ${PACKAGE_DATA_DIR}/icons/hicolor/48x48/apps PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am index b0fb73d8a..708ce8587 100644 --- a/pixmaps/Makefile.am +++ b/pixmaps/Makefile.am @@ -1,8 +1,6 @@ pixmapdir=$(datadir)/pixmaps/linphone - -pixmap_DATA= \ +dist_pixmap_DATA= \ hold_on.png hold_off.png \ - mic_muted.png mic_active.png \ linphone.png linphone-banner.png \ status-green.png \ status-orange.png \ @@ -14,16 +12,17 @@ pixmap_DATA= \ contact-orange.png history-orange.png\ call_start.png startcall-small.png stopcall-red.png stopcall-small.png call_add.png linphone.icns \ contact_starred.png contact_unstarred.png \ - speaker.png \ call_status_incoming.png call_status_outgoing.png \ ok.png \ dialer.png \ notok.png +appicondir=$(datadir)/icons/hicolor/48x48/apps +dist_appicon_DATA= linphone.png -iconsdir=$(datadir)/icons/hicolor/48x48/apps - -icons_DATA= linphone.png - - -EXTRA_DIST=$(pixmap_DATA) $(icons_DATA) +statusiconsdir=$(datadir)/linphone/icons/hicolor/scalable/status +dist_statusicons_DATA= \ + svg/linphone-micro-muted.svg \ + svg/linphone-speaker-muted.svg \ + svg/linphone-micro-enabled.svg \ + svg/linphone-speaker-enabled.svg diff --git a/pixmaps/mic_active.png b/pixmaps/mic_active.png deleted file mode 100644 index ee6b9038c..000000000 Binary files a/pixmaps/mic_active.png and /dev/null differ diff --git a/pixmaps/mic_muted.png b/pixmaps/mic_muted.png deleted file mode 100644 index 60fd18761..000000000 Binary files a/pixmaps/mic_muted.png and /dev/null differ diff --git a/pixmaps/speaker.png b/pixmaps/speaker.png deleted file mode 100644 index acc92dbcf..000000000 Binary files a/pixmaps/speaker.png and /dev/null differ diff --git a/pixmaps/svg/.directory b/pixmaps/svg/.directory new file mode 100644 index 000000000..c99a6191a --- /dev/null +++ b/pixmaps/svg/.directory @@ -0,0 +1,4 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2015,8,3,13,7,36 +Version=3 diff --git a/pixmaps/svg/linphone-micro-enabled.svg b/pixmaps/svg/linphone-micro-enabled.svg new file mode 100644 index 000000000..a23354bc1 --- /dev/null +++ b/pixmaps/svg/linphone-micro-enabled.svg @@ -0,0 +1,78 @@ + + + + + + image/svg+xml + + micro_default + + + + + + micro_default + Created with Sketch. + + + + + + diff --git a/pixmaps/svg/linphone-micro-muted.svg b/pixmaps/svg/linphone-micro-muted.svg new file mode 100644 index 000000000..09d505c59 --- /dev/null +++ b/pixmaps/svg/linphone-micro-muted.svg @@ -0,0 +1,90 @@ + + + + + + image/svg+xml + + micro_default + + + + + + micro_default + Created with Sketch. + + + + + + + + + + diff --git a/pixmaps/svg/linphone-speaker-enabled.svg b/pixmaps/svg/linphone-speaker-enabled.svg new file mode 100644 index 000000000..8a122795d --- /dev/null +++ b/pixmaps/svg/linphone-speaker-enabled.svg @@ -0,0 +1,87 @@ + + + + + + image/svg+xml + + speaker_default + + + + + + speaker_default + Created with Sketch. + + + + + + + + + + diff --git a/pixmaps/svg/linphone-speaker-muted.svg b/pixmaps/svg/linphone-speaker-muted.svg new file mode 100644 index 000000000..1e85b85be --- /dev/null +++ b/pixmaps/svg/linphone-speaker-muted.svg @@ -0,0 +1,76 @@ + + + + + + image/svg+xml + + speaker_default + + + + + + speaker_default + Created with Sketch. + + + + +