Initial commit

Adds the original codebase from around 2014-2016.
Some information have been removed, for example, the mail address
for feedback.

The Code sucks right now, a major refactoring is necessary. Also,
the target platform is still Silverlight and not WinRT, so the whole
app needs to be ported over at some point, so it can fully utilize
Windows Phone 8.1's features.
This commit is contained in:
Nic
2026-03-28 15:35:08 +01:00
commit be29dec7a5
58 changed files with 5026 additions and 0 deletions

472
.gitignore vendored Normal file
View File

@@ -0,0 +1,472 @@
# Created by https://www.toptal.com/developers/gitignore/api/windows,macos,visualstudio,visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=windows,macos,visualstudio,visualstudiocode
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
*.code-workspace
# Local History for Visual Studio Code
# Windows Installer files from build outputs
# JetBrains Rider
*.sln.iml
### VisualStudio Patch ###
# Additional files built by Visual Studio
# End of https://www.toptal.com/developers/gitignore/api/windows,macos,visualstudio,visualstudiocode

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"dotnet.preferCSharpExtension": true
}

38
Circle.sln Normal file
View File

@@ -0,0 +1,38 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Windows Phone
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circle", "Circle\Circle.csproj", "{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|ARM.ActiveCfg = Debug|ARM
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|ARM.Build.0 = Debug|ARM
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|ARM.Deploy.0 = Debug|ARM
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|x86.ActiveCfg = Debug|x86
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|x86.Build.0 = Debug|x86
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Debug|x86.Deploy.0 = Debug|x86
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|Any CPU.Build.0 = Release|Any CPU
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|Any CPU.Deploy.0 = Release|Any CPU
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|ARM.ActiveCfg = Release|ARM
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|ARM.Build.0 = Release|ARM
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|ARM.Deploy.0 = Release|ARM
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|x86.ActiveCfg = Release|x86
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|x86.Build.0 = Release|x86
{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}.Release|x86.Deploy.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

3
Circle/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"dotnet.preferCSharpExtension": true
}

35
Circle/App.xaml Normal file
View File

@@ -0,0 +1,35 @@
<Application
x:Class="Circle.App"
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">
<!-- Application Resources -->
<Application.Resources>
<local:LocalizedStrings xmlns:local="clr-namespace:Circle" x:Key="LocalizedStrings" />
<FontFamily x:Key="Rob">/Circle;component/Fonts/roboto-Thin.ttf#Roboto Thin</FontFamily>
<DataTemplate x:Key="smallPivot">
<ContentPresenter>
<TextBlock
Margin="0,30,0,10"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="28"
FontWeight="Light"
Foreground="White"
Text="{Binding}" />
</ContentPresenter>
</DataTemplate>
</Application.Resources>
<Application.ApplicationLifetimeObjects>
<!-- Required object that handles lifetime events for the application -->
<shell:PhoneApplicationService
Activated="Application_Activated"
Closing="Application_Closing"
Deactivated="Application_Deactivated"
Launching="Application_Launching" />
</Application.ApplicationLifetimeObjects>
</Application>

231
Circle/App.xaml.cs Normal file
View File

@@ -0,0 +1,231 @@
using Circle.Resources;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Markup;
using System.Windows.Navigation;
/*
* I wrote this code when I was 16(?) years old. It's bad and I'm gonna refactor it a lot.
*/
namespace Circle
{
public partial class App : Application
{
/// <summary>
/// Provides easy access to the root frame of the Phone Application.
/// </summary>
/// <returns>The root frame of the Phone Application.</returns>
public static PhoneApplicationFrame RootFrame { get; private set; }
/// <summary>
/// Constructor for the Application object.
/// </summary>
public App()
{
// Global handler for uncaught exceptions.
UnhandledException += Application_UnhandledException;
// Standard XAML initialization
InitializeComponent();
// Phone-specific initialization
InitializePhoneApplication();
// Language display initialization
InitializeLanguage();
// Show graphics profiling information while debugging.
if (Debugger.IsAttached)
{
// Display the current frame rate counters.
Application.Current.Host.Settings.EnableFrameRateCounter = false;
// Show the areas of the app that are being redrawn in each frame.
//Application.Current.Host.Settings.EnableRedrawRegions = true;
// Enable non-production analysis visualization mode,
// which shows areas of a page that are handed off to GPU with a colored overlay.
//Application.Current.Host.Settings.EnableCacheVisualization = true;
// Prevent the screen from turning off while under the debugger by disabling
// the application's idle detection.
// Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
// and consume battery power when the user is not using the phone.
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
}
}
// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
}
// Code to execute when the application is activated (brought to foreground)
// This code will not execute when the application is first launched
private void Application_Activated(object sender, ActivatedEventArgs e)
{
}
// Code to execute when the application is deactivated (sent to background)
// This code will not execute when the application is closing
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
}
// Code to execute when the application is closing (eg, user hit Back)
// This code will not execute when the application is deactivated
private void Application_Closing(object sender, ClosingEventArgs e)
{
}
// Code to execute if a navigation fails
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
{
if (Debugger.IsAttached)
{
// A navigation has failed; break into the debugger
Debugger.Break();
}
}
// Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
}
#region Phone application initialization
// Avoid double-initialization
private bool phoneApplicationInitialized = false;
// Do not add any additional code to this method
private void InitializePhoneApplication()
{
if (phoneApplicationInitialized)
return;
// Create the frame but don't set it as RootVisual yet; this allows the splash
// screen to remain active until the application is ready to render.
// RootFrame = new PhoneApplicationFrame();
RootFrame = new TransitionFrame();
RootFrame.Navigated += CompleteInitializePhoneApplication;
// Handle navigation failures
RootFrame.NavigationFailed += RootFrame_NavigationFailed;
// Handle reset requests for clearing the backstack
RootFrame.Navigated += CheckForResetNavigation;
// Ensure we don't initialize again
phoneApplicationInitialized = true;
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled; // remove this if app crashes
}
// Do not add any additional code to this method
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
{
// Set the root visual to allow the application to render
if (RootVisual != RootFrame)
RootVisual = RootFrame;
// Remove this handler since it is no longer needed
RootFrame.Navigated -= CompleteInitializePhoneApplication;
}
private void CheckForResetNavigation(object sender, NavigationEventArgs e)
{
// If the app has received a 'reset' navigation, then we need to check
// on the next navigation to see if the page stack should be reset
if (e.NavigationMode == NavigationMode.Reset)
RootFrame.Navigated += ClearBackStackAfterReset;
}
private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
{
// Unregister the event so it doesn't get called again
RootFrame.Navigated -= ClearBackStackAfterReset;
// Only clear the stack for 'new' (forward) and 'refresh' navigations
if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
return;
// For UI consistency, clear the entire page stack
while (RootFrame.RemoveBackEntry() != null)
{
; // do nothing
}
}
#endregion
// Initialize the app's font and flow direction as defined in its localized resource strings.
//
// To ensure that the font of your application is aligned with its supported languages and that the
// FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
// and ResourceFlowDirection should be initialized in each resx file to match these values with that
// file's culture. For example:
//
// AppResources.es-ES.resx
// ResourceLanguage's value should be "es-ES"
// ResourceFlowDirection's value should be "LeftToRight"
//
// AppResources.ar-SA.resx
// ResourceLanguage's value should be "ar-SA"
// ResourceFlowDirection's value should be "RightToLeft"
//
// For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
//
private void InitializeLanguage()
{
try
{
// Set the font to match the display language defined by the
// ResourceLanguage resource string for each supported language.
//
// Fall back to the font of the neutral language if the Display
// language of the phone is not supported.
//
// If a compiler error is hit then ResourceLanguage is missing from
// the resource file.
RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
// Set the FlowDirection of all elements under the root frame based
// on the ResourceFlowDirection resource string for each
// supported language.
//
// If a compiler error is hit then ResourceFlowDirection is missing from
// the resource file.
FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
RootFrame.FlowDirection = flow;
}
catch
{
// If an exception is caught here it is most likely due to either
// ResourceLangauge not being correctly set to a supported language
// code or ResourceFlowDirection is set to a value other than LeftToRight
// or RightToLeft.
if (Debugger.IsAttached)
{
Debugger.Break();
}
throw;
}
}
}
}

BIN
Circle/AppBarIcons/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

BIN
Circle/AppBarIcons/stop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
Circle/Assets/BadgeLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
Circle/Assets/StoreIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
Circle/Assets/StoreLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
Circle/Assets/WideLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Circle/Assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

237
Circle/Circle.csproj Normal file
View File

