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
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using AdamsToolkit.Core;
namespace AdamsToolkit.Views;
/// <summary>
/// Separador "Código Aberto": mostra onde está o código publicado e responde, dentro
/// da própria app, às perguntas de uma verificação de PC.
///
/// Existe porque jogadores já levaram ban por a app aparecer como "editor
/// desconhecido" num scanner. Quem está a verificar o PC abre este separador, clica
/// e lê o código — em vez de banir por dúvida. O estado da repetição de
/// teclado é lido ao vivo da configuração, e os ficheiros que o guardam são texto
/// simples, para o staff poder confirmar sem confiar no que a app mostra.
/// </summary>
public partial class OpenSourceView : UserControl
{
public const string RepoUrl = "https://github.com/Adaoxyz/adams-toolkit";
private static readonly string[] Claims =
{
"Não lê nem escreve a memória de outros programas — não há uma única chamada a ReadProcessMemory ou WriteProcessMemory em todo o código.",
"Não injeta nada dentro do FiveM nem do GTA V, e não altera ficheiros do jogo.",
"Não instala drivers de kernel. A biblioteca de sensores que trazia um foi removida em agosto de 2026.",
"Não apaga rasto do sistema: nada de ficheiros temporários, Prefetch, registos de eventos ou Reciclagem. A limpeza foi desligada de propósito.",
"Não desliga o Windows Defender nem serviços de diagnóstico.",
"Não envia dados do teu PC. Sai apenas o teu ID, nome e avatar do Discord, para validar o acesso.",
"Tudo o que altera no Windows fica guardado com o valor original e tem botão para reverter; a maior parte volta ao normal quando reinicias o PC.",
};
public OpenSourceView()
{
InitializeComponent();
RepoUrlText.Text = RepoUrl;
ClaimList.ItemsSource = Claims;
VersionText.Text = $"Versão instalada: v{SelfUpdater.CurrentVersion}";
RefreshInputState();
}
/// <summary>Estado atual da repetição de teclado, com cor.</summary>
private void RefreshInputState()
{
Paint(KeyRepeatState, KeyboardRepeat.Cfg.Enabled);
void Paint(System.Windows.Controls.TextBlock tb, bool on)
{
tb.Text = on ? "LIGADO" : "DESLIGADO";
tb.Foreground = (Brush)FindResource(on ? "BrWarn" : "BrSuccess");
}
}
private void BtnRepo_Click(object sender, RoutedEventArgs e) => DownloadManager.OpenUrl(RepoUrl);
private void BtnCopy_Click(object sender, RoutedEventArgs e)
{
try
{
Clipboard.SetText(RepoUrl);
BtnCopy.Content = "Copiado!";
}
catch { BtnCopy.Content = "Não deu para copiar"; }
}
private void BtnOpenData_Click(object sender, RoutedEventArgs e)
=> DownloadManager.OpenFolder(ConfigService.DataDir);
}