LCOV - code coverage report
Current view: top level - src/plugins/sms - valent-sms-plugin.c (source / functions) Coverage Total Hit
Test: Code Coverage Lines: 98.1 % 52 51
Test Date: 2024-11-16 20:34:14 Functions: 100.0 % 9 9
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 62.5 % 24 15

             Branch data     Line data    Source code
       1                 :             : // SPDX-License-Identifier: GPL-3.0-or-later
       2                 :             : // SPDX-FileCopyrightText: Andy Holmes <andrew.g.r.holmes@gmail.com>
       3                 :             : 
       4                 :             : #define G_LOG_DOMAIN "valent-sms-plugin"
       5                 :             : 
       6                 :             : #include "config.h"
       7                 :             : 
       8                 :             : #include <gio/gio.h>
       9                 :             : #include <json-glib/json-glib.h>
      10                 :             : #include <valent.h>
      11                 :             : 
      12                 :             : #include "valent-sms-device.h"
      13                 :             : 
      14                 :             : #include "valent-sms-plugin.h"
      15                 :             : 
      16                 :             : 
      17                 :             : struct _ValentSmsPlugin
      18                 :             : {
      19                 :             :   ValentDevicePlugin     parent_instance;
      20                 :             : 
      21                 :             :   ValentMessagesAdapter *adapter;
      22                 :             : };
      23                 :             : 
      24   [ +  +  +  - ]:          21 : G_DEFINE_FINAL_TYPE (ValentSmsPlugin, valent_sms_plugin, VALENT_TYPE_DEVICE_PLUGIN)
      25                 :             : 
      26                 :             : /*
      27                 :             :  * GActions
      28                 :             :  */
      29                 :             : static void
      30                 :           1 : sync_action (GSimpleAction *action,
      31                 :             :              GVariant      *parameter,
      32                 :             :              gpointer       user_data)
      33                 :             : {
      34                 :           1 :   ValentSmsPlugin *self = VALENT_SMS_PLUGIN (user_data);
      35                 :           2 :   g_autoptr (JsonNode) packet = NULL;
      36                 :             : 
      37         [ +  - ]:           1 :   g_assert (VALENT_IS_SMS_PLUGIN (self));
      38                 :             : 
      39                 :           1 :   packet = valent_packet_new ("kdeconnect.sms.request_conversations");
      40         [ +  - ]:           1 :   valent_device_plugin_queue_packet (VALENT_DEVICE_PLUGIN (self), packet);
      41                 :           1 : }
      42                 :             : 
      43                 :             : static const GActionEntry actions[] = {
      44                 :             :     {"sync", sync_action, NULL, NULL, NULL},
      45                 :             : };
      46                 :             : 
      47                 :             : /*
      48                 :             :  * ValentDevicePlugin
      49                 :             :  */
      50                 :             : static void
      51                 :          10 : valent_sms_plugin_update_state (ValentDevicePlugin *plugin,
      52                 :             :                                 ValentDeviceState   state)
      53                 :             : {
      54                 :          10 :   gboolean available;
      55                 :             : 
      56         [ +  - ]:          10 :   g_assert (VALENT_IS_SMS_PLUGIN (plugin));
      57                 :             : 
      58                 :          10 :   available = (state & VALENT_DEVICE_STATE_CONNECTED) != 0 &&
      59                 :             :               (state & VALENT_DEVICE_STATE_PAIRED) != 0;
      60                 :             : 
      61                 :          10 :   valent_extension_toggle_actions (VALENT_EXTENSION (plugin), available);
      62                 :          10 : }
      63                 :             : 
      64                 :             : static void
      65                 :           7 : valent_sms_plugin_handle_packet (ValentDevicePlugin *plugin,
      66                 :             :                                  const char         *type,
      67                 :             :                                  JsonNode           *packet)
      68                 :             : {
      69                 :           7 :   ValentSmsPlugin *self = VALENT_SMS_PLUGIN (plugin);
      70                 :             : 
      71         [ +  - ]:           7 :   g_assert (VALENT_IS_SMS_PLUGIN (plugin));
      72         [ -  + ]:           7 :   g_assert (type != NULL);
      73         [ -  + ]:           7 :   g_assert (VALENT_IS_PACKET (packet));
      74                 :             : 
      75         [ +  + ]:           7 :   if (g_str_equal (type, "kdeconnect.sms.messages"))
      76                 :           6 :     valent_sms_device_handle_messages (VALENT_SMS_DEVICE (self->adapter), packet);
      77         [ +  - ]:           1 :   else if (g_str_equal (type, "kdeconnect.sms.attachment_file"))
      78                 :           1 :     valent_sms_device_handle_attachment_file (VALENT_SMS_DEVICE (self->adapter), packet);
      79                 :             :   else
      80                 :           0 :     g_assert_not_reached ();
      81                 :           7 : }
      82                 :             : 
      83                 :             : /*
      84                 :             :  * ValentObject
      85                 :             :  */
      86                 :             : static void
      87                 :           6 : valent_sms_plugin_destroy (ValentObject *object)
      88                 :             : {
      89                 :           6 :   ValentSmsPlugin *self = VALENT_SMS_PLUGIN (object);
      90                 :             : 
      91         [ +  + ]:           6 :   if (self->adapter != NULL)
      92                 :             :     {
      93                 :           3 :       valent_messages_unexport_adapter (valent_messages_get_default (),
      94                 :             :                                         self->adapter);
      95                 :           3 :       valent_object_destroy (VALENT_OBJECT (self->adapter));
      96         [ +  - ]:           3 :       g_clear_object (&self->adapter);
      97                 :             :     }
      98                 :             : 
      99                 :           6 :   VALENT_OBJECT_CLASS (valent_sms_plugin_parent_class)->destroy (object);
     100                 :           6 : }
     101                 :             : 
     102                 :             : /*
     103                 :             :  * GObject
     104                 :             :  */
     105                 :             : static void
     106                 :           3 : valent_sms_plugin_constructed (GObject *object)
     107                 :             : {
     108                 :           3 :   ValentSmsPlugin *self = VALENT_SMS_PLUGIN (object);
     109                 :           3 :   ValentDevice *device = NULL;
     110                 :             : 
     111                 :           3 :   G_OBJECT_CLASS (valent_sms_plugin_parent_class)->constructed (object);
     112                 :             : 
     113                 :           3 :   device = valent_extension_get_object (VALENT_EXTENSION (self));
     114                 :           3 :   self->adapter = valent_sms_device_new (device);
     115                 :           3 :   valent_messages_export_adapter (valent_messages_get_default (),
     116                 :             :                                   self->adapter);
     117                 :             : 
     118                 :           3 :   g_action_map_add_action_entries (G_ACTION_MAP (self),
     119                 :             :                                    actions,
     120                 :             :                                    G_N_ELEMENTS (actions),
     121                 :             :                                    self);
     122                 :           3 : }
     123                 :             : 
     124                 :             : static void
     125                 :           1 : valent_sms_plugin_class_init (ValentSmsPluginClass *klass)
     126                 :             : {
     127                 :           1 :   GObjectClass *object_class = G_OBJECT_CLASS (klass);
     128                 :           1 :   ValentObjectClass *vobject_class = VALENT_OBJECT_CLASS (klass);
     129                 :           1 :   ValentDevicePluginClass *plugin_class = VALENT_DEVICE_PLUGIN_CLASS (klass);
     130                 :             : 
     131                 :           1 :   object_class->constructed = valent_sms_plugin_constructed;
     132                 :             : 
     133                 :           1 :   vobject_class->destroy = valent_sms_plugin_destroy;
     134                 :             : 
     135                 :           1 :   plugin_class->handle_packet = valent_sms_plugin_handle_packet;
     136                 :           1 :   plugin_class->update_state = valent_sms_plugin_update_state;
     137                 :             : }
     138                 :             : 
     139                 :             : static void
     140                 :           3 : valent_sms_plugin_init (ValentSmsPlugin *self)
     141                 :             : {
     142                 :           3 : }
     143                 :             : 
        

Generated by: LCOV version 2.0-1