Author: greatlrd
Date: Fri Dec 1 20:36:07 2006
New Revision: 25012
URL:
http://svn.reactos.org/svn/reactos?rev=25012&view=rev
Log:
Colin Finck (mail at colinfinck dot de)
patch to sysdm (id=1161)
fixing truncate of string and making allot better layout of the system info.
See issue #1858 for more details.
Modified:
trunk/reactos/dll/cpl/sysdm/en.rc
trunk/reactos/dll/cpl/sysdm/general.c
trunk/reactos/dll/cpl/sysdm/resource.h
Modified: trunk/reactos/dll/cpl/sysdm/en.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/en.rc?rev=25…
==============================================================================
--- trunk/reactos/dll/cpl/sysdm/en.rc (original)
+++ trunk/reactos/dll/cpl/sysdm/en.rc Fri Dec 1 20:36:07 2006
@@ -11,10 +11,11 @@
LTEXT "Version ", IDC_STATIC, 10, 153, 25, 9
LTEXT REACTOS_STR_PRODUCT_VERSION, IDC_STATIC, 35, 153, 91, 9
LTEXT "Machine:", IDC_STATIC, 124, 132, 34, 9
- LTEXT "", IDC_PROCESSORMANUFACTURER, 130, 144, 118, 9
- LTEXT "", IDC_PROCESSOR, 130, 153, 118, 9
- LTEXT "", IDC_PROCESSORSPEED, 130, 162, 118, 9
- LTEXT "", IDC_SYSTEMMEMORY, 130, 171, 118, 9
+ LTEXT "", IDC_MACHINELINE1, 130, 144, 118, 9
+ LTEXT "", IDC_MACHINELINE2, 130, 153, 118, 9
+ LTEXT "", IDC_MACHINELINE3, 130, 162, 118, 9
+ LTEXT "", IDC_MACHINELINE4, 130, 171, 118, 9
+ LTEXT "", IDC_MACHINELINE5, 130, 180, 118, 9
LTEXT "Visit the ReactOS Homepage", IDC_ROSHOMEPAGE_LINK, 20, 200,
93, 8
PUSHBUTTON "View licence...", IDC_LICENCE, 170, 199, 78, 13
END
Modified: trunk/reactos/dll/cpl/sysdm/general.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/general.c?re…
==============================================================================
--- trunk/reactos/dll/cpl/sysdm/general.c (original)
+++ trunk/reactos/dll/cpl/sysdm/general.c Fri Dec 1 20:36:07 2006
@@ -5,6 +5,7 @@
* PURPOSE: General System Information
* COPYRIGHT: Copyright Thomas Weidenmueller <w3seek(a)reactos.org>
* Copyright 2006 Ged Murphy <gedmurphy(a)gmail.com>
+ * Copyright 2006 Colin Finck <mail(a)colinfinck.de>
*
*/
@@ -110,16 +111,21 @@
}
}
-static VOID
-SetProcName(HWND hwnd,
- HKEY hKey,
- LPTSTR Value,
- UINT uID)
+static INT
+SetProcNameString(HWND hwnd,
+ HKEY hKey,
+ LPTSTR Value,
+ UINT uID1,
+ UINT uID2)
{
LPTSTR lpBuf = NULL;
DWORD BufSize = 0;
DWORD Type;
-
+ INT Ret = 0;
+ TCHAR szBuf[31];
+ TCHAR* szLastSpace;
+ INT LastSpace = 0;
+
if (RegQueryValueEx(hKey,
Value,
NULL,
@@ -129,8 +135,8 @@
{
lpBuf = HeapAlloc(GetProcessHeap(),
0,
- BufSize);
- if (!lpBuf) return;
+ BufSize);
+ if (!lpBuf) return 0;
if (RegQueryValueEx(hKey,
Value,
@@ -139,15 +145,56 @@
(PBYTE)lpBuf,
&BufSize) == ERROR_SUCCESS)
{
- SetDlgItemText(hwnd,
- uID,
- lpBuf + _tcsspn(lpBuf, _T(" ")));
+ if(BufSize > ((30 + 1) * sizeof(TCHAR)))
+ {
+ /* Wrap the Processor Name String like XP does:
*
+ * - Take the first 30 characters and look for the last space.
*
+ * Then wrap the string after this space.
*
+ * - If no space is found, wrap the string after character 30.
*
+ *
*
+ * For example the Processor Name String of a Pentium 4 is right-aligned.
*
+ * With this wrapping the first line looks centered.
*/
+
+ _tcsncpy(szBuf, lpBuf, 30);
+ szLastSpace = _tcsrchr(szBuf, ' ');
+
+ if(szLastSpace == 0)
+ LastSpace = 30;
+ else
+ LastSpace = (szLastSpace - szBuf);
+
+ _tcsncpy(szBuf, lpBuf, LastSpace);
+ szBuf[LastSpace] = 0;
+
+ SetDlgItemText(hwnd,
+ uID1,
+ szBuf);
+
+ SetDlgItemText(hwnd,
+ uID2,
+ lpBuf+LastSpace+1);
+
+ /* Return the number of used lines */
+ Ret = 2;
+ }
+ else
+ {
+ SetDlgItemText(hwnd,
+ uID1,
+ lpBuf);
+
+ Ret = 1;
+ }
}
HeapFree(GetProcessHeap(),
0,
lpBuf);
- }
+
+ return Ret;
+ }
+
+ return 0;
}
static VOID
@@ -193,6 +240,7 @@
MEMORYSTATUSEX MemStat;
TCHAR Buf[32];
INT Ret = 0;
+ INT CurMachineLine = IDC_MACHINELINE1;
/* Get Processor information *
@@ -209,17 +257,21 @@
SetRegTextData(hwnd,
hKey,
_T("VendorIdentifier"),
- IDC_PROCESSORMANUFACTURER);
-
- SetProcName(hwnd,
- hKey,
- _T("ProcessorNameString"),
- IDC_PROCESSOR);
-
+ CurMachineLine);
+ CurMachineLine++;
+
+ Ret = SetProcNameString(hwnd,
+ hKey,
+ _T("ProcessorNameString"),
+ CurMachineLine,
+ CurMachineLine+1);
+ CurMachineLine += Ret;
+
SetProcSpeed(hwnd,
hKey,
_T("~MHz"),
- IDC_PROCESSORSPEED);
+ CurMachineLine);
+ CurMachineLine++;
}
@@ -279,7 +331,7 @@
if (Ret)
{
SetDlgItemText(hwnd,
- IDC_SYSTEMMEMORY,
+ CurMachineLine,
Buf);
}
}
@@ -363,3 +415,6 @@
}
+
+
+
Modified: trunk/reactos/dll/cpl/sysdm/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/resource.h?r…
==============================================================================
--- trunk/reactos/dll/cpl/sysdm/resource.h (original)
+++ trunk/reactos/dll/cpl/sysdm/resource.h Fri Dec 1 20:36:07 2006
@@ -22,13 +22,14 @@
/* propsheet - general */
#define IDD_PROPPAGEGENERAL 100
-#define IDC_PROCESSORMANUFACTURER 101
-#define IDC_PROCESSOR 102
-#define IDC_PROCESSORSPEED 103
-#define IDC_SYSTEMMEMORY 104
-#define IDC_LICENCE 105
-#define IDC_ROSIMG 106
-#define IDC_ROSHOMEPAGE_LINK 107
+#define IDC_MACHINELINE1 101
+#define IDC_MACHINELINE2 102
+#define IDC_MACHINELINE3 103
+#define IDC_MACHINELINE4 104
+#define IDC_MACHINELINE5 105
+#define IDC_LICENCE 106
+#define IDC_ROSIMG 107
+#define IDC_ROSHOMEPAGE_LINK 108
/* propsheet - computer name */