Skip to content

Commit e4bdf4d

Browse files
committed
Create a simpler (layout-wise) FontIcon that is built over a TextBlock
1 parent 89aa5fa commit e4bdf4d

3 files changed

Lines changed: 67 additions & 88 deletions

File tree

src/UniGetUI/Controls/LocalIcon.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Diagnostics;
12
using Microsoft.UI.Xaml;
23
using Microsoft.UI.Xaml.Controls;
34
using Microsoft.UI.Xaml.Media;
@@ -25,6 +26,38 @@ public LocalIcon(IconType icon) : this()
2526
}
2627
}
2728

29+
public static class IconBuilder
30+
{
31+
private static FontFamily customFont = null!;
32+
private static FontFamily symbolFont = null!;
33+
34+
public static IconType SetIcon(this TextBlock block, IconType icon)
35+
{
36+
customFont ??= (FontFamily)Application.Current.Resources["SymbolFont"];
37+
block.Text = $"{(char)icon}";
38+
block.FontFamily = customFont;
39+
return icon;
40+
}
41+
42+
public static IconType GetIcon(this TextBlock block)
43+
{
44+
return IconType.Help;
45+
}
46+
47+
public static string SetGlyph(this TextBlock block, string glyph)
48+
{
49+
symbolFont ??= new FontFamily("Segoe Fluent Icons");
50+
block.Text = glyph;
51+
block.FontFamily = symbolFont;
52+
return glyph;
53+
}
54+
55+
public static string GetGlyph(this TextBlock block)
56+
{
57+
return block.Text;
58+
}
59+
}
60+
2861
public partial class LocalIconSource : FontIconSource
2962
{
3063
public static FontFamily font = (FontFamily)Application.Current.Resources["SymbolFont"];

src/UniGetUI/Pages/SoftwarePages/AbstractPackagesPage.xaml

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,15 @@
6363
IsChecked="{x:Bind IsChecked, Mode=TwoWay}" />
6464

6565
<!-- Regular or package icon -->
66-
<widgets:LocalIcon
66+
<TextBlock
6767
Grid.Row="0"
6868
Grid.Column="1"
6969
Width="24"
7070
HorizontalAlignment="Left"
7171
VerticalAlignment="Center"
72+
widgets:IconBuilder.Icon="Package"
7273
FontSize="24"
7374
FontWeight="ExtraLight"
74-
Icon="Package"
7575
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
7676
Visibility="{x:Bind ShowDefaultPackageIcon, Mode=OneWay}" />
7777

@@ -86,32 +86,32 @@
8686
Visibility="{x:Bind ShowCustomPackageIcon, Mode=OneWay}" />
8787

8888
<!-- Package tag icon -->
89-
<widgets:LocalIcon
89+
<TextBlock
9090
Grid.Row="0"
9191
Grid.Column="1"
9292
Width="20"
9393
Height="20"
9494
Margin="8,0,-4,-2"
9595
HorizontalAlignment="Left"
9696
VerticalAlignment="Bottom"
97+
widgets:IconBuilder.Icon="{x:Bind AlternateIconId, Mode=OneWay}"
9798
FontSize="20"
9899
FontWeight="ExtraLight"
99100
Foreground="{ThemeResource AccentAAFillColorTertiaryBrush}"
100-
Icon="{x:Bind AlternateIconId, Mode=OneWay}"
101101
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
102102
Visibility="{x:Bind AlternateIdIconVisible, Mode=OneWay}" />
103103

104-
<widgets:LocalIcon
104+
<TextBlock
105105
Grid.Row="0"
106106
Grid.Column="1"
107107
Width="20"
108108
Height="20"
109109
Margin="8,0,-4,-2"
110110
HorizontalAlignment="Left"
111111
VerticalAlignment="Bottom"
112+
widgets:IconBuilder.Icon="{x:Bind MainIconId, Mode=OneWay}"
112113
FontSize="20"
113114
FontWeight="ExtraLight"
114-
Icon="{x:Bind MainIconId, Mode=OneWay}"
115115
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
116116
Visibility="{x:Bind AlternateIdIconVisible, Mode=OneWay}" />
117117

@@ -124,14 +124,14 @@
124124
Text="{x:Bind Package.Name}"
125125
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}" />
126126

