BOOL GetPreferencesInfo (LPIDENT lpi, LPTSTR pszPath, WORD *pwVer) { if (lpi == NULL) return FALSE; // HKCU\Software\...\SVRMgr + \CellName // lstrcpy (pszPath, REGSTR_SETTINGS_PREFS); lstrcat (pszPath, TEXT("\\")); lpi->GetCellName (&pszPath[ lstrlen(pszPath) ]); // HKCU\Software\...\SVRMgr\CellName + \ServerName // lstrcat (pszPath, TEXT("\\")); lpi->GetLongServerName (&pszPath[ lstrlen(pszPath) ]); *pwVer = wVerSERVER_PREF; if (lpi->fIsService()) { // HKCU\Software\...\SVRMgr\CellName\ServerName + \Services\ServiceName // lstrcat (pszPath, TEXT("\\")); lstrcat (pszPath, SERVICES_KW); lstrcat (pszPath, TEXT("\\")); lpi->GetServiceName (&pszPath[ lstrlen(pszPath) ]); *pwVer = wVerSERVICE_PREF; } else if (lpi->fIsAggregate()) { // HKCU\Software\...\SVRMgr\CellName\ServerName + \Aggs\AggregateName // lstrcat (pszPath, TEXT("\\")); lstrcat (pszPath, AGGREGATES_KW); lstrcat (pszPath, TEXT("\\")); lpi->GetAggregateName (&pszPath[ lstrlen(pszPath) ]); *pwVer = wVerAGGREGATE_PREF; } else if (lpi->fIsFileset()) { // HKCU\Software\...\SVRMgr\CellName\ServerName + \Filesets\FilesetName // lstrcat (pszPath, TEXT("\\")); lstrcat (pszPath, FILESETS_KW); lstrcat (pszPath, TEXT("\\")); lpi->GetFilesetName (&pszPath[ lstrlen(pszPath) ]); *pwVer = wVerFILESET_PREF; } return TRUE; }
void Filesets_ContinueDrag (HWND hDlg) { if (l.fDragging) { LPIDENT lpi = NULL; HLISTITEM hItemTarget; DWORD dw = GetMessagePos(); POINT pt = { LOWORD(dw), HIWORD(dw) }; HWND hTarget = WindowFromPoint (pt); if (hTarget != NULL) { POINT ptClient = pt; ScreenToClient (hTarget, &ptClient); if ((lpi = IdentifyPoint (hTarget, ptClient, &hItemTarget)) != NULL) { if (!lpi->fIsServer() && !lpi->fIsAggregate()) lpi = NULL; } } if (lpi != l.lpiTarget) { ImageList_DragLeave (NULL); if (l.hItemTarget) { LPARAM dwFlags = FastList_GetItemFlags (l.hwndTarget, l.hItemTarget); FastList_SetItemFlags (l.hwndTarget, l.hItemTarget, dwFlags & (~FLIF_DROPHIGHLIGHT)); l.hItemTarget = NULL; l.lpiTarget = NULL; } if ((l.lpiTarget = lpi) != NULL) { l.hwndTarget = hTarget; l.hItemTarget = hItemTarget; LPARAM dwFlags = FastList_GetItemFlags (l.hwndTarget, l.hItemTarget); FastList_SetItemFlags (l.hwndTarget, l.hItemTarget, dwFlags | FLIF_DROPHIGHLIGHT); } ScreenToClient (NULL, &pt); ImageList_DragEnter (NULL, pt.x, pt.y); } ImageList_DragMove (LOWORD(dw), HIWORD(dw)); } }
LPTSTR Alert_GetQuickDescription (LPIDENT lpi) { LPTSTR pszStatus = NULL; size_t cAlerts; if ((cAlerts = Alert_GetCount (lpi)) <= 1) pszStatus = Alert_GetDescription (lpi, 0, FALSE); else if (lpi->fIsServer()) pszStatus = FormatString (IDS_SERVER_MULTIPLE_PROBLEMS, TEXT("%lu"), cAlerts); else if (lpi->fIsService()) pszStatus = FormatString (IDS_SERVICE_MULTIPLE_PROBLEMS, TEXT("%lu"), cAlerts); else if (lpi->fIsAggregate()) pszStatus = FormatString (IDS_AGGREGATE_MULTIPLE_PROBLEMS, TEXT("%lu"), cAlerts); else if (lpi->fIsFileset()) pszStatus = FormatString (IDS_FILESET_MULTIPLE_PROBLEMS, TEXT("%lu"), cAlerts); return pszStatus; }
void Filesets_ShowPopupMenu (HWND hList, POINT ptList, POINT ptScreen) { if (!ptScreen.x && !ptScreen.y) { RECT rWindow; GetWindowRect (hList, &rWindow); ptScreen.x = rWindow.left + (rWindow.right -rWindow.left)/2; ptScreen.y = rWindow.top + (rWindow.bottom -rWindow.top)/2; Filesets_ShowParticularPopupMenu (hList, ptScreen, NULL); } else if (FL_HitTestForHeaderBar (hList, ptList)) { HMENU hm = TaLocale_LoadMenu (MENU_COLUMNS); DisplayContextMenu (hm, ptScreen, hList); } else { LPIDENT lpi = Filesets_GetFocused (GetParent (hList), &ptList); if (lpi && (lpi != Filesets_GetSelected (GetParent (hList)))) { lpi = NULL; // right-click on item other than highlighted one? } if (lpi && lpi->fIsFileset()) { Filesets_ShowParticularPopupMenu (hList, ptScreen, lpi); } else if (lpi && lpi->fIsAggregate()) { Aggregates_ShowParticularPopupMenu (hList, ptScreen, lpi); } else if (lpi && lpi->fIsServer()) { Server_ShowParticularPopupMenu (hList, ptScreen, lpi); } else if (!lpi) // display the _NONE menu? (no menu if it's a cell ident) { Filesets_ShowParticularPopupMenu (hList, ptScreen, lpi); } } }
LPTSTR Alert_GetRemedyFunc (LPIDENT lpiPrimary, size_t iAlertPrimary, LPIDENT lpiServer) { LPOBJECTALERTS lpoa; if ((lpoa = Alert_GetObjectAlerts (lpiPrimary)) != NULL) { switch (lpoa->aAlerts[ iAlertPrimary ].alert) { case alertTIMEOUT: return FormatString (IDS_ALERT_FIX_TIMEOUT); case alertFULL: if (lpiPrimary->fIsAggregate()) return FormatString (IDS_ALERT_FIX_AGG_FULL); else if (lpiPrimary->fIsFileset()) return FormatString (IDS_ALERT_FIX_SET_FULL); break; case alertNO_VLDBENT: return FormatString (IDS_ALERT_FIX_NO_VLDBENT); case alertNO_SVRENT: if (lpiPrimary->fIsFileset()) return FormatString (IDS_ALERT_FIX_NO_SVRENT_SET); else return FormatString (IDS_ALERT_FIX_NO_SVRENT_AGG); break; case alertSTOPPED: return FormatString (IDS_ALERT_FIX_STOPPED); case alertBADCREDS: return FormatString (IDS_ALERT_FIX_BADCREDS); case alertOVERALLOC: return FormatString (IDS_ALERT_FIX_AGG_ALLOC); case alertSTATE_NO_VNODE: return FormatString (IDS_ALERT_FIX_STATE_NO_VNODE); case alertSTATE_NO_SERVICE: return FormatString (IDS_ALERT_FIX_STATE_NO_SERVICE); case alertSTATE_OFFLINE: return FormatString (IDS_ALERT_FIX_STATE_OFFLINE); } } return NULL; }
LPOBJECTALERTS Alert_GetObjectAlerts (LPIDENT lpi, BOOL fAlwaysServer, ULONG *pStatus) { LPOBJECTALERTS lpoa = NULL; if (fAlwaysServer || lpi->fIsServer()) { LPSERVER_PREF lpsp; if ((lpsp = (LPSERVER_PREF)lpi->GetServer()->GetUserParam()) != NULL) { lpoa = &lpsp->oa; } } else if (lpi->fIsService()) { LPSERVICE_PREF lpsp; if ((lpsp = (LPSERVICE_PREF)lpi->GetUserParam()) != NULL) { lpoa = &lpsp->oa; } } else if (lpi->fIsAggregate()) { LPAGGREGATE_PREF lpap; if ((lpap = (LPAGGREGATE_PREF)lpi->GetUserParam()) != NULL) { lpoa = &lpap->oa; } } else if (lpi->fIsFileset()) { LPFILESET_PREF lpfp; if ((lpfp = (LPFILESET_PREF)lpi->GetUserParam()) != NULL) { lpoa = &lpfp->oa; } } return lpoa; }
void Server_Salvage_Results_OnInitDialog (HWND hDlg, LPIDENT lpiSalvage) { TCHAR szServer[ cchNAME ]; lpiSalvage->GetServerName (szServer); TCHAR szAggregate[ cchNAME ]; if (!lpiSalvage->fIsServer()) lpiSalvage->GetAggregateName (szAggregate); TCHAR szFileset[ cchNAME ]; if (lpiSalvage->fIsFileset()) lpiSalvage->GetFilesetName (szFileset); LPTSTR pszTitle; if (lpiSalvage->fIsServer()) pszTitle = FormatString (IDS_SALVAGE_SVR, TEXT("%s"), szServer); else if (lpiSalvage->fIsAggregate()) pszTitle = FormatString (IDS_SALVAGE_AGG, TEXT("%s%s"), szServer, szAggregate); else // (lpiSalvage->fIsFileset()) pszTitle = FormatString (IDS_SALVAGE_SET, TEXT("%s%s%s"), szServer, szAggregate, szFileset); SetDlgItemText (hDlg, IDC_SALVAGE_TITLE, pszTitle); FreeString (pszTitle); }
void Command_OnProperties (LPIDENT lpi) { if (lpi) { size_t nAlerts = Alert_GetCount (lpi); if (lpi->fIsServer()) { Server_ShowProperties (lpi, nAlerts); } else if (lpi->fIsService()) { Services_ShowProperties (lpi, nAlerts); } else if (lpi->fIsAggregate()) { Aggregates_ShowProperties (lpi, nAlerts); } else if (lpi->fIsFileset()) { Filesets_ShowProperties (lpi, nAlerts); } } }
void DispatchNotification_MainThread (NOTIFYEVENT evt, PNOTIFYPARAMS pParams) { LPIDENT lpiEvt = pParams->lpi1; // There are several notifications which are sent when beginning or ending // lengthy operations. These "actions" each get a window indicating // progress, and get added to our ongoing list of actions-in-progress. // ActionNotification_MainThread (evt, pParams); // The real reason for this routine is as a dispatcher for the AFSClass's // notifications: various windows throughout the app register themselves // with this dispatcher, and thereby get a message whenever a particular // event of interest to that window happens. Just what notifications // are "of interest" is specified by the window when it registers with // this dispatcher. // for (size_t iDispatch = 0; iDispatch < nDispatchList; ++iDispatch) { if (!aDispatchList[ iDispatch ].hWnd) continue; BOOL fDispatch = FALSE; // WHEN_CELL_OPENED + NULL -> notify if any new cell is opened // WHEN_OBJECT_CHANGES + NULL -> notify if anything at all changes // WHEN_OBJECT_CHANGES + lpi -> notify if this object changes // WHEN_SVCS(etc)_CHANGE + NULL -> notify if any service at all changes // WHEN_SVCS(etc)_CHANGE + lpi -> notify if any svc on this svr changes switch (aDispatchList[ iDispatch ].when) { case WHEN_CELL_OPENED: if (evt == evtCreate && lpiEvt->fIsCell()) fDispatch = TRUE; break; case WHEN_OBJECT_CHANGES: if ( (aDispatchList[ iDispatch ].lpiObject == lpiEvt) || (aDispatchList[ iDispatch ].lpiObject == NULL) ) { if (evt != evtCreate) fDispatch = TRUE; } break; case WHEN_SVRS_CHANGE: switch (evt) { case evtInvalidate: case evtRefreshServersBegin: case evtRefreshServersEnd: if ( (lpiEvt && lpiEvt->fIsCell()) || (aDispatchList[ iDispatch ].lpiObject == lpiEvt) || (aDispatchList[ iDispatch ].lpiObject == NULL) ) { if (lpiEvt && lpiEvt->fIsCell()) fDispatch = TRUE; } break; case evtCreate: case evtDestroy: case evtRefreshStatusBegin: case evtRefreshStatusEnd: case evtAlertsChanged: if (lpiEvt && lpiEvt->fIsServer()) { if (aDispatchList[ iDispatch ].lpiObject == NULL) fDispatch = TRUE; else { LPIDENT lpiEvtCell = lpiEvt->GetCell(); if (aDispatchList[ iDispatch ].lpiObject == lpiEvtCell) fDispatch = TRUE; } } break; } break; case WHEN_SETS_CHANGE: switch (evt) { case evtInvalidate: case evtRefreshFilesetsBegin: case evtRefreshFilesetsEnd: { LPIDENT lpiEvtSvr = NULL; if (lpiEvt && !lpiEvt->fIsCell()) lpiEvtSvr = lpiEvt->GetServer(); if ( (lpiEvt && lpiEvt->fIsCell()) || (aDispatchList[ iDispatch ].lpiObject == lpiEvt) || (aDispatchList[ iDispatch ].lpiObject == lpiEvtSvr) || (aDispatchList[ iDispatch ].lpiObject == NULL) ) { if (lpiEvt && (lpiEvt->fIsCell() || lpiEvt->fIsServer() || lpiEvt->fIsAggregate())) fDispatch = TRUE; } } break; case evtCreate: case evtDestroy: case evtRefreshStatusBegin: case evtRefreshStatusEnd: case evtAlertsChanged: if (lpiEvt && lpiEvt->fIsFileset()) { if (aDispatchList[ iDispatch ].lpiObject == NULL) fDispatch = TRUE; else { LPIDENT lpiEvtAgg = lpiEvt->GetAggregate(); LPIDENT lpiEvtSvr = lpiEvt->GetServer(); if (aDispatchList[ iDispatch ].lpiObject == lpiEvtAgg) fDispatch = TRUE; if (aDispatchList[ iDispatch ].lpiObject == lpiEvtSvr) fDispatch = TRUE; } } break; } break; case WHEN_AGGS_CHANGE: switch (evt) { case evtRefreshAggregatesBegin: case evtRefreshAggregatesEnd: if ( (lpiEvt && lpiEvt->fIsCell()) || (aDispatchList[ iDispatch ].lpiObject == lpiEvt) || (aDispatchList[ iDispatch ].lpiObject == NULL) ) { if (lpiEvt && (lpiEvt->fIsCell() || lpiEvt->fIsServer())) fDispatch = TRUE; } break; case evtCreate: case evtDestroy: case evtRefreshStatusBegin: case evtRefreshStatusEnd: case evtAlertsChanged: if (lpiEvt && lpiEvt->fIsAggregate()) { if (aDispatchList[ iDispatch ].lpiObject == NULL) fDispatch = TRUE; else { LPIDENT lpiEvtSvr = lpiEvt->GetServer(); if (aDispatchList[ iDispatch ].lpiObject == lpiEvtSvr) fDispatch = TRUE; } } break; } break; case WHEN_SVCS_CHANGE: switch (evt) { case evtRefreshServicesBegin: case evtRefreshServicesEnd: if ( (lpiEvt && lpiEvt->fIsCell()) || (aDispatchList[ iDispatch ].lpiObject == lpiEvt) || (aDispatchList[ iDispatch ].lpiObject == NULL) ) { if (lpiEvt && (lpiEvt->fIsCell() || lpiEvt->fIsServer())) fDispatch = TRUE; } break; case evtCreate: case evtDestroy: case evtRefreshStatusBegin: case evtRefreshStatusEnd: case evtAlertsChanged: if (lpiEvt && lpiEvt->fIsService()) { if (aDispatchList[ iDispatch ].lpiObject == NULL) fDispatch = TRUE; else { LPIDENT lpiEvtSvr = lpiEvt->GetServer(); if (aDispatchList[ iDispatch ].lpiObject == lpiEvtSvr) fDispatch = TRUE; } } break; } break; } if (fDispatch) { LPNOTIFYSTRUCT lpns = New (NOTIFYSTRUCT); lpns->hwndTarget = aDispatchList[ iDispatch ].hWnd; lpns->evt = evt; memcpy (&lpns->Params, pParams, sizeof(NOTIFYPARAMS)); lpns->Params.lpUser = aDispatchList[ iDispatch ].lpUser; PostMessage (aDispatchList[ iDispatch ].hWnd, WM_NOTIFY_FROM_DISPATCH, (WPARAM)0, (LPARAM)lpns); } } }
void DispatchNotification_AltThread (NOTIFYEVENT evt, PNOTIFYPARAMS pParams) { LPIDENT lpiEvt = pParams->lpi1; switch (evt) { case evtRefreshStatusEnd: if (lpiEvt && (lpiEvt->fIsService() || lpiEvt->fIsAggregate() || lpiEvt->fIsFileset())) { Alert_RemoveSecondary (lpiEvt); Alert_Scout_QueueCheckServer (lpiEvt); } if (lpiEvt && lpiEvt->fIsServer()) { LPSERVER_PREF lpsp; if ((lpsp = (LPSERVER_PREF)lpiEvt->GetUserParam()) != NULL) { LPSERVER lpServer; if ((lpServer = lpiEvt->OpenServer()) != NULL) { if (lpsp->fIsMonitored != lpServer->fIsMonitored()) { g.sub = Subsets_SetMonitor (g.sub, lpiEvt, lpServer->fIsMonitored()); UpdateDisplay_ServerWindow (FALSE, lpiEvt); } lpsp->fIsMonitored = lpServer->fIsMonitored(); lpServer->Close(); } } Alert_Scout_ServerStatus (lpiEvt, pParams->status); } break; // When we get a create request, use the object's Get/SetUserParam() // methods to attach an allocated structure to the thing--the structure // contains the preferences for the server/fileset/etc (for instance, // its warning threshholds, any current scout problems, etc). // On delete requests, free that structure. // case evtCreate: if (lpiEvt->fIsServer()) { PVOID pPref = Server_LoadPreferences (lpiEvt); lpiEvt->SetUserParam (pPref); // Should this server be monitored? // if (!Subsets_fMonitorServer (g.sub, lpiEvt)) { LPSERVER lpServer; if ((lpServer = lpiEvt->OpenServer()) != NULL) { lpServer->SetMonitor (FALSE); lpServer->Close(); } } Alert_Scout_SetOutOfDate (lpiEvt); } else if (lpiEvt->fIsService()) { PVOID pPref = Services_LoadPreferences (lpiEvt); lpiEvt->SetUserParam (pPref); } else if (lpiEvt->fIsAggregate()) { PVOID pPref = Aggregates_LoadPreferences (lpiEvt); lpiEvt->SetUserParam (pPref); } else if (lpiEvt->fIsFileset()) { PVOID pPref = Filesets_LoadPreferences (lpiEvt); lpiEvt->SetUserParam (pPref); } if (!lpiEvt->fIsCell()) { Alert_Scout_QueueCheckServer (lpiEvt); } break; // When we get a create request, use the object's Get/SetUserParam() // methods to attach an allocated structure to the thing--the structure // contains the preferences for the server/fileset/etc (for instance, // its warning threshholds, any current scout problems, etc). // On delete requests, free that structure. // case evtDestroy: if (lpiEvt->fIsServer()) { PVOID pPref = lpiEvt->GetUserParam(); lpiEvt->SetUserParam (0); if (pPref) Delete (pPref); } else if (lpiEvt->fIsService() || lpiEvt->fIsAggregate() || lpiEvt->fIsFileset()) { Alert_RemoveSecondary (lpiEvt); PVOID pPref = lpiEvt->GetUserParam(); lpiEvt->SetUserParam (0); if (pPref) Delete (pPref); } break; } }
BOOL CALLBACK Filesets_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) { if (HandleColumnNotify (hDlg, msg, wp, lp, &gr.viewSet)) return FALSE; switch (msg) { case WM_INITDIALOG: { RECT rTab; GetClientRect (GetParent(hDlg), &rTab); TabCtrl_AdjustRect (GetParent (hDlg), FALSE, &rTab); ResizeWindow (hDlg, awdFilesets, rwaMoveToHere, &rTab); FL_RestoreView (GetDlgItem (hDlg, IDC_SET_LIST), &gr.viewSet); FastList_SetTextCallback (GetDlgItem (hDlg, IDC_SET_LIST), GetItemText, &gr.viewSet); Filesets_SubclassList (hDlg); Filesets_OnView (hDlg); Filesets_OnSelect (hDlg); } break; case WM_HELP: WinHelp (hDlg, cszHELPFILENAME, HELP_FINDER, 0); break; case WM_DESTROY: FL_StoreView (GetDlgItem (hDlg, IDC_SET_LIST), &gr.viewSet); DontNotifyMeEver (hDlg); break; case WM_SIZE: // if (lp==0), we're minimizing--don't call ResizeWindow(). // if (lp != 0) ResizeWindow (hDlg, awdFilesets, rwaFixupGuts); break; case WM_CONTEXTMENU: { POINT ptScreen; POINT ptClient; ptScreen.x = LOWORD(lp); ptScreen.y = HIWORD(lp); ptClient = ptScreen; ScreenToClient ((HWND)wp, &ptClient); if ((HWND)wp == GetDlgItem (hDlg, IDC_SET_LIST)) Filesets_ShowPopupMenu ((HWND)wp, ptClient, ptScreen); } break; case WM_SERVER_CHANGED: { LPIDENT lpiServer = Server_GetServerForChild (hDlg); DontNotifyMeEver (hDlg); NotifyMe (WHEN_OBJECT_CHANGES, NULL, hDlg, 0); // Fix the text at the top of the Aggregates tab: // TCHAR szName[ cchRESOURCE ]; LPTSTR pszText; if (lpiServer != NULL) { LPSERVER_PREF lpsp = (LPSERVER_PREF)lpiServer->GetUserParam(); lpiServer->GetServerName (szName); if (lpsp && !lpsp->fIsMonitored) pszText = FormatString (IDS_FILESET_UNMON, TEXT("%s"), szName); else pszText = FormatString (IDS_FILESETS_IN_SERVER, TEXT("%s"), szName); } else if (g.lpiCell != NULL) { g.lpiCell->GetCellName (szName); if (g.sub) pszText = FormatString (IDS_FILESET_SOME, TEXT("%s"), szName); else pszText = FormatString (IDS_FILESETS_IN_CELL, TEXT("%s"), szName); } else { pszText = FormatString (IDS_FILESETS_IN_NOTHING); } SetDlgItemText (hDlg, IDC_SET_DESC, pszText); FreeString (pszText); UpdateDisplay_Filesets (FALSE, GetDlgItem (hDlg, IDC_SET_LIST), NULL, 0, NULL, NULL, NULL); } break; case WM_NOTIFY_FROM_DISPATCH: Filesets_OnNotifyFromDispatch ((LPNOTIFYSTRUCT)lp); Delete ((LPNOTIFYSTRUCT)lp); break; case WM_COMMAND: switch (LOWORD(wp)) { case IDC_SET_CREATE: SendMessage (GetDlgItem (hDlg, IDC_SET_LIST), WM_COMMAND, M_SET_CREATE, 0); break; case IDC_SET_DELETE: SendMessage (GetDlgItem (hDlg, IDC_SET_LIST), WM_COMMAND, M_SET_DELETE, 0); break; case IDC_SET_REP: SendMessage (GetDlgItem (hDlg, IDC_SET_LIST), WM_COMMAND, M_SET_REPLICATION, 0); break; case IDC_SET_SETQUOTA: SendMessage (GetDlgItem (hDlg, IDC_SET_LIST), WM_COMMAND, M_SET_SETQUOTA, 0); break; } break; case WM_MOUSEMOVE: Filesets_ContinueDrag (hDlg); break; case WM_LBUTTONDOWN: if (l.fDragging && l.fRightBtn) Filesets_FinishDrag (hDlg, FALSE, FALSE); break; case WM_RBUTTONDOWN: if (l.fDragging && !l.fRightBtn) Filesets_FinishDrag (hDlg, FALSE, FALSE); break; case WM_LBUTTONUP: if (l.fDragging && !l.fRightBtn) Filesets_FinishDrag (hDlg, TRUE, FALSE); break; case WM_RBUTTONUP: if (l.fDragging && l.fRightBtn) Filesets_FinishDrag (hDlg, TRUE, TRUE); break; case WM_ENDTASK: LPTASKPACKET ptp; if ((ptp = (LPTASKPACKET)lp) != NULL) { if (ptp->idTask == taskSET_SELECT) Filesets_OnEndTask_Select (hDlg, ptp); else if (ptp->idTask == taskSET_BEGINDRAG) Filesets_OnEndTask_BeginDrag (hDlg, ptp); else if (ptp->idTask == taskSET_DRAGMENU) Filesets_OnEndTask_DragMenu (hDlg, ptp); else if (ptp->idTask == taskSET_MENU) Filesets_OnEndTask_Menu (hDlg, ptp); FreeTaskPacket (ptp); } break; case WM_NOTIFY: switch (((LPNMHDR)lp)->code) { case FLN_ITEMSELECT: if (((LPNMHDR)lp)->hwndFrom == GetDlgItem (hDlg, IDC_SET_LIST)) { Filesets_OnSelect (hDlg); } break; case FLN_ITEMEXPAND: if (((LPNMHDR)lp)->hwndFrom == GetDlgItem (hDlg, IDC_SET_LIST)) { HLISTITEM hItem = ((LPFLN_ITEMEXPAND_PARAMS)lp)->hItem; LPIDENT lpi = (LPIDENT)FastList_GetItemParam (GetDlgItem (hDlg, IDC_SET_LIST), hItem); BOOL fExpanded = ((LPFLN_ITEMEXPAND_PARAMS)lp)->fExpanded; if (lpi && lpi->fIsServer()) { LPSERVER_PREF lpsp; if ((lpsp = (LPSERVER_PREF)lpi->GetUserParam()) != NULL) { lpsp->fExpandTree = fExpanded; Server_SavePreferences (lpi); } } else if (lpi && lpi->fIsAggregate()) { LPAGGREGATE_PREF lpap; if ((lpap = (LPAGGREGATE_PREF)lpi->GetUserParam()) != NULL) { lpap->fExpandTree = fExpanded; Aggregates_SavePreferences (lpi); } } } break; case FLN_BEGINDRAG: return Filesets_BeginDrag (hDlg, ((LPFLN_DRAG_PARAMS)lp)->fRightButton); case FLN_LDBLCLICK: if (((LPNMHDR)lp)->hwndFrom == GetDlgItem (hDlg, IDC_SET_LIST)) { BOOL fShowProperties = TRUE; HLISTITEM hItem; if ((hItem = FastList_GetFocus (GetDlgItem (hDlg, IDC_SET_LIST))) != NULL) { if (FastList_FindFirstChild (GetDlgItem (hDlg, IDC_SET_LIST), hItem)) fShowProperties = FALSE; } LPIDENT lpi = Filesets_GetFocused (hDlg); if (lpi && !lpi->fIsCell() && fShowProperties) { PostMessage (GetDlgItem (hDlg, IDC_SET_LIST), WM_COMMAND, M_PROPERTIES, 0); return TRUE; } } break; } break; } return FALSE; }
LPTSTR Alert_GetDescriptionFunc (LPIDENT lpiPrimary, size_t iAlertPrimary, LPIDENT lpiServer, BOOL fFull) { LPOBJECTALERTS lpoa; if ((lpoa = Alert_GetObjectAlerts (lpiPrimary)) != NULL) { int ids; TCHAR szServer[ cchRESOURCE ]; TCHAR szService[ cchRESOURCE ]; TCHAR szAggregate[ cchRESOURCE ]; TCHAR szFileset[ cchRESOURCE ]; switch (lpoa->aAlerts[ iAlertPrimary ].alert) { case alertTIMEOUT: ids = (fFull) ? IDS_ALERT_DESCFULL_TIMEOUT : IDS_ALERT_DESCSHORT_TIMEOUT; lpiPrimary->GetServerName (szServer); return FormatString (ids, TEXT("%s%t%e"), szServer, &lpoa->aAlerts[ iAlertPrimary ].aiTIMEOUT.stLastAttempt, lpoa->aAlerts[ iAlertPrimary ].aiTIMEOUT.status); case alertFULL: lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); if (lpiPrimary->fIsAggregate()) { ids = (fFull) ? IDS_ALERT_DESCFULL_AGG_FULL : IDS_ALERT_DESCSHORT_AGG_FULL; return FormatString (ids, TEXT("%s%s%d%.1B"), szServer, szAggregate, lpoa->aAlerts[ iAlertPrimary ].aiFULL.perWarning, 1024.0 * (double)lpoa->aAlerts[ iAlertPrimary ].aiFULL.ckWarning); } else if (lpiPrimary->fIsFileset()) { ids = (fFull) ? IDS_ALERT_DESCFULL_SET_FULL : IDS_ALERT_DESCSHORT_SET_FULL; lpiPrimary->GetFilesetName (szFileset); return FormatString (ids, TEXT("%s%s%s%d%.1B"), szServer, szAggregate, szFileset, lpoa->aAlerts[ iAlertPrimary ].aiFULL.perWarning, 1024.0 * (double)lpoa->aAlerts[ iAlertPrimary ].aiFULL.ckWarning); } break; case alertNO_VLDBENT: ids = (fFull) ? IDS_ALERT_DESCFULL_NO_VLDBENT : IDS_ALERT_DESCSHORT_NO_VLDBENT; lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); lpiPrimary->GetFilesetName (szFileset); return FormatString (ids, TEXT("%s%s%s"), szServer, szAggregate, szFileset); case alertNO_SVRENT: if (lpiPrimary->fIsFileset()) { ids = (fFull) ? IDS_ALERT_DESCFULL_NO_SVRENT_SET : IDS_ALERT_DESCSHORT_NO_SVRENT_SET; lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); lpiPrimary->GetFilesetName (szFileset); return FormatString (ids, TEXT("%s%s%s"), szServer, szAggregate, szFileset); } else { ids = (fFull) ? IDS_ALERT_DESCFULL_NO_SVRENT_AGG : IDS_ALERT_DESCSHORT_NO_SVRENT_AGG; lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); return FormatString (ids, TEXT("%s%s"), szServer, szAggregate); } break; case alertSTOPPED: ids = (fFull) ? IDS_ALERT_DESCFULL_STOPPED : IDS_ALERT_DESCSHORT_STOPPED; lpiPrimary->GetServerName (szServer); lpiPrimary->GetServiceName (szService); return FormatString (ids, TEXT("%s%s%t%t%lu"), szServer, szService, &lpoa->aAlerts[ iAlertPrimary ].aiSTOPPED.stStopped, &lpoa->aAlerts[ iAlertPrimary ].aiSTOPPED.stLastError, lpoa->aAlerts[ iAlertPrimary ].aiSTOPPED.errLastError); case alertBADCREDS: ids = (fFull) ? IDS_ALERT_DESCFULL_BADCREDS : IDS_ALERT_DESCSHORT_BADCREDS; lpiPrimary->GetServerName (szServer); return FormatString (ids, TEXT("%s"), szServer); case alertOVERALLOC: lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); ids = (fFull) ? IDS_ALERT_DESCFULL_AGG_ALLOC : IDS_ALERT_DESCSHORT_AGG_ALLOC; return FormatString (ids, TEXT("%s%s%.1B%.1B"), szServer, szAggregate, 1024.0 * (double)(lpoa->aAlerts[ iAlertPrimary ].aiOVERALLOC.ckCapacity), 1024.0 * (double)(lpoa->aAlerts[ iAlertPrimary ].aiOVERALLOC.ckAllocated)); case alertSTATE_NO_VNODE: ids = (fFull) ? IDS_ALERT_DESCFULL_STATE_NO_VNODE : IDS_ALERT_DESCSHORT_STATE_NO_VNODE; lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); lpiPrimary->GetFilesetName (szFileset); return FormatString (ids, TEXT("%s%s%s%08lX"), szServer, szAggregate, szFileset, lpoa->aAlerts[ iAlertPrimary ].aiSTATE.State); case alertSTATE_NO_SERVICE: ids = (fFull) ? IDS_ALERT_DESCFULL_STATE_NO_SERVICE : IDS_ALERT_DESCSHORT_STATE_NO_SERVICE; lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); lpiPrimary->GetFilesetName (szFileset); return FormatString (ids, TEXT("%s%s%s%08lX"), szServer, szAggregate, szFileset, lpoa->aAlerts[ iAlertPrimary ].aiSTATE.State); case alertSTATE_OFFLINE: ids = (fFull) ? IDS_ALERT_DESCFULL_STATE_OFFLINE : IDS_ALERT_DESCSHORT_STATE_OFFLINE; lpiPrimary->GetServerName (szServer); lpiPrimary->GetAggregateName (szAggregate); lpiPrimary->GetFilesetName (szFileset); return FormatString (ids, TEXT("%s%s%s%08lX"), szServer, szAggregate, szFileset, lpoa->aAlerts[ iAlertPrimary ].aiSTATE.State); } } return NULL; }