Enlightenment CVS committal

Author  : devilhorns
Project : e_modules
Module  : weather

Dir     : e_modules/weather


Modified Files:
        e_mod_config.c e_mod_main.c e_mod_main.h weather.edc 


Log Message:
Many fixes.
In simple mode, remove the location label.
You may need to remove module.weather.cfg for these to work.

===================================================================
RCS file: /cvs/e/e_modules/weather/e_mod_config.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_mod_config.c      20 Mar 2006 20:35:59 -0000      1.3
+++ e_mod_config.c      28 Mar 2006 18:26:32 -0000      1.4
@@ -104,7 +104,7 @@
    ob = e_widget_label_add(evas, 
D_("http://www.weather.gov/tg/siteloc.shtml";));
    e_widget_frametable_object_append(of, ob, 0, 2, 2, 1, 1, 0, 1, 0);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
-   
+
    return o;
 }
 
@@ -112,8 +112,9 @@
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    Weather_Face *wf;
-   int i, len;
+   int len;
    char tmp[1024];
+   char buf[4096];
    
    if (!cfdata->code)
      return 0;
@@ -133,7 +134,16 @@
    e_config_save_queue();
    if (wf->check_timer)
      ecore_timer_interval_set(wf->check_timer, (double)(wf->conf->poll_time));
-   
-   _weather_display_set(wf, 1);
+
+   if (wf->conf->display == DETAILED_DISPLAY)
+     edje_object_signal_emit(wf->weather_obj, "set_style", "detailed");   
+   else
+     edje_object_signal_emit(wf->weather_obj, "set_style", "simple");
+
+   _weather_convert_degrees(wf);
+   snprintf(buf, sizeof(buf), "%d°%c",wf->temp, wf->degrees);
+   edje_object_part_text_set(wf->weather_obj, "temp", buf);
+
+   //_weather_display_set(wf, 1);
    return 1;
 }
===================================================================
RCS file: /cvs/e/e_modules/weather/e_mod_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_mod_main.c        21 Mar 2006 04:18:24 -0000      1.12
+++ e_mod_main.c        28 Mar 2006 18:26:32 -0000      1.13
@@ -18,7 +18,9 @@
 static int           _weather_server_del             (void *data, int type, 
void *event);
 static int           _weather_server_data            (void *data, int type, 
void *event);
 static int           _weather_parse                  (Weather_Face * wf);
