ui/winui/window.cpp

branch
newapi
changeset 205
b1ac0dd1d38b
parent 200
f40dadf3498f
child 206
7ebc5a747c6f
equal deleted inserted replaced
204:4a258d47f964 205:b1ac0dd1d38b
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "pch.h"
30
29 #include "window.h" 31 #include "window.h"
30 32
31 #include <Windows.h>
32 #undef GetCurrentTime
33 #include <winrt/Windows.Foundation.Collections.h>
34 #include <winrt/Windows.UI.Xaml.Interop.h>
35 #include <winrt/Microsoft.UI.Xaml.Controls.h>
36 #include <winrt/Microsoft.UI.Xaml.Controls.Primitives.h>
37 #include <winrt/Microsoft.UI.Xaml.XamlTypeInfo.h>
38 #include <winrt/Microsoft.UI.Xaml.Markup.h>
39 #include <winrt/Microsoft.UI.Xaml.Media.h>
40
41 #include "appmenu.h" 33 #include "appmenu.h"
34 #include "commandbar.h"
42 #include "container.h" 35 #include "container.h"
43 #include "util.h" 36 #include "util.h"
44 37
45 #include "../common/context.h" 38 #include "../common/context.h"
46 39
47 #include <stdlib.h> 40 #include <stdlib.h>
48 41
49 #include <cx/mempool.h> 42 #include <cx/mempool.h>
43
44 #include "MainWindow.xaml.h"
50 45
51 using namespace winrt; 46 using namespace winrt;
52 using namespace Microsoft::UI::Xaml; 47 using namespace Microsoft::UI::Xaml;
53 using namespace Microsoft::UI::Xaml::Controls; 48 using namespace Microsoft::UI::Xaml::Controls;
54 using namespace Microsoft::UI::Xaml::XamlTypeInfo; 49 using namespace Microsoft::UI::Xaml::XamlTypeInfo;
56 using namespace Windows::UI::Xaml::Interop; 51 using namespace Windows::UI::Xaml::Interop;
57 using namespace winrt::Windows::Foundation; 52 using namespace winrt::Windows::Foundation;
58 53
59 UiWindow::UiWindow(winrt::Microsoft::UI::Xaml::Window& win) : window(win) {} 54 UiWindow::UiWindow(winrt::Microsoft::UI::Xaml::Window& win) : window(win) {}
60 55
61
62 UiObject* ui_window(const char* title, void* window_data) { 56 UiObject* ui_window(const char* title, void* window_data) {
63 CxMempool* mp = cxBasicMempoolCreate(256); 57 CxMempool* mp = cxBasicMempoolCreate(256);
64 UiObject* obj = (UiObject*)cxCalloc(mp->allocator, 1, sizeof(UiObject)); 58 UiObject* obj = (UiObject*)cxCalloc(mp->allocator, 1, sizeof(UiObject));
65 59
66 obj->ctx = uic_context(obj, mp); 60 obj->ctx = uic_context(obj, mp);
67 obj->window = window_data; 61 obj->window = window_data;
68 62
69 Window window = Window(); 63 //Window window = Window();
64 Window window = make<winui::implementation::MainWindow>();
70 if (title) { 65 if (title) {
71 wchar_t *wtitle = str2wstr(title, nullptr); 66 wchar_t *wtitle = str2wstr(title, nullptr);
72 window.Title(wtitle); 67 window.Title(wtitle);
73 free(wtitle); 68 free(wtitle);
74 } 69 }
75 70
76 auto backdrop = winrt::Microsoft::UI::Xaml::Media::MicaBackdrop(); 71 //auto backdrop = winrt::Microsoft::UI::Xaml::Media::MicaBackdrop();
77 backdrop.Kind(winrt::Microsoft::UI::Composition::SystemBackdrops::MicaKind::Base); // alternative: BaseAlt 72 //backdrop.Kind(winrt::Microsoft::UI::Composition::SystemBackdrops::MicaKind::Base); // alternative: BaseAlt
78 // TODO: https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/system-backdrop-controller#example-use-mica-in-a-windows-appsdkwinui-3-app 73 // TODO: https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/system-backdrop-controller#example-use-mica-in-a-windows-appsdkwinui-3-app
79 74
80 Grid grid = Grid(); 75 Grid grid = Grid();
81 window.Content(grid); 76 window.Content(grid);
82 77
95 MenuBar mb = ui_create_menubar(obj); 90 MenuBar mb = ui_create_menubar(obj);
96 mb.VerticalAlignment(VerticalAlignment::Top); 91 mb.VerticalAlignment(VerticalAlignment::Top);
97 obj->container->Add(mb, false); 92 obj->container->Add(mb, false);
98 } 93 }
99 94
95 if (uic_toolbar_isenabled()) {
96 // create/add toolbar
97 CommandBar toolbar = ui_create_toolbar();
98 toolbar.VerticalAlignment(VerticalAlignment::Top);
99 obj->container->Add(toolbar, false);
100 }
101
100 obj->window = window_data; 102 obj->window = window_data;
101 103
102 return obj; 104 return obj;
103 } 105 }

mercurial