127-
<widgets:LocalIcon
127+
<TextBlock
128128
Grid.Row="0"
129129
Grid.Column="2"
130130
HorizontalAlignment="Left"
131131
VerticalAlignment="Center"
132+
widgets:IconBuilder.Icon="Id"
132133
FontSize="24"
133134
FontWeight="ExtraLight"
134-
Icon="Id"
135135
ToolTipService.ToolTip="{x:Bind Package.Id}" />
136136

137137
<TextBlock
@@ -143,14 +143,14 @@
143143
Text="{x:Bind Package.Id}"
144144
ToolTipService.ToolTip="{x:Bind Package.Id}" />
145145

146-
<widgets:LocalIcon
146+
<TextBlock
147147
Grid.Row="0"
148148
Grid.Column="3"
149149
HorizontalAlignment="Left"
150150
VerticalAlignment="Center"
151+
widgets:IconBuilder.Icon="version"
151152
FontSize="24"
152153
FontWeight="ExtraLight"
153-
Icon="version"
154154
ToolTipService.ToolTip="{x:Bind Package.VersionString}" />
155155

156156
<TextBlock
@@ -162,14 +162,14 @@
162162
Text="{x:Bind Package.VersionString, Mode=OneWay}"
163163
ToolTipService.ToolTip="{x:Bind Package.VersionString}" />
164164

165-
<widgets:LocalIcon
165+
<TextBlock
166166
Grid.Row="0"
167167
Grid.Column="4"
168168
HorizontalAlignment="Left"
169169
VerticalAlignment="Center"
170+
widgets:IconBuilder.Icon="download"
170171
FontSize="24"
171172
FontWeight="ExtraLight"
172-
Icon="download"
173173
ToolTipService.ToolTip="{x:Bind Package.NewVersionString}"
174174
Visibility="{x:Bind Package.IsUpgradable}" />
175175

@@ -183,14 +183,14 @@
183183
ToolTipService.ToolTip="{x:Bind Package.NewVersionString}"
184184
Visibility="{x:Bind Package.IsUpgradable}" />
185185

186-
<widgets:LocalIcon
186+
<TextBlock
187187
Grid.Row="0"
188188
Grid.Column="5"
189189
HorizontalAlignment="Left"
190190
VerticalAlignment="Center"
191+
widgets:IconBuilder.Icon="{x:Bind Package.Source.IconId}"
191192
FontSize="24"
192193
FontWeight="ExtraLight"
193-
Icon="{x:Bind Package.Source.IconId}"
194194
ToolTipService.ToolTip="{x:Bind Package.Source.AsString_DisplayName}" />
195195

196196
<TextBlock
@@ -231,13 +231,13 @@
231231
</Grid.ColumnDefinitions>
232232

233233
<!-- Regular or package icon -->
234-
<widgets:LocalIcon
234+
<TextBlock
235235
Grid.Column="0"
236236
HorizontalAlignment="Center"
237237
VerticalAlignment="Center"
238+
widgets:IconBuilder.Icon="Package"
238239
FontSize="48"
239240
FontWeight="ExtraLight"
240-
Icon="Package"
241241
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
242242
Visibility="{x:Bind ShowDefaultPackageIcon, Mode=OneWay}" />
243243

@@ -250,26 +250,26 @@
250250
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
251251
Visibility="{x:Bind ShowCustomPackageIcon, Mode=OneWay}" />
252252

253-
<widgets:LocalIcon
253+
<TextBlock
254254
Grid.Column="0"
255255
Margin="0,0,-4,-2"
256256
HorizontalAlignment="Right"
257257
VerticalAlignment="Bottom"
258+
widgets:IconBuilder.Icon="{x:Bind AlternateIconId, Mode=OneWay}"
258259
FontSize="30"
259260
FontWeight="ExtraLight"
260261
Foreground="{ThemeResource AccentAAFillColorTertiaryBrush}"
261-
Icon="{x:Bind AlternateIconId, Mode=OneWay}"
262262
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
263263
Visibility="{x:Bind AlternateIdIconVisible, Mode=OneWay}" />
264264

