M5: Windows client moderation UI; add C ABI getters for account list, user mute/deafen, channel topic
This commit is contained in:
110
clients/windows/VoiceCat.App/Forms/PermissionsDialog.cs
Normal file
110
clients/windows/VoiceCat.App/Forms/PermissionsDialog.cs
Normal file
@@ -0,0 +1,110 @@
|
||||
using VoiceCat.Interop;
|
||||
|
||||
namespace VoiceCat.App.Forms;
|
||||
|
||||
/// <summary>
|
||||
/// Edit a user's server permissions.
|
||||
/// </summary>
|
||||
public sealed class PermissionsDialog : Form
|
||||
{
|
||||
private readonly CheckBox _chkCreateTemp;
|
||||
private readonly CheckBox _chkKick;
|
||||
private readonly CheckBox _chkBan;
|
||||
private readonly CheckBox _chkMove;
|
||||
private readonly CheckBox _chkAdminAccounts;
|
||||
private readonly CheckBox _chkIsAdmin;
|
||||
|
||||
public PermissionsInfo? Result { get; private set; }
|
||||
|
||||
public PermissionsDialog(string nickname, PermissionsInfo current)
|
||||
{
|
||||
Text = $"Permissions — {nickname}";
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
StartPosition = FormStartPosition.CenterParent;
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(320, 260);
|
||||
|
||||
var lbl = new Label
|
||||
{
|
||||
Text = $"Set permissions for {nickname}:",
|
||||
Location = new Point(12, 12),
|
||||
AutoSize = true,
|
||||
};
|
||||
|
||||
_chkCreateTemp = new CheckBox
|
||||
{
|
||||
Text = "Can create &temporary channels",
|
||||
Location = new Point(12, 38),
|
||||
AutoSize = true,
|
||||
Checked = current.CanCreateTempChannel,
|
||||
};
|
||||
_chkKick = new CheckBox
|
||||
{
|
||||
Text = "Can &kick users",
|
||||
Location = new Point(12, 64),
|
||||
AutoSize = true,
|
||||
Checked = current.CanKick,
|
||||
};
|
||||
_chkBan = new CheckBox
|
||||
{
|
||||
Text = "Can &ban users",
|
||||
Location = new Point(12, 90),
|
||||
AutoSize = true,
|
||||
Checked = current.CanBan,
|
||||
};
|
||||
_chkMove = new CheckBox
|
||||
{
|
||||
Text = "Can &move users",
|
||||
Location = new Point(12, 116),
|
||||
AutoSize = true,
|
||||
Checked = current.CanMoveUsers,
|
||||
};
|
||||
_chkAdminAccounts = new CheckBox
|
||||
{
|
||||
Text = "Can manage &accounts",
|
||||
Location = new Point(12, 142),
|
||||
AutoSize = true,
|
||||
Checked = current.CanAdminAccounts,
|
||||
};
|
||||
_chkIsAdmin = new CheckBox
|
||||
{
|
||||
Text = "Is &admin",
|
||||
Location = new Point(12, 168),
|
||||
AutoSize = true,
|
||||
Checked = current.IsAdmin,
|
||||
};
|
||||
|
||||
var btnOk = new Button
|
||||
{
|
||||
Text = "&OK",
|
||||
DialogResult = DialogResult.OK,
|
||||
Location = new Point(152, 210),
|
||||
Size = new Size(75, 27),
|
||||
};
|
||||
var btnCancel = new Button
|
||||
{
|
||||
Text = "&Cancel",
|
||||
DialogResult = DialogResult.Cancel,
|
||||
Location = new Point(233, 210),
|
||||
Size = new Size(75, 27),
|
||||
};
|
||||
|
||||
AcceptButton = btnOk;
|
||||
CancelButton = btnCancel;
|
||||
Controls.AddRange([lbl, _chkCreateTemp, _chkKick, _chkBan, _chkMove,
|
||||
_chkAdminAccounts, _chkIsAdmin, btnOk, btnCancel]);
|
||||
|
||||
btnOk.Click += (_, _) =>
|
||||
{
|
||||
Result = new PermissionsInfo(
|
||||
CanCreateTempChannel: _chkCreateTemp.Checked,
|
||||
CanKick: _chkKick.Checked,
|
||||
CanBan: _chkBan.Checked,
|
||||
CanMoveUsers: _chkMove.Checked,
|
||||
CanAdminAccounts: _chkAdminAccounts.Checked,
|
||||
IsAdmin: _chkIsAdmin.Checked);
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user