public override bool IsResolvedBy(Question Question) { if (Question is CanControlQuestion CanControlQuestion) { if (this.JID != CanControlQuestion.JID) { return(false); } switch (this.range) { case OperationRange.Caller: return(this.RemoteJID == CanControlQuestion.RemoteJID); case OperationRange.Domain: return(IsFriendQuestion.GetDomain(this.RemoteJID) == IsFriendQuestion.GetDomain(CanControlQuestion.RemoteJID)); case OperationRange.All: return(true); case OperationRange.ServiceToken: return(CanReadQuestion.MatchesToken(this.parameter, CanControlQuestion.ServiceTokens)); case OperationRange.DeviceToken: return(CanReadQuestion.MatchesToken(this.parameter, CanControlQuestion.DeviceTokens)); case OperationRange.UserToken: return(CanReadQuestion.MatchesToken(this.parameter, CanControlQuestion.UserTokens)); default: return(false); } } else { return(false); } }
public override void PopulateDetailsDialog(QuestionView QuestionView, ProvisioningClient ProvisioningClient) { StackPanel Details = QuestionView.Details; TextBlock TextBlock; ListBox ListBox; Button Button; this.client = ProvisioningClient; this.questionView = QuestionView; Details.Children.Add(new TextBlock() { FontSize = 18, FontWeight = FontWeights.Bold, Text = "Allowed to control?" }); Details.Children.Add(TextBlock = new TextBlock() { TextWrapping = TextWrapping.Wrap, Margin = new Thickness(0, 6, 0, 6) }); TextBlock.Inlines.Add("Device: "); this.AddJidName(this.JID, ProvisioningClient, TextBlock); this.AddNodeInfo(Details); Details.Children.Add(TextBlock = new TextBlock() { TextWrapping = TextWrapping.Wrap, Margin = new Thickness(0, 6, 0, 6) }); TextBlock.Inlines.Add("Caller: "); this.AddJidName(this.RemoteJID, ProvisioningClient, TextBlock); Details.Children.Add(new Label() { Content = "Parameter restriction:", Margin = new Thickness(0, 6, 0, 0) }); Details.Children.Add(ListBox = new ListBox() { MaxHeight = 150, SelectionMode = SelectionMode.Multiple, Margin = new Thickness(0, 0, 0, 6) }); this.parametersListBox = ListBox; if (this.availableParameterNames == null) { if (this.parameterNames != null) { foreach (string ParameterName in this.parameterNames) { ListBox.Items.Add(new ListBoxItem() { Content = ParameterName, IsSelected = true, Tag = ParameterName }); } } } else { foreach (string ParameterName in this.availableParameterNames) { ListBox.Items.Add(new ListBoxItem() { Content = ParameterName, IsSelected = (this.parameterNames == null || Array.IndexOf <string>(this.parameterNames, ParameterName) >= 0), Tag = ParameterName }); } } StackPanel StackPanel = CanReadQuestion.AddAllClearButtons(Details, ListBox); if (this.availableParameterNames == null) { StackPanel.Children.Add(Button = new Button() { Margin = new Thickness(6, 6, 6, 6), Padding = new Thickness(20, 0, 20, 0), Content = "Get List", Tag = ListBox }); Button.Click += GetListButton_Click; } Details.Children.Add(TextBlock = new TextBlock() { TextWrapping = TextWrapping.Wrap, Margin = new Thickness(0, 6, 0, 6), Text = "Is the caller allowed to control your device?" }); Details.Children.Add(Button = new Button() { Margin = new Thickness(0, 6, 0, 6), Content = "Yes" }); Button.Click += YesButton_Click; Details.Children.Add(Button = new Button() { Margin = new Thickness(0, 6, 0, 6), Content = "No" }); Button.Click += NoButton_Click; string s = this.RemoteJID; int i = s.IndexOf('@'); if (i >= 0) { s = s.Substring(i + 1); Details.Children.Add(Button = new Button() { Margin = new Thickness(0, 6, 0, 6), Content = "Yes, to anyone from " + s }); Button.Click += YesDomainButton_Click; Details.Children.Add(Button = new Button() { Margin = new Thickness(0, 6, 0, 6), Content = "No, to no one from " + s }); Button.Click += NoDomainButton_Click; } Details.Children.Add(Button = new Button() { Margin = new Thickness(0, 6, 0, 6), Content = "Yes, to anyone" }); Button.Click += YesAllButton_Click; Details.Children.Add(Button = new Button() { Margin = new Thickness(0, 6, 0, 6), Content = "No, to no one" }); Button.Click += NoAllButton_Click; this.AddTokens(Details, this.client, this.YesTokenButton_Click, this.NoTokenButton_Click); }