home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cl-lib07.zip / samples.zip / usr / samples / address / controller.m < prev    next >
Text File  |  1995-03-05  |  6KB  |  227 lines

  1. #include "Controller.h"
  2. #include "address.h"
  3.  
  4. @implementation Controller
  5.  
  6. - init
  7. {
  8.   insertRecord = [[StdDialog alloc] initWithId: IDD_INSREP];
  9.   replaceRecord = [[StdDialog alloc] initWithId: IDD_INSREP];
  10.   infoRecord = [[StdDialog alloc] initWithId: IDD_INFO];
  11.  
  12.   [insertRecord setText: "Insert new Record"];
  13.   [replaceRecord setText: "Replace existing Record"];
  14.  
  15.   [insertRecord createObjects];
  16.   [replaceRecord createObjects];
  17.   [infoRecord createObjects];
  18.  
  19.   insertName = [insertRecord findFromID: IDD_NAMEENTRY];
  20.   insertAddress = [insertRecord findFromID: IDD_ADDRESSENTRY];
  21.   insertPhone = [insertRecord findFromID: IDD_PHONEENTRY];
  22.   insertFax = [insertRecord findFromID: IDD_FAXENTRY];
  23.   insertEMail = [insertRecord findFromID: IDD_EMAILENTRY];
  24.   replaceName = [replaceRecord findFromID: IDD_NAMEENTRY];
  25.   replaceAddress = [replaceRecord findFromID: IDD_ADDRESSENTRY];
  26.   replacePhone = [replaceRecord findFromID: IDD_PHONEENTRY];
  27.   replaceFax = [replaceRecord findFromID: IDD_FAXENTRY];
  28.   replaceEMail = [replaceRecord findFromID: IDD_EMAILENTRY];
  29.   infoName = [infoRecord findFromID: IDD_NAMEENTRY];
  30.   infoAddress = [infoRecord findFromID: IDD_ADDRESSENTRY];
  31.   infoPhone = [infoRecord findFromID: IDD_PHONEENTRY];
  32.   infoFax = [infoRecord findFromID: IDD_FAXENTRY];
  33.   infoEMail = [infoRecord findFromID: IDD_EMAILENTRY];
  34.  
  35.   database = [[DBFile alloc] init: "address.dbf"];
  36.   recordList = [[DBList alloc] initForDatabase: database];
  37.  
  38.   return self;
  39. }
  40.  
  41. - free
  42. {
  43.   [database free];
  44.   [insertRecord free];
  45.   [replaceRecord free];
  46.   [infoRecord free];
  47.   return [super free];
  48. }
  49.  
  50. - readList: sender;
  51. {
  52.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  53.   int i;
  54.  
  55.   [recordList fetchAllRecords];
  56.  
  57.   for (i = 0;i < [recordList count];i++) {
  58.     [[recordList findRecordAt: i] copyToDB];
  59.     [nameListBox insertItem: LIT_END text: [[database field: 0] string]];
  60.   }
  61.  
  62.   return self;
  63. }
  64.  
  65. - insert: sender
  66. {
  67.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  68.   char *nameBuffer;
  69.   char *addressBuffer;
  70.   char *phoneBuffer;
  71.   char *faxBuffer;
  72.   char *emailBuffer;
  73.  
  74.   [database clear];
  75.  
  76.   [insertName setText: ""];
  77.   [insertAddress setText: ""];
  78.   [insertPhone setText: ""];
  79.   [insertFax setText: ""];
  80.   [insertEMail setText: ""];
  81.  
  82.   [insertRecord runModalFor: sender];
  83.  
  84.   if ([insertRecord result] == DID_OK) {
  85.     nameBuffer = [insertName text: NULL];
  86.     addressBuffer = [insertAddress text: NULL];
  87.     phoneBuffer = [insertPhone text: NULL];
  88.     faxBuffer = [insertFax text: NULL];
  89.     emailBuffer = [insertEMail text: NULL];
  90.  
  91.     [[database field: 0] setString: nameBuffer];
  92.     [[database field: 1] setString: addressBuffer];
  93.     [[database field: 2] setString: phoneBuffer];
  94.     [[database field: 3] setString: faxBuffer];
  95.     [[database field: 4] setString: emailBuffer];
  96.  
  97.     [database append];
  98.     [recordList insertRecord: [[DBRecord alloc] initForDatabase: database]];
  99.  
  100.     [nameListBox insertItem: LIT_END text: nameBuffer];
  101.  
  102.     free (nameBuffer);
  103.     free (addressBuffer);
  104.     free (phoneBuffer);
  105.     free (faxBuffer);
  106.     free (emailBuffer);
  107.   }
  108.  
  109.   return self;
  110. }
  111.  
  112. - replace: sender
  113. {
  114.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  115.   SHORT selected = [nameListBox selected];
  116.   char *nameBuffer;
  117.   char *addressBuffer;
  118.   char *phoneBuffer;
  119.   char *faxBuffer;
  120.   char *emailBuffer;
  121.  
  122.   if (selected < 0)
  123.     return nil;
  124.  
  125.   [[recordList findRecordAt: selected] copyToDB];
  126.  
  127.   [replaceName setText: [[database field: 0] string]];
  128.   [replaceAddress setText: [[database field: 1] string]];
  129.   [replacePhone setText: [[database field: 2] string]];
  130.   [replaceFax setText: [[database field: 3] string]];
  131.   [replaceEMail setText: [[database field: 4] string]];
  132.  
  133.   [replaceRecord runModalFor: sender];
  134.  
  135.   if ([replaceRecord result] == DID_OK) {
  136.     nameBuffer = [replaceName text: NULL];
  137.     addressBuffer = [replaceAddress text: NULL];
  138.     phoneBuffer = [replacePhone text: NULL];
  139.     faxBuffer = [replaceFax text: NULL];
  140.     emailBuffer = [replaceEMail text: NULL];
  141.  
  142.     [[database field: 0] setString: nameBuffer];
  143.     [[database field: 1] setString: addressBuffer];
  144.     [[database field: 2] setString: phoneBuffer];
  145.     [[database field: 3] setString: faxBuffer];
  146.     [[database field: 4] setString: emailBuffer];
  147.  
  148.     [[recordList findRecordAt: selected] copyFromDB];
  149.     [[recordList findRecordAt: selected] replace];
  150.  
  151.     [nameListBox deleteItem: selected];
  152.     [nameListBox insertItem: selected text: nameBuffer];
  153.  
  154.     free (nameBuffer);
  155.     free (addressBuffer);
  156.     free (phoneBuffer);
  157.     free (faxBuffer);
  158.     free (emailBuffer);
  159.   }
  160.  
  161.   return self;
  162. }
  163.  
  164. - info: sender
  165. {
  166.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  167.   SHORT selected = [nameListBox selected];
  168.   
  169.   if (selected < 0)
  170.     return nil;
  171.   
  172.   [[recordList findRecordAt: selected] copyToDB];
  173.  
  174.   [infoName setText: [[database field: 0] string]];
  175.   [infoAddress setText: [[database field: 1] string]];
  176.   [infoPhone setText: [[database field: 2] string]];
  177.   [infoFax setText: [[database field: 3] string]];
  178.   [infoEMail setText: [[database field: 4] string]];
  179.  
  180.   [infoRecord runModalFor: sender];
  181.  
  182.   return self;
  183. }
  184.  
  185. - delete: sender
  186. {
  187.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  188.   SHORT selected = [nameListBox selected];
  189.   char  numberBuffer[6];
  190.   long  numberOfRecord;
  191.   char *nameBuffer;
  192.  
  193.   if (selected < 0)
  194.     return nil;
  195.  
  196.   if (WinMessageBox (HWND_DESKTOP,[sender window],
  197.              "Do you really want to delete the selected Item?",
  198.              "Addresses",
  199.              0,MB_YESNO | MB_QUERY) == MBID_YES) {
  200.     numberOfRecord = atoi(numberBuffer);
  201.     
  202.     [database readRecord: [[recordList findRecordAt: selected] recNo]];
  203.  
  204.     [nameListBox deleteItem: selected];
  205.     [database delete];
  206.     [recordList deleteRecordAt: selected];
  207.   }
  208.  
  209.   return self;
  210. }
  211.  
  212. - closeApp: sender
  213. {
  214.   WinPostMsg ([sender window],WM_CLOSE,0L,0L);
  215.   return self;
  216. }
  217.  
  218. - windowDidResize: sender
  219. {
  220.   ListBox *nameListBox = [sender findFromID: IDD_PUSHBUTTON1];
  221.  
  222.   [nameListBox setSize: 0:0:[sender width]:[sender height]];
  223.   return self;
  224. }
  225.  
  226. @end
  227.