Skip to content

Commit a690ed7

Browse files
committed
add base searchbox on titlebar
1 parent c02d77f commit a690ed7

7 files changed

Lines changed: 152 additions & 76 deletions

File tree

src/UniGetUI/MainWindow.xaml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,27 @@
3434
Title="UniGetUI"
3535
Grid.Row="0"
3636
Margin="0,0,0,-4"
37+
HorizontalContentAlignment="Center"
3738
BackRequested="TitleBar_OnBackRequested"
3839
IsBackButtonVisible="False"
3940
IsPaneToggleButtonVisible="True"
4041
PaneToggleRequested="TitleBar_PaneToggleRequested"
42+
SizeChanged="TitleBar_SizeChanged"
4143
Visibility="Collapsed">
4244
<winex:TitleBar.IconSource>
4345
<ImageIconSource ImageSource="ms-appx:///Assets/Images/icon.png" />
4446
</winex:TitleBar.IconSource>
45-
<!--winex:TitleBar.Content>
46-
<UserControl Height="10" />
47-
</winex:TitleBar.Content-->
47+
<winex:TitleBar.Content>
48+
<AutoSuggestBox
49+
x:Name="GlobalSearchBox"
50+
Width="400"
51+
Height="32"
52+
HorizontalAlignment="Stretch"
53+
x:FieldModifier="public"
54+
QueryIcon="Find" />
55+
</winex:TitleBar.Content>
4856
<winex:TitleBar.Footer>
49-
<services:UserAvatar />
57+
<services:UserAvatar Margin="0,0,-44,0" />
5058
</winex:TitleBar.Footer>
5159
</winex:TitleBar>
5260
<StackPanel

src/UniGetUI/MainWindow.xaml.cs

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
using WinUIEx;
2727
using TitleBar = WinUIEx.TitleBar;
2828
using WindowExtensions = H.NotifyIcon.WindowExtensions;
29+
using System.Diagnostics;
30+
using Windows.UI.Text.Core;
2931

3032
namespace UniGetUI.Interface
3133
{
@@ -213,10 +215,11 @@ public static void ApplyProxyVariableToProcess()
213215

214216
private void AddToSubtitle(string line)
215217
{
216-
if (TitleBar.Subtitle.Length > 0)
217-
TitleBar.Subtitle += " - ";
218-
TitleBar.Subtitle += line;
219-
Title = "UniGetUI - " + TitleBar.Subtitle;
218+
if (subtitleBackup.Length > 0)
219+
subtitleBackup += " - ";
220+
subtitleBackup += line;
221+
Title = "UniGetUI - " + subtitleBackup;
222+
TitleBar.Subtitle = subtitleCollapsed is false? "": subtitleBackup;
220223
}
221224

222225
private void ClearSubtitle()
@@ -649,7 +652,7 @@ public void SwitchToInterface()
649652
TitleBar.Visibility = Visibility.Visible;
650653
SetTitleBar(TitleBar);
651654

652-
NavigationPage = new MainView();
655+
NavigationPage = new MainView(GlobalSearchBox);
653656
NavigationPage.CanGoBackChanged += (_, can) => TitleBar.IsBackButtonVisible = can;
654657

655658
object? control = MainContentFrame.Content as Grid;
@@ -979,6 +982,42 @@ private void TitleBar_OnBackRequested(TitleBar sender, object args)
979982
{
980983
NavigationPage?.NavigateBack();
981984
}
985+
986+
987+
private bool? subtitleCollapsed;
988+
private bool? titleCollapsed;
989+
private string subtitleBackup = "";
990+
private void TitleBar_SizeChanged(object sender, SizeChangedEventArgs e)
991+
{
992+
if(TitleBar.ActualWidth <= 700)
993+
{
994+
GlobalSearchBox.Width = Math.Max(50, 400 - (700 - TitleBar.ActualWidth));
995+
}
996+
997+
if (TitleBar.ActualWidth < 870 && titleCollapsed is not true)
998+
{
999+
TitleBar.Title = "";
1000+
titleCollapsed = true;
1001+
}
1002+
else if (TitleBar.ActualWidth > 870 && titleCollapsed is not false)
1003+
{
1004+
TitleBar.Title = "UniGetUI";
1005+
titleCollapsed = false;
1006+
}
1007+
1008+
if (TitleBar.ActualWidth < 1200 && subtitleCollapsed is not true)
1009+
{
1010+
subtitleBackup = TitleBar.Subtitle;
1011+
TitleBar.Subtitle = "";
1012+
subtitleCollapsed = true;
1013+
}
1014+
else if (TitleBar.ActualWidth > 1200 && subtitleCollapsed is not false)
1015+
{
1016+
TitleBar.Subtitle = subtitleBackup;
1017+
subtitleCollapsed = false;
1018+
}
1019+
// Debug.WriteLine(TitleBar.ActualWidth);
1020+
}
9821021
}
9831022

