[RAPPS] Language loading
[reactos.git] / reactos / base / applications / rapps / rapps.h
index 7841890..23245fd 100644 (file)
@@ -1,3 +1,9 @@
+#pragma once
+
+#ifndef _RAPPS_H
+#define _RAPPS_H
+
+#include <tchar.h>
 #include <stdarg.h>
 
 #define WIN32_NO_STATUS
 #include <winuser.h>
 #include <wincon.h>
 #include <richedit.h>
+#include <shellapi.h>
 #include <shlobj.h>
+#include <shlwapi.h>
 #include <stdio.h>
 #include <strsafe.h>
-
+#include <ndk/rtlfuncs.h>
+#include <atlcoll.h>
+#include <atlsimpcoll.h>
+#include <atlstr.h> 
 #include <rappsmsg.h>
 
 #include "resource.h"
 
-#define APPLICATION_DATEBASE_URL L"http://svn.reactos.org/packages/rappmgr.cab"
+#ifdef USE_CERT_PINNING
+  #define CERT_ISSUER_INFO "BE\r\nGlobalSign nv-sa\r\nGlobalSign Domain Validation CA - SHA256 - G2"
+  #define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org"
+#endif
+
+#define APPLICATION_DATABASE_URL L"https://svn.reactos.org/packages/rappmgr.cab"
 
 #define SPLIT_WIDTH 4
 #define MAX_STR_LEN 256
-
 #define LISTVIEW_ICON_SIZE 24
 #define TREEVIEW_ICON_SIZE 24
 
 #define IS_INSTALLED_ENUM(a) (a >= ENUM_INSTALLED_MIN && a <= ENUM_INSTALLED_MAX)
 #define IS_AVAILABLE_ENUM(a) (a >= ENUM_AVAILABLE_MIN && a <= ENUM_AVAILABLE_MAX)
 
-/* aboutdlg.c */
+typedef enum
+{
+    None,
+    OpenSource,
+    Freeware,
+    Trial,
+    Max = Trial,
+    Min = None
+} LICENSE_TYPE, *PLICENSE_TYPE;
+
+/* aboutdlg.cpp */
 VOID ShowAboutDialog(VOID);
 
-/* available.c */
+/* available.cpp */
 typedef struct
 {
     INT Category;
-    WCHAR szName[MAX_PATH];
-    WCHAR szRegName[MAX_PATH];
-    WCHAR szVersion[MAX_PATH];
-    WCHAR szLicence[MAX_PATH];
-    WCHAR szDesc[MAX_PATH];
-    WCHAR szSize[MAX_PATH];
-    WCHAR szUrlSite[MAX_PATH];
-    WCHAR szUrlDownload[MAX_PATH];
-    WCHAR szCDPath[MAX_PATH];
+    LICENSE_TYPE LicenseType;
+    ATL::CStringW szName;
+    ATL::CStringW szRegName;
+    ATL::CStringW szVersion;
+    ATL::CStringW szLicense;
+    ATL::CStringW szDesc;
+    ATL::CStringW szSize;
+    ATL::CStringW szUrlSite;
+    ATL::CStringW szUrlDownload;
+    ATL::CStringW szCDPath;
+    ATL::CSimpleArray<ATL::CStringW> Languages;
+
+    /* caching mechanism related entries */
+    ATL::CStringW cFileName;
+    FILETIME ftCacheStamp;
+
+    /* optional integrity checks (SHA-1 digests are 160 bit = 40 characters in hex string form) */
+    ATL::CStringW szSHA1;
 
 } APPLICATION_INFO, *PAPPLICATION_INFO;
 
+extern ATL::CAtlList<PAPPLICATION_INFO> InfoList;
+
 typedef struct
 {
     HKEY hRootKey;
     HKEY hSubKey;
-    WCHAR szKeyName[MAX_PATH];
+    ATL::CStringW szKeyName;
 
 } INSTALLED_INFO, *PINSTALLED_INFO;
 
@@ -97,30 +133,38 @@ typedef struct
     BOOL Maximized;
     INT Left;
     INT Top;
-    INT Right;
-    INT Bottom;
+    INT Width;
+    INT Height;
+    /* Proxy settings */
+    INT Proxy;
+    WCHAR szProxyServer[MAX_PATH];
+    WCHAR szNoProxyFor[MAX_PATH];
 
 } SETTINGS_INFO, *PSETTINGS_INFO;
 
-/* available.c */
-typedef BOOL (CALLBACK *AVAILENUMPROC)(APPLICATION_INFO Info);
+/* available.cpp */
+typedef BOOL (CALLBACK *AVAILENUMPROC)(PAPPLICATION_INFO Info);
 BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc);
 BOOL ShowAvailableAppInfo(INT Index);
 BOOL UpdateAppsDB(VOID);
+VOID FreeCachedAvailableEntries(VOID);
 
-/* installdlg.c */
+/* installdlg.cpp */
 BOOL InstallApplication(INT Index);
 
-/* installed.c */
-typedef BOOL (CALLBACK *APPENUMPROC)(INT ItemIndex, LPWSTR lpName, INSTALLED_INFO Info);
+/* installed.cpp */
+typedef BOOL (CALLBACK *APPENUMPROC)(INT ItemIndex, ATL::CStringW &lpName, PINSTALLED_INFO Info);
 BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc);
-BOOL GetApplicationString(HKEY hKey, LPWSTR lpKeyName, LPWSTR lpString);
+BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString);
+BOOL GetApplicationString(HKEY hKey, LPCWSTR RegName, ATL::CStringW& String);
+
 BOOL ShowInstalledAppInfo(INT Index);
 BOOL UninstallApplication(INT Index, BOOL bModify);
-BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
 VOID RemoveAppFromRegistry(INT Index);
 