265-
<widgets:LocalIcon
265+
<TextBlock
266266
Grid.Column="0"
267267
Margin="0,0,-4,-2"
268268
HorizontalAlignment="Right"
269269
VerticalAlignment="Bottom"
270+
widgets:IconBuilder.Icon="{x:Bind MainIconId, Mode=OneWay}"
270271
FontSize="30"
271272
FontWeight="ExtraLight"
272-
Icon="{x:Bind MainIconId, Mode=OneWay}"
273273
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
274274
Visibility="{x:Bind AlternateIdIconVisible, Mode=OneWay}" />
275275

@@ -279,6 +279,7 @@
279279
HorizontalAlignment="Left"
280280
VerticalAlignment="Top"
281281
IsChecked="{x:Bind IsChecked, Mode=TwoWay}" />
282+
282283
<Button
283284
Grid.Column="2"
284285
Width="22"
@@ -289,7 +290,7 @@
289290
BorderThickness="0"
290291
Click="{x:Bind RightClick}"
291292
Tapped="ContextMenuButton_Tapped">
292-
<SymbolIcon Symbol="More" />
293+
<TextBlock widgets:IconBuilder.Glyph="&#xE712;" FontSize="18" />
293294
</Button>
294295

295296
<TextBlock
@@ -349,15 +350,15 @@
349350
</Grid.ColumnDefinitions>
350351

351352
<!-- Regular or package icon -->
352-
<widgets:LocalIcon
353+
<TextBlock
353354
Grid.Row="1"
354355
Height="64"
355356
Margin="0,-8,0,4"
356357
HorizontalAlignment="Center"
357358
VerticalAlignment="Center"
359+
widgets:IconBuilder.Icon="Package"
358360
FontSize="74"
359361
FontWeight="ExtraLight"
360-
Icon="Package"
361362
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
362363
Visibility="{x:Bind ShowDefaultPackageIcon, Mode=OneWay}" />
363364

@@ -372,26 +373,26 @@
372373
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
373374
Visibility="{x:Bind ShowCustomPackageIcon, Mode=OneWay}" />
374375

375-
<widgets:LocalIcon
376+
<TextBlock
376377
Grid.Row="1"
377378
Margin="0,0,20,-2"
378379
HorizontalAlignment="Right"
379380
VerticalAlignment="Bottom"
381+
widgets:IconBuilder.Icon="{x:Bind AlternateIconId, Mode=OneWay}"
380382
FontSize="40"
381383
FontWeight="ExtraLight"
382384
Foreground="{ThemeResource AccentAAFillColorTertiaryBrush}"
383-
Icon="{x:Bind AlternateIconId, Mode=OneWay}"
384385
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
385386
Visibility="{x:Bind AlternateIdIconVisible, Mode=OneWay}" />
386387

387-
<widgets:LocalIcon
388+
<TextBlock
388389
Grid.Row="1"
389390
Margin="0,0,20,-2"
390391
HorizontalAlignment="Right"
391392
VerticalAlignment="Bottom"
393+
widgets:IconBuilder.Icon="{x:Bind MainIconId, Mode=OneWay}"
392394
FontSize="40"
393395
FontWeight="ExtraLight"
394-
Icon="{x:Bind MainIconId, Mode=OneWay}"
395396
ToolTipService.ToolTip="{x:Bind ListedNameTooltip, Mode=OneWay}"
396397
Visibility="{x:Bind AlternateIdIconVisible, Mode=OneWay}" />
397398

@@ -412,7 +413,7 @@
412413
BorderThickness="0"
413414
Click="{x:Bind RightClick}"
414415
Tapped="ContextMenuButton_Tapped">
415-
<SymbolIcon Symbol="More" />
416+
<TextBlock widgets:IconBuilder.Glyph="&#xE712;" FontSize="18" />
416417
</Button>
417418

418419
<TextBlock
@@ -604,7 +605,10 @@
604605
<StackPanel Orientation="Horizontal" Spacing="4">
605606

