extern int db_count_version(sqlite3 *db);
extern int db_count_group(sqlite3 *db, int *count);
-extern long db_insert_group(sqlite3 *db, const char *title, int city1, int city2, int city3, int city4, int city5);
-extern int db_update_group(sqlite3 *db, int time, const char *title, int city1, int city2, int city3, int city4, int city5);
-extern int db_delete_group(sqlite3 *db, int time);
+extern int db_insert_group(sqlite3 *db, const char *title, int city1, int city2, int city3, int city4, int city5);
+extern int db_update_group(sqlite3 *db, int id, const char *title, int city1, int city2, int city3, int city4, int city5);
+extern int db_delete_group(sqlite3 *db, int id);
+extern int db_list_group(sqlite3 *db, Eina_List **group_list);
#endif // __ADVENTURE_DB_H__
struct _group_info_s {
char *title;
- long time;
- int city1;
- int city2;
- int city3;
- int city4;
- int city5;
+ int id;
+ int city[5]; /* FIXME */
};
typedef struct _group_info_s group_info_s;
-extern group_info_s *group_info_create(long time, const char *title, int city1, int city2, int city3, int city4, int city5);
+extern group_info_s *group_info_create(int time, const char *title, int city1, int city2, int city3, int city4, int city5);
extern void group_info_destroy(group_info_s *group_info);
#endif /* __MOMENTIC_GROUP_INFO_H__ */
#include <Elementary.h>
#include "main_view.h"
+#include "group_info.h"
struct _selecting_info_s {
int city;
extern Evas_Object *item_create_selecting(Evas_Object *parent, int city, struct tm *local_time, main_view_s *main_view_info);
extern void item_destroy_selecting(Evas_Object *item);
-extern Evas_Object *item_create_group(Evas_Object *parent, const char *title, main_view_s *main_view_info);
+extern Evas_Object *item_create_group(Evas_Object *parent, group_info_s *group_info, main_view_s *main_view_info);
extern void item_destroy_group(Evas_Object *item);
extern Evas_Object *item_create_padding(Evas_Object *parent);
extern void item_destroy_padding(Evas_Object *item);
-extern Evas_Object *item_create_best_time(Evas_Object *parent);
+extern Evas_Object *item_create_best_time(Evas_Object *parent, double start, double end);
extern void item_destroy_best_time(Evas_Object *item);
#endif /* __MOMENTIC_ITEM_H__ */
Evas_Object *searchlist;
Evas_Object *result_list;
Evas_Object *group_scroller;
+ Evas_Object *save_button;
moment_info_s *moment_info;
};
typedef struct _main_view_s main_view_s;
extern Evas_Object *main_view_create(Evas_Object *parent, moment_info_s *moment_info);
extern void main_view_destroy(Evas_Object *main_view);
+extern void main_view_click_add_btn_cb(void *data, Evas_Object *obj, void *event_info);
+extern void main_view_click_next_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
#endif /* __MAIN_VIEW_H__ */
/* DATA */
#define DATA_KEY_SELECTING "selecting"
#define DATA_KEY_RESULT "result"
+#define GROUP_INFO "group_info"
/* Return values */
typedef enum {
#define BEST_END_TIME (BEST_START_TIME + BEST_DURING_TIME)
#define ENTRY_WIDTH 446
-#define ENTRY_HEIGHT 38
+#define ENTRY_HEIGHT 45
#define ENTRY_RESULT_HEIGHT 400
#endif /* __MOMENT_CONF_H__ */
type: IMAGE;
description {
state: "default" 0.0;
- rel1 { relative: 0.0 0.0; to: "bg"; }
- rel2 { relative: 1.0 1.0; to: "bg"; offset: -1 -2; }
+ rel1 { relative: 0.0 0.0; to: "bg"; offset: 3 3;}
+ rel2 { relative: 1.0 1.0; to: "bg"; offset: -4 -5; }
image {
normal: "searching_bar.png";
- border: 5 5 15 15;
+ border: 15 15 15 15;
border_scale: 1;
}
visible: 1;
type: SWALLOW;
clip_to: "entry_clipper";
description {
- rel1 { relative: 0.05 0.0; to: "bg_img"; }
+ rel1 { relative: 0.05 0.0; to: "bg_img"; offset: 0 0; }
rel2 { relative: 0.0 1.0; to_x: "delete_event"; to_y: "bg_img"; }
align: 0.0 0.0;
fixed: 1 1;
#define ITEM_RESULT_WIDTH ITEM_SELECTING_WIDTH
#define ITEM_RESULT_HEIGHT ITEM_SELECTING_HEIGHT
-#define ITEM_GROUP_WIDTH 442
+#define ITEM_GROUP_WIDTH 300
#define ITEM_GROUP_HEIGHT 50
#define ITEM_PADDING_WIDTH 442
image: "other_location_blue_small.png" COMP;
image: "other_location_mint_small.png" COMP;
image: "delete_button.png" COMP;
+ image: "Group_list_delete.png" COMP;
}
collections {
rel1 { relative: 0.0 0.0; }
rel2 { relative: 1.0 1.0; }
min: ITEM_GROUP_WIDTH ITEM_GROUP_HEIGHT;
- color: 247 208 143 200;
- visible: 1;
+ //color: 247 208 143 200;
+ visible: 0;
}
}
part {
}
}
part {
+ name: "delete";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.5 0.5; to: "delete_event"; }
+ rel2 { relative: 0.5 0.5; to: "delete_event"; }
+ align: 0.5 0.5;
+ min: 20 20;
+ fixed: 1 1;
+ image {
+ normal: "Group_list_delete.png";
+ }
+ color: 255 255 255 255;
+ visible: 1;
+ }
+ description {
+ state: "press" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 100;
+ }
+ }
+ part {
+ name: "delete_event";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.9 0.5; to: "bg"; }
+ rel2 { relative: 0.9 0.5; to: "bg"; }
+ align: 0.5 0.5;
+ min: ITEM_GROUP_HEIGHT ITEM_GROUP_HEIGHT;
+ fixed: 1 1;
+ visible: 1;
+ }
+ }
+ part {
name: "title_event";
type: RECT;
mouse_events: 1;
description {
state: "default" 0.0;
rel1 { relative: 20/ITEM_GROUP_WIDTH 0.0; to: "bg"; }
- rel2 { relative: 400/ITEM_GROUP_WIDTH 1.0; to: "bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "delete"; to_y: "bg"; }
align: 0.5 0.5;
min: ITEM_GROUP_HEIGHT ITEM_GROUP_HEIGHT;
fixed: 1 1;
scale:1 ;
description { state: "default";
image.normal: "world_map.png";
- fixed: 1 1;
- min: 443 259;
- max: 443 259;
}
}
}
rel2.to: "map_base";
rel1.relative: 0.0 0.27;
rel2.relative: 1.0 0.90;
+ min: 443 259;
+ max: 443 259;
+ align: 0.5 0.5;
fixed: 1 1;
}
description { state: "next";
description { state: "default";
rel1.relative: -0.68 0;
rel2.relative: 0 1;
- color: 255 200 0 210;
+ color: 255 180 50 210;
}
description { state: "visible";
inherit: "default";
rel2.relative: 0.68 1;
}
}
+ part { name: "drawer_title";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "drawer_bg";
+ rel2.to: "drawer_bg";
+ rel2.relative: 1 0.1;
+ text.text: "My Group List";
+ text.size: 30;
+ text.font: "Tizen:style="Bold"";
+ text.text_class: "tizen";
+ text.align: 0.1 0.25;
+ text.min: 0 1;
+ fixed: 0 1;
+ }
+ }
+ part { name: "drawer_line";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "drawer_title";
+ rel2.to: "drawer_title";
+ rel1.relative: 0.05 0.65;
+ rel2.relative: 0.95 0.65;
+ align: 0.5 0;
+ min: 0 3;
+ fixed: 0 1;
+ }
+ }
part { name: "drawer_content";
type: SWALLOW;
scale: 1;
description { state: "default";
- rel1.to: "drawer_bg";
+ rel1.to: "drawer_line";
rel2.to: "drawer_bg";
- rel1.relative: 0.05 0.01;
- rel2.relative: 0.85 0.99;
+ rel1.relative: 0 1;
+ rel2.relative: 0.95 0.99;
+ rel1.offset: 0 10;
+ rel2.offset: -1 -11;
+ }
+ }
+ part { name: "drawer_no_result";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.to: "drawer_line";
+ rel2.to: "drawer_line";
+ rel1.relative: 0 1;
+ rel1.offset: 10 15;
+ rel2.relative: 1 1;
+ text.text: "No Groups";
+ text.size: 20;
+ text.font: "Tizen:style=Regular";
+ text.text_class: "tizen";
+ text.align: 0 0;
+ text.min: 0 1;
+ align: 0 0;
+ fixed: 0 1;
+ }
+ description { state: "hide" 0.0;
+ visible:0;
}
}
part { name: "drawer_btn";
align: 0.5 0;
fixed: 1 1;
color: 255 255 255 0;
+ visible: 0;
}
description { state: "visible";
inherit: "default";
color: 255 255 255 255;
+ visible: 1;
}
}
part { name: "searchbar";
}
description { state:"next";
inherit: "default";
+ min: 0 100;
+ align: 0 1;
}
}
part { name: "save_group_bg";
color: 0 0 0 0;
visible: 0;
}
+ description{ state: "next";
+ inherit: "default";
+ }
description{ state:"activated";
color: 0 0 0 126;
visible: 1;
description { state: "default";
rel1.to: "bottom_part";
rel2.to: "bottom_part";
- rel1.relative: 0.25 0.5;
- rel2.relative: 0.25 0.5;
+ rel1.relative: 0.5 1;
+ rel2.relative: 0.5 1;
fixed: 1 1;
- min: 150 50;
+ min: 150 55;
+ align: 0.5 0;
+ color: 255 0 0 255;
+ }
+ description { state: "next";
+ inherit: "default";
+ rel1.relative: 0.5 0.5;
+ rel2.relative: 0.5 0.5;
align: 0.5 0.5;
}
description { state: "activated";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
- min: 350 350;
- fixed: 1 1;
align: 0.5 0.5;
- }
+ min: 350 175;
+ fixed: 1 1;
+ }
}
part { name: "new_event_btn";
type: SWALLOW;
description { state: "default";
rel1.to: "bottom_part";
rel2.to: "bottom_part";
- rel1.relative: 0.75 0.5;
- rel2.relative: 0.75 0.5;
+ rel1.relative: 0.75 1;
+ rel2.relative: 0.75 1;
fixed: 1 1;
- min: 150 50;
+ min: 150 55;
align: 0.5 0;
+ color: 255 0 0 255;
}
+ description { state: "next";
+ inherit: "default";
+ rel1.relative: 0.75 0.5;
+ rel2.relative: 0.75 0.5;
+ align: 0.5 0.5;
+ }
}
}
programs {
target: "map";
target: "city_list";
target: "bottom_part";
+ target: "save_group_btn";
+ target: "new_event_btn";
transition: DECELERATE 0.75;
after: "page_back_1b";
}
//page 0 back end
+//description1 begin
+ program { //name: "go_page1a";
+ signal: "momentic,state,go_result_page";
+ after: "go_page1a";
+ }
+
+
+
//page 1 begin
program { name: "go_page1a";
}
//search bar end
-
//description2 begin
program { name: "show_add_description2";
signal: "momentic,state,add_description,show";
target: "map_base";
target: "map";
target: "bottom_part";
+ target: "save_group_btn";
+ target: "new_event_btn";
transition: DECELERATE 0.75;
after: "go_page2c";
}
run_program(PROGRAM:"drawer_hide");
}
}
+ program { name: "drawer_no_result_hide";
+ signal: "momentic,state,drawer,noresult,hide";
+ action: STATE_SET "hide" 0.0;
+ target: "drawer_no_result";
+ }
+ program { name: "drawer_no_result_show";
+ signal: "momentic,state,drawer,noresult,show";
+ action: STATE_SET "default" 0.0;
+ target: "drawer_no_result";
+ }
//drawer end
}
program { name: "save_group_deactivate";
signal: "momentic,state,save_group,deactivate";
- action: STATE_SET "default" 0.0;
+ action: STATE_SET "next" 0.0;
target: "save_group_btn";
target: "save_group_bg";
transition: DECELERATE 0.5;
+collections {
+ base_scale: 1.8;
+ styles {
+ style { name: "text_style";
+ base: "font=Tizen font_size=18 text_class=tizen color=#ffffff valign=0.5 align=center";
+ }
+ }
+ images {
+ image: "popup_button.png" COMP;
+ }
+ group { name: "set_as_new_event";
+ parts {
+ part { name: "base";
+ scale: 1;
+ type: RECT;
+ description { state: "default";
+ rel1 { relative: 0.5 0.5; }
+ rel2 { relative: 0.5 0.5; }
+ min: 150 55;
+ fixed: 1 1;
+ color: 255 255 255 0;
+ }
+ }
+ part { name: "bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ image.normal: "popup_button.png";
+ image.border: 3 3 3 3;
+ image.border_scale: 1;
+ }
+ }
+ part { name: "text";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ rel1.relative: 0 0;
+ rel2.relative: 1 0;
+ fixed: 1 1;
+ align: 0.5 0;
+ text {
+ style: "text_style";
+ text: "Set as new</br>event";
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+ group { name: "save_as_group";
+ parts {
+ part { name: "base";
+ scale: 1;
+ type: RECT;
+ description { state: "default";
+ rel1 { relative: 0.5 0.5; }
+ rel2 { relative: 0.5 0.5; }
+ min: 150 55;
+ fixed: 1 1;
+ color: 255 255 255 0;
+ }
+ description { state: "activated";
+ inherit: "default";
+ rel1 { relative: 0.5 0.5; }
+ rel2 { relative: 0.5 0.5; }
+ min: 350 175;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "bg";
+ type: IMAGE;
+ scale: 1;
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ image.normal: "popup_button.png";
+ image.border: 3 3 3 3;
+ image.border_scale: 1;
+ }
+ }
+ part { name: "text";
+ type: TEXTBLOCK;
+ scale: 1;
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ rel1.relative: 0 0;
+ rel1.offset: 0 3;
+ rel2.relative: 1 0;
+ fixed: 1 1;
+ align: 0.5 0;
+ text {
+ style: "text_style";
+ text: "Save as</br>group";
+ min: 0 1;
+ }
+ color: 255 255 255 255;
+ }
+ description { state: "activated";
+ inherit: "default";
+ color: 255 255 255 0;
+ }
+ }
+ part { name: "text2";
+ type: TEXTBLOCK;
+ scale: 1;
+ clip_to: "base";
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ rel1.relative: 0 0;
+ rel2.relative: 1 0;
+ fixed: 1 1;
+ align: 0.5 0;
+ text {
+ style: "text_style";
+ text: "Save as group";
+ min: 0 1;
+ }
+ }
+ }
+ part { name: "line";
+ type: RECT;
+ clip_to: "base";
+ description { state: "default";
+ rel1 { to: "text2"; relative: 0.1 1; }
+ rel2 { to: "text2"; relative: 0.9 1; }
+ min: 0 1;
+ fixed: 0 1;
+ }
+ }
+ part { name: "entry";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "base";
+ description { state: "default";
+ rel1 { to: "text2"; relative: 0.1 1; offset: 0 10; }
+ rel2 { to: "text2"; relative: 0.9 1; }
+ align: 0.5 0;
+ min: 0 50;
+ }
+ }
+ part { name: "cancel_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "base";
+ description { state: "default";
+ rel1 { to: "base"; relative: 0.25 0.9; }
+ rel2 { to: "base"; relative: 0.25 0.9; }
+ align: 0.5 1;
+ min: 100 40;
+ fixed: 1 1;
+ }
+ }
+ part { name: "create_btn";
+ type: SWALLOW;
+ scale: 1;
+ clip_to: "base";
+ description { state: "default";
+ rel1 { to: "base"; relative: 0.75 0.9; }
+ rel2 { to: "base"; relative: 0.75 0.9; }
+ align: 0.5 1;
+ min: 100 40;
+ fixed: 1 1;
+ }
+ }
+ part { name: "button";
+ type: SWALLOW;
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ }
+ description { state: "activated";
+ inherit: "default";
+ visible: 0;
+ }
+ }
+ part { name: "effect";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default";
+ rel1.to: "base";
+ rel2.to: "base";
+ color:255 255 255 0;
+ }
+ description { state: "clicked";
+ inherit: "default";
+ color:255 255 255 127;
+ }
+ }
+ }
+ programs {
+ program { name: "activate";
+ signal: "momentic,state,activate";
+ action: STATE_SET "activated" 0.0;
+ target: "base";
+ target: "text";
+ target: "button";
+ transition: DECELERATE 1;
+ }
+ program { name: "deactivate";
+ signal: "momentic,state,deactivate";
+ action: STATE_SET "default" 0.0;
+ target: "base";
+ target: "text";
+ target: "button";
+ transition: DECELERATE 1;
+ }
+ program { name: "down";
+ signal: "mouse,down,1";
+ source: "effect";
+ action: STATE_SET "clicked" 0.0;
+ target: "effect";
+ transition: DECELERATE 0.25;
+ }
+ program { name: "up";
+ signal: "mouse,up,1";
+ source: "effect";
+ action: STATE_SET "default" 0.0;
+ target: "effect";
+ transition: DECELERATE 0.25;
+ }
+ }
+ }
+}
#include <string.h>
#include <unistd.h>
#include <app_common.h>
-#include <time.h>
#include "db.h"
#include "log.h"
snprintf(db_file, sizeof(db_file), "%s/%s", path, APP_DB_FILE);
free(path);
+ _D("db_file : %s", db_file);
ret = sqlite3_open(db_file, &db);
if (SQLITE_OK != ret) {
_E("%s", sqlite3_errmsg(db));
ret = sqlite3_step(stmt);
switch (ret) {
case SQLITE_ROW: /* SQLITE_ROW : 100 */
- return APPL_ERROR_NONE;
+ return SQLITE_ROW;
case SQLITE_DONE: /* SQLITE_ROW : 101 */
- return APPL_ERROR_NO_DATA;
+ return SQLITE_DONE;
default:
_E("%s", sqlite3_errmsg(db));
- return APPL_ERROR_FAIL;
+ return -1;
}
- return APPL_ERROR_NONE;
+ return -1;
}
HAPI int db_create_table(sqlite3 *db)
{
const char *TABLES[] = {
- "CREATE TABLE IF NOT EXIST db_checksum (version INT);",
- "CREATE TABLE IF NOT EXIST group ("
- "time INTEGER PRIMARY KEY"
+ "CREATE TABLE IF NOT EXISTS db_checksum (version INT);",
+ "CREATE TABLE IF NOT EXISTS gr ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT"
", title TEXT"
- ", city1 INT"
- ", city2 INT"
- ", city3 INT"
- ", city4 INT"
- ", city5 INT"
+ ", city1 INTEGER"
+ ", city2 INTEGER"
+ ", city3 INTEGER"
+ ", city4 INTEGER"
+ ", city5 INTEGER"
");",
};
int count = 0;
HAPI int db_drop_table(sqlite3 *db)
{
const char *TABLES[] = {
- "DROP TABLE IF EXIST db_checksum;",
- "DROP TABLE IF EXIST group;",
+ "DROP TABLE IF EXISTS db_checksum;",
+ "DROP TABLE IF EXISTS gr;",
};
int count = 0;
int i = 0;
HAPI int db_count_group(sqlite3 *db, int *count)
{
- const char *const QUERY_SYNTAX = "SELECT COUNT(*) FROM group;";
+ const char *const QUERY_SYNTAX = "SELECT COUNT(*) FROM gr;";
sqlite3_stmt *st = NULL;
st = db_prepare(db, QUERY_SYNTAX);
-HAPI long db_insert_group(sqlite3 *db, const char *title, int city1, int city2, int city3, int city4, int city5)
+HAPI int db_max_group(sqlite3 *db, int *max)
+{
+ const char *const QUERY_SYNTAX = "SELECT MAX(id) FROM gr;";
+ sqlite3_stmt *st = NULL;
+
+ st = db_prepare(db, QUERY_SYNTAX);
+ retv_if(!st, APPL_ERROR_FAIL);
+
+ goto_if(db_next(db, st) == -1, error);
+
+ *max = db_get_int(st, 0);
+
+ db_reset(db, st);
+ db_finalize(db, st);
+
+ /* keep this DB opened */
+
+ return APPL_ERROR_NONE;
+
+error:
+ db_finalize(db, st);
+ return APPL_ERROR_FAIL;
+}
+
+
+
+HAPI int db_insert_group(sqlite3 *db, const char *title, int city1, int city2, int city3, int city4, int city5)
{
- const char *const QUERY_INSERT = "INSERT INTO group (time, title, city1, city2, city3, city4, city5) VALUES (?, ?, ?, ?, ?, ?, ?);";
+ const char *const QUERY_INSERT = "INSERT INTO gr (id, title, city1, city2, city3, city4, city5) VALUES (?, ?, ?, ?, ?, ?, ?);";
sqlite3_stmt *st = NULL;
- time_t t;
+ int max = 0;
- time(&t);
+ db_max_group(db, &max);
+ max++;
st = db_prepare(db, QUERY_INSERT);
- retv_if(!st, 0l);
+ retv_if(!st, -1);
- goto_if(db_bind_long(db, st, 1, (long) t) != APPL_ERROR_NONE, error);
+ goto_if(db_bind_int(db, st, 1, max) != APPL_ERROR_NONE, error);
goto_if(db_bind_str(db, st, 2, title) != APPL_ERROR_NONE, error);
goto_if(db_bind_int(db, st, 3, city1) != APPL_ERROR_NONE, error);
goto_if(db_bind_int(db, st, 4, city2) != APPL_ERROR_NONE, error);
/* keep the sticker panel DB opened */
- return t;
+ return max;
error:
db_finalize(db, st);
- return 0l;
+ return -1;
}
-HAPI int db_update_group(sqlite3 *db, int time, const char *title, int city1, int city2, int city3, int city4, int city5)
+HAPI int db_update_group(sqlite3 *db, int id, const char *title, int city1, int city2, int city3, int city4, int city5)
{
- const char *const QUERY_UPDATE = "UPDATE group SET title = ?, city1 = ?, city2 = ?, city3 = ?, city4 = ?, city5 = ? WHERE time = ?;";
+ const char *const QUERY_UPDATE = "UPDATE gr SET title = ?, city1 = ?, city2 = ?, city3 = ?, city4 = ?, city5 = ? WHERE id = ?;";
sqlite3_stmt *st = NULL;
st = db_prepare(db, QUERY_UPDATE);
goto_if(db_bind_int(db, st, 4, city3) != APPL_ERROR_NONE, error);
goto_if(db_bind_int(db, st, 5, city4) != APPL_ERROR_NONE, error);
goto_if(db_bind_int(db, st, 6, city5) != APPL_ERROR_NONE, error);
- goto_if(db_bind_int(db, st, 7, time) != APPL_ERROR_NONE, error);
+ goto_if(db_bind_int(db, st, 7, id) != APPL_ERROR_NONE, error);
goto_if(db_next(db, st) == -1, error);
db_reset(db, st);
-HAPI int db_delete_group(sqlite3 *db, int time)
+HAPI int db_delete_group(sqlite3 *db, int id)
{
- const char *const QUERY_SYNTAX = "DELETE FROM group WHERE time = ?;";
+ const char *const QUERY_SYNTAX = "DELETE FROM gr WHERE id = ?;";
sqlite3_stmt *st = NULL;
st = db_prepare(db, QUERY_SYNTAX);
retv_if(!st, APPL_ERROR_FAIL);
- goto_if(db_bind_int(db, st, 1, time) != APPL_ERROR_NONE, error);
+ goto_if(db_bind_int(db, st, 1, id) != APPL_ERROR_NONE, error);
goto_if(db_next(db, st) == -1, error);
db_reset(db, st);
-HAPI int db_list_group(sqlite3 *db, Eina_List **group_list, int limit)
+HAPI int db_list_group(sqlite3 *db, Eina_List **group_list)
{
- const char *const QUERY_LIST = "SELECT time, title, city1, city2, city3, city4, city5 FROM group ORDER BY time ASC";
+ const char *const QUERY_LIST = "SELECT id, title, city1, city2, city3, city4, city5 FROM gr ORDER BY id ASC";
sqlite3_stmt *st = NULL;
group_info_s *group_info = NULL;
retv_if(!st, APPL_ERROR_FAIL);
do {
- long time = 0l;
+ int id = 0;
const char *title = NULL;
int city1 = 0, city2 = 0, city3 = 0, city4 = 0, city5 = 0;
ret = db_next(db, st);
goto error;
}
- time = db_get_long(st, 0);
+ id = db_get_int(st, 0);
title = db_get_str(st, 1);
city1 = db_get_int(st, 2);
city2 = db_get_int(st, 3);
city4 = db_get_int(st, 5);
city5 = db_get_int(st, 6);
- group_info = group_info_create(time, title, city1, city2, city3, city4, city5);
+ group_info = group_info_create(id, title, city1, city2, city3, city4, city5);
continue_if(!group_info);
*group_list = eina_list_append(*group_list, group_info);
#include <stdlib.h>
#include "log.h"
+#include "group_info.h"
-struct _group_info_s {
- char *title;
- int time;
- int city1;
- int city2;
- int city3;
- int city4;
- int city5;
-};
-typedef struct _group_info_s group_info_s;
-
-group_info_s *group_info_create(long time, const char *title, int city1, int city2, int city3, int city4, int city5)
+group_info_s *group_info_create(int id, const char *title, int city1, int city2, int city3, int city4, int city5)
{
group_info_s *group_info = NULL;
group_info = calloc(1, sizeof(group_info_s));
retv_if(!group_info, NULL);
- group_info->time = time;
+ group_info->id = id;
if (title)
group_info->title = strdup(title);
- group_info->city1 = city1;
- group_info->city2 = city2;
- group_info->city3 = city3;
- group_info->city4 = city4;
- group_info->city5 = city5;
+ group_info->city[0] = city1;
+ group_info->city[1] = city2;
+ group_info->city[2] = city3;
+ group_info->city[3] = city4;
+ group_info->city[4] = city5;
+ _D("HELLO, %s, %d:%d:%d", title, city1, city2, city3);
return group_info;
}
#include "scroller.h"
#include "popup.h"
#include "map.h"
+#include "notification.h"
+#include "group_info.h"
+#include "db.h"
#define _EDJ(o) elm_layout_edje_get(o)
retv_if(!local_time, 0.0f);
timezone = (double) (local_time->tm_gmtoff / 3600l);
-_D("HELLO, gmtoff:%d", local_time->tm_gmtoff / 3600l);
return timezone;
}
{
Evas_Object *item = obj;
Evas_Object *selecting_item = NULL;
+ Evas_Object *entry = NULL;
main_view_s *main_view_info = data;
struct tm *local_time = NULL;
int city = 0;
count = scroller_count_item(main_view_info->city_list);
if (count + 1 > MAXIMUM_SELECTED_CITY) {
- Evas_Object *popup = NULL;
_D("Cities selected are limited.");
- popup = popup_create_text(main_view_info->main_view, "Maximum number of cities reached");
- ret_if(!popup);
+ notification_status_message_post("Maximum number of cities reached");
return;
}
elm_object_signal_emit(main_view_info->main_view, "momentic,state,add_description,show", "");
elm_object_signal_emit(main_view_info->main_view, "momentic,state,next_btn,hide", "");
}
+
+ entry = elm_object_part_content_get(main_view_info->searchbar, "entry");
+ elm_entry_entry_set(entry, "");
+ elm_object_focus_set(main_view_info->next_btn, EINA_TRUE);
}
Evas_Object *item_create_typing(Evas_Object *parent, int city, main_view_s *main_view_info)
for (i = 0; i < MAXIMUM_SELECTED_CITY; i++) {
if (color_index[i]) continue;
- _D("HELLO, i : %d, city : %d", i, city);
if (EINA_FALSE == add_city_to_map(i, &city_info[city])) {
_E("cannot add a city to the map");
- return NULL;
+ break;
}
break;
}
Evas_Object *item = obj;
Evas_Object *selecting_item = NULL;
main_view_s *main_view_info = data;
+ group_info_s *group_info = NULL;
struct tm *local_time = NULL;
int city = 0;
- int count = 0;
time_t t = 0;
+ int i = 0;
ret_if(!item);
ret_if(!main_view_info);
_D("An item is selected");
+ scroller_clear_item(main_view_info->city_list);
+
+ group_info = evas_object_data_get(item, GROUP_INFO);
+ ret_if(!group_info);
+
time(&t);
local_time = localtime(&t);
- count = scroller_count_item(main_view_info->city_list);
- if (count >= MAXIMUM_SELECTED_CITY) {
- Evas_Object *popup = NULL;
- _D("Cities selected are limited.");
- popup = popup_create_text(main_view_info->main_view, "Maximum number of cities reached");
- elm_object_part_content_set(main_view_info->main_view, "popup", popup);
- return;
+ for (i = 0; i < MAXIMUM_SELECTED_CITY; i++) {
+ if (!group_info->city[i]) {
+ _D("No city anymore");
+ break;
+ }
+ selecting_item = item_create_selecting(main_view_info->city_list, group_info->city[i], local_time, main_view_info);
+ break_if(!selecting_item);
+ scroller_append_item(main_view_info->city_list, selecting_item);
}
- city = (int) evas_object_data_get(item, DATA_KEY_CITY);
- selecting_item = item_create_selecting(main_view_info->city_list, city, local_time, main_view_info);
- ret_if(!selecting_item);
+ /* Hide texts */
+ //elm_object_signal_emit(main_view_info->main_view, "momentic,state,go_result_page", "");
+ //elm_object_signal_emit(main_view_info->main_view, "momentic,state,add_description,hide", "");
+ //elm_object_signal_emit(main_view_info->main_view, "momentic,state,drawer,hide", "");
+ //elm_object_signal_emit(main_view_info->main_view, "momentic,state,page2", "");
- scroller_append_item(main_view_info->city_list, selecting_item);
+ //main_view_click_add_btn_cb(main_view_info, NULL, NULL);
+ //main_view_click_next_btn_cb(main_view_info, NULL, NULL);
}
-Evas_Object *item_create_group(Evas_Object *parent, const char *title, main_view_s *main_view_info)
+static void _delete_group_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ main_view_s *main_view_info = NULL;
+ Evas_Object *item = data;
+ group_info_s *group_info = NULL;
+ int count = 0;
+
+ _D("clicked, delete the group item");
+
+ ret_if(!item);
+
+ main_view_info = evas_object_data_get(item, DATA_KEY_MAIN_VIEW_INFO);
+ ret_if(!main_view_info);
+
+ group_info = evas_object_data_get(item, GROUP_INFO);
+ ret_if(!group_info);
+
+ db_delete_group(main_view_info->moment_info->db, group_info->id);
+ main_view_info->moment_info->group_list = eina_list_remove(main_view_info->moment_info->group_list, group_info);
+ group_info_destroy(group_info);
+
+ item_destroy_group(item);
+
+ count = scroller_count_item(main_view_info->group_scroller);
+ if (count < 1) {
+ elm_object_signal_emit(main_view_info->main_view, "momentic,state,drawer,noresult,show", "");
+ }
+
+
+}
+
+Evas_Object *item_create_group(Evas_Object *parent, group_info_s *group_info, main_view_s *main_view_info)
{
Evas_Object *item = NULL;
+ Evas_Object *btn = NULL;
char *path = NULL;
char full_path[PATH_LEN] = {0, };
retv_if(!item, NULL);
elm_layout_file_set(item, full_path, "item_group");
+ evas_object_data_set(item, GROUP_INFO, group_info);
+ evas_object_data_set(item, DATA_KEY_MAIN_VIEW_INFO, main_view_info);
evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(item);
- elm_object_part_text_set(item, "city", title);
+ btn = elm_button_add(item);
+ if (btn) {
+ elm_object_style_set(btn, "transparent");
+ elm_object_part_content_set(item, "delete_event", btn);
+ evas_object_smart_callback_add(btn, "clicked", _delete_group_item_cb, item);
+ evas_object_show(btn);
+ }
+
+ elm_object_part_text_set(item, "title", group_info->title);
return item;
}
{
ret_if(!item);
+ evas_object_data_del(item, GROUP_INFO);
+ evas_object_data_del(item, DATA_KEY_MAIN_VIEW_INFO);
evas_object_event_callback_del(item, EVAS_CALLBACK_DEL, _item_group_del_cb);
elm_object_signal_callback_del(item, "down", "item", _item_group_down_cb);
elm_object_signal_callback_del(item, "up", "item", _item_group_up_cb);
item_destroy_best_time(obj);
}
-Evas_Object *item_create_best_time(Evas_Object *parent)
+Evas_Object *item_create_best_time(Evas_Object *parent, double start, double end)
{
Evas_Object *item = NULL;
city_s *city_info = NULL;
char *path = NULL;
char full_path[PATH_LEN] = {0, };
- char city_str[PATH_LEN] = {0, };
+ char time_str[PATH_LEN] = {0, };
+
+ double start1, start2, end1, end2;
+ double half;
+ int tmp = 0;
retv_if(!parent, NULL);
evas_object_show(item);
+ if (start >= end) {
+ elm_object_part_text_set(item, "time", "No matched time");
+ goto out;
+ }
+
+ tmp = start;
+ if (tmp == start) half = 0.0f;
+ else half = 0.5f;
+
+ if (tmp) tmp %= 24;
+ start = ((double) tmp) + half;
+
+ tmp = end;
+ if (tmp == end) half = 0.0f;
+ else half = 0.5f;
+
+ if (tmp) tmp %= 24;
+ end = ((double) tmp) + half;
+
+ _D("HELLO, Best,%f:%f", start, end);
+
+ int start_hour = start;
+ int start_minute = (start_hour == start)? 0 : 30;
+ int end_hour = end;
+ int end_minute = (end_hour == end)? 0 : 30;
+
+ snprintf(time_str, sizeof(time_str), "%d:%02d - %d:%02d", start_hour, start_minute, end_hour, end_minute);
+ elm_object_part_text_set(item, "time", time_str);
+ if (set_time_range(item, 5, start, end, 0.0f, 0.0f) == EINA_FALSE)
+ _E("cannot set time range");
+
+out:
return item;
}
#include "util.h"\r
#include "main.h"\r
#include "ui_manager.h"\r
+#include "db.h"\r
\r
static void\r
_win_delete_request_cb(void *data, Evas_Object *obj, void *event_info)\r
_D("Window size (%d:%d)", moment_info->width, moment_info->height);\r
\r
moment_info->e = evas_object_evas_get(moment_info->win);\r
+ moment_info->db = db_open();\r
+ db_create_table(moment_info->db);\r
\r
return true;\r
}\r
#include <Elementary.h>
#include <time.h>
#include <app_control.h>
+#include <notification.h>
#include "main.h"
#include "main_view.h"
elm_entry_single_line_set(entry_obj, EINA_TRUE);
/* This makes the text upper */
elm_entry_scrollable_set(entry_obj, EINA_FALSE);
- //elm_entry_cnp_mode_set(entry_obj, ELM_CNP_MODE_PLAINTEXT);
elm_entry_text_style_user_push(entry_obj, "DEFAULT='font_size=20'");
+ elm_entry_context_menu_disabled_set(entry_obj, EINA_TRUE);
elm_object_part_text_set(entry_obj, "elm.guide", "<font_size=20>Search</font_size>");
evas_object_size_hint_weight_set(entry_obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_del(searchbar);
}
-static void _set_time_range(Evas_Object *item, int i, int base_city, int cur_city)
+static void _set_time_range(Evas_Object *item, int i, int base_city, int cur_city, double *matched_start, double *matched_end)
{
double start1 = 0.0f;
double end1 = 0.0f;
city_s *city_info = NULL;
- int start = 0;
- int end = 0;
+ double start = 0;
+ double end = 0;
+ double half = 0.0f;
+
+ int tmp = 0;
city_info = city_get();
ret_if(!city_info);
- start = (int) city_info[cur_city].timezone - city_info[base_city].timezone + (double) BEST_START_TIME;
+ start = city_info[cur_city].timezone - city_info[base_city].timezone + (double) BEST_START_TIME;
+
+ if (start < 0.0f)
+ start += 24.0f;
+
+ if (matched_start && matched_end) {
+ /* This end is only for the matched end */
+ end = start + BEST_DURING_TIME;
+ if (*matched_start < (double) start)
+ *matched_start = (double) start;
+
+ if (*matched_end > (double) end)
+ *matched_end = end;
+ }
+
+ tmp = start;
+ if (tmp != start) half = 0.5f;
+ else half = 0.0f;
- if (start < 0)
- start += 24;
+ tmp %= 24;
- start %= 24;
+ start = ((double) tmp) + half;
end = start + BEST_DURING_TIME;
if (end > 24.0f) {
end1 = 24.0f;
start2 = 0.0f;
- end2 = (double) (end % 24);
+
+ tmp = end;
+ if (tmp != end) half = 0.5f;
+ else half = 0.0f;
+
+ end2 = (double) (tmp % 24) + half;
} else {
start1 = (double) start;
end1 = (double) end;
}
- _D("O, %s %f:%f:%f:%f", city_info[cur_city].name, start1, end1, start2, end2);
+ _D("HELLO, %s %f:%f:%f:%f", city_info[cur_city].name, start1, end1, start2, end2);
if (set_time_range(item, i, start1, end1, start2, end2) == EINA_FALSE)
_E("cannot set time range");
} part_info_s;
-static void _click_next_btn_cb(void *data, Evas_Object *obj, void *event_info)
+void main_view_click_next_btn_cb(void *data, Evas_Object *obj, void *event_info)
{
main_view_s *main_view_info = data;
Evas_Object *box = NULL;
int cur_timezone = 0;
int base_city = 0;
+ double matched_start = 0.0f;
+ double matched_end = 100.0f; /* We have to initialize this variable as 100.0f */
+
ret_if(!main_view_info);
ret_if(!main_view_info->city_list);
if (!base_city) {
base_city = selecting_info->city;
- _set_time_range(item, selecting_info->color, base_city, base_city);
+ _set_time_range(item, selecting_info->color, base_city, base_city, &matched_start, &matched_end);
continue;
} else
- _set_time_range(item, selecting_info->color, base_city, selecting_info->city);
-
-#if 0
- selecting_info_s *selecting_info = NULL;
- int start = 0, end = 0;
- int tmp_timezone = 0;
-
- selecting_info = evas_object_data_get(item, DATA_KEY_SELECTING);
- continue_if(!selecting_info);
-
- tmp_timezone = city_info[selecting_info->city].timezone;
- if (tmp_timezone < cur_timezone)
- tmp_timezone += 24;
-
- start = tmp_timezone - cur_timezone + BEST_START_TIME;
- end = (start + (BEST_END_TIME - BEST_START_TIME)) % 24;
-#endif
+ _set_time_range(item, selecting_info->color, base_city, selecting_info->city, &matched_start, &matched_end);
}
- item = item_create_best_time(main_view_info->city_list);
+ _D("HELLO, match!! %f, %f", matched_start, matched_end);
+ item = item_create_best_time(main_view_info->city_list, matched_start, matched_end);
if (item) {
elm_object_signal_emit(item, "momentic,item,state,show", "");
scroller_append_item(main_view_info->city_list, item);
-#if 0
- //decide best time range
- list = elm_box_children_get(box);
- double r1 = 0, r2 = 24, r3 = 0, r4 = 24;
- Eina_Bool best_time = EINA_TRUE;
- Evas_Object *it;
- EINA_LIST_FREE(list, it) {
- Evas_Object *rect1 = evas_object_data_get(it, "part1");
- Evas_Object *rect2 = evas_object_data_get(it, "part2");
-
- if (rect1)
- {
- part_info_s *pi = evas_object_data_get(rect1, "part_info");
- if ((pi->p1 * 24) > r1) r1 = pi->p1 * 24;
- else best_time = EINA_FALSE;
- if ((pi->p2 * 24) < r2) r2 = pi->p2 * 24;
- else best_time = EINA_FALSE;
- }
-
- if (rect2)
- {
- part_info_s *pi = evas_object_data_get(rect2, "part_info");
- if ((pi->p1 *24) > r1) r1 = pi->p1 * 24;
- else best_time = EINA_FALSE;
- if ((pi->p2 *24) < r2) r2 = pi->p2 * 24;
- else best_time = EINA_FALSE;
- }
- }
-
- if (best_time){
-_D("AQAAA %f %f %f %f", r1, r2, r3, r4);
- set_time_range(item, 5, r1, r2, r3, r4);
- }
-#endif
} else
_E("cannot append an item");
next_btn = elm_button_add(parent);
retv_if(!next_btn, NULL);
elm_object_style_set(next_btn, "transparent");
- evas_object_smart_callback_add(next_btn, "clicked", _click_next_btn_cb, main_view_info);
+ evas_object_smart_callback_add(next_btn, "clicked", main_view_click_next_btn_cb, main_view_info);
icon = elm_image_add(next_btn);
if (icon) {
evas_object_del(next_btn);
}
-static Evas_Object *_create_city_list(Evas_Object *parent)
+static void _append_here_to_city_list(Evas_Object *city_list, main_view_s *main_view_info)
+{
+ Evas_Object *item = NULL;
+ struct tm *local_time = NULL;
+ city_s *city_info = NULL;
+ time_t t;
+ int i = 0;
+
+ city_info = city_get();
+ ret_if(!city_info);
+
+ time(&t);
+ local_time = localtime(&t);
+
+ for (i = 0; i < CITY_SYDNEY; i++) {
+ if (city_info[i].timezone == ((double) (local_time->tm_gmtoff / 3600l)))
+ break;
+ }
+
+ item = item_create_selecting(city_list, i, local_time, main_view_info);
+ if (item)
+ scroller_append_item(city_list, item);
+}
+
+static Eina_Bool
+_append_here_city_anim_cb(void *data)
+{
+ main_view_s *main_view_info = data;
+
+ _append_here_to_city_list(main_view_info->city_list, main_view_info);
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Evas_Object *_create_city_list(Evas_Object *parent, main_view_s *main_view_info)
{
Evas_Object *city_list = NULL;
city_list = scroller_create(parent);
retv_if(!city_list, NULL);
+ ecore_animator_add(_append_here_city_anim_cb, main_view_info);
+
return city_list;
}
evas_object_del(city_list);
}
-static void _click_add_btn_cb(void *data, Evas_Object *obj, void *event_info)
+void main_view_click_add_btn_cb(void *data, Evas_Object *obj, void *event_info)
{
main_view_s *main_view_info = data;
add_btn = elm_button_add(parent);
retv_if(!add_btn, NULL);
elm_object_style_set(add_btn, "transparent");
- evas_object_smart_callback_add(add_btn, "clicked", _click_add_btn_cb, main_view_info);
+ evas_object_smart_callback_add(add_btn, "clicked", main_view_click_add_btn_cb, main_view_info);
icon = elm_image_add(add_btn);
if (icon) {
Evas_Object *item = NULL;
Eina_List *list = NULL;
group_info_s *group_info = NULL;
- int city[MAXIMUM_SELECTED_CITY] = {0, };
+ //int city[MAXIMUM_SELECTED_CITY] = {0, };
+ int city[5] = {0, }; /* FIXME : for compatibility */
int i = 0;
- long time = 0l;
+ char group_title[PATH_LEN] = {0, };
+ city_s *city_info = NULL;
+ char message[PATH_LEN] = {0, };
+
+ city_info = city_get();
+ ret_if(!city_info);
_D("Save button is clicked");
ret_if(!main_view_info);
- ret_if(!main_view_info->result_list);
- box = elm_object_content_get(main_view_info->result_list);
+ box = elm_object_content_get(main_view_info->city_list);
ret_if(!box);
list = elm_box_children_get(box);
ret_if(!list);
EINA_LIST_FREE(list, item) {
- result_info_s *result_info = NULL;
+ selecting_info_s *selecting_info = NULL;
+
+ selecting_info = evas_object_data_get(item, DATA_KEY_SELECTING);
+ if (!selecting_info)
+ break;
- result_info = evas_object_data_get(item, DATA_KEY_RESULT);
- continue_if(!result_info);
+ if (i != 0)
+ strcat(group_title, ", ");
- city[i] = result_info->city;
+ city[i] = selecting_info->city;
+ strcat(group_title, city_info[city[i]].name);
i++;
}
- time = db_insert_group(moment_info->db
- , "Momentic time"
+ int id = db_insert_group(moment_info->db
+ , group_title
, city[0]
, city[1]
, city[2]
, city[3]
, city[4]);
- group_info = group_info_create(time
- , "Momentic time"
+ group_info = group_info_create(id
+ , group_title
, city[0]
, city[1]
, city[2]
, city[3]
, city[4]);
moment_info->group_list = eina_list_append(moment_info->group_list, group_info);
+
+ Evas_Object *item_group = item_create_group(main_view_info->group_scroller
+ , group_info
+ , main_view_info);
+ scroller_append_item(main_view_info->group_scroller, item_group);
+ elm_object_signal_emit(main_view_info->main_view, "momentic,state,drawer,noresult,hide", "");
+
+ snprintf(message, sizeof(message), "Create a group named <br>'%s'", group_title);
+ notification_status_message_post(message);
+}
+
+#if 0
+static void _click_save_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ main_view_s *main_view_info = data;
+ elm_object_signal_emit(main_view_info->save_button, "momentic,state,activate", "");
+ elm_object_signal_emit(main_view_info->main_view, "momentic,state,save_group,activate", "");
+}
+
+static void _click_cancel_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ main_view_s *main_view_info = data;
+ elm_object_signal_emit(main_view_info->save_button, "momentic,state,deactivate", "");
+ elm_object_signal_emit(main_view_info->main_view, "momentic,state,save_group,deactivate", "");
}
+#endif
-static Evas_Object *_create_save_button(Evas_Object *parent, moment_info_s *moment_info)
+
+static Evas_Object *_create_save_button(Evas_Object *parent, main_view_s *main_view_info)
{
+ Evas_Object *popup_button = NULL;
Evas_Object *save_button = NULL;
+ char *path = NULL;
+ char full_path[PATH_LEN] = {0, };
+
retv_if(!parent, NULL);
+ path = app_get_resource_path();
+ retv_if(!path, NULL);
+
+ snprintf(full_path, sizeof(full_path), "%s/edje/popup.edj", path);
+ free(path);
+
+ popup_button = elm_layout_add(parent);
+ retv_if(!popup_button, NULL);
+
+ elm_layout_file_set(popup_button, full_path, "save_as_group");
+ evas_object_size_hint_weight_set(popup_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(popup_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(popup_button);
+
save_button = elm_button_add(parent);
retv_if(!save_button, NULL);
+ elm_object_style_set(save_button, "transparent");
+ elm_object_part_content_set(popup_button, "button", save_button);
+ evas_object_smart_callback_add(save_button, "clicked", _click_save_button_cb, main_view_info);
- elm_object_text_set(save_button, "Save");
- evas_object_size_hint_weight_set(save_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(save_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(save_button, "clicked", _click_save_button_cb, moment_info);
+#if 0
+ Evas_Object *create_button = NULL;
+ Evas_Object *cancel_button = NULL;
+
+ create_button = elm_button_add(parent);
+ retv_if(!create_button, NULL);
+ //elm_object_style_set(create_button, "transparent");
+ elm_object_part_content_set(popup_button, "create_btn", create_button);
+ //evas_object_smart_callback_add(create_button, "clicked", _click_create_button_cb, main_view_info);
+
+ cancel_button = elm_button_add(parent);
+ retv_if(!cancel_button, NULL);
+ //elm_object_style_set(cancel_button, "transparent");
+ elm_object_part_content_set(popup_button, "cancel_btn", cancel_button);
+ evas_object_smart_callback_add(cancel_button, "clicked", _click_cancel_button_cb, main_view_info);
+#endif
- return save_button;
+ return popup_button;
}
static void _destroy_save_button(Evas_Object *save_button)
EINA_LIST_FOREACH(list, l, group_info) {
Evas_Object *item_group = item_create_group(group_scroller
- , group_info->title
+ , group_info
, main_view_info);
scroller_append_item(group_scroller, item_group);
}
+ int count = scroller_count_item(group_scroller);
+ if (count)
+ elm_object_signal_emit(main_view_info->main_view, "momentic,state,drawer,noresult,hide", "");
+ else
+ elm_object_signal_emit(main_view_info->main_view, "momentic,state,drawer,noresult,show", "");
+
return group_scroller;
}
time(&cur_t);
- if (prev_t + 1 > cur_t) {
+ if (prev_t + 2 > cur_t) {
_D("wait a sec to process the back key event");
return;
}
if (1 == cur_page) {
item_reset_color_index();
scroller_clear_item(main_view_info->city_list);
-
+ _append_here_to_city_list(main_view_info->city_list, main_view_info);
elm_object_focus_set(main_view_info->searchbar, EINA_FALSE);
cur_page = 0;
} else if (2 == cur_page) {
if (main_view_info->next_btn)
elm_object_part_content_set(main_view_info->main_view, "next_btn", main_view_info->next_btn);
- main_view_info->city_list = _create_city_list(main_view_info->main_view);
+ main_view_info->city_list = _create_city_list(main_view_info->main_view, main_view_info);
if (main_view_info->city_list)
elm_object_part_content_set(main_view_info->main_view, "city_list", main_view_info->city_list);
if (main_view_info->searchlist)
elm_object_part_content_set(main_view_info->main_view, "searchlist", main_view_info->searchlist);
+ db_list_group(moment_info->db, &moment_info->group_list);
+
main_view_info->group_scroller = _create_group_scroller(main_view_info->main_view, moment_info->group_list, main_view_info);
if (main_view_info->group_scroller)
- evas_object_hide(main_view_info->group_scroller);
- //elm_object_part_content_set(main_view_info->main_view, "group_scroller", main_view_info->group_scroller);
+ elm_object_part_content_set(main_view_info->main_view, "drawer_content", main_view_info->group_scroller);
+
+ main_view_info->save_button = _create_save_button(main_view_info->main_view, main_view_info);
+ if (main_view_info->save_button)
+ elm_object_part_content_set(main_view_info->main_view, "save_group_btn", main_view_info->save_button);
elm_object_signal_callback_add(main_view_info->main_view, "momentic,page1,done", "", _page1_done_cb, main_view_info->searchbar);
main_view_info = evas_object_data_del(main_view_info->main_view, DATA_KEY_INFO);
ret_if(!main_view_info);
+ if (main_view_info->save_button)
+ _destroy_save_button(main_view_info->save_button);
+
if (main_view_info->group_scroller)
_destroy_group_scroller(main_view_info->group_scroller);
ret = app_control_create(&app_control);
ret_if(APP_CONTROL_ERROR_NONE != ret);
+ time(&t);
local_time = localtime(&t);
snprintf(start_str, sizeof(start_str), "%4d-%2d-%2d %2d:%2d:%2d"
{
Evas_Coord x, y, w, h, x2, y2, w2, h2;
evas_object_geometry_get(obj, &x, &y, &w, &h);
- edje_object_part_geometry_get(elm_layout_edje_get(obj), "map", &x2, &y2, &w, &h);
double scale_w = (double) w / ORIGIN_W;
double scale_h = (double) h / ORIGIN_H;
{
if (!city[idx].obj) continue;
evas_object_move(city[idx].obj,
- (x + city[idx].ci.x) - (city[idx].w / 2),
- (y + city[idx].ci.y) - (city[idx].h / 2));
- evas_object_move(city[idx].obj,
- (int)((double)city[idx].ci.x * scale_w) + x + x2 - (city[idx].w / 2),
- (int)((double)city[idx].ci.y * scale_h) + y + y2 - (city[idx].h / 2));
- }
+ (int)((double)city[idx].ci.x * scale_w) + x - (city[idx].w / 2),
+ (int)((double)city[idx].ci.y * scale_h) + y - (city[idx].h / 2));
+ }
}
static void
snprintf(buf, sizeof(buf), "city%d", idx);
city[idx].obj = elm_layout_add(map_layout);
elm_layout_file_set(city[idx].obj, full_path, buf);
- evas_object_smart_member_add(city[idx].obj, map_layout);
+// evas_object_smart_member_add(city[idx].obj, map_layout);
evas_object_show(city[idx].obj);
Evas_Object *edje = elm_layout_edje_get(city[idx].obj);
Eina_Bool
set_time_range(Evas_Object *item, int idx, double p1, double p2, double p3, double p4)
{
- if (!item) return EINA_FALSE;
- if (idx < 0 || idx >= MAXIMUM_SELECTED_CITY) return EINA_FALSE;
+ retv_if(!item, EINA_FALSE);
+ retv_if(idx < 0 || idx >= 6, EINA_FALSE); /* FIXME */
if (0.0f != p1)
p1 /= 24.0f;
//Part 1
rect = evas_object_rectangle_add(evas_object_evas_get(item));
+ evas_object_smart_member_add(rect, item);
switch (idx)
{
case 0:
if ((p3 == 0 && p4 == 0)) return EINA_TRUE;
rect = evas_object_rectangle_add(evas_object_evas_get(item));
+ evas_object_smart_member_add(rect, item);
+
switch (idx)
{
case 0: