Enlightenment CVS committal

Author  : fletch3k
Project : misc
Module  : enotes

Dir     : misc/enotes/src


Modified Files:
        config.c config.h debug.c main.c main.h note.c note.h 
        saveload.c settings.c settings.h storage.c storage.h usage.c 
        usage.h 


Log Message:
Autosave Feature.

===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/config.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- config.c    15 Feb 2004 15:13:34 -0000      1.4
+++ config.c    17 Feb 2004 12:07:28 -0000      1.5
@@ -26,6 +26,7 @@
        p->debug = 0;
        p->intro = 0;
        p->controlcentre = 1;
+       p->autosave = 1;
 
        return (p);
 }
@@ -100,7 +101,10 @@
                p->intro = atoi(info->value);
        } else if (!strcmp(info->name, "debug")) {
                p->debug = atoi(info->value);
+       } else if (!strcmp(info->name, "autosave")) {
+               p->autosave = atoi(info->value);
        }
+
        return;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/config.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- config.h    15 Feb 2004 15:13:35 -0000      1.4
+++ config.h    17 Feb 2004 12:07:28 -0000      1.5
@@ -32,6 +32,7 @@
        int             controlcentre;
        int             intro;
        int             debug;
+       int             autosave;
 } MainConfig;
 
 #ifndef XMLENTRY_DEF
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/debug.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- debug.c     6 Feb 2004 07:36:30 -0000       1.2
+++ debug.c     17 Feb 2004 12:07:28 -0000      1.3
@@ -114,15 +114,21 @@
        {"save_settings", 1},
 
        /* storage */
+       {"alloc_note_stor", 1},
        {"free_note_stor", 1},
        {"append_note_stor", 1},
+       {"append_autosave_note_stor", 1},
        {"remove_note_stor", 1},
        {"stor_cycle_begin", 1},
+       {"stor_cycle_begin_autosave", 1},
        {"stor_cycle_end", 1},
        {"stor_cycle_next", 1},
        {"stor_cycle_prev", 1},
        {"stor_cycle_get_notestor", 1},
+       {"autoload", 1},
+       {"autosave", 1},
        {"make_storage_fn", 1},
+       {"make_autosave_fn", 1},
        {"get_notestor_from_value", 1},
        {"get_value_from_notestor", 1},
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/main.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- main.c      15 Feb 2004 15:13:35 -0000      1.6
+++ main.c      17 Feb 2004 12:07:28 -0000      1.7
@@ -101,12 +101,22 @@
                                free_note_stor(tmpn);
                }
 
+               /* Autoloading */
+               if (main_config->autosave == 1) {
+                       autoload();
+               }
+
                /* Begin the main loop */
                dml("Starting Main Loop", 1);
                ecore_main_loop_begin();
 
                dml("Main Loop Ended", 1);
 
+               /* Autosaving */
+               if (main_config->autosave == 1) {
+                       autosave();
+               }
+
                /* Shutdown the E-Libs */
                edje_shutdown();
                ecore_evas_shutdown();
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/main.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- main.h      15 Feb 2004 15:13:35 -0000      1.4
+++ main.h      17 Feb 2004 12:07:28 -0000      1.5
@@ -25,6 +25,7 @@
 
 #include "config.h"
 #include "note.h"
+#include "storage.h"
 #include "usage.h"
 #include "debug.h"
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/note.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- note.c      16 Feb 2004 11:23:03 -0000      1.9
+++ note.c      17 Feb 2004 12:07:28 -0000      1.10
@@ -80,7 +80,7 @@
        double          edje_w, edje_h;
 
        /* Fix Newlines in Content */
-       fcontent=fix_newlines (content);
+       fcontent = fix_newlines(content);
 
        /* Get the Note from the Evas_List** */
        pl = *note;
@@ -186,7 +186,7 @@
        if (fontpath != NULL)
                free(fontpath);
        if (fcontent != NULL)
-               free (fcontent);
+               free(fcontent);
 
        return;
 }
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/note.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- note.h      7 Feb 2004 15:26:54 -0000       1.3
+++ note.h      17 Feb 2004 12:07:28 -0000      1.4
@@ -21,6 +21,7 @@
 
 #include "debug.h"
 #include "config.h"
+#include "ipc.h"
 #include "../config.h"
 
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/saveload.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- saveload.c  6 Feb 2004 22:12:46 -0000       1.5
+++ saveload.c  17 Feb 2004 12:07:28 -0000      1.6
@@ -242,9 +242,9 @@
        int             x, y, w, h;
        Note           *note;
        Evas_List      *p;
-       NoteStor       *n = malloc(sizeof(NoteStor));
+       NoteStor       *n = alloc_note_stor();
 
