mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 00:13:57 +00:00
Dmitry Chapyshev <lentind@yandex.ru>
- Modify/Remove action: Wait for the process completion and only then become active again (like Windows' AppWiz does) - Move Updates to another tab - Move all include directives to appwiz.h - Add context menu for applications list - Slightly change this applet's design - Add an icon for ReactOS setup and Update tabs - Add a working Download! button. This button is active only if Download!.exe exists in system32 directory when appwiz.cpl starts - Other small changes svn path=/trunk/; revision=29458
This commit is contained in:
parent
db598dfdbb
commit
73b6c28cf8
|
@ -19,7 +19,7 @@
|
|||
/*
|
||||
*
|
||||
* PROJECT: ReactOS Software Control Panel
|
||||
* FILE: dll/cpl/appwiz/appwiz.c
|
||||
* FILE: dll/cpl/appwiz/add.c
|
||||
* PURPOSE: ReactOS Software Control Panel
|
||||
* PROGRAMMERS: Gero Kuehn (reactos.filter@gkware.com)
|
||||
* Dmitry Chapyshev (lentind@yandex.ru)
|
||||
|
@ -28,19 +28,40 @@
|
|||
* 09-25-2007 Modify
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <tchar.h>
|
||||
#include <process.h>
|
||||
|
||||
#include "resource.h"
|
||||
#include "appwiz.h"
|
||||
|
||||
BOOL
|
||||
CheckDownload(VOID)
|
||||
{
|
||||
TCHAR Buf[MAX_PATH];
|
||||
if(!GetSystemDirectory(Buf,MAX_PATH)) return FALSE;
|
||||
lstrcat((LPTSTR)Buf, L"\\downloader.exe");
|
||||
if (GetFileAttributes(Buf) != 0xFFFFFFFF) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL
|
||||
LaunchDownload(HWND hwndDlg)
|
||||
{
|
||||
STARTUPINFO si;
|
||||
PROCESS_INFORMATION pi;
|
||||
TCHAR Buf[MAX_PATH];
|
||||
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
|
||||
if(!GetSystemDirectory(Buf,MAX_PATH)) return FALSE;
|
||||
lstrcat((LPTSTR)Buf, L"\\downloader.exe");
|
||||
|
||||
if(CreateProcess(NULL,Buf,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
|
||||
{
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
|
@ -54,6 +75,15 @@ AddPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
case WM_INITDIALOG:
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_INSTALL), FALSE);
|
||||
if (CheckDownload()) EnableWindow(GetDlgItem(hwndDlg, IDC_ADD_DOWNLOAD_BUTTON), TRUE);
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_ADD_DOWNLOAD_BUTTON:
|
||||
LaunchDownload(hwndDlg);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,17 +28,6 @@
|
|||
* 09-25-2007 Modify
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <tchar.h>
|
||||
#include <process.h>
|
||||
|
||||
#include "resource.h"
|
||||
#include "appwiz.h"
|
||||
|
||||
#define NUM_APPLETS (1)
|
||||
|
@ -71,7 +60,7 @@ InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
|
|||
LONG CALLBACK
|
||||
SystemApplet(VOID)
|
||||
{
|
||||
PROPSHEETPAGE psp[3];
|
||||
PROPSHEETPAGE psp[4];
|
||||
PROPSHEETHEADER psh;
|
||||
TCHAR Caption[1024];
|
||||
|
||||
|
@ -90,8 +79,9 @@ SystemApplet(VOID)
|
|||
psh.pfnCallback = NULL;
|
||||
|
||||
InitPropSheetPage(&psp[0], IDD_PROPPAGEINSTALL, (DLGPROC) RemovePageProc);
|
||||
InitPropSheetPage(&psp[1], IDD_PROPPAGEADD, (DLGPROC) AddPageProc);
|
||||
InitPropSheetPage(&psp[2], IDD_PROPPAGEROSSETUP, (DLGPROC) RosPageProc);
|
||||
InitPropSheetPage(&psp[1], IDD_PROPPAGEUPDATES, (DLGPROC) UpdatesPageProc);
|
||||
InitPropSheetPage(&psp[2], IDD_PROPPAGEADD, (DLGPROC) AddPageProc);
|
||||
InitPropSheetPage(&psp[3], IDD_PROPPAGEROSSETUP, (DLGPROC) RosPageProc);
|
||||
|
||||
return (LONG)(PropertySheet(&psh) != -1);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,24 @@
|
|||
#ifndef __CPL_APPWIZ_H
|
||||
#define __CPL_APPWIZ_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <windowsx.h> /* GET_X/Y_LPARAM */
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
#include <prsht.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <tchar.h>
|
||||
#include <process.h>
|
||||
#include <prsht.h>
|
||||
#include <shlobj.h>
|
||||
#include <objbase.h>
|
||||
#include <shobjidl.h>
|
||||
#include <shlguid.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
typedef LONG (CALLBACK *CPLAPPLET_PROC)(VOID);
|
||||
|
||||
typedef struct
|
||||
|
@ -26,6 +44,33 @@ extern HINSTANCE hApplet;
|
|||
INT_PTR CALLBACK
|
||||
RemovePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
INT_PTR CALLBACK
|
||||
InfoPropDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
VOID
|
||||
AddListColumn(HWND hList, LPTSTR Caption);
|
||||
|
||||
VOID
|
||||
FillSoftwareList(HWND hwndDlg, BOOL bShowUpdates);
|
||||
|
||||
VOID
|
||||
AddItemsToViewControl(HWND hwndDlg);
|
||||
|
||||
VOID
|
||||
FindItems(HWND hwndDlg);
|
||||
|
||||
VOID
|
||||
CallUninstall(HWND hwndDlg, UINT Control, BOOL isUpdate);
|
||||
|
||||
VOID
|
||||
GetCurrentView(HWND hwndDlg);
|
||||
|
||||
VOID
|
||||
CallInformation(HWND hwndDlg);
|
||||
|
||||
VOID
|
||||
ShowPopupMenu(HWND hwndDlg, UINT ResMenu, INT xPos, INT yPos);
|
||||
|
||||
/* add.c */
|
||||
INT_PTR CALLBACK
|
||||
AddPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
@ -44,6 +89,10 @@ FinishDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|||
LONG CALLBACK
|
||||
NewLinkHere(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
|
||||
|
||||
/* updates.c */
|
||||
INT_PTR CALLBACK
|
||||
UpdatesPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void ShowLastWin32Error(HWND hWndOwner);
|
||||
|
||||
#endif /* __CPL_APPWIZ_H */
|
||||
|
|
|
@ -19,5 +19,6 @@
|
|||
<file>add.c</file>
|
||||
<file>rossetup.c</file>
|
||||
<file>createlink.c</file>
|
||||
<file>updates.c</file>
|
||||
<file>appwiz.rc</file>
|
||||
</module>
|
||||
|
|
|
@ -21,6 +21,8 @@ IDI_INSTICO ICON "resources/1502.ico"
|
|||
IDI_RECBINICO ICON "resources/1503.ico"
|
||||
IDI_DOWNLOADICO ICON "resources/1504.ico"
|
||||
IDI_APPINETICO ICON "resources/1505.ico"
|
||||
IDI_UPDATES ICON "resources/updates.ico"
|
||||
IDI_REACTOS ICON "resources/reactos.ico"
|
||||
|
||||
IDB_WATERMARK BITMAP "resources/watermark.bmp"
|
||||
|
||||
|
|
|
@ -1,27 +1,15 @@
|
|||
|
||||
/* $Id: appwiz.c 29364 2007-10-02 23:34:00Z janderwald $
|
||||
*
|
||||
* PROJECT: ReactOS Software Control Panel
|
||||
* FILE: dll/cpl/appwiz/createlink.c
|
||||
* PURPOSE: ReactOS Software Control Panel
|
||||
* PROGRAMMER: Johannes Anderwald
|
||||
* PROGRAMMER: Gero Kuehn (reactos.filter@gkware.com)
|
||||
* Dmitry Chapyshev (lentind@yandex.ru)
|
||||
* Johannes Anderwald
|
||||
* UPDATE HISTORY:
|
||||
* 06-17-2004 Created
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
#include <prsht.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <tchar.h>
|
||||
#include <process.h>
|
||||
#include <shlobj.h>
|
||||
#include <objbase.h>
|
||||
#include <shobjidl.h>
|
||||
#include <shlguid.h>
|
||||
#include <stdio.h>
|
||||
#include "resource.h"
|
||||
#include "appwiz.h"
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,23 @@
|
|||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
IDR_POPUP_APP MENU
|
||||
BEGIN
|
||||
POPUP "popup"
|
||||
BEGIN
|
||||
MENUITEM "Modify/&Remove",ID_APP_MODIFYREMOVE
|
||||
MENUITEM "&Information", ID_APP_INFORMATION
|
||||
END
|
||||
END
|
||||
|
||||
IDR_POPUP_UPD MENU
|
||||
BEGIN
|
||||
POPUP "popup"
|
||||
BEGIN
|
||||
MENUITEM "&Remove", ID_UPD_REMOVE
|
||||
MENUITEM "&Information", ID_UPD_INFORMATION
|
||||
END
|
||||
END
|
||||
|
||||
IDD_PROPPAGEINSTALL DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Change or Remove Programs"
|
||||
|
@ -7,14 +25,29 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
|||
BEGIN
|
||||
ICON IDI_CPLSYSTEM,-1,PROPSHEETPADDING,6,16,16
|
||||
LTEXT "The following Software can be automatically removed. To remove a program or to modify its installed components, select it from the list and click Modify/Remove.",-1,36,7,PROPSHEETWIDTH-48,32
|
||||
CONTROL "&Show updates",IDC_SHOWUPDATES,"button",BS_AUTOCHECKBOX | WS_TABSTOP,PROPSHEETPADDING, 30, 100, 14
|
||||
LTEXT "Find:",-1,172,33,50,14
|
||||
EDITTEXT IDC_FIND_EDIT, 193, 30, 180, 14, WS_VISIBLE | WS_TABSTOP
|
||||
LTEXT "Find:",-1,PROPSHEETPADDING,33,50,14
|
||||
EDITTEXT IDC_FIND_EDIT, PROPSHEETPADDING+30, 30, 180, 14, WS_VISIBLE | WS_TABSTOP
|
||||
LTEXT "View:",-1,250,33,40,8
|
||||
COMBOBOX IDC_VIEW_COMBO, 280, 30, 94, 80, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL
|
||||
CONTROL "", IDC_SOFTWARELIST, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_AUTOARRANGE | LVS_SINGLESEL, PROPSHEETPADDING, 50, PROPSHEETWIDTH-12, 155, WS_EX_CLIENTEDGE
|
||||
PUSHBUTTON "Modify/&Remove", IDC_ADDREMOVE, PROPSHEETPADDING, 210, 80, 14, WS_DISABLED
|
||||
PUSHBUTTON "&Information", IDC_INFO_BUTTON, PROPSHEETPADDING+85, 210, 80, 14, WS_DISABLED
|
||||
LTEXT "View:",-1,253,212,40,8
|
||||
COMBOBOX IDC_VIEW_COMBO, 280, 210, 94, 80, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL
|
||||
END
|
||||
|
||||
IDD_PROPPAGEUPDATES DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Remove Updates"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
ICON IDI_UPDATES,-1,PROPSHEETPADDING,6,16,16
|
||||
LTEXT "The following Updates can be automatically removed. To remove a update, select it from the list and click Remove.",-1,36,7,PROPSHEETWIDTH-48,32
|
||||
LTEXT "Find:",-1,PROPSHEETPADDING,33,50,14
|
||||
EDITTEXT IDC_FIND_EDIT, PROPSHEETPADDING+30, 30, 180, 14, WS_VISIBLE | WS_TABSTOP
|
||||
LTEXT "View:",-1,250,33,40,8
|
||||
COMBOBOX IDC_VIEW_COMBO, 280, 30, 94, 80, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL
|
||||
CONTROL "", IDC_SOFTWARELIST, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_AUTOARRANGE | LVS_SINGLESEL, PROPSHEETPADDING, 50, PROPSHEETWIDTH-12, 155, WS_EX_CLIENTEDGE
|
||||
PUSHBUTTON "&Remove", IDC_ADDREMOVE, PROPSHEETPADDING, 210, 80, 14, WS_DISABLED
|
||||
PUSHBUTTON "&Information", IDC_INFO_BUTTON, PROPSHEETPADDING+85, 210, 80, 14, WS_DISABLED
|
||||
END
|
||||
|
||||
IDD_PROPPAGEADD DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT
|
||||
|
@ -28,12 +61,12 @@ BEGIN
|
|||
LTEXT "", -1, PROPSHEETPADDING, 70, PROPSHEETWIDTH-12, 1, NOT WS_GROUP | SS_SUNKEN
|
||||
ICON IDI_DOWNLOADICO,-1,PROPSHEETPADDING,80,32,32
|
||||
LTEXT "To download and install new applications, press ""Download !"".",-1,36,83,PROPSHEETWIDTH-48,17
|
||||
PUSHBUTTON "&Download !", IDC_INSTALL, PROPSHEETWIDTH-(90), 125, 80, 14
|
||||
PUSHBUTTON "&Download !", IDC_ADD_DOWNLOAD_BUTTON, PROPSHEETWIDTH-(90), 125, 80, 14, WS_DISABLED
|
||||
LTEXT "", -1, PROPSHEETPADDING, 150, PROPSHEETWIDTH-12, 1, NOT WS_GROUP | SS_SUNKEN
|
||||
ICON IDI_APPINETICO,-1,PROPSHEETPADDING,160,32,32
|
||||
LTEXT "Press ""Find in the Internet"" button in order to search for new applications available via Internet connection.",-1,36,161,PROPSHEETWIDTH-48,17
|
||||
PUSHBUTTON "&Properties...", IDC_INSTALL, PROPSHEETWIDTH-(175), 205, 80, 14
|
||||
PUSHBUTTON "&Find in the Internet", IDC_INSTALL, PROPSHEETWIDTH-(90), 205, 80, 14
|
||||
PUSHBUTTON "&Properties...", IDC_ADD_PROP_BUTTON, PROPSHEETWIDTH-(175), 205, 80, 14, WS_DISABLED
|
||||
PUSHBUTTON "&Find in the Internet", IDC_ADD_FIND_BUTTON, PROPSHEETWIDTH-(90), 205, 80, 14, WS_DISABLED
|
||||
END
|
||||
|
||||
IDD_PROPPAGEROSSETUP DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT
|
||||
|
@ -41,7 +74,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
|||
CAPTION "ReactOS Setup"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
|
||||
ICON IDI_REACTOS,-1,PROPSHEETPADDING,6,16,16
|
||||
LTEXT "",-1,36,7,PROPSHEETWIDTH-48,32
|
||||
END
|
||||
|
||||
IDD_FIRSTPAGE DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT
|
||||
|
@ -85,6 +119,35 @@ BEGIN
|
|||
LTEXT "Click Finish to create the shortcut.", -1, 120, 50, 150, 10
|
||||
END
|
||||
|
||||
IDD_INFORMATION DIALOG 5, 100, 269, 200
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION
|
||||
CAPTION "Information"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "DisplayName", IDS_INFO_DISPNAME, PROPSHEETPADDING, 8, 160, 24
|
||||
LTEXT "Registered Owner:", -1, PROPSHEETPADDING, 25, 160, 17
|
||||
LTEXT "", IDS_INFO_REGOWNER, PROPSHEETPADDING+75, 25, 160, 17
|
||||
LTEXT "Product ID:", -1, PROPSHEETPADDING, 40, 160, 17
|
||||
LTEXT "", IDS_INFO_PRODUCTID, PROPSHEETPADDING+75, 40, 160, 17
|
||||
LTEXT "Publisher:", -1, PROPSHEETPADDING, 55, 160, 17
|
||||
LTEXT "", IDS_INFO_PUBLISHER, PROPSHEETPADDING+75, 55, 160, 17
|
||||
LTEXT "Version:", -1, PROPSHEETPADDING, 70, 160, 17
|
||||
LTEXT "", IDS_INFO_VERSION, PROPSHEETPADDING+75, 70, 160, 17
|
||||
LTEXT "Contact:", -1, PROPSHEETPADDING, 85, 160, 17
|
||||
LTEXT "", IDS_INFO_CONTACT, PROPSHEETPADDING+75, 85, 160, 17
|
||||
LTEXT "Support Information:", -1, PROPSHEETPADDING, 100, 160, 17
|
||||
LTEXT "", IDS_INFO_SUPPORTINFO, PROPSHEETPADDING+75, 100, 160, 17
|
||||
LTEXT "Support Telephone:", -1, PROPSHEETPADDING, 115, 160, 17
|
||||
LTEXT "", IDS_INFO_SUPPORTPHONE, PROPSHEETPADDING+75, 115, 160, 17
|
||||
LTEXT "Product Updates:", -1, PROPSHEETPADDING, 130, 160, 17
|
||||
LTEXT "", IDS_INFO_PRODUCT_UPDATES, PROPSHEETPADDING+75, 130, 160, 17
|
||||
LTEXT "Readme:", -1, PROPSHEETPADDING, 145, 160, 17
|
||||
LTEXT "", IDS_INFO_README, PROPSHEETPADDING+75, 145, 160, 17
|
||||
LTEXT "Comments:", -1, PROPSHEETPADDING, 160, 160, 17
|
||||
LTEXT "", IDS_INFO_COMMENTS, PROPSHEETPADDING+75, 160, 160, 17
|
||||
PUSHBUTTON "&Close", IDCANCEL, 212, 180, 50, 14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_CPLSYSTEMNAME "Add/Remove Programs"
|
||||
|
@ -94,6 +157,7 @@ BEGIN
|
|||
IDS_UNABLEREAD_UNINSTSTR "Unable to read UninstallString. This entry is invalid or has been created by an MSI installer."
|
||||
IDS_UNABLEOPEN_UNINSTKEY "Unable to open Uninstall Key"
|
||||
IDS_APPLIST "Currently installed programs"
|
||||
IDS_UPDATESLIST "Currently installed updates"
|
||||
IDS_LARGEICONS "Large Icons"
|
||||
IDS_LIST "List"
|
||||
IDS_DETAILS "Details"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
/*
|
||||
*
|
||||
* PROJECT: ReactOS Software Control Panel
|
||||
* FILE: dll/cpl/appwiz/appwiz.c
|
||||
* FILE: dll/cpl/appwiz/remove.c
|
||||
* PURPOSE: ReactOS Software Control Panel
|
||||
* PROGRAMMERS: Gero Kuehn (reactos.filter@gkware.com)
|
||||
* Dmitry Chapyshev (lentind@yandex.ru)
|
||||
|
@ -28,21 +28,16 @@
|
|||
* 09-25-2007 Modify
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <tchar.h>
|
||||
#include <process.h>
|
||||
|
||||
#include "resource.h"
|
||||
#include "appwiz.h"
|
||||
|
||||
static VOID
|
||||
CallUninstall(HWND hwndDlg)
|
||||
VOID
|
||||
CallInformation(HWND hwndDlg)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
VOID
|
||||
CallUninstall(HWND hwndDlg, UINT Control, BOOL isUpdate)
|
||||
{
|
||||
STARTUPINFO si;
|
||||
PROCESS_INFORMATION pi;
|
||||
|
@ -53,7 +48,7 @@ CallUninstall(HWND hwndDlg)
|
|||
DWORD dwSize;
|
||||
TCHAR Buf[256],Title[256];
|
||||
|
||||
nIndex = (INT)SendMessage(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
|
||||
nIndex = (INT)SendMessage(GetDlgItem(hwndDlg, Control),LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
|
||||
if (nIndex == -1)
|
||||
{
|
||||
LoadString(hApplet, IDS_NOITEM_SELECTED, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
|
@ -87,8 +82,12 @@ CallUninstall(HWND hwndDlg)
|
|||
si.wShowWindow = SW_SHOW;
|
||||
if (CreateProcess(NULL,pszUninstallString,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
|
||||
{
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
// Update software list
|
||||
(void)ListView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_SOFTWARELIST));
|
||||
FillSoftwareList(hwndDlg, isUpdate);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -103,7 +102,7 @@ CallUninstall(HWND hwndDlg)
|
|||
}
|
||||
}
|
||||
|
||||
static VOID
|
||||
VOID
|
||||
AddListColumn(HWND hList, LPTSTR Caption)
|
||||
{
|
||||
LV_COLUMN dummy;
|
||||
|
@ -166,11 +165,10 @@ AddItemToList(HWND hwndDlg, LPARAM hSubKey, LPTSTR pszDisplayName, INT ItemIndex
|
|||
|
||||
(void)ListView_SetImageList(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),hImgListSmall,LVSIL_SMALL);
|
||||
(void)ListView_SetImageList(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),hImgListLarge,LVSIL_NORMAL);
|
||||
|
||||
}
|
||||
|
||||
static VOID
|
||||
FillSoftwareList(HWND hwndDlg)
|
||||
VOID
|
||||
FillSoftwareList(HWND hwndDlg, BOOL bShowUpdates)
|
||||
{
|
||||
TCHAR pszName[MAX_PATH];
|
||||
TCHAR pszDisplayName[MAX_PATH];
|
||||
|
@ -183,12 +181,9 @@ FillSoftwareList(HWND hwndDlg)
|
|||
DWORD dwValue = 0;
|
||||
BOOL bIsUpdate = FALSE;
|
||||
BOOL bIsSystemComponent = FALSE;
|
||||
BOOL bShowUpdates = FALSE;
|
||||
INT ItemIndex = 0;
|
||||
TCHAR Buf[256],Title[256];
|
||||
|
||||
bShowUpdates = (SendMessage(GetDlgItem(hwndDlg, IDC_SHOWUPDATES), BM_GETCHECK, 0, 0) == BST_CHECKED);
|
||||
|
||||
if (RegOpenKey(HKEY_LOCAL_MACHINE,
|
||||
TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"),
|
||||
&hKey) != ERROR_SUCCESS)
|
||||
|
@ -240,7 +235,7 @@ FillSoftwareList(HWND hwndDlg)
|
|||
(LPBYTE)pszDisplayName,
|
||||
&dwSize) == ERROR_SUCCESS)
|
||||
{
|
||||
if ((!bIsUpdate) && (!bIsSystemComponent))
|
||||
if ((!bIsUpdate) && (!bIsSystemComponent) && (!bShowUpdates))
|
||||
{
|
||||
AddItemToList(hwndDlg, (LPARAM)hSubKey, (LPTSTR)pszDisplayName, ItemIndex);
|
||||
}
|
||||
|
@ -258,7 +253,7 @@ FillSoftwareList(HWND hwndDlg)
|
|||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
static VOID
|
||||
VOID
|
||||
AddItemsToViewControl(HWND hwndDlg)
|
||||
{
|
||||
TCHAR Buf[256];
|
||||
|
@ -304,7 +299,7 @@ AddItemsToViewControl(HWND hwndDlg)
|
|||
(LPARAM)Buf);
|
||||
}
|
||||
|
||||
static VOID
|
||||
VOID
|
||||
FindItems(HWND hwndDlg)
|
||||
{
|
||||
HWND hList;
|
||||
|
@ -344,43 +339,8 @@ FindItems(HWND hwndDlg)
|
|||
}
|
||||
}
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
RemovePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TCHAR Buf[256];
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
AddItemsToViewControl(hwndDlg);
|
||||
LoadString(hApplet, IDS_APPLIST, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
AddListColumn(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),Buf);
|
||||
FillSoftwareList(hwndDlg);
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_FIND_EDIT:
|
||||
if (HIWORD(wParam) == EN_CHANGE)
|
||||
{
|
||||
FindItems(hwndDlg);
|
||||
}
|
||||
break;
|
||||
case IDC_SHOWUPDATES:
|
||||
if (HIWORD(wParam) == BN_CLICKED)
|
||||
{
|
||||
SendMessage(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),LVM_DELETEALLITEMS,0,0);
|
||||
FillSoftwareList(hwndDlg);
|
||||
}
|
||||
break;
|
||||
case IDC_ADDREMOVE:
|
||||
CallUninstall(hwndDlg);
|
||||
break;
|
||||
case IDC_VIEW_COMBO:
|
||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||
VOID
|
||||
GetCurrentView(HWND hwndDlg)
|
||||
{
|
||||
int nCurrSel;
|
||||
nCurrSel = (int)SendMessage(GetDlgItem(hwndDlg, IDC_VIEW_COMBO),
|
||||
|
@ -403,17 +363,120 @@ RemovePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
ShowPopupMenu(HWND hwndDlg, UINT ResMenu, INT xPos, INT yPos)
|
||||
{
|
||||
INT nIndex;
|
||||
nIndex = (INT)SendMessage(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
|
||||
if ( nIndex != -1)
|
||||
{
|
||||
POINT pt;
|
||||
RECT lvRect;
|
||||
HMENU hMenu;
|
||||
|
||||
GetCursorPos(&pt);
|
||||
|
||||
GetWindowRect(GetDlgItem(hwndDlg, IDC_SOFTWARELIST), &lvRect);
|
||||
if (PtInRect(&lvRect, pt))
|
||||
{
|
||||
hMenu = GetSubMenu(LoadMenu(hApplet, MAKEINTRESOURCE(ResMenu)),0);
|
||||
TrackPopupMenuEx(hMenu,
|
||||
TPM_RIGHTBUTTON,
|
||||
xPos,
|
||||
yPos,
|
||||
hwndDlg,
|
||||
NULL);
|
||||
DestroyMenu(hMenu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK
|
||||
InfoPropDlgProc(HWND hDlg,
|
||||
UINT message,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
|
||||
break;
|
||||
case IDCANCEL:
|
||||
EndDialog(hDlg,LOWORD(wParam));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
RemovePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TCHAR Buf[256];
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
AddItemsToViewControl(hwndDlg);
|
||||
LoadString(hApplet, IDS_APPLIST, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
AddListColumn(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),Buf);
|
||||
FillSoftwareList(hwndDlg, FALSE);
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_FIND_EDIT:
|
||||
if (HIWORD(wParam) == EN_CHANGE)
|
||||
{
|
||||
FindItems(hwndDlg);
|
||||
}
|
||||
break;
|
||||
case ID_APP_MODIFYREMOVE:
|
||||
case IDC_ADDREMOVE:
|
||||
CallUninstall(hwndDlg, IDC_SOFTWARELIST, FALSE);
|
||||
break;
|
||||
case ID_APP_INFORMATION:
|
||||
case IDC_INFO_BUTTON:
|
||||
DialogBox(hApplet,
|
||||
MAKEINTRESOURCE(IDD_INFORMATION),
|
||||
hwndDlg,
|
||||
InfoPropDlgProc);
|
||||
break;
|
||||
case IDC_VIEW_COMBO:
|
||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
GetCurrentView(hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_SOFTWARELIST:
|
||||
switch (((LPNMHDR)lParam)->code)
|
||||
{
|
||||
case NM_DBLCLK:
|
||||
CallUninstall(hwndDlg);
|
||||
CallUninstall(hwndDlg, IDC_SOFTWARELIST, FALSE);
|
||||
break;
|
||||
case NM_CLICK:
|
||||
{
|
||||
|
@ -422,16 +485,34 @@ RemovePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
if (nIndex == -1)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADDREMOVE),FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_INFO_BUTTON),FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADDREMOVE),TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_INFO_BUTTON),TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_MENUSELECT:
|
||||
{
|
||||
switch((UINT)LOWORD(wParam))
|
||||
{
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_CONTEXTMENU:
|
||||
{
|
||||
ShowPopupMenu(hwndDlg,
|
||||
IDR_POPUP_APP,
|
||||
GET_X_LPARAM(lParam),
|
||||
GET_Y_LPARAM(lParam));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,17 @@
|
|||
#define IDI_RECBINICO 1503
|
||||
#define IDI_DOWNLOADICO 1504
|
||||
#define IDI_APPINETICO 1505
|
||||
#define IDI_UPDATES 1506
|
||||
#define IDI_REACTOS 1507
|
||||
|
||||
/* menus */
|
||||
#define IDR_POPUP_APP 3000
|
||||
#define IDR_POPUP_UPD 3001
|
||||
|
||||
#define ID_APP_MODIFYREMOVE 3500
|
||||
#define ID_APP_INFORMATION 3501
|
||||
#define ID_UPD_REMOVE 3502
|
||||
#define ID_UPD_INFORMATION 3503
|
||||
|
||||
/* dialogs */
|
||||
#define IDD_PROPPAGEINSTALL 200
|
||||
|
@ -25,6 +36,8 @@
|
|||
#define IDD_PROPPAGEADD 202
|
||||
#define IDD_SHORTCUT_LOCATION 203
|
||||
#define IDD_SHORTCUT_FINISH 204
|
||||
#define IDD_PROPPAGEUPDATES 205
|
||||
#define IDD_INFORMATION 206
|
||||
|
||||
/* bitmaps */
|
||||
#define IDB_WATERMARK 5001
|
||||
|
@ -40,20 +53,34 @@
|
|||
#define IDS_LARGEICONS 2007
|
||||
#define IDS_LIST 2008
|
||||
#define IDS_DETAILS 2009
|
||||
#define IDS_CREATE_SHORTCUT 2010
|
||||
#define IDS_ERROR_NOT_FOUND 2011
|
||||
#define IDS_UPDATESLIST 2010
|
||||
#define IDS_INFO_DISPNAME 2011
|
||||
#define IDS_INFO_PUBLISHER 2012
|
||||
#define IDS_INFO_VERSION 2013
|
||||
#define IDS_INFO_CONTACT 2014
|
||||
#define IDS_INFO_SUPPORTINFO 2015
|
||||
#define IDS_INFO_SUPPORTPHONE 2016
|
||||
#define IDS_INFO_PRODUCT_UPDATES 2017
|
||||
#define IDS_INFO_COMMENTS 2018
|
||||
#define IDS_INFO_REGOWNER 2019
|
||||
#define IDS_INFO_PRODUCTID 2020
|
||||
#define IDS_INFO_README 2021
|
||||
#define IDS_CREATE_SHORTCUT 2022
|
||||
#define IDS_ERROR_NOT_FOUND 2023
|
||||
|
||||
/* controls */
|
||||
#define IDC_INSTALL 101
|
||||
#define IDC_SOFTWARELIST 102
|
||||
#define IDC_ADDREMOVE 103
|
||||
#define IDC_SHOWUPDATES 104
|
||||
#define IDC_FIND_EDIT 105
|
||||
#define IDC_INFO_BUTTON 106
|
||||
#define IDC_VIEW_COMBO 107
|
||||
#define IDC_SHORTCUT_LOCATION 108
|
||||
#define IDC_SHORTCUT_BROWSE 109
|
||||
#define IDC_SHORTCUT_NAME 110
|
||||
#define IDC_FIND_EDIT 104
|
||||
#define IDC_INFO_BUTTON 105
|
||||
#define IDC_VIEW_COMBO 106
|
||||
#define IDC_SHORTCUT_LOCATION 107
|
||||
#define IDC_SHORTCUT_BROWSE 108
|
||||
#define IDC_SHORTCUT_NAME 109
|
||||
#define IDC_ADD_DOWNLOAD_BUTTON 110
|
||||
#define IDC_ADD_FIND_BUTTON 111
|
||||
#define IDC_ADD_PROP_BUTTON 112
|
||||
|
||||
#endif /* __CPL_RESOURCE_H */
|
||||
|
||||
|
|
BIN
reactos/dll/cpl/appwiz/resources/reactos.ico
Normal file
BIN
reactos/dll/cpl/appwiz/resources/reactos.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
BIN
reactos/dll/cpl/appwiz/resources/updates.ico
Normal file
BIN
reactos/dll/cpl/appwiz/resources/updates.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
|
@ -19,7 +19,7 @@
|
|||
/*
|
||||
*
|
||||
* PROJECT: ReactOS Software Control Panel
|
||||
* FILE: dll/cpl/appwiz/appwiz.c
|
||||
* FILE: dll/cpl/appwiz/rossetup.c
|
||||
* PURPOSE: ReactOS Software Control Panel
|
||||
* PROGRAMMERS: Gero Kuehn (reactos.filter@gkware.com)
|
||||
* Dmitry Chapyshev (lentind@yandex.ru)
|
||||
|
@ -28,17 +28,6 @@
|
|||
* 09-25-2007 Modify
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <cpl.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <tchar.h>
|
||||
#include <process.h>
|
||||
|
||||
#include "resource.h"
|
||||
#include "appwiz.h"
|
||||
|
||||
|
||||
|
|
118
reactos/dll/cpl/appwiz/updates.c
Normal file
118
reactos/dll/cpl/appwiz/updates.c
Normal file
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* ReactOS
|
||||
* Copyright (C) 2004 ReactOS Team
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* PROJECT: ReactOS Software Control Panel
|
||||
* FILE: dll/cpl/appwiz/updates.c
|
||||
* PURPOSE: ReactOS Software Control Panel
|
||||
* PROGRAMMERS: Gero Kuehn (reactos.filter@gkware.com)
|
||||
* Dmitry Chapyshev (lentind@yandex.ru)
|
||||
* UPDATE HISTORY:
|
||||
* 06-17-2004 Created
|
||||
* 09-25-2007 Modify
|
||||
*/
|
||||
|
||||
#include "appwiz.h"
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
UpdatesPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
UNREFERENCED_PARAMETER(wParam);
|
||||
UNREFERENCED_PARAMETER(hwndDlg);
|
||||
TCHAR Buf[256];
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
AddItemsToViewControl(hwndDlg);
|
||||
LoadString(hApplet, IDS_UPDATESLIST, Buf, sizeof(Buf) / sizeof(TCHAR));
|
||||
AddListColumn(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),Buf);
|
||||
FillSoftwareList(hwndDlg, TRUE);
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_FIND_EDIT:
|
||||
if (HIWORD(wParam) == EN_CHANGE)
|
||||
{
|
||||
FindItems(hwndDlg);
|
||||
}
|
||||
break;
|
||||
case ID_UPD_INFORMATION:
|
||||
case IDC_INFO_BUTTON:
|
||||
DialogBox(hApplet,
|
||||
MAKEINTRESOURCE(IDD_INFORMATION),
|
||||
hwndDlg,
|
||||
InfoPropDlgProc);
|
||||
break;
|
||||
case ID_UPD_REMOVE:
|
||||
case IDC_ADDREMOVE:
|
||||
CallUninstall(hwndDlg, IDC_SOFTWARELIST, TRUE);
|
||||
break;
|
||||
case IDC_VIEW_COMBO:
|
||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||
{
|
||||
GetCurrentView(hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_NOTIFY:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_SOFTWARELIST:
|
||||
switch (((LPNMHDR)lParam)->code)
|
||||
{
|
||||
case NM_DBLCLK:
|
||||
CallUninstall(hwndDlg, IDC_SOFTWARELIST, TRUE);
|
||||
break;
|
||||
case NM_CLICK:
|
||||
{
|
||||
INT nIndex;
|
||||
nIndex = (INT)SendMessage(GetDlgItem(hwndDlg, IDC_SOFTWARELIST),LVM_GETNEXTITEM,-1,LVNI_FOCUSED);
|
||||
if (nIndex == -1)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADDREMOVE),FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_INFO_BUTTON),FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_ADDREMOVE),TRUE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDC_INFO_BUTTON),TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WM_CONTEXTMENU:
|
||||
{
|
||||
ShowPopupMenu(hwndDlg,
|
||||
IDR_POPUP_UPD,
|
||||
GET_X_LPARAM(lParam),
|
||||
GET_Y_LPARAM(lParam));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
Loading…
Reference in a new issue