File Manager / src / view /
main-view.c
- /*
- * Copyright 2014 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- #include "view/main-view.h"
- #include "view/ctrl-bar-view.h"
- #include "view/genlist-widget.h"
- #include "view/navigator.h"
- #include "view/view.h"
- #include "utils/config.h"
- #include "utils/logger.h"
- #include "utils/ui-utils.h"
- #include "utils/common-utils.h"
- #include "utils/app-types.h"
- #include "model/fs-manager.h"
- #include "main-app.h"
- #define FM_MAIN_VIEW_TITLE "Storages"
- typedef struct {
- view_data view;
- genlist_widget *genlist_widget;
- ctrl_bar_widget *ctrl_widget;
- Eina_List *storage_list;
- } main_view_data;
- static int _main_view_fill(main_view_data *data);
- static int _main_view_create_widgets(main_view_data *data);
- static void _main_view_destroy(main_view_data *data);
- static void _main_view_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
- int main_view_add(app_data *app, Evas_Object *parent)
- {
- RETVM_IF(!app, RESULT_TYPE_INVALID_ARG, "App object is NULL");
- RETVM_IF(!parent, RESULT_TYPE_INVALID_ARG, "Parent object is NULL");
- app->status.is_mainview = EINA_TRUE;
- main_view_data *data = calloc(1, sizeof(main_view_data));
- RETVM_IF(!data, RESULT_TYPE_FAIL_ALLOCATE_MEMORY, "Fail allocate memory");
- data->view.app = app;
- data->view.navi = parent;
- data->storage_list = NULL;
- data->view.is_root = EINA_FALSE;
- data->view.navi_layout = ui_utils_layout_add(data->view.navi, _main_view_del_cb, data);
- if (!data->view.navi_layout) {
- ERR("Fail to create layout");
- _main_view_destroy(data);
- return RESULT_TYPE_FAIL;
- }
- elm_layout_file_set(data->view.navi_layout, ui_utils_get_resource(FM_LAYOUT_EDJ), "navi_layout");
- int result = navigator_add_view(data->view.app->navigator, FM_MAIN_VIEW_TITLE, &data->view);
- if (result != RESULT_TYPE_OK) {
- ERR("Fail to add view to naviframe");
- evas_object_del(data->view.navi_layout);
- return result;
- }
- result = _main_view_create_widgets(data);
- if (result != RESULT_TYPE_OK) {
- ERR("Fail to create widgets");
- evas_object_del(data->view.navi_layout);
- return result;
- }
- result = _main_view_fill(data);
- if (result != RESULT_TYPE_OK) {
- ERR("Fail to initialize main view");
- evas_object_del(data->view.navi_layout);
- return result;
- }
- elm_object_item_data_set(data->view.navi_item, data);
- return RESULT_TYPE_OK;
- }
- int main_view_update(Elm_Object_Item *navi_item)
- {
- RETVM_IF(!navi_item, RESULT_TYPE_INVALID_ARG, "View object is NULL");
- main_view_data *data = elm_object_item_data_get(navi_item);
- RETVM_IF(!data, RESULT_TYPE_INVALID_ARG, "Data is NULL");
- RETVM_IF(!data->genlist_widget, RESULT_TYPE_INVALID_ARG, "Genlist widget is NULL");
- common_util_clear_storage_list(&data->storage_list);
- genlist_widget_clear(data->genlist_widget);
- return _main_view_fill(data);
- }
- static int _main_view_create_widgets(main_view_data *data)
- {
- data->genlist_widget = genlist_widget_add((view_data *)data);
- RETVM_IF(!data->genlist_widget, RESULT_TYPE_INVALID_ARG, "Fail to create genlist widget");
- data->ctrl_widget = ctrl_bar_widget_add((view_data *)data);
- RETVM_IF(!data->ctrl_widget, RESULT_TYPE_INVALID_ARG, "Fail to create ctrl bar widget");
- return RESULT_TYPE_OK;
- }
- static int _main_view_fill(main_view_data *data)
- {
- int res = fs_manager_get_storage_list(data->view.app->manager, &data->storage_list);
- RETVM_IF(res != RESULT_TYPE_OK, res, "Fail to get storage list");
- genlist_widget_content_set(data->genlist_widget, data->storage_list);
- return RESULT_TYPE_OK;
- }
- static void _main_view_destroy(main_view_data *data)
- {
- if (data) {
- common_util_clear_storage_list(&data->storage_list);
- free(data);
- }
- }
- static void _main_view_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
- {
- _main_view_destroy(data);
- }