LPTSTR Server_GetColumnText (LPIDENT lpi, SERVERCOLUMN svrcol) { static TCHAR aszBuffer[ nSERVERCOLUMNS ][ cchRESOURCE ]; static size_t iBufferNext = 0; LPTSTR pszBuffer = aszBuffer[ iBufferNext++ ]; if (iBufferNext == nSERVERCOLUMNS) iBufferNext = 0; *pszBuffer = TEXT('\0'); LPSERVERSTATUS lpss = NULL; LPSERVER_PREF lpsp; if ((lpsp = (LPSERVER_PREF)lpi->GetUserParam()) != NULL) { lpss = &lpsp->ssLast; } switch (svrcol) { case svrcolNAME: lpi->GetServerName (pszBuffer); break; case svrcolADDRESS: if (lpss) FormatSockAddr (pszBuffer, TEXT("%a"), &lpss->aAddresses[0]); break; case svrcolSTATUS: { LPTSTR pszDesc; if ((pszDesc = Alert_GetQuickDescription (lpi)) == NULL) GetString (pszBuffer, IDS_STATUS_NOALERTS); else { lstrcpy (pszBuffer, pszDesc); FreeString (pszDesc); } } break; } return pszBuffer; }
LPTSTR Aggregates_GetColumnText (LPIDENT lpi, AGGREGATECOLUMN aggcol, BOOL fShowServerName) { static TCHAR aszBuffer[ nAGGREGATECOLUMNS ][ cchRESOURCE ]; static size_t iBufferNext = 0; LPTSTR pszBuffer = aszBuffer[ iBufferNext++ ]; if (iBufferNext == nAGGREGATECOLUMNS) iBufferNext = 0; pszBuffer[0] = TEXT('\0'); LPAGGREGATE_PREF lpap; LPAGGREGATESTATUS lpas = NULL; LPTSTR pszDevice = NULL; if ((lpap = (LPAGGREGATE_PREF)lpi->GetUserParam()) != NULL) { lpas = &lpap->asLast; pszDevice = lpap->szDevice; } switch (aggcol) { case aggcolNAME: if (!fShowServerName) lpi->GetAggregateName (pszBuffer); else { TCHAR szNameSvr[ cchNAME ]; TCHAR szNameAgg[ cchNAME ]; lpi->GetServerName (szNameSvr); lpi->GetAggregateName (szNameAgg); LPTSTR pszName = FormatString (IDS_SERVER_AGGREGATE, TEXT("%s%s"), szNameSvr, szNameAgg); lstrcpy (pszBuffer, pszName); FreeString (pszName); } break; case aggcolID: if (lpas) wsprintf (pszBuffer, TEXT("%lu"), lpas->dwID); break; case aggcolDEVICE: if (pszDevice) lstrcpy (pszBuffer, pszDevice); break; case aggcolUSED: if (lpas) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * (lpas->ckStorageTotal - lpas->ckStorageFree)); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case aggcolUSED_PER: if (lpas) { DWORD dwPer = 100; if (lpas->ckStorageTotal != 0) dwPer = (DWORD)( 100.0 * (lpas->ckStorageTotal - lpas->ckStorageFree) / lpas->ckStorageTotal ); dwPer = limit( 0, dwPer, 100 ); LPTSTR psz = FormatString (IDS_PERCENTAGE, TEXT("%lu"), dwPer); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case aggcolALLOCATED: if (lpas) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpas->ckStorageAllocated); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case aggcolFREE: if (lpas) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpas->ckStorageFree); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case aggcolTOTAL: if (lpas) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpas->ckStorageTotal); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case aggcolSTATUS: LPTSTR pszDesc; if ((pszDesc = Alert_GetQuickDescription (lpi)) == NULL) GetString (pszBuffer, IDS_STATUS_NOALERTS); else { lstrcpy (pszBuffer, pszDesc); FreeString (pszDesc); } break; } return pszBuffer; }
LPTSTR Filesets_GetColumnText (LPIDENT lpi, FILESETCOLUMN setcol, BOOL fShowServerName) { static TCHAR aszBuffer[ nFILESETCOLUMNS ][ cchRESOURCE ]; static size_t iBufferNext = 0; LPTSTR pszBuffer = aszBuffer[ iBufferNext++ ]; if (iBufferNext == nFILESETCOLUMNS) iBufferNext = 0; *pszBuffer = TEXT('\0'); LPFILESETSTATUS lpfs = NULL; LPIDENT lpiRW = NULL; LPFILESET_PREF lpfp; if ((lpfp = (LPFILESET_PREF)lpi->GetUserParam()) != NULL) { lpfs = &lpfp->fsLast; lpiRW = lpfp->lpiRW; } switch (setcol) { case setcolNAME: lpi->GetFilesetName (pszBuffer); break; case setcolAGGREGATE: if (!fShowServerName) lpi->GetAggregateName (pszBuffer); else { TCHAR szNameSvr[ cchNAME ]; TCHAR szNameAgg[ cchNAME ]; lpi->GetServerName (szNameSvr); lpi->GetAggregateName (szNameAgg); LPTSTR pszName = FormatString (IDS_SERVER_AGGREGATE, TEXT("%s%s"), szNameSvr, szNameAgg); lstrcpy (pszBuffer, pszName); FreeString (pszName); } break; case setcolTYPE: if (lpfs) { switch (lpfs->Type) { case ftREADWRITE: GetString (pszBuffer, IDS_FILESETTYPE_RW); break; case ftCLONE: GetString (pszBuffer, IDS_FILESETTYPE_CLONE); break; case ftREPLICA: if (lpiRW == NULL) GetString (pszBuffer, IDS_FILESETTYPE_RO); else if (lpiRW->GetServer() != lpi->GetServer()) GetString (pszBuffer, IDS_FILESETTYPE_RO); else GetString (pszBuffer, IDS_FILESETTYPE_RO_STAGE); break; } } break; case setcolDATE_CREATE: if (lpfs) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpfs->timeCreation)) pszBuffer[0] = TEXT('\0'); } break; case setcolDATE_UPDATE: if (lpfs) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpfs->timeLastUpdate)) pszBuffer[0] = TEXT('\0'); } break; case setcolDATE_ACCESS: if (lpfs) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpfs->timeLastAccess)) pszBuffer[0] = TEXT('\0'); } break; case setcolDATE_BACKUP: if (lpfs) { if (!FormatTime (pszBuffer, TEXT("%s"), &lpfs->timeLastBackup)) pszBuffer[0] = TEXT('\0'); } break; case setcolQUOTA_USED: if (lpfs) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpfs->ckUsed); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case setcolQUOTA_USED_PER: if (lpfs && lpfs->Type == ftREADWRITE) { DWORD dwPer = 100; if (lpfs->ckQuota != 0) dwPer = (DWORD)( 100.0 * lpfs->ckUsed / lpfs->ckQuota ); dwPer = max( 0, dwPer ); LPTSTR psz = FormatString (IDS_PERCENTAGE, TEXT("%lu"), dwPer); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case setcolQUOTA_FREE: if (lpfs && lpfs->Type == ftREADWRITE) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * (lpfs->ckQuota - lpfs->ckUsed)); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case setcolQUOTA_TOTAL: if (lpfs && lpfs->Type == ftREADWRITE) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpfs->ckQuota); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case setcolSTATUS: LPTSTR pszDesc; if ((pszDesc = Alert_GetQuickDescription (lpi)) != NULL) { lstrcpy (pszBuffer,pszDesc); FreeString (pszDesc); } else if (!lpfs) { GetString (pszBuffer, IDS_STATUS_NOALERTS); } else { if (lpfs->State & fsBUSY) GetString (pszBuffer, IDS_SETSTATUS_BUSY); else if (lpfs->State & fsSALVAGE) GetString (pszBuffer, IDS_SETSTATUS_SALVAGE); else if (lpfs->State & fsMOVED) GetString (pszBuffer, IDS_SETSTATUS_MOVED); else if (lpfs->State & fsLOCKED) GetString (pszBuffer, IDS_SETSTATUS_LOCKED); else if (lpfs->State & fsNO_VOL) GetString (pszBuffer, IDS_SETSTATUS_NO_VOL); else GetString (pszBuffer, IDS_STATUS_NOALERTS); } break; case setcolID: if (lpfs) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%ld"), lpfs->id); lstrcpy (pszBuffer, psz); FreeString (psz); } break; case setcolFILES: if (lpfs) { LPTSTR psz = FormatString (TEXT("%1"), TEXT("%ld"), lpfs->nFiles); lstrcpy (pszBuffer, psz); FreeString (psz); } break; } return pszBuffer; }