6ec1f74e35fcc6876d194a81b9cd0b1797fcb23c
[profile/ivi/hfdialer.git] / src / callitem.h
1 /*
2  * hfdialer - Hands Free Voice Call Manager
3  * Copyright (c) 2012, Intel Corporation.
4  *
5  * This program is licensed under the terms and conditions of the
6  * Apache License, version 2.0.  The full text of the Apache License is at
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  */
10
11 #ifndef CALLITEM_H
12 #define CALLITEM_H
13
14 #include <QString>
15 #include <QDateTime>
16 #include <QtDBus>
17 //#include <QMediaPlayer>
18 #include <MGConfItem>
19 #include "callproxy.h"
20
21     enum CallState {
22         STATE_NONE = 0,
23         STATE_ACTIVE,
24         STATE_HELD,
25         STATE_DIALING,
26         STATE_ALERTING,
27         STATE_INCOMING,
28         STATE_WAITING,
29         STATE_DISCONNECTED,
30         STATE_LAST,
31     };
32
33     enum CallDirection {
34         DIRECTION_NONE = 0,
35         DIRECTION_IN,
36         DIRECTION_OUT,
37         DIRECTION_MISSED,
38         DIRECTION_LAST,
39     };
40
41     enum CallDisconnectReason {
42         DISCONNECT_NONE = 0,
43         DISCONNECT_LOCAL,
44         DISCONNECT_REMOTE,
45         DISCONNECT_NETWORK,
46         DISCONNECT_LAST,
47     };
48
49 class CallItem: public QObject 
50 {
51     Q_OBJECT
52
53     Q_PROPERTY(QString path READ path WRITE setPath)
54     Q_PROPERTY(QString lineID READ lineID)
55     Q_PROPERTY(QString name READ name)
56     Q_PROPERTY(CallState state READ state)
57     Q_PROPERTY(CallDirection direction READ direction WRITE setDirection)
58     Q_PROPERTY(CallDisconnectReason reason READ reason)
59     Q_PROPERTY(int duration READ duration)
60     Q_PROPERTY(QDateTime startTime READ startTime)
61     Q_PROPERTY(bool multiparty READ multiparty)
62
63     //Q_PROPERTY(PeopleItem* peopleItem READ peopleItem WRITE setPeopleItem)
64     Q_PROPERTY(CallProxy* callProxy READ callProxy)
65
66 public:
67     CallItem(const QString path = QString(), QObject *parent = 0);
68     virtual ~CallItem();
69
70     QString path() const;
71     QString lineID() const;
72     QString name() const;
73     CallState state() const;
74     CallDirection direction() const;
75     CallDisconnectReason reason() const;
76     int duration() const;
77     QDateTime startTime() const;
78     //PeopleItem *peopleItem() const;
79     CallProxy *callProxy() const;
80     bool isValid();
81     bool isValid() const;
82     bool multiparty();
83
84 public Q_SLOTS:
85     void init();
86     //void setPeopleItem(PeopleItem *person);
87     bool setPath(QString path);  // Setting this will create the CallProxy
88     void setDirection(CallDirection direction);
89     void click();
90
91     void silenceRingtone();
92
93 Q_SIGNALS:
94     // TODO: handle tap-and-hold
95     void clicked();
96     void stateChanged();
97     void dataChanged();
98     void multipartyChanged();
99
100 private Q_SLOTS:
101     void callStateChanged();
102     void callDataChanged();
103     void callDisconnected(const QString &reason);
104 //    void ringtoneStatusChanged(QMediaPlayer::MediaStatus status);
105     void callMultipartyChanged();
106
107 private:
108     //QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &val);
109    // void populatePeopleItem();
110
111     QString               m_path;
112     //PeopleItem           *m_peopleItem;
113     //QMediaPlayer         *m_ringtone;
114     MGConfItem           *m_rtKey;
115     bool                  m_isconnected;
116     QString               m_ringtonefile;
117     CallProxy            *m_call;
118
119     Q_DISABLE_COPY(CallItem)
120 };
121
122 #endif // CALLITEM_H