mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 07:22:58 +00:00

This is a squashed backport of RAPPS from current master into the 0.4.15 release tree. All of these changes were deemed stable and complete. This backport includes the following commits:5bc6d59142
[RAPPS] Refresh item info after installer completes (#7697)d5ce3d28ab
[RAPPS] Don't display Freeware license string if the type is also Freeware (#7689)b35becef2e
[RAPPS] Set working directory for zip generated shortcuts (#7674)a23db39c8a
[RAPPS] Allow database to override download filename (#7668)c8b2c4c94d
[RAPPS] Check Let's Encrypt issuer prefix (#7650)72951421e6
[RAPPS] Reuse active pending downloads window (#7648)91b8923601
[RAPPS] Allow .zip generated installers to skip writing the DisplayIcon value (#7609)2834e5b3c8
[RAPPS] Initialize SHBrowseForFolder to current download folder (#7505)9164e9f85f
[RAPPS] Update Slovak (sk-SK) translation (#7450)8734889272
[RAPPS] Update Turkish (tr-TR) translation (#7372)16f1abe1c8
[RAPPS] Improve Romanian (ro-RO) translation (#7360)2f83e6a65d
[RAPPS] Use different mutex and title for AppWiz mode (#7350)301675c112
[RAPPS] Respect partial settings configuration (#7247)053939e27c
[RAPPS] Hide the main window during active download/install if the user closes it (#7014)3ff8adc553
[RAPPS] Protect database update with a mutex (#7006)4e59858941
[RAPPS] Change the "Welcome" text with a suitable explanatory one in APPWIZ-mode (#6655)2af6fd4def
[PSDK] Add GetMenuPosFromID() declaration in shlwapi.h
146 lines
3.2 KiB
C++
146 lines
3.2 KiB
C++
#pragma once
|
|
|
|
#include "rapps.h"
|
|
#include "rosui.h"
|
|
#include "crichedit.h"
|
|
#include "asyncinet.h"
|
|
#include "appview.h"
|
|
#include <shlobj_undoc.h>
|
|
#include <shlguid_undoc.h>
|
|
|
|
#include <atlbase.h>
|
|
#include <atlcom.h>
|
|
#include <atltypes.h>
|
|
#include <atlwin.h>
|
|
#include <wininet.h>
|
|
#include <shellutils.h>
|
|
#include <ui/rosctrls.h>
|
|
#include <gdiplus.h>
|
|
#include <math.h>
|
|
|
|
#define SEARCH_TIMER_ID 'SR'
|
|
#define TREEVIEW_ICON_SIZE 24
|
|
|
|
class CSideTreeView : public CUiWindow<CTreeView>
|
|
{
|
|
HIMAGELIST hImageTreeView;
|
|
|
|
public:
|
|
CSideTreeView();
|
|
|
|
HTREEITEM
|
|
AddItem(HTREEITEM hParent, CStringW &Text, INT Image, INT SelectedImage, LPARAM lParam);
|
|
|
|
HTREEITEM
|
|
AddCategory(HTREEITEM hRootItem, UINT TextIndex, UINT IconIndex);
|
|
|
|
HIMAGELIST
|
|
SetImageList();
|
|
|
|
VOID
|
|
DestroyImageList();
|
|
|
|
~CSideTreeView();
|
|
};
|
|
|
|
class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
|
|
{
|
|
CUiPanel *m_ClientPanel = NULL;
|
|
CUiSplitPanel *m_VSplitter = NULL;
|
|
|
|
CSideTreeView *m_TreeView = NULL;
|
|
CUiWindow<CStatusBar> *m_StatusBar = NULL;
|
|
|
|
CApplicationView *m_ApplicationView = NULL;
|
|
friend class CApplicationView;
|
|
|
|
CAppDB *m_Db;
|
|
CAtlList<CAppInfo *> m_Selected;
|
|
|
|
BOOL bUpdating = FALSE;
|
|
BOOL m_bAppwizMode;
|
|
HTREEITEM hRootItemInstalled;
|
|
|
|
CStringW szSearchPattern;
|
|
AppsCategories SelectedEnumType;
|
|
|
|
public:
|
|
static HWND m_hLastFocus;
|
|
static bool m_PendingInstalledViewRefresh;
|
|
|
|
explicit CMainWindow(CAppDB *db, BOOL bAppwiz = FALSE);
|
|
|
|
~CMainWindow();
|
|
|
|
private:
|
|
VOID
|
|
InitCategoriesList();
|
|
|
|
BOOL
|
|
CreateStatusBar();
|
|
BOOL
|
|
CreateTreeView();
|
|
BOOL
|
|
CreateApplicationView();
|
|
BOOL
|
|
CreateVSplitter();
|
|
BOOL
|
|
CreateLayout();
|
|
VOID
|
|
LayoutCleanup();
|
|
BOOL
|
|
InitControls();
|
|
|
|
VOID
|
|
OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam);
|
|
|
|
VOID
|
|
CheckAvailable();
|
|
|
|
BOOL
|
|
RemoveSelectedAppFromRegistry();
|
|
BOOL
|
|
UninstallSelectedApp(BOOL bModify);
|
|
|
|
BOOL
|
|
ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT &theResult, DWORD dwMapId);
|
|
VOID
|
|
ShowAboutDlg();
|
|
VOID
|
|
OnCommand(WPARAM wParam, LPARAM lParam);
|
|
VOID
|
|
UpdateStatusBarText();
|
|
|
|
VOID
|
|
UpdateApplicationsList(AppsCategories EnumType, BOOL bReload = FALSE, BOOL bCheckAvailable = FALSE);
|
|
VOID
|
|
AddApplicationsToView(CAtlList<CAppInfo *> &List);
|
|
|
|
public:
|
|
static ATL::CWndClassInfo &
|
|
GetWndClassInfo();
|
|
|
|
HWND
|
|
Create();
|
|
|
|
// this function is called when a item of application-view is checked/unchecked
|
|
// CallbackParam is the param passed to application-view when adding the item (the one getting focus now).
|
|
VOID
|
|
ItemCheckStateChanged(BOOL bChecked, LPVOID CallbackParam);
|
|
|
|
// this function is called when application-view is asked to install an application
|
|
// if Info is not zero, this app should be installed. otherwise those checked apps should be installed
|
|
BOOL
|
|
InstallApplication(CAppInfo *Info);
|
|
|
|
// this function is called when search text is changed
|
|
BOOL
|
|
SearchTextChanged(CStringW &SearchText);
|
|
|
|
void
|
|
HandleTabOrder(int direction);
|
|
};
|
|
|
|
// Main window
|
|
VOID
|
|
MainWindowLoop(CMainWindow *wnd, INT nShowCmd);
|