9841023
public static class NativeHelpers

src/UniGetUI/Pages/MainView.xaml.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using UniGetUI.Controls;
2020
using UniGetUI.PackageEngine;
2121
using UniGetUI.PackageEngine.PackageLoader;
22+
using UniGetUI.Pages.PageInterfaces;
2223

2324
// To learn more about WinUI, the WinUI project structure,
2425
// and more about our project templates, see: http://aka.ms/winui-project-info.
@@ -57,11 +58,13 @@ public sealed partial class MainView : UserControl
5758
private PageType CurrentPage_t = PageType.Null;
5859
private List<PageType> NavigationHistory = new();
5960

61+
AutoSuggestBox MainTextBlock;
6062
public event EventHandler<bool>? CanGoBackChanged;
6163

62-
public MainView()
64+
public MainView(AutoSuggestBox mainTextBlock)
6365
{
6466
InitializeComponent();
67+
MainTextBlock = mainTextBlock;
6568
OperationList.ItemContainerTransitions = null;
6669
OperationList.ItemsSource = MainApp.Operations._operationList;
6770
DiscoverPage = new DiscoverSoftwarePage();
@@ -278,6 +281,13 @@ public void NavigateTo(PageType NewPage_t, bool toHistory = true)
278281
CurrentPage_t = NewPage_t;
279282

280283
(oldPage as IEnterLeaveListener)?.OnLeave();
284+
if(oldPage is ISearchBoxPage oldSPage)
285+
{
286+
MainTextBlock.TextChanged -= oldSPage.SearchBox_TextChanged;
287+
MainTextBlock.QuerySubmitted -= oldSPage.SearchBox_QuerySubmitted;
288+
oldSPage.QueryBackup = MainTextBlock.Text;
289+
}
290+
281291
if (toHistory && OldPage_t is not PageType.Null)
282292
{
283293
NavigationHistory.Add(OldPage_t);
@@ -287,6 +297,21 @@ public void NavigateTo(PageType NewPage_t, bool toHistory = true)
287297
(NewPage as AbstractPackagesPage)?.FocusPackageList();
288298
(NewPage as AbstractPackagesPage)?.FilterPackages();
289299
(NewPage as IEnterLeaveListener)?.OnEnter();
300+
301+
if (NewPage is ISearchBoxPage newSPage)
302+
{
303+
MainTextBlock.TextChanged += newSPage.SearchBox_TextChanged;
304+
MainTextBlock.QuerySubmitted += newSPage.SearchBox_QuerySubmitted;
305+
MainTextBlock.Text = newSPage.QueryBackup;
306+
MainTextBlock.PlaceholderText = newSPage.SearchBoxPlaceholder;
307+
MainTextBlock.IsEnabled = true;
308+
}
309+
else
310+
{
311+
MainTextBlock.Text = "";
312+
MainTextBlock.PlaceholderText = "";
313+
MainTextBlock.IsEnabled = false;
314+
}
290315
}
291316

292317
public void NavigateBack()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
using Microsoft.UI.Xaml.Controls;
3+
using Microsoft.UI.Xaml.Input;
4+
5+
namespace UniGetUI.Pages.PageInterfaces;
6+
internal interface ISearchBoxPage
7+
{
8+
public string QueryBackup { get; set; }
9+
public string SearchBoxPlaceholder { get; }
10+
public void SearchBox_TextChanged(object? sender, AutoSuggestBoxTextChangedEventArgs args);
11+
public void SearchBox_QuerySubmitted(object? sender, AutoSuggestBoxQuerySubmittedEventArgs args);
12+
}

src/UniGetUI/Pages/SoftwarePages/AbstractPackagesPage.xaml

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,10 @@
3636
AutomationProperties.Name="{x:Bind Package.AutomationName}"
3737
CornerRadius="4"
3838
DoubleTapped="{x:Bind PackageItemContainer_DoubleTapped}"
39+
Package="{x:Bind Package}"
3940
PreviewKeyDown="{x:Bind PackageItemContainer_PreviewKeyDown}"
4041
RightTapped="{x:Bind PackageItemContainer_RightTapped}"
41-
42-
Wrapper="{x:Bind Self}"
43-
Package="{x:Bind Package}">
42+
Wrapper="{x:Bind Self}">
4443

4544
<Grid
4645
Padding="12,3,8,3"
@@ -212,10 +211,9 @@
212211
Background="{ThemeResource ControlFillColorDefaultBrush}"
213212
CornerRadius="4"
214213
DoubleTapped="{x:Bind PackageItemContainer_DoubleTapped}"
214+
Package="{x:Bind Package}"
215215
PreviewKeyDown="{x:Bind PackageItemContainer_PreviewKeyDown}"
216216
RightTapped="{x:Bind PackageItemContainer_RightTapped}"
217-
218-
Package="{x:Bind Package}"
219217
Wrapper="{x:Bind Self}">
220218

221219
<Grid
@@ -331,10 +329,9 @@
331329
Background="{ThemeResource ControlFillColorDefaultBrush}"
332330
CornerRadius="4"
333331
DoubleTapped="{x:Bind PackageItemContainer_DoubleTapped}"
332+
Package="{x:Bind Package}"
334333
PreviewKeyDown="{x:Bind PackageItemContainer_PreviewKeyDown}"
335334
RightTapped="{x:Bind PackageItemContainer_RightTapped}"
336-
337-
Package="{x:Bind Package}"
338335
Wrapper="{x:Bind Self}">
339336

340337
<Grid
@@ -456,10 +453,10 @@
456453
<UniformGridLayout
457454
x:Key="Layout_Icons"
458455
ItemsJustification="Start"
459-
MinItemWidth="128"
460-
MinItemHeight="134"
461456
MinColumnSpacing="8"
462-
MinRowSpacing="8"/>
457+
MinItemHeight="134"
458+
MinItemWidth="128"
459+
MinRowSpacing="8" />
463460

464461
<StackLayout x:Key="Layout_List" Spacing="3" />
465462

@@ -506,19 +503,19 @@
506503
Spacing="0">
507504
<TextBlock
508505
x:Name="MainTitle"
506+
MaxHeight="70"
509507
HorizontalAlignment="Left"
510508
x:FieldModifier="protected"
511509
FontFamily="Segoe UI Variable Display"
512510
FontSize="30"
513511
FontWeight="Bold"
514-
MaxHeight="70"
515512
TextWrapping="Wrap" />
516513
<TextBlock
517514
x:Name="MainSubtitle"
515+
MaxHeight="40"
518516
HorizontalAlignment="Left"
519517
x:FieldModifier="protected"
520518
FontSize="11"
521-
MaxHeight="40"
522519
FontWeight="Normal"
523520
Foreground="{ThemeResource AppBarItemDisabledForegroundThemeBrush}"
524521
TextWrapping="Wrap" />
@@ -540,7 +537,7 @@
540537
</Grid.ColumnDefinitions>
541538

542539

543-
<TextBox
540+
<!--TextBox
544541
x:Name="QueryBlock"
545542
Grid.Column="0"
546543
Height="30"
@@ -566,7 +563,7 @@
566563
<SymbolIconSource Symbol="Find" />
567564
</AnimatedIcon.FallbackIconSource>
568565
</AnimatedIcon>
569-
</Button>
566+
</Button-->
570567

571568
<Button
572569
x:Name="ReloadButton"
@@ -616,9 +613,9 @@
616613
x:Name="ViewModeSelector"
617614
SelectionChanged="ViewModeSelector_SelectionChanged"
618615
SelectionMode="Single">
619-
<Toolkit:SegmentedItem Icon="{ui:FontIcon Glyph=&#xE8FD;}" x:Name="Selector_List" />
620-
<Toolkit:SegmentedItem Icon="{ui:FontIcon Glyph=&#xF168;}" x:Name="Selector_Grid" />
621-
<Toolkit:SegmentedItem Icon="{ui:FontIcon Glyph=&#xF0E2;}" x:Name="Selector_Icons" />
616+
<Toolkit:SegmentedItem x:Name="Selector_List" Icon="{ui:FontIcon Glyph=&#xE8FD;}" />
617+
<Toolkit:SegmentedItem x:Name="Selector_Grid" Icon="{ui:FontIcon Glyph=&#xF168;}" />
618+
<Toolkit:SegmentedItem x:Name="Selector_Icons" Icon="{ui:FontIcon Glyph=&#xF0E2;}" />
622619
</Toolkit:Segmented>
623620
</StackPanel>
624621
</StackPanel>

0 commit comments

Comments
 (0)