-/* winmain.c */
+BOOL GetInstalledVersion_WowUser(ATL::CStringW* szVersionResult, const ATL::CStringW& RegName, BOOL IsUserKey, REGSAM keyWow);
+
+/* winmain.cpp */
 extern HWND hMainWnd;
 extern HINSTANCE hInst;
 extern INT SelectedEnumType;
@@ -128,20 +172,11 @@ extern SETTINGS_INFO SettingsInfo;
 VOID SaveSettings(HWND hwnd);
 VOID FillDefaultSettings(PSETTINGS_INFO pSettingsInfo);
 
-/* listview.c */
-extern HWND hListView;
-extern BOOL bAscending;
-BOOL CreateListView(HWND hwnd);
-BOOL ListViewAddColumn(INT Index, LPWSTR lpText, INT Width, INT Format);
-INT ListViewAddItem(INT ItemIndex, INT IconIndex, LPWSTR lpText, LPARAM lParam);
-INT CALLBACK ListViewCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
-PVOID ListViewGetlParam(INT Index);
-
-/* loaddlg.c */
+/* loaddlg.cpp */
 BOOL DownloadApplication(INT Index);
-VOID DownloadApplicationsDB(LPWSTR lpUrl);
+VOID DownloadApplicationsDB(LPCWSTR lpUrl);
 
-/* misc.c */
+/* misc.cpp */
 INT GetSystemColorDepth(VOID);
 int GetWindowWidth(HWND hwnd);
 int GetWindowHeight(HWND hwnd);
@@ -149,49 +184,41 @@ int GetClientWindowWidth(HWND hwnd);
 int GetClientWindowHeight(HWND hwnd);
 VOID CopyTextToClipboard(LPCWSTR lpszText);
 VOID SetWelcomeText(VOID);
-VOID ShowPopupMenu(HWND hwnd, UINT MenuID);
+VOID ShowPopupMenu(HWND hwnd, UINT MenuID, UINT DefaultItem);
+BOOL StartProcess(ATL::CStringW & Path, BOOL Wait);
 BOOL StartProcess(LPWSTR lpPath, BOOL Wait);
-BOOL GetStorageDirectory(PWCHAR lpDirectory, DWORD cch);
-BOOL ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath);
+BOOL GetStorageDirectory(ATL::CStringW &lpDirectory);
+BOOL ExtractFilesFromCab(LPCWSTR lpCabName, LPCWSTR lpOutputPath);
 VOID InitLogs(VOID);
 VOID FreeLogs(VOID);
-BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPWSTR lpMsg);
+BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg);
 
-/* parser.c */
-INT ParserGetString(LPCWSTR section, LPCWSTR entry, LPWSTR buffer, UINT len, LPCWSTR filename);
-UINT ParserGetInt(LPCWSTR section, LPCWSTR entry, LPCWSTR filename);
+UINT ParserGetString(const ATL::CStringW& KeyName, const ATL::CStringW& FileName, ATL::CStringW& ReturnedString);
+UINT ParserGetInt(const ATL::CStringW& KeyName, const ATL::CStringW& FileName);
 
-/* richedit.c */
-extern HWND hRichEdit;
-extern PWSTR pLink;
-BOOL CreateRichEdit(HWND hwnd);
-VOID RichEditOnLink(HWND hwnd, ENLINK *Link);
-VOID InsertRichEditText(LPCWSTR lpszText, DWORD dwEffects);
-VOID NewRichEditText(LPCWSTR lpszText, DWORD dwEffects);
-
-/* settingsdlg.c */
+/* settingsdlg.cpp */
 VOID CreateSettingsDlg(HWND hwnd);
 
-/* splitter.c */
-extern HWND hVSplitter;
-extern HWND hHSplitter;
-BOOL CreateVSplitBar(HWND hwnd);
-BOOL CreateHSplitBar(HWND hwnd);
-int GetHSplitterPos(VOID);
-VOID SetHSplitterPos(int Pos);
-
-/* statusbar.c */
-extern HWND hStatusBar;
-BOOL CreateStatusBar(HWND hwnd);
-VOID SetStatusBarText(LPCWSTR lpszText);
-
-/* toolbar.c */
-extern HWND hToolBar;
-extern HWND hSearchBar;
-BOOL CreateToolBar(HWND hwnd);
-VOID ToolBarOnGetDispInfo(LPTOOLTIPTEXT lpttt);
-
-/* treeview.c */
-extern HWND hTreeView;
-BOOL CreateTreeView(HWND hwnd);
-HTREEITEM TreeViewAddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam);
+/* gui.cpp */
+HWND CreateMainWindow();
+DWORD_PTR ListViewGetlParam(INT item);
+INT ListViewAddItem(INT ItemIndex, INT IconIndex, LPWSTR lpName, LPARAM lParam);
+VOID SetStatusBarText(LPCWSTR szText);
+VOID NewRichEditText(LPCWSTR szText, DWORD flags);
+VOID InsertRichEditText(LPCWSTR szText, DWORD flags);
+
+VOID SetStatusBarText(const ATL::CStringW& szText);
+INT ListViewAddItem(INT ItemIndex, INT IconIndex, ATL::CStringW & Name, LPARAM lParam);
+VOID NewRichEditText(const ATL::CStringW& szText, DWORD flags);
+VOID InsertRichEditText(const ATL::CStringW& szText, DWORD flags);
+extern HWND hListView;
+extern ATL::CStringW szSearchPattern;
+
+/* integrity.cpp */
+BOOL VerifyInteg(LPCWSTR lpSHA1Hash, LPCWSTR lpFileName);
+
+//extern HWND hTreeView;
+//BOOL CreateTreeView(HWND hwnd);
+//HTREEITEM TreeViewAddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam);
+
+#endif /* _RAPPS_H */