home *** CD-ROM | disk | FTP | other *** search
/ linuxmafia.com 2016 / linuxmafia.com.tar / linuxmafia.com / pub / palmos / wapuniverse-src-0.3.5.build9.tar.gz / wapuniverse-src-0.3.5.build9.tar / wapuniverse-0.3.5.build9 / formUrlList.c < prev    next >
C/C++ Source or Header  |  2000-11-12  |  10KB  |  308 lines

  1. // ---------------------------------------------------------------------------
  2. // FormUrlList.c
  3. // Contains PalmOS specific code, for URLs form
  4. // 
  5. // Project: WAPUniverse for PalmOS
  6. // Copyright ⌐ 1999-2000 Filip Onkelinx
  7. //
  8. // http://www.wapuniverse.com/
  9. // filip@onkelinx.com
  10. //
  11. // This program is free software; you can redistribute it and/or
  12. // modify it under the terms of the GNU General Public License
  13. // as published by the Free Software Foundation; either version 2
  14. // of the License, or (at your option) any later version.
  15. //
  16. // This program is distributed in the hope that it will be useful,
  17. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. // GNU General Public License for more details.
  20. //
  21. // You should have received a copy of the GNU General Public License
  22. // along with this program; if not, write to the Free Software 
  23. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
  24. //
  25. // 
  26. // $Workfile: formUrlList.c $  
  27. // $Author: wapuniverse $  
  28. // $Date: 2000/11/11 20:51:09 $     
  29. // $Revision: 1.7 $
  30. // 
  31. // $Header: /cvsroot/wapuniverse/wapuniverse/src/formUrlList.c,v 1.7 2000/11/11 20:51:09 wapuniverse Exp $
  32. // 
  33. // -------------------------------------------------------------------------------
  34.  
  35. #include    <PalmOS.h>
  36. #include    <SysEvtMgr.h>
  37. #include     "WAPUniverse.h"
  38. #include    "DbUrl.h"
  39. #include    "formUrlList.h"
  40. #include     "PalmUtils.h"
  41. #include     "../res/WAPUniverse_res.h"
  42. #include    "MenuHnd.h"
  43. #ifdef __GNUC__
  44. #include "callbacks.h"
  45. #endif
  46.  
  47.  
  48. static Boolean ButtonOpen_OH(EventPtr event, GlobalsType *g) SEC_1;     /* Button */
  49. static Boolean ButtonNew_OH(EventPtr event, GlobalsType *g) SEC_1;     /* Button */
  50. static Boolean ButtonEdit_OH(EventPtr event, GlobalsType *g) SEC_1;     /* Button */
  51. static Boolean URLsCategoryTrigger_OH(EventPtr event, GlobalsType *g) SEC_1;     /* Pop-up Trigger */
  52. static Boolean ListURL_OH(EventPtr event) SEC_1;     /* List */
  53. static Boolean CategoriesList_OH(EventPtr event) SEC_1;     /* List */
  54. static void DrawOneURLInList (Int16 itemNumber, RectangleType *bounds, Char * * text) SEC_1;
  55. static void InitViewURLs (GlobalsType *g) SEC_1;
  56.  
  57. static void
  58. DrawOneURLInList (Int16 itemNumber, RectangleType *bounds, Char * * text)
  59. {
  60.   MemHandle         h;
  61.   void                *p =NULL;
  62.   Int16             seekAmount = itemNumber;
  63.   UInt16            index = 0;
  64.   GlobalsType        *g;
  65.   
  66. #ifdef __GNUC__
  67.   CALLBACK_PROLOGUE
  68. #endif
  69.  
  70.   FtrGet(wuAppType, ftrGlobals, (UInt32 *)&g);
  71.  
  72.   // must do seek to skip over secret records
  73.     DmSeekRecordInCategory (g->DbUrlDb, &index, seekAmount, dmSeekForward, g->DbUrlCurrentCategory);
  74.   h = DmQueryRecord (g->DbUrlDb, index);
  75.   if (h)
  76.     {
  77.       dbUrlPackedURL*      packedURL = MemHandleLock (h);
  78.       dbUrlURL       url;
  79.       dbUrlUnPackURL (&url, packedURL);
  80.       p = (void *)packedURL;
  81.       DrawCharsToFitWidth (url.name, bounds, ' ');
  82.       if (p){
  83.           MemPtrUnlock (p);
  84.       }
  85.     }
  86. #ifdef __GNUC__
  87.   CALLBACK_EPILOGUE
  88. #endif
  89. }
  90.  
  91. static void
  92. InitViewURLs (GlobalsType *g)
  93. {
  94.  
  95.   FormPtr         frm = FrmGetActiveForm ();
  96.   ListPtr         list = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, listUrlList));
  97.   UInt16            numURLs = DmNumRecordsInCategory (g->DbUrlDb, g->DbUrlCurrentCategory);
  98.   LstSetListChoices (list, NULL, numURLs);
  99.   LstSetDrawFunction (list, DrawOneURLInList);
  100.  
  101.   enableUrlEditOpen(g);
  102.   CategoryGetName (g->DbUrlDb, g->DbUrlCurrentCategory, g->DbUrlCategoryName);
  103.   CategorySetTriggerLabel (GetObjectPtr (triggerUrlListCategory), g->DbUrlCategoryName);
  104. }
  105.  
  106. void enableUrlEditOpen(GlobalsType *g)
  107. {
  108.   FormPtr    frm;
  109.   Boolean     enable;
  110.   
  111.     if (dbUrlNumRecords(g) >0)
  112.         enable = true;
  113.     else
  114.         enable = false;
  115.     frm = FrmGetFormPtr (frmUrlList);
  116.     CtlSetEnabled(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, buttonOpen)),enable);
  117.       CtlSetEnabled(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, buttonEdit)),enable);
  118.     CtlSetUsable(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, buttonOpen)),enable);
  119.       CtlSetUsable(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, buttonEdit)),enable);
  120.     
  121. }
  122.  
  123.  
  124. /**----------------------------------**/
  125. /** Form Event Handler for FormURLs**/
  126. /**----------------------------------**/
  127.  
  128. /****************************************************/
  129. /* 
  130.    Function: Boolean FormURLs_EH(EventPtr event);
  131.    Description: Main Form Event Handler for FormURLs
  132.  */
  133. /****************************************************/
  134.  
  135.  
  136. /* Form Event Handler */
  137. Boolean
  138. ehFormUrlList(EventPtr event)
  139. {
  140.     Boolean handled = false;
  141.     GlobalsType *g;
  142.  
  143. #ifdef __GNUC__
  144.     CALLBACK_PROLOGUE
  145. #endif
  146.  
  147.       FtrGet(wuAppType, ftrGlobals, (UInt32 *)&g);
  148.     switch(event->eType) {
  149.  
  150.         case ctlSelectEvent:
  151.             if (event->data.ctlSelect.controlID == buttonOpen) {
  152.                 ButtonOpen_OH(event,g); }
  153.             if (event->data.ctlSelect.controlID == buttonNew) {
  154.                 ButtonNew_OH(event,g); }
  155.             if (event->data.ctlSelect.controlID == buttonEdit) {
  156.                 ButtonEdit_OH(event,g); }
  157.             if (event->data.ctlSelect.controlID == buttonViewU) {
  158.                 SwitchForm(frmConnectionList,g); }
  159.             if (event->data.ctlSelect.controlID == buttonInfoU) {
  160.                 DisplayAbout(); }
  161.             if (event->data.ctlSelect.controlID == triggerUrlListCategory) {
  162.                 URLsCategoryTrigger_OH(event,g); }
  163.             break;
  164.  
  165.         case lstSelectEvent:
  166.         case popSelectEvent:
  167.             if (event->data.ctlSelect.controlID == triggerUrlListCategory) {
  168.                 URLsCategoryTrigger_OH(event,g); }
  169.             if (event->data.ctlSelect.controlID == listUrlList) {
  170.                 ListURL_OH(event); }
  171.             if (event->data.ctlSelect.controlID == listCategoriesList) {
  172.                 CategoriesList_OH(event); }
  173.             break;
  174.  
  175.         case frmOpenEvent:
  176.            InitViewURLs(g);
  177.            FrmDrawForm(FrmGetActiveForm());
  178.            handled = true;
  179.            break;
  180.  
  181.         case menuEvent:
  182.            mhMenuOptions(event->data.menu.itemID,g);
  183.            break;
  184.     
  185.           default:
  186.        break;
  187.  
  188.            }
  189. #ifdef __GNUC__
  190.     CALLBACK_EPILOGUE
  191. #endif
  192.     return handled;
  193. }
  194.  
  195.  
  196. /* Item Handler Functions Here */
  197.  
  198. /**--------------------------------------**/
  199. /** Form Object Handler Functions for FormURLs **/
  200. /**--------------------------------------**/
  201.  
  202. /****************************************************/
  203. /* 
  204.    Function: Boolean ButtonOpen_OH(EventPtr event);
  205.    Description: Button Object Handler for the FormURLs Form
  206.  */
  207. /****************************************************/
  208.  
  209. static Boolean ButtonOpen_OH(EventPtr event, GlobalsType *g)
  210. {
  211.  FormPtr  frm;
  212.  
  213.    frm = FrmGetActiveForm ();
  214.    g->DbUrlCurrentRecord = LstGetSelection (FrmGetObjectPtr (frm,
  215.                                        FrmGetObjectIndex(frm, listUrlList)));
  216.    g->CurrentView = frmBrowser;
  217.    FrmGotoForm (g->CurrentView);
  218.     return(true);
  219. }
  220.  
  221.  
  222. /****************************************************/
  223. /* 
  224.    Function: Boolean ButtonNew_OH(EventPtr event);
  225.    Description: Button Object Handler for the FormURLs Form
  226.  */
  227. /****************************************************/
  228.  
  229. static Boolean ButtonNew_OH(EventPtr event, GlobalsType *g)
  230. {
  231.     dbUrlCreateRecord (g);
  232.     g->CurrentView = frmEditURL;
  233.     FrmGotoForm (g->CurrentView);
  234.     enableUrlEditOpen(g);
  235.     return(true);
  236. }
  237.  
  238.  
  239. /****************************************************/
  240. /* 
  241.    Function: Boolean ButtonEdit_OH(EventPtr event);
  242.    Description: Button Object Handler for the FormURLs Form
  243.  */
  244. /****************************************************/
  245.  
  246. static Boolean ButtonEdit_OH(EventPtr event, GlobalsType *g)
  247. {
  248. FormPtr frm;
  249.  
  250.    frm = FrmGetActiveForm ();
  251.    g->DbUrlCurrentRecord = LstGetSelection (FrmGetObjectPtr (frm,
  252.                                         FrmGetObjectIndex(frm, listUrlList)));
  253.    g->CurrentView = frmEditURL;
  254.    FrmGotoForm (g->CurrentView);
  255.    enableUrlEditOpen(g);
  256.    return(true);
  257. }
  258.  
  259. /****************************************************/
  260. /* 
  261.    Function: Int16 URLsCategoryTrigger_OH(EventPtr event);
  262.    Description: Pop-up Trigger Object Handler for the FormURLs Form
  263.  */
  264. /****************************************************/
  265.  
  266. static Boolean URLsCategoryTrigger_OH(EventPtr event, GlobalsType *g)
  267. {
  268.     if (CategorySelect (g->DbUrlDb, FrmGetActiveForm (),
  269.                               triggerUrlListCategory, listCategoriesList,
  270.                               true, &(g->DbUrlCurrentCategory), g->DbUrlCategoryName, 1, 0))
  271.       {
  272.               g->NewCategoryEdited = true;
  273.       }
  274.     InitViewURLs (g);
  275.     FrmDrawForm (FrmGetActiveForm ());
  276.     return(true);
  277. }
  278.  
  279.  
  280. /****************************************************/
  281. /* 
  282.    Function: Int16 ListURL_OH(EventPtr event);
  283.    Description: List Object Handler for the FormURLs Form
  284.  */
  285. /****************************************************/
  286.  
  287. static Boolean ListURL_OH(EventPtr event)
  288. {
  289.  
  290.     return(true);
  291. }
  292.  
  293.  
  294. /****************************************************/
  295. /* 
  296.    Function: Int16 CategoriesList_OH(EventPtr event);
  297.    Description: List Object Handler for the FormURLs Form
  298.  */
  299. /****************************************************/
  300.  
  301. static Boolean CategoriesList_OH(EventPtr event)
  302. {
  303.  
  304.     return(true);
  305. }
  306.  
  307.  
  308.