Windows: permit aklog to build with krb4 support and roken
[openafs.git] / src / WINNT / afssvrmgr / agg_col.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <winsock2.h>
11 #include <ws2tcpip.h>
12
13 extern "C" {
14 #include <afs/param.h>
15 #include <afs/stds.h>
16 }
17
18 #include "svrmgr.h"
19 #include "agg_col.h"
20
21
22 /*
23  * AGGREGATE-VIEW COLUMNS _____________________________________________________
24  *
25  */
26
27 void Aggregates_SetDefaultView (LPVIEWINFO lpvi)
28 {
29    lpvi->lvsView = FLS_VIEW_LIST;
30    lpvi->nColsAvail = nAGGREGATECOLUMNS;
31
32    for (size_t iCol = 0; iCol < nAGGREGATECOLUMNS; ++iCol)
33       {
34       lpvi->cxColumns[ iCol ]  = AGGREGATECOLUMNS[ iCol ].cxWidth;
35       lpvi->idsColumns[ iCol ] = AGGREGATECOLUMNS[ iCol ].idsColumn;
36       }
37
38    lpvi->iSort = aggcolNAME;
39
40    lpvi->nColsShown = 7;
41    lpvi->aColumns[0] = (int)aggcolNAME;
42    lpvi->aColumns[1] = (int)aggcolID;
43    lpvi->aColumns[2] = (int)aggcolDEVICE;
44    lpvi->aColumns[3] = (int)aggcolUSED;
45    lpvi->aColumns[4] = (int)aggcolTOTAL;
46    lpvi->aColumns[5] = (int)aggcolUSED_PER;
47    lpvi->aColumns[6] = (int)aggcolSTATUS;
48 }
49
50
51 size_t Aggregates_GetAlertCount (LPAGGREGATE lpAggregate)
52 {
53    return Alert_GetCount (lpAggregate->GetIdentifier());
54 }
55
56
57 LPTSTR Aggregates_GetColumnText (LPIDENT lpi, AGGREGATECOLUMN aggcol, BOOL fShowServerName)
58 {
59    static TCHAR aszBuffer[ nAGGREGATECOLUMNS ][ cchRESOURCE ];
60    static size_t iBufferNext = 0;
61    LPTSTR pszBuffer = aszBuffer[ iBufferNext++ ];
62    if (iBufferNext == nAGGREGATECOLUMNS)
63       iBufferNext = 0;
64    pszBuffer[0] = TEXT('\0');
65
66    LPAGGREGATE_PREF lpap;
67    LPAGGREGATESTATUS lpas = NULL;
68    LPTSTR pszDevice = NULL;
69    if ((lpap = (LPAGGREGATE_PREF)lpi->GetUserParam()) != NULL)
70       {
71       lpas = &lpap->asLast;
72       pszDevice = lpap->szDevice;
73       }
74
75    switch (aggcol)
76       {
77       case aggcolNAME:
78          if (!fShowServerName)
79             lpi->GetAggregateName (pszBuffer);
80          else
81             {
82             TCHAR szNameSvr[ cchNAME ];
83             TCHAR szNameAgg[ cchNAME ];
84             lpi->GetServerName (szNameSvr);
85             lpi->GetAggregateName (szNameAgg);
86             LPTSTR pszName = FormatString (IDS_SERVER_AGGREGATE, TEXT("%s%s"), szNameSvr, szNameAgg);
87             lstrcpy (pszBuffer, pszName);
88             FreeString (pszName);
89             }
90          break;
91
92       case aggcolID:
93          if (lpas)
94             wsprintf (pszBuffer, TEXT("%lu"), lpas->dwID);
95          break;
96
97       case aggcolDEVICE:
98          if (pszDevice)
99             lstrcpy (pszBuffer, pszDevice);
100          break;
101
102       case aggcolUSED:
103          if (lpas)
104             {
105             LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * (lpas->ckStorageTotal - lpas->ckStorageFree));
106             lstrcpy (pszBuffer, psz);
107             FreeString (psz);
108             }
109          break;
110
111       case aggcolUSED_PER:
112          if (lpas)
113             {
114             DWORD dwPer = 100;
115             if (lpas->ckStorageTotal != 0)
116                dwPer = (DWORD)( 100.0 * (lpas->ckStorageTotal - lpas->ckStorageFree) / lpas->ckStorageTotal );
117
118             dwPer = limit( 0, dwPer, 100 );
119
120             LPTSTR psz = FormatString (IDS_PERCENTAGE, TEXT("%lu"), dwPer);
121             lstrcpy (pszBuffer, psz);
122             FreeString (psz);
123             }
124          break;
125
126       case aggcolALLOCATED:
127          if (lpas)
128             {
129             LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpas->ckStorageAllocated);
130             lstrcpy (pszBuffer, psz);
131             FreeString (psz);
132             }
133          break;
134
135       case aggcolFREE:
136          if (lpas)
137             {
138             LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpas->ckStorageFree);
139             lstrcpy (pszBuffer, psz);
140             FreeString (psz);
141             }
142          break;
143
144       case aggcolTOTAL:
145          if (lpas)
146             {
147             LPTSTR psz = FormatString (TEXT("%1"), TEXT("%.1B"), 1024.0 * lpas->ckStorageTotal);
148             lstrcpy (pszBuffer, psz);
149             FreeString (psz);
150             }
151          break;
152
153       case aggcolSTATUS:
154          LPTSTR pszDesc;
155          if ((pszDesc = Alert_GetQuickDescription (lpi)) == NULL)
156             GetString (pszBuffer, IDS_STATUS_NOALERTS);
157          else
158             {
159             lstrcpy (pszBuffer, pszDesc);
160             FreeString (pszDesc);
161             }
162          break;
163       }
164
165    return pszBuffer;
166 }
167