adams-toolkit

codigo-fonte GPL-3.0 · espelho oficial · commit b208bae5
MainWindow.xaml · 155 linhas · raw
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
148
149
150
151
152
153
154
155
<Window x:Class="AdamsToolkit.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Adams Toolkit" Height="720" Width="1180" MinHeight="600" MinWidth="960"
        WindowStartupLocation="CenterScreen"
        Icon="/Assets/app.ico"
        Background="Transparent"
        WindowStyle="None" AllowsTransparency="True" ResizeMode="CanResizeWithGrip">
    <Border x:Name="RootBorder" CornerRadius="14" Background="{DynamicResource BrBg}"
            BorderBrush="{DynamicResource BrAccentGradient}" BorderThickness="1">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="44"/>
                <RowDefinition/>
            </Grid.RowDefinitions>

            <!-- ===== Barra de título custom ===== -->
            <Grid Grid.Row="0" Background="Transparent" MouseLeftButtonDown="TitleBar_Drag">
                <!-- topo da sidebar: marca ADAMS TOOLKIT (a coluna continua na linha 1) -->
                <Border Width="232" HorizontalAlignment="Left" CornerRadius="14,0,0,0"
                        Background="{DynamicResource BrSurface}"
                        BorderBrush="{DynamicResource BrBorder}" BorderThickness="0,0,1,0">
                    <StackPanel Orientation="Horizontal" Margin="18,0,0,0" VerticalAlignment="Center">
                        <Image Source="/Assets/logo.png" Height="30" VerticalAlignment="Center"
                               RenderOptions.BitmapScalingMode="HighQuality"/>
                        <StackPanel Margin="10,0,0,0" VerticalAlignment="Center">
                            <TextBlock Text="ADAMS" FontSize="15" FontWeight="Bold"
                                       Foreground="{DynamicResource BrText}"/>
                            <TextBlock Text="TOOLKIT" FontSize="10" FontWeight="Bold"
                                       Foreground="{DynamicResource BrAccent}" Margin="0,-2,0,0">
                                <TextBlock.LayoutTransform>
                                    <ScaleTransform ScaleX="1.15"/>
                                </TextBlock.LayoutTransform>
                            </TextBlock>
                        </StackPanel>
                    </StackPanel>
                </Border>
                <StackPanel Orientation="Horizontal" Margin="252,0,0,0" VerticalAlignment="Center">
                    <TextBlock x:Name="VersionText" FontSize="11"
                               VerticalAlignment="Center" Foreground="{DynamicResource BrMuted}"/>
                    <Border x:Name="UpdateBanner" Background="{DynamicResource BrCard}" CornerRadius="7"
                            Padding="10,3" Margin="12,0,0,0" Visibility="Collapsed" VerticalAlignment="Center">
                        <TextBlock x:Name="UpdateText" FontSize="11" Foreground="{DynamicResource BrAccent}"/>
                    </Border>
                </StackPanel>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,12,0">
                    <Button x:Name="GearBtn" Content="⚙" ToolTip="Novidades — o que mudou nas últimas atualizações"
                            Click="Gear_Click" Style="{StaticResource ChromeButton}" FontSize="14"/>
                    <Button x:Name="ThemeBtn" Content="☀️" ToolTip="Modo diurno/noturno"
                            Click="Theme_Click" Style="{StaticResource ChromeButton}"/>
                    <Button Content="—" Click="Minimize_Click" Style="{StaticResource ChromeButton}"/>
                    <Button x:Name="MaximizeBtn" Content="🗖" ToolTip="Ecrã inteiro"
                            Click="Maximize_Click" Style="{StaticResource ChromeButton}"/>
                    <Button Content="✕" Click="Close_Click" Style="{StaticResource ChromeButton}"/>
                </StackPanel>
            </Grid>

            <!-- ===== Corpo ===== -->
            <Grid Grid.Row="1" x:Name="MainArea" Visibility="Collapsed">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="232"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>

                <!-- Sidebar -->
                <Border Grid.Column="0" Background="{DynamicResource BrSurface}"
                        CornerRadius="0,0,0,14" BorderBrush="{DynamicResource BrBorder}" BorderThickness="0,0,1,0">
                    <DockPanel>
                        <!-- Utilizador em baixo -->
                        <Border DockPanel.Dock="Bottom" Margin="12,10" Padding="12,11"
                                Background="{DynamicResource BrCard}" CornerRadius="12"
                                BorderBrush="{DynamicResource BrBorder}" BorderThickness="1">
                            <StackPanel>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"/>
                                        <ColumnDefinition/>
                                    </Grid.ColumnDefinitions>
                                    <!-- anel violeta à volta do avatar -->
                                    <Grid Width="36" Height="36">
                                        <Ellipse Stroke="{DynamicResource BrAccentGradient}" StrokeThickness="1.6"/>
                                        <Ellipse Width="28" Height="28">
                                            <Ellipse.Fill>
                                                <ImageBrush x:Name="AvatarBrush" Stretch="UniformToFill"/>
                                            </Ellipse.Fill>
                                        </Ellipse>
                                    </Grid>
                                    <StackPanel Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center">
                                        <TextBlock x:Name="UserNameText" Text="—" FontSize="12.5" FontWeight="SemiBold"
                                                   Foreground="{DynamicResource BrText}" TextTrimming="CharacterEllipsis"/>
                                        <StackPanel Orientation="Horizontal" Margin="0,1,0,0">
                                            <TextBlock Text="Membro verificado" FontSize="10.5"
                                                       Foreground="{DynamicResource BrAccent}"/>
                                            <TextBlock Text="✔" FontSize="9" Margin="4,0,0,0"
                                                       VerticalAlignment="Center"
                                                       Foreground="{DynamicResource BrAccent}"/>
                                        </StackPanel>
                                    </StackPanel>
                                </Grid>
                                <Border Height="1" Background="{DynamicResource BrBorder}" Margin="0,10,0,8"/>
                                <StackPanel Orientation="Horizontal">
                                    <Ellipse Width="7" Height="7" Fill="{DynamicResource BrSuccess}"
                                             VerticalAlignment="Center" Margin="2,0,7,0"/>
                                    <TextBlock Text="Online" FontSize="10.5" Foreground="{DynamicResource BrMuted}"/>
                                </StackPanel>
                            </StackPanel>
                        </Border>

                        <!-- Navegação (ícone vetorial no Tag) -->
                        <StackPanel Margin="0,10,0,0">
                            <RadioButton x:Name="NavDashboard" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoHome}"
                                         Content="Dashboard" IsChecked="True" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavPc" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoMonitor}"
                                         Content="O meu PC" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavInstall" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoDownload}"
                                         Content="Install Center" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavFiveM" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoGame}"
                                         Content="FiveM Center" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavEditor" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoScissors}"
                                         Content="Editor de Clips" Checked="Nav_Checked"
                                         ToolTip="Abre o editor numa janela à parte"/>
                            <RadioButton x:Name="NavOptimizer" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoBolt}"
                                         Content="Otimizações" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavUninstaller" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoTrash}"
                                         Content="Desinstalador" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavTimer" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoTimer}"
                                         Content="Timer Resolution" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavChangelog" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoStar}"
                                         Content="Novidades" Checked="Nav_Checked"/>
                            <RadioButton x:Name="NavOpenSource" Style="{StaticResource NavButton}"
                                         Tag="{StaticResource IcoShield}"
                                         Content="Código Aberto" Checked="Nav_Checked"
                                         ToolTip="O código desta app é público — para quem quiser verificar o que ela faz"/>
                        </StackPanel>
                    </DockPanel>
                </Border>

                <!-- Conteúdo -->
                <ContentControl Grid.Column="1" x:Name="ContentHost" Margin="24,18,24,18"/>
            </Grid>

            <!-- ===== Ecrã de login (gate) ===== -->
            <ContentControl Grid.Row="1" x:Name="LoginHost"/>
        </Grid>
    </Border>
</Window>