|
|
1.1 ! root 1: #include "cardfile.h" ! 2: ! 3: /*********************************************************************/ ! 4: /* Windows/PM Cardfile Shared Code */ ! 5: /* */ ! 6: /* (c) Copyright Microsoft Corp. 1987,1988 - All Rights Reserved */ ! 7: /*********************************************************************/ ! 8: ! 9: /*********************************************************************/ ! 10: /* The following shared code was developed from the original */ ! 11: /* Cardfile application. This code can be compiled to run under */ ! 12: /* either the Windows or the PM manager environment. All */ ! 13: /* functionality associated with bitmaps or printing has been */ ! 14: /* deleted. Some comments refering to these functions may still be */ ! 15: /* present in the code and should be disregarded. jw. */ ! 16: /*********************************************************************/ ! 17: ! 18: ! 19: /*********************************************************************/ ! 20: /* DoMerge - */ ! 21: /* Merge cardfile on disk to existing cardfile in memory. */ ! 22: /* */ ! 23: /* Same in Windows and PM. */ ! 24: /*********************************************************************/ ! 25: ! 26: void DoMerge() ! 27: { ! 28: char *pchBuf; ! 29: OFSTRUCT ofStruct; ! 30: ! 31: if(!fReadOnly && (pchBuf = (char *)PutUpDB(DTMERGE))) ! 32: { ! 33: /* check the name that the user specifies */ ! 34: if (OpenFile((LPSTR)pchBuf, (LPOFSTRUCT)&ofStruct, OF_PARSE)) ! 35: { ! 36: /* not a valid file name */ ! 37: CardfileOkError(IDS_EINVALIDFILE); ! 38: LocalFree((HANDLE)pchBuf); ! 39: return; ! 40: } ! 41: ! 42: /* save current data */ ! 43: if (CardPhone == IDM_PHONEBOOK || SaveCurrentCard(iFirstCard)) ! 44: { ! 45: /* merge the files */ ! 46: if(MergeCardFile(pchBuf)) ! 47: { ! 48: /* successful, reset information */ ! 49: iTopCard = iFirstCard = 0; ! 50: SetScrRangeAndPos(); ! 51: if (CardPhone == IDM_CARDFILE) ! 52: SetCurCard(iFirstCard); ! 53: InvalidateRect(hCardfileWnd, (LPRECT)NULL, TRUE); ! 54: } ! 55: } ! 56: LocalFree((HANDLE)pchBuf); ! 57: } ! 58: } ! 59: ! 60: ! 61: /*********************************************************************/ ! 62: /* DoOpen - */ ! 63: /* Open specified cardfile, checking file name for validity. */ ! 64: /* */ ! 65: /* Same in Windows and PM. */ ! 66: /*********************************************************************/ ! 67: ! 68: BOOL FAR DoOpen(pchBuf) ! 69: char *pchBuf; ! 70: { ! 71: int result = FALSE; ! 72: OFSTRUCT ofStruct; ! 73: ! 74: /* check the filename the user specified */ ! 75: if (OpenFile((LPSTR)pchBuf, (LPOFSTRUCT)&ofStruct, OF_PARSE)) ! 76: { ! 77: /* not a valid filename */ ! 78: CardfileOkError(IDS_EINVALIDFILE); ! 79: LocalFree((HANDLE)pchBuf); ! 80: return(0); ! 81: } ! 82: ! 83: /* read the file */ ! 84: if(ReadCardFile(pchBuf)) ! 85: { ! 86: /* successful, update caption and tempfile */ ! 87: SetCaption(); ! 88: Fdelete(TmpFile); ! 89: MakeTmpFile(); ! 90: ! 91: /* reset scroll bars */ ! 92: iTopCard = iFirstCard = 0; ! 93: SetScrRangeAndPos(); ! 94: ! 95: /* get card's data */ ! 96: if (CardPhone == IDM_CARDFILE); ! 97: SetCurCard(iFirstCard); ! 98: ! 99: CurCardHead.flags = 0; ! 100: InvalidateRect(hCardfileWnd, (LPRECT)NULL, TRUE); ! 101: result = TRUE; ! 102: } ! 103: return(result); ! 104: } ! 105: ! 106: ! 107: /*********************************************************************/ ! 108: /* MaybeSaveFile - */ ! 109: /* Prompt user to see if changes should be saved or if current */ ! 110: /* operation should be cancelled. */ ! 111: /* */ ! 112: /* Same in Windows and PM. */ ! 113: /*********************************************************************/ ! 114: ! 115: BOOL MaybeSaveFile() ! 116: { ! 117: char *pchFile; ! 118: int result; ! 119: char *pch; ! 120: OFSTRUCT ofStruct; ! 121: ! 122: /* put up a message box that says "Do you wish to save your edits?" */ ! 123: /* if so, save 'em */ ! 124: /* if returns FALSE, means it couldn't save, and whatever is happening */ ! 125: /* should not continue */ ! 126: ! 127: /* If file needs to be saved */ ! 128: if (fFileDirty || (CurCardHead.flags & FDIRTY) || ! 129: SendMessage(hCardWnd, EM_GETMODIFY, 0, 0L)) ! 130: { ! 131: if (CurIFile[0]) ! 132: { ! 133: /* get to the end of the file */ ! 134: for (pch = CurIFile ; *pch; ++pch) ! 135: ; ! 136: /* scan backwards to beginning of filename */ ! 137: while (pch > CurIFile && *pch != '\\') ! 138: pch = (PSTR)AnsiPrev(CurIFile, pch); ! 139: if (*pch == '\\') ! 140: pch++; ! 141: ! 142: AnsiUpper((LPSTR)pch); ! 143: } ! 144: else ! 145: pch = rgchUntitled; ! 146: ! 147: /* put up the message, merging in filename */ ! 148: result = MyMessageBox(IDS_OKTOSAVE, pch, ! 149: MB_YESNOCANCEL | MB_ICONQUESTION); ! 150: ! 151: /* if user wants to save */ ! 152: if (result == IDYES) ! 153: { ! 154: /* save the current information */ ! 155: if (SaveCurrentCard(iFirstCard)) ! 156: { ! 157: /* if unnamed, need to get a filename */ ! 158: if (!CurIFile[0]) ! 159: { ! 160: if (GetNewFileName(&ofStruct)) ! 161: pchFile = ofStruct.szPathName; ! 162: else ! 163: { ! 164: SetCurCard(iFirstCard); ! 165: return(FALSE); /* cancelled */ ! 166: } ! 167: } ! 168: else ! 169: pchFile = CurIFile; ! 170: ! 171: /* save file, if can't save don't continue */ ! 172: if (!WriteCardFile(pchFile)) ! 173: return(FALSE); ! 174: } ! 175: else ! 176: return(FALSE); ! 177: } ! 178: else if (result == IDCANCEL) ! 179: return(FALSE); ! 180: } ! 181: ! 182: return(TRUE); ! 183: } ! 184: ! 185: ! 186: /*********************************************************************/ ! 187: /* GetNewFileName - ! 188: /* Asks user for a filename. ! 189: /* ! 190: /* Same in Windows and PM. ! 191: /*********************************************************************/ ! 192: ! 193: BOOL GetNewFileName(pOFStruct) ! 194: POFSTRUCT pOFStruct; ! 195: { ! 196: PSTR pchBuf; ! 197: BOOL fDone; ! 198: int fh; ! 199: ! 200: fDone = FALSE; ! 201: while (!fDone) ! 202: { ! 203: if(pchBuf = PutUpDB(DTSAVE)) ! 204: { ! 205: /* check for valid filename */ ! 206: if (OpenFile((LPSTR)pchBuf, (LPOFSTRUCT)pOFStruct, OF_PARSE)) ! 207: { ! 208: CardfileOkError(IDS_EINVALIDFILE); ! 209: } ! 210: ! 211: /* check to see if file already exists */ ! 212: else if ((fh = MyOpen((LPSTR)pchBuf, READ)) > -1) ! 213: { ! 214: /* it does, close it and as if user wants to overwrite */ ! 215: MyClose(fh); ! 216: AnsiUpper((LPSTR)pchBuf); ! 217: if (MyMessageBox(IDS_EFILEEXISTS, ! 218: pchBuf, ! 219: MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) ! 220: == IDYES) ! 221: { ! 222: /* does, done */ ! 223: fDone = TRUE; ! 224: } ! 225: } ! 226: else ! 227: /* file does not exist, done */ ! 228: fDone = TRUE; ! 229: ! 230: /* free up the response buffer */ ! 231: LocalFree((HANDLE)pchBuf); ! 232: } ! 233: else ! 234: /* cancelled save as dialog box */ ! 235: return(FALSE); ! 236: } ! 237: return(TRUE); ! 238: } ! 239:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.