#include "scbpage.h"#include <glib.h>

Go to the source code of this file.
Classes | |
| struct | _ScbPages |
Typedefs | |
| typedef struct _ScbPages | ScbPages |
| typedef ScbPages * | ScbPagesPtr |
Functions | |
| gboolean | scb_pages_new (ScbPagesPtr ptr) |
| void | scb_pages_free (ScbPagesPtr ptr) |
| gboolean | scb_pages_add_page (ScbPagesPtr pages, ScbPagePtr page) |
| ScbPagePtr | scb_pages_detach_page (ScbPagesPtr pages, ScbPageIdPtr id) |
| void | scb_pages_remove_page (ScbPagesPtr pages, ScbPageIdPtr id) |
| int | scb_pages_get_count (ScbPagesPtr ptr) |
| ScbPagePtr | scb_pages_get_page (ScbPagesPtr pages, ScbPageIdPtr id) |
| gboolean | scb_pages_change_page_id (ScbPagesPtr pages, ScbPageIdPtr oldId, ScbPageIdPtr newId) |
| gboolean | scb_pages_save (ScbPagesPtr pages, ScbXmlPtr xml) |
| gboolean | scb_pages_load (ScbPagesPtr pages, ScbXmlPtr xml) |
| void | scb_pages_dump (ScbPagesPtr pages) |
Copyright (C) 2005-2008 iRex Technologies B.V. All rights reserved.
| typedef ScbPages* ScbPagesPtr |
Definition at line 38 of file scbpages.h.
| gboolean scb_pages_add_page | ( | ScbPagesPtr | pages, | |
| ScbPagePtr | page | |||
| ) |
Definition at line 73 of file scbpages.c.
00074 { 00075 SCB_RET_FALSE_IF(NULL == pages || NULL == page, "Invalid pages or page pointer!"); 00076 00077 ScbPagePtr pItem = NULL; 00078 GList* ptr = g_list_first(pages->pages); 00079 while(ptr) 00080 { 00081 pItem = ptr->data; 00082 if (pItem && 0 == strncmp(pItem->id.id, page->id.id, SCB_MAX_PAGEID_LEN)) 00083 { 00084 // already exist, quit, it's ok, 00085 // SCB_WARN("Duplicated page id %s!", page->id.id); 00086 return TRUE; 00087 } 00088 ptr = g_list_next(ptr); 00089 } 00090 g_list_append(pages->pages, page); 00091 return TRUE; 00092 }
| gboolean scb_pages_change_page_id | ( | ScbPagesPtr | pages, | |
| ScbPageIdPtr | oldId, | |||
| ScbPageIdPtr | newId | |||
| ) |
Definition at line 171 of file scbpages.c.
00173 { 00174 ScbPagePtr pItem = NULL; 00175 GList* ptr = g_list_first(pages->pages); 00176 while(ptr) 00177 { 00178 pItem = ptr->data; 00179 if (pItem && 0 == strncmp(pItem->id.id, oldId->id, SCB_MAX_PAGEID_LEN)) 00180 { 00181 // ok, hit. 00182 strncpy(pItem->id.id, newId->id, SCB_MAX_PAGEID_LEN); 00183 return TRUE; 00184 } 00185 ptr = g_list_next(ptr); 00186 } 00187 return FALSE; 00188 }
| ScbPagePtr scb_pages_detach_page | ( | ScbPagesPtr | pages, | |
| ScbPageIdPtr | id | |||
| ) |
Definition at line 96 of file scbpages.c.
00097 { 00098 ScbPagePtr pItem = NULL; 00099 GList* ptr = g_list_first(pages->pages); 00100 while(ptr) 00101 { 00102 pItem = ptr->data; 00103 if (pItem && 0 == strncmp(pItem->id.id, id->id, SCB_MAX_PAGEID_LEN)) 00104 { 00105 // ok, hit. notice....... 00106 g_list_remove(pages->pages, pItem); 00107 return pItem; 00108 } 00109 ptr = g_list_next(ptr); 00110 } 00111 return NULL; 00112 }
| void scb_pages_dump | ( | ScbPagesPtr | pages | ) |
Definition at line 260 of file scbpages.c.
00261 { 00262 SCB_RET_IF(NULL == pages, "NULL pointer!"); 00263 g_list_foreach(pages->pages, _page_dump, 0); 00264 }

| void scb_pages_free | ( | ScbPagesPtr | ptr | ) |
Definition at line 57 of file scbpages.c.
00058 { 00059 if (ptr) 00060 { 00061 // release all stroke 00062 g_list_foreach(ptr->pages, _page_release, NULL); 00063 00064 // now the pointers are wild pointers 00065 g_list_free(ptr->pages); 00066 ptr->pages = NULL; 00067 } 00068 }

| int scb_pages_get_count | ( | ScbPagesPtr | ptr | ) |
Definition at line 139 of file scbpages.c.
00140 { 00141 SCB_RET_INT_IF(NULL == pages, SCB_INVALID_COUNT, "Invalid pages pointer!"); 00142 int len = g_list_length(pages->pages); 00143 if (len > 0) 00144 { 00145 return len - 1; 00146 } 00147 return SCB_INVALID_COUNT; 00148 }
| ScbPagePtr scb_pages_get_page | ( | ScbPagesPtr | pages, | |
| ScbPageIdPtr | id | |||
| ) |
Definition at line 152 of file scbpages.c.
00153 { 00154 ScbPagePtr pItem = NULL; 00155 GList* ptr = g_list_first(pages->pages); 00156 while(ptr) 00157 { 00158 pItem = ptr->data; 00159 if (pItem && 0 == strncmp(pItem->id.id, id->id, SCB_MAX_PAGEID_LEN)) 00160 { 00161 // ok, hit. notice....... 00162 return pItem; 00163 } 00164 ptr = g_list_next(ptr); 00165 } 00166 return NULL; 00167 }
| gboolean scb_pages_load | ( | ScbPagesPtr | pages, | |
| ScbXmlPtr | xml | |||
| ) |
Definition at line 219 of file scbpages.c.
00220 { 00221 // check 00222 SCB_RET_FALSE_IF(NULL == pages || NULL == xml, "Invalid pointer!"); 00223 00224 // construct xPath 00225 ScbXmlPtr self = scb_xml_clone(xml); 00226 strncat(self->xPath, "/pages", SCB_MAX_XML_PATH); 00227 self->index = 1; 00228 00229 // load pages 00230 gboolean bLoad = TRUE; 00231 while (bLoad) 00232 { 00233 ScbPagePtr page = scb_page_new(); 00234 bLoad = scb_page_load(page, self); 00235 if (bLoad) 00236 { 00237 scb_pages_add_page(pages, page); 00238 ++self->index; 00239 } 00240 else 00241 { 00242 scb_page_free(page); 00243 break; 00244 } 00245 } 00246 scb_xml_free(self); 00247 return TRUE; 00248 }

| gboolean scb_pages_new | ( | ScbPagesPtr | ptr | ) |
Definition at line 42 of file scbpages.c.
00043 { 00044 SCB_RET_FALSE_IF(NULL == ptr, "Invalid pointer!"); 00045 00046 ptr->pages = g_list_alloc(); 00047 if (NULL == ptr->pages) 00048 { 00049 SCB_ERROR("Could not allocate list!"); 00050 return FALSE; 00051 } 00052 return TRUE; 00053 }
| void scb_pages_remove_page | ( | ScbPagesPtr | pages, | |
| ScbPageIdPtr | id | |||
| ) |
Definition at line 116 of file scbpages.c.
00117 { 00118 SCB_RET_IF(NULL == pages || NULL == id, "Invalid pointer!"); 00119 00120 ScbPagePtr pItem = NULL; 00121 GList* ptr = g_list_first(pages->pages); 00122 while(ptr) 00123 { 00124 pItem = ptr->data; 00125 if (pItem && 0 == strncmp(pItem->id.id, id->id, SCB_MAX_PAGEID_LEN)) 00126 { 00127 // ok, hit. notice....... 00128 scb_page_free(pItem); 00129 g_list_remove(pages->pages, ptr->data); 00130 return; 00131 } 00132 ptr = g_list_next(ptr); 00133 } 00134 }

| gboolean scb_pages_save | ( | ScbPagesPtr | pages, | |
| ScbXmlPtr | xml | |||
| ) |
Definition at line 204 of file scbpages.c.
00205 { 00206 SCB_RET_FALSE_IF(NULL == pages || NULL == xml, "Invalid pointer!"); 00207 // xPath 00208 ScbXmlPtr self = scb_xml_clone(xml); 00209 self->index = 1; 00210 ermXmlNewString(&xml->handle, self->xPath, "pages", ""); 00211 strncat(self->xPath, "/pages", SCB_MAX_XML_PATH); 00212 g_list_foreach(pages->pages, _page_save, self); 00213 scb_xml_free(self); 00214 return TRUE; 00215 }

1.5.6