-       dml("Saving Selection", 2);
+       dml("Saving Selected Note", 2);
 
        if (saveload_selected == NULL)
                return;
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/settings.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- settings.c  15 Feb 2004 15:13:35 -0000      1.4
+++ settings.c  17 Feb 2004 12:07:28 -0000      1.5
@@ -128,6 +128,11 @@
                setup_settings_opt_int(settings->tree, "Debugging Level [0-2]:",
                                       main_config->debug);
 
+       settings->autosave =
+               setup_settings_opt_int(settings->tree,
+                                      "Autosaving [0=No 1=Yes]:",
+                                      main_config->autosave);
+
        return;
 }
 
@@ -249,6 +254,9 @@
        xml_write_append_entry(p, "debug",
                               ewl_entry_get_text((Ewl_Entry *) settings->debug.
                                                  entry));
+       xml_write_append_entry(p, "autosave",
+                              ewl_entry_get_text((Ewl_Entry *) settings->
+                                                 autosave.entry));
 
        xml_write_end(p);
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/settings.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- settings.h  15 Feb 2004 15:13:35 -0000      1.4
+++ settings.h  17 Feb 2004 12:07:28 -0000      1.5
@@ -47,7 +47,7 @@
        Ewl_Widget     *savebtn;
        Ewl_Widget     *revertbtn;
        Ewl_Widget     *closebtn;
-       Settings_Opt    render_method, theme, intro, debug, cc;
+       Settings_Opt    render_method, theme, intro, debug, cc, autosave;
 } Settings;
 
 extern MainConfig *main_config;
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/storage.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- storage.c   15 Feb 2004 15:13:35 -0000      1.4
+++ storage.c   17 Feb 2004 12:07:29 -0000      1.5
@@ -40,6 +40,62 @@
 
 /* One Shot Functions. :-) */
 void
+append_autosave_note_stor(NoteStor * p)
+{
+       Evas_List      *list;
+       Evas_List      *lt;
+       XmlReadHandle  *r;
+       XmlWriteHandle *w;
+       XmlEntry       *e;
+       char           *fn;
+       char           *value;
+       char           *val;
+
+       list = NULL;
+
+       /* Making the strings */
+       value = get_value_from_notestor(p);
+       fn = make_autosave_fn();
+
+       /* Read */
+       r = xml_read(fn);
+       if (r != NULL) {
+               while (r->cur != NULL) {
+                       e = xml_read_entry_get_entry(r);
+                       list = evas_list_append(list, strdup(e->value));
+                       free_xmlentry(e);
+                       xml_read_next_entry(r);
+               }
+               xml_read_end(r);
+       } else {
+               list = NULL;
+       }
+
+       /* Write */
+       w = xml_write(fn);
+       if (list != NULL) {
+               lt = list;
+               while (lt != NULL) {
+                       xml_write_append_entry(w, "NoteStor",
+                                              (char *) evas_list_data(lt));
+                       free(evas_list_data(lt));
+                       list = evas_list_remove(lt, evas_list_data(lt));
+                       lt = evas_list_next(lt);
+               }
+       }
+       val = get_value_from_notestor(p);
+       xml_write_append_entry(w, "NoteStor", val);
+       free(val);
+       xml_write_end(w);
+
+       /* Leaving */
+       evas_list_free(list);
+       free(value);
+       free(fn);
+       return;
+}
+
+void
 append_note_stor(NoteStor * p)
 {
        Evas_List      *list;
@@ -170,6 +226,18 @@
        return (retval);
 }
 
+XmlReadHandle  *
+stor_cycle_begin_autosave(void)
+{
+       char           *p;
+       XmlReadHandle  *retval;
+
+       p = make_autosave_fn();
+       retval = xml_read(p);
+       free(p);
+       return (retval);
+}
+
 void
 stor_cycle_end(XmlReadHandle * p)
 {
@@ -205,6 +273,61 @@
        return (h);
 }
 
+/* Autosave Functions */
+void
+autoload(void)
+{
+       XmlReadHandle  *r;
+       NoteStor       *p;
+
+       dml("Autoloading Saved Notes", 1);
+
+       r = stor_cycle_begin_autosave();
+       if (r != NULL) {
+               while (r->cur != NULL) {
+                       p = stor_cycle_get_notestor(r);
+                       new_note_with_values(p->width, p->height, p->title,
+                                            p->content);
+                       free_note_stor(p);
+                       stor_cycle_next(r);
+               }
+               stor_cycle_end(r);
+       }
+       return;
+}
+
+void
+autosave(void)
+{
+       int             x, y, w, h;
+       Note           *note;
+       Evas_List      *tmp = gbl_notes;
+       NoteStor       *n;
+       XmlWriteHandle *p;
+       char           *pp;
+
+       dml("Autosaving", 1);
+
+       pp = make_autosave_fn();
+       p = xml_write(pp);
+       xml_write_end(p);
+       free(pp);
+
+       while ((tmp = evas_list_next(tmp)) != NULL) {
+               note = evas_list_data(tmp);
+               ecore_evas_geometry_get(note->win, &x, &y, &w, &h);
+               n = alloc_note_stor();
+               n->width = w;
+               n->height = h;
+               n->title = strdup(get_title_by_note(tmp));
+               n->content = strdup(get_content_by_note(tmp));
+               append_autosave_note_stor(n);
+               free_note_stor(n);
+       }
+
+       return;
+}
+
 /* Internal Functions */
 char           *
 make_storage_fn(void)
