Add @feature tag.
[platform/framework/native/telephony.git] / inc / FTelCallManager.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18  * @file  FTelCallManager.h
19  * @brief This is the header file for the %CallManager class.
20  *
21  * This header file contains the declarations of the %CallManager class.
22  */
23 #ifndef _FTEL_CALL_MANAGER_H_
24 #define _FTEL_CALL_MANAGER_H_
25
26
27 #include <FBase.h>
28 #include <FTelTypes.h>
29 #include <FTelCallInfo.h>
30 #include <FTelITelephonyCallEventListener.h>
31 #include <FTelITelephonyCallForwardListener.h>
32
33
34 namespace Tizen { namespace Telephony
35 {
36 class _CallManagerImpl;
37
38 /**
39  * @class       CallManager
40  * @brief       This class provides methods to obtain information about the current call.
41  *
42  * @since       2.0
43  *
44  * The %CallManager class provides methods to obtain information about the current call type and its status.
45  *
46  * The following example demonstrates how to use the %CallManager class to obtain information about a call.
47  *
48  * @code
49  *
50  *      result
51  *      MyClass::GetCallInfo(void)
52  *      {
53  *              CallType callType = TYPE_UNDEFINED_CALL;
54  *              CallStatus callStatus = CALL_STATUS_UNDEFINED;
55  *
56  *              CallManager* pCallManager = new CallManager();
57  *
58  *              result r = pCallManager->Construct(*this);
59  *              if (IsFailed(r))
60  *              {
61  *                      delete pCallManager;
62  *                      return r;
63  *              }
64  *
65  *              callStatus = pCallManager->GetCurrentCallStatus();
66  *
67  *              if (callStatus == CALL_STATUS_COMMUNICATING)
68  *              {
69  *                      callType = pCallManager->GetCurrentCallType();
70  *              }
71  *
72  *              delete pCallManager;
73  *              return E_SUCCESS;
74  *      }
75  *
76  *      void
77  *      MyClass::OnTelephonyCallStatusChangedN(CallStatus  callStatus,CallInfo *  pCallInfo)
78  *      {
79  *              CallType        callType;
80  *              String          number;
81  *
82  *              if (callStatus == CALL_STATUS_RINGING)
83  *              {
84  *                      callType  = pCallInfo->GetCallType();
85  *                      number = pCallInfo->GetNumber();
86  *              }
87  *
88  *              delete pCallInfo;
89  *      }
90  *
91  *
92  * @endcode
93  */
94 class _OSP_EXPORT_ CallManager
95         : public Tizen::Base::Object
96 {
97 public:
98         /**
99      *   The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor.
100      *
101      * @since   2.0
102      */
103         CallManager(void);
104
105         /**
106      * This destructor overrides Tizen::Base::Object::~Object().
107      *
108      * @since   2.0
109      */
110         virtual ~CallManager(void);
111
112         /**
113      * Initializes a new instance of this class. @n
114      * This is the two phase construction.
115      *
116      * @since   2.0
117          * @feature %http://tizen.org/feature/network.telephony
118      * @return  An error code
119      * @exception   E_SUCCESS           The method is successful.
120      * @exception   E_SYSTEM            A system error has occurred.
121          * @exception  E_UNSUPPORTED_OPERATION   The Emulator or target device does not support the required feature. @b Since: @b 2.1
122          *                                                                               For more information, see <a href="../org.tizen.gettingstarted/html/tizen_overview/manifest_features.htm">Application Filtering</a>.
123          * @remarks     Before calling this method, check whether the feature is supported by %Tizen::System::SystemInfo::GetValue() methods.
124      */
125         result Construct(void);
126
127         /**
128      * Initializes a new instance of this class. @n
129      * This is the two phase construction.
130      *
131      * @since   2.0
132          * @feature %http://tizen.org/feature/network.telephony
133      * @return  An error code
134      * @param[in]   listener  The listener for change in status of a call
135      * @exception   E_SUCCESS The method is successful.
136      * @exception   E_SYSTEM  A system error has occurred.
137          * @exception   E_UNSUPPORTED_OPERATION  The Emulator or target device does not support the required feature. @b Since: @b 2.1
138          *                                                                               For more information, see <a href="../org.tizen.gettingstarted/html/tizen_overview/manifest_features.htm">Application Filtering</a>.
139          * @remarks     Before calling this method, check whether the feature is supported by %Tizen::System::SystemInfo::GetValue() methods.
140      */
141         result Construct(ITelephonyCallEventListener& listener);
142
143         /**
144      * Sets the listener that listens to the call forwarding request.
145      *
146      * @since   2.0
147          *
148      * @privlevel       platform
149      * @privilege   %http://tizen.org/privilege/callforward
150      *
151      * @return  An error code
152      * @param[in]   pListener           An ITelephonyCallForwardListener instance @n
153      *                                  The parameter can be set to @c null to remove listener.
154      * @exception   E_SUCCESS           The method is successful.
155      * @exception   E_PRIVILEGE_DENIED  The application does not have the privilege to call this method.
156      * @exception   E_SYSTEM            A system error has occurred.
157      */
158         result SetCallForwardListener(ITelephonyCallForwardListener* pListener);
159
160         /**
161      * Requests call forwarding with the specified number. @n
162      * The %RequestCallForward() method sends the request to the network, and receives the response asynchronously.
163      *
164      * @since   2.0
165          *
166      * @privlevel       platform
167      * @privilege   %http://tizen.org/privilege/callforward
168      *
169      * @return  An error code
170      * @param[in]   phoneNumber The phone number for call forwarding
171      * @exception   E_SUCCESS               The method is successful.
172      * @exception   E_INVALID_STATE         This instance is in an invalid state.
173      * @exception   E_INVALID_FORMAT        The specified phone number is in an invalid format.
174      * @exception   E_IN_PROGRESS           The previous request is in progress.
175      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
176      * @exception   E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
177      * @exception   E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
178      * @exception   E_SYSTEM                A system error has occurred.
179      * @remarks The call will be forwarded unconditionally. Voice call only. @n
180      *          The phone number can start with plus(+) and the remaining part must be number.
181      * @see ITelephonyCallForwardListener::OnTelephonyCallForwardResponseReceived()
182      */
183         result RequestCallForward(const Tizen::Base::String& phoneNumber);
184
185     /**
186      * Stops call forwarding.
187      *
188      * @since   2.0
189          *
190      * @privlevel       platform
191      * @privilege   %http://tizen.org/privilege/callforward
192      *
193      * @return  An error code
194      * @exception       E_SUCCESS               The method is successful.
195      * @exception       E_INVALID_STATE         This instance is in an invalid state.
196      * @exception       E_IN_PROGRESS           The previous request is in progress.
197      * @exception       E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
198      * @exception       E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
199      * @exception       E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
200      * @exception       E_SYSTEM                A system error has occurred.
201      * @see ITelephonyCallForwardListener::OnTelephonyCallForwardStopped()
202      */
203         result StopCallForward(void);
204
205         /**
206      * Gets the phone number to which the call must be forwarded.
207      *
208      * @since   2.0
209          *
210      * @privlevel       platform
211      * @privilege   %http://tizen.org/privilege/callforward
212      *
213      * @return  An error code
214      * @exception   E_SUCCESS               The method is successful.
215      * @exception   E_IN_PROGRESS           The previous request is in progress.
216      * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
217      * @exception   E_NETWORK_UNAVAILABLE   The operation has failed because the device is in the offline mode.
218      * @exception   E_SERVICE_UNAVAILABLE   The operation has failed because the device is out of the coverage area or in the emergency mode.
219      * @exception   E_SYSTEM                A system error has occurred.
220      * @see ITelephonyCallForwardListener::OnTelephonyCallForwardNumberReceived
221      */
222         result GetCallForwardNumber(void) const;
223
224         /**
225      * Gets the call type of the current call.
226      *
227      * @since                   2.0
228          *
229      * @return      The current call type, @n
230      *              else @c TYPE_UNDEFINED_CALL if the method fails
231      */
232         CallType GetCurrentCallType(void) const;
233
234         /**
235      * Gets the call status of the current call.
236      *
237      * @since                   2.0
238          *
239      * @return      The current call status, @n
240      *              else @c CALL_STATUS_UNDEFINED if the method fails
241      */
242         CallStatus GetCurrentCallStatus(void) const;
243
244 private:
245         /**
246      * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
247      *
248      * @param[in]       rhs     An instance of %CallManager
249      */
250         CallManager(const CallManager& rhs);
251
252         /**
253      * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
254      *
255      * @param[in]       rhs     An instance of %CallManager
256      */
257         CallManager& operator =(const CallManager& rhs);
258
259 private:
260         _CallManagerImpl* __pCallManagerImpl;
261
262         friend class _CallManagerImpl;
263 }; // CallManager
264
265 } } // Tizen::Telephony
266 #endif // _FTEL_CALL_MANAGER_H_