ReactOS 0.4.15-dev-5865-g640e228
gui.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Applications Manager
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: GUI classes for RAPPS
5 * COPYRIGHT: Copyright 2015 David Quintana (gigaherz@gmail.com)
6 * Copyright 2017 Alexander Shaposhnikov (sanchaez@reactos.org)
7 * Copyright 2020 He Yang (1160386205@qq.com)
8 */
9
10#include "rapps.h"
11#include "rosui.h"
12#include "crichedit.h"
13#include "appview.h"
14#include "asyncinet.h"
15#include "misc.h"
16#include "gui.h"
17#include "appview.h"
18#include "winmain.h"
19#include <shlobj_undoc.h>
20#include <shlguid_undoc.h>
21
22#include <atlbase.h>
23#include <atlcom.h>
24#include <atltypes.h>
25#include <atlwin.h>
26#include <wininet.h>
27#include <shellutils.h>
28#include <ui/rosctrls.h>
29#include <gdiplus.h>
30#include <math.h>
31
32#define SEARCH_TIMER_ID 'SR'
33#define TREEVIEW_ICON_SIZE 24
34
35// **** CSideTreeView ****
36
38 : CUiWindow(),
40{
41}
42
45{
46 return CUiWindow<CTreeView>::AddItem(hParent, const_cast<LPWSTR>(Text.GetString()), Image, SelectedImage, lParam);
47}
48
51{
52 CStringW szText;
53 INT Index = 0;
55
58 if (hIcon)
59 {
62 }
63
64 szText.LoadStringW(TextIndex);
65 return AddItem(hRootItem, szText, Index, Index, TextIndex);
66}
67
70{
72}
73
74VOID
76{
79}
80
82{
84}
85// **** CSideTreeView ****
86
87// **** CMainWindow ****
88
89CMainWindow::CMainWindow(CAppDB *db) : m_ClientPanel(NULL), m_Db(db), SelectedEnumType(ENUM_ALL_INSTALLED)
90{
91}
92
94{
96}
97
98VOID
100{
101 HTREEITEM hRootItemInstalled, hRootItemAvailable;
102
104 m_TreeView->AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS);
105 m_TreeView->AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD);
106
108
110 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
111 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
113 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_GAMES, IDI_CAT_GAMES);
116 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_DEVEL, IDI_CAT_DEVEL);
117 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_EDU, IDI_CAT_EDU);
121 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_TOOLS, IDI_CAT_TOOLS);
123 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_LIBS, IDI_CAT_LIBS);
125 m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_OTHER, IDI_CAT_OTHER);
126
128 m_TreeView->Expand(hRootItemInstalled, TVE_EXPAND);
129 m_TreeView->Expand(hRootItemAvailable, TVE_EXPAND);
130 m_TreeView->SelectItem(hRootItemAvailable);
131}
132
133BOOL
135{
140
142}
143
144BOOL
146{
151
152 return m_TreeView->Create(m_hWnd) != NULL;
153}
154
155BOOL
157{
158 m_ApplicationView = new CApplicationView(this); // pass this to ApplicationView for callback purpose
162
164}
165
166BOOL
168{
175
176 // TODO: m_MinSecond should be calculate dynamically instead of hard-coded
178 m_VSplitter->m_Pos = 240;
180
181 return m_VSplitter->Create(m_hWnd) != NULL;
182}
183
184BOOL
186{
187 BOOL b = TRUE;
188 bUpdating = TRUE;
189
190 m_ClientPanel = new CUiPanel();
193
194 // Top level
195 b = b && CreateStatusBar();
196 b = b && CreateVSplitter();
197
198 // Inside V Splitter
199 b = b && CreateTreeView();
201
202 if (b)
203 {
204 RECT rBottom;
205
206 /* Size status bar */
207 m_StatusBar->SendMessageW(WM_SIZE, 0, 0);
208
209 ::GetWindowRect(m_StatusBar->m_hWnd, &rBottom);
210
211 m_VSplitter->m_Margin.bottom = rBottom.bottom - rBottom.top;
212 }
213
215 return b;
216}
217
218VOID
220{
221 delete m_TreeView;
222 delete m_ApplicationView;
223 delete m_VSplitter;
224 delete m_StatusBar;
225 return;
226}
227
228BOOL
230{
231 if (CreateLayout())
232 {
235
236 return TRUE;
237 }
238
239 return FALSE;
240}
241
242VOID
244{
245 if (wParam == SIZE_MINIMIZED)
246 return;
247
248 /* Size status bar */
249 m_StatusBar->SendMessage(WM_SIZE, 0, 0);
250
251 RECT r = {0, 0, LOWORD(lParam), HIWORD(lParam)};
252 HDWP hdwp = NULL;
254
256 if (hdwp)
257 {
258 hdwp = m_ClientPanel->OnParentSize(r, hdwp);
259 if (hdwp)
260 {
261 EndDeferWindowPos(hdwp);
262 }
263 }
264}
265
266BOOL
268{
270 return FALSE;
271
272 CStringW szMsgText, szMsgTitle;
273
274 if (!szMsgText.LoadStringW(IDS_APP_REG_REMOVE) || !szMsgTitle.LoadStringW(IDS_INFORMATION))
275 return FALSE;
276
277 if (MessageBoxW(szMsgText, szMsgTitle, MB_YESNO | MB_ICONQUESTION) == IDYES)
278 {
280 if (!InstalledApp)
281 return FALSE;
282
283 return m_Db->RemoveInstalledAppFromRegistry(InstalledApp);
284 }
285
286 return FALSE;
287}
288
289BOOL
291{
293 return FALSE;
294
296 if (!InstalledApp)
297 return FALSE;
298
299 return InstalledApp->UninstallApplication(bModify);
300}
301
302BOOL
304{
305 theResult = 0;
306 switch (Msg)
307 {
308 case WM_CREATE:
309 if (!InitControls())
311 break;
312
313 case WM_DESTROY:
314 {
317
318 FreeLogs();
319
320 delete m_ClientPanel;
321
323 return 0;
324 }
325
326 case WM_COMMAND:
328 break;
329
330 case WM_NOTIFY:
331 {
333
334 switch (data->code)
335 {
336 case TVN_SELCHANGED:
337 {
338 if (data->hwndFrom == m_TreeView->m_hWnd)
339 {
340 switch (((LPNMTREEVIEW)lParam)->itemNew.lParam)
341 {
342 case IDS_INSTALLED:
344 break;
345
346 case IDS_APPLICATIONS:
348 break;
349
350 case IDS_UPDATES:
352 break;
353
356 break;
357
358 case IDS_CAT_AUDIO:
360 break;
361
362 case IDS_CAT_DEVEL:
364 break;
365
366 case IDS_CAT_DRIVERS:
368 break;
369
370 case IDS_CAT_EDU:
372 break;
373
374 case IDS_CAT_ENGINEER:
376 break;
377
378 case IDS_CAT_FINANCE:
380 break;
381
382 case IDS_CAT_GAMES:
384 break;
385
386 case IDS_CAT_GRAPHICS:
388 break;
389
390 case IDS_CAT_INTERNET:
392 break;
393
394 case IDS_CAT_LIBS:
396 break;
397
398 case IDS_CAT_OFFICE:
400 break;
401
402 case IDS_CAT_OTHER:
404 break;
405
406 case IDS_CAT_SCIENCE:
408 break;
409
410 case IDS_CAT_TOOLS:
412 break;
413
414 case IDS_CAT_VIDEO:
416 break;
417
418 case IDS_CAT_THEMES:
420 break;
421
424 break;
425 }
426 }
427 }
428 break;
429 }
430 }
431 break;
432
433 case WM_SIZE:
435 break;
436
437 case WM_SIZING:
438 {
439 LPRECT pRect = (LPRECT)lParam;
440
441 if (pRect->right - pRect->left < 565)
442 pRect->right = pRect->left + 565;
443
444 if (pRect->bottom - pRect->top < 300)
445 pRect->bottom = pRect->top + 300;
446
447 return TRUE;
448 }
449
451 {
452 /* Forward WM_SYSCOLORCHANGE to common controls */
454 m_TreeView->SendMessageW(WM_SYSCOLORCHANGE, wParam, lParam);
455 }
456 break;
457
458 case WM_TIMER:
459 if (wParam == SEARCH_TIMER_ID)
460 {
462
464 }
465 break;
466 }
467
468 return FALSE;
469}
470
471VOID
473{
474 CStringW szApp;
475 CStringW szAuthors;
476 HICON hIcon;
477
478 szApp.LoadStringW(IDS_APPTITLE);
479 szAuthors.LoadStringW(IDS_APP_AUTHORS);
481 ShellAboutW(m_hWnd, szApp, szAuthors, hIcon);
483}
484
485VOID
487{
488 const BOOL bReload = TRUE;
489 WORD wCommand = LOWORD(wParam);
490
491 if (!lParam)
492 {
493 switch (wCommand)
494 {
495 case ID_SETTINGS:
497 break;
498
499 case ID_EXIT:
500 PostMessageW(WM_CLOSE, 0, 0);
501 break;
502
503 case ID_SEARCH:
505 break;
506
507 case ID_INSTALL:
509 {
510 if (!m_Selected.IsEmpty())
511 {
513 {
516 }
517 }
518 else
519 {
521 if (App)
522 {
524 }
525 }
526 }
527 break;
528
529 case ID_UNINSTALL:
532 break;
533
534 case ID_MODIFY:
537 break;
538
539 case ID_REGREMOVE:
542 break;
543
544 case ID_REFRESH:
546 break;
547
548 case ID_RESETDB:
551 break;
552
553 case ID_HELP:
554 MessageBoxW(L"Help not implemented yet", NULL, MB_OK);
555 break;
556
557 case ID_ABOUT:
558 ShowAboutDlg();
559 break;
560
561 case ID_CHECK_ALL:
563 break;
564 }
565 }
566}
567
568VOID
570{
571 if (m_StatusBar)
572 {
573 CStringW szBuffer;
574
576 m_StatusBar->SetText(szBuffer);
577 }
578}
579
580VOID
582{
583 POSITION CurrentListPosition = List.GetHeadPosition();
584 while (CurrentListPosition)
585 {
586 CAppInfo *Info = List.GetNext(CurrentListPosition);
589 {
590 BOOL bSelected = m_Selected.Find(Info) != NULL;
592 }
593 }
594}
595
596VOID
598{
599 bUpdating = TRUE;
600
601 if (SelectedEnumType != EnumType)
602 SelectedEnumType = EnumType;
603
604 if (bReload)
606
608 if (IsInstalledEnum(EnumType))
609 {
610 if (bReload)
612
613 // set the display type of application-view. this will remove all the item in application-view too.
615
617 m_Db->GetApps(List, EnumType);
619 }
620 else if (IsAvailableEnum(EnumType))
621 {
622 if (bReload)
624
625 // set the display type of application-view. this will remove all the item in application-view too.
627
628 // enum available softwares
629 if (EnumType == ENUM_CAT_SELECTED)
630 {
632 }
633 else
634 {
636 m_Db->GetApps(List, EnumType);
638 }
639 }
640 else
641 {
642 ATLASSERT(0 && "This should be unreachable!");
643 }
645 m_ApplicationView->RedrawWindow(0, 0, RDW_INVALIDATE | RDW_ALLCHILDREN); // force the child window to repaint
647
650 {
651 text.LoadString(IDS_NO_SEARCH_RESULTS);
652 }
654
656}
657
660{
661 DWORD csStyle = CS_VREDRAW | CS_HREDRAW;
662 static ATL::CWndClassInfo wc = {
663 {sizeof(WNDCLASSEX), csStyle, StartWindowProc, 0, 0, NULL,
664 LoadIconW(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCEW(IDI_MAIN)), LoadCursorW(NULL, IDC_ARROW),
666 NULL,
667 NULL,
668 IDC_ARROW,
669 TRUE,
670 0,
671 _T("")};
672 return wc;
673}
674
675HWND
677{
678 CStringW szWindowName;
679 szWindowName.LoadStringW(IDS_APPTITLE);
680
681 RECT r = {
685 r.right += r.left;
686 r.bottom += r.top;
687
688 return CWindowImpl::Create(
690}
691
692// this function is called when a item of application-view is checked/unchecked
693// CallbackParam is the param passed to application-view when adding the item (the one getting focus now).
694VOID
696{
697 if (bUpdating)
698 return;
699
700 CAppInfo *Info = (CAppInfo *)CallbackParam;
701
702 if (bChecked)
703 {
705 }
706 else
707 {
709 ATLASSERT(Pos != NULL);
710
711 if (Pos != NULL)
712 {
714 }
715 }
716
718}
719
720// this function is called when one or more application(s) should be installed
721// if Info is not zero, this app should be installed. otherwise those checked apps should be installed
722BOOL
724{
725 if (Info)
726 {
728 {
730 return TRUE;
731 }
732 }
733
734 return FALSE;
735}
736
737BOOL
739{
740 if (szSearchPattern == SearchText)
741 {
742 return FALSE;
743 }
744
745 szSearchPattern = SearchText;
746
747 DWORD dwDelay = 0;
748 SystemParametersInfoW(SPI_GETMENUSHOWDELAY, 0, &dwDelay, 0);
749 SetTimer(SEARCH_TIMER_ID, dwDelay);
750
751 return TRUE;
752}
753
754void
756{
757 ATL::CSimpleArray<HWND> TabOrderHwndList;
758
759 m_TreeView->AppendTabOrderWindow(direction, TabOrderHwndList);
760 m_ApplicationView->AppendTabOrderWindow(direction, TabOrderHwndList);
761
762 if (TabOrderHwndList.GetSize() == 0)
763 {
764 // in case the list is empty
765 return;
766 }
767
768 int FocusIndex;
769
770 if ((FocusIndex = TabOrderHwndList.Find(GetFocus())) == -1)
771 {
772 FocusIndex = 0; // focus the first window in the list
773 }
774 else
775 {
776 FocusIndex += direction;
777 FocusIndex +=
778 TabOrderHwndList.GetSize(); // FocusIndex might be negative. we don't want to mod a negative number
779 FocusIndex %= TabOrderHwndList.GetSize();
780 }
781
782 ::SetFocus(TabOrderHwndList[FocusIndex]);
783 return;
784}
785// **** CMainWindow ****
786
787VOID
789{
790 HACCEL KeyBrd;
791 MSG Msg;
792
793 CMainWindow *wnd = new CMainWindow(db);
794 if (!wnd)
795 return;
796
797 hMainWnd = wnd->Create();
798 if (!hMainWnd)
799 return;
800
801 /* Maximize it if we must */
803 wnd->UpdateWindow();
804
805 /* Load the menu hotkeys */
807
808 /* Message Loop */
809 while (GetMessageW(&Msg, NULL, 0, 0))
810 {
811 if (!TranslateAcceleratorW(hMainWnd, KeyBrd, &Msg))
812 {
813 if (Msg.message == WM_CHAR && Msg.wParam == VK_TAB)
814 {
815 // Move backwards if shift is held down
816 int direction = (GetKeyState(VK_SHIFT) & 0x8000) ? -1 : 1;
817
818 wnd->HandleTabOrder(direction);
819 continue;
820 }
821
824 }
825 }
826
827 delete wnd;
828}
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
BOOL IsAvailableEnum(INT x)
Definition: appinfo.h:55
BOOL IsInstalledEnum(INT x)
Definition: appinfo.h:61
AppsCategories
Definition: appinfo.h:25
@ ENUM_CAT_LIBS
Definition: appinfo.h:40
@ ENUM_CAT_ENGINEER
Definition: appinfo.h:35
@ ENUM_CAT_VIDEO
Definition: appinfo.h:28
@ ENUM_CAT_FINANCE
Definition: appinfo.h:36
@ ENUM_CAT_OFFICE
Definition: appinfo.h:32
@ ENUM_CAT_EDU
Definition: appinfo.h:34
@ ENUM_CAT_AUDIO
Definition: appinfo.h:27
@ ENUM_CAT_TOOLS
Definition: appinfo.h:38
@ ENUM_UPDATES
Definition: appinfo.h:46
@ ENUM_CAT_SELECTED
Definition: appinfo.h:43
@ ENUM_ALL_AVAILABLE
Definition: appinfo.h:26
@ ENUM_CAT_INTERNET
Definition: appinfo.h:31
@ ENUM_CAT_GAMES
Definition: appinfo.h:30
@ ENUM_CAT_THEMES
Definition: appinfo.h:41
@ ENUM_INSTALLED_APPLICATIONS
Definition: appinfo.h:45
@ ENUM_CAT_GRAPHICS
Definition: appinfo.h:29
@ ENUM_CAT_DEVEL
Definition: appinfo.h:33
@ ENUM_CAT_DRIVERS
Definition: appinfo.h:39
@ ENUM_ALL_INSTALLED
Definition: appinfo.h:44
@ ENUM_CAT_SCIENCE
Definition: appinfo.h:37
@ ENUM_CAT_OTHER
Definition: appinfo.h:42
@ AppViewTypeInstalledApps
Definition: appview.h:72
@ AppViewTypeAvailableApps
Definition: appview.h:71
void SaveSettings(void)
Definition: settings.c:115
#define ID_EXIT
Definition: resource.h:10
#define IDI_MAIN
Definition: resource.h:4
#define IDS_APPTITLE
Definition: resource.h:3
#define IDR_MAINMENU
Definition: resource.h:40
#define ID_HELP
Definition: resource.h:26
#define IDC_STATUSBAR
Definition: resource.h:12
#define ID_REFRESH
Definition: resource.h:16
#define SEARCH_TIMER_ID
Definition: gui.h:22
#define TREEVIEW_ICON_SIZE
Definition: gui.h:23
VOID FreeLogs()
Definition: misc.cpp:218
INT GetSystemColorDepth()
Definition: misc.cpp:321
BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
Definition: misc.cpp:372
#define IDS_UPDATES
Definition: resource.h:100
#define IDS_CAT_TOOLS
Definition: resource.h:189
#define ID_REGREMOVE
Definition: resource.h:83
#define IDI_CAT_FINANCE
Definition: resource.h:25
#define IDS_CAT_VIDEO
Definition: resource.h:190
#define IDS_SELECTEDFORINST
Definition: resource.h:118
#define ID_UNINSTALL
Definition: resource.h:75
#define ID_SEARCH
Definition: resource.h:86
#define IDS_CAT_GRAPHICS
Definition: resource.h:183
#define IDI_SELECTEDFORINST
Definition: resource.h:16
#define IDI_CAT_EDU
Definition: resource.h:23
#define IDS_AVAILABLEFORINST
Definition: resource.h:99
#define IDI_CAT_INTERNET
Definition: resource.h:28
#define IDI_CAT_LIBS
Definition: resource.h:29
#define IDS_CAT_AUDIO
Definition: resource.h:176
#define IDS_INFORMATION
Definition: resource.h:106
#define IDS_APPS_COUNT
Definition: resource.h:94
#define IDS_CAT_SCIENCE
Definition: resource.h:188
#define IDS_CAT_ENGINEER
Definition: resource.h:180
#define IDI_CATEGORY
Definition: resource.h:13
#define IDI_CAT_OFFICE
Definition: resource.h:30
#define IDS_CAT_LIBS
Definition: resource.h:185
#define IDS_CAT_OTHER
Definition: resource.h:187
#define IDI_CAT_GRAPHICS
Definition: resource.h:27
#define ID_CHECK_ALL
Definition: resource.h:85
#define IDS_CAT_DEVEL
Definition: resource.h:177
#define IDI_APPS
Definition: resource.h:11
#define IDS_CAT_THEMES
Definition: resource.h:191
#define IDS_APP_AUTHORS
Definition: resource.h:121
#define IDI_CAT_SCIENCE
Definition: resource.h:32
#define IDI_CAT_OTHER
Definition: resource.h:31
#define IDS_CAT_GAMES
Definition: resource.h:182
#define IDS_CAT_EDU
Definition: resource.h:179
#define ID_MODIFY
Definition: resource.h:78
#define IDS_CAT_INTERNET
Definition: resource.h:184
#define IDS_NO_SEARCH_RESULTS
Definition: resource.h:125
#define IDI_APPUPD
Definition: resource.h:12
#define IDI_CAT_VIDEO
Definition: resource.h:34
#define ID_RESETDB
Definition: resource.h:84
#define IDS_CAT_DRIVERS
Definition: resource.h:178
#define IDI_CAT_DRIVERS
Definition: resource.h:22
#define HOTKEYS
Definition: resource.h:232
#define IDI_CAT_DEVEL
Definition: resource.h:21
#define IDS_CAT_OFFICE
Definition: resource.h:186
#define IDS_CAT_FINANCE
Definition: resource.h:181
#define IDI_CAT_THEMES
Definition: resource.h:35
#define IDS_APP_REG_REMOVE
Definition: resource.h:105
#define IDI_CAT_GAMES
Definition: resource.h:26
#define IDS_APPLICATIONS
Definition: resource.h:101
#define IDI_CAT_ENGINEER
Definition: resource.h:24
#define IDS_INSTALLED
Definition: resource.h:98
#define IDI_CAT_TOOLS
Definition: resource.h:33
#define IDI_CAT_AUDIO
Definition: resource.h:20
#define ID_INSTALL
Definition: resource.h:74
#define ID_SETTINGS
Definition: resource.h:81
SETTINGS_INFO SettingsInfo
Definition: winmain.cpp:20
#define ID_ABOUT
Definition: charmap.c:17
bool IsEmpty() const
Definition: atlcoll.h:543
POSITION AddTail(INARGTYPE element)
Definition: atlcoll.h:624
void RemoveAll()
Definition: atlcoll.h:725
POSITION Find(INARGTYPE element, _In_opt_ POSITION posStartAfter=NULL) const
Definition: atlcoll.h:771
size_t GetCount() const
Definition: atlcoll.h:537
void RemoveAt(_In_ POSITION pos)
Definition: atlcoll.h:746
int GetSize() const
Definition: atlsimpcoll.h:104
int Find(const T &t) const
Definition: atlsimpcoll.h:82
bool IsEmpty() const
Definition: atlsimpstr.h:379
PCXSTR GetString() const
Definition: atlsimpstr.h:361
void __cdecl Format(UINT nFormatID,...)
Definition: cstringt.h:753
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1613
HWND Create(HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: atlwin.h:1728
HWND SetFocus()
Definition: atlwin.h:1192
BOOL UpdateWindow()
Definition: atlwin.h:1339
HWND m_hWnd
Definition: atlwin.h:267
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1327
Definition: appdb.h:9
VOID UpdateAvailable()
Definition: appdb.cpp:121
VOID UpdateInstalled()
Definition: appdb.cpp:145
VOID GetApps(CAtlList< CAppInfo * > &List, AppsCategories Type) const
Definition: appdb.cpp:53
BOOL RemoveInstalledAppFromRegistry(const CAppInfo *Info)
Definition: appdb.cpp:266
VOID RemoveCached()
Definition: appdb.cpp:242
virtual BOOL UninstallApplication(BOOL bModify)=0
PVOID GetFocusedItemData()
Definition: appview.cpp:1872
HWND Create(HWND hwndParent)
Definition: appview.cpp:1806
BOOL AddApplication(CAppInfo *InstAppInfo, BOOL InitialCheckState)
Definition: appview.cpp:1854
BOOL SetDisplayAppType(APPLICATION_VIEW_TYPE AppType)
Definition: appview.cpp:1816
void SetFocusOnSearchBar()
Definition: appview.cpp:1610
void SetRedraw(BOOL bRedraw)
Definition: appview.cpp:1603
VOID AppendTabOrderWindow(int Direction, ATL::CSimpleArray< HWND > &TabOrderList)
Definition: appview.cpp:1884
VOID SetWatermark(const CStringW &Text)
Definition: appview.cpp:1860
BOOL RemoveSelectedAppFromRegistry()
Definition: gui.cpp:267
AppsCategories SelectedEnumType
Definition: gui.h:63
VOID UpdateStatusBarText()
Definition: gui.cpp:569
BOOL CreateLayout()
Definition: gui.cpp:185
CMainWindow(CAppDB *db)
Definition: gui.cpp:89
BOOL CreateTreeView()
Definition: gui.cpp:145
CSideTreeView * m_TreeView
Definition: gui.h:52
CStringW szSearchPattern
Definition: gui.h:62
CUiSplitPanel * m_VSplitter
Definition: gui.h:50
VOID AddApplicationsToView(CAtlList< CAppInfo * > &List)
Definition: gui.cpp:581
BOOL CreateVSplitter()
Definition: gui.cpp:167
BOOL SearchTextChanged(CStringW &SearchText)
Definition: gui.cpp:738
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: winproc.cpp:413
static ATL::CWndClassInfo & GetWndClassInfo()
Definition: gui.cpp:659
BOOL bUpdating
Definition: gui.h:60
~CMainWindow()
Definition: gui.cpp:93
void HandleTabOrder(int direction)
Definition: gui.cpp:755
BOOL InstallApplication(CAppInfo *Info)
Definition: gui.cpp:723
LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: winproc.cpp:464
CAtlList< CAppInfo * > m_Selected
Definition: gui.h:58
VOID ShowAboutDlg()
Definition: gui.cpp:472
BOOL InitControls()
Definition: gui.cpp:229
VOID InitCategoriesList()
Definition: gui.cpp:99
VOID UpdateApplicationsList(AppsCategories EnumType, BOOL bReload=FALSE)
Definition: gui.cpp:597
VOID ItemCheckStateChanged(BOOL bChecked, LPVOID CallbackParam)
Definition: gui.cpp:695
CAppDB * m_Db
Definition: gui.h:57
CUiWindow< CStatusBar > * m_StatusBar
Definition: gui.h:53
HWND Create()
Definition: gui.cpp:676
BOOL ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT &theResult, DWORD dwMapId)
Definition: gui.cpp:303
CUiPanel * m_ClientPanel
Definition: gui.h:49
VOID LayoutCleanup()
Definition: gui.cpp:219
BOOL CreateStatusBar()
Definition: gui.cpp:134
BOOL UninstallSelectedApp(BOOL bModify)
Definition: gui.cpp:290
BOOL CreateApplicationView()
Definition: gui.cpp:156
CApplicationView * m_ApplicationView
Definition: gui.h:55
INT Append(T *ptr)
Definition: rosui.h:87
HIMAGELIST hImageTreeView
Definition: gui.h:27
CSideTreeView()
Definition: gui.cpp:37
HTREEITEM AddCategory(HTREEITEM hRootItem, UINT TextIndex, UINT IconIndex)
Definition: gui.cpp:50
HTREEITEM AddItem(HTREEITEM hParent, CStringW &Text, INT Image, INT SelectedImage, LPARAM lParam)
Definition: gui.cpp:44
~CSideTreeView()
Definition: gui.cpp:81
VOID DestroyImageList()
Definition: gui.cpp:75
HIMAGELIST SetImageList()
Definition: gui.cpp:69
VOID SetText(LPCWSTR lpszText)
Definition: rosctrls.h:457
HWND Create(HWND hwndParent, HMENU hMenu)
Definition: rosctrls.h:462
BOOL Expand(HTREEITEM item, DWORD action)
Definition: rosctrls.h:599
HWND Create(HWND hwndParent)
Definition: rosctrls.h:483
BOOL SelectItem(HTREEITEM item, DWORD action=TVGN_CARET)
Definition: rosctrls.h:604
CUiAlignment m_HorizontalAlignment
Definition: rosui.h:257
CUiAlignment m_VerticalAlignment
Definition: rosui.h:258
CUiMargin m_Margin
Definition: rosui.h:255
CUiCollection & Children()
Definition: rosui.h:384
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:439
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:454
INT m_Pos
Definition: rosui.h:584
BOOL m_Horizontal
Definition: rosui.h:585
CUiCollection & First()
Definition: rosui.h:618
BOOL m_DynamicFirst
Definition: rosui.h:586
CUiCollection & Second()
Definition: rosui.h:623
INT m_MinSecond
Definition: rosui.h:588
HWND Create(HWND hwndParent)
Definition: rosui.h:867
INT m_MinFirst
Definition: rosui.h:587
virtual VOID AppendTabOrderWindow(int Direction, ATL::CSimpleArray< HWND > &TabOrderList)
Definition: rosui.h:546
WPARAM wParam
Definition: combotst.c:138
char * Text
Definition: combotst.c:136
struct @1609 Msg[]
LPARAM lParam
Definition: combotst.c:139
ush Pos
Definition: deflate.h:92
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:928
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:804
const WCHAR * text
Definition: package.c:1799
static const WCHAR IconIndex[]
Definition: install.c:52
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define TREEVIEW_ICON_SIZE
Definition: gui.cpp:33
VOID MainWindowLoop(CAppDB *db, INT nShowCmd)
Definition: gui.cpp:788
#define b
Definition: ke_i.h:79
HWND hMainWnd
Definition: magnifier.c:32
const TCHAR szWindowClass[]
Definition: magnifier.c:28
static HICON
Definition: imagelist.c:84
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
HICON hIcon
Definition: msconfig.c:44
unsigned int UINT
Definition: ndis.h:50
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define TVN_SELCHANGED
Definition: commctrl.h:3735
#define TVSIL_NORMAL
Definition: commctrl.h:3443
#define LPNMTREEVIEW
Definition: commctrl.h:3643
#define TVE_EXPAND
Definition: commctrl.h:3423
#define TVI_ROOT
Definition: commctrl.h:3368
#define ImageList_AddIcon(himl, hicon)
Definition: commctrl.h:415
#define ILC_MASK
Definition: commctrl.h:351
BOOL DownloadApplication(CAppInfo *pAppInfo)
Definition: loaddlg.cpp:1074
VOID CreateSettingsDlg(HWND hwnd)
BOOL DownloadListOfApplications(const CAtlList< CAppInfo * > &AppsList, BOOL bIsModal)
Definition: loaddlg.cpp:1055
#define WM_NOTIFY
Definition: richedit.h:61
@ UiAlign_Stretch
Definition: rosui.h:249
@ UiAlign_RightBtm
Definition: rosui.h:248
BOOL WINAPI ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon)
BOOL Maximized
Definition: settings.h:13
BOOL bSaveWndPos
Definition: settings.h:7
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
#define AddItem
Definition: userenv.h:209
#define _T(x)
Definition: vfdio.h:22
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
#define LPRECT
Definition: precomp.h:28
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
HWND WINAPI GetFocus(void)
Definition: window.c:1894
#define CS_VREDRAW
Definition: winuser.h:653
#define SW_HIDE
Definition: winuser.h:762
#define WM_CLOSE
Definition: winuser.h:1611
#define VK_TAB
Definition: winuser.h:2189
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IMAGE_ICON
Definition: winuser.h:212
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define WM_CREATE
Definition: winuser.h:1598
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_SIZE
Definition: winuser.h:1601
#define LR_CREATEDIBSECTION
Definition: winuser.h:1092
#define WM_COMMAND
Definition: winuser.h:1730
#define CS_HREDRAW
Definition: winuser.h:648
#define IDC_ARROW
Definition: winuser.h:682
#define SIZE_MINIMIZED
Definition: winuser.h:2496
#define MB_YESNO
Definition: winuser.h:811
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1616
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2074
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
#define RDW_ALLCHILDREN
Definition: winuser.h:1211
#define WM_TIMER
Definition: winuser.h:1732
struct tagNMHDR * LPNMHDR
#define WS_EX_WINDOWEDGE
Definition: winuser.h:407
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5709
#define MB_OK
Definition: winuser.h:784
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define WM_CHAR
Definition: winuser.h:1707
#define CW_USEDEFAULT
Definition: winuser.h:225
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define WM_SIZING
Definition: winuser.h:1797
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define MB_ICONQUESTION
Definition: winuser.h:783
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
#define VK_SHIFT
Definition: winuser.h:2192
#define WM_DESTROY
Definition: winuser.h:1599
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define IDYES
Definition: winuser.h:829
#define SW_MAXIMIZE
Definition: winuser.h:766
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define RDW_INVALIDATE
Definition: winuser.h:1204
SHORT WINAPI GetKeyState(_In_ int)
#define COLOR_BTNFACE
Definition: winuser.h:922
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022
WCHAR * LPWSTR
Definition: xmlstorage.h:184