diff --git a/src/calls-call-display.c b/src/calls-call-display.c
deleted file mode 100644
index 466fbe2..0000000
--- a/src/calls-call-display.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Copyright (C) 2018 Purism SPC
- *
- * This file is part of Calls.
- *
- * Calls is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Calls is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Calls. If not, see .
- *
- * Author: Bob Ham
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#include "config.h"
-#include "calls-manager.h"
-#include "calls-call-display.h"
-#include "util.h"
-
-#include
-#include
-#include
-#include
-
-#include
-
-struct _CallsCallDisplay
-{
- GtkOverlay parent_instance;
-
- CallsBestMatch *contact;
- CallsCall *call;
- GTimer *timer;
- guint timeout;
-
- GtkLabel *incoming_phone_call;
- HdyAvatar *avatar;
- GtkLabel *primary_contact_info;
- GtkLabel *secondary_contact_info;
- GtkLabel *status;
-
- GtkBox *controls;
- GtkBox *gsm_controls;
- GtkBox *general_controls;
- GtkToggleButton *speaker;
- GtkToggleButton *mute;
- GtkButton *hang_up;
- GtkButton *answer;
-
- GtkRevealer *dial_pad_revealer;
-};
-
-G_DEFINE_TYPE (CallsCallDisplay, calls_call_display, GTK_TYPE_OVERLAY);
-
-enum {
- PROP_0,
- PROP_CALL,
- PROP_LAST_PROP,
-};
-static GParamSpec *props[PROP_LAST_PROP];
-
-static void
-answer_clicked_cb (GtkButton *button,
- CallsCallDisplay *self)
-{
- g_return_if_fail (CALLS_IS_CALL_DISPLAY (self));
-
- if (self->call)
- calls_call_answer (self->call);
-}
-
-static void
-hang_up_clicked_cb (GtkButton *button,
- CallsCallDisplay *self)
-{
- g_return_if_fail (CALLS_IS_CALL_DISPLAY (self));
-
- if (self->call)
- calls_call_hang_up (self->call);
-}
-
-static void
-hold_toggled_cb (GtkToggleButton *togglebutton,
- CallsCallDisplay *self)
-{
-}
-
-static void
-mute_toggled_cb (GtkToggleButton *togglebutton,
- CallsCallDisplay *self)
-{
- gboolean want_mute, ret;
- g_autoptr (GError) error = NULL;
-
- want_mute = gtk_toggle_button_get_active (togglebutton);
- ret = call_audio_mute_mic (want_mute, &error);
- if (!ret && error)
- g_warning ("Failed to %smute microphone: %s",
- want_mute ? "" : "un",
- error->message);
-}
-
-
-static void
-speaker_toggled_cb (GtkToggleButton *togglebutton,
- CallsCallDisplay *self)
-{
- gboolean want_speaker, ret;
- g_autoptr (GError) error = NULL;
-
- want_speaker = gtk_toggle_button_get_active (togglebutton);
- ret = call_audio_enable_speaker (want_speaker, &error);
- if (!ret && error)
- g_warning ("Failed to %sable speaker: %s",
- want_speaker ? "en" : "dis",
- error->message);
-}
-
-
-static void
-add_call_clicked_cb (GtkButton *button,
- CallsCallDisplay *self)
-{
-}
-
-
-static void
-hide_dial_pad_clicked_cb (CallsCallDisplay *self)
-{
- gtk_revealer_set_reveal_child (self->dial_pad_revealer, FALSE);
-}
-
-static gboolean
-timeout_cb (CallsCallDisplay *self)
-{
-#define MINUTE 60
-#define HOUR (60 * MINUTE)
-#define DAY (24 * HOUR)
-
- gdouble elapsed;
- GString *str;
- gboolean printing;
- guint minutes;
-
- g_return_val_if_fail (CALLS_IS_CALL_DISPLAY (self), FALSE);
- if (!self->call)
- return FALSE;
-
- elapsed = g_timer_elapsed (self->timer, NULL);
-
- str = g_string_new ("");
-
- if ( (printing = (elapsed > DAY)) ) {
- guint days = (guint)(elapsed / DAY);
- g_string_append_printf (str, "%ud ", days);
- elapsed -= (days * DAY);
- }
-
- if (printing || elapsed > HOUR) {
- guint hours = (guint)(elapsed / HOUR);
- g_string_append_printf (str, "%u:", hours);
- elapsed -= (hours * HOUR);
- }
-
- minutes = (guint)(elapsed / MINUTE);
- g_string_append_printf (str, "%02u:", minutes);
- elapsed -= (minutes * MINUTE);
-
- g_string_append_printf (str, "%02u", (guint)elapsed);
-
- gtk_label_set_text (self->status, str->str);
-
- g_string_free (str, TRUE);
- return TRUE;
-
-#undef DAY
-#undef HOUR
-#undef MINUTE
-}
-
-
-static void
-stop_timeout (CallsCallDisplay *self)
-{
- if (self->timeout == 0)
- return;
-
- g_source_remove (self->timeout);
- self->timeout = 0;
-}
-
-
-static void
-select_mode_complete (gboolean success, GError *error, gpointer data)
-{
- if (error) {
- g_warning ("Failed to select audio mode: %s", error->message);
- g_error_free (error);
- }
-}
-
-
-static void
-call_state_changed_cb (CallsCallDisplay *self,
- CallsCallState state)
-{
- GtkStyleContext *hang_up_style;
- g_autoptr (GList) calls_list = NULL;
-
- g_return_if_fail (CALLS_IS_CALL_DISPLAY (self));
-
- hang_up_style = gtk_widget_get_style_context
- (GTK_WIDGET (self->hang_up));
-
- /* Widgets */
- switch (state) {
- case CALLS_CALL_STATE_INCOMING:
- gtk_widget_hide (GTK_WIDGET (self->status));
- gtk_widget_hide (GTK_WIDGET (self->controls));
- gtk_widget_show (GTK_WIDGET (self->incoming_phone_call));
- gtk_widget_show (GTK_WIDGET (self->answer));
- gtk_style_context_remove_class
- (hang_up_style, GTK_STYLE_CLASS_DESTRUCTIVE_ACTION);
- break;
-
- case CALLS_CALL_STATE_DIALING:
- case CALLS_CALL_STATE_ALERTING:
- case CALLS_CALL_STATE_ACTIVE:
- case CALLS_CALL_STATE_HELD:
- case CALLS_CALL_STATE_WAITING:
- gtk_style_context_add_class
- (hang_up_style, GTK_STYLE_CLASS_DESTRUCTIVE_ACTION);
- gtk_widget_hide (GTK_WIDGET (self->answer));
- gtk_widget_hide (GTK_WIDGET (self->incoming_phone_call));
- gtk_widget_show (GTK_WIDGET (self->controls));
- gtk_widget_show (GTK_WIDGET (self->status));
-
- gtk_widget_set_visible
- (GTK_WIDGET (self->gsm_controls),
- state != CALLS_CALL_STATE_DIALING
- && state != CALLS_CALL_STATE_ALERTING);
-
- call_audio_select_mode_async (CALL_AUDIO_MODE_CALL,
- select_mode_complete,
- NULL);
- break;
-
- case CALLS_CALL_STATE_DISCONNECTED:
- calls_list = calls_manager_get_calls (calls_manager_get_default ());
- /* Switch to default mode only if there's no other ongoing call */
- if (!calls_list || (calls_list->data == self->call && !calls_list->next))
- call_audio_select_mode_async (CALL_AUDIO_MODE_DEFAULT,
- select_mode_complete,
- NULL);
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- /* Status text */
- switch (state) {
- case CALLS_CALL_STATE_INCOMING:
- break;
-
- case CALLS_CALL_STATE_DIALING:
- case CALLS_CALL_STATE_ALERTING:
- gtk_label_set_text (self->status, _("Calling…"));
- break;
-
- case CALLS_CALL_STATE_ACTIVE:
- case CALLS_CALL_STATE_HELD:
- case CALLS_CALL_STATE_WAITING:
- if (self->timeout == 0) {
- self->timeout = g_timeout_add
- (500, (GSourceFunc)timeout_cb, self);
- timeout_cb (self);
- }
- break;
-
- case CALLS_CALL_STATE_DISCONNECTED:
- stop_timeout (self);
- break;
-
- default:
- g_assert_not_reached ();
- }
-}
-
-
-CallsCallDisplay *
-calls_call_display_new (CallsCall *call)
-{
- return g_object_new (CALLS_TYPE_CALL_DISPLAY,
- "call", call,
- NULL);
-}
-
-
-static void
-set_party (CallsCallDisplay *self)
-{
- self->contact = calls_call_get_contact (self->call);
-
- g_object_bind_property (self->contact, "name",
- self->primary_contact_info, "label",
- G_BINDING_SYNC_CREATE);
-
- g_object_bind_property (self->contact, "phone-number",
- self->secondary_contact_info, "label",
- G_BINDING_SYNC_CREATE);
-
- g_object_bind_property (self->contact, "has-individual",
- self->secondary_contact_info, "visible",
- G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE);
-
- g_object_bind_property (self->contact, "name",
- self->avatar, "text",
- G_BINDING_SYNC_CREATE);
-
- g_object_bind_property (self->contact, "has-individual",
- self->avatar, "show-initials",
- G_BINDING_SYNC_CREATE);
-}
-
-
-static void
-set_call (CallsCallDisplay *self, CallsCall *call)
-{
- g_signal_connect_object (call, "state-changed",
- G_CALLBACK (call_state_changed_cb),
- self,
- G_CONNECT_SWAPPED);
-
- g_set_object (&self->call, call);
- set_party (self);
-}
-
-
-static void
-get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- CallsCallDisplay *self = CALLS_CALL_DISPLAY (object);
-
- switch (property_id) {
- case PROP_CALL:
- g_value_set_object (value, calls_call_display_get_call (self));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- CallsCallDisplay *self = CALLS_CALL_DISPLAY (object);
-
- switch (property_id) {
- case PROP_CALL:
- set_call (self, CALLS_CALL (g_value_get_object (value)));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-
-static void
-constructed (GObject *object)
-{
- CallsCallDisplay *self = CALLS_CALL_DISPLAY (object);
-
- self->timer = g_timer_new ();
-
- call_state_changed_cb (self, calls_call_get_state (self->call));
-
- G_OBJECT_CLASS (calls_call_display_parent_class)->constructed (object);
-}
-
-
-static void
-block_delete_cb (GtkWidget *widget)
-{
- g_signal_stop_emission_by_name (widget, "delete-text");
-}
-
-
-static void
-insert_text_cb (GtkEditable *editable,
- gchar *text,
- gint length,
- gint *position,
- CallsCallDisplay *self)
-{
- gint end_pos = -1;
-
- calls_call_tone_start (self->call, *text);
-
- // Make sure that new chars are inserted at the end of the input
- *position = end_pos;
- g_signal_handlers_block_by_func (editable,
- (gpointer) insert_text_cb, self);
- gtk_editable_insert_text (editable, text, length, &end_pos);
- g_signal_handlers_unblock_by_func (editable,
- (gpointer) insert_text_cb, self);
-
- g_signal_stop_emission_by_name (editable, "insert-text");
-}
-
-
-static void
-calls_call_display_init (CallsCallDisplay *self)
-{
- gtk_widget_init_template (GTK_WIDGET (self));
-
- if (!call_audio_is_inited ()) {
- g_critical ("libcallaudio not initialized");
- gtk_widget_set_sensitive (GTK_WIDGET (self->speaker), FALSE);
- gtk_widget_set_sensitive (GTK_WIDGET (self->mute), FALSE);
- }
-}
-
-static void
-dispose (GObject *object)
-{
- CallsCallDisplay *self = CALLS_CALL_DISPLAY (object);
-
- stop_timeout (self);
- g_clear_object (&self->call);
- g_clear_object (&self->contact);
-
- G_OBJECT_CLASS (calls_call_display_parent_class)->dispose (object);
-}
-
-static void
-finalize (GObject *object)
-{
- CallsCallDisplay *self = CALLS_CALL_DISPLAY (object);
-
- g_timer_destroy (self->timer);
-
- G_OBJECT_CLASS (calls_call_display_parent_class)->finalize (object);
-}
-
-static void
-calls_call_display_class_init (CallsCallDisplayClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- object_class->constructed = constructed;
- object_class->get_property = get_property;
- object_class->set_property = set_property;
- object_class->dispose = dispose;
- object_class->finalize = finalize;
-
- props[PROP_CALL] =
- g_param_spec_object ("call",
- "Call",
- "The CallsCall which this display represents",
- CALLS_TYPE_CALL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
-
- g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
-
-
- gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Calls/ui/call-display.ui");
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, incoming_phone_call);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, primary_contact_info);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, secondary_contact_info);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, avatar);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, status);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, controls);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, gsm_controls);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, general_controls);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, speaker);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, mute);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, hang_up);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, answer);
- gtk_widget_class_bind_template_child (widget_class, CallsCallDisplay, dial_pad_revealer);
- gtk_widget_class_bind_template_callback (widget_class, answer_clicked_cb);
- gtk_widget_class_bind_template_callback (widget_class, hang_up_clicked_cb);
- gtk_widget_class_bind_template_callback (widget_class, hold_toggled_cb);
- gtk_widget_class_bind_template_callback (widget_class, mute_toggled_cb);
- gtk_widget_class_bind_template_callback (widget_class, speaker_toggled_cb);
- gtk_widget_class_bind_template_callback (widget_class, add_call_clicked_cb);
- gtk_widget_class_bind_template_callback (widget_class, hide_dial_pad_clicked_cb);
- gtk_widget_class_bind_template_callback (widget_class, block_delete_cb);
- gtk_widget_class_bind_template_callback (widget_class, insert_text_cb);
-}
-
-CallsCall *
-calls_call_display_get_call (CallsCallDisplay *self)
-{
- g_return_val_if_fail (CALLS_IS_CALL_DISPLAY (self), NULL);
-
- return self->call;
-}
diff --git a/src/calls-call-display.h b/src/calls-call-display.h
deleted file mode 100644
index e27b4c3..0000000
--- a/src/calls-call-display.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2018 Purism SPC
- *
- * This file is part of Calls.
- *
- * Calls is free software: you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Calls is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Calls. If not, see .
- *
- * Author: Bob Ham
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef CALLS_CALL_DISPLAY_H__
-#define CALLS_CALL_DISPLAY_H__
-
-#include "calls-call.h"
-
-#include
-
-G_BEGIN_DECLS
-
-#define CALLS_TYPE_CALL_DISPLAY (calls_call_display_get_type ())
-
-G_DECLARE_FINAL_TYPE (CallsCallDisplay, calls_call_display, CALLS, CALL_DISPLAY, GtkOverlay);
-
-CallsCallDisplay *calls_call_display_new (CallsCall *call);
-CallsCall *calls_call_display_get_call (CallsCallDisplay *self);
-
-G_END_DECLS
-
-#endif /* CALLS_CALL_DISPLAY_H__ */
diff --git a/src/calls.gresources.xml b/src/calls.gresources.xml
index 09a0cde..28158a0 100644
--- a/src/calls.gresources.xml
+++ b/src/calls.gresources.xml
@@ -2,7 +2,6 @@
main-window.ui
- call-display.ui
call-selector-item.ui
call-window.ui
encryption-indicator.ui
diff --git a/src/meson.build b/src/meson.build
index addbcf7..5a10cfe 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -88,7 +88,6 @@ calls_sources = files(['calls-message-source.c', 'calls-message-source.h',
'calls-ussd.c',
'calls-origin.c', 'calls-origin.h',
'calls-provider.c', 'calls-provider.h',
- 'calls-call-display.c', 'calls-call-display.h',
'calls-call-selector-item.c', 'calls-call-selector-item.h',
'calls-call-window.c', 'calls-call-window.h',
'calls-encryption-indicator.c', 'calls-encryption-indicator.h',
diff --git a/src/ui/call-display.ui b/src/ui/call-display.ui
deleted file mode 100644
index 729cbde..0000000
--- a/src/ui/call-display.ui
+++ /dev/null
@@ -1,487 +0,0 @@
-
-
-
-
-
- True
- False
-
-
-
-
-
- True
- False
- fill
- end
- True
- False
- slide-up
-
-
-
- True
- False
-
-
-
- True
- False
- vertical
- 300
- 6
- 12
- 10
-
-
- True
- False
- True
- 0.5
-
-
-
-
-
-
-
- True
- False
- 16
- 10
- center
- keypad_entry
-
-
-
-
- True
- True
- center
- 65
- True
- start
- none
- True
- 150
-
-
-
-
- Hide the dial pad
-
-
-
-
- True
- go-down-symbolic
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-