private DiscordOverwrite ConstructDiscordOverwriteFromList( List <UIElement> list, DiscordChannel channel, DiscordNamedObject overwriteName, bool isRole ) { var overwrite = new DiscordOverwrite( overwriteName.Id, isRole, channel.Type); var index = 2; foreach (DiscordPermission perm in Enum.GetValues(typeof(DiscordPermission))) { if (overwrite.Permission.ContainsKey(perm)) { var border = (Border)list.Find(e => Grid.GetColumn(e) == index); overwrite.Permission[perm] = ((ToggleButton)border?.Child).IsChecked; } index++; } return(overwrite); }
private void CreateOverwriteGridExistsToggle( DiscordChannel channel, DiscordNamedObject overwriteName, int rowIndex) { var border = new Border { BorderThickness = new Thickness(0, 0, 1, 1), BorderBrush = new SolidColorBrush(Colors.Black) }; var button = new ToggleButton() { Height = 20, Width = 20, HorizontalContentAlignment = HorizontalAlignment.Center, VerticalContentAlignment = VerticalAlignment.Center, Style = (Style)this.FindResource("AddRemoveToggleButton") }; button.IsChecked = channel.Overwrites.Exists(o => o.Id == overwriteName.Id); button.Click += this.OverwriteExistsButton_Click; border.Child = button; Grid.SetColumn(border, 1); Grid.SetRow(border, rowIndex); OverwriteGrid.Children.Add(border); }
private void CreateOverwriteGridRow( DiscordGuild guild, DiscordNamedObject overwriteName, DiscordChannel channel, int row) { OverwriteGrid.RowDefinitions.Add( new RowDefinition { Height = new GridLength(30) }); CreateOverwriteGridChannelLabel(channel, row); CreateOverwriteGridExistsToggle(channel, overwriteName, row); var permissions = Enum.GetValues(typeof(DiscordPermission)); for (int i = 0; i < permissions.Length; i++) { CreateOverwriteGridPermissionToggle( overwriteName, channel, (DiscordPermission)permissions.GetValue(i), row, i + 2, guild.IsAdmin); } }
public async Task RemoveOverwrite( ulong guildId, DiscordChannel channel, DiscordNamedObject overwriteName) { await DSharpPlusConnection.DeleteExistingOverwrite(channel.Id, overwriteName.Id); Guilds.First(g => g.Id == guildId) .Channels.First(c => c.Id == channel.Id) .Overwrites.RemoveAll(o => o.Id == overwriteName.Id); }
public async Task AddOverwrite( ulong guildId, DiscordChannel channel, DiscordNamedObject overwriteName, bool isRole) { await DSharpPlusConnection.AddNewOverwrite(guildId, channel.Id, overwriteName.Id, isRole); Guilds.First(g => g.Id == guildId) .Channels.First(c => c.Id == channel.Id) .Overwrites.Add(new DiscordOverwrite(overwriteName.Id, isRole, channel.Type)); }
private void CreateOverwriteGridPermissionToggle( DiscordNamedObject overwriteName, DiscordChannel channel, DiscordPermission permission, int row, int col, bool canManage = false) { var rightBorderThickness = permission == DiscordPermission.CreateInvite || permission == DiscordPermission.AddReactions || permission == DiscordPermission.PrioritySpeaker ? 1 : 0; var border = new Border { BorderThickness = new Thickness(0, 0, rightBorderThickness, 1), BorderBrush = new SolidColorBrush(Colors.Black) }; border.IsEnabled = canManage; if (!border.IsEnabled) { border.Background = new SolidColorBrush(Colors.LightGray); } var channelOverwrite = channel.Overwrites.FirstOrDefault(o => o.Id == overwriteName.Id); if (channelOverwrite is not null && channelOverwrite.Permission.TryGetValue(permission, out bool?permissionValue)) { var btn = new ToggleButton { IsChecked = permissionValue, Height = 25, Width = 25, Style = (Style)this.FindResource("PermissionToggleButton"), IsThreeState = true }; btn.Click += this.PermissionToggleButton_Click; border.Child = btn; } Grid.SetColumn(border, col); Grid.SetRow(border, row); OverwriteGrid.Children.Add(border); }