Fix refresh bug.
[profile/tv/apps/native/filebrowser.git] / src / main.cpp
1 /*
2
3  *
4  * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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 #include <string.h>
18 #include <app.h>
19 #include <Elementary.h>
20 #include <Eina.h>
21 #include "dbg.h"
22 #include "define.h"
23 #include "BaseApp.h"
24
25 #include <BaseView.h>
26 #include <ViewMgr.h>
27 #include <CtxPopup.h>
28 #include <InputHandler.h>
29
30 #include "FbBaseView.h"
31 #include <ExtNameInfo.h>
32 #include "FbContextView.h"
33
34 #include <SortMgr.h>
35
36 #define PARAM_SOURCE "source"
37 #define FBR_WIN_TITLE "File Browser"
38
39 Evas_Object *_add_win(const char *name)
40 {
41         Evas_Object *win;
42
43         //win = elm_win_add(NULL, name, ELM_WIN_BASIC);
44         win = elm_win_util_standard_add(name, NULL);
45         if (!win)
46                 return NULL;
47
48         elm_win_title_set(win, FBR_WIN_TITLE);
49         elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
50         elm_win_focus_highlight_style_set(win, FBR_STYLE_WIN_FOCUS);
51         elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK);
52         evas_object_show(win);
53
54         return win;
55 }
56
57 class CApp : public CBaseApp {
58
59         struct _appdata {
60                 const char   *name;
61                 Evas_Object  *win;
62                 char         *source;
63         }   ad;
64
65         CFbBaseView  *pFbBaseView;
66         CContextView *pContextView;
67 protected:
68
69         virtual bool OnCreate(void)
70         {
71                 Evas_Object *win;
72
73                 elm_theme_overlay_add(NULL, THEMEFILE);
74
75                 win = _add_win(ad.name);
76                 if (!win)
77                         return false;
78
79                 ad.win = win;
80                 
81                 elm_win_activate(ad.win);
82                 CViewMgr::Initialize(ad.win,NULL);
83                 CViewMgr* viewmgr = NULL;
84
85                 CSortMgr::Initialize();
86
87                 viewmgr = CViewMgr::GetInstance();
88                 if(!viewmgr) {
89                         _ERR("Fail to get viewmgr instance");
90                         CViewMgr::Finalize();
91                         return false;
92                 }
93
94                 pFbBaseView = new CFbBaseView(FBR_BASE_VIEW);
95                 if(!viewmgr->AddView(pFbBaseView))
96                 {
97                         _ERR("Fail to add pFbBaseView");
98                         CViewMgr::Finalize();
99                         return false;
100                 }
101
102                 pContextView = new CContextView(FBR_CONTEXT_VIEW);
103                 if(!viewmgr->AddView(pContextView))
104                 {
105                         _ERR("Fail to add pContextView");
106                         CViewMgr::Finalize();
107                         return false;
108                 }
109
110                 return true;
111         }
112
113         virtual void OnTerminate(void)
114         {
115                 CViewMgr::Finalize();
116
117                 if (ad.win)
118                         evas_object_del(ad.win);
119
120                 free(ad.source);
121         }
122
123         virtual void OnAppControl(app_control_h app_control)
124         {
125                 _DBG("  ******************* OnAppControl *********************");
126                 char *source;
127                 int r;
128                 
129                 r = app_control_get_extra_data(app_control, PARAM_SOURCE, &source);
130                 if (r != APP_CONTROL_ERROR_NONE)
131                         source = NULL;
132
133                 if (source) {
134                         ad.source = strdup(source);
135                         free(source);
136                 }
137                 else
138                 {
139                         ad.source = strdup("all");
140                 }
141         }
142
143         virtual void OnResume(void)
144         {
145                 _DBG("  ******************* OnService *********************");
146                 CViewMgr* viewmgr = NULL;
147
148                 viewmgr = CViewMgr::GetInstance();
149                 if(!viewmgr) {
150                         _ERR("Fail to get viewmgr instance");
151                         ASSERT(0);
152                         return ;
153                 }
154
155                 if (!viewmgr->PushView(FBR_BASE_VIEW, ad.source)) {
156                         _ERR("Fail to push view");
157                         ASSERT(0);
158                         return ;
159                 }
160         }
161
162 public:
163
164         virtual int Run(int argc, char **argv) {
165                 memset(&ad, 0x00, sizeof(_appdata));
166                 ad.name = PACKAGE;
167
168                 return CBaseApp::Run(argc, argv);
169         }
170 };
171
172 int main(int argc, char **argv)
173 {
174         CApp app;
175         app.Run(argc, argv);
176
177         return 0;
178 }