1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<UserControl x:Class="AdamsToolkit.Views.InstallCenterView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="0,0,0,14">
<StackPanel>
<TextBlock Text="Install Center" Style="{StaticResource H1}"/>
<TextBlock Text="Downloads feitos diretamente dos sites oficiais. A app não aloja ficheiros."
Style="{StaticResource Muted}" Margin="0,4,0,0"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top">
<Button Style="{StaticResource GhostButton}" Content="📁 Downloads"
Click="OpenDownloads_Click" Margin="0,0,8,0"/>
<Button Style="{StaticResource GhostButton}" Content="🕘 Histórico"
Click="ToggleHistory_Click" Margin="0,0,8,0"/>
<Button Style="{StaticResource GhostButton}" Content="🔄 Verificar"
Click="Refresh_Click"/>
</StackPanel>
</Grid>
<ScrollViewer x:Name="Scroller" Grid.Row="1" VerticalScrollBarVisibility="Hidden">
<StackPanel>
<!-- Histórico (colapsável) -->
<Border x:Name="HistoryPanel" Style="{StaticResource Card}" Margin="0,0,0,14"
Visibility="Collapsed">
<StackPanel>
<TextBlock Text="Histórico de downloads" Style="{StaticResource H2}" Margin="0,0,0,8"/>
<ItemsControl x:Name="HistoryList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition/>
<ColumnDefinition Width="130"/>
<ColumnDefinition Width="90"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding AppName}" Style="{StaticResource Body}"/>
<TextBlock Grid.Column="1" Text="{Binding FileName}" Style="{StaticResource Muted}"/>
<TextBlock Grid.Column="2" Text="{Binding Date, StringFormat='{}{0:dd/MM/yyyy HH:mm}'}"
Style="{StaticResource Muted}"/>
<TextBlock Grid.Column="3" Text="{Binding Status}" Style="{StaticResource Muted}"
HorizontalAlignment="Right"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBlock x:Name="HistoryEmpty" Text="Ainda sem downloads."
Style="{StaticResource Muted}" Visibility="Collapsed"/>
</StackPanel>
</Border>
<!-- Apps agrupadas por categoria (Launchers / Windows / FiveM) -->
<ItemsControl x:Name="AppsList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,10">
<ToggleButton x:Name="CatToggle" Style="{StaticResource CategoryHeader}"
IsChecked="False">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Category}" Style="{StaticResource H2}"/>
<Border Background="{DynamicResource BrSurface}" CornerRadius="8"
Padding="8,2" Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="{Binding Cards.Count}" FontSize="11"
Foreground="{DynamicResource BrMuted}"/>
</Border>
</StackPanel>
</ToggleButton>
<ItemsControl ItemsSource="{Binding Cards}" Margin="0,12,0,0"
Visibility="{Binding IsChecked, ElementName=CatToggle,
Converter={StaticResource BoolToVis}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Style="{StaticResource Card}" Width="292" Margin="0,0,14,14">
<StackPanel>
<Grid>
<StackPanel Orientation="Horizontal">
<Border Background="{DynamicResource BrSurface}" CornerRadius="10"
Width="42" Height="42">
<TextBlock Text="{Binding Icon}" FontSize="20"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<StackPanel Margin="11,0,0,0" VerticalAlignment="Center">
<TextBlock Text="{Binding Name}" Style="{StaticResource H2}" FontSize="15"/>
<TextBlock Text="{Binding Version}" Style="{StaticResource Muted}" FontSize="11"/>
</StackPanel>
</StackPanel>
<Border HorizontalAlignment="Right" VerticalAlignment="Top"
Background="#1A34D399" CornerRadius="6" Padding="7,3"
Visibility="{Binding Installed, Converter={StaticResource BoolToVis}}">
<TextBlock Text="✓ Instalado" FontSize="10.5"
Foreground="{DynamicResource BrSuccess}"/>
</Border>
</Grid>
<TextBlock Text="{Binding Description}" Style="{StaticResource Muted}"
Margin="0,10,0,0" Height="34"/>
<!-- progresso de download -->
<StackPanel Visibility="{Binding Downloading, Converter={StaticResource BoolToVis}}"
Margin="0,8,0,0">
<ProgressBar Style="{StaticResource DlProgress}" Maximum="100"
Value="{Binding Progress}"
IsIndeterminate="{Binding Indeterminate}"/>
<TextBlock Text="{Binding StatusLabel}" Style="{StaticResource Muted}"
FontSize="10.5" Margin="0,4,0,0"/>
</StackPanel>
<Grid Margin="0,12,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Content="{Binding InstallLabel}" Style="{StaticResource PrimaryButton}"
Tag="{Binding}" Click="Install_Click"
IsEnabled="{Binding CanInstall}" Margin="0,0,8,0"/>
<Button Grid.Column="1" Content="🌐" ToolTip="Abrir website oficial"
Style="{StaticResource GhostButton}" Tag="{Binding}"
Click="Website_Click"/>
</Grid>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ScrollViewer>
</Grid>
</UserControl>