Changeset 1025 for trunk/dll/mainwnd.c


Ignore:
Timestamp:
Jun 20, 2008, 3:54:15 AM (17 years ago)
Author:
John Small
Message:

Ticket 227: Changes allow modifications and deletions of saved
states using the reserved name of "FM2Shutdown". If the
"Save directory state on close" setting is enabled, then users
are warned of the consequences of deleting or redefining this
state.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/mainwnd.c

    r1024 r1025  
    45914591      // Complain if attempting to use reserved name
    45924592      if (stricmp(szStateName, GetPString(IDS_STATETEXT)) == 0 ||
    4593           stricmp(szStateName, GetPString(IDS_FM2TEMPTEXT)) == 0 ||
    4594           stricmp(szStateName, GetPString(IDS_SHUTDOWNSTATE)) == 0)
     4593//        stricmp(szStateName, GetPString(IDS_FM2TEMPTEXT)) == 0 ||
     4594//        stricmp(szStateName, GetPString(IDS_SHUTDOWNSTATE)) == 0)
     4595          stricmp(szStateName, GetPString(IDS_FM2TEMPTEXT)) == 0)
    45954596      {
    45964597        saymsg(MB_ENTER | MB_ICONASTERISK, hwnd,
     
    45994600      }
    46004601      // Ignore request if blank
    4601       else if (*szStateName) {
    4602         if (SHORT1FROMMP(mp1) == IDM_SAVEDIRCNRSTATE) {
    4603           // Save
    4604           INT nSaved = SaveDirCnrState(hwnd, szStateName);
    4605           if (nSaved > 0) {
    4606             INT ret = add_setup(szStateName);
    4607             if (ret == 0) {
    4608               WinSendMsg(hwndStatelist, LM_INSERTITEM,
    4609                          MPFROM2SHORT(LIT_SORTASCENDING, 0), MPFROMP(szStateName));
    4610               save_setups();
    4611             }
    4612             else if (ret != 1) {
    4613               saymsg(MB_ENTER | MB_ICONASTERISK, hwnd,
    4614                      GetPString(IDS_WARNINGTEXT),
    4615                      "\"%s\" state name add failed", szStateName);      // 15 Apr 07 SHL failed
    4616               WinSetWindowText(hwndStatelist, GetPString(IDS_STATETEXT));
    4617             }
    4618           }
    4619           else {
    4620             saymsg(MB_ENTER | MB_ICONASTERISK,
    4621                    hwnd,
    4622                    GetPString(IDS_WARNINGTEXT),
    4623                    nSaved == 0 ?
    4624                      "Nothing to save" :
    4625                      "State data save failed");
    4626             WinSetWindowText(hwndStatelist, GetPString(IDS_STATETEXT));
    4627           }
    4628         }
    4629         else {
    4630           // Delete
    4631           ULONG numsaves = 0, size, x;
    4632           CHAR s[STATE_NAME_MAX_BYTES + 80];
    4633 
    4634           INT ret = remove_setup(szStateName);
    4635           if (ret == 1)
    4636             save_setups();
    4637           sprintf(s, "%s.NumDirsLastTime", szStateName);
    4638           size = sizeof(ULONG);
    4639           if (!PrfQueryProfileData(fmprof,
    4640                                    FM3Str,
    4641                                    s,
    4642                                    (PVOID)&numsaves,
    4643                                    &size)) {
    4644             saymsg(MB_ENTER | MB_ICONASTERISK, hwnd,
    4645                    GetPString(IDS_WARNINGTEXT),
    4646                    GetPString(IDS_DOESNTEXISTTEXT), szStateName);
    4647           }
    4648           else if (!size)
    4649             Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
    4650           else {
    4651             PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L);
    4652             for (x = 0; x < numsaves; x++) {
    4653               sprintf(s, "%s.DirCnrPos.%lu", szStateName, x);
    4654               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4655               sprintf(s, "%s.DirCnrDir.%lu", szStateName, x);
    4656               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4657               sprintf(s, "%s.DirCnrSort.%lu", szStateName, x);
    4658               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4659               sprintf(s, "%s.DirCnrFilter.%lu", szStateName, x);
    4660               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4661               sprintf(s, "%s.DirCnrView.%lu", szStateName, x);
    4662               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4663               sprintf(s, "%s.DirCnr.%lu.DetailsLongname", szStateName, x);
    4664               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4665               sprintf(s, "%s.DirCnr.%lu.DetailsSubject", szStateName, x);
    4666               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4667               sprintf(s, "%s.DirCnr.%lu.DetailsSize", szStateName, x);
    4668               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4669               sprintf(s, "%s.DirCnr.%lu.DetailsEA", szStateName, x);
    4670               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4671               sprintf(s, "%s.DirCnr.%lu.DetailsAttr", szStateName, x);
    4672               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4673               sprintf(s, "%s.DirCnr.%lu.DetailsIcon", szStateName, x);
    4674               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4675               sprintf(s, "%s.DirCnr.%lu.DetailsLWDate", szStateName, x);
    4676               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4677               sprintf(s, "%s.DirCnr.%lu.DetailsLWTime", szStateName, x);
    4678               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4679               sprintf(s, "%s.DirCnr.%lu.DetailsLADate", szStateName, x);
    4680               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4681               sprintf(s, "%s.DirCnr.%lu.DetailsLATime", szStateName, x);
    4682               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4683               sprintf(s, "%s.DirCnr.%lu.DetailsCRDate", szStateName, x);
    4684               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4685               sprintf(s, "%s.DirCnr.%lu.DetailsCRTime", szStateName, x);
    4686               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4687               sprintf(s, "%s.DirCnr.%lu.Backgroundcolor", szStateName, x);
    4688               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4689               sprintf(s, "%s.DirCnr.%lu.Fontnamesize", szStateName, x);
    4690               PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4691             }
    4692             sprintf(s, "%s.LastTreePos", szStateName);
    4693             PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4694             sprintf(s, "%s.MySizeLastTime", szStateName);
    4695             PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
    4696           }
    4697           PostMsg(hwnd, UM_FILLSETUPLIST, MPVOID, MPVOID);
     4602      else if (*szStateName)
     4603      {
     4604        BOOL fAbortOperation = FALSE;
     4605        if (!fNoSaveState && fSaveState && stricmp(szStateName, GetPString(IDS_SHUTDOWNSTATE)) == 0)
     4606        {       
     4607          if (saymsg(MB_YESNO | MB_DEFBUTTON2 | MB_ICONASTERISK, hwnd,
     4608              GetPString(IDS_WARNINGTEXT),
     4609              "\"%s\" is the state name used by 'Save directory container state'. Any changes to this state will last only until FM/2 closes or this setting is disabled. Proceed with this change?", szStateName) == MBID_NO)
     4610              fAbortOperation = TRUE;
     4611        }
     4612        if (!fAbortOperation) {
     4613          if (SHORT1FROMMP(mp1) == IDM_SAVEDIRCNRSTATE) {
     4614            // Save
     4615            INT nSaved = SaveDirCnrState(hwnd, szStateName);
     4616            if (nSaved > 0) {
     4617              INT ret = add_setup(szStateName);
     4618              if (ret == 0) {
     4619                WinSendMsg(hwndStatelist, LM_INSERTITEM,
     4620                           MPFROM2SHORT(LIT_SORTASCENDING, 0), MPFROMP(szStateName));
     4621                save_setups();
     4622              }
     4623              else if (ret != 1) {
     4624                saymsg(MB_ENTER | MB_ICONASTERISK, hwnd,
     4625                       GetPString(IDS_WARNINGTEXT),
     4626                       "\"%s\" state name add failed", szStateName);      // 15 Apr 07 SHL failed
     4627                WinSetWindowText(hwndStatelist, GetPString(IDS_STATETEXT));
     4628              }
     4629            }
     4630            else {
     4631                    saymsg(MB_ENTER | MB_ICONASTERISK,
     4632                           hwnd,
     4633                           GetPString(IDS_WARNINGTEXT),
     4634                           nSaved == 0 ?
     4635                             "Nothing to save" :
     4636                             "State data save failed");
     4637                    WinSetWindowText(hwndStatelist, GetPString(IDS_STATETEXT));
     4638                  }
     4639                }
     4640                else {
     4641                  // Delete
     4642                  ULONG numsaves = 0, size, x;
     4643                  CHAR s[STATE_NAME_MAX_BYTES + 80];
     4644
     4645                  INT ret = remove_setup(szStateName);
     4646                  if (ret == 1)
     4647                    save_setups();
     4648                  sprintf(s, "%s.NumDirsLastTime", szStateName);
     4649                  size = sizeof(ULONG);
     4650                  if (!PrfQueryProfileData(fmprof,
     4651                                           FM3Str,
     4652                                           s,
     4653                                           (PVOID)&numsaves,
     4654                                           &size)) {
     4655                    saymsg(MB_ENTER | MB_ICONASTERISK, hwnd,
     4656                           GetPString(IDS_WARNINGTEXT),
     4657                           GetPString(IDS_DOESNTEXISTTEXT), szStateName);
     4658                  }
     4659                  else if (!size)
     4660                    Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
     4661                  else {
     4662                    PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L);
     4663                    for (x = 0; x < numsaves; x++) {
     4664                      sprintf(s, "%s.DirCnrPos.%lu", szStateName, x);
     4665                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4666                      sprintf(s, "%s.DirCnrDir.%lu", szStateName, x);
     4667                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4668                      sprintf(s, "%s.DirCnrSort.%lu", szStateName, x);
     4669                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4670                      sprintf(s, "%s.DirCnrFilter.%lu", szStateName, x);
     4671                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4672                      sprintf(s, "%s.DirCnrView.%lu", szStateName, x);
     4673                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4674                      sprintf(s, "%s.DirCnr.%lu.DetailsLongname", szStateName, x);
     4675                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4676                      sprintf(s, "%s.DirCnr.%lu.DetailsSubject", szStateName, x);
     4677                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4678                      sprintf(s, "%s.DirCnr.%lu.DetailsSize", szStateName, x);
     4679                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4680                      sprintf(s, "%s.DirCnr.%lu.DetailsEA", szStateName, x);
     4681                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4682                      sprintf(s, "%s.DirCnr.%lu.DetailsAttr", szStateName, x);
     4683                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4684                      sprintf(s, "%s.DirCnr.%lu.DetailsIcon", szStateName, x);
     4685                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4686                      sprintf(s, "%s.DirCnr.%lu.DetailsLWDate", szStateName, x);
     4687                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4688                      sprintf(s, "%s.DirCnr.%lu.DetailsLWTime", szStateName, x);
     4689                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4690                      sprintf(s, "%s.DirCnr.%lu.DetailsLADate", szStateName, x);
     4691                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4692                      sprintf(s, "%s.DirCnr.%lu.DetailsLATime", szStateName, x);
     4693                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4694                      sprintf(s, "%s.DirCnr.%lu.DetailsCRDate", szStateName, x);
     4695                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4696                      sprintf(s, "%s.DirCnr.%lu.DetailsCRTime", szStateName, x);
     4697                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4698                      sprintf(s, "%s.DirCnr.%lu.Backgroundcolor", szStateName, x);
     4699                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4700                      sprintf(s, "%s.DirCnr.%lu.Fontnamesize", szStateName, x);
     4701                      PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4702                    }
     4703                    sprintf(s, "%s.LastTreePos", szStateName);
     4704                    PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4705                    sprintf(s, "%s.MySizeLastTime", szStateName);
     4706                    PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0);
     4707                  }
     4708                  PostMsg(hwnd, UM_FILLSETUPLIST, MPVOID, MPVOID);
     4709                }
    46984710        }
    46994711      }
     
    57115723  case UM_SETUP3:
    57125724    /* start remaining child windows */
    5713     if (!fNoSaveState && fSaveState)
    5714       PostMsg(MainObjectHwnd, UM_RESTORE, MPFROMP(GetPString(IDS_SHUTDOWNSTATE)), MPVOID);
     5725    if (!fNoSaveState && fSaveState) {
     5726      PSZ pStatename = GetPString(IDS_SHUTDOWNSTATE);
     5727      PostMsg(MainObjectHwnd, UM_RESTORE, MPFROMP(pStatename), MPVOID);
     5728      if (!add_setup(pStatename))
     5729        save_setups();
     5730    }
    57155731    PostMsg(MainObjectHwnd, UM_SETUP4, mp1, mp2);
    57165732    return 0;
Note: See TracChangeset for help on using the changeset viewer.