diff options
-rw-r--r-- | wpspec/wpspec/AboutPage.xaml | 52 | ||||
-rw-r--r-- | wpspec/wpspec/AboutPage.xaml.cs | 23 | ||||
-rw-r--r-- | wpspec/wpspec/MainPage.xaml.cs | 4 | ||||
-rw-r--r-- | wpspec/wpspec/Resources/Strings.Designer.cs | 20 | ||||
-rw-r--r-- | wpspec/wpspec/Resources/Strings.resx | 6 | ||||
-rw-r--r-- | wpspec/wpspec/Settings.cs | 96 | ||||
-rw-r--r-- | wpspec/wpspec/SettingsPage.xaml | 55 | ||||
-rw-r--r-- | wpspec/wpspec/SettingsPage.xaml.cs | 36 | ||||
-rw-r--r-- | wpspec/wpspec/wpspec.csproj | 14 |
9 files changed, 300 insertions, 6 deletions
diff --git a/wpspec/wpspec/AboutPage.xaml b/wpspec/wpspec/AboutPage.xaml new file mode 100644 index 0000000..38ac6a8 --- /dev/null +++ b/wpspec/wpspec/AboutPage.xaml @@ -0,0 +1,52 @@ +<phone:PhoneApplicationPage
+ x:Class="wpspec.AboutPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+ xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:res="clr-namespace:wpspec.Resources"
+ FontFamily="{StaticResource PhoneFontFamilyNormal}"
+ FontSize="{StaticResource PhoneFontSizeNormal}"
+ Foreground="{StaticResource PhoneForegroundBrush}"
+ SupportedOrientations="Portrait" Orientation="Portrait"
+ mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
+ shell:SystemTray.IsVisible="True">
+
+ <phone:PhoneApplicationPage.Resources>
+ <res:Strings x:Key="Strings" />
+ </phone:PhoneApplicationPage.Resources>
+
+ <!--LayoutRoot is the root grid where all page content is placed-->
+ <Grid x:Name="LayoutRoot" Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+
+ <!--ContentPanel - place additional content here-->
+ <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ </Grid.RowDefinitions>
+ <TextBlock TextWrapping="Wrap" TextAlignment="Left" Grid.Row="0"
+ Style="{StaticResource PhoneTextNormalStyle}" Foreground="White" Margin="2,2,2,2"
+ Text="{Binding CopyrightText, Source={StaticResource Strings}}" />
+ <HyperlinkButton Content="{Binding LicenseHyperlinkText, Source={StaticResource Strings}}"
+ TargetName="_blank" Grid.Row="1"
+ Margin="2,5,2,2"
+ NavigateUri="{Binding LicenseHyperlinkUri, Source={StaticResource Strings}}" />
+ <HyperlinkButton Content="{Binding SourceHyperlinkText, Source={StaticResource Strings}}"
+ Margin="2,5,2,2"
+ TargetName="_blank" Grid.Row="2"
+ NavigateUri="{Binding SourceHyperlinkUri, Source={StaticResource Strings}}" />
+ <TextBlock TextWrapping="Wrap" TextAlignment="Left" Grid.Row="3"
+ FontSize="24" Foreground="Red" Margin="2,2,2,2"
+ Text="{Binding ROMCopyrightText, Source={StaticResource Strings}}" />
+ </Grid>
+ </Grid>
+</phone:PhoneApplicationPage>
diff --git a/wpspec/wpspec/AboutPage.xaml.cs b/wpspec/wpspec/AboutPage.xaml.cs new file mode 100644 index 0000000..ec8799d --- /dev/null +++ b/wpspec/wpspec/AboutPage.xaml.cs @@ -0,0 +1,23 @@ +using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using Microsoft.Phone.Controls;
+
+namespace wpspec
+{
+ public partial class AboutPage : PhoneApplicationPage
+ {
+ public AboutPage()
+ {
+ InitializeComponent();
+ }
+ }
+}
\ No newline at end of file diff --git a/wpspec/wpspec/MainPage.xaml.cs b/wpspec/wpspec/MainPage.xaml.cs index 4744469..26230f2 100644 --- a/wpspec/wpspec/MainPage.xaml.cs +++ b/wpspec/wpspec/MainPage.xaml.cs @@ -23,7 +23,7 @@ namespace wpspec private void SettingsClick(object sender, RoutedEventArgs e)
{
- NavigationService.Navigate(new Uri("/Settings.xaml", UriKind.Relative));
+ NavigationService.Navigate(new Uri("/SettingsPage.xaml", UriKind.Relative));
}
private void RunEmulationClick(object sender, RoutedEventArgs e)
@@ -33,7 +33,7 @@ namespace wpspec private void AboutClick(object sender, RoutedEventArgs e)
{
- NavigationService.Navigate(new Uri("/About.xaml", UriKind.Relative));
+ NavigationService.Navigate(new Uri("/AboutPage.xaml", UriKind.Relative));
}
}
}
\ No newline at end of file diff --git a/wpspec/wpspec/Resources/Strings.Designer.cs b/wpspec/wpspec/Resources/Strings.Designer.cs index 80d881b..36310a1 100644 --- a/wpspec/wpspec/Resources/Strings.Designer.cs +++ b/wpspec/wpspec/Resources/Strings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
-// Runtime Version:4.0.30319.239
+// Runtime Version:4.0.30319.261
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -164,6 +164,24 @@ namespace wpspec.Resources { }
/// <summary>
+ /// Looks up a localized string similar to Sound.
+ /// </summary>
+ public static string SettingsSoundText {
+ get {
+ return ResourceManager.GetString("SettingsSoundText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Base URL for loading tapes.
+ /// </summary>
+ public static string SettingsTapeUrlText {
+ get {
+ return ResourceManager.GetString("SettingsTapeUrlText", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to See Source Code Online.
/// </summary>
public static string SourceHyperlinkText {
diff --git a/wpspec/wpspec/Resources/Strings.resx b/wpspec/wpspec/Resources/Strings.resx index 47a8b08..edb24a0 100644 --- a/wpspec/wpspec/Resources/Strings.resx +++ b/wpspec/wpspec/Resources/Strings.resx @@ -154,6 +154,12 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY <data name="SettingsPageTitle" xml:space="preserve">
<value>Settings</value>
</data>
+ <data name="SettingsSoundText" xml:space="preserve">
+ <value>Sound</value>
+ </data>
+ <data name="SettingsTapeUrlText" xml:space="preserve">
+ <value>Base URL for loading tapes</value>
+ </data>
<data name="SourceHyperlinkText" xml:space="preserve">
<value>See Source Code Online</value>
</data>
diff --git a/wpspec/wpspec/Settings.cs b/wpspec/wpspec/Settings.cs new file mode 100644 index 0000000..333df0b --- /dev/null +++ b/wpspec/wpspec/Settings.cs @@ -0,0 +1,96 @@ +using System;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using System.IO.IsolatedStorage;
+using System.Collections.Generic;
+
+namespace wpspec
+{
+ /// <summary>
+ /// Holds global settings
+ /// </summary>
+ public class Settings
+ {
+ /// <summary>
+ /// Get the singleton instance for the settings.
+ /// </summary>
+ public static Settings Get
+ {
+ get {return settings;}
+ }
+
+ /// <summary>
+ /// Get/set whether sound is enabled.
+ /// </summary>
+ public bool Sound
+ {
+ get {return sound;}
+ set
+ {
+ if (sound != value)
+ {
+ sound = value;
+ Save("sound", sound);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Get/set URL to load tapes from.
+ /// </summary>
+ public string TapeUrl
+ {
+ get {return tapeUrl;}
+ set
+ {
+ if (tapeUrl != value)
+ {
+ tapeUrl = value;
+ Save("tapeurl", tapeUrl);
+ }
+ }
+ }
+
+
+ #region Private code
+
+ private static readonly Settings settings = new Settings();
+
+ private bool sound;
+ private string tapeUrl;
+
+ private Settings()
+ {
+ sound = Load("sound", true);
+ tapeUrl = Load("tapeurl", "http://enter-a-url.here/");
+ }
+
+ private T Load<T>(string name, T defaultValue)
+ {
+ try
+ {
+ return (T)IsolatedStorageSettings.ApplicationSettings[name];
+ }
+ catch (KeyNotFoundException)
+ {
+ }
+
+ return defaultValue;
+ }
+
+ private void Save<T>(string name, T value)
+ {
+ IsolatedStorageSettings.ApplicationSettings.Add(name, value);
+ IsolatedStorageSettings.ApplicationSettings.Save();
+ }
+
+ #endregion
+ }
+}
diff --git a/wpspec/wpspec/SettingsPage.xaml b/wpspec/wpspec/SettingsPage.xaml new file mode 100644 index 0000000..296efa3 --- /dev/null +++ b/wpspec/wpspec/SettingsPage.xaml @@ -0,0 +1,55 @@ +<phone:PhoneApplicationPage
+ x:Class="wpspec.SettingsPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+ xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:res="clr-namespace:wpspec.Resources"
+ FontFamily="{StaticResource PhoneFontFamilyNormal}"
+ FontSize="{StaticResource PhoneFontSizeNormal}"
+ Foreground="{StaticResource PhoneForegroundBrush}"
+ SupportedOrientations="Portrait" Orientation="Portrait"
+ mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
+ shell:SystemTray.IsVisible="True">
+
+ <phone:PhoneApplicationPage.Resources>
+ <res:Strings x:Key="Strings" />
+ </phone:PhoneApplicationPage.Resources>
+
+ <!--LayoutRoot is the root grid where all page content is placed-->
+ <Grid x:Name="LayoutRoot" Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+
+ <!--TitlePanel contains the name of the application and page title-->
+ <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
+ <TextBlock x:Name="ApplicationTitle"
+ Text="{Binding AppTitle, Source={StaticResource Strings}}"
+ Style="{StaticResource PhoneTextNormalStyle}"/>
+ <TextBlock x:Name="PageTitle"
+ Text="{Binding SettingsPageTitle, Source={StaticResource Strings}}"
+ Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
+ </StackPanel>
+
+ <!--ContentPanel - place additional content here-->
+ <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <CheckBox IsChecked="{Binding SoundSetting, Mode=TwoWay}"
+ Content="{Binding SettingsSoundText, Source={StaticResource Strings}}"
+ Grid.Row="0" />
+ <TextBlock Text="{Binding SettingsTapeUrlText, Source={StaticResource Strings}}"
+ Grid.Row="1" />
+ <TextBox Text="{Binding TapeUrlSetting, Mode=TwoWay}"
+ Grid.Row="2" />
+ </Grid>
+ </Grid>
+</phone:PhoneApplicationPage>
diff --git a/wpspec/wpspec/SettingsPage.xaml.cs b/wpspec/wpspec/SettingsPage.xaml.cs new file mode 100644 index 0000000..02ac7d6 --- /dev/null +++ b/wpspec/wpspec/SettingsPage.xaml.cs @@ -0,0 +1,36 @@ +using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using Microsoft.Phone.Controls;
+
+namespace wpspec
+{
+ public partial class SettingsPage : PhoneApplicationPage
+ {
+ public SettingsPage()
+ {
+ InitializeComponent();
+ ContentPanel.DataContext = this;
+ }
+
+ public bool SoundSetting
+ {
+ get {return Settings.Get.Sound;}
+ set {Settings.Get.Sound = value;}
+ }
+
+ public string TapeUrlSetting
+ {
+ get {return Settings.Get.TapeUrl;}
+ set {Settings.Get.TapeUrl = value;}
+ }
+ }
+}
\ No newline at end of file diff --git a/wpspec/wpspec/wpspec.csproj b/wpspec/wpspec/wpspec.csproj index cf676ca..48a0c19 100644 --- a/wpspec/wpspec/wpspec.csproj +++ b/wpspec/wpspec/wpspec.csproj @@ -63,8 +63,8 @@ <Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
- <Compile Include="About.xaml.cs">
- <DependentUpon>About.xaml</DependentUpon>
+ <Compile Include="AboutPage.xaml.cs">
+ <DependentUpon>AboutPage.xaml</DependentUpon>
</Compile>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
@@ -84,13 +84,17 @@ <DesignTime>True</DesignTime>
<DependentUpon>Strings.resx</DependentUpon>
</Compile>
+ <Compile Include="Settings.cs" />
+ <Compile Include="SettingsPage.xaml.cs">
+ <DependentUpon>SettingsPage.xaml</DependentUpon>
+ </Compile>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
- <Page Include="About.xaml">
+ <Page Include="AboutPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
@@ -102,6 +106,10 @@ <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="SettingsPage.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
</ItemGroup>
<ItemGroup>
<None Include="Properties\AppManifest.xml" />
|