@@ -215,6 +338,15 @@
        return (p);
 }
 
+char           *
+make_autosave_fn(void)
+{
+       char           *p = malloc(PATH_MAX);
+
+       snprintf(p, PATH_MAX, DEF_AUTOSAVE_LOC, getenv("HOME"));
+       return (p);
+}
+
 NoteStor       *
 get_notestor_from_value(char *e)
 {
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/storage.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- storage.h   6 Feb 2004 07:36:31 -0000       1.2
+++ storage.h   17 Feb 2004 12:07:29 -0000      1.3
@@ -22,9 +22,11 @@
 #include <Evas.h>              // For the list structures.
 
 #include "xml.h"
+#include "note.h"
 #include "debug.h"
 
 #define DEF_STORAGE_LOC "%s/.e/notes/notes.xml"
+#define DEF_AUTOSAVE_LOC "%s/.e/notes/autosave.xml"
 #define DEF_VALUE_SEPERATION "|"
 #define MAX_VALUE 2000
 
@@ -36,14 +38,17 @@
 } NoteStor;
 
 /* Freeing */
+NoteStor       *alloc_note_stor();
 void            free_note_stor(NoteStor * p);
 
 /* One Shot Functions. :-) */
 void            append_note_stor(NoteStor * p);
+void            append_autosave_note_stor(NoteStor * p);
 void            remove_note_stor(NoteStor * p);
 
 /* Cycle Functions */
 XmlReadHandle  *stor_cycle_begin(void);
+XmlReadHandle  *stor_cycle_begin_autosave(void);
 void            stor_cycle_end(XmlReadHandle * p);
 
 void            stor_cycle_next(XmlReadHandle * p);
@@ -51,8 +56,14 @@
 
 NoteStor       *stor_cycle_get_notestor(XmlReadHandle * p);
 
+/* Autosave Functions */
+void            autoload(void);
+void            autosave(void);
+
 /* Internal Functions */
 char           *make_storage_fn(void);
+char           *make_autosave_fn(void);
+
 NoteStor       *get_notestor_from_value(char *e);
 char           *get_value_from_notestor(NoteStor * p);
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/usage.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- usage.c     15 Feb 2004 15:13:35 -0000      1.5
+++ usage.c     17 Feb 2004 12:07:29 -0000      1.6
@@ -66,10 +66,16 @@
                        main_config->theme = strdup(optarg);
                        break;
                case 'C':
-                       main_config->controlcentre = atoi(optarg);
+                       if (atoi(optarg) == 0 || atoi(optarg) == 1)
+                               main_config->controlcentre = atoi(optarg);
+                       break;
+               case 'A':
+                       if (atoi(optarg) == 0 || atoi(optarg) == 1)
+                               main_config->autosave = atoi(optarg);
                        break;
                case 'i':
-                       main_config->intro = atoi(optarg);
+                       if (atoi(optarg) == 0 || atoi(optarg) == 1)
+                               main_config->intro = atoi(optarg);
                        break;
                case 'v':
                        printf(USAGE_VERSION, VERSION);
===================================================================
RCS file: /cvsroot/enlightenment/misc/enotes/src/usage.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- usage.h     15 Feb 2004 15:13:35 -0000      1.4
+++ usage.h     17 Feb 2004 12:07:29 -0000      1.5
@@ -43,13 +43,15 @@
 -t        --theme           STR     Theme\n\
 -C        --control-centre  INT     Enable/Disable the Control\n\
                                     Centre.\n\
+-A        --auto-save       INT     Enable the autosaving and\n\
+                                    loading of notes.\n\
 -i        --intro           INT     Display the Intro.\n\
 \
 \n"
 
 #define USAGE_VERSION "E-Notes Version:\n%s\n"
 
-#define OPTSTR "v?hc:r:t:i:R:d:"
+#define OPTSTR "v?hc:r:t:i:R:d:A:"
 
 static struct option long_options[] = {
        {"help", 0, 0, '?'},
@@ -61,6 +63,7 @@
        {"control-centre", 1, 0, 'C'},
        {"intro", 1, 0, 'i'},
        {"debug", 1, 0, 'd'},
+       {"auto-save", 1, 0, 'A'},
        {NULL, 0, 0, 0}
 };
 




-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to