home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 Mobile / Chip_Mobile_2001.iso / palm / business / printcar / printcar.exe / src / PrintCardPreferencesForm.cc < prev    next >
C/C++ Source or Header  |  2000-06-11  |  3KB  |  107 lines

  1. //
  2. //  $Id: PrintCardPreferencesForm.cc,v 1.2 2000/06/10 22:17:59 sergey Exp $
  3. //
  4.  
  5. #include <Pilot.h>
  6. #include "PrintCardPreferencesForm.h"
  7. #include "PrintCardPreferences.h"
  8. #include "Util/MemBuffer.h"
  9. #include "Util/Assert.h"
  10.  
  11. #include "PrintCardRes.h"
  12.  
  13.  
  14. PrintCardPreferencesForm::PrintCardPreferencesForm(Word formID, PrintCardPreferences& preferences):
  15.     UI::Form(formID),
  16.     _preferences(preferences)
  17. {}
  18.  
  19. // operations
  20.  
  21. void PrintCardPreferencesForm::create()
  22. {
  23.     UI::Form::create();
  24.  
  25.     // static "thunk" for the form' event handler
  26.     static UI::FormEventHandler<PrintCardPreferencesForm> eventHandler;
  27.     eventHandler.init(this);
  28.  
  29.     loadPreferences();
  30. }
  31.  
  32. // event handlers
  33.  
  34. bool PrintCardPreferencesForm::handleCtlSelectEvent(Word controlID, bool)
  35. {
  36.     switch(controlID)
  37.     {
  38.         case ID_OK_BUTTON:
  39.             savePreferences();
  40.             return false;
  41.  
  42.         case ID_CANCEL_BUTTON:
  43.             return false;
  44.  
  45.         case ID_SET_DEFAULT_BUTTON:
  46.             _preferences.setDefaults();
  47.             loadPreferences();
  48.             FrmDrawForm(formPtr());         // redraw screen to show changed fields
  49.             return true;
  50.     }
  51.  
  52.     return false;
  53. }
  54.  
  55. // implementation
  56.  
  57. void PrintCardPreferencesForm::loadPreferences()
  58. {
  59.     setFieldIntValue(ID_FRAME_HEIGHT_FIELD, _preferences.frameHeight());
  60.     setFieldIntValue(ID_FRAME_WIDTH_FIELD, _preferences.frameWidth());
  61.     setFieldIntValue(ID_FRAME_MARGIN_FIELD, _preferences.frameMargin());
  62.  
  63.     setFieldIntValue(ID_SCALE_X_FIELD, _preferences.scaleX());
  64.     setFieldIntValue(ID_SCALE_Y_FIELD, _preferences.scaleY());
  65.  
  66.     setControlValue(ID_ONE_COPY_BUTTON, _preferences.oneCopy());
  67.     setControlValue(ID_MANY_COPIES_BUTTON, !_preferences.oneCopy());
  68. }
  69.  
  70. void PrintCardPreferencesForm::savePreferences()
  71. {
  72.     _preferences.setFrameHeight(fieldIntValue(ID_FRAME_HEIGHT_FIELD));
  73.     _preferences.setFrameWidth(fieldIntValue(ID_FRAME_WIDTH_FIELD));
  74.     _preferences.setFrameMargin(fieldIntValue(ID_FRAME_MARGIN_FIELD));
  75.  
  76.     _preferences.setScaleX(fieldIntValue(ID_SCALE_X_FIELD));
  77.     _preferences.setScaleY(fieldIntValue(ID_SCALE_Y_FIELD));
  78.  
  79.     _preferences.setOneCopy(controlValue(ID_ONE_COPY_BUTTON));
  80. }
  81.  
  82. int PrintCardPreferencesForm::fieldIntValue(Word fieldID) const
  83. {
  84.     return StrAToI(FldGetTextPtr(getObjectPtr<FieldPtr>(frmFieldObj, fieldID)));
  85. }
  86.  
  87. void PrintCardPreferencesForm::setFieldIntValue(Word fieldID, int value)
  88. {
  89.     FieldPtr fieldPtr = getObjectPtr<FieldPtr>(frmFieldObj, fieldID);
  90.     assert(fieldPtr != 0);
  91.  
  92.     Util::MemBuffer numBuffer((VoidHand)FldGetTextHandle(fieldPtr));
  93.     StrIToA((char*)numBuffer.lock(sizeof(long)*8+1), value);
  94.  
  95.     FldSetTextHandle(fieldPtr, (Handle)numBuffer.release());
  96. }
  97.  
  98. int PrintCardPreferencesForm::controlValue(Word controlID) const
  99. {
  100.     return CtlGetValue(getObjectPtr<ControlPtr>(frmControlObj, controlID));
  101. }
  102.  
  103. void PrintCardPreferencesForm::setControlValue(Word controlID, int value)
  104. {
  105.     CtlSetValue(getObjectPtr<ControlPtr>(frmControlObj, controlID), value);
  106. }
  107.