Tizen 2.0 Release
[apps/osp/Phone.git] / inc / PhnSettingsMoreOptionsForm.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                PhnSettingsMoreOptionsForm.h
19  * @brief               This is the header file for the %SettingsMoreOptionsForm class.
20  *
21  * This header file contains the declarations for %SettingsMoreOptionsForm class.
22  */
23 #ifndef _PHN_SETTINGS_MORE_OPTIONS_FORM_H_
24 #define _PHN_SETTINGS_MORE_OPTIONS_FORM_H_
25
26 #include <FBase.h>
27 #include <FUi.h>
28
29 class SettingsPresentationModel;
30
31 /**
32  * @class SettingsMoreOptionsForm
33  * @brief This class presents a additional settings form for call settings.
34  *
35  */
36 class SettingsMoreOptionsForm
37         : public Tizen::Ui::IActionEventListener
38         , public Tizen::Ui::Controls::Form
39         , public Tizen::Ui::Controls::IFormBackEventListener
40         , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
41         , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
42         , public Tizen::Ui::Scenes::ISceneEventListener
43 {
44 public:
45         SettingsMoreOptionsForm(void);
46         virtual ~SettingsMoreOptionsForm(void);
47         bool Initialize(void);
48
49 public:
50         virtual result OnInitializing(void);
51         virtual result OnTerminating(void);
52         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
53         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
54         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
55         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
56
57         // Function is used to initialise group table view.
58         result InitializeGroupedTableView(void);
59
60         //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
61         virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
62         //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
63         virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
64         //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
65         virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
66
67         //From IGroupedTableViewItemProvider - Gets the total number of groups.
68         virtual int GetGroupCount(void);
69         //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
70         virtual int GetItemCount(int groupIndex);
71         //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
72         virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
73         //From IGroupedTableViewItemProvider - Deletes the specified group item.
74         virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
75         //From IGroupedTableViewItemProvider - Updates the specified group item.
76         virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
77         //From IGroupedTableViewItemProvider - Creates the specified item.
78         virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
79         //From IGroupedTableViewItemProvider - Deletes the specified item.
80         virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
81         //From IGroupedTableViewItemProvider - Updates the specified item.
82         virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
83         //From IGroupedTableViewItemProvider - Gets the default height of an group item.
84         virtual int GetDefaultGroupItemHeight(void);
85         //From IGroupedTableViewItemProvider - Gets the default height of an item.
86         virtual int GetDefaultItemHeight(void);
87
88 private:
89         // This function is used to collapse selective groups while form initialization only.
90         void CollapseSelectiveGroups(Tizen::Ui::Controls::GroupedTableView* pMoreOptionsTableView);
91         // This function is used to create list items which come under "GROUP_CALLERID" & "GROUP_CALL_ALERT".
92         Tizen::Ui::Controls::TableViewItem* CreateExpandableItem(int groupIndex, int itemIndex, int itemWidth);
93         // This function is used to create list items which come under "GROUP_CALLERID_OPTIONS"
94         Tizen::Ui::Controls::TableViewItem* CreateCallerIdOptionsItem(int itemIndex, int itemWidth);
95         // This function is used to create list items which come under "GROUP_CALL_ALERT_OPTIONS"
96         Tizen::Ui::Controls::TableViewItem* CreateCallerAlertOptionsItem(int itemIndex, int itemWidth);
97         // This function is used to create list menu items
98         Tizen::Ui::Controls::TableViewItem* CreateSettingMenuItem(int groupIndex, int itemIndex, int itemWidth);
99         // Funtion is used to set icon to Expandable items based on its state.
100         void SetExpandIconToItem(Tizen::Ui::Controls::TableViewItem* pItem, bool isExpanded);
101         // Function is used to handle item selection for individual items.
102         void HandleSelectedSettings(int groupIndex, int itemIndex);
103         // Function is used to handle item selection for "GROUP_CALLERID_OPTIONS"
104         void HandleSelectedCallerIdOptions(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus state);
105         // Function is used to handle item selection for "GROUP_CALL_ALERT_OPTIONS"
106         void HandleSelectedCallAlertOptions(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus state);
107         Tizen::Base::String FetchSubTextForSelectedCallerId();
108         Tizen::Base::String FetchSubTextForSelectedCallerAlert();
109
110 private:
111         //Groups
112         enum MoreMenuGroupId
113         {
114                 GROUP_CALLERID,
115                 GROUP_CALLERID_OPTIONS,
116                 GROUP_CALL_SETTINGS,
117                 GROUP_CALL_SETTINGS_HLPTXT,
118                 GROUP_CALL_REMINDER,
119                 GROUP_CALL_REMINDER_HLPTXT,
120                 GROUP_CALL_ALERT,
121                 GROUP_CALL_ALERT_OPTIONS,
122                 GROUP_AREACODE,
123                 GROUP_AREACODE_HLPTXT,
124                 GROUP_TOTALCOUNT, //always the last element to get group count
125         };
126         //Items for 'GROUP_CALLERID'
127         enum GroupCallerIdItems
128         {
129                 CALLERID_CALLER_SETTING,
130                 CALLERID_TOTALCOUNT,
131         };
132         //Items for 'GROUP_CALLERID_OPTIONS'
133         enum GroupCallerIdOptionsItems
134         {
135                 CALLEROPTIONS_BY_NETWORK,
136                 CALLEROPTIONS_SHOW,
137                 CALLEROPTIONS_HIDE,
138                 CALLEROPTIONS_TOTALCOUNT, //No of options in "caller id" drop down menu
139         };
140         //Items for "GROUP_CALL_SETTINGS" group
141         enum CallSettingsItems
142         {
143                 CALLSETTINGS_CALL_BARRING,
144                 CALLSETTINGS_CALL_WAITING,
145                 CALLSETTINGS_TOTALCOUNT,
146         };
147         //Items for "GROUP_CALL_REMINDER" group
148         enum CallReminderItems
149         {
150                 CALLREMINDER_STATUS_TONES,
151                 CALLREMINDER_TOTALCOUNT,
152         };
153         //Item for "GROUP_CALL_ALERT"
154         enum GroupCallAlertItems
155         {
156                 CALLALERT_SETTING,
157                 CALLALERT_TOTALCOUNT,
158         };
159         //Option Items for "GROUP_CALL_ALERT_OPTIONS"
160         enum GroupCallAlertOptionsItems
161         {
162                 CALLALERT_OPTIONS_OFF,
163                 CALLALERT_OPTIONS_SOUND,
164                 CALLALERT_OPTIONS_VIBRATION,
165                 CALLALERT_OPTIONS_TOTALCOUNT,
166         };
167         //Item for "GROUP_AREACODE" group
168         enum GroupAreaCodeItems
169         {
170                 AREACODE_AUTO_AREA_CODE,
171                 AREACODE_TOTALCOUNT,
172         };
173
174         SettingsPresentationModel* __pSettingsPresentor;
175         bool __isCallerIdExpanded;
176         bool __isCallAlertExpanded;
177         Tizen::Base::String __autoAreaCode;
178 };
179
180 #endif  //_PHN_SETTINGS_MORE_OPTIONS_FORM_H_