Tizen 2.0 Release
[apps/osp/Phone.git] / inc / PhnSettingsAddNumberForm.h
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file                PhnSettingsAddNumberForm.h
19  * @brief               This is the header file for the %SettingsAddNumberForm class.
20  *
21  * This header file contains the declarations for %SettingsAddNumberForm class.
22  */
23 #ifndef _PHN_SETTINGS_ADD_NUMBER_FORM_H_
24 #define _PHN_SETTINGS_ADD_NUMBER_FORM_H_
25
26 #include <FBase.h>
27 #include <FUi.h>
28
29 /**
30  * @class SettingsAddNumberForm
31  * @brief This class presents a settings form based UI for call settings.
32  *
33  */
34 class SettingsAddNumberForm
35         : public Tizen::Ui::IActionEventListener
36         , public Tizen::Ui::Controls::Form
37         , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
38         , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
39         , public Tizen::Ui::Scenes::ISceneEventListener
40         , public Tizen::Ui::ITextEventListener
41         , public Tizen::Ui::IKeypadEventListener
42         , public Tizen::App::IAppControlResponseListener
43 {
44 public:
45         enum FormType
46         {
47                 FORMTYPE_NUMBER_TO_REJECT,
48                 FORMTYPE_AUTO_AREA_CODE,
49         };
50
51 public:
52         SettingsAddNumberForm(FormType formType);
53         virtual ~SettingsAddNumberForm(void);
54         void Initialize(void);
55
56 public:
57         virtual result OnInitializing(void);
58         virtual result OnTerminating(void);
59         //From IActionEventListener
60         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
61         //From ISceneEventListener
62         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
63         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
64
65         //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
66         virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
67         //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
68         virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
69         //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
70         virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
71
72         //From IGroupedTableViewItemProvider - Gets the total number of groups.
73         virtual int GetGroupCount(void);
74         //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
75         virtual int GetItemCount(int groupIndex);
76         //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
77         virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
78         //From IGroupedTableViewItemProvider - Deletes the specified group item.
79         virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
80         //From IGroupedTableViewItemProvider - Updates the specified group item.
81         virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
82         //From IGroupedTableViewItemProvider - Creates the specified item.
83         virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
84         //From IGroupedTableViewItemProvider - Deletes the specified item.
85         virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
86         //From IGroupedTableViewItemProvider - Updates the specified item.
87         virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
88         //From IGroupedTableViewItemProvider - Gets the default height of an group item.
89         virtual int GetDefaultGroupItemHeight(void);
90         //From IGroupedTableViewItemProvider - Gets the default height of an item.
91         virtual int GetDefaultItemHeight(void);
92
93         //From IKeypadEventListener
94         virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
95         virtual void OnKeypadOpened(Tizen::Ui::Control& source){};
96         virtual void OnKeypadClosed(Tizen::Ui::Control& source){};
97         virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){};
98         virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source){};
99
100         //Launches contacts app control for pick operation
101         void LaunchContactsAppControl(void);
102         //From IAppControlResponseListener
103         virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
104
105         // Called when a text is changed.
106         virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
107         // Called when a change made to the text is canceled.
108         virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
109
110 private:
111         // This function is used to collapse selective groups while form initialization only.
112         void CollapseSelectiveGroups(Tizen::Ui::Controls::GroupedTableView* pMainMenuTableView);
113         //Function is used to initialize header and headerItems.
114         void InitializeHeader(void);
115         //Function is used to initialize numeric edit field.
116         void InitializeNumberEditField(void);
117         //Initialize group table view.
118         result InitializeGroupedTableView(void);
119         // This function is used to create list items which come under "GROUP_CRITERIA_OPTIONS".
120         Tizen::Ui::Controls::TableViewItem* CreateCriteriaOptionsMenuItem(int itemIndex, int itemWidth);
121         // This function is used to create "GROUP_SELECT_CRITERIA".
122         Tizen::Ui::Controls::TableViewItem* CreateExpandableCriteriaItem(int itemWidth);
123         //function is used to set and change expand icon to expandable item based on its state.
124         void SetExpandIconToItem(Tizen::Ui::Controls::TableViewItem* pItem, bool isExpanded);
125         // This function is used to handle selection of 'GROUP_SELECT_CRITERIA'.
126         void ToggleGroupExpansion(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex);
127         // This function is used to handle selection of matching criteria.
128         void HandleMatchingCriteriaSelected(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);
129         //Function is used to go to previous form, based on current form state.
130         void GoBackToPreviousForm(void);
131         Tizen::Base::String FetchTextForCriteria(int itemIndex);
132         //Used to show error message box
133         void ShowDuplicateErrorMessageBox(Tizen::Base::String& message);
134
135 private:
136         //Main Group Items for group list view
137         enum CriteriaGroupId
138         {
139                 GROUP_SELECT_CRITERIA = 0,
140                 GROUP_CRITERIA_OPTIONS,
141                 GROUP_TOTALCOUNT,
142         };
143         //Items for 'GROUP_SELECT_CRITERIA'
144         enum GroupSelectCriteriaItems
145         {
146                 SELECTCRITERIA_MATCH_CRITERIA,
147                 SELECTCRITERIA_TOTALCOUNT, //No of options in "caller id" drop down menu
148         };
149         //Items for 'GROUP_CRITERIA_OPTIONS'
150         enum GroupCriteriaOptionsItems
151         {
152                 CRITERIAOPTIONS_EXACT,
153                 CRITERIAOPTIONS_STARTSWITH,
154                 CRITERIAOPTIONS_ENDSWITH,
155                 CRITERIAOPTIONS_INCLUDE,
156                 CRITERIAOPTIONS_TOTALCOUNT,
157         };
158         //used to store form state.
159         FormType __formType;
160         GroupCriteriaOptionsItems __selectedCriteria;
161         bool __isCriteriaOptionsMenuExpanded;
162         Tizen::Base::String __activePrefixDialingNumber;
163         bool __isContactAppControlLaunched;
164 };
165
166 #endif  //_PHN_SETTINGS_ADD_NUMBER_FORM_H_