Changeset 305


Ignore:
Timestamp:
Jun 27, 2006, 2:23:34 AM (19 years ago)
Author:
root
Message:

TreeCnrWndProc: disable menu items if drive not ready

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/dll/treecnr.c

    r246 r305  
    1616  05 Jun 05 SHL Use QWL_USER
    1717  06 Aug 05 SHL Renames
     18  08 Dec 05 SHL TreeCnrWndProc: disable menu items if drive not ready
    1819
    1920***********************************************************************/
     
    274275MRESULT EXPENTRY TreeTitleWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {
    275276
    276   PFNWP oldproc = (PFNWP)WinQueryWindowPtr(hwnd,0);
     277  PFNWP oldproc = (PFNWP)WinQueryWindowPtr(hwnd,QWL_USER);
    277278
    278279  switch(msg) {
     
    629630
    630631    case UM_EXPAND:
    631       dcd = WinQueryWindowPtr(hwnd,0);
     632      dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    632633      if(dcd) {
    633634
     
    647648
    648649    case UM_UPDATERECORDLIST:
    649       dcd = WinQueryWindowPtr(hwnd,0);
     650      dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    650651      if(dcd && mp1) {
    651652
     
    665666
    666667    case UM_SETUP:
    667       dcd = WinQueryWindowPtr(hwnd,0);
     668      dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    668669      if(dcd) {
    669670        dcd->hwndObject = hwnd;
     
    674675
    675676    case UM_RESCAN2:
    676       dcd = WinQueryWindowPtr(hwnd,0);
     677      dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    677678      if(dcd &&
    678679         hwndStatus &&
     
    776777       * populate container
    777778       */
    778       dcd = WinQueryWindowPtr(hwnd,0);
     779      dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    779780      if(dcd) {
    780781        WinSendMsg(dcd->hwndCnr,
     
    847848      if(mp1) {
    848849
    849         dcd = WinQueryWindowPtr(hwnd,0);
     850        dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    850851        if(dcd) {
    851852
     
    880881      if(mp1) {
    881882
    882         dcd = WinQueryWindowPtr(hwnd,0);
     883        dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    883884        if(dcd) {
    884885
     
    916917    case WM_DESTROY:
    917918      hwndTree = (HWND)0;
    918       dcd = WinQueryWindowPtr(hwnd,0);
     919      dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    919920      if(dcd) {
    920921        WinSendMsg(dcd->hwndCnr,
     
    939940
    940941
    941 MRESULT EXPENTRY TreeCnrWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {
    942 
     942MRESULT EXPENTRY TreeCnrWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
     943{
    943944  static APPNOTIFY *apphead = NULL,*apptail = NULL;
    944   DIRCNRDATA       *dcd = WinQueryWindowPtr(hwnd,0);
     945  DIRCNRDATA       *dcd = WinQueryWindowPtr(hwnd,QWL_USER);
    945946
    946947  switch(msg) {
     
    23272328
    23282329              pci = (PCNRITEM)CurrentRecord(hwnd);
    2329               if(pci && (INT)pci != -1) {
    2330                 WinEnableMenuItem((HWND)mp2,
    2331                                   IDM_UPDATE,
    2332                                   (pci->flags & RECFLAGS_UNDERENV) == 0);
    2333                 WinEnableMenuItem((HWND)mp2,
    2334                                   IDM_EXPANDSUBMENU,
    2335                                   (pci->flags & RECFLAGS_UNDERENV) == 0);
    2336                 WinEnableMenuItem((HWND)mp2,
    2337                                   IDM_EXPAND,
    2338                                   (pci->flags & RECFLAGS_UNDERENV) == 0);
    2339                 WinEnableMenuItem((HWND)mp2,
    2340                                   IDM_COLLAPSE,
    2341                                   (pci->flags & RECFLAGS_UNDERENV) == 0);
    2342                 WinEnableMenuItem((HWND)mp2,
    2343                                   IDM_DELETE,
    2344                                   ((pci->flags & RECFLAGS_UNDERENV) == 0) &&
    2345                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2346                 WinEnableMenuItem((HWND)mp2,
    2347                                   IDM_PERMDELETE,
    2348                                   ((pci->flags & RECFLAGS_UNDERENV) == 0) &&
    2349                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2350                 WinEnableMenuItem((HWND)mp2,
    2351                                   IDM_DELETESUBMENU,
    2352                                   ((pci->flags & RECFLAGS_UNDERENV) == 0) &&
    2353                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2354                 WinEnableMenuItem((HWND)mp2,
    2355                                   IDM_MOVEMENU,
    2356                                   ((pci->flags & RECFLAGS_UNDERENV) == 0) &&
    2357                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2358                 WinEnableMenuItem((HWND)mp2,
    2359                                   IDM_RENAME,
    2360                                   ((pci->flags & RECFLAGS_UNDERENV) == 0) &&
    2361                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2362                 WinEnableMenuItem((HWND)mp2,
    2363                                   IDM_DETACH,
    2364                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_REMOTE) != 0);
    2365                 WinEnableMenuItem((HWND)mp2,
    2366                                   IDM_EJECT,
    2367                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_REMOVABLE) != 0);
    2368 /*
    2369                 WinEnableMenuItem((HWND)mp2,
    2370                                   IDM_CLOSETRAY,
    2371                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_CDROM) != 0);
    2372 */
    2373                 WinEnableMenuItem((HWND)mp2,
    2374                                   IDM_LOCK,
    2375                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_REMOVABLE) != 0);
    2376                 WinEnableMenuItem((HWND)mp2,
    2377                                   IDM_UNLOCK,
    2378                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_REMOVABLE) != 0);
    2379                 WinEnableMenuItem((HWND)mp2,
    2380                                   IDM_OPTIMIZE,
    2381                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2382                 WinEnableMenuItem((HWND)mp2,
    2383                                   IDM_FORMAT,
    2384                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2385                 WinEnableMenuItem((HWND)mp2,
    2386                                   IDM_CHKDSK,
    2387                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2388                 WinEnableMenuItem((HWND)mp2,
    2389                                   IDM_MKDIR,
    2390                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2391                 WinEnableMenuItem((HWND)mp2,
    2392                                   IDM_UNDELETE,
    2393                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
    2394                 WinEnableMenuItem((HWND)mp2,
    2395                                   IDM_ATTRS,
    2396                                   (driveflags[toupper(*pci->szFileName) - 'A'] & DRIVE_NOTWRITEABLE) == 0);
     2330              if(pci && (INT)pci != -1)
     2331              {
     2332                BOOL rdy;
     2333                BOOL writeable;
     2334                BOOL removable;
     2335                BOOL underenv;
     2336                CHAR chDrvU;
     2337                CHAR szDrv[CCHMAXPATH];
     2338                strcpy(szDrv, pci->szFileName);
     2339                chDrvU = *pci->szFileName;
     2340                chDrvU = toupper(chDrvU);
     2341                MakeValidDir(szDrv);
     2342                rdy = *szDrv == chDrvU;         // Drive not ready if MakeValidDir changes drive letter
     2343                removable = rdy && (driveflags[chDrvU - 'A'] & DRIVE_REMOVABLE) != 0;
     2344                writeable = rdy && !(driveflags[chDrvU - 'A'] & DRIVE_NOTWRITEABLE);
     2345                underenv = (pci->flags & RECFLAGS_UNDERENV) != 0;
     2346
     2347                WinEnableMenuItem((HWND)mp2, IDM_INFO, rdy);
     2348
     2349                WinEnableMenuItem((HWND)mp2, IDM_ATTRS, writeable);
     2350                WinEnableMenuItem((HWND)mp2, IDM_EAS, writeable);
     2351                WinEnableMenuItem((HWND)mp2, IDM_SUBJECT, writeable);
     2352                WinEnableMenuItem((HWND)mp2, IDM_DRVFLAGS, rdy);        // fixme to allow if not ready
     2353
     2354                WinEnableMenuItem((HWND)mp2, IDM_ARCHIVE, rdy);
     2355
     2356                WinEnableMenuItem((HWND)mp2, IDM_UPDATE, !underenv);
     2357                WinEnableMenuItem((HWND)mp2, IDM_EXPANDSUBMENU, !underenv);
     2358                WinEnableMenuItem((HWND)mp2, IDM_EXPAND, !underenv);
     2359                WinEnableMenuItem((HWND)mp2, IDM_COLLAPSE, !underenv);
     2360
     2361                WinEnableMenuItem((HWND)mp2, IDM_SIZES, rdy);
     2362                WinEnableMenuItem((HWND)mp2, IDM_MKDIR, writeable);
     2363                WinEnableMenuItem((HWND)mp2, IDM_SHOWALLFILES, rdy);
     2364                WinEnableMenuItem((HWND)mp2, IDM_UNDELETE, writeable);
     2365
     2366                WinEnableMenuItem((HWND)mp2, IDM_CHKDSK, writeable);
     2367                WinEnableMenuItem((HWND)mp2, IDM_FORMAT, writeable);
     2368                WinEnableMenuItem((HWND)mp2, IDM_OPTIMIZE, writeable);
     2369
     2370                WinEnableMenuItem((HWND)mp2, IDM_DETACH,
     2371                                  rdy && (driveflags[chDrvU - 'A'] & DRIVE_REMOTE) != 0);
     2372
     2373                WinEnableMenuItem((HWND)mp2, IDM_EJECT, removable);
     2374
     2375                WinEnableMenuItem((HWND)mp2, IDM_LOCK, removable);
     2376                WinEnableMenuItem((HWND)mp2, IDM_UNLOCK, removable);
     2377
     2378                WinEnableMenuItem((HWND)mp2, IDM_DELETE, !underenv && writeable);
     2379                WinEnableMenuItem((HWND)mp2, IDM_PERMDELETE, !underenv && writeable);
     2380                WinEnableMenuItem((HWND)mp2, IDM_DELETESUBMENU, !underenv && writeable);
     2381                WinEnableMenuItem((HWND)mp2, IDM_MOVEMENU, !underenv && writeable);
     2382                WinEnableMenuItem((HWND)mp2, IDM_RENAME, !underenv && writeable);
     2383
    23972384              }
    23982385            }
     
    33473334
    33483335        oldproc = WinSubclassWindow(hwndFrame,(PFNWP)TreeFrameWndProc);
    3349         WinSetWindowPtr(hwndFrame,0,(PVOID)oldproc);
     3336        WinSetWindowPtr(hwndFrame,QWL_USER,(PVOID)oldproc);
    33503337        oldproc = WinSubclassWindow(WinWindowFromID(hwndFrame,FID_TITLEBAR),
    33513338                                    (PFNWP)TreeTitleWndProc);
     
    33693356                                     NULL);
    33703357      if(dcd->hwndCnr) {
    3371         WinSetWindowPtr(dcd->hwndCnr,0,(PVOID)dcd);
     3358        WinSetWindowPtr(dcd->hwndCnr,QWL_USER,(PVOID)dcd);
    33723359        if(ParentIsDesktop(hwndFrame,hwndParent)) {
    33733360          WinSetWindowText(WinWindowFromID(hwndFrame,FID_TITLEBAR),"VTree");
Note: See TracChangeset for help on using the changeset viewer.