@@ -0,0 +1,237 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.20506</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6FF58E00-D9C8-42AB-BB25-9F71A1864F62}</ProjectGuid>
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Circle</RootNamespace>
<AssemblyName>Circle for Windows Phone</AssemblyName>
<TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v8.1</TargetFrameworkVersion>
<SilverlightVersion>
</SilverlightVersion>
<SilverlightApplication>true</SilverlightApplication>
<SupportedCultures>de%3bnl%3bfr%3bes%3bcs</SupportedCultures>
<XapOutputs>true</XapOutputs>
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
<XapFilename>Circle_$(Configuration)_$(Platform).xap</XapFilename>
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
<SilverlightAppEntry>Circle.App</SilverlightAppEntry>
<ValidateXaml>true</ValidateXaml>
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
<TargetFrameworkProfile />
<DefaultLanguage>de-DE</DefaultLanguage>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\x86\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\x86\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>Bin\ARM\Debug</OutputPath>
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>Bin\ARM\Release</OutputPath>
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget />
</PropertyGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="FirstStartPage.xaml.cs">
<DependentUpon>FirstStartPage.xaml</DependentUpon>
</Compile>
<Compile Include="Resources\AppResources.de.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>AppResources.de.resx</DependentUpon>
</Compile>
<Compile Include="Resources\AppResources.en.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>AppResources.en.resx</DependentUpon>
</Compile>
<Compile Include="LocalizedStrings.cs" />
<Compile Include="MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Resources\AppResources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>AppResources.resx</DependentUpon>
</Compile>
<Compile Include="TimeControl.xaml.cs">
<DependentUpon>TimeControl.xaml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
<Page Include="FirstStartPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="TimeControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Content Include="AppBarIcons\add.png" />
<Content Include="AppBarIcons\reset.png" />
<Content Include="AppBarIcons\start.png" />
<Content Include="AppBarIcons\stop.png" />
<Content Include="Assets\BadgeLogo.png" />
<Content Include="Assets\logo.png" />
<Content Include="Assets\SplashScreen.png" />
<Content Include="Assets\SquareTile150x150.png" />
<Content Include="Assets\SquareTile71x71.png" />
<Content Include="Assets\StoreLogo.png" />
<Content Include="Assets\WideLogo.png" />
<Content Include="circle_vcd.xml">
<SubType>Designer</SubType>
</Content>
<Content Include="Fonts\roboto-Light.ttf" />
<Content Include="Fonts\roboto-Thin.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Toolkit.Content\ApplicationBar.Add.png" />
<Content Include="Toolkit.Content\ApplicationBar.Cancel.png" />
<Content Include="Toolkit.Content\ApplicationBar.Check.png" />
<Content Include="Toolkit.Content\ApplicationBar.Delete.png" />
<Content Include="Toolkit.Content\ApplicationBar.Select.png" />
<None Include="Fonts\segmdl2.ttf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
<None Include="packages.config" />
<None Include="Properties\AppManifest.xml" />
<None Include="Properties\WMAppManifest.xml">
<SubType>Designer</SubType>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Assets\AlignmentGrid.png" />
<Content Include="Assets\ApplicationIcon.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileLarge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileMedium.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\FlipCycleTileSmall.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\IconicTileMediumLarge.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\Tiles\IconicTileSmall.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\AppResources.cs.resx" />
<EmbeddedResource Include="Resources\AppResources.de.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>AppResources.de.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Resources\AppResources.en.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>AppResources.en.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Resources\AppResources.es.resx" />
<EmbeddedResource Include="Resources\AppResources.fr.resx" />
<EmbeddedResource Include="Resources\AppResources.nl.resx" />
<EmbeddedResource Include="Resources\AppResources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>AppResources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Phone.Controls.Toolkit">
<HintPath>..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
</Reference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<ProjectExtensions />
</Project>

24
Circle/Circle.sln Normal file
View File

@@ -0,0 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circle", "Circle.csproj", "{8B6E301C-CDD0-64BB-2E6E-D45C5016B3BC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8B6E301C-CDD0-64BB-2E6E-D45C5016B3BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8B6E301C-CDD0-64BB-2E6E-D45C5016B3BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B6E301C-CDD0-64BB-2E6E-D45C5016B3BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B6E301C-CDD0-64BB-2E6E-D45C5016B3BC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41EE152B-0BA5-425F-B604-DDC2473072B3}
EndGlobalSection
EndGlobal

117
Circle/FirstStartPage.xaml Normal file
View File

@@ -0,0 +1,117 @@
<phone:PhoneApplicationPage
x:Class="Circle.FirstStartPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
shell:SystemTray.ForegroundColor="White"
shell:SystemTray.IsVisible="True"
shell:SystemTray.Opacity="0"
Background="#2a2a2f"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Orientation="Portrait"
SupportedOrientations="Portrait"
mc:Ignorable="d">
<toolkit:TransitionService.NavigationInTransition>
<toolkit:NavigationInTransition>
<toolkit:NavigationInTransition.Backward>
<toolkit:SlideTransition Mode="SlideLeftFadeIn" />
</toolkit:NavigationInTransition.Backward>
<toolkit:NavigationInTransition.Forward>
<toolkit:SlideTransition Mode="SlideLeftFadeIn" />
</toolkit:NavigationInTransition.Forward>
</toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
<toolkit:NavigationOutTransition>
<toolkit:NavigationOutTransition.Backward>
<toolkit:SlideTransition Mode="SlideRightFadeOut" />
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:SlideTransition Mode="SlideRightFadeOut" />
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>
<Grid Background="#2a2a2f">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Background="{StaticResource PhoneAccentBrush}">
<TextBlock
Margin="0,35,0,10"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="32"
Foreground="White"
Text="{Binding Path=LocalizedResources.welcomeString, Source={StaticResource LocalizedStrings}}"
TextAlignment="Center" />
</StackPanel>
<TextBlock
Name="introductionTextBlock"
Grid.Row="1"
Margin="25"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="22"
Foreground="White"
Text="{Binding Path=LocalizedResources.introductionString, Source={StaticResource LocalizedStrings}}"
TextAlignment="Center"
TextWrapping="Wrap" />
<Grid Grid.Row="2" Background="{StaticResource PhoneAccentBrush}">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Button
Name="newbieButton"
Grid.Row="0"
Width="450"
Height="80"
Margin="0,10,0,0"
Background="White"
BorderBrush="White"
BorderThickness="2"
Click="NewbieButton_Click"
Content="{Binding Path=LocalizedResources.newbieString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="{StaticResource PhoneAccentBrush}" />
<Button
Name="oldUserButton"
Grid.Row="1"
Width="450"
Height="80"
Background="White"
BorderBrush="White"
BorderThickness="2"
Click="OldUserButton_Click"
Content="{Binding Path=LocalizedResources.usedBeforeString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="{StaticResource PhoneAccentBrush}" />
<Button
Name="continueButton"
Grid.Row="2"
Width="450"
Height="80"
Margin="0,0,0,10"
Background="White"
BorderBrush="White"
BorderThickness="2"
Click="ContinueButton_Click"
Content="{Binding Path=LocalizedResources.continueString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="{StaticResource PhoneAccentBrush}" />
</Grid>
</Grid>
</phone:PhoneApplicationPage>

View File

