Sync with trunk r58740.
[reactos.git] / base / applications / rapps / rapps.h
1 #define WIN32_NO_STATUS
2 #define _INC_WINDOWS
3 #define COM_NO_WINDOWS_H
4 #include <stdarg.h>
5 #include <windef.h>
6 #include <winbase.h>
7 #include <winreg.h>
8 #include <wingdi.h>
9 #include <winnls.h>
10 #include <winuser.h>
11 #include <richedit.h>
12 #include <shellapi.h>
13 #include <shlwapi.h>
14 #include <shlobj.h>
15 #include <stdio.h>
16
17 #include <rappsmsg.h>
18
19 #include "resource.h"
20
21 #define APPLICATION_DATEBASE_URL L"http://svn.reactos.org/packages/rappmgr.cab"
22
23 #define SPLIT_WIDTH 4
24 #define MAX_STR_LEN 256
25
26 #define LISTVIEW_ICON_SIZE 24
27 #define TREEVIEW_ICON_SIZE 24
28
29 /* EnumType flags for EnumInstalledApplications */
30 #define ENUM_ALL_COMPONENTS 30
31 #define ENUM_APPLICATIONS 31
32 #define ENUM_UPDATES 32
33 /* EnumType flags for EnumAvailableApplications */
34 #define ENUM_ALL_AVAILABLE 0
35 #define ENUM_CAT_AUDIO 1
36 #define ENUM_CAT_VIDEO 2
37 #define ENUM_CAT_GRAPHICS 3
38 #define ENUM_CAT_GAMES 4
39 #define ENUM_CAT_INTERNET 5
40 #define ENUM_CAT_OFFICE 6
41 #define ENUM_CAT_DEVEL 7
42 #define ENUM_CAT_EDU 8
43 #define ENUM_CAT_ENGINEER 9
44 #define ENUM_CAT_FINANCE 10
45 #define ENUM_CAT_SCIENCE 11
46 #define ENUM_CAT_TOOLS 12
47 #define ENUM_CAT_DRIVERS 13
48 #define ENUM_CAT_LIBS 14
49 #define ENUM_CAT_OTHER 15
50
51 #define ENUM_INSTALLED_MIN ENUM_ALL_COMPONENTS
52 #define ENUM_INSTALLED_MAX ENUM_UPDATES
53 #define ENUM_AVAILABLE_MIN ENUM_ALL_AVAILABLE
54 #define ENUM_AVAILABLE_MAX ENUM_CAT_OTHER
55
56 #define IS_INSTALLED_ENUM(a) (a >= ENUM_INSTALLED_MIN && a <= ENUM_INSTALLED_MAX)
57 #define IS_AVAILABLE_ENUM(a) (a >= ENUM_AVAILABLE_MIN && a <= ENUM_AVAILABLE_MAX)
58
59 /* aboutdlg.c */
60 VOID ShowAboutDialog(VOID);
61
62 /* available.c */
63 typedef struct
64 {
65 INT Category;
66 WCHAR szName[MAX_PATH];
67 WCHAR szRegName[MAX_PATH];
68 WCHAR szVersion[MAX_PATH];
69 WCHAR szLicence[MAX_PATH];
70 WCHAR szDesc[MAX_PATH];
71 WCHAR szSize[MAX_PATH];
72 WCHAR szUrlSite[MAX_PATH];
73 WCHAR szUrlDownload[MAX_PATH];
74 WCHAR szCDPath[MAX_PATH];
75
76 } APPLICATION_INFO, *PAPPLICATION_INFO;
77
78 typedef struct
79 {
80 HKEY hRootKey;
81 HKEY hSubKey;
82 WCHAR szKeyName[MAX_PATH];
83
84 } INSTALLED_INFO, *PINSTALLED_INFO;
85
86 typedef struct
87 {
88 BOOL bSaveWndPos;
89 BOOL bUpdateAtStart;
90 BOOL bLogEnabled;
91 WCHAR szDownloadDir[MAX_PATH];
92 BOOL bDelInstaller;
93 /* Window Pos */
94 BOOL Maximized;
95 INT Left;
96 INT Top;
97 INT Right;
98 INT Bottom;
99
100 } SETTINGS_INFO, *PSETTINGS_INFO;
101
102 /* available.c */
103 typedef BOOL (CALLBACK *AVAILENUMPROC)(APPLICATION_INFO Info);
104 BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc);
105 BOOL ShowAvailableAppInfo(INT Index);
106 BOOL UpdateAppsDB(VOID);
107
108 /* installdlg.c */
109 BOOL InstallApplication(INT Index);
110
111 /* installed.c */
112 typedef BOOL (CALLBACK *APPENUMPROC)(INT ItemIndex, LPWSTR lpName, INSTALLED_INFO Info);
113 BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc);
114 BOOL GetApplicationString(HKEY hKey, LPWSTR lpKeyName, LPWSTR lpString);
115 BOOL ShowInstalledAppInfo(INT Index);
116 BOOL UninstallApplication(INT Index, BOOL bModify);
117 BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
118 VOID RemoveAppFromRegistry(INT Index);
119
120 /* winmain.c */
121 extern HWND hMainWnd;
122 extern HINSTANCE hInst;
123 extern INT SelectedEnumType;
124 extern SETTINGS_INFO SettingsInfo;
125 VOID SaveSettings(HWND hwnd);
126 VOID FillDefaultSettings(PSETTINGS_INFO pSettingsInfo);
127
128 /* listview.c */
129 extern HWND hListView;
130 extern BOOL bAscending;
131 BOOL CreateListView(HWND hwnd);
132 BOOL ListViewAddColumn(INT Index, LPWSTR lpText, INT Width, INT Format);
133 INT ListViewAddItem(INT ItemIndex, INT IconIndex, LPWSTR lpText, LPARAM lParam);
134 INT CALLBACK ListViewCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
135 PVOID ListViewGetlParam(INT Index);
136
137 /* loaddlg.c */
138 BOOL DownloadApplication(INT Index);
139 VOID DownloadApplicationsDB(LPWSTR lpUrl);
140
141 /* misc.c */
142 INT GetSystemColorDepth(VOID);
143 int GetWindowWidth(HWND hwnd);
144 int GetWindowHeight(HWND hwnd);
145 int GetClientWindowWidth(HWND hwnd);
146 int GetClientWindowHeight(HWND hwnd);
147 VOID CopyTextToClipboard(LPCWSTR lpszText);
148 VOID SetWelcomeText(VOID);
149 VOID ShowPopupMenu(HWND hwnd, UINT MenuID);
150 BOOL StartProcess(LPWSTR lpPath, BOOL Wait);
151 BOOL ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath);
152 VOID InitLogs(VOID);
153 VOID FreeLogs(VOID);
154 BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPWSTR lpMsg);
155
156 /* parser.c */
157 INT ParserGetString(LPCWSTR section, LPCWSTR entry, LPWSTR buffer, UINT len, LPCWSTR filename);
158 UINT ParserGetInt(LPCWSTR section, LPCWSTR entry, LPCWSTR filename);
159
160 /* richedit.c */
161 extern HWND hRichEdit;
162 extern PWSTR pLink;
163 BOOL CreateRichEdit(HWND hwnd);
164 VOID RichEditOnLink(HWND hwnd, ENLINK *Link);
165 VOID InsertRichEditText(LPCWSTR lpszText, DWORD dwEffects);
166 VOID NewRichEditText(LPCWSTR lpszText, DWORD dwEffects);
167
168 /* settingsdlg.c */
169 VOID CreateSettingsDlg(HWND hwnd);
170
171 /* splitter.c */
172 extern HWND hVSplitter;
173 extern HWND hHSplitter;
174 BOOL CreateVSplitBar(HWND hwnd);
175 BOOL CreateHSplitBar(HWND hwnd);
176 int GetHSplitterPos(VOID);
177 VOID SetHSplitterPos(int Pos);
178
179 /* statusbar.c */
180 extern HWND hStatusBar;
181 BOOL CreateStatusBar(HWND hwnd);
182 VOID SetStatusBarText(LPCWSTR lpszText);
183
184 /* toolbar.c */
185 extern HWND hToolBar;
186 extern HWND hSearchBar;
187 BOOL CreateToolBar(HWND hwnd);
188 VOID ToolBarOnGetDispInfo(LPTOOLTIPTEXT lpttt);
189
190 /* treeview.c */
191 extern HWND hTreeView;
192 BOOL CreateTreeView(HWND hwnd);
193 HTREEITEM TreeViewAddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam);