Skip to content
Snippets Groups Projects
Select Git revision
  • e364d6fac3495064a6868a28ed7aab2a51ee0053
  • master default
2 results

TelephonyHandler.vala

Blame
  • TelephonyHandler.vala 8.16 KiB
    /**
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License version 2 as
     * published by the Free Software Foundation.
     *
     * This program 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 this program; if not, write to the Free Software Foundation, Inc.,
     * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     *
     * AUTHORS
     * Maciek Borzecki <maciek.borzecki (at] gmail.com>
     * gyan000 <gyan000 (at] ijaz.fr>
     */
    using EOSConnect;
    using EOSConnect.Plugin;
    
    namespace MConnect {
    
        class TelephonyHandler : Object, PacketHandlerInterface {
    
            public signal void telephony_update ();
    
            public const string TELEPHONY = "kdeconnect.telephony";
            public const string SMS_REQUEST = "kdeconnect.sms.request";
    
            public DateTime last_sms_received_date_time { get; private set; }
            public string get_pkt_type () {
                return TELEPHONY;
            }
    
            private TelephonyHandler () {
            }
    
            public static TelephonyHandler instance () {
                return new TelephonyHandler ();
            }
    
            public void use_device (Device dev) {
                debug ("Use device %s for telephony.", dev.to_string ());
                dev.message.connect (this.message);
            }
    
            public void release_device (Device dev) {
                debug ("Release device %s", dev.to_string ());
                dev.message.disconnect (this.message);
            }
    
            public void message (Device device, Packet pkt) {
    
                if (pkt.pkt_type != TELEPHONY || device.is_capabality_activated (TELEPHONY) == false) {
                    return;
                }
    
                info ("Got telephony packet.");
                if (pkt.body.has_member ("phoneNumber") == false ||
                    pkt.body.has_member ("event") == false) {
                    return;
                }
    
                string id = pkt.id.to_string ();
                string event = pkt.body.get_string_member ("event");
                string message_body = pkt.body.get_string_member ("messageBody");
                string phone_thumbnail = pkt.body.get_string_member ("phoneThumbnail");
                string phone_number = pkt.body.get_string_member ("phoneNumber");
                string contact_name = pkt.body.has_member ("contactName") ? pkt.body.get_string_member ("contactName") : phone_number;