diff --git a/pixmaps/ic_audio_only_call_black_24px.svg b/pixmaps/ic_audio_only_call_black_24px.svg new file mode 100644 index 0000000000000000000000000000000000000000..a5d4938ffa8c84ee32cc2c9eb1d4fb4c00906c06 --- /dev/null +++ b/pixmaps/ic_audio_only_call_black_24px.svg @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + fill="#000000" + height="24" + viewBox="0 0 24 24" + width="24" + version="1.1" + id="svg3777" + sodipodi:docname="ic_audio_only_call_black_24px.svg" + inkscape:version="0.92.2 5c3e80d, 2017-08-06"> + <metadata + id="metadata3783"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs3781" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1028" + id="namedview3779" + showgrid="false" + inkscape:zoom="34.875" + inkscape:cx="9.6893946" + inkscape:cy="10.914473" + inkscape:window-x="0" + inkscape:window-y="28" + inkscape:window-maximized="1" + inkscape:current-layer="svg3777" /> + <path + d="M0 0h24v24H0z" + fill="none" + id="path3773" /> + <path + d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" + id="path3775" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.54042286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 23.079805,2.6318744 20.917696,4.7939838 V 3.5537494 c 0,-0.444621 -0.365927,-0.8105468 -0.810547,-0.8105468 h -6.486328 c -0.444621,0 -0.810547,0.3659264 -0.810547,0.8105468 v 5.4042968 c 0,0.44462 0.365925,0.810547 0.810547,0.810547 h 6.486328 c 0.444621,0 0.810547,-0.365926 0.810547,-0.810547 v -1.240234 l 2.162109,2.162109 z m -9.458984,0.6523438 h 6.486328 c 0.149843,0 0.269531,0.1196871 0.269531,0.2695312 V 6.0967182 L 20.837618,5.6357807 22.538789,3.9346088 V 8.5752342 L 20.37668,6.4150776 v 2.5429686 c 0,0.149843 -0.119688,0.269531 -0.269531,0.269531 h -6.486328 c -0.149845,0 -0.269532,-0.119687 -0.269532,-0.269531 V 3.5537494 c 0,-0.1498447 0.119686,-0.2695312 0.269532,-0.2695312 z" + id="path4954" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.53149271;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 11.884824,10.476454 21.482679,1.7966362" + id="path5002" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> +</svg> diff --git a/pixmaps/pixmaps.gresource.xml b/pixmaps/pixmaps.gresource.xml index 913d51a6f8e3593f4253c3e86ae1de547ca556c6..484ac6c8c812dff9edddd6baf25d60a9ebc71f62 100644 --- a/pixmaps/pixmaps.gresource.xml +++ b/pixmaps/pixmaps.gresource.xml @@ -32,5 +32,6 @@ <file alias="invite">ic_person_add_black_24px.svg</file> <file alias="temporary-item">ic_search_black_48px.svg</file> <file alias="contact_requests_list_with_notification">ic_verified_user_black_24px_with_notification.svg</file> + <file alias="audio_only_call_start">ic_audio_only_call_black_24px.svg</file> </gresource> </gresources> diff --git a/src/chatview.cpp b/src/chatview.cpp index 0e4d0c3432bb43b40f886cd78cb3c13cd6d8e894..1c6968a1aa6b5abc518ce65e7adb17e791de9d8b 100644 --- a/src/chatview.cpp +++ b/src/chatview.cpp @@ -55,6 +55,7 @@ struct _ChatViewPrivate GtkWidget *button_close_chatview; GtkWidget *button_placecall; GtkWidget *button_add_to_conversations; + GtkWidget *button_place_audio_call; GSettings *settings; @@ -140,6 +141,17 @@ placecall_clicked(ChatView *self) priv->accountContainer_->info.conversationModel->placeCall(priv->conversation_->uid); } +static void +place_audio_call_clicked(ChatView *self) +{ + auto priv = CHAT_VIEW_GET_PRIVATE(self); + + if (!priv->conversation_) + return; + + priv->accountContainer_->info.conversationModel->placeAudioOnlyCall(priv->conversation_->uid); +} + static void button_add_to_conversations_clicked(ChatView *self) { @@ -178,6 +190,7 @@ chat_view_init(ChatView *view) g_signal_connect(priv->button_close_chatview, "clicked", G_CALLBACK(hide_chat_view), view); g_signal_connect_swapped(priv->button_placecall, "clicked", G_CALLBACK(placecall_clicked), view); g_signal_connect_swapped(priv->button_add_to_conversations, "clicked", G_CALLBACK(button_add_to_conversations_clicked), view); + g_signal_connect_swapped(priv->button_place_audio_call, "clicked", G_CALLBACK(place_audio_call_clicked), view); } static void @@ -195,6 +208,7 @@ chat_view_class_init(ChatViewClass *klass) gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), ChatView, button_close_chatview); gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), ChatView, button_placecall); gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), ChatView, button_add_to_conversations); + gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), ChatView, button_place_audio_call); chat_view_signals[NEW_MESSAGES_DISPLAYED] = g_signal_new ( "new-interactions-displayed", diff --git a/ui/chatview.ui b/ui/chatview.ui index 16d534368da263c019aa360d9282fe1c28d12266..39b705a4b00a8840fa4abe484c4d5bff5198595c 100644 --- a/ui/chatview.ui +++ b/ui/chatview.ui @@ -53,6 +53,21 @@ <property name="pack-type">end</property> </packing> </child> + <child> + <object class="GtkButton" id="button_place_audio_call"> + <property name="image">image_place_audio_only_call</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip-text" translatable="yes">Place audio-only call</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">2</property> + </packing> + </child> <child> <object class="GtkButton" id="button_add_to_conversations"> <property name="visible">True</property> @@ -124,4 +139,8 @@ <property name="visible">True</property> <property name="resource">/cx/ring/RingGnome/call_start</property> </object> + <object class="GtkImage" id="image_place_audio_only_call"> + <property name="visible">True</property> + <property name="resource">/cx/ring/RingGnome/audio_only_call_start</property> + </object> </interface>