a80d511513e29731f8c0c425edfcecc7b11b88c6
[apps/home/wrt-setting.git] / webapp-detail / permview.h
1 /*
2   * Copyright 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 #ifndef WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_
18 #define WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_
19
20 #include <Evas.h>
21
22 #include <dpl/wrt-dao-rw/widget_dao.h>
23 #include <dpl/scoped_ptr.h>
24
25 #include "view.h"
26 #include "feature.h"
27
28 namespace WebAppDetailSetting {
29
30 class PermView : public View
31 {
32     Evas_Object *m_parent;
33     WrtDB::AppType m_appType;
34     int m_appID;
35     DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
36     std::map<int, Feature> m_featureMap;
37     WrtDB::WidgetAccessInfoList m_accessInfo;
38
39     /* Smart callbacks */
40     static void onFeatureClicked(void *data,
41                                  Evas_Object *obj,
42                                  void *event_info);
43     static void onPermClicked(void *data, Evas_Object *obj, void *event_info);
44     static void onExpanded(void *data, Evas_Object *obj, void *event_info);
45     static void onContracted(void *data, Evas_Object *obj, void *event_info);
46
47     /* Genlist item callbacks */
48     static char *getPermStr(void *data, Evas_Object *obj, const char *part);
49     static Evas_Object *getPermRadio(void *data,
50                                      Evas_Object *obj,
51                                      const char *part);
52     static void delPermData(void *data, Evas_Object *obj);
53     static char *getFeatureTitle(void *data, Evas_Object *obj, const char *part);
54     static char *getFeatureStr(void *data, Evas_Object *obj, const char *part);
55     static char *getFeatureStrWithPerm(void *data,
56                                        Evas_Object *obj,
57                                        const char *part);
58     static void delFeatureData(void *data, Evas_Object *obj);
59     static char *getUriTitle(void *data, Evas_Object *obj, const char *part);
60     static char *getUriStr(void *data, Evas_Object *obj, const char *part);
61     static void delUriData(void *data, Evas_Object *obj);
62
63     void addFeatureTitle(Evas_Object *gl);
64     void addFeature(Evas_Object *gl, int idx);
65     void addFeatureWithPerm(Evas_Object *gl, int idx);
66     void addFeatureList(Evas_Object *gl);
67     void addUriTitle(Evas_Object *gl);
68     void addUri(Evas_Object *gl, DPL::String &uri);
69     void addAccessInfo(Evas_Object *gl);
70     Evas_Object *createContent(Evas_Object *parent);
71
72   public:
73     PermView(Evas_Object *parent, int appID);
74     ~PermView(void);
75
76     Evas_Object *loadView(void);
77
78 };
79
80 class FeatureData
81 {
82   public:
83     Feature *m_feature;
84     Evas_Object *m_rg;
85     int m_appID;
86
87     FeatureData(Feature *feature, int appID, Evas_Object *rg = NULL) :
88         m_feature(feature),
89         m_rg(rg),
90         m_appID(appID) { };
91 };
92
93 class PermData
94 {
95   public:
96     FeatureData *m_featureData;
97     ace_preference_t m_type;
98
99     PermData(FeatureData *featureData, ace_preference_t type) :
100         m_featureData(featureData),
101         m_type(type) { };
102 };
103
104 class UriData
105 {
106   public:
107     std::string m_uri;
108
109     UriData(std::string uri) :
110         m_uri(uri) { };
111 };
112
113 } /* WebAppDetailSetting */
114
115 #endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_PERMVIEW_H_ */