summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan C <ianc@noddybox.co.uk>2012-02-18 17:38:37 +0000
committerIan C <ianc@noddybox.co.uk>2012-02-18 17:38:37 +0000
commit3a635c8354c40efd7426fbc3ac2c73752dd50ff3 (patch)
tree4ab00ce5d7303e9d66ed8655c83a2cc97f96bf06
parent0ad69f39201e8420a826ad314962eabb4b7577b7 (diff)
Added simple config settings
-rw-r--r--wpspec/wpspec/AboutPage.xaml52
-rw-r--r--wpspec/wpspec/AboutPage.xaml.cs23
-rw-r--r--wpspec/wpspec/MainPage.xaml.cs4
-rw-r--r--wpspec/wpspec/Resources/Strings.Designer.cs20
-rw-r--r--wpspec/wpspec/Resources/Strings.resx6
-rw-r--r--wpspec/wpspec/Settings.cs96
-rw-r--r--wpspec/wpspec/SettingsPage.xaml55
-rw-r--r--wpspec/wpspec/SettingsPage.xaml.cs36
-rw-r--r--wpspec/wpspec/wpspec.csproj14
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" />