606607
<widgets:TranslatedTextBlock VerticalAlignment="Center" Text="View mode:" />
607-
<Toolkit:Segmented x:Name="ViewModeSelector" SelectionMode="Single">
608+
<Toolkit:Segmented
609+
x:Name="ViewModeSelector"
610+
SelectionChanged="ViewModeSelector_SelectionChanged"
611+
SelectionMode="Single">
608612
<Toolkit:SegmentedItem Icon="{ui:FontIcon Glyph=&#xE8FD;}" ToolTipService.ToolTip="List" />
609613
<Toolkit:SegmentedItem Icon="{ui:FontIcon Glyph=&#xF168;}" ToolTipService.ToolTip="Grid" />
610614
<Toolkit:SegmentedItem Icon="{ui:FontIcon Glyph=&#xF0E2;}" ToolTipService.ToolTip="Icons" />

src/UniGetUI/Pages/SoftwarePages/AbstractPackagesPage.xaml.cs

Lines changed: 1 addition & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,68 +1269,10 @@ private void FilteringPanel_PaneClosing(SplitView sender, SplitViewPaneClosingEv
12691269
{
12701270
ToggleFiltersButton.IsChecked = false;
12711271
}
1272-
1273-
/*private void LoadListLayout()
1274-
{
1275-
PackageList.ItemTemplate = (DataTemplate)this.Resources["PackageTemplate_List"];
1276-
PackageList.Layout = new StackLayout() { Spacing = 3 };
1277-
}
1278-
private void LoadIconsLayout()
1279-
{
1280-
PackageList.ItemTemplate = (DataTemplate)this.Resources["PackageTemplate_Icons"];
1281-
PackageList.Layout = new UniformGridLayout()
1282-
{
1283-
ItemsStretch = UniformGridLayoutItemsStretch.None,
1284-
ItemsJustification = UniformGridLayoutItemsJustification.Start,
1285-
MinColumnSpacing = 8,
1286-
MinRowSpacing = 8,
1287-
};
1288-
}
1289-
1290-
private void LoadGridLayout()
1291-
{
1292-
PackageList.ItemTemplate = (DataTemplate)this.Resources["PackageTemplate_Grid"];
1293-
PackageList.Layout = new UniformGridLayout()
1294-
{
1295-
ItemsStretch = UniformGridLayoutItemsStretch.Fill,
1296-
MinColumnSpacing = 8,
1297-
MinRowSpacing = 8,
1298-
MinItemWidth = 275,
1299-
MinItemHeight = 56, // Add this - should match your row height plus padding
1300-
};
1301-
}
1302-
13031272
private void ViewModeSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
13041273
{
13051274
Settings.SetDictionaryItem("PackageListViewMode", PAGE_NAME, ViewModeSelector.SelectedIndex);
1306-
if (ViewModeSelector.SelectedIndex == 0)
1307-
LoadListLayout();
1308-
else if (ViewModeSelector.SelectedIndex == 1)
1309-
LoadGridLayout();
1310-
else if (ViewModeSelector.SelectedIndex == 2)
1311-
LoadIconsLayout();
1312-
1313-
if(ViewModeSelector.SelectedIndex == 0)
1314-
{
1315-
NameHeader.Content = CoreTools.Translate("Package Name");
1316-
IdHeader.Content = CoreTools.Translate("Package ID");
1317-
VersionHeader.Content = CoreTools.Translate("Version");
1318-
NewVersionHeader.Content = CoreTools.Translate("New version");
1319-
SourceHeader.Content = CoreTools.Translate("Source");
1320-
foreach (var item in new Button[] { NameHeader, IdHeader, VersionHeader, NewVersionHeader, SourceHeader })
1321-
{
1322-
item.IsEnabled = true;
1323-
}
1324-
}
1325-
else
1326-
{
1327-
foreach (var item in new Button[] { NameHeader, IdHeader, VersionHeader, NewVersionHeader, SourceHeader })
1328-
{
1329-
item.Content = "";
1330-
item.IsEnabled = false;
1331-
}
1332-
}
1333-
}*/
1275+
}
13341276

13351277
FrameworkElement _lastContextMenuButtonTapped = null!;
13361278
private void ContextMenuButton_Tapped(object sender, TappedRoutedEventArgs e)

0 commit comments

Comments
 (0)