@@ -0,0 +1,60 @@
using Circle.Resources;
using Microsoft.Phone.Controls;
using System;
using System.IO.IsolatedStorage;
using System.Windows;
using System.Windows.Navigation;
namespace Circle
{
public partial class FirstStartPage : PhoneApplicationPage
{
bool showedTutorial = false;
IsolatedStorageSettings settings;
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
if (NavigationService.CanGoBack)
while (NavigationService.RemoveBackEntry() != null)
NavigationService.RemoveBackEntry();
if (e.NavigationMode == NavigationMode.New)
{
try
{ settings["showedWelcomePage"] = true; }
catch (Exception)
{ }
}
}
public FirstStartPage()
{
InitializeComponent();
settings = IsolatedStorageSettings.ApplicationSettings;
}
private void ContinueButton_Click(object sender, RoutedEventArgs e)
{
if (!showedTutorial)
{
MessageBoxResult result = MessageBox.Show(AppResources.firstStartContentString, AppResources.firstStartString, MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
else
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
private void OldUserButton_Click(object sender, RoutedEventArgs e)
{
showedTutorial = true;
introductionTextBlock.Text = AppResources.changelogString;
}
private void NewbieButton_Click(object sender, RoutedEventArgs e)
{
showedTutorial = true;
introductionTextBlock.Text = AppResources.tutorialString;
}
}
}

Binary file not shown.

Binary file not shown.

BIN
Circle/Fonts/segmdl2.ttf Normal file

Binary file not shown.

View File

@@ -0,0 +1,14 @@
using Circle.Resources;
namespace Circle
{
/// <summary>
/// Provides access to string resources.
/// </summary>
public class LocalizedStrings
{
private static AppResources _localizedResources = new AppResources();
public AppResources LocalizedResources { get { return _localizedResources; } }
}
}

514
Circle/MainPage.xaml Normal file
View File

@@ -0,0 +1,514 @@
<phone:PhoneApplicationPage
x:Class="Circle.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
shell:SystemTray.BackgroundColor="{StaticResource PhoneAccentColor}"
shell:SystemTray.ForegroundColor="White"
shell:SystemTray.IsVisible="True"
shell:SystemTray.Opacity="0"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Orientation="Portrait"
SupportedOrientations="Portrait"
mc:Ignorable="d">
<Grid Background="Black">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Rectangle Name="backgroundRectangle" Fill="#2a2a2f" />
<Rectangle
Height="90"
VerticalAlignment="Top"
Fill="{StaticResource PhoneAccentBrush}" />
<phone:Pivot
Name="mainPivot"
Margin="0"
Background="Transparent"
HeaderTemplate="{StaticResource smallPivot}">
<phone:PivotItem
Name="startPivotItem"
Margin="0,-10,0,0"
Header="{Binding Path=LocalizedResources.startString, Source={StaticResource LocalizedStrings}}">
<Grid x:Name="mainGrid">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.Resources>
<Storyboard x:Name="flashAnimation">
<DoubleAnimation
AutoReverse="True"
RepeatBehavior="Forever"
Storyboard.TargetName="aCornerEllipse"
Storyboard.TargetProperty="Opacity"
From="1.0"
To="0"
Duration="0:0:0.75" />
<DoubleAnimation
AutoReverse="True"
RepeatBehavior="Forever"
Storyboard.TargetName="bCornerEllipse"
Storyboard.TargetProperty="Opacity"
From="0.4"
To="0"
Duration="0:0:0.75" />
<DoubleAnimation
AutoReverse="True"
RepeatBehavior="Forever"
Storyboard.TargetName="wCornerEllipse"
Storyboard.TargetProperty="Opacity"
From="1.0"
To="0"
Duration="0:0:0.75" />
</Storyboard>
</Grid.Resources>
<!-- Circle -->
<Ellipse
Name="aCornerEllipse"
Width="400"
Height="400"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="{StaticResource PhoneAccentBrush}"
StrokeThickness="0" />
<Ellipse
Name="bCornerEllipse"
Width="400"
Height="400"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="Black"
Opacity="0.4"
StrokeThickness="0" />
<Ellipse
Name="wCornerEllipse"
Width="400"
Height="400"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="White"
Stroke="White"
StrokeThickness="0" />
<Ellipse
x:Name="timeEllipse"
Width="382"
Height="382"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="{StaticResource PhoneAccentBrush}"
Hold="TimeEllipse_Hold"
Stroke="{StaticResource PhoneAccentBrush}"
StrokeThickness="3"
Tap="TimeEllipse_Tap" />
<TextBlock
x:Name="timeTextBlock"
Width="312"
Height="130"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Fonts/roboto-Thin.ttf#Roboto"
FontSize="96"
Foreground="White"
Hold="TimeEllipse_Hold"
Tap="TimeEllipse_Tap"
Text="0:00.000"
TextAlignment="Left"
TextWrapping="Wrap" />
</Grid>
</phone:PivotItem>
<phone:PivotItem
Name="lapsPivotItem"
Margin="0,10,0,0"
Header="{Binding Path=LocalizedResources.lapsString, Source={StaticResource LocalizedStrings}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Name="additionalButtonsStackPanel" Grid.Row="1">
<Button
Name="shareAllButton"
Grid.Row="2"
Margin="-13"
Padding="17"
Background="#242428"
BorderThickness="0"
Click="ShareAllButton_Click"
Content="{Binding Path=LocalizedResources.shareAllTimesString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White" />
</StackPanel>
<Grid Grid.Row="0">
<ListBox
Name="timesListBox"
VerticalAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Hidden" />
</Grid>
</Grid>
</phone:PivotItem>
<phone:PivotItem
Name="settingsPivotItem"
Margin="0"
Header="{Binding Path=LocalizedResources.settingsString, Source={StaticResource LocalizedStrings}}">
<ScrollViewer>
<Grid Margin="20,0" ScrollViewer.VerticalScrollBarVisibility="Auto">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Margin="0,10">
<TextBlock
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="26"
Foreground="White"
Text="{Binding Path=LocalizedResources.generalString, Source={StaticResource LocalizedStrings}}" />
<CheckBox
Name="vibCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="VibCheckBox_Checked"
Content="{Binding Path=LocalizedResources.vibrateAtResetString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="VibCheckBox_Unchecked" />
<CheckBox
Name="showAdditionalButtonsCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="ShowAdditionalButtonsCheckBox_Checked"
Content="show share all button"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="ShowAdditionalButtonsCheckBox_Unchecked" />
<CheckBox
Name="showThreeDigitsCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="ShowThreeDigitsCheckBox_Checked"
Content="{Binding Path=LocalizedResources.showThreeDigitsString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="ShowThreeDigitsCheckBox_Unchecked" />
<CheckBox
Name="useDeltaTimesCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="UseDeltaTimesCheckBox_Checked"
Content="{Binding Path=LocalizedResources.useDeltaString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="UseDeltaTimesCheckBox_Unchecked" />
</StackPanel>
<StackPanel
Grid.Row="1"
Margin="0,0,0,10"
Visibility="Collapsed">
<TextBlock
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="26"
Foreground="White"
Text="// Theme" />
<CheckBox
Name="blackBackgroundCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="BlackBackgroundCheckBox_Checked"
Content="// black background"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="BlackBackgroundCheckBox_Unchecked" />
<CheckBox
Name="customColorCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="CustomColorCheckBox_Checked"
Content="// custom color"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="CustomColorCheckBox_Unchecked" />
</StackPanel>
<StackPanel Grid.Row="2" Margin="0,0,0,10">
<TextBlock
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="26"
Foreground="White"
Text="{Binding Path=LocalizedResources.borderString, Source={StaticResource LocalizedStrings}}" />
<RadioButton
Name="thickerRadioButton"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="ThickerRadioButton_Checked"
Content="{Binding Path=LocalizedResources.thickerString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White" />
<RadioButton
Name="thinnerRadioButton"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="ThinnerRadioButton_Checked"
Content="{Binding Path=LocalizedResources.thinnerString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White" />
<RadioButton
Name="hiddenRadioButton"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="HiddenRadioButton_Checked"
Content="{Binding Path=LocalizedResources.hiddenString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White" />
<CheckBox
Name="whiteBorderCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="WhiteBorderCheckBox_Checked"
Content="{Binding Path=LocalizedResources.whiteBorderString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="WhiteBorderCheckBox_Unchecked" />
</StackPanel>
<StackPanel Grid.Row="3" Margin="0,0,0,10">
<TextBlock
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="26"
Foreground="White"
Text="{Binding Path=LocalizedResources.shareString, Source={StaticResource LocalizedStrings}}" />
<CheckBox
Name="addHashtagCheckBox"
Background="{StaticResource PhoneAccentBrush}"
BorderBrush="White"
Checked="AddHashtagCheckBox_Checked"
Content="{Binding Path=LocalizedResources.addHashtagString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
Unchecked="addHashtagCheckBox_Unchecked" />
</StackPanel>
</Grid>
</ScrollViewer>
</phone:PivotItem>
<phone:PivotItem
Name="aboutPivotItem"
Margin="0"
Header="{Binding Path=LocalizedResources.aboutString, Source={StaticResource LocalizedStrings}}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<Image
Width="256"
Height="256"
Margin="0,0,0,-20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Source="Assets/logo.png" />
<TextBlock
FontSize="32"
Foreground="White"
Text="Circle Stopwatch"
TextAlignment="Center" />
<TextBlock
Name="versionTextBlock"
FontFamily="Fonts/roboto-Thin.ttf#Roboto"
FontSize="28"
Foreground="White"
Opacity="0.9"
Text="%vString 2.1"
TextAlignment="Center" />
<TextBlock
Margin="10"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="22"
Foreground="White"
Opacity="0.9"
Text="{Binding Path=LocalizedResources.sloganString, Source={StaticResource LocalizedStrings}}"
TextAlignment="Center" />
</StackPanel>
<Grid Grid.Row="2" Background="#242428">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button
Name="reportBugButton"
Grid.Row="0"
Grid.Column="0"
BorderBrush="White"
BorderThickness="0"
Click="ReportBugButton_Click"
Content="{Binding Path=LocalizedResources.reportBugString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
IsEnabled="False" />
<Button
Name="feedbackButton"
Grid.Row="0"
Grid.Column="1"
BorderBrush="White"
BorderThickness="0"
Click="FeedbackButton_Click"
Content="{Binding Path=LocalizedResources.giveFeedbackString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
IsEnabled="False" />
<Button
Name="rateButton"
Grid.Row="1"
Grid.Column="0"
BorderBrush="White"
BorderThickness="0"
Click="RateButton_Click"
Content="{Binding Path=LocalizedResources.rateString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
IsEnabled="False" />
<Button
Name="otherAppsButton"
Grid.Row="1"
Grid.Column="1"
BorderBrush="White"
BorderThickness="0"
Click="OtherAppsButton_Click"
Content="{Binding Path=LocalizedResources.otherAppsString, Source={StaticResource LocalizedStrings}}"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
Foreground="White"
IsEnabled="False" />
</Grid>
</Grid>
</phone:PivotItem>
</phone:Pivot>
<Grid Grid.Row="1" Background="{StaticResource PhoneAccentBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="90" />
<ColumnDefinition Width="90" />
<ColumnDefinition Width="90" />
</Grid.ColumnDefinitions>
<TextBlock
Name="lastTimeTextBlock"
Margin="20,5,0,5"
FontFamily="Fonts/roboto-Thin.ttf#Roboto"
FontSize="44"
Foreground="White"
Tap="LastTimeTextBlock_Tap"
Text="-" />
<Grid Grid.Column="1">
<StackPanel
Name="addTimeButtonStackPanel"
Margin="15,5,15,0"
VerticalAlignment="Center"
Tap="AddTimeButtonStackPanel_Tap">
<TextBlock
Margin="0,0,0,5"
FontFamily="Fonts/segmdl2.ttf#Segoe MDL2 Assets"
FontSize="24"
Text=""
TextAlignment="Center" />
<TextBlock
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="16"
Text="{Binding Path=LocalizedResources.addString, Source={StaticResource LocalizedStrings}}"
TextAlignment="Center" />
</StackPanel>
<Rectangle
Name="addTimeRectangle"
Fill="Black"
ManipulationCompleted="AddTimeRectangle_ManipulationCompleted"
ManipulationStarted="AddTimeRectangle_ManipulationStarted"
Opacity="0"
Tap="AddTimeButtonStackPanel_Tap" />
</Grid>
<Grid Grid.Column="2">
<StackPanel
Name="startStopButtonStackPanel"
Margin="15,5,15,0"
VerticalAlignment="Center"
Tap="StartStopButtonStackPanel_Tap">
<TextBlock
Name="startStopIconTextBlock"
Margin="0,0,0,5"
FontFamily="Fonts/segmdl2.ttf#Segoe MDL2 Assets"
FontSize="24"
Text=""
TextAlignment="Center" />
<TextBlock
Name="startStopIconStringTextBlock"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="16"
Text="{Binding Path=LocalizedResources.startString, Source={StaticResource LocalizedStrings}}"
TextAlignment="Center" />
</StackPanel>
<Rectangle
Name="startStopRectangle"
Fill="Black"
ManipulationCompleted="StartStopRectangle_ManipulationCompleted"
ManipulationStarted="StartStopRectangle_ManipulationStarted"
Opacity="0"
Tap="StartStopButtonStackPanel_Tap" />
</Grid>
<Grid Grid.Column="3">
<StackPanel
Name="resetButtonStackPanel"
Margin="15,5,15,0"
VerticalAlignment="Center"
Tap="ResetButtonStackPanel_Tap">
<TextBlock
Margin="0,0,0,5"
FontFamily="Fonts/segmdl2.ttf#Segoe MDL2 Assets"
FontSize="24"
Text=""
TextAlignment="Center" />
<TextBlock
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="16"
Text="{Binding Path=LocalizedResources.resetString, Source={StaticResource LocalizedStrings}}"
TextAlignment="Center" />
</StackPanel>
<Rectangle
Name="resetRectangle"
Fill="Black"
ManipulationCompleted="ResetRectangle_ManipulationCompleted"
ManipulationStarted="ResetRectangle_ManipulationStarted"
Opacity="0"
Tap="ResetButtonStackPanel_Tap" />
</Grid>
</Grid>
</Grid>
</phone:PhoneApplicationPage>

668
Circle/MainPage.xaml.cs Normal file
View File

@@ -0,0 +1,668 @@
using Circle.Resources;
using Microsoft.Devices;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using Microsoft.Phone.Tasks;
using System;
using System.Diagnostics;
using System.IO.IsolatedStorage;
using System.Windows;
using System.Windows.Media;
using System.Windows.Navigation;
using System.Windows.Threading;
/*
* I wrote this code when I was 16(?) years old. It's bad and I'm gonna refactor it a lot.
*/
namespace Circle
{
public partial class MainPage : PhoneApplicationPage
{
Stopwatch stop = new Stopwatch(), countdownStopwatch = new Stopwatch();
string minutes, seconds, mseconds, lasttime;
DispatcherTimer timer = new DispatcherTimer();
VibrateController vib = VibrateController.Default;
int i = 1;
IsolatedStorageSettings settings;
Color accentColor = (Color)Application.Current.Resources["PhoneAccentColor"];
Color foreground = (Color)Application.Current.Resources["PhoneForegroundColor"];
Color background = (Color)Application.Current.Resources["PhoneBackgroundColor"];
SolidColorBrush backgroundColor, foregroundColor, accent, white;
bool vibration, threeDigits, deltaTimes;
int border;
TimeSpan deltaTimeSpan = TimeSpan.FromMilliseconds(0);
TimeSpan lastTimeSpan = TimeSpan.FromMilliseconds(0);
TimeSpan countdownTimeSpan = TimeSpan.FromSeconds(300);
public MainPage()
{
InitializeComponent();
timer.Interval = TimeSpan.FromMilliseconds(1);
timer.Tick += new EventHandler(Timer_Tick);
backgroundColor = new SolidColorBrush(background);
foregroundColor = new SolidColorBrush(foreground);
accent = new SolidColorBrush(accentColor);
white = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
settings = IsolatedStorageSettings.ApplicationSettings;
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
CameraButtons.ShutterKeyPressed += CameraButtons_ShutterKeyPressed;
versionTextBlock.Text = versionTextBlock.Text.Replace("%vString", AppResources.versionString);
showAdditionalButtonsCheckBox.Content = AppResources.showAdditionalButtonsString.Replace("%b", AppResources.shareAllTimesString);
}
private void InitalizeSettings()
{
try
{
vibCheckBox.IsChecked = (bool)settings["vibration"];
}
catch (Exception)
{
settings.Add("vibration", true);
vibCheckBox.IsChecked = true;
}
vibration = (bool)settings["vibration"];
try
{
if ((bool)settings["showAdditionalButtons"])
additionalButtonsStackPanel.Visibility = Visibility.Visible;
else
additionalButtonsStackPanel.Visibility = Visibility.Collapsed;
}
catch (Exception)
{
settings.Add("showAdditionalButtons", true);
}
showAdditionalButtonsCheckBox.IsChecked = (bool)settings["showAdditionalButtons"];
try
{
border = (int)settings["border"];
}
catch (Exception)
{
settings.Add("border", 2);
}
try
{
if ((bool)settings["whiteBorder"])
wCornerEllipse.Visibility = Visibility.Visible;
else
wCornerEllipse.Visibility = Visibility.Collapsed;
}
catch (Exception)
{
settings.Add("whiteBorder", true);
}
whiteBorderCheckBox.IsChecked = (bool)settings["whiteBorder"];
switch (border)
{
case 0:
// 0
aCornerEllipse.Width = 0;
aCornerEllipse.Height = 0;
bCornerEllipse.Width = 0;
bCornerEllipse.Height = 0;
wCornerEllipse.Width = 0;
wCornerEllipse.Height = 0;
break;
case 1:
// 391
aCornerEllipse.Width = 393;
aCornerEllipse.Height = 393;
bCornerEllipse.Width = 393;
bCornerEllipse.Height = 393;
wCornerEllipse.Width = 391;
wCornerEllipse.Height = 391;
break;
case 2:
// 400
aCornerEllipse.Width = 400;
aCornerEllipse.Height = 400;
bCornerEllipse.Width = 400;
bCornerEllipse.Height = 400;
wCornerEllipse.Width = 400;
wCornerEllipse.Height = 400;
break;
default:
break;
}
thickerRadioButton.IsChecked = (bool)((int)settings["border"] == 2);
thinnerRadioButton.IsChecked = (bool)((int)settings["border"] == 1);
hiddenRadioButton.IsChecked = (bool)((int)settings["border"] == 0);
try
{
addHashtagCheckBox.IsChecked = (bool)settings["addHashtag"];
}
catch (Exception)
{
settings.Add("addHashtag", true);
addHashtagCheckBox.IsChecked = true;
}
try
{
threeDigits = (bool)settings["threeDigits"];
}
catch (Exception)
{
settings.Add("threeDigits", false);
showThreeDigitsCheckBox.IsChecked = false;
threeDigits = false;
}
showThreeDigitsCheckBox.IsChecked = (bool)settings["threeDigits"];
threeDigits = (bool)settings["threeDigits"];
try
{
deltaTimes = (bool)settings["deltaTimes"];
}
catch (Exception)
{
settings.Add("deltaTimes", false);
useDeltaTimesCheckBox.IsChecked = false;
deltaTimes = false;
}
useDeltaTimesCheckBox.IsChecked = (bool)settings["deltaTimes"];
deltaTimes = (bool)settings["deltaTimes"];
if (threeDigits)
{
timeTextBlock.Width = 329;
timeTextBlock.Height = 120;
timeTextBlock.FontSize = 86;
}
else
{
timeTextBlock.Width = 312;
timeTextBlock.Height = 130;
timeTextBlock.FontSize = 96;
}
try
{
if ((bool)settings["blackBackground"])
backgroundRectangle.Visibility = Visibility.Collapsed;
else
backgroundRectangle.Visibility = Visibility.Visible;
}
catch (Exception)
{
settings.Add("blackBackground", false);
backgroundRectangle.Visibility = Visibility.Visible;
}
if ((bool)settings["blackBackground"])
blackBackgroundCheckBox.IsChecked = true;
else
blackBackgroundCheckBox.IsChecked = false;
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// 2026-03-28: disable first start page since it's unfinished
/*
try
{
if (!(bool)settings["showedWelcomePage"])
NavigationService.Navigate(new Uri("/FirstStartPage.xaml", UriKind.Relative));
}
catch (KeyNotFoundException)
{
settings.Add("showedWelcomePage", false);
NavigationService.Navigate(new Uri("/FirstStartPage.xaml", UriKind.Relative));
}
*/
InitalizeSettings();
base.OnNavigatedTo(e);
}
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
if (NavigationService.CanGoBack)
while (NavigationService.RemoveBackEntry() != null)
NavigationService.RemoveBackEntry();
}
private void CameraButtons_ShutterKeyPressed(object sender, EventArgs e) => AddTime();
private void Timer_Tick(object sender, EventArgs e)
{
minutes = stop.Elapsed.Minutes.ToString();
seconds = stop.Elapsed.Seconds.ToString();
if (threeDigits)
mseconds = stop.Elapsed.Milliseconds.ToString();
else
mseconds = Math.Round((double)stop.Elapsed.Milliseconds / 10, 0).ToString();
if (mseconds.Length < 2)
mseconds = '0' + mseconds;
if (mseconds.Length < 3)
if (threeDigits)
mseconds = '0' + mseconds;
if (seconds.Length < 2)
seconds = '0' + seconds;
timeTextBlock.Text = minutes + ':' + seconds + '.' + mseconds;
}
private void ToggleTime()
{
if (stop.IsRunning == false)
{
stop.Start();
timer.Start();
flashAnimation.Stop();
startStopIconTextBlock.Text = ""; // PAUSE ICON
startStopIconStringTextBlock.Text = AppResources.stopString;
}
else
{
stop.Stop();
timer.Stop();
flashAnimation.Begin();
startStopIconTextBlock.Text = ""; // PLAY ICON
startStopIconStringTextBlock.Text = AppResources.startString;
}
}
private void TimeEllipse_Tap(object sender, System.Windows.Input.GestureEventArgs e) => ToggleTime();
private void ResetClock()
{
if (timeTextBlock.Text != "0:00.00" && timeTextBlock.Text != "0:00.000")
{
stop.Reset();
if (threeDigits)
timeTextBlock.Text = "0:00.000";
else
timeTextBlock.Text = "0:00.00";
lastTimeTextBlock.Text = "-";
startStopIconTextBlock.Text = "";
startStopIconStringTextBlock.Text = AppResources.startString;
flashAnimation.Stop();
i = 1;
timesListBox.Items.Clear();
if (vibration)
vib.Start(TimeSpan.FromMilliseconds(150));
deltaTimeSpan = TimeSpan.FromMilliseconds(0);
lastTimeSpan = deltaTimeSpan;
}
}
public void RemoveTime(string number)
{
foreach (TimeControl tc in timesListBox.Items)
if (tc.numberTextBlock.Text == number)
timesListBox.Items.Remove(tc);
}
private void TimeEllipse_Hold(object sender, System.Windows.Input.GestureEventArgs e) => ResetClock();
private void AddButton_Click(object sender, RoutedEventArgs e) => AddTime();
private void AddTime()
{
if (timeTextBlock.Text != "0:00.00" && timeTextBlock.Text != "0:00.000")
{
deltaTimeSpan = stop.Elapsed - lastTimeSpan;
lastTimeSpan = stop.Elapsed;
string deltaMinutes = deltaTimeSpan.Minutes.ToString();
string deltaSeconds = deltaTimeSpan.Seconds.ToString();
string deltaMSeconds = deltaTimeSpan.Milliseconds.ToString();
if (deltaSeconds.Length > 3)
deltaSeconds = deltaSeconds.Remove(deltaSeconds.Length - 1, 1);
if (deltaSeconds.Length < 2)
deltaSeconds = '0' + deltaSeconds;
if (deltaMSeconds.Length < 2)
if (threeDigits)
deltaMSeconds = "00" + deltaMSeconds;
else
deltaMSeconds = '0' + deltaMSeconds;
if (!threeDigits)
if (deltaMSeconds.Length > 2)
deltaMSeconds = Math.Round((double)int.Parse(deltaMSeconds) / 10, 0).ToString();
string delta = deltaMinutes + ':' + deltaSeconds + '.' + deltaMSeconds;
string _i = i.ToString();
if (_i.Length < 2)
_i = "0" + _i;
string _time = timeTextBlock.Text;
if (!threeDigits)
if (_time.Split('.')[1].Length == 3)
_time = _time.Remove(_time.Length - 1, 1);
TimeControl tc = new TimeControl();
tc.numberTextBlock.Text = _i;
if (deltaTimes)
tc.timeTextBlock.Text = delta;
else
tc.timeTextBlock.Text = _time;
timesListBox.Items.Insert(0, tc);
i++;
timesListBox.SelectedIndex = 0;
lastTimeTextBlock.Text = _time;
}
}
private void ResetButton_Click(object sender, RoutedEventArgs e) => ResetClock();
private void RateButton_Click(object sender, RoutedEventArgs e) => new MarketplaceReviewTask().Show();
private async void OtherAppsButton_Click(object sender, RoutedEventArgs e)
{
// 2026-03-28: publisher name removed
await Windows.System.Launcher.LaunchUriAsync(new Uri("zune:search?publisher=REDACTED"));
}
private void ReportBugButton_Click(object sender, RoutedEventArgs e)
{
EmailComposeTask mailTask = new EmailComposeTask()
{
// 2026-03-28: publisher name removed
To = "REDACTED",
Subject = "[Circle Stopwatch] Bug report"
};
mailTask.Show();
}
private void FeedbackButton_Click(object sender, RoutedEventArgs e)
{
EmailComposeTask mailTask = new EmailComposeTask()
{
// 2026-03-28: mail address removed
To = "REDACTED",
Subject = "[Circle Stopwatch] Feedback"
};
mailTask.Show();
}
private void VibCheckBox_Checked(object sender, RoutedEventArgs e)
{
settings["vibration"] = true;
vibration = true;
}
private void VibCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
settings["vibration"] = false;
vibration = false;
}
private void ShowAdditionalButtonsCheckBox_Checked(object sender, RoutedEventArgs e)
{
settings["showAdditionalButtons"] = true;
showAdditionalButtonsCheckBox.IsChecked = true;
additionalButtonsStackPanel.Visibility = Visibility.Visible;
}
private void ShowAdditionalButtonsCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
settings["showAdditionalButtons"] = false;
showAdditionalButtonsCheckBox.IsChecked = false;
additionalButtonsStackPanel.Visibility = Visibility.Collapsed;
}
private void ThickerRadioButton_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["border"] = 2;
}
catch (Exception)
{
settings.Add("border", 2);
}
InitalizeSettings();
}
private void ThinnerRadioButton_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["border"] = 1;
}
catch (Exception)
{
settings.Add("border", 1);
}
InitalizeSettings();
}
private void ShowThreeDigitsCheckBox_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["threeDigits"] = true;
}
catch (Exception)
{
settings.Add("threeDigits", true);
}
InitalizeSettings();
}
private void ShareAllButton_Click(object sender, RoutedEventArgs e)
{
if (timesListBox.Items.Count > 0)
{
string allTimes = "";
foreach (TimeControl tc in timesListBox.Items)
allTimes = tc.numberTextBlock.Text + " - " + tc.timeTextBlock.Text + "\n" + allTimes;
allTimes += "#CircleStopwatch";
ShareStatusTask stt = new ShareStatusTask()
{ Status = allTimes };
stt.Show();
}
else
{
MessageBox.Show(AppResources.noTimesString, AppResources.errorString, MessageBoxButton.OK);
}
}
private void StartStopButtonStackPanel_Tap(object sender, System.Windows.Input.GestureEventArgs e) => ToggleTime();
private void AddTimeButtonStackPanel_Tap(object sender, System.Windows.Input.GestureEventArgs e) => AddTime();
private void ResetRectangle_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e) => resetRectangle.Opacity = 0.2;
private void ResetRectangle_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e) => resetRectangle.Opacity = 0;
private void StartStopRectangle_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e) => startStopRectangle.Opacity = 0.2;
private void StartStopRectangle_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e) => startStopRectangle.Opacity = 0;
private void AddTimeRectangle_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e) => addTimeRectangle.Opacity = 0.2;
private void AddTimeRectangle_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e) => addTimeRectangle.Opacity = 0;
private void UseDeltaTimesCheckBox_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["deltaTimes"] = true;
}
catch (Exception)
{
settings.Add("deltaTimes", true);
}
InitalizeSettings();
}
private void BlackBackgroundCheckBox_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["blackBackground"] = true;
}
catch (Exception)
{
settings.Add("blackBackground", true);
}
InitalizeSettings();
}
private void TimerAddRectangle_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
countdownTimeSpan = countdownTimeSpan.Add(TimeSpan.FromSeconds(30));
}
private void TimerToggleRectangle_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{ }
private void TimerRemoveRectangle_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
countdownTimeSpan = countdownTimeSpan.Subtract(TimeSpan.FromSeconds(30));
}
private void BlackBackgroundCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
try
{
settings["blackBackground"] = false;
}
catch (Exception)
{
settings.Add("blackBackground", false);
}
InitalizeSettings();
}
private void CustomColorCheckBox_Checked(object sender, RoutedEventArgs e)
{ }
private void CustomColorCheckBox_Unchecked(object sender, RoutedEventArgs e)
{ }
private void LastTimeTextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
mainPivot.SelectedItem = lapsPivotItem;
}
private void UseDeltaTimesCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
try
{
settings["deltaTimes"] = false;
}
catch (Exception)
{
settings.Add("deltaTimes", false);
}
InitalizeSettings();
}
private void ResetButtonStackPanel_Tap(object sender, System.Windows.Input.GestureEventArgs e) => ResetClock();
private void ShowThreeDigitsCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
try
{
settings["threeDigits"] = false;
}
catch (Exception)
{
settings.Add("threeDigits", false);
}
InitalizeSettings();
}
private void HiddenRadioButton_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["border"] = 0;
}
catch (Exception)
{
settings.Add("border", 0);
}
InitalizeSettings();
}
private void AddHashtagCheckBox_Checked(object sender, RoutedEventArgs e)
{
try
{ settings["addHashtag"] = true; }
catch (Exception)
{ settings.Add("addHashtag", true); }
InitalizeSettings();
}
private void addHashtagCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
try
{
settings["addHashtag"] = false;
}
catch (Exception)
{
settings.Add("addHashtag", false);
}
InitalizeSettings();
}
private void WhiteBorderCheckBox_Checked(object sender, RoutedEventArgs e)
{
try
{
settings["whiteBorder"] = true;
}
catch (Exception)
{
settings.Add("whiteBorder", true);
}
InitalizeSettings();
}
private void WhiteBorderCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
try
{
settings["whiteBorder"] = false;
}
catch (Exception)
{
settings.Add("whiteBorder", false);
}
InitalizeSettings();
}
}
}

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest" xmlns:m3="http://schemas.microsoft.com/appx/2014/manifest" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest">
<Identity Name="34923IRWorks.CircleforWindowsPhone" Publisher="CN=8CDF1C72-E452-4E26-9486-529427078BCA" Version="2.1.0.0" />
<mp:PhoneIdentity PhoneProductId="96693b2f-b195-4c3a-ba1f-d359d6376b41" PhonePublisherId="7888390f-a1a7-40b5-ab24-9c43392fcba7" />
<Properties>
<DisplayName>Circle Stopwatch</DisplayName>
<PublisherDisplayName>huntingProductions</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Prerequisites>
<OSMinVersion>6.3.1</OSMinVersion>
<OSMaxVersionTested>6.3.1</OSMaxVersionTested>
</Prerequisites>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="x96693b2fyb195y4c3ayba1fyd359d6376b41x" Executable="AGHost.exe" EntryPoint="MainPage.xaml">
<m3:VisualElements DisplayName="Circle Stopwatch" Square150x150Logo="Assets\SquareTile150x150.png" Square44x44Logo="Assets\Logo.png" Description="Circle" ForegroundText="light" BackgroundColor="#464646" ToastCapable="false">
<m3:DefaultTile Square71x71Logo="Assets\SquareTile71x71.png">
</m3:DefaultTile>
<m3:SplashScreen Image="Assets\Splashscreen.png" />
</m3:VisualElements>
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="AgHost.BackgroundTask">
<BackgroundTasks>
<Task Type="systemEvent" />
<Task Type="timer" />
</BackgroundTasks>
</Extension>
</Extensions>
</Application>
</Applications>
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>AgHostSvcs.dll</Path>
<ActivatableClass ActivatableClassId="AgHost.BackgroundTask" ThreadingModel="both" />
</InProcessServer>
</Extension>
</Extensions>
</Package>

