Commit 859fb3ea authored by Sylvain Berfini's avatar Sylvain Berfini

Improved settings views + moved debug settings to advanced settings view +...

Improved settings views + moved debug settings to advanced settings view + improved debug settings allowing to choose in the app the output for the logs
parent 397203f9
......@@ -11,14 +11,19 @@ namespace Linphone.Agents
/// </summary>
public class Customs
{
public static bool IsTunnelEnabled = false;
public static bool AddPasswordInContactsParams = false;
public static bool UseCustomIncomingCallView = false;
public static string PictureUploadScriptURL = "https://linphone.org:444/upload.php";
public static string UserAgent = "LinphoneWP8";
public static bool EnableG729 = false;
public static bool EnableVideo = false;
public const bool IsTunnelEnabled = false;
public const bool AddPasswordInContactsParams = false;
public const bool UseCustomIncomingCallView = false;
public const string PictureUploadScriptURL = "https://linphone.org:444/upload.php";
public const string UserAgent = "LinphoneWP8";
public const bool EnableG729 = false;
public const bool EnableVideo = false;
#if DEBUG
public const bool AllowTCPRemote = true; // Do not enable this for releases !!!
#else
public const bool AllowTCPRemote = false; // Do not enable this for releases !!!
#endif
internal static bool DeclineCallWithBusyReason = false;
internal const bool DeclineCallWithBusyReason = false;
}
}
......@@ -160,6 +160,7 @@ namespace Linphone.Model
/// </summary>
public class ApplicationSettingsManager : SettingsManager, ISettingsManager
{
internal const String LinphoneLogFileName = "Linphone.log";
private LpConfig Config;
#region Constants settings names
......@@ -191,7 +192,7 @@ namespace Linphone.Model
{
dict[LogLevelKeyName] = Config.GetInt(ApplicationSection, LogLevelKeyName, (int)OutputTraceLevel.None).ToString();
dict[LogDestinationKeyName] = Config.GetString(ApplicationSection, LogDestinationKeyName, OutputTraceDest.File.ToString());
dict[LogOptionKeyName] = Config.GetString(ApplicationSection, LogOptionKeyName, "Linphone.log");
dict[LogOptionKeyName] = Config.GetString(ApplicationSection, LogOptionKeyName, LinphoneLogFileName);
}
/// <summary>
......@@ -199,7 +200,22 @@ namespace Linphone.Model
/// </summary>
public async void Save()
{
if (ValueChanged(LogLevelKeyName))
if (ValueChanged(LogDestinationKeyName) || ValueChanged(LogOptionKeyName))
{
var logsDestination = GetNew(LogDestinationKeyName);
Config.SetString(ApplicationSection, LogDestinationKeyName, logsDestination);
if (OutputTraceDest.File.ToString().Equals(logsDestination))
{
Config.SetString(ApplicationSection, LogOptionKeyName, LinphoneLogFileName);
}
else if (OutputTraceDest.TCPRemote.ToString().Equals(logsDestination))
{
Config.SetString(ApplicationSection, LogOptionKeyName, GetNew(LogOptionKeyName));
}
LinphoneManager.Instance.ConfigureLogger();
}
else if (ValueChanged(LogLevelKeyName))
{
try
{
......
......@@ -366,6 +366,15 @@ namespace Linphone.Resources {
/// <summary>
/// Looks up a localized string similar to Debug.
/// </summary>
public static string DebugMenu {
get {
return ResourceManager.GetString("DebugMenu", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Logs destination.
/// </summary>
public static string DebugSetting {
get {
return ResourceManager.GetString("DebugSetting", resourceCulture);
......@@ -1201,6 +1210,15 @@ namespace Linphone.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to TCPRemote ip:port.
/// </summary>
public static string TCPRemote {
get {
return ResourceManager.GetString("TCPRemote", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to To:.
/// </summary>
......
......@@ -135,7 +135,7 @@
<value>Cancel</value>
</data>
<data name="DebugSetting" xml:space="preserve">
<value>Debug</value>
<value>Logs destination</value>
</data>
<data name="DeleteAllMenu" xml:space="preserve">
<value>Delete All</value>
......@@ -567,4 +567,10 @@ Do you want to report it to the developpers ? It will help fix it faster.</value
<data name="DisconnectMenu" xml:space="preserve">
<value>Disable register</value>
</data>
<data name="DebugMenu" xml:space="preserve">
<value>Debug</value>
</data>
<data name="TCPRemote" xml:space="preserve">
<value>TCPRemote ip:port</value>
</data>
</root>
\ No newline at end of file
......@@ -41,9 +41,9 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Grid.Row="0">
<StackPanel Orientation="Vertical" Grid.Row="0" Margin="0,10,0,0">
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.SIPUsername, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<TextBox
......@@ -57,9 +57,9 @@
</TextBox>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1">
<StackPanel Orientation="Vertical" Grid.Row="1" Margin="0,10,0,0">
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.SIPUserId, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<TextBox
......@@ -75,7 +75,7 @@
<StackPanel Orientation="Vertical" Grid.Row="2" Margin="0,10,0,0">
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.SIPPassword, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<PasswordBox
......@@ -86,7 +86,7 @@
<StackPanel Orientation="Vertical" Grid.Row="3" Margin="0,10,0,0">
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.SIPDomain, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<TextBox
......@@ -102,7 +102,7 @@
<StackPanel Orientation="Vertical" Grid.Row="4" Margin="0,10,0,0">
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.SIPProxy, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<TextBox
......@@ -120,7 +120,7 @@
<StackPanel Orientation="Vertical" Grid.Row="6" Margin="0,10,0,0">
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.DisplayName, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<TextBox
......
......@@ -24,17 +24,19 @@
<StackPanel Orientation="Vertical">
<toolkit:ListPicker
x:Name="Transport"
SelectionMode="Single"
Header="{Binding Path=LocalizedResources.TransportSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ListPicker>
<toolkit:ListPicker
x:Name="FirewallPolicy"
SelectionMode="Single"
Header="{Binding Path=LocalizedResources.FirewallPolicySetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ListPicker>
<StackPanel Orientation="Vertical">
<TextBlock
Margin="12,20,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.StunServer, Source={StaticResource LocalizedStrings}}" />
<TextBox
......@@ -52,13 +54,13 @@
<StackPanel x:Name="TunnelPanel" Orientation="Vertical">
<toolkit:ListPicker
Margin="12,20,0,0"
x:Name="tunnelMode"
SelectionMode="Single"
Header="{Binding Path=LocalizedResources.TunnelMode, Source={StaticResource LocalizedStrings}}">
</toolkit:ListPicker>
<TextBlock
Margin="12,20,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.TunnelServer, Source={StaticResource LocalizedStrings}}" />
<TextBox
......@@ -73,7 +75,7 @@
</TextBox>
<TextBlock
Margin="12,0,0,0"
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.TunnelPort, Source={StaticResource LocalizedStrings}}" />
<TextBox
......@@ -118,6 +120,60 @@
</toolkit:ToggleSwitch>
</StackPanel>
</phone:PivotItem>
<!--Pivot item Debug-->
<phone:PivotItem Header="{Binding Path=LocalizedResources.DebugMenu, Source={StaticResource LocalizedStrings}}">
<StackPanel Orientation="Vertical">
<toolkit:ListPicker
x:Name="Debug"
SelectionChanged="Debug_SelectionChanged"
SelectionMode="Single"
Header="{Binding Path=LocalizedResources.DebugSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ListPicker>
<StackPanel Orientation="Vertical" x:Name="TCPRemoteOptions" Visibility="Collapsed">
<StackPanel.Resources>
<Storyboard x:Name="FadeOut">
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="TCPRemoteOptions">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Name="FadeIn">
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="TCPRemoteOptions">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</StackPanel.Resources>
<TextBlock
Style="{StaticResource PhoneTextSubtleStyle}"
Text="{Binding Path=LocalizedResources.TCPRemote, Source={StaticResource LocalizedStrings}}">
</TextBlock>
<TextBox
x:Name="TCPRemote">
<TextBox.InputScope>
<InputScope>
<InputScopeName NameValue="Formula" />
</InputScope>
</TextBox.InputScope>
</TextBox>
</StackPanel>
<Button
x:Name="DeleteLogs"
Click="deleteLogs_Click_1"
Content="{Binding Path=LocalizedResources.DeleteLogs, Source={StaticResource LocalizedStrings}}" />
</StackPanel>
</phone:PivotItem>
</phone:Pivot>
</Grid>
......
......@@ -6,6 +6,7 @@ using System.Windows;
using System.Collections.Generic;
using System.Windows.Navigation;
using Linphone.Agents;
using Linphone.Core;
namespace Linphone.Views
{
......@@ -17,6 +18,7 @@ namespace Linphone.Views
private CallSettingsManager _callSettings = new CallSettingsManager();
private NetworkSettingsManager _networkSettings = new NetworkSettingsManager();
private ChatSettingsManager _chatSettings = new ChatSettingsManager();
private ApplicationSettingsManager _settings = new ApplicationSettingsManager();
/// <summary>
/// Public constructor.
......@@ -29,6 +31,8 @@ namespace Linphone.Views
_callSettings.Load();
_networkSettings.Load();
_chatSettings.Load();
_settings.Load();
rfc2833.IsChecked = _callSettings.SendDTFMsRFC2833;
sipInfo.IsChecked = _callSettings.SendDTFMsSIPInfo;
vibrator.IsChecked = _chatSettings.VibrateOnIncomingMessage;
......@@ -67,6 +71,26 @@ namespace Linphone.Views
Transport.SelectedItem = _networkSettings.Transport;
TunnelPanel.Visibility = LinphoneManager.Instance.LinphoneCore.IsTunnelAvailable() && Customs.IsTunnelEnabled ? Visibility.Visible : Visibility.Collapsed; //Hidden properties for now
List<string> debugModes = new List<string>
{
OutputTraceDest.None.ToString(),
OutputTraceDest.File.ToString(),
OutputTraceDest.Debugger.ToString()
};
if (Customs.AllowTCPRemote)
debugModes.Add(OutputTraceDest.TCPRemote.ToString());
Debug.ItemsSource = debugModes;
TCPRemote.Text = _settings.LogOption.Equals(ApplicationSettingsManager.LinphoneLogFileName) ? "" : _settings.LogOption;
Debug.SelectedItem = _settings.LogDestination.ToString();
}
private void Debug_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (e.AddedItems.Contains(OutputTraceDest.TCPRemote.ToString()))
FadeIn.Begin();
else
FadeOut.Begin();
}
/// <summary>
......@@ -77,6 +101,8 @@ namespace Linphone.Views
base.OnNavigatedTo(e);
// Create LinphoneCore if not created yet, otherwise do nothing
await LinphoneManager.Instance.InitLinphoneCore();
DeleteLogs.IsEnabled = BugCollector.HasLinphoneLogFile();
}
private void cancel_Click_1(object sender, EventArgs e)
......@@ -102,9 +128,29 @@ namespace Linphone.Views
_chatSettings.ScaleDownSentPictures = resizeDown.IsChecked;
_chatSettings.Save();
OutputTraceDest debugMode = OutputTraceDest.None;
if (Debug.SelectedItem.Equals(OutputTraceDest.File.ToString()))
debugMode = OutputTraceDest.File;
else if (Debug.SelectedItem.Equals(OutputTraceDest.Debugger.ToString()))
debugMode = OutputTraceDest.Debugger;
else if (Debug.SelectedItem.Equals(OutputTraceDest.TCPRemote.ToString()))
debugMode = OutputTraceDest.TCPRemote;
_settings.LogDestination = debugMode;
if (debugMode == OutputTraceDest.TCPRemote)
_settings.LogOption = TCPRemote.Text;
_settings.DebugEnabled = debugMode != OutputTraceDest.None;
_settings.Save();
NavigationService.GoBack();
}
private void deleteLogs_Click_1(object sender, EventArgs e)
{
BugCollector.DeleteLinphoneLogFile();
DeleteLogs.IsEnabled = false;
}
private void BuildLocalizedApplicationBar()
{
ApplicationBar = new ApplicationBar();
......
......@@ -31,64 +31,37 @@
<!--ContentPanel - place additional content here-->
<ScrollViewer x:Name="ContentPanel" Grid.Row="1">
<Grid Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<toolkit:ToggleSwitch
Grid.Row="0"
x:Name="Debug"
Header="{Binding Path=LocalizedResources.DebugSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<Button
Grid.Row="1"
x:Name="DeleteLogs"
Click="deleteLogs_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.DeleteLogs, Source={StaticResource LocalizedStrings}}" />
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Button
x:Name="Account"
Click="account_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.AccountMenu, Source={StaticResource LocalizedStrings}}" />
<Button
Grid.Row="2"
x:Name="Account"
Click="account_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.AccountMenu, Source={StaticResource LocalizedStrings}}" />
<Button
x:Name="Audio"
Click="audio_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.AudioSettingsMenu, Source={StaticResource LocalizedStrings}}" />
<Button
Grid.Row="3"
x:Name="Audio"
Click="audio_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.AudioSettingsMenu, Source={StaticResource LocalizedStrings}}" />
<Button
x:Name="Video"
Click="video_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.VideoSettingsMenu, Source={StaticResource LocalizedStrings}}" />
<Button
Grid.Row="4"
x:Name="Video"
Click="video_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.VideoSettingsMenu, Source={StaticResource LocalizedStrings}}" />
<Button
Grid.Row="5"
x:Name="Advanced"
Click="advanced_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.AdvancedSettingsMenu, Source={StaticResource LocalizedStrings}}" />
<Button
Grid.Row="6"
Click="LockScreenSettings_Click_1"
x:Name="LockScreenSettings"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.LockScreenSettings, Source={StaticResource LocalizedStrings}}" />
<Button
x:Name="Advanced"
Click="advanced_Click_1"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.AdvancedSettingsMenu, Source={StaticResource LocalizedStrings}}" />
<Button
Click="LockScreenSettings_Click_1"
x:Name="LockScreenSettings"
Margin="0,0,0,20"
Content="{Binding Path=LocalizedResources.LockScreenSettings, Source={StaticResource LocalizedStrings}}" />
</StackPanel>
</Grid>
</ScrollViewer>
</Grid>
......
......@@ -13,17 +13,12 @@ namespace Linphone.Views
/// </summary>
public partial class Settings : BasePage
{
private ApplicationSettingsManager _settings = new ApplicationSettingsManager();
/// <summary>
/// Public constructor.
/// </summary>
public Settings()
{
InitializeComponent();
BuildLocalizedApplicationBar();
_settings.Load();
Debug.IsChecked = _settings.DebugEnabled;
Video.Visibility = Customs.EnableVideo ? Visibility.Visible : Visibility.Collapsed;
}
......@@ -36,30 +31,6 @@ namespace Linphone.Views
// Create LinphoneCore if not created yet, otherwise do nothing
await LinphoneManager.Instance.InitLinphoneCore();
DeleteLogs.IsEnabled = BugCollector.HasLinphoneLogFile();
}
private void cancel_Click_1(object sender, EventArgs e)
{
NavigationService.GoBack();
}
private void deleteLogs_Click_1(object sender, EventArgs e)
{
BugCollector.DeleteLinphoneLogFile();
DeleteLogs.IsEnabled = false;
}
private void save_Click_1(object sender, EventArgs e)
{
bool? enabled = Debug.IsChecked;
if (!enabled.HasValue) enabled = false;
_settings.DebugEnabled = (bool)enabled;
_settings.Save();
NavigationService.GoBack();
}
private void account_Click_1(object sender, RoutedEventArgs e)
......@@ -82,79 +53,9 @@ namespace Linphone.Views
NavigationService.Navigate(new Uri("/Views/AdvancedSettings.xaml", UriKind.RelativeOrAbsolute));
}
private void BuildLocalizedApplicationBar()
{
ApplicationBar = new ApplicationBar();
ApplicationBarIconButton appBarSave = new ApplicationBarIconButton(new Uri("/Assets/AppBar/save.png", UriKind.Relative));
appBarSave.Text = AppResources.SaveSettings;
ApplicationBar.Buttons.Add(appBarSave);
appBarSave.Click += save_Click_1;
ApplicationBarIconButton appBarCancel = new ApplicationBarIconButton(new Uri("/Assets/AppBar/cancel.png", UriKind.Relative));
appBarCancel.Text = AppResources.CancelChanges;
ApplicationBar.Buttons.Add(appBarCancel);
appBarCancel.Click += cancel_Click_1;
}
private async void LockScreenSettings_Click_1(object sender, RoutedEventArgs e)
{
var op = await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));
}
#region Simulate Incoming Call, to remove
//private void Simulate_Click_1(object sender, RoutedEventArgs e)
//{
// try
// {
// // Create an HTTPWebRequest that posts the raw notification to the Microsoft Push Notification Service.
// HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(((App)App.Current).PushChannelUri);
// sendNotificationRequest.Method = "POST";
// string rawMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
// "<IncomingCall>" +
// "<Name>" + "Belledonne Comm." + "</Name>" +
// "<Number>" + "+33952636505" + "</Number>" +
// "</IncomingCall>";
// byte[] notificationMessage = Encoding.UTF8.GetBytes(rawMessage);
// sendNotificationRequest.ContentLength = notificationMessage.Length;
// sendNotificationRequest.ContentType = "text/xml";
// sendNotificationRequest.Headers["X-NotificationClass"] = "4";
// // 4 is the type of VoIP PNs
// sendNotificationRequest.BeginGetRequestStream((IAsyncResult arRequest) =>
// {
// try
// {
// using (Stream requestStream = sendNotificationRequest.EndGetRequestStream(arRequest))
// {
// requestStream.Write(notificationMessage, 0, notificationMessage.Length);
// }
// sendNotificationRequest.BeginGetResponse((IAsyncResult arResponse) =>
// {
// try
// {
// HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.EndGetResponse(arResponse);
// string notificationStatus = response.Headers["X-NotificationStatus"];
// string subscriptionStatus = response.Headers["X-SubscriptionStatus"];
// string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"];
// }
// catch (Exception)
// {
// }
// }, null);
// }
// catch (Exception)
// {
// }
// }, null);
// }
// catch (Exception)
// {
// }
//}
#endregion
}
}
\ No newline at end of file
......@@ -21,36 +21,27 @@
<phone:Pivot Title="{Binding Path=LocalizedResources.VideoSettingsMenu, Source={StaticResource LocalizedStrings}}">
<phone:PivotItem Header="{Binding Path=LocalizedResources.OptionsMenu, Source={StaticResource LocalizedStrings}}">
<Grid Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical">
<toolkit:ToggleSwitch
x:Name="VideoEnabled"
Header="{Binding Path=LocalizedResources.VideoEnabledSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
Grid.Row="0"
x:Name="VideoEnabled"
Header="{Binding Path=LocalizedResources.VideoEnabledSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
x:Name="AutomaticallyInitiateVideo"
Header="{Binding Path=LocalizedResources.AutomaticallyInitiateVideoSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
Grid.Row="1"
x:Name="AutomaticallyInitiateVideo"
Header="{Binding Path=LocalizedResources.AutomaticallyInitiateVideoSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
x:Name="AutomaticallyAcceptVideo"
Header="{Binding Path=LocalizedResources.AutomaticallyAcceptVideoSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
Grid.Row="2"
x:Name="AutomaticallyAcceptVideo"
Header="{Binding Path=LocalizedResources.AutomaticallyAcceptVideoSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
Grid.Row="3"
x:Name="SelfViewEnabled"
Header="{Binding Path=LocalizedResources.SelfViewEnabledSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
<toolkit:ToggleSwitch
x:Name="SelfViewEnabled"
Header="{Binding Path=LocalizedResources.SelfViewEnabledSetting, Source={StaticResource LocalizedStrings}}">
</toolkit:ToggleSwitch>
</StackPanel>
</Grid>
</phone:PivotItem>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment