summaryrefslogtreecommitdiffstats
path: root/src/pearson.h
blob: be8ac1cb39061cec5a0bb4e043b22cccf8da8ff7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * Copyright (C) 2018, 2019 "IoT.bzh"
 * Author: José Bollo <jose.bollo@iot.bzh>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

extern uint8_t pearson4(const char *text);
.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * Copyright (C) 2018 Konsulko Group
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef PBAP_H
#define PBAP_H

#include <QDebug>
#include <QObject>
#include <QJsonArray>
#include <QtQml/QQmlContext>

#include "messageengine.h"

class PhoneNumber : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString number READ number NOTIFY numberChanged)
    Q_PROPERTY(int type READ type NOTIFY typeChanged)

    public:
        explicit PhoneNumber(QString number, QString type);
        virtual ~PhoneNumber();

        QString number() {return m_number;};
        int type() {return m_type;};

        enum PhoneNumberType {
            UNKNOWN,
            VOICE,
            CELL,
            HOME,
            WORK,
            FAX,
        };
        Q_ENUM(PhoneNumberType)

    signals:
        void numberChanged();
        void typeChanged();

    private:
        QString m_number;
        int m_type;
        int stringToEnum(QString);
};

class Contact : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString name READ name NOTIFY nameChanged)
    Q_PROPERTY(QList<QObject *>numbers READ numbers NOTIFY numbersChanged)

    public:
        explicit Contact(QString name, QList<QObject *>numbers);
        virtual ~Contact();

        QString name() {return m_name;};
        QList<QObject *>numbers() {return m_numbers;};

    signals:
        void nameChanged();
        void numbersChanged();

    private:
        QString m_name;
        QList<QObject *>m_numbers;
};

class RecentCall : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QString name READ name NOTIFY nameChanged)
    Q_PROPERTY(QString number READ number NOTIFY numberChanged)
    Q_PROPERTY(QString datetime READ datetime NOTIFY datetimeChanged)
    Q_PROPERTY(int type READ type NOTIFY typeChanged)

    public:
        explicit RecentCall(QString name, QString number, QString datetime, QString type);
        virtual ~RecentCall();

        QString name() {return m_name;};
        QString number() {return m_number;};
        QString datetime() {return m_datetime;};
        int type() {return m_type;};

        enum RecentCallType {
            UNKNOWN,
            MISSED,
            RECEIVED,
            DIALED,
        };
        Q_ENUM(RecentCallType)

    signals:
        void nameChanged();
        void numberChanged();
        void datetimeChanged();
        void typeChanged();

    private:
        QString m_name;
        QString m_number;
        QString m_datetime;
        int m_type;
        int stringToEnum(QString);
};

class Pbap : public QObject
{
    Q_OBJECT

    public:
        explicit Pbap(QUrl &url, QQmlContext *context, QObject * parent = Q_NULLPTR);
        virtual ~Pbap();

        Q_INVOKABLE void refreshContacts(int max_entries);
        Q_INVOKABLE void refreshCalls(int max_entries);
        Q_INVOKABLE void search(QString number);

    signals:
        void searchResults(QString name);
        void statusChanged(bool connected);

    private:
        MessageEngine *m_mloop;
        QQmlContext *m_context;
        QList<QObject *>m_contacts;
        QList<QObject *>m_calls;
        void updateContacts(QString);
        void updateCalls(QString);
        void sendSearchResults(QJsonArray);

        // slots
        void onConnected();
        void onDisconnected();
        void onMessageReceived(MessageType, Message*);

        const QStringList events {
            "status",
        };
};

#endif // PBAP_H