View File

@@ -0,0 +1,6 @@
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Deployment.Parts>
</Deployment.Parts>
</Deployment>

View File

@@ -0,0 +1,37 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Resources;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Circle Stopwatch")]
[assembly: AssemblyDescription("A minimalistic stopwatch app for Windows Phone 8.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("huntingProductions")]
[assembly: AssemblyProduct("Circle Stopwatch")]
[assembly: AssemblyCopyright("Copyright © huntingProductions")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("96693b2f-b195-4c3a-ba1f-d359d6376b41")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: NeutralResourcesLanguageAttribute("en")]

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2014/deployment" AppPlatformVersion="8.1">
<DefaultLanguage xmlns="" code="en" />
<Languages xmlns="">
<Language code="de-DE" />
<Language code="en" />
<Language code="de" />
<Language code="nl" />
<Language code="fr" />
<Language code="es" />
<Language code="cs-CZ" />
<Language code="cs" />
</Languages>
<App xmlns="" ProductID="{96693b2f-b195-4c3a-ba1f-d359d6376b41}" Title="Circle Stopwatch" RuntimeType="Silverlight" Version="1.3.0.0" Genre="apps.normal" Author="huntingProductions" Description="Sample description" Publisher="huntingProductions" PublisherID="{7888390f-a1a7-40b5-ab24-9c43392fcba7}">
<IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
<Capabilities></Capabilities>
<Tasks>
<DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
</Tasks>
<Tokens>
<PrimaryToken TokenID="CircleToken" TaskName="_default">
<TemplateFlip>
<SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
<Count>0</Count>
<BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
<Title>Circle</Title>
<BackContent></BackContent>
<BackBackgroundImageURI IsRelative="true" IsResource="false"></BackBackgroundImageURI>
<BackTitle></BackTitle>
<LargeBackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileLarge.png</LargeBackgroundImageURI>
<LargeBackContent />
<LargeBackBackgroundImageURI IsRelative="true" IsResource="false"></LargeBackBackgroundImageURI>
<DeviceLockImageURI IsRelative="true" IsResource="false"></DeviceLockImageURI>
<HasLarge>True</HasLarge>
</TemplateFlip>
</PrimaryToken>
</Tokens>
<ScreenResolutions>
<ScreenResolution Name="ID_RESOLUTION_WVGA" />
<ScreenResolution Name="ID_RESOLUTION_WXGA" />
<ScreenResolution Name="ID_RESOLUTION_HD720P" />
</ScreenResolutions>
</App>
</Deployment>

453
Circle/Resources/AppResources.Designer.cs generated Normal file
View File

@@ -0,0 +1,453 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.0
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Circle.Resources {
using System;
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class AppResources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal AppResources() {
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Circle.Resources.AppResources", typeof(AppResources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die About ähnelt.
/// </summary>
public static string aboutString {
get {
return ResourceManager.GetString("aboutString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Add hashtag ähnelt.
/// </summary>
public static string addHashtagString {
get {
return ResourceManager.GetString("addHashtagString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Add ähnelt.
/// </summary>
public static string addString {
get {
return ResourceManager.GetString("addString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Border ähnelt.
/// </summary>
public static string borderString {
get {
return ResourceManager.GetString("borderString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die These things are new:
///
///Totally new design;
///New AppBar;
///Captured times are now on a seperate page;
///New methods to capture times;
///Vibration can be toggled;
///Option to share times ähnelt.
/// </summary>
public static string changelogString {
get {
return ResourceManager.GetString("changelogString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Continue ähnelt.
/// </summary>
public static string continueString {
get {
return ResourceManager.GetString("continueString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Custom message ähnelt.
/// </summary>
public static string customMessageString {
get {
return ResourceManager.GetString("customMessageString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Error ähnelt.
/// </summary>
public static string errorString {
get {
return ResourceManager.GetString("errorString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Semms like this is the first time you&apos;re using the app. Are you sure that you don&apos;t want to see a tutorial? ähnelt.
/// </summary>
public static string firstStartContentString {
get {
return ResourceManager.GetString("firstStartContentString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die First start ähnelt.
/// </summary>
public static string firstStartString {
get {
return ResourceManager.GetString("firstStartString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die General ähnelt.
/// </summary>
public static string generalString {
get {
return ResourceManager.GetString("generalString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Give feedback ähnelt.
/// </summary>
public static string giveFeedbackString {
get {
return ResourceManager.GetString("giveFeedbackString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Hidden ähnelt.
/// </summary>
public static string hiddenString {
get {
return ResourceManager.GetString("hiddenString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die It seems like this is the first time you&apos;re using the new version of Circle. Please select an option: ähnelt.
/// </summary>
public static string introductionString {
get {
return ResourceManager.GetString("introductionString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Laps ähnelt.
/// </summary>
public static string lapsString {
get {
return ResourceManager.GetString("lapsString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die My time: &lt;time&gt; &lt;hashtag&gt; ähnelt.
/// </summary>
public static string myTimeString {
get {
return ResourceManager.GetString("myTimeString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die I&apos;m a newbie ähnelt.
/// </summary>
public static string newbieString {
get {
return ResourceManager.GetString("newbieString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die There are no times to share. ähnelt.
/// </summary>
public static string noTimesString {
get {
return ResourceManager.GetString("noTimesString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Other apps ähnelt.
/// </summary>
public static string otherAppsString {
get {
return ResourceManager.GetString("otherAppsString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Rate ähnelt.
/// </summary>
public static string rateString {
get {
return ResourceManager.GetString("rateString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Report bug ähnelt.
/// </summary>
public static string reportBugString {
get {
return ResourceManager.GetString("reportBugString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Reset ähnelt.
/// </summary>
public static string resetString {
get {
return ResourceManager.GetString("resetString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die LeftToRight ähnelt.
/// </summary>
public static string ResourceFlowDirection {
get {
return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die en ähnelt.
/// </summary>
public static string ResourceLanguage {
get {
return ResourceManager.GetString("ResourceLanguage", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Settings ähnelt.
/// </summary>
public static string settingsString {
get {
return ResourceManager.GetString("settingsString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Share all times ähnelt.
/// </summary>
public static string shareAllTimesString {
get {
return ResourceManager.GetString("shareAllTimesString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Share ähnelt.
/// </summary>
public static string shareString {
get {
return ResourceManager.GetString("shareString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Show &quot;%b&quot; button ähnelt.
/// </summary>
public static string showAdditionalButtonsString {
get {
return ResourceManager.GetString("showAdditionalButtonsString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Show 3 digits for milliseconds ähnelt.
/// </summary>
public static string showThreeDigitsString {
get {
return ResourceManager.GetString("showThreeDigitsString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Fast. Flat. Free. Easy-to-use. Circle. ähnelt.
/// </summary>
public static string sloganString {
get {
return ResourceManager.GetString("sloganString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Start ähnelt.
/// </summary>
public static string startString {
get {
return ResourceManager.GetString("startString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Stop ähnelt.
/// </summary>
public static string stopString {
get {
return ResourceManager.GetString("stopString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Thicker ähnelt.
/// </summary>
public static string thickerString {
get {
return ResourceManager.GetString("thickerString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Thinner ähnelt.
/// </summary>
public static string thinnerString {
get {
return ResourceManager.GetString("thinnerString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Timer ähnelt.
/// </summary>
public static string timerString {
get {
return ResourceManager.GetString("timerString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Welcome to Circle! Circle is an easy-to-use and minimalistic stopwatch for your Windows Phone.
///Tap the circle to start/stop the stopwatch.
///Hold down the circle for a reset. You can also find an option in the appbar and on the &quot;Laps&quot; page (by default).
///To capture times just press the camera button on your phone, tap &quot;Add&quot; at &quot;Laps&quot; page or use the appbar button.
///
///That&apos;s it - have fun while using Circle! ähnelt.
/// </summary>
public static string tutorialString {
get {
return ResourceManager.GetString("tutorialString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die I used Circle v1 before ähnelt.
/// </summary>
public static string usedBeforeString {
get {
return ResourceManager.GetString("usedBeforeString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Use delta times ähnelt.
/// </summary>
public static string useDeltaString {
get {
return ResourceManager.GetString("useDeltaString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Version ähnelt.
/// </summary>
public static string versionString {
get {
return ResourceManager.GetString("versionString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Vibration after clock reset ähnelt.
/// </summary>
public static string vibrateAtResetString {
get {
return ResourceManager.GetString("vibrateAtResetString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Welcome! ähnelt.
/// </summary>
public static string welcomeString {
get {
return ResourceManager.GetString("welcomeString", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die White border ähnelt.
/// </summary>
public static string whiteBorderString {
get {
return ResourceManager.GetString("whiteBorderString", resourceCulture);
}
}
}
}

View File

@@ -0,0 +1,260 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="aboutString" xml:space="preserve">
<value>O aplikaci</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Přidat hashtag</value>
</data>
<data name="addString" xml:space="preserve">
<value>Přidat</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Rámeček</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>Co je nového:
Zcela nový design;
Nová dolní lišta aplikace;
Zaznamenané časy jsou nyní v samostane záložce;
Nové metody pro zaznamenání časů;
Vibrace lze nyní zapnout a vypnout;
Možnost pro sdílení časů</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Pokračovat</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Vlastní zpráva</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Chyba</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Zdá se, že aplikaci Circle používáte poprvé. Jste si jistí, že nechcete zobrazit návod?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>První start</value>
</data>
<data name="generalString" xml:space="preserve">
<value>Hlavní</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Zpětná vazba</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Skrytý</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>Vypadá to, že novou verzi aplikace Circle používáte poprvé. Prosím, vyberte jednu z následujících možností:</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Mezičasy</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>Můj čas: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>Jsem nováček</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>Nebyly nalezeny žádné časy ke sdílení. </value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Ostatní aplikace</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Ohodnotit</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Ohlásit chybu</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Reset</value>
</data>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>cs</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Nastavení</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Sdílet všechny mé časy</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Sdílet</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Přidat možnost "%b"</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Přidat trojčíslí k milisekundám</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Rychlé. Ploché. Zdarma. Snadné použití. Circle.</value>
</data>
<data name="startString" xml:space="preserve">
<value>Start</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Stop</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Tlustší</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Tenčí</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Časovač</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>Vítejte v aplikaci Circle! Circle jsou stopky se snadným použitím a minimalistickým vzhledem pro váš Windows Phone.
Klepněte na kruh pro spuštění/zastavení stopek.
Podržte kruh pro obnovení času. Můžete jej také obnovit na dolní liště a záložce "Mezičasy". Pro zaznamenání časů jednotlivých kol jednoduše stiskněte spoušť fotoaparátu na vašem telefonu, klepněte na "Přidat" v záložce "Mezičasy" nebo použijte tlačítko na dolní liště. To je vše - přeji příjemnou zábavu při používání aplikace Circle!</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>Circle v1 jsem již v minulosti používal</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Používat </value>
</data>
<data name="versionString" xml:space="preserve">
<value>Verze</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Spustit vibrace po obnovení času</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>Vítejte!</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>Bílý rámeček</value>
</data>
</root>

View File

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>de</value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Weitere Apps</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Bewerten</value>
</data>
<data name="addString" xml:space="preserve">
<value>+ Zeit</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Reset</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Einstellungen</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Feedback geben</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Fehler melden</value>
</data>
<data name="aboutString" xml:space="preserve">
<value>Über</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Runden</value>
</data>
<data name="startString" xml:space="preserve">
<value>Start</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Vibration nach Zurücksetzen</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Zeige "%b" Button</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Schnell. Flach. Kostenlos. Einfach. Circle.</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>Folgende Dinge sind neu:
Design grundlegend überarbeitet;
AppBar hinzugefügt;
Zwischenzeiten haben nun eine eigene Seite;
Weitere Methoden zum Hinzufügen von Zeiten;
Vibration kann deaktiviert werden;
Option zum Teilen von Zeiten</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Offenbar ist dies das erste Mal, dass du die App verwendest. Möchtest du wirklich kein Tutorial ansehen?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>Erster Start</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>Willkommen bei Circle! Circle ist eine minimalistische und einfache Stoppuhr-App für dein Windows Phone.
Tippe den Kreis an, um die Uhr zu starten oder zu pausieren.
Halte ihn gedrückt, um sie zurückzusetzen. Dies ist ebenfalls auf der "Runden"-Seite und in der Appbar möglich.
Um Zwischenzeiten zu speichern, drücke die Kamerataste, tippe auf "+ Zeit" auf der "Runden"-Seite oder auf das + in der Appbar.
Das ist alles - viel Spaß mit der App!</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>Willkommen!</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Fortfahren</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>Offenbar ist dies das erste Mal, dass du die neue Version von Circle verwendest. Wähle bitte eine Option:</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>Ich bin neu</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>Ich habe zuvor Circle v1 genutzt</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Hashtag hinzufügen</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Eigene Nachricht</value>
</data>
<data name="generalString" xml:space="preserve">
<value>Allgemein</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>Meine Zeit: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Teilen</value>
</data>
<data name="versionString" xml:space="preserve">
<value>Version</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Ausgeblendet</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Dicker</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Dünner</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Rand</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>Weißer Rand</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Fehler</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>Es gibt keine Zeiten, die geteilt werden können.</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Alle Zeiten teilen</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Zeige 3 Stellen für Millisekunden</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Stop</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Timer</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Nutze Delta-Zeiten</value>
</data>
</root>

View File

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="addString" xml:space="preserve">
<value>Add</value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Other apps</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Rate</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Reset</value>
</data>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>en</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Settings</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Give feedback</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Report bug</value>
</data>
<data name="aboutString" xml:space="preserve">
<value>About</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Laps</value>
</data>
<data name="startString" xml:space="preserve">
<value>Start</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Vibration after clock reset</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Show "%b" button</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Fast. Flat. Free. Easy-to-use. Circle.</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>These things are new:
Totally new design;
New AppBar;
Captured times are now on a seperate page;
New methods to capture times;
Vibration can be toggled;
Option to share times</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Semms like this is the first time you're using the app. Are you sure that you don't want to see a tutorial?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>First start</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>Welcome to Circle! Circle is an easy-to-use and minimalistic stopwatch for your Windows Phone.
Tap the circle to start/stop the stopwatch.
Hold down the circle for a reset. You can also find an option in the appbar and on the "Laps" page (by default).
To capture times just press the camera button on your phone, tap "Add" at "Laps" page or use the appbar button.
That's it - have fun while using Circle!</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>Welcome!</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Continue</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>It seems like this is the first time you're using the new version of Circle. Please select an option:</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>I'm a newbie</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>I used Circle v1 before</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Add hashtag</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Custom message</value>
</data>
<data name="generalString" xml:space="preserve">
<value>General</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>My time: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Share</value>
</data>
<data name="versionString" xml:space="preserve">
<value>Version</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Hidden</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Thicker</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Thinner</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Border</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>White border</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Error</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>There are no times to share.</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Share all times</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Show 3 digits for milliseconds</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Stop</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Timer</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Use delta times</value>
</data>
</root>

View File

@@ -0,0 +1,256 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>es</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Ajustes</value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Otras aplicaciones</value>
</data>
<data name="addString" xml:space="preserve">
<value>Añadir</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Calificar</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Reiniciar</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Dar opinión</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Reportar error</value>
</data>
<data name="aboutString" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Vueltas</value>
</data>
<data name="startString" xml:space="preserve">
<value>Iniciar</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Vibración después del reinicio del reloj</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Mostrar "%b" botón</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Rápido. Plano. Gratis. Fácil de usar. Circle.</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>Estas cosas son nuevas:
Diseño totalmente nuevo;
Nueva barra de aplicación;
Tiempos capturados están ahora en una página separada;
Nuevos métodos para capturar tiempos;
La vibración puede ser activada;
Opciones para compartir tiempos</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Parece que es la primera vez que estás usando la aplicación. ¿Estás seguro de que no quieres ver un tutorial?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>Primer inicio</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>¡Bienvenido a Circle! Circle es un cronómetro minimalista y fácil de usar para tu Windows Phone.
Pulsa el círculo para iniciar/parar el cronómetro
Mantén pulsado el círculo para un reinicio. También puedes encontrar una opción en la barra de aplicación y en la página de "Vueltas" (por defecto).
Para capturar tiempos sólo presiona el botón de la cámara en tu teléfono, pulsa "Añadir" en la página de "Vueltas" o usa el botón de la barra de aplicación.</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>¡Bienvenido!</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Continuar</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>Parece que esta es la primera vez que usas la nueva versión de Circle. Por favor, selecciona una opción:</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>Soy un novato</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>Usé Circle v1 antes</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Añadir etiqueta</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Mensaje personalizado</value>
</data>
<data name="generalString" xml:space="preserve">
<value>General</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>Mi tiempo: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Compartir</value>
</data>
<data name="versionString" xml:space="preserve">
<value>Versión</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Escondido</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Más grueso</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Más fino</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Borde</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>Borde Blanco</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Error</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>No hay tiempos para compartir.</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Compartir todos los tiempos</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Mostrar 3 dígitos para milisegundos</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Parar</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Temporizador</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Utilizar tiempos delta</value>
</data>
</root>

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>fr</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Paramètres</value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Autres applications</value>
</data>
<data name="addString" xml:space="preserve">
<value>Ajouter</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Le taux</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Redémarrer</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Donne un commentaire</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Le rapport «Bug»</value>
</data>
<data name="aboutString" xml:space="preserve">
<value>À propos</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Le tour</value>
</data>
<data name="startString" xml:space="preserve">
<value>Démarrer</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Vibration après réinitialisation du chrono</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Afficher le "%b" bouton</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Rapide. Flat. Gratuit. Facile à utiliser. Circle.</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>Les choses suivantes sont nouvelles:
Tout nouveau design
Nouvelle barre d'application
Les temps capturés sont à présent affichés sur une nouvelle page.
Nouvelle façon d'enregistrer un temps.
La vibration peut être activée ou désactive
Possibilité de partager le temps</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Il semble que ce soit la première fois que vous utilisiez l'application. Etes-vous bien sûr de ne pas vouloir de tutoriel?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>Premier départ</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>Bienvenue sur Circle! Circle est un chronomètre facile à utiliser et minimaliste pour votre Windows Phone!
Appuyez sur le cercle pour démarrer/arrêter le chronomètre!
Maintenez le cercle pour une remise à zéro. Vous pouvez être également trouver une option dans les barre d'application et sur la page "tour" (par défaut).
Pour enregistrer les temps, il suffit d'appuyer sur le bouton de l'appareil photo de votre téléphone: Appuyez sur le bouton "Ajouter" à la page "tour" ou utilisez le bouton de la barre d'application!
Et voilà, profitez bien de Circle!</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>Bienvenue!</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Continuer</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>Il semble que ce soit la première fois que vous utilisiez la nouvelle version du Circle. Veuillez sélectionner une option:</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>Je suis un novice</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>J'ai déjà utilisé V1</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Ajouter hashtag</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Message personnalisé</value>
</data>
<data name="generalString" xml:space="preserve">
<value>Général</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>Mon temps: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Partager</value>
</data>
<data name="versionString" xml:space="preserve">
<value>Version</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Caché</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Plus gros</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Plus fin</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Le bord</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>Bordure blanche</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Erreur</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>Il n'y a pas de temps à partager.</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Partagez tout temps</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Voir les 3 chiffres pour les millisecondes</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Stop</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Minuteur</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Utiliser des temps delta</value>
</data>
</root>

View File

@@ -0,0 +1,257 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>nl</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Instellingen</value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Andere apps</value>
</data>
<data name="addString" xml:space="preserve">
<value>Tijd toevoegen</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Rate</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Resetten</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Feedback geven</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Probleem melden</value>
</data>
<data name="aboutString" xml:space="preserve">
<value>Over</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Tussen tijden</value>
</data>
<data name="startString" xml:space="preserve">
<value>Start</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Trillingen na het resetten van klok</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Toon "%b" knop</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Snel. Vlak. Gratis. Makkelijk te gebruiken. Circle.</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>Deze dingen zijn nieuw:
Totaal nieuw design;
Nieuwe AppBar;
Vastgelegde tijden zijn nu op een aparte pagina;
Nieuwe methoden om tijden vast te leggen;
Trilling kan worden ingeschakeld;
Optie om tijden te delen</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Het lijkt alsof dit de eerste keer is dat je de app gebruikt. Weet u zeker dat u de tutorial niet wilt zien?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>Eerste start</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>Welkom bij Circle! Circle is een makkelijk en minimalistische stopwatch voor uw Windows Phone.
Tik op de cirkel om de stopwatch te starten/stoppen.
Houd de cirkel ingedrukt voor een reset. U kunt ook een reset optie in de appbar en op de (standaard) "tussen tijden" pagina terug vinden.
Vastleggen van tussen tijden. Gewoon op de camera-knop van uw telefoon drukken, knop "toevoegen" op pagina "tussen tijden" of gebruik de appbar knop "tijd toevoegen".
Dat is het - veel plezier tijdens het gebruik van de Circle!</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>Welkom!</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Ga door</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>Het lijkt alsof dit de eerste keer is dat u de nieuwe versie van de Circle gebruikt. Selecteer een optie:</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>Ik ben een beginner</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>Ik heb Circle v1 al gebruikt</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Hashtag toevoegen</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Aangepaste bericht</value>
</data>
<data name="generalString" xml:space="preserve">
<value>Algemeen</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>Mijn tijd: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Delen</value>
</data>
<data name="versionString" xml:space="preserve">
<value>Versie</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Verborgen</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Dikker</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Dunner</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Cirkel rand</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>Witte rand</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Fout</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>Er zijn geen tijden om te delen.</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Deel allen tijde</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Toon 3 cijfers voor milliseconden</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Stop</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Timer</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Gebruik delta tijden</value>
</data>
</root>

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ResourceFlowDirection" xml:space="preserve">
<value>LeftToRight</value>
</data>
<data name="ResourceLanguage" xml:space="preserve">
<value>en</value>
</data>
<data name="settingsString" xml:space="preserve">
<value>Settings</value>
</data>
<data name="otherAppsString" xml:space="preserve">
<value>Other apps</value>
</data>
<data name="addString" xml:space="preserve">
<value>Add</value>
</data>
<data name="rateString" xml:space="preserve">
<value>Rate</value>
</data>
<data name="resetString" xml:space="preserve">
<value>Reset</value>
</data>
<data name="giveFeedbackString" xml:space="preserve">
<value>Give feedback</value>
</data>
<data name="reportBugString" xml:space="preserve">
<value>Report bug</value>
</data>
<data name="aboutString" xml:space="preserve">
<value>About</value>
</data>
<data name="lapsString" xml:space="preserve">
<value>Laps</value>
</data>
<data name="startString" xml:space="preserve">
<value>Start</value>
</data>
<data name="vibrateAtResetString" xml:space="preserve">
<value>Vibration after clock reset</value>
</data>
<data name="showAdditionalButtonsString" xml:space="preserve">
<value>Show "%b" button</value>
</data>
<data name="sloganString" xml:space="preserve">
<value>Fast. Flat. Free. Easy-to-use. Circle.</value>
</data>
<data name="changelogString" xml:space="preserve">
<value>These things are new:
Totally new design;
New AppBar;
Captured times are now on a seperate page;
New methods to capture times;
Vibration can be toggled;
Option to share times</value>
</data>
<data name="firstStartContentString" xml:space="preserve">
<value>Semms like this is the first time you're using the app. Are you sure that you don't want to see a tutorial?</value>
</data>
<data name="firstStartString" xml:space="preserve">
<value>First start</value>
</data>
<data name="tutorialString" xml:space="preserve">
<value>Welcome to Circle! Circle is an easy-to-use and minimalistic stopwatch for your Windows Phone.
Tap the circle to start/stop the stopwatch.
Hold down the circle for a reset. You can also find an option in the appbar and on the "Laps" page (by default).
To capture times just press the camera button on your phone, tap "Add" at "Laps" page or use the appbar button.
That's it - have fun while using Circle!</value>
</data>
<data name="welcomeString" xml:space="preserve">
<value>Welcome!</value>
</data>
<data name="continueString" xml:space="preserve">
<value>Continue</value>
</data>
<data name="introductionString" xml:space="preserve">
<value>It seems like this is the first time you're using the new version of Circle. Please select an option:</value>
</data>
<data name="newbieString" xml:space="preserve">
<value>I'm a newbie</value>
</data>
<data name="usedBeforeString" xml:space="preserve">
<value>I used Circle v1 before</value>
</data>
<data name="addHashtagString" xml:space="preserve">
<value>Add hashtag</value>
</data>
<data name="customMessageString" xml:space="preserve">
<value>Custom message</value>
</data>
<data name="generalString" xml:space="preserve">
<value>General</value>
</data>
<data name="myTimeString" xml:space="preserve">
<value>My time: &lt;time&gt; &lt;hashtag&gt;</value>
</data>
<data name="shareString" xml:space="preserve">
<value>Share</value>
</data>
<data name="versionString" xml:space="preserve">
<value>Version</value>
</data>
<data name="hiddenString" xml:space="preserve">
<value>Hidden</value>
</data>
<data name="thickerString" xml:space="preserve">
<value>Thicker</value>
</data>
<data name="thinnerString" xml:space="preserve">
<value>Thinner</value>
</data>
<data name="borderString" xml:space="preserve">
<value>Border</value>
</data>
<data name="whiteBorderString" xml:space="preserve">
<value>White border</value>
</data>
<data name="errorString" xml:space="preserve">
<value>Error</value>
</data>
<data name="noTimesString" xml:space="preserve">
<value>There are no times to share.</value>
</data>
<data name="shareAllTimesString" xml:space="preserve">
<value>Share all times</value>
</data>
<data name="showThreeDigitsString" xml:space="preserve">
<value>Show 3 digits for milliseconds</value>
</data>
<data name="stopString" xml:space="preserve">
<value>Stop</value>
</data>
<data name="timerString" xml:space="preserve">
<value>Timer</value>
</data>
<data name="useDeltaString" xml:space="preserve">
<value>Use delta times</value>
</data>
</root>

142
Circle/TimeControl.xaml Normal file
View File

@@ -0,0 +1,142 @@
<UserControl
x:Class="Circle.TimeControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="480"
Height="75"
Margin="0,5"
HorizontalAlignment="Center"
d:DesignHeight="60"
d:DesignWidth="480"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="White"
mc:Ignorable="d">
<Grid
x:Name="LayoutRoot"
HorizontalAlignment="Stretch"
Background="{StaticResource PhoneAccentBrush}"
Opacity="1">
<Grid.Resources>
<Storyboard x:Name="fadeInAnimation">
<DoubleAnimation
Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="Opacity"
From="0"
To="1"
Duration="0:0:0.2" />
</Storyboard>
<Storyboard x:Name="fadeOutAnimation" Completed="FadeOutAnimation_Completed">
<DoubleAnimation
Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="Opacity"
From="1"
To="0"
Duration="0:0:0.2" />
<DoubleAnimation
Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="Height"
From="60"
To="1"
Duration="0:0:0.1" />
</Storyboard>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="5" />
<RowDefinition />
<RowDefinition Height="5" />
</Grid.RowDefinitions>
<Rectangle
Grid.Row="0"
Fill="Black"
Opacity="0.4"
StrokeThickness="0" />
<Rectangle
Grid.Row="2"
Fill="Black"
Opacity="0.4"
StrokeThickness="0" />
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="0" />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="0" />
<ColumnDefinition Width="50" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<TextBlock
Name="numberTextBlock"
Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Fonts/roboto-Light.ttf#Roboto"
FontSize="36"
Foreground="White"
Text="00"
TextAlignment="Right" />
<TextBlock
Name="timeTextBlock"
Grid.Column="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Fonts/roboto-Thin.ttf#Roboto"
FontSize="36"
Foreground="White"
Text="0:00:000"
TextAlignment="Center" />
<!--<TextBlock Text="0:00:000" Foreground="White" FontSize="36" Grid.Column="3"
FontFamily="Fonts/roboto-Thin.ttf#Roboto" TextAlignment="Center"
HorizontalAlignment="Center" VerticalAlignment="Center" Name="deltaTextBlock"/>-->
<Button
Name="saveButton"
Grid.Column="4"
Height="60"
Margin="-10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Click="SaveButton_Click"
Content=""
FontFamily="Fonts/segmdl2.ttf#Segoe MDL2 Assets"
FontSize="26"
Foreground="White" />
<Button
Name="shareButton"
Grid.Column="5"
Height="60"
Margin="-10,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Click="ShareButton_Click"
Content=""
FontFamily="Fonts/segmdl2.ttf#Segoe MDL2 Assets"
FontSize="26"
Foreground="White" />
<Button
Name="removeButton"
Grid.Column="6"
Height="60"
Margin="-10,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Click="RemoveButton_Click"
Content=""
FontFamily="Fonts/segmdl2.ttf#Segoe MDL2 Assets"
FontSize="26"
Foreground="White" />
</Grid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,50 @@
using Circle.Resources;
using Microsoft.Phone.Tasks;
using System;
using System.IO.IsolatedStorage;
using System.Windows;
using System.Windows.Controls;
/*
* I wrote this code when I was 16(?) years old. It's bad and I'm gonna refactor it a lot.
*/
namespace Circle
{
public partial class TimeControl : UserControl
{
IsolatedStorageSettings settings;
public TimeControl()
{
InitializeComponent();
settings = IsolatedStorageSettings.ApplicationSettings;
this.Width = Application.Current.Host.Content.ActualWidth;
fadeInAnimation.Begin();
}
private void RemoveButton_Click(object sender, RoutedEventArgs e) => fadeOutAnimation.Begin();
private void FadeOutAnimation_Completed(object sender, EventArgs e)
{
new MainPage().RemoveTime(numberTextBlock.Text);
this.Visibility = Visibility.Collapsed;
}
private void ShareButton_Click(object sender, RoutedEventArgs e)
{
string time = timeTextBlock.Text;
ShareStatusTask shareTask = new ShareStatusTask();
if ((bool)settings["addHashtag"])
shareTask.Status = AppResources.myTimeString.Replace("<time>", time).Replace("<hashtag>", "#CircleStopwatch");
else
shareTask.Status = AppResources.myTimeString.Replace("<time>", time).Replace("<hashtag>", "");
shareTask.Show();
}
private void SaveButton_Click(object sender, RoutedEventArgs e)
{ }
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

27
Circle/circle_vcd.xml Normal file
View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.0">
<CommandSet xml:lang="de-de">
<CommandPrefix>Circle</CommandPrefix>
<Example>starte die Stoppuhr</Example>
<Command Name="start">
<Example>starte die Stoppuhr</Example>
<ListenFor>starte [die] Stoppuhr</ListenFor>
<Feedback>Stoppuhr wird gestartet... </Feedback>
<Navigate Target="MainPage.xaml?start=true"/>
</Command>
</CommandSet>
<CommandSet xml:lang="en">
<CommandPrefix>Circle</CommandPrefix>
<Example>please start the stopwatch</Example>
<Command Name="start">
<Example>please start the stopwatch</Example>
<ListenFor>[please] start the stopwatch</ListenFor>
<Feedback>Starting stopwatch...</Feedback>
<Navigate Target="MainPage.xaml?start=true"/>
</Command>
</CommandSet>
</VoiceCommands>

4
Circle/packages.config Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
</packages>