136 lines
5.0 KiB
C#
136 lines
5.0 KiB
C#
using CPM;
|
|
using MLL;
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using UI;
|
|
|
|
namespace UI
|
|
{
|
|
public partial class CloudStorageCadastroPanel : FormularioModelo
|
|
{
|
|
private ModeloCloudStorage _cloud = new ModeloCloudStorage();
|
|
|
|
private LV_TEXTBOX1 txtId, txtNome, txtPastaBase;
|
|
private ComboBox cbTipo;
|
|
private CheckBox chkAtivo;
|
|
|
|
private LV_TEXTBOX1 txtClientId, txtClientSecret, txtTokenStatus;
|
|
private Button btnAutenticar;
|
|
|
|
private LV_TEXTBOX1 txtUrl, txtUsuario, txtSenha;
|
|
|
|
public CloudStorageCadastroPanel()
|
|
{
|
|
this.Titulo = "Configuração de Armazenamento em Nuvem";
|
|
MontarInterface();
|
|
}
|
|
|
|
private void MontarInterface()
|
|
{
|
|
// --- SEÇÃO 1: Identificação ---
|
|
content.Controls.Add(CreateSectionHeader("IDENTIFICAÇÃO DA CONTA", 20));
|
|
|
|
txtId = AddInput(content, "ID", 20, 50, 70, 30, true);
|
|
txtNome = AddInput(content, "NOME DA CONEXÃO", 100, 50, 290, 30);
|
|
|
|
cbTipo = AddComboBox(content, "PROVEDOR", 400, 50, 150);
|
|
cbTipo.Items.AddRange(new object[] { "gdrive", "onedrive", "webdav" });
|
|
cbTipo.SelectedIndex = 0;
|
|
|
|
txtPastaBase = AddInput(content, "PASTA DESTINO (EX: /LevelOS_Backups)", 560, 50, 255, 30);
|
|
|
|
chkAtivo = new CheckBox
|
|
{
|
|
Text = "ATIVO",
|
|
Location = new Point(20, 100),
|
|
AutoSize = true,
|
|
Checked = true,
|
|
Font = new Font("Segoe UI", 8.5f, FontStyle.Bold)
|
|
};
|
|
content.Controls.Add(chkAtivo);
|
|
|
|
// --- SEÇÃO 2: OAuth2 ---
|
|
content.Controls.Add(CreateSectionHeader("AUTENTICAÇÃO OAUTH2 (GOOGLE / ONEDRIVE)", 125));
|
|
|
|
txtClientId = AddInput(content, "CLIENT ID", 20, 155, 350, 30);
|
|
txtClientSecret = AddInput(content, "CLIENT SECRET", 380, 155, 350, 30);
|
|
txtClientSecret.PasswordChar = '●';
|
|
|
|
// Botão alinhado com os inputs acima (Y = 155 + 16 = 171 do input, botão na próxima linha)
|
|
btnAutenticar = new Button
|
|
{
|
|
Text = "🔗 Vincular Conta",
|
|
Location = new Point(20, 200),
|
|
Size = new Size(150, 30),
|
|
BackColor = Color.FromArgb(66, 133, 244),
|
|
ForeColor = Color.White,
|
|
FlatStyle = FlatStyle.Flat,
|
|
Font = new Font("Segoe UI", 9, FontStyle.Bold),
|
|
FlatAppearance = { BorderSize = 0 }
|
|
};
|
|
btnAutenticar.Click += (s, e) =>
|
|
MessageBox.Show("Abrindo navegador para autorização...", "LevelOS Cloud");
|
|
content.Controls.Add(btnAutenticar);
|
|
|
|
// STATUS DO TOKEN em linha própria, label Y=245, input Y=261
|
|
txtTokenStatus = AddInput(content, "STATUS DO TOKEN", 20, 245, 710, 30, true);
|
|
|
|
// --- SEÇÃO 3: WebDAV ---
|
|
content.Controls.Add(CreateSectionHeader("CONFIGURAÇÃO WEBDAV (NEXTCLOUD / OWNCLOUD)", 295));
|
|
|
|
txtUrl = AddInput(content, "URL DO SERVIDOR (EX: https://nuvem.seucloud.com/remote.php/dav/files/user/)", 20, 325, 490, 30);
|
|
txtUsuario = AddInput(content, "USUÁRIO", 520, 325, 150, 30);
|
|
txtSenha = AddInput(content, "SENHA / APP KEY", 680, 325, 135, 30);
|
|
txtSenha.PasswordChar = '●';
|
|
|
|
content.Height = 395;
|
|
|
|
// Lógica para alternar habilitação por tipo
|
|
cbTipo.SelectedIndexChanged += (s, e) =>
|
|
{
|
|
bool isWebDav = cbTipo.Text == "webdav";
|
|
txtClientId.Enabled = !isWebDav;
|
|
txtClientSecret.Enabled = !isWebDav;
|
|
btnAutenticar.Enabled = !isWebDav;
|
|
txtUrl.Enabled = isWebDav;
|
|
txtUsuario.Enabled = isWebDav;
|
|
txtSenha.Enabled = isWebDav;
|
|
};
|
|
}
|
|
|
|
private void PreencherModel()
|
|
{
|
|
_cloud.Nome = txtNome.Text;
|
|
_cloud.Tipo = cbTipo.Text;
|
|
_cloud.PastaBase = txtPastaBase.Text;
|
|
_cloud.ClientId = txtClientId.Text;
|
|
_cloud.ClientSecret = txtClientSecret.Text;
|
|
_cloud.Url = txtUrl.Text;
|
|
_cloud.Usuario = txtUsuario.Text;
|
|
_cloud.Senha = txtSenha.Text;
|
|
_cloud.Ativo = chkAtivo.Checked;
|
|
}
|
|
|
|
protected override void OnSalvar()
|
|
{
|
|
PreencherModel();
|
|
MessageBox.Show($"Configuração {cbTipo.Text} salva com sucesso!", "LevelOS Cloud");
|
|
}
|
|
|
|
protected override void OnNovo()
|
|
{
|
|
_cloud = new ModeloCloudStorage();
|
|
cbTipo.SelectedIndex = 0;
|
|
}
|
|
|
|
protected override void OnExcluir()
|
|
{
|
|
MessageBox.Show("Configuração excluída.", "LevelOS Cloud");
|
|
}
|
|
|
|
protected override void OnAlterar() { throw new NotImplementedException(); }
|
|
protected override void OnLocalizar() { throw new NotImplementedException(); }
|
|
protected override void OnCancelar() { }
|
|
}
|
|
} |