-static void          _weather_convert_degrees        (Weather_Face * wf);
+static void          _weather_face_menu_cb_face_new  (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void          _weather_face_menu_cb_face_del  (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void          _weather_display_set            (Weather_Face * wf, int 
ok);
 
 static int weather_count;
 static E_Config_DD *conf_edd;
@@ -129,7 +131,8 @@
 _weather_new(void) 
 {
    Weather *w;
-   Evas_List *mans, *l, *l2, *fl;
+   Evas_List *fl;
+   E_Container *con;
    char *env;
    
    weather_count = 0;
@@ -147,7 +150,7 @@
    E_CONFIG_VAL(D, T, poll_time, DOUBLE);
    E_CONFIG_VAL(D, T, display, INT);
    E_CONFIG_VAL(D, T, degrees, INT);
-   E_CONFIG_VAL(D, T, location, STR);
+   E_CONFIG_VAL(D, T, con, INT);   
    E_CONFIG_VAL(D, T, host, STR);
    E_CONFIG_VAL(D, T, code, STR);
    
@@ -164,62 +167,83 @@
    
    _weather_config_menu_new(w);
    
-   mans = e_manager_list();
    fl = w->conf->faces;
-   for (l = mans; l; l = l->next) 
+   if (!fl) 
      {
-       E_Manager *man;
+       Weather_Face *wf;
        
-       man = l->data;
-       for (l2 = man->containers; l2; l2 = l2->next) 
+       con = e_container_current_get(e_manager_current_get());
+       wf = _weather_face_init(w, con);
+       if (wf) 
+         {
+            wf->conf = E_NEW(Config_Face, 1);
+            wf->conf->enabled = 1;
+            wf->conf->poll_time = 1800.0;
+            wf->conf->display = DETAILED_DISPLAY;
+            wf->conf->degrees = DEGREES_C;
+            wf->conf->con = con->num;
+            wf->conf->host = evas_stringshare_add("www.rssweather.com");
+            wf->conf->code = evas_stringshare_add("ENKR");
+            E_CONFIG_LIMIT(wf->conf->poll_time, 900.0, 3600.0);
+            
+            w->conf->faces = evas_list_append(w->conf->faces, wf->conf);
+            e_config_save_queue();
+
+            wf->degrees = 'C';
+            edje_object_signal_emit(wf->weather_obj, "set_style", "detailed");
+            wf->loc_set = 0;
+            wf->check_timer = ecore_timer_add((double)wf->conf->poll_time, 
_weather_face_cb_check, wf->weather);
+
+            if (!wf->conf->enabled)
+              _weather_face_disable(wf);
+         }
+     }
+   else 
+     {
+       for (; fl; fl = fl->next) 
          {
-            E_Container *con;
             Weather_Face *wf;
+            Config_Face *conf;
             
-            con = l2->data;
+            conf = fl->data;
+            con = e_util_container_number_get(conf->con);
+            if (!con)
+              continue;
             wf = _weather_face_init(w, con);
-            if (wf) 
-              {
-                 if (!fl) 
-                   {
-                      wf->conf = E_NEW(Config_Face, 1);
-                      wf->conf->enabled = 1;
-                      wf->conf->poll_time = 1800.0;
-                      wf->conf->display = DETAILED_DISPLAY;
-                      wf->conf->degrees = DEGREES_C;
-                      wf->conf->host = 
evas_stringshare_add("www.rssweather.com");
-                      wf->conf->location = evas_stringshare_add("Kirkenes 
Lufthavn");
-                      //wf->conf->url = 
evas_stringshare_add("/icao/ENKR/rss.php");
-                      wf->conf->code = evas_stringshare_add("ENKR");
-                      w->conf->faces = evas_list_append(w->conf->faces, 
wf->conf);
-                   }
-                 else 
-                   {
-                      wf->conf = fl->data;
-                      fl = fl->next;
-                   }
-                 E_CONFIG_LIMIT(wf->conf->poll_time, 900.0, 3600.0);
-                 
-                 _weather_face_menu_new(wf);
-
-                 E_Menu_Item *mi;                
-                 mi = e_menu_item_new(w->config_menu);
-                 e_menu_item_label_set(mi, _("Configuration"));
-                 e_util_menu_item_edje_icon_set(mi, 
"enlightenment/configuration");
-                 e_menu_item_callback_set(mi, _weather_face_cb_menu_configure, 
wf);
-                 
-                 mi = e_menu_item_new(w->config_menu);
-                 e_menu_item_label_set(mi, con->name);
-                 e_menu_item_submenu_set(mi, wf->menu);
-
-                 wf->check_timer = 
ecore_timer_add((double)wf->conf->poll_time, _weather_face_cb_check, 
wf->weather);
+            if (!wf)
+              continue;
+            wf->conf = conf;
+            E_CONFIG_LIMIT(wf->conf->poll_time, 900.0, 3600.0);
 
-                 if (!wf->conf->enabled)
-                   _weather_face_disable(wf);
+            switch (wf->conf->degrees) 
+              {
+               case 0:
+                 wf->degrees = 'F';
+                 break;
+               case 1:
+                 wf->degrees = 'C';
+                 break;
+              }
+            switch (wf->conf->display) 
+              {
+               case 0:
+                 edje_object_signal_emit(wf->weather_obj, "set_style", 
"simple");                
+                 break;
+               case 1:
+                 edje_object_signal_emit(wf->weather_obj, "set_style", 
"detailed");
+                 break;
               }
+            
+            edje_object_signal_emit(wf->weather_obj, "set_style", "detailed");
+            
+            wf->loc_set = 0;
+            wf->check_timer = ecore_timer_add((double)wf->conf->poll_time, 
_weather_face_cb_check, wf->weather);
+
+            if (!wf->conf->enabled)
+              _weather_face_disable(wf);
          }
      }
-   
+
    env = getenv("http_proxy");
    if (!env)
      env = getenv("HTTP_PROXY");
@@ -249,6 +273,7 @@
    w->add_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, 
_weather_server_add, w);
    w->del_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, 
_weather_server_del, w);
    w->data_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, 
_weather_server_data, w);
+
    _weather_face_cb_check(w);
    return w;
 }
@@ -338,11 +363,32 @@
 static void 
 _weather_face_menu_new(Weather_Face *wf) 
 {
-   E_Menu *mn;
-   E_Menu_Item *mi;
-   
+   E_Menu *mn, *sn;
+   E_Menu_Item *mi, *si;
+
    mn = e_menu_new();
    wf->menu = mn;
+
+   sn = e_menu_new();   
+
+   si = e_menu_item_new(sn);
+   e_menu_item_label_set(si, _("Add A Face"));
+   e_menu_item_callback_set(si, _weather_face_menu_cb_face_new, wf->weather);
+   
+   if (evas_list_count(wf->weather->conf->faces) > 1) 
+     {
+       si = e_menu_item_new(sn);
+       e_menu_item_label_set(si, _("Remove This Face"));
+       e_menu_item_callback_set(si, _weather_face_menu_cb_face_del, wf);
+     }
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Faces"));
+   e_menu_item_icon_file_set(mi, PACKAGE_DATA_DIR"/module_icon.png");
+   e_menu_item_submenu_set(mi, sn);
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_separator_set(mi, 1);
    
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Configuration"));
@@ -352,11 +398,11 @@
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Edit Mode"));
    e_util_menu_item_edje_icon_set(mi, "enlightenment/gadgets");
-   e_menu_item_callback_set(mi, _weather_face_cb_menu_edit, wf);   
+   e_menu_item_callback_set(mi, _weather_face_cb_menu_edit, wf);
 }
 
 static void 
-_weather_face_cb_menu_configure (void *data, E_Menu *mn, E_Menu_Item *mi) 
+_weather_face_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi) 
 {
    Weather_Face *wf;
    
@@ -414,8 +460,6 @@
    
    if (wf->conf->host)
      evas_stringshare_del(wf->conf->host);
-   if (wf->conf->location)
-     evas_stringshare_del(wf->conf->location);
    if (wf->conf->code)
      evas_stringshare_del(wf->conf->code);
    
@@ -434,6 +478,7 @@
    ev = event_info;
    if (ev->button == 3) 
      {
+       _weather_face_menu_new(wf);
        e_menu_activate_mouse(wf->menu, e_zone_current_get(wf->con),
                              ev->output.x, ev->output.y, 1, 1,
                              E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
@@ -520,7 +565,7 @@
    if ((!wf) || (ev->server != wf->server))
      return 1;
    
-   snprintf(icao, sizeof(icao), "/icao/%s/rss.php", wf->conf->code);
+   snprintf(icao, sizeof(icao), "/icao/%s/rss.php", wf->conf->code);   
    snprintf(buf, sizeof(buf), "GET http://%s%s HTTP/1.1\r\nHost: %s\r\n\r\n",
            wf->conf->host, icao, wf->conf->host);
    ecore_con_server_send(wf->server, buf, strlen(buf));
@@ -601,20 +646,22 @@
 _weather_parse(Weather_Face *wf)
 {
    char *needle, *ext;
-
+   char location[256];
+   
    needle = strstr(wf->buffer, "<title");
-   if (needle) 
+   if (!needle)
+     goto error;
+   
+   needle = strstr(needle, ">");
+   sscanf(needle, ">%[^<]<", location);
+   if (location) 
      {
-       needle = strstr(needle, ">");
-       sscanf(needle, ">%[^<]<", wf->location);
-       if (wf->location) 
+       char *tmp = strdup(location);
+       if (strstr(tmp, ",")) 
          {
-            char *tmp = strdup(wf->location);
-            if (strstr(tmp, ",")) 
-              {
-                 tmp = strtok(tmp, ",");
-                 snprintf(wf->location, sizeof(wf->location), "%s", tmp);
-              }  
+            tmp = strtok(tmp, ",");
+            wf->location = strdup(tmp);
+            wf->loc_set = 1;
          }
      }
       
@@ -663,7 +710,7 @@
    return 0;
 }
 
-static void
+void
 _weather_convert_degrees(Weather_Face *wf)
 {
    /* Check if degrees is in C or F */
@@ -679,15 +726,71 @@
      }
 }
 
-void
+static void 
+_weather_face_menu_cb_face_new(void *data, E_Menu *m, E_Menu_Item *mi) 
+{
+   Weather *w;
+   Weather_Face *wf;
+   E_Container *con;
+   
+   w = data;
+   if (!w)
+     return;
+
+   con = e_container_current_get(e_manager_current_get());
+   wf = _weather_face_init(w, con);
+   if (!wf)
+     return;
+
+   wf->conf = E_NEW(Config_Face, 1);
+   wf->conf->enabled = 1;
+   wf->conf->poll_time = 1800.0;
+   wf->conf->display = DETAILED_DISPLAY;
+   wf->conf->degrees = DEGREES_C;
+   wf->conf->con = con->num;
+   wf->conf->host = evas_stringshare_add("www.rssweather.com");
+   wf->conf->code = evas_stringshare_add("ENKR");
+   E_CONFIG_LIMIT(wf->conf->poll_time, 900.0, 3600.0);
+
+   w->conf->faces = evas_list_append(w->conf->faces, wf->conf);   
+   e_config_save_queue();
+
+   wf->degrees = 'C';
+   wf->loc_set = 0;
+   wf->check_timer = ecore_timer_add((double)wf->conf->poll_time, 
_weather_face_cb_check, wf->weather);
+
+   if (!wf->conf->enabled)
+     _weather_face_disable(wf);
+   
+   _weather_face_cb_check(wf->weather);
+}
+
+static void 
+_weather_face_menu_cb_face_del(void *data, E_Menu *m, E_Menu_Item *mi) 
+{
+   Weather *w;
+   Weather_Face *wf;
+   
+   wf = data;
+   if (!wf)
+     return;
+   
+   w = wf->weather;
+   if (!w)
+     return;
+   
+   w->conf->faces = evas_list_remove(w->conf->faces, wf->conf);
+   e_config_save_queue();
+   _weather_face_free(wf);
+}
+
+static void
 _weather_display_set(Weather_Face *wf, int ok)
 {
    char buf[4096];
 
    if (!wf)
      return;
-
-   edje_object_part_text_set(wf->weather_obj, "location", wf->location);
    
    if (wf->conf->display == DETAILED_DISPLAY)
      edje_object_signal_emit(wf->weather_obj, "set_style", "detailed");
@@ -696,8 +799,10 @@
    
    if (!ok)
      {
-       e_icon_file_set(wf->icon_obj, PACKAGE_DATA_DIR "/images/na.png");
+       snprintf(buf, sizeof(buf), PACKAGE_DATA_DIR"/images/na.png");
+       e_icon_file_set(wf->icon_obj, buf);
        edje_object_part_swallow(wf->weather_obj, "icon", wf->icon_obj);
+       edje_object_part_text_set(wf->weather_obj, "location", "");
         edje_object_part_text_set(wf->weather_obj, "temp", "");
         edje_object_part_text_set(wf->weather_obj, "conditions", "");
      }
@@ -706,6 +811,7 @@
        snprintf(buf, sizeof(buf), PACKAGE_DATA_DIR"/images/%s", wf->icon);
        e_icon_file_set(wf->icon_obj, buf);
        edje_object_part_swallow(wf->weather_obj, "icon", wf->icon_obj);
+       edje_object_part_text_set(wf->weather_obj, "location", wf->location);   
         snprintf(buf, sizeof(buf), "%d°%c",wf->temp, wf->degrees);
         edje_object_part_text_set(wf->weather_obj, "temp", buf);
         edje_object_part_text_set(wf->weather_obj, "conditions", 
wf->conditions);
===================================================================
RCS file: /cvs/e/e_modules/weather/e_mod_main.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_mod_main.h        20 Mar 2006 19:59:56 -0000      1.7
+++ e_mod_main.h        28 Mar 2006 18:26:32 -0000      1.8
@@ -23,11 +23,10 @@
 struct _Config_Face 
 {
    double poll_time;
-   int display, degrees;
+   int display, degrees, con;
    const char *host;
-   const char *location;
    const char *code;
-   unsigned char enabled;   
+   unsigned char enabled;
 };
 
 struct _Weather 
@@ -61,12 +60,12 @@
    Ecore_Con_Server *server;
    E_Gadman_Client *gmc;
    
-   int temp;
+   int temp, loc_set;
    char degrees;
    char conditions[256];
    char icon[256];
    char *buffer;
-   char location[256];
+   char *location;
    int bufsize;
    int cursize;
 };
@@ -80,6 +79,6 @@
 EAPI int   e_modapi_about    (E_Module *m);
 EAPI int   e_modapi_config   (E_Module *m);
 
-void _weather_display_set(Weather_Face * wf, int ok);
+void _weather_convert_degrees(Weather_Face * wf);
 
 #endif
===================================================================
RCS file: /cvs/e/e_modules/weather/weather.edc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- weather.edc 20 Mar 2006 00:54:07 -0000      1.4
+++ weather.edc 28 Mar 2006 18:26:32 -0000      1.5
@@ -78,7 +78,7 @@
                            font:  "Vera Bold";
                            size:  14;
                            min:   1 1;
-                           align: 0.0 0.0;
+                           align: 0.5 0.5;
                         }
                    }
               }
@@ -118,6 +118,7 @@
                  description
                    {
                       state: "simple" 0.0;
+                      visible: 0;
                       rel1
                         {
                            relative: 0.0 1.0;




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to