commit 6450e08713bf8e838696204a93cced9f39b8a297
parent aba2572477e650e73d22db8f92a4aa4ab508cec2
Author: Bharatvaj Hemanth <bharatvaj@yahoo.com>
Date: Thu, 3 Apr 2025 01:11:27 +0530
ARAM Version
- Added FTP Page
- And too many font files (this may be removed in the future)
Diffstat:
101 files changed, 10793 insertions(+), 2139 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,2 @@
+.vs/
+Thumbs.db
diff --git a/File360.sln b/File360.sln
@@ -1,7 +1,9 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Windows Phone
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "File360", "File360\File360.csproj", "{6DB737B7-6D8E-4901-86A4-3110A717C72F}"
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "File360", "File360\File360.csproj", "{08490F1C-404B-4B58-B97E-C23BB7A1B31D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -13,24 +15,24 @@ Global
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|ARM.ActiveCfg = Debug|ARM
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|ARM.Build.0 = Debug|ARM
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|ARM.Deploy.0 = Debug|ARM
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|x86.ActiveCfg = Debug|x86
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|x86.Build.0 = Debug|x86
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Debug|x86.Deploy.0 = Debug|x86
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|Any CPU.Build.0 = Release|Any CPU
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|Any CPU.Deploy.0 = Release|Any CPU
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|ARM.ActiveCfg = Release|ARM
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|ARM.Build.0 = Release|ARM
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|ARM.Deploy.0 = Release|ARM
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|x86.ActiveCfg = Release|x86
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|x86.Build.0 = Release|x86
- {6DB737B7-6D8E-4901-86A4-3110A717C72F}.Release|x86.Deploy.0 = Release|x86
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|Any CPU.ActiveCfg = Release|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|Any CPU.Build.0 = Release|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|Any CPU.Deploy.0 = Release|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|ARM.ActiveCfg = Debug|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|ARM.Build.0 = Debug|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|ARM.Deploy.0 = Debug|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|x86.ActiveCfg = Debug|x86
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|x86.Build.0 = Debug|x86
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Debug|x86.Deploy.0 = Debug|x86
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|Any CPU.Build.0 = Debug|Any CPU
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|Any CPU.Deploy.0 = Debug|Any CPU
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|ARM.ActiveCfg = Release|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|ARM.Build.0 = Release|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|ARM.Deploy.0 = Release|ARM
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|x86.ActiveCfg = Release|x86
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|x86.Build.0 = Release|x86
+ {08490F1C-404B-4B58-B97E-C23BB7A1B31D}.Release|x86.Deploy.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/File360/Addresser.cs b/File360/Addresser.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Media;
+using WinRTXamlToolkit.Controls;
+namespace File360
+{
+ public class Addresser:StackPanel
+ {
+ public bool root = true;
+ public void InitializeComponent()
+ {
+ HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left;
+ VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center;
+ Orientation = Windows.UI.Xaml.Controls.Orientation.Horizontal;
+ //StackPanel stk = new StackPanel();
+ //stk.Orientation = Windows.UI.Xaml.Controls.Orientation.Horizontal;
+ //TextBlock content = new TextBlock();
+ //TextBlock txt = new TextBlock();
+ //stk.Children.Add(content);
+ //stk.Children.Add(txt);
+ //prev.Content = stk;
+
+ }
+
+ public bool Root
+ {
+ get { return root; }
+ set { root = value; }
+ }
+
+ public void Address(string value, string path)
+ {
+ Button current = new Button();
+ current.BorderThickness = new Thickness(0);
+ StackPanel currentStk = new StackPanel();
+ currentStk.Orientation = Windows.UI.Xaml.Controls.Orientation.Horizontal;
+ TextBlock content = new TextBlock();
+ TextBlock txtH = new TextBlock();
+ current.Content = currentStk;
+ txtH.FontFamily = new FontFamily("Assets/Font/iconFont.ttf#iconfont");
+ txtH.Text = ".";
+ txtH.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center;
+ txtH.FontSize = 10;
+ //txtH.Foreground = (SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"];
+ //content.FontFamily = new FontFamily("Assets/Font/Custom/Raleway-Light.ttf#Raleway");
+ content.TextLineBounds = TextLineBounds.Tight;
+ content.TextAlignment = TextAlignment.Center;
+ content.Text = value;
+ currentStk.Children.Add(content);
+ currentStk.Children.Add(txtH);
+ current.Background = null;
+ current.Height = this.ActualHeight;
+ current.MinWidth = 0;
+ current.Tag = path;
+ Children.Add(current);
+ root = false;
+ }
+ public void Reset()
+ {
+ Children.Clear();
+ }
+ public void RemoveLast()
+ {
+ Children.RemoveAt(Children.Count - 1);
+ if (Children.Count == 0) root = true;
+ else root = false;
+ }
+ public void SelectedFolder(int foldersNo)
+ {
+ for (int i = Children.Count-1; i < (Children.Count-foldersNo-1); i--)
+ {
+ Children.RemoveAt(i);
+ }
+ }
+
+ }
+}
diff --git a/File360/App.xaml b/File360/App.xaml
@@ -1,693 +1,1478 @@
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" xmlns:es="clr-namespace:Microsoft.Expression.Shapes;assembly=Microsoft.Expression.Drawing" mc:Ignorable="d"
+ xmlns:local="using:File360" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:Controls="using:WinRTXamlToolkit.Controls" xmlns:Interactivity="using:WinRTXamlToolkit.Interactivity" xmlns:Behaviors="using:WinRTXamlToolkit.Controls.Behaviors" mc:Ignorable="d"
x:Class="File360.App"
>
-
- <!--Application Resources-->
<Application.Resources>
- <local:LocalizedStrings xmlns:local="clr-namespace:File360" x:Key="LocalizedStrings"/>
-
- <Style x:Key="SideMenuInitiater" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates" ec:ExtendedVisualStateManager.UseFluidLayout="True">
- <VisualStateGroup.Transitions>
- <VisualTransition/>
- </VisualStateGroup.Transitions>
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle1">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle2">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <Thickness>12</Thickness>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle1">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle2">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <VisualStateManager.CustomVisualStateManager>
- <ec:ExtendedVisualStateManager/>
- </VisualStateManager.CustomVisualStateManager>
- <Rectangle x:Name="rectangle2" Fill="{StaticResource PhoneAccentBrush}" HorizontalAlignment="Left" Height="3" Margin="15,16,0,0" VerticalAlignment="Top" Width="33"/>
- <Rectangle x:Name="rectangle1" Fill="{StaticResource PhoneAccentBrush}" HorizontalAlignment="Left" Height="3" Margin="15,22,0,0" VerticalAlignment="Top" Width="33"/>
- <Rectangle x:Name="rectangle" Fill="{StaticResource PhoneAccentBrush}" HorizontalAlignment="Left" Height="3" Margin="15,28,0,0" VerticalAlignment="Top" Width="33"/>
- <Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
+
+ <Thickness x:Key="PhoneBorderThickness">2.5</Thickness>
+ <FontFamily x:Key="PhoneFontFamilyNormal">Segoe WP</FontFamily>
+ <FontWeight x:Key="PhoneButtonFontWeight">Semibold</FontWeight>
+ <x:Double x:Key="TextStyleLargeFontSize">18.14</x:Double>
+ <Thickness x:Key="PhoneButtonContentPadding">9.5,0,9.5,3.5</Thickness>
+ <x:Double x:Key="PhoneButtonMinHeight">57.5</x:Double>
+ <x:Double x:Key="PhoneButtonMinWidth">109</x:Double>
+ <Thickness x:Key="PhoneTouchTargetOverhang">0,9.5</Thickness>
+
+ <Style x:Key="ToggleButtonTemplate" TargetType="ToggleButton">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ToggleButton">
+ <Grid Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed"/>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Checked">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Null}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPointerOver">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPressed"/>
+ <VisualState x:Name="CheckedDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="0.4"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Indeterminate"/>
+ <VisualState x:Name="IndeterminatePointerOver"/>
+ <VisualState x:Name="IndeterminatePressed"/>
+ <VisualState x:Name="IndeterminateDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="EnabledBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="{ThemeResource PhoneTouchTargetOverhang}">
+ <ContentPresenter x:Name="EnabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="-2.5,-0.5,-2.333,-2.5" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="109" Height="63"/>
+ </Border>
+ <Border x:Name="DisabledBackground" BorderBrush="{ThemeResource ButtonDisabledBorderThemeBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" IsHitTestVisible="False" Margin="{ThemeResource PhoneTouchTargetOverhang}" Visibility="Collapsed">
+ <ContentPresenter x:Name="DisabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{ThemeResource ButtonDisabledForegroundThemeBrush}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="SideBarButton" TargetType="ToggleButton">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ToggleButton">
+ <Grid x:Name="grid" Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed"/>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Checked">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPointerOver">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPressed"/>
+ <VisualState x:Name="CheckedDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="0.4"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Indeterminate"/>
+ <VisualState x:Name="IndeterminatePointerOver"/>
+ <VisualState x:Name="IndeterminatePressed"/>
+ <VisualState x:Name="IndeterminateDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="EnabledBackground" Background="{TemplateBinding Background}" Height="{TemplateBinding Height}">
+ <ContentPresenter x:Name="EnabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ <Border x:Name="DisabledBackground" BorderBrush="{ThemeResource ButtonDisabledBorderThemeBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" IsHitTestVisible="False" Margin="{ThemeResource PhoneTouchTargetOverhang}" Visibility="Collapsed">
+ <ContentPresenter x:Name="DisabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{ThemeResource ButtonDisabledForegroundThemeBrush}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+ <SolidColorBrush x:Key="ButtonDisabledBackgroundThemeBrush" Color="Transparent"/>
+
+ <Style x:Key="DialogBoxButton" TargetType="Button">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Grid x:Name="Grid" Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualStateGroup.Transitions>
+ <VisualTransition From="Pressed" To="PointerOver">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition From="PointerOver" To="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition From="Pressed" To="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ </VisualStateGroup.Transitions>
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <PointerDownThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="Border" BorderBrush="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderTransformOrigin="0.5,0.5">
+ <Border.Projection>
+ <PlaneProjection/>
+ </Border.Projection>
+ <Border.RenderTransform>
+ <CompositeTransform/>
+ </Border.RenderTransform>
+ <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style TargetType="Button">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Button">
+ <Grid x:Name="Grid" Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualStateGroup.Transitions>
+ <VisualTransition From="Pressed" To="PointerOver">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition From="PointerOver" To="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition From="Pressed" To="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ <DoubleAnimation Duration="0:0:0.1" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ContentPresenter">
+ <DoubleAnimation.EasingFunction>
+ <CircleEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ </VisualTransition>
+ </VisualStateGroup.Transitions>
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <DoubleAnimation Duration="0:0:0.2" To="0.5" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ContentPresenter" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <CubicEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
+ <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="DefaultToggleButton" TargetType="ToggleButton">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ToggleButton">
+ <Grid x:Name="Grid" Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualStateGroup.Transitions>
+ <VisualTransition From="Pressed" To="PointerOver">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition From="PointerOver" To="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition From="Pressed" To="Normal">
+ <Storyboard>
+ <PointerUpThemeAnimation Storyboard.TargetName="Grid"/>
+ </Storyboard>
+ </VisualTransition>
+ </VisualStateGroup.Transitions>
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <!--<PointerDownThemeAnimation Storyboard.TargetName="Grid"/>-->
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPressedForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppBarItemDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
+ <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <x:Double x:Key="TextControlThemeMinWidth">51</x:Double>
+ <x:Double x:Key="TextControlThemeMinHeight">34</x:Double>
+ <Thickness x:Key="TextControlBorderThemeThickness">2.5</Thickness>
+ <x:Double x:Key="ContentControlFontSize">20.26</x:Double>
+ <Thickness x:Key="TextControlThemePadding">7,0.8,8,0</Thickness>
+ <Thickness x:Key="TextControlMarginThemeThickness">0,9.5,0,9.5</Thickness>
+ <Thickness x:Key="TextControlHeaderMarginThemeThickness">0,0,0,4.8</Thickness>
+ <SolidColorBrush x:Key="TextBoxDisabledBackgroundThemeBrush" Color="Transparent"/>
+ <x:Double x:Key="TextControlBorderThemeOpacity">0.8</x:Double>
+
+ <SolidColorBrush x:Key="SliderBorderThemeBrush" Color="Transparent"/>
+ <Thickness x:Key="SliderBorderThemeThickness">0</Thickness>
+ <FontFamily x:Key="ContentControlThemeFontFamily">Segoe WP</FontFamily>
+ <x:Double x:Key="ControlContentThemeFontSize">12</x:Double>
+ <x:Double x:Key="SliderOutsideTickBarThemeHeight">5</x:Double>
+ <x:Double x:Key="SliderTrackThemeHeight">9</x:Double>
+ <SolidColorBrush x:Key="SliderDisabledBorderThemeBrush" Color="Transparent"/>
+ <Style x:Key="SliderRing" TargetType="Slider">
+ <Setter Property="Background" Value="{ThemeResource SliderTrackBackgroundThemeBrush}"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource SliderBorderThemeBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource SliderBorderThemeThickness}"/>
+ <Setter Property="Foreground" Value="{ThemeResource SliderTrackDecreaseBackgroundThemeBrush}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
+ <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
+ <Setter Property="ManipulationMode" Value="None"/>
+ <Setter Property="IsThumbToolTipEnabled" Value="False"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Slider">
+ <Grid Margin="{TemplateBinding Padding}">
+ <Grid.Resources>
+ <Style x:Key="SliderThumbStyle" TargetType="Thumb">
+ <Setter Property="BorderThickness" Value="0.8"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource SliderThumbBorderThemeBrush}"/>
+ <Setter Property="Background" Value="{ThemeResource SliderThumbBackgroundThemeBrush}"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Thumb">
+ <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"/>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ </Grid.Resources>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="VerticalBorder">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalDecreaseRect">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTrackDecreaseDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalTrackRect">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTrackDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="HorizontalTrackRect">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTrackDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="VerticalDecreaseRect">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTrackDecreaseDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="VerticalTrackRect">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTrackDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="VerticalTrackRect">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTrackDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="VerticalThumb">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderThumbDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="VerticalThumb">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderThumbDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="TopTickBar">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTickMarkOutsideDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalInlineTickBar">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTickMarkInlineDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="BottomTickBar">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTickMarkOutsideDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="LeftTickBar">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTickMarkOutsideDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="VerticalInlineTickBar">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTickMarkInlineDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="RightTickBar">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SliderTickMarkOutsideDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Style="{StaticResource HeaderContentPresenterStyle}"/>
+ <Grid x:Name="SliderContainer" Background="Transparent" Grid.Row="1">
+ <Grid x:Name="HorizontalTemplate">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="17.5"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="30.5"/>
+ </Grid.RowDefinitions>
+ <Rectangle x:Name="HorizontalTrackRect" Grid.ColumnSpan="3" Fill="{TemplateBinding Background}" Grid.Row="1" Stroke="{ThemeResource SliderTrackBorderThemeBrush}"/>
+ <Rectangle x:Name="HorizontalDecreaseRect" Fill="{TemplateBinding Foreground}" Grid.Row="1"/>
+ <TickBar x:Name="TopTickBar" Grid.ColumnSpan="3" Fill="{ThemeResource SliderTickmarkOutsideBackgroundThemeBrush}" Height="{ThemeResource SliderOutsideTickBarThemeHeight}" Margin="-4.5,0" Visibility="Collapsed"/>
+ <TickBar x:Name="HorizontalInlineTickBar" Grid.ColumnSpan="3" Fill="{ThemeResource SliderTickMarkInlineBackgroundThemeBrush}" Height="{ThemeResource SliderTrackThemeHeight}" Margin="-4.5,0" Grid.Row="1" Visibility="Collapsed"/>
+ <TickBar x:Name="BottomTickBar" Grid.ColumnSpan="3" Fill="{ThemeResource SliderTickmarkOutsideBackgroundThemeBrush}" Height="{ThemeResource SliderOutsideTickBarThemeHeight}" Margin="-4.5,0" Grid.Row="2" Visibility="Collapsed"/>
+ <Ellipse x:Name="ellipse" Grid.ColumnSpan="3" Fill="{ThemeResource PhoneAccentBrush}" HorizontalAlignment="Left" Grid.RowSpan="3" Width="30" Height="{Binding Width, ElementName=ellipse}" StrokeThickness="7" Margin="0,15,0,30" RenderTransformOrigin="0.5,0.5">
+ <Ellipse.RenderTransform>
+ <CompositeTransform/>
+ </Ellipse.RenderTransform>
+ <Ellipse.Stroke>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Ellipse.Stroke>
+ </Ellipse>
+ <Thumb x:Name="HorizontalThumb" AutomationProperties.AccessibilityView="Raw" Grid.Column="1" DataContext="{TemplateBinding Value}" Style="{StaticResource SliderThumbStyle}" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" Height="20" BorderBrush="{x:Null}" Grid.RowSpan="3" Margin="-4,-13,-30,7" d:LayoutOverrides="LeftPosition, RightPosition" Background="{x:Null}" Width="20" HorizontalAlignment="Center"/>
+ <Rectangle x:Name="HorizontalBorder" Grid.ColumnSpan="3" Grid.RowSpan="3" StrokeThickness="{TemplateBinding BorderThickness}" RadiusX="10"/>
+ </Grid>
+ <Grid x:Name="VerticalTemplate" Visibility="Collapsed">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="13.5"/>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="13.5"/>
+ </Grid.ColumnDefinitions>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Rectangle x:Name="VerticalTrackRect" Grid.Column="1" Fill="{TemplateBinding Background}" Grid.RowSpan="3" Stroke="{ThemeResource SliderTrackBorderThemeBrush}"/>
+ <Rectangle x:Name="VerticalDecreaseRect" Grid.Column="1" Fill="{TemplateBinding Foreground}" Grid.Row="2"/>
+ <TickBar x:Name="LeftTickBar" Fill="{ThemeResource SliderTickmarkOutsideBackgroundThemeBrush}" HorizontalAlignment="Right" Margin="0,0,1.5,0" Grid.RowSpan="3" Visibility="Collapsed" Width="{ThemeResource SliderOutsideTickBarThemeHeight}"/>
+ <TickBar x:Name="VerticalInlineTickBar" Grid.Column="1" Fill="{ThemeResource SliderTickMarkInlineBackgroundThemeBrush}" Grid.RowSpan="3" Visibility="Collapsed" Width="{ThemeResource SliderTrackThemeHeight}"/>
+ <TickBar x:Name="RightTickBar" Grid.Column="2" Fill="{ThemeResource SliderTickmarkOutsideBackgroundThemeBrush}" HorizontalAlignment="Left" Margin="1.5,0,0,0" Grid.RowSpan="3" Visibility="Collapsed" Width="{ThemeResource SliderOutsideTickBarThemeHeight}"/>
+ <Thumb x:Name="VerticalThumb" AutomationProperties.AccessibilityView="Raw" Background="{ThemeResource SliderThumbBackgroundThemeBrush}" Grid.Column="1" DataContext="{TemplateBinding Value}" Height="{ThemeResource SliderTrackThemeHeight}" Grid.Row="1" Style="{StaticResource SliderThumbStyle}" Width="{ThemeResource SliderTrackThemeHeight}"/>
+ <Rectangle x:Name="VerticalBorder" Grid.Column="1" Grid.RowSpan="3" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}"/>
+ </Grid>
+ </Grid>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="ToggleButtonStyle" TargetType="ToggleButton">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ToggleButton">
+ <Grid Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="border">
+ <EasingDoubleKeyFrame KeyTime="0" Value="0.005"/>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1"/>
+ </DoubleAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Checked">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneAccentBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPointerOver">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPressed">
+ <Storyboard>
+ <DoubleAnimation Duration="0:0:0.1" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="border" d:IsOptimized="True"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="0.4"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Indeterminate"/>
+ <VisualState x:Name="IndeterminatePointerOver"/>
+ <VisualState x:Name="IndeterminatePressed"/>
+ <VisualState x:Name="IndeterminateDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="EnabledBackground" BorderThickness="{TemplateBinding BorderThickness}" Margin="{ThemeResource PhoneTouchTargetOverhang}">
+ <ContentPresenter x:Name="EnabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ <Border x:Name="DisabledBackground" BorderBrush="{ThemeResource ButtonDisabledBorderThemeBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" IsHitTestVisible="False" Margin="{ThemeResource PhoneTouchTargetOverhang}" Visibility="Collapsed">
+ <ContentPresenter x:Name="DisabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{ThemeResource ButtonDisabledForegroundThemeBrush}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ <Border x:Name="border" Margin="0" VerticalAlignment="Center" Background="#7F919191" CornerRadius="20" BorderThickness="0,0,0,1" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" Height="56" Width="{TemplateBinding ActualWidth}" Opacity="0.005" >
+ <Border.RenderTransform>
+ <CompositeTransform TranslateX="-50"/>
+ </Border.RenderTransform>
+ <TextBlock x:Name="textBlock" Margin="0" TextWrapping="Wrap" Text="{TemplateBinding Content}" FontFamily="Assets/Font/iconfont.ttf#iconfont" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Thickness x:Key="PivotPortraitThemePadding">19,38,0,0</Thickness>
+ <Thickness x:Key="PivotLandscapeThemePadding">19,25,0,0</Thickness>
+ <Style x:Key="PivotStyle" TargetType="Pivot">
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Padding" Value="0"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="ItemsPanel">
+ <Setter.Value>
+ <ItemsPanelTemplate>
+ <Grid/>
+ </ItemsPanelTemplate>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Pivot">
+ <Grid x:Name="RootElement" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="Orientation">
+ <VisualState x:Name="Portrait">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="TitleContentControl">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPortraitThemePadding}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Landscape">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="TitleContentControl">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotLandscapeThemePadding}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <ContentControl x:Name="TitleContentControl" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" Style="{StaticResource PivotTitleContentControlStyle}"/>
+ <ScrollViewer x:Name="ScrollViewer" HorizontalSnapPointsAlignment="Center" HorizontalSnapPointsType="MandatorySingle" HorizontalScrollBarVisibility="Hidden" Margin="0,0,0,-0.167" Template="{StaticResource ScrollViewerScrollBarlessTemplate}" VerticalSnapPointsType="None" VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" VerticalContentAlignment="Stretch" ZoomMode="Disabled" Grid.RowSpan="2" d:LayoutOverrides="TopMargin, BottomMargin">
+ <PivotPanel x:Name="Panel" VerticalAlignment="Stretch">
+ <PivotHeaderPanel x:Name="Header">
+ <PivotHeaderPanel.RenderTransform>
+ <CompositeTransform x:Name="HeaderTranslateTransform" TranslateX="0"/>
+ </PivotHeaderPanel.RenderTransform>
+ </PivotHeaderPanel>
+ <ItemsPresenter x:Name="PivotItemPresenter">
+ <ItemsPresenter.RenderTransform>
+ <TranslateTransform x:Name="ItemsPresenterTranslateTransform" X="0"/>
+ </ItemsPresenter.RenderTransform>
+ </ItemsPresenter>
+ </PivotPanel>
+ </ScrollViewer>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <SolidColorBrush x:Key="ListBoxBorderThemeBrush" Color="Transparent"/>
+ <Thickness x:Key="ListBoxBorderThemeThickness">1.5</Thickness>
+ <Style x:Key="ListBoxStyle" TargetType="ListBox">
+ <Setter Property="Foreground" Value="{ThemeResource ListBoxForegroundThemeBrush}"/>
+ <Setter Property="Background" Value="{ThemeResource ListBoxBackgroundThemeBrush}"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource ListBoxBorderThemeBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource ListBoxBorderThemeThickness}"/>
+ <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
+ <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
+ <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled"/>
+ <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.ZoomMode" Value="Disabled"/>
+ <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
+ <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True"/>
+ <Setter Property="IsTabStop" Value="False"/>
+ <Setter Property="TabNavigation" Value="Once"/>
+ <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
+ <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
+ <Setter Property="ItemsPanel">
+ <Setter.Value>
+ <ItemsPanelTemplate>
+ <VirtualizingStackPanel/>
+ </ItemsPanelTemplate>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ListBox">
+ <Border x:Name="LayoutRoot" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="LayoutRoot">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="LayoutRoot">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <ScrollViewer x:Name="ScrollViewer" AutomationProperties.AccessibilityView="Raw" BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Padding="{TemplateBinding Padding}" TabNavigation="{TemplateBinding TabNavigation}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}" Background="{x:Null}">
+ <ItemsPresenter/>
+ </ScrollViewer>
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="ThumbStyle" TargetType="Thumb">
+ <Setter Property="Background" Value="{ThemeResource ThumbBackgroundThemeBrush}"/>
+ <Setter Property="BorderThickness" Value="0.8"/>
+ <Setter Property="IsTabStop" Value="False"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource ThumbBorderThemeBrush}"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Thumb">
+ <Grid>
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualStateGroup.Transitions>
+ <VisualTransition GeneratedDuration="0:0:0.2"/>
+ </VisualStateGroup.Transitions>
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="Background" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="BackgroundPressed" d:IsOptimized="True"/>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="BackgroundPressed">
+ <DiscreteObjectKeyFrame KeyTime="0">
+ <DiscreteObjectKeyFrame.Value>
+ <SolidColorBrush Color="{StaticResource PhoneForegroundColor}"/>
+ </DiscreteObjectKeyFrame.Value>
+ </DiscreteObjectKeyFrame>
+ </ObjectAnimationUsingKeyFrames>
+ <DoubleAnimation Duration="0:0:0.15" To="-20" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="BackgroundPressed" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.15" To="1.5" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="BackgroundPressed"/>
+ <DoubleAnimation Duration="0:0:0.15" To="1.5" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="BackgroundPressed"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled"/>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="Background" Width="30" Height="30">
+ <Ellipse x:Name="ellipse1" StrokeThickness="5" Height="{Binding Width, ElementName=ellipse1}" >
+ <Ellipse.Stroke>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </Ellipse.Stroke>
+ <Ellipse.Fill>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Ellipse.Fill>
+ </Ellipse>
+ </Border>
+ <Border x:Name="BackgroundPressed" Width="30" Height="15" BorderThickness="0" RenderTransformOrigin="0.5,0.5" Opacity="0" CornerRadius="5">
+ <Border.RenderTransform>
+ <CompositeTransform/>
+ </Border.RenderTransform>
+ <TextBlock Margin="2" x:Name="textBlock" Text="25:32" FontSize="6" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" HorizontalAlignment="Center" VerticalAlignment="Top">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
</Style>
-
- <Style x:Key="CurvedTextBox" TargetType="TextBox">
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
- <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
- <Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}"/>
- <Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="Padding" Value="2"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="TextBox">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Stroke)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <SolidColorBrush Color="White"/>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Foreground)" Storyboard.TargetName="ContentElement">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <SolidColorBrush Color="Black"/>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled"/>
- <VisualState x:Name="ReadOnly">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="MainBorder">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Collapsed</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ReadonlyBorder">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <Visibility>Visible</Visibility>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ReadonlyBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ReadonlyBorder">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- <VisualStateGroup x:Name="FocusStates">
- <VisualState x:Name="Focused">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <SolidColorBrush Color="White"/>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Stroke)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Foreground)" Storyboard.TargetName="ContentElement">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <SolidColorBrush Color="Black"/>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Unfocused"/>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Rectangle x:Name="rectangle" Fill="{StaticResource PhoneDisabledBrush}" HorizontalAlignment="Left" Height="56" Stroke="{StaticResource PhoneInactiveBrush}" VerticalAlignment="Top" Width="216" RadiusY="29" RadiusX="29" Margin="0,10,0,0"/>
- <Border x:Name="MainBorder" BorderThickness="{TemplateBinding BorderThickness}" Margin="{StaticResource PhoneTouchTargetOverhang}"/>
- <Border x:Name="ReadonlyBorder" BorderBrush="{StaticResource PhoneDisabledBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" Margin="{StaticResource PhoneTouchTargetOverhang}" Visibility="Collapsed"/>
- <Border BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" Margin="{StaticResource PhoneTouchTargetOverhang}">
- <ContentControl x:Name="ContentElement" BorderThickness="0" HorizontalContentAlignment="Stretch" Margin="{StaticResource PhoneTextBoxInnerMargin}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch" Foreground="{StaticResource PhoneBackgroundBrush}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="SearchButton" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver"/>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <SolidColorBrush Color="White"/>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled"/>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="10" Background="{StaticResource PhoneAccentBrush}"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="MainBarButton" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="ellipse">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneChromeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0">
- <DiscreteObjectKeyFrame.Value>
- <ImageBrush ImageSource="greyhome.png" Stretch="Uniform"/>
- </DiscreteObjectKeyFrame.Value>
- </DiscreteObjectKeyFrame>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="ellipse">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneChromeBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="rectangle">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Ellipse x:Name="ellipse" HorizontalAlignment="Left" Height="39" Margin="17,16,0,0" VerticalAlignment="Top" Width="40" Fill="{StaticResource PhoneAccentBrush}"/>
- <Rectangle x:Name="rectangle" HorizontalAlignment="Left" Height="21" VerticalAlignment="Top" Width="16" Margin="29,25,0,0" Fill="{StaticResource PhoneChromeBrush}"/>
- <Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="SliderStyle" TargetType="Slider">
- <Setter Property="BorderThickness" Value="0"/>
- <Setter Property="BorderBrush" Value="Transparent"/>
- <Setter Property="Maximum" Value="10"/>
- <Setter Property="Minimum" Value="0"/>
- <Setter Property="Value" Value="0"/>
- <Setter Property="Background" Value="{StaticResource PhoneChromeBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneAccentBrush}"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Slider">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver"/>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <DoubleAnimation Duration="0" To="0.1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HorizontalTrack"/>
- <DoubleAnimation Duration="0" To="0.1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="VerticalTrack"/>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalFill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="VerticalFill">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Grid x:Name="HorizontalTemplate" Margin="{StaticResource PhoneHorizontalMargin}">
- <Rectangle HorizontalAlignment="Left" Height="24" Margin="0,16,0,0" VerticalAlignment="Top" Width="282" RadiusY="12" RadiusX="12" RenderTransformOrigin="0.5,0.542" Opacity="0.25" Fill="Black"/>
- <Rectangle x:Name="HorizontalTrack" Fill="{TemplateBinding Background}" Height="12" IsHitTestVisible="False" Margin="0,22,0,50"/>
- <Rectangle x:Name="HorizontalFill" Fill="{TemplateBinding Foreground}" Height="12" IsHitTestVisible="False" Margin="0,22,0,50">
- <Rectangle.Clip>
- <RectangleGeometry Rect="0, 0, 6, 12"/>
- </Rectangle.Clip>
- </Rectangle>
- <Rectangle x:Name="HorizontalCenterElement" Fill="{StaticResource PhoneForegroundBrush}" HorizontalAlignment="Left" Height="24" Margin="0,16,0,44" Width="12">
- <Rectangle.RenderTransform>
- <TranslateTransform/>
- </Rectangle.RenderTransform>
- </Rectangle>
- </Grid>
- <Grid x:Name="VerticalTemplate" Margin="{StaticResource PhoneVerticalMargin}">
- <Rectangle x:Name="VerticalTrack" Fill="{TemplateBinding Background}" IsHitTestVisible="False" Margin="18,0,18,0" Width="12"/>
- <Rectangle x:Name="VerticalFill" Fill="{TemplateBinding Foreground}" IsHitTestVisible="False" Margin="18,0,18,0" Width="12">
- <Rectangle.Clip>
- <RectangleGeometry Rect="0, 0, 12, 6"/>
- </Rectangle.Clip>
- </Rectangle>
- <Rectangle x:Name="VerticalCenterElement" Fill="{StaticResource PhoneForegroundBrush}" Height="12" Margin="12,0,12,0" VerticalAlignment="Top" Width="24">
- <Rectangle.RenderTransform>
- <TranslateTransform/>
- </Rectangle.RenderTransform>
- </Rectangle>
- </Grid>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="Play" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneButtonBasePressedForegroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}" Background="{StaticResource PhoneChromeBrush}">
- <Border.OpacityMask>
- <ImageBrush Stretch="Uniform" ImageSource="/Resources/Assets/Images/play.png"/>
- </Border.OpacityMask>
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="Forward" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ColorAnimation Duration="0" To="{StaticResource PhoneAccentColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ButtonBackground" d:IsOptimized="True"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled"/>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
- <Border.Background>
- <SolidColorBrush Color="{StaticResource PhoneChromeColor}"/>
- </Border.Background>
- <Border.OpacityMask>
- <ImageBrush Stretch="Uniform" ImageSource="Resources/Assets/Images/next.png"/>
- </Border.OpacityMask>
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{StaticResource PhoneAccentBrush}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="Previous" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal">
- <Storyboard>
- <ColorAnimation Duration="0" To="#FF1F1F1F" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ButtonBackground" d:IsOptimized="True"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ColorAnimation Duration="0" To="{StaticResource PhoneAccentColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ButtonBackground" d:IsOptimized="True"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled"/>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
- <Border.Background>
- <SolidColorBrush Color="{StaticResource PhoneChromeColor}"/>
- </Border.Background>
- <Border.OpacityMask>
- <ImageBrush ImageSource="Resources/Assets/Images/previous.png" Stretch="Uniform"/>
- </Border.OpacityMask>
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{StaticResource PhoneTextBoxBrush}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="ButtonTemplate" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver"/>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Foreground="{StaticResource PhoneInverseBackgroundBrush}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="PlainButtonTemplate" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent" Margin="0,1,0,19">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Foreground)" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Margin="3,3,0,0"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="ButtonPlay" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background)" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneButtonBasePressedForegroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ColorAnimation Duration="0" To="{StaticResource PhoneAccentColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ButtonBackground" d:IsOptimized="True"/>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
- <Border.Background>
- <SolidColorBrush Color="#FF1F1F1F"/>
- </Border.Background>
- <Border.OpacityMask>
- <ImageBrush Stretch="Uniform" ImageSource="Resources/Assets/Images/play.png"/>
- </Border.OpacityMask>
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <Style x:Key="MusicCD" TargetType="Button">
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
- <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
- <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
- <Setter Property="Padding" Value="10,5,10,6"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Normal"/>
- <VisualState x:Name="MouseOver">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Stroke)" Storyboard.TargetName="arc">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="arc1">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneButtonBasePressedForegroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Stroke)" Storyboard.TargetName="arc">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill)" Storyboard.TargetName="arc1">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneInverseBackgroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- <VisualState x:Name="Disabled">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
- </Border>
- <es:Arc x:Name="arc" ArcThickness="35" ArcThicknessUnit="Pixel" EndAngle="360" HorizontalAlignment="Left" Height="100" Stretch="None" StartAngle="0" UseLayoutRounding="False" VerticalAlignment="Top" Width="100" Fill="{StaticResource PhoneChromeBrush}"/>
- <es:Arc x:Name="arc1" ArcThickness="7" ArcThicknessUnit="Pixel" EndAngle="360" Fill="{StaticResource PhoneAccentBrush}" HorizontalAlignment="Left" Height="35.53" Margin="33.665,31.999,0,0" Stretch="None" StartAngle="0" UseLayoutRounding="False" VerticalAlignment="Top" Width="32.77" Stroke="{StaticResource PhoneDisabledBrush}"/>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Application.Resources>
- <Application.ApplicationLifetimeObjects>
- <!--Required object that handles lifetime events for the application-->
- <shell:PhoneApplicationService
- Launching="Application_Launching" Closing="Application_Closing"
- Activated="Application_Activated" Deactivated="Application_Deactivated"/>
- </Application.ApplicationLifetimeObjects>
-</Application>
-\ No newline at end of file
+ <Style x:Key="SliderTemplate" TargetType="Slider">
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="Slider">
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="3*" />
+ <ColumnDefinition Width="7*"/>
+ <ColumnDefinition Width="Auto" />
+ </Grid.ColumnDefinitions>
+
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed">
+ <Storyboard>
+ <DoubleAnimation Duration="0:0:0.1" To="2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="HorizontalThumb" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.1" To="2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="HorizontalThumb" d:IsOptimized="True"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Disabled"/>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+
+ <Grid x:Name="HorizontalTemplate" Grid.Column="1" Grid.ColumnSpan="2" d:LayoutOverrides="TopMargin, BottomMargin, TopPosition, BottomPosition">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="*" />
+ </Grid.ColumnDefinitions>
+
+ <Rectangle x:Name="HorizontalTrackRect"
+ Grid.Column="0"
+ Grid.ColumnSpan="3"
+ HorizontalAlignment="Stretch"
+ VerticalAlignment="Center"
+ Stretch="Fill"
+ Fill="#7B838A"
+ Height="5" StrokeThickness="0" />
+
+ <Thumb x:Name="HorizontalThumb"
+ Grid.Column="1" Style="{StaticResource ThumbStyle}" d:LayoutOverrides="TopPosition, BottomPosition" RenderTransformOrigin="0.5,0.5" BorderThickness="0" HorizontalAlignment="Left" Width="30" >
+ <Thumb.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </Thumb.Background>
+ <Thumb.RenderTransform>
+ <CompositeTransform/>
+ </Thumb.RenderTransform>
+ </Thumb>
+
+ <Rectangle x:Name="HorizontalDecreaseRect"
+ Grid.Column="0"
+ Fill="{ThemeResource PhoneAccentBrush}"
+ Height="5" />
+
+ </Grid>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <x:Double x:Key="TextStyleExtraLargeFontSize">25.5</x:Double>
+ <SolidColorBrush x:Key="ToggleSwitchTrackBorderThemeBrush" Color="Transparent"/>
+ <Style TargetType="ToggleSwitch">
+ <Setter Property="Foreground" Value="{ThemeResource ToggleSwitchForegroundThemeBrush}"/>
+ <Setter Property="HorizontalAlignment" Value="Stretch"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="HorizontalContentAlignment" Value="Left"/>
+ <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
+ <Setter Property="FontWeight" Value="SemiBold"/>
+ <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Padding" Value="0,0,25.5,0"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ToggleSwitch">
+ <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed"/>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="OffContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="OnContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchKnob">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Stroke" Storyboard.TargetName="SwitchKnob">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchThumbDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="OuterBorder">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchOuterBorderDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="SwitchCurtain">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleSwitchCurtainDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ <VisualStateGroup x:Name="ToggleStates">
+ <VisualStateGroup.Transitions>
+ <VisualTransition x:Name="DraggingToOnTransition" From="Dragging" GeneratedDuration="0" To="On">
+ <Storyboard>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobCurrentToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainCurrentToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition x:Name="DraggingToOffTransition" From="Dragging" GeneratedDuration="0" To="Off">
+ <Storyboard>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobCurrentToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainCurrentToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition x:Name="OnToOffTransition" From="On" GeneratedDuration="0" To="Off">
+ <Storyboard>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobOnToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainOnToOffOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
+ </Storyboard>
+ </VisualTransition>
+ <VisualTransition x:Name="OffToOnTransition" From="Off" GeneratedDuration="0" To="On">
+ <Storyboard>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.KnobOffToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchKnob"/>
+ <RepositionThemeAnimation FromHorizontalOffset="{Binding TemplateSettings.CurtainOffToOnOffset, RelativeSource={RelativeSource Mode=TemplatedParent}}" Storyboard.TargetName="SwitchCurtain"/>
+ </Storyboard>
+ </VisualTransition>
+ </VisualStateGroup.Transitions>
+ <VisualState x:Name="Dragging"/>
+ <VisualState x:Name="Off">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="-64" Storyboard.TargetProperty="X" Storyboard.TargetName="CurtainTranslateTransform"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="On">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="CurtainTranslateTransform"/>
+ <DoubleAnimation Duration="0" To="56.5" Storyboard.TargetProperty="X" Storyboard.TargetName="KnobTranslateTransform"/>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ <VisualStateGroup x:Name="ContentStates">
+ <VisualState x:Name="OffContent">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="OffContentPresenter"/>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="OffContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="OnContent">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="OnContentPresenter"/>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="OnContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Grid Background="Transparent">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <ContentPresenter x:Name="HeaderContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{ThemeResource ToggleSwitchHeaderForegroundThemeBrush}" Margin="{TemplateBinding Padding}" Style="{StaticResource PlaceholderContentPresenterStyle}" VerticalAlignment="Center"/>
+ <Grid Margin="{TemplateBinding Padding}" Grid.Row="1" Visibility="Collapsed" HorizontalAlignment="Left">
+ <ContentPresenter x:Name="OffContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding OffContentTemplate}" Content="{TemplateBinding OffContent}" FontWeight="Normal" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" FontFamily="{ThemeResource PhoneFontFamilyNormal}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Opacity="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ <ContentPresenter x:Name="OnContentPresenter" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding OnContentTemplate}" Content="{TemplateBinding OnContent}" FontWeight="Normal" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" FontFamily="{ThemeResource PhoneFontFamilyNormal}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Opacity="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Grid>
+ <Grid ManipulationMode="None" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,0" Grid.Column="2">
+ <Grid x:Name="SwitchKnobBounds" Height="36">
+ <Border x:Name="OuterBorder" BorderBrush="{ThemeResource ToggleSwitchOuterBorderBorderThemeBrush}" BorderThickness="2.5" Margin="3,4.5,3,4.5">
+ <Border x:Name="InnerBorder" BorderBrush="{ThemeResource ToggleSwitchTrackBorderThemeBrush}" BorderThickness="2.5">
+ <ContentPresenter x:Name="SwitchCurtainBounds">
+ <ContentPresenter x:Name="SwitchCurtainClip">
+ <Rectangle x:Name="SwitchCurtain" Fill="{ThemeResource ToggleSwitchCurtainBackgroundThemeBrush}" Width="64">
+ <Rectangle.RenderTransform>
+ <TranslateTransform x:Name="CurtainTranslateTransform" X="-64"/>
+ </Rectangle.RenderTransform>
+ </Rectangle>
+ </ContentPresenter>
+ </ContentPresenter>
+ </Border>
+ </Border>
+ <Rectangle x:Name="SwitchKnob" Fill="{ThemeResource ToggleSwitchThumbBackgroundThemeBrush}" HorizontalAlignment="Left" Stroke="{ThemeResource ToggleSwitchThumbBorderThemeBrush}" StrokeThickness="2.5" Width="20.5">
+ <Rectangle.RenderTransform>
+ <TranslateTransform x:Name="KnobTranslateTransform"/>
+ </Rectangle.RenderTransform>
+ </Rectangle>
+ </Grid>
+ <Thumb x:Name="SwitchThumb" AutomationProperties.AccessibilityView="Raw" Margin="-13.5,-15.5,-13.5,-6.5">
+ <Thumb.Template>
+ <ControlTemplate TargetType="Thumb">
+ <Rectangle Fill="Transparent"/>
+ </ControlTemplate>
+ </Thumb.Template>
+ </Thumb>
+ </Grid>
+ </Grid>
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style TargetType="ToggleButton">
+ <Setter Property="Background" Value="Transparent"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
+ <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
+ <Setter Property="Padding" Value="{ThemeResource PhoneButtonContentPadding}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
+ <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="ToggleButton">
+ <Grid Background="Transparent">
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Normal"/>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Pressed"/>
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Checked">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ColorAnimation Duration="0:0:0.2" To="{ThemeResource ContentDialogDimmingColor}" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="EnabledBackground" d:IsOptimized="True"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPointerOver">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneDisabledBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneBackgroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="CheckedPressed"/>
+ <VisualState x:Name="CheckedDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="0.4"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="EnabledContent">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PhoneButtonBasePressedForegroundBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Indeterminate"/>
+ <VisualState x:Name="IndeterminatePointerOver"/>
+ <VisualState x:Name="IndeterminatePressed"/>
+ <VisualState x:Name="IndeterminateDisabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledBackground">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="EnabledBackground" BorderThickness="{TemplateBinding BorderThickness}" Margin="{ThemeResource PhoneTouchTargetOverhang}" Background="Transparent" RenderTransformOrigin="0.5,0.5">
+ <Border.RenderTransform>
+ <CompositeTransform/>
+ </Border.RenderTransform>
+ <ContentPresenter x:Name="EnabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ <Border x:Name="DisabledBackground" BorderBrush="{ThemeResource ButtonDisabledBorderThemeBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" IsHitTestVisible="False" Margin="{ThemeResource PhoneTouchTargetOverhang}" Visibility="Collapsed">
+ <ContentPresenter x:Name="DisabledContent" AutomationProperties.AccessibilityView="Raw" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{ThemeResource ButtonDisabledForegroundThemeBrush}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
+ </Border>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="SearchBox" TargetType="TextBox">
+ <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
+ <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
+ <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
+ <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}"/>
+ <Setter Property="TextWrapping" Value="NoWrap"/>
+ <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
+ <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
+ <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
+ <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
+ <Setter Property="Margin" Value="{ThemeResource TextControlMarginThemeThickness}"/>
+ <Setter Property="VerticalAlignment" Value="Top"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="TextBox">
+ <Grid Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledHeaderForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Normal">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Focused">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextContentPresenter"/>
+ <ColorAnimation Duration="0:0:0.2" To="White" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="BorderElement" d:IsOptimized="True"/>
+ <ColorAnimation Duration="0:0:0.2" To="White" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="BorderElement" d:IsOptimized="True"/>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="BorderElement" BorderThickness="{TemplateBinding BorderThickness}" Grid.Row="1" BorderBrush="#00000000">
+ <Border.Background>
+ <SolidColorBrush/>
+ </Border.Background>
+ </Border>
+ <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Margin="{ThemeResource TextControlHeaderMarginThemeThickness}" Grid.Row="0" Style="{StaticResource HeaderContentPresenterStyle}"/>
+ <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Margin="{TemplateBinding BorderThickness}" MinHeight="{ThemeResource TextControlThemeMinHeight}" Padding="{TemplateBinding Padding}" Grid.Row="1" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled"/>
+ <ContentControl x:Name="PlaceholderTextContentPresenter" Content="{TemplateBinding PlaceholderText}" FontSize="{ThemeResource ContentControlFontSize}" IsTabStop="False" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1" Background="Black">
+ <ContentControl.Foreground>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </ContentControl.Foreground>
+ <ContentControl.BorderBrush>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </ContentControl.BorderBrush>
+ </ContentControl>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Thickness x:Key="RichEditBoxTextThemeMargin">2.5,2.5,2.5,2.5</Thickness>
+ <Thickness x:Key="PasswordBoxCheckBoxThemeMargin">0,-6.5,0,0</Thickness>
+ <Style x:Key="PasswordBoxTemplate" TargetType="PasswordBox">
+ <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
+ <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
+ <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
+ <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}"/>
+ <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
+ <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
+ <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
+ <Setter Property="Margin" Value="{ThemeResource TextControlMarginThemeThickness}"/>
+ <Setter Property="VerticalAlignment" Value="Top"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="PasswordBox">
+ <Grid Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BorderElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBorderThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledHeaderForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Normal">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="PointerOver"/>
+ <VisualState x:Name="Focused">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextContentPresenter"/>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BorderElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxFocusedBackgroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Foreground)" Storyboard.TargetName="ContentElement">
+ <DiscreteObjectKeyFrame KeyTime="0">
+ <DiscreteObjectKeyFrame.Value>
+ <SolidColorBrush Color="Black"/>
+ </DiscreteObjectKeyFrame.Value>
+ </DiscreteObjectKeyFrame>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ <VisualStateGroup x:Name="ButtonStates">
+ <VisualState x:Name="ButtonVisible">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="RevealButton">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsChecked" Storyboard.TargetName="RevealButton">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="False"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="ButtonCollapsed">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="RevealButton">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsChecked" Storyboard.TargetName="RevealButton">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="False"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="BorderElement" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1"/>
+ <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Margin="{ThemeResource TextControlHeaderMarginThemeThickness}" Grid.Row="0" Style="{StaticResource HeaderContentPresenterStyle}"/>
+ <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" Margin="{ThemeResource RichEditBoxTextThemeMargin}" MinHeight="{ThemeResource TextControlThemeMinHeight}" Grid.Row="1" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+ <ContentControl x:Name="PlaceholderTextContentPresenter" Content="{TemplateBinding PlaceholderText}" Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}" IsTabStop="False" Margin="{ThemeResource RichEditBoxTextThemeMargin}" Padding="{TemplateBinding Padding}" Grid.Row="1" HorizontalAlignment="Center"/>
+ <CheckBox x:Name="RevealButton" Foreground="{ThemeResource TextBoxForegroundHeaderThemeBrush}" HorizontalAlignment="Left" IsTabStop="False" Margin="{ThemeResource PasswordBoxCheckBoxThemeMargin}" Grid.Row="2" Visibility="Collapsed" VerticalAlignment="Top"/>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+ <Style x:Key="PasswordTextBox" TargetType="TextBox">
+ <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
+ <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
+ <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
+ <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
+ <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
+ <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
+ <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}"/>
+ <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
+ <Setter Property="FontSize" Value="{ThemeResource ContentControlFontSize}"/>
+ <Setter Property="TextWrapping" Value="NoWrap"/>
+ <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.VerticalScrollMode" Value="Auto"/>
+ <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
+ <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
+ <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
+ <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
+ <Setter Property="Margin" Value="{ThemeResource TextControlMarginThemeThickness}"/>
+ <Setter Property="VerticalAlignment" Value="Top"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="TextBox">
+ <Grid Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <VisualStateManager.VisualStateGroups>
+ <VisualStateGroup x:Name="CommonStates">
+ <VisualState x:Name="Disabled">
+ <Storyboard>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
+ <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledHeaderForegroundThemeBrush}"/>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Normal">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
+ </Storyboard>
+ </VisualState>
+ <VisualState x:Name="Focused">
+ <Storyboard>
+ <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PlaceholderTextContentPresenter"/>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Control.Foreground)" Storyboard.TargetName="ContentElement">
+ <DiscreteObjectKeyFrame KeyTime="0">
+ <DiscreteObjectKeyFrame.Value>
+ <SolidColorBrush Color="Black"/>
+ </DiscreteObjectKeyFrame.Value>
+ </DiscreteObjectKeyFrame>
+ </ObjectAnimationUsingKeyFrames>
+ <ColorAnimation Duration="0:0:0.2" To="White" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="BorderElement" d:IsOptimized="True"/>
+ <ColorAnimation Duration="0:0:0.2" To="White" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="BorderElement" d:IsOptimized="True"/>
+ </Storyboard>
+ </VisualState>
+ </VisualStateGroup>
+ </VisualStateManager.VisualStateGroups>
+ <Border x:Name="BorderElement" BorderThickness="{TemplateBinding BorderThickness}" Grid.Row="1">
+ <Border.BorderBrush>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Border.BorderBrush>
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Border.Background>
+ </Border>
+ <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Margin="{ThemeResource TextControlHeaderMarginThemeThickness}" Grid.Row="0" Style="{StaticResource HeaderContentPresenterStyle}"/>
+ <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Margin="{TemplateBinding BorderThickness}" MinHeight="{ThemeResource TextControlThemeMinHeight}" Padding="{TemplateBinding Padding}" Grid.Row="1" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
+ <ContentControl x:Name="PlaceholderTextContentPresenter" Content="{TemplateBinding PlaceholderText}" Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}" FontSize="{ThemeResource ContentControlFontSize}" IsTabStop="False" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+ </Grid>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+ </Application.Resources>
+
+</Application>
diff --git a/File360/App.xaml.cs b/File360/App.xaml.cs
@@ -1,231 +1,153 @@
-using System;
-using System.Diagnostics;
-using System.Resources;
-using System.Windows;
-using System.Windows.Markup;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using File360.Resources;
+// Copyright (c) Microsoft. All rights reserved.
+
+using System;
+using System.Threading.Tasks;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
+using Windows.UI;
+using File360.Common;
namespace File360
{
- public partial class App : Application
+ /// <summary>
+ /// Provides application-specific behavior to supplement the default Application class.
+ /// </summary>
+ sealed 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; }
-
+ public string UserName = "User";
+#if WINDOWS_PHONE_APP
+ ContinuationManager continuationManager;
+#endif
/// <summary>
- /// Constructor for the Application object.
+ /// Initializes the singleton Application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
- // Global handler for uncaught exceptions.
- UnhandledException += Application_UnhandledException;
-
- // Standard XAML initialization
- InitializeComponent();
-
- // Phone-specific initialization
- InitializePhoneApplication();
-
- // Language display initialization
- InitializeLanguage();
+ this.InitializeComponent();
+ this.Suspending += OnSuspending;
+ }
+ public Color AccentColor { set; get; }
+ public Color ThemeColor { set; get; }
+ public Color FolderColor { set; get; }
+ public ColorList CurrentColorItem { set; get; }
+
+ private Frame CreateRootFrame()
+ {
+ Frame rootFrame = Window.Current.Content as Frame;
- // Show graphics profiling information while debugging.
- if (Debugger.IsAttached)
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == null)
{
- // Display the current frame rate counters
- Application.Current.Host.Settings.EnableFrameRateCounter = true;
-
- // Show the areas of the app that are being redrawn in each frame.
- //Application.Current.Host.Settings.EnableRedrawRegions = true;
+ // Create a Frame to act as the navigation context and navigate to the first page
+ rootFrame = new Frame();
- // 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;
+ // Set the default language
+ rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0];
+ rootFrame.NavigationFailed += OnNavigationFailed;
- // 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;
+ // Place the frame in the current Window
+ Window.Current.Content = rootFrame;
}
- }
- // 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)
- {
+ return rootFrame;
}
- // 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)
+ private async Task RestoreStatusAsync(ApplicationExecutionState previousExecutionState)
{
- // Ensure that application state is restored appropriately
-
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (previousExecutionState == ApplicationExecutionState.Terminated)
+ {
+ // Restore the saved session state only when appropriate
+ try
+ {
+ await SuspensionManager.RestoreAsync();
+ }
+ catch (SuspensionManagerException)
+ {
+ //Something went wrong restoring state.
+ //Assume there is no state and continue
+ }
+ }
}
- // 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)
+#if WINDOWS_PHONE_APP
+ /// <summary>
+ /// Handle OnActivated event to deal with File Open/Save continuation activation kinds
+ /// </summary>
+ /// <param name="e">Application activated event arguments, it can be casted to proper sub-type based on ActivationKind</param>
+ protected async override void OnActivated(IActivatedEventArgs e)
{
- }
+ base.OnActivated(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)
- {
- // Ensure that required application state is persisted here.
- }
+ continuationManager = new ContinuationManager();
- // Code to execute if a navigation fails
- private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
- {
- if (Debugger.IsAttached)
+ Frame rootFrame = CreateRootFrame();
+ await RestoreStatusAsync(e.PreviousExecutionState);
+
+ if (rootFrame.Content == null)
{
- MessageBox.Show((e.Uri).ToString());
- MessageBox.Show(e.Exception.ToString());
- // A navigation has failed; break into the debugger
- Debugger.Break();
+ rootFrame.Navigate(typeof(MainPage));
}
-
- }
- // Code to execute on Unhandled Exceptions
- private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
- {
- if (Debugger.IsAttached)
+ var continuationEventArgs = e as IContinuationActivatedEventArgs;
+ if (continuationEventArgs != null)
{
- // An unhandled exception has occurred; break into the debugger
- //Debugger.Break();
+ if (rootFrame != null)
+ {
+ // Call ContinuationManager to handle continuation activation
+ continuationManager.Continue(continuationEventArgs, rootFrame);
+ }
}
- }
-
- #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.Navigated += CompleteInitializePhoneApplication;
-
- RootFrame.UriMapper = new UriMapper();
-
- // 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;
+ Window.Current.Activate();
}
+#endif
- // Do not add any additional code to this method
- private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+ /// <summary>
+ /// Invoked when the application is launched normally by the end user. Other entry points
+ /// will be used such as when the application is launched to open a specific file.
+ /// </summary>
+ /// <param name="e">Details about the launch request and process.</param>
+ protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
- // Set the root visual to allow the application to render
- if (RootVisual != RootFrame)
- RootVisual = RootFrame;
+ Frame rootFrame = CreateRootFrame();
+ await RestoreStatusAsync(e.PreviousExecutionState);
- // Remove this handler since it is no longer needed
- RootFrame.Navigated -= CompleteInitializePhoneApplication;
- }
+ //MainPage is always in rootFrame so we don't have to worry about restoring the navigation state on resume
+ rootFrame.Navigate(typeof(MainPage), e.Arguments);
- 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;
+ // Ensure the current window is active
+ Window.Current.Activate();
}
- private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+ /// <summary>
+ /// Invoked when Navigation to a certain page fails
+ /// </summary>
+ /// <param name="sender">The Frame which failed navigation</param>
+ /// <param name="e">Details about the navigation failure</param>
+ void OnNavigationFailed(object sender, NavigationFailedEventArgs 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
- }
+ throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
}
- #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()
+ /// <summary>
+ /// Invoked when application execution is being suspended. Application state is saved
+ /// without knowing whether the application will be terminated or resumed with the contents
+ /// of memory still intact.
+ /// </summary>
+ /// <param name="sender">The source of the suspend request.</param>
+ /// <param name="e">Details about the suspend request.</param>
+ private async void OnSuspending(object sender, SuspendingEventArgs e)
{
- 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;
- }
+ var deferral = e.SuspendingOperation.GetDeferral();
+ await SuspensionManager.SaveAsync();
+ deferral.Complete();
}
}
-}
-\ No newline at end of file
+}
diff --git a/File360/Assets/ARAM.png b/File360/Assets/ARAM.png
Binary files differ.
diff --git a/File360/Assets/Fine-Halftone-Screen-Small.png b/File360/Assets/Fine-Halftone-Screen-Small.png
Binary files differ.
diff --git a/File360/Assets/Font/Custom/ClearSans-Light.ttf b/File360/Assets/Font/Custom/ClearSans-Light.ttf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/ClearSans-Thin.ttf b/File360/Assets/Font/Custom/ClearSans-Thin.ttf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/HelveticaNeue-Thin.otf b/File360/Assets/Font/Custom/HelveticaNeue-Thin.otf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/Lobster 1.4.otf b/File360/Assets/Font/Custom/Lobster 1.4.otf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/Mohave.otf b/File360/Assets/Font/Custom/Mohave.otf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/Raleway-Light.ttf b/File360/Assets/Font/Custom/Raleway-Light.ttf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/Raleway-SemiBold.ttf b/File360/Assets/Font/Custom/Raleway-SemiBold.ttf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/Raleway-Thin.ttf b/File360/Assets/Font/Custom/Raleway-Thin.ttf
Binary files differ.
diff --git a/File360/Assets/Font/Custom/Roboto-Thin.ttf b/File360/Assets/Font/Custom/Roboto-Thin.ttf
Binary files differ.
diff --git a/File360/Assets/Font/filetypes.ttf b/File360/Assets/Font/filetypes.ttf
Binary files differ.
diff --git a/File360/Assets/Font/iconfont.ttf b/File360/Assets/Font/iconfont.ttf
Binary files differ.
diff --git a/File360/Assets/Font/settingsfont.ttf b/File360/Assets/Font/settingsfont.ttf
Binary files differ.
diff --git a/File360/Assets/IMG-20150528-WA0003.jpg b/File360/Assets/IMG-20150528-WA0003.jpg
Binary files differ.
diff --git a/File360/Assets/Logo.scale-240.png b/File360/Assets/Logo.scale-240.png
Binary files differ.
diff --git a/File360/Assets/Maari-Tamil-2015-500x500.jpg b/File360/Assets/Maari-Tamil-2015-500x500.jpg
Binary files differ.
diff --git a/File360/Assets/SmallLogo.scale-240.png b/File360/Assets/SmallLogo.scale-240.png
Binary files differ.
diff --git a/File360/Assets/SplashScreen.scale-240.png b/File360/Assets/SplashScreen.scale-240.png
Binary files differ.
diff --git a/File360/Assets/Square71x71Logo.scale-240.png b/File360/Assets/Square71x71Logo.scale-240.png
Binary files differ.
diff --git a/File360/Assets/StoreLogo.scale-240.png b/File360/Assets/StoreLogo.scale-240.png
Binary files differ.
diff --git a/File360/Assets/WideLogo.scale-240.png b/File360/Assets/WideLogo.scale-240.png
Binary files differ.
diff --git a/File360/Assets/innerShadow.png b/File360/Assets/innerShadow.png
Binary files differ.
diff --git a/File360/Assets/mainDropShadow.png b/File360/Assets/mainDropShadow.png
Binary files differ.
diff --git a/File360/Assets/mainDropShadowTransparent.png b/File360/Assets/mainDropShadowTransparent.png
Binary files differ.
diff --git a/File360/Assets/main_drop_shadow_png 13-Dec-2007 09_42 31K.png b/File360/Assets/main_drop_shadow_png 13-Dec-2007 09_42 31K.png
Binary files differ.
diff --git a/File360/Assets/nullMusicArt.jpg b/File360/Assets/nullMusicArt.jpg
Binary files differ.
diff --git a/File360/Assets/pic (1).jpg b/File360/Assets/pic (1).jpg
Binary files differ.
diff --git a/File360/Assets/pic (2).jpg b/File360/Assets/pic (2).jpg
Binary files differ.
diff --git a/File360/Assets/pulse2.png b/File360/Assets/pulse2.png
Binary files differ.
diff --git a/File360/Assets/start3.png b/File360/Assets/start3.png
Binary files differ.
diff --git a/File360/Assets/url.png b/File360/Assets/url.png
Binary files differ.
diff --git a/File360/Assets/vertDrop.png b/File360/Assets/vertDrop.png
Binary files differ.
diff --git a/File360/BlankPage.xaml b/File360/BlankPage.xaml
@@ -0,0 +1,16 @@
+<Page
+ x:Class="File360.BlankPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d">
+ <Page.Resources>
+
+ </Page.Resources>
+ <Page.Background>
+ <SolidColorBrush Color="#FFAC6A8E"/>
+ </Page.Background>
+
+</Page>
diff --git a/File360/BlankPage.xaml.cs b/File360/BlankPage.xaml.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class BlankPage : Page
+ {
+ public BlankPage()
+ {
+ this.InitializeComponent();
+ }
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached.
+ /// This parameter is typically used to configure the page.</param>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ }
+ }
+}
diff --git a/File360/BoolToVisibilityConverter.cs b/File360/BoolToVisibilityConverter.cs
@@ -0,0 +1,39 @@
+namespace File360
+{
+ using System;
+ using Windows.UI.Xaml;
+ using Windows.UI.Xaml.Data;
+
+ /// <summary>
+ /// Converts a Boolean into a Visibility.
+ /// </summary>
+ public class BoolToVisibilityConverter : IValueConverter
+ {
+ /// <summary>
+ /// If set to True, conversion is reversed: True will become Collapsed.
+ /// </summary>
+ public bool IsReversed { get; set; }
+
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ var val = System.Convert.ToBoolean(value);
+ if (this.IsReversed)
+ {
+ val = !val;
+ }
+
+ if (val)
+ {
+ return Visibility.Visible;
+ }
+
+ return Visibility.Collapsed;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ throw new NotImplementedException();
+ }
+
+ }
+}
+\ No newline at end of file
diff --git a/File360/BottomBarItem.xaml b/File360/BottomBarItem.xaml
@@ -0,0 +1,17 @@
+<Button
+ x:Class="File360.BottomBarItem"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ HorizontalAlignment="Right"
+ BorderBrush="{x:Null}"
+ RequestedTheme="Dark"
+ BorderThickness="1" FontWeight="Thin">
+ <StackPanel MinWidth="35" Grid.Column="1">
+ <TextBlock x:Name="imageText" FontSize="20" Text="c" FontFamily="Assets/Font/iconFont.ttf#iconfont" HorizontalAlignment="Center" VerticalAlignment="Bottom" Foreground="{ThemeResource PhoneForegroundBrush}" />
+ <TextBlock x:Name="contentText" Text="copy" Grid.Row="1" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="12" Foreground="{ThemeResource PhoneForegroundBrush}" FontWeight="Normal" />
+ </StackPanel>
+ </Button>
diff --git a/File360/BottomBarItem.xaml.cs b/File360/BottomBarItem.xaml.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
+
+namespace File360
+{
+ public sealed partial class BottomBarItem : Button
+ {
+ public BottomBarItem()
+ {
+ this.InitializeComponent();
+ MinWidth = 5;
+ MinHeight = 5;
+ Loaded += BottomBarItem_Loaded;
+ }
+
+ public void Initialize()
+ {
+ if (IsVertical())
+ {
+ contentText.FontSize = Window.Current.Bounds.Width / 35;
+ imageText.FontSize = Window.Current.Bounds.Width / 20;
+ }
+ else
+ {
+ contentText.FontSize = Window.Current.Bounds.Height / 35; imageText.FontSize = Window.Current.Bounds.Height / 20;
+ }
+ }
+
+ public string ImageText
+ {
+ get { return imageText.Text; }
+ set { imageText.Text = value; }
+ }
+ public Brush ImageColor
+ {
+ get { return imageText.Foreground; }
+ set { imageText.Foreground = value; }
+ }
+ public Brush ContentColor
+ {
+ get { return contentText.Foreground; }
+ set { contentText.Foreground = value; }
+ }
+ public string ContentText
+ {
+ get { return contentText.Text; }
+ set { contentText.Text = value; }
+ }
+ void BottomBarItem_Loaded(object sender, RoutedEventArgs e)
+ {
+ Initialize();
+ Window.Current.SizeChanged += Current_SizeChanged;
+ }
+
+ void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
+ {
+ //Initialize();
+ }
+ public bool IsVertical()
+ {
+ if (Window.Current.Bounds.Height > Window.Current.Bounds.Width) return true;
+ else return false;
+ }
+ }
+}
diff --git a/File360/CardDetails.xaml b/File360/CardDetails.xaml
@@ -0,0 +1,13 @@
+<Page
+ x:Class="File360.CardDetails"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ FontSize="18"
+ Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+
+
+</Page>
diff --git a/File360/CardDetails.xaml.cs b/File360/CardDetails.xaml.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class CardDetails : Page
+ {
+ public CardDetails()
+ {
+ this.InitializeComponent();
+ }
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached.
+ /// This parameter is typically used to configure the page.</param>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ }
+ }
+}
diff --git a/File360/ColorList.cs b/File360/ColorList.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI;
+
+namespace File360
+{
+ public class ColorList
+ {
+ public string Color { get; set; }
+
+ public ColorList(string color)
+ {
+ this.Color = color;
+ }
+ }
+}
diff --git a/File360/ColorPicker.xaml b/File360/ColorPicker.xaml
@@ -0,0 +1,32 @@
+<UserControl
+ x:Class="File360.ColorPicker"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d">
+ <UserControl.Resources>
+ <DataTemplate x:Name="ColorsTemplate">
+ <StackPanel Height="60" Width="60">
+ <Rectangle Width="50" Height="50" Fill="{Binding Color}"/>
+ </StackPanel>
+ </DataTemplate>
+ </UserControl.Resources>
+ <StackPanel x:Name="stackPanel" Height="50">
+ <ToggleButton Style="{StaticResource DefaultToggleButton}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Unchecked="ButtonUncheck" Checked="ButtonCheck">
+ <Grid Height="50">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <TextBlock x:Name="ColorProperty" Text="app Accent" VerticalAlignment="Center" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" FontSize="20" FontWeight="Normal"/>
+ <Rectangle x:Name="RectangleFill" Margin="5,5,5,5" Grid.Column="1" HorizontalAlignment="Right" Height="40" Width="40" Fill="{ThemeResource PhoneAccentBrush}" Stroke="White"/>
+ </Grid>
+ </ToggleButton>
+ <TextBlock Margin="10,0,0,0" Text="choose color" FontSize="20"/>
+ <GridView x:Name="ColorContainer" ItemTemplate="{StaticResource ColorsTemplate}"
+ SelectionChanged="ColorContainer_SelectionChanged"
+ Height="245"/>
+ </StackPanel>
+</UserControl>
diff --git a/File360/ColorPicker.xaml.cs b/File360/ColorPicker.xaml.cs
@@ -0,0 +1,185 @@
+using System;
+using System.Collections.Generic;
+using Windows.UI;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Media;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class ColorPicker : UserControl
+ {
+ public ColorPicker()
+ {
+ this.InitializeComponent();
+ Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
+ #region blahblahblah
+ // string[] colorNames =
+ //{
+ // "Yellow","BananaYellow","LaserLemon","Jasmine","Green","Emerald",
+ // "GreenYellow","Lime","Chartreuse","LimeGreen","SpringGreen","LightGreen",
+ // "MediumSeaGreen","MediumSpringGreen","Olive","SeaGreen","Red","OrangeRed",
+ // "DarkOrange","Orange","ImperialRed","Maroon","Brown","Chocolate",
+ // "Coral","Crimson","DarkSalmon","DeepPink","#Firebrick","HotPink",
+ // "IndianRed","LightCoral","LightPink","LightSalmon","Magenta","MediumVioletRed",
+ // "Orchid","PaleVioletRed","Salmon","SandyBrown","Navy","Indigo",
+ // "MidnightBlue","Blue","Purple","BlueViolet","CornflowerBlue","Cyan",
+ // "DarkCyan","DarkSlateBlue","DeepSkyBlue","DodgerBlue","LightBlue","LightSeaGreen",
+ // "LightSkyBlue","LightSteelBlue","Mauve","MediumSlateBlue","RoyalBlue","SlateBlue",
+ // "SlateGray","SteelBlue","Teal","Turquoise","DarkGrey","LightGray"
+ //};
+ #endregion
+
+ }
+
+ private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
+ {
+ Height = 50;
+ }
+
+ private void ColorSetInitializer(string n)
+ {
+ if (n == "0")
+ {
+ string[] accentColors =
+ {
+ "#FFFFFF00","#FFFFE135","#FFFFFF66","#FFF8DE7E","#FF008000","#FF008A00",
+ "#FFADFF2F","#FF00FF00","#FF7FFF00","#FF32CD32","#FF00FF7F","#FF90EE90",
+ "#FF3CB371","#FF00FA9A","#FF808000","#FF2E8B57","#FFFF0000","#FFFF4500",
+ "#FFFF8C00","#FFFFA500","#FFED2939","#FF800000","#FFA52A2A","#FFD2691E",
+ "#FFFF7F50","#FFDC143C","#FFE9967A","#FFFF1493","#FFB22222","#FFFF69B4",
+ "#FFCD5C5C","#FFF08080","#FFFFB6C1","#FFFFA07A","#FFFF00FF","#FFC71585",
+ "#FFDA70D6","#FFDB7093","#FFFA8072","#FFF4A460","#FF000080","#FF4B0082",
+ "#FF191970","#FF0000FF","#FF800080","#FF8A2BE2","#FF6495ED","#FF00FFFF",
+ "#FF008B8B","#FF483D8B","#FF00BFFF","#FF1E90FF","#FFADD8E6","#FF20B2AA",
+ "#FF87CEFA","#FFB0C4DE","#FF76608A","#FF7B68EE","#FF4169E1","#FF6A5ACD",
+ "#FF708090","#FF4682B4","#FF008080","#FF40E0D0","#FFA9A9A9","#FFD3D3D3"
+ };
+ List<ColorList> accentItem = new List<ColorList>();
+ for (int i = 0; i < 66; i++)
+ {
+ accentItem.Add(new ColorList(accentColors[i]));
+ }
+ ColorContainer.ItemsSource = accentItem;
+ }
+ if (n == "1")
+ {
+ string[] themeColors =
+ {
+ "#FFFFFFFF","#FF000000"
+ };
+ List<ColorList> accentItem = new List<ColorList>();
+ for (int i = 0; i < 2; i++)
+ {
+ accentItem.Add(new ColorList(themeColors[i]));
+ }
+ ColorContainer.ItemsSource = accentItem;
+ }
+ if (n == "2")
+ {
+ string[] folderColors =
+ {
+ "#FFFFFF00","#FFFFE135","#FFFFFF66","#FFF8DE7E","#FF008000","#FF008A00",
+ "#FFADFF2F","#FF00FF00","#FF7FFF00","#FF32CD32","#FF00FF7F","#FF90EE90",
+ "#FF3CB371","#FF00FA9A","#FF808000","#FF2E8B57","#FFFF0000","#FFFF4500",
+ "#FFFF8C00","#FFFFA500","#FFED2939","#FF800000","#FFA52A2A","#FFD2691E",
+ "#FFFF7F50","#FFDC143C","#FFE9967A","#FFFF1493","#FFB22222","#FFFF69B4",
+ "#FFCD5C5C","#FFF08080","#FFFFB6C1","#FFFFA07A","#FFFF00FF","#FFC71585",
+ "#FFDA70D6","#FFDB7093","#FFFA8072","#FFF4A460","#FF000080","#FF4B0082",
+ "#FF191970","#FF0000FF","#FF800080","#FF8A2BE2","#FF6495ED","#FF00FFFF",
+ "#FF008B8B","#FF483D8B","#FF00BFFF","#FF1E90FF","#FFADD8E6","#FF20B2AA",
+ "#FF87CEFA","#FFB0C4DE","#FF76608A","#FF7B68EE","#FF4169E1","#FF6A5ACD",
+ "#FF708090","#FF4682B4","#FF008080","#FF40E0D0","#FFA9A9A9","#FFD3D3D3"
+ };
+ List<ColorList> accentItem = new List<ColorList>();
+ for (int i = 0; i < 66; i++)
+ {
+ accentItem.Add(new ColorList(folderColors[i]));
+ }
+ ColorContainer.ItemsSource = accentItem;
+ }
+ }
+
+ public string ColorSet
+ {
+ set { ColorSetInitializer(value); }
+ }
+
+ public string OptionName
+ {
+ get { return ColorProperty.Text; }
+ set { ColorProperty.Text = value; }
+ }
+ //public event EventArgs ColorSelected;
+ //private void lstColorPalette_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ //{
+ // if (ColorSelected != null)
+ // {
+ // //SelectedColor = objColor.ColorBrush;
+ // //ColorSelectedEvent(this, EventArgs.Empty);
+ // }
+ //}
+ public SolidColorBrush SelectedColor
+ {
+ get { return new SolidColorBrush(StringToColor(CurrentColorItem.Color)); }
+ }
+
+ public ColorList CurrentColorItem { set; get; }
+
+ private void ColorPickerPage_Loaded(object sender, RoutedEventArgs e)
+ {
+ }
+ private static Color StringToColor(string s)
+ {
+ // remove artifacts
+ s = s.Trim().TrimStart('#');
+
+ // only 8 (with alpha channel) or 6 symbols are allowed
+ if (s.Length != 8 && s.Length != 6)
+ throw new ArgumentException("Unknown string format!");
+
+ int startParseIndex = 0;
+ bool alphaChannelExists = s.Length == 8; // check if alpha canal exists
+
+ // read alpha channel value
+ byte a = 255;
+ if (alphaChannelExists)
+ {
+ a = System.Convert.ToByte(s.Substring(0, 2), 16);
+ startParseIndex += 2;
+ }
+
+ // read r value
+ byte r = System.Convert.ToByte(s.Substring(startParseIndex, 2), 16);
+ startParseIndex += 2;
+ // read g value
+ byte g = System.Convert.ToByte(s.Substring(startParseIndex, 2), 16);
+ startParseIndex += 2;
+ // read b value
+ byte b = System.Convert.ToByte(s.Substring(startParseIndex, 2), 16);
+
+ return Color.FromArgb(a, r, g, b);
+ }
+ private void ColorContainer_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (e.AddedItems.Count > 0)
+ {
+ CurrentColorItem = ((ColorList)e.AddedItems[0]);
+ RectangleFill.Fill = new SolidColorBrush(StringToColor(CurrentColorItem.Color));
+ }
+ }
+ private void ButtonCheck(object sender, RoutedEventArgs e)
+ {
+ stackPanel.Height = 300;
+ }
+ private void ButtonUncheck(object sender, RoutedEventArgs e)
+ {
+ stackPanel.Height = 50;
+ }
+ }
+}
diff --git a/File360/ColorSampler.cs b/File360/ColorSampler.cs
@@ -0,0 +1,36 @@
+using Windows.Graphics.Imaging;
+using Windows.UI;
+using Windows.UI.Xaml.Media.Imaging;
+
+namespace File360
+{
+ class ColorSampler
+ {
+ public Color GetPixel(WriteableBitmap wb)
+ {
+ int pixel; //ARGB variable with 32 int bytes where
+ //sets of 8 bytes are: Alpha, Red, Green, Blue
+ byte r = 0;
+ byte g = 0;
+ byte b = 0;
+ int i = 0;
+ int j = 0;
+ //Skip every alternate pixel making the program 4 times faster
+ for (i = 0; i < wb.PixelWidth; i = i + 2)
+ {
+ for (j = 0; j < wb.PixelHeight; j = j + 2)
+ {
+ pixel = WriteableBitmapExtensions.GetPixeli(wb,i,j); //the ARGB integer(pixel) has the colors of pixel (i,j)
+ r = (byte)(r + (255 & (pixel >> 16))); //add up reds
+ g = (byte)(g + (255 & (pixel >> 8))); //add up greens
+ b = (byte)(b + (255 & (pixel))); //add up blues
+ }
+ }
+ r = (byte)(r / (wb.PixelWidth/2 * wb.PixelHeight/2));
+ g = (byte)(g / (wb.PixelWidth / 2 * wb.PixelHeight / 2));
+ b = (byte)(b / (wb.PixelWidth / 2 * wb.PixelHeight / 2));
+ return Color.FromArgb(100, r, g, b);
+ }
+ }
+
+}
diff --git a/File360/Common/NavigationHelper.cs b/File360/Common/NavigationHelper.cs
@@ -0,0 +1,436 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using Windows.System;
+using Windows.UI.Core;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
+
+namespace File360.Common
+{
+ /// <summary>
+ /// NavigationHelper aids in navigation between pages. It provides commands used to
+ /// navigate back and forward as well as registers for standard mouse and keyboard
+ /// shortcuts used to go back and forward in Windows and the hardware back button in
+ /// Windows Phone. In addition it integrates SuspensionManger to handle process lifetime
+ /// management and state management when navigating between pages.
+ /// </summary>
+ /// <example>
+ /// To make use of NavigationHelper, follow these two steps or
+ /// start with a BasicPage or any other Page item template other than BlankPage.
+ ///
+ /// 1) Create an instance of the NavigationHelper somewhere such as in the
+ /// constructor for the page and register a callback for the LoadState and
+ /// SaveState events.
+ /// <code>
+ /// public MyPage()
+ /// {
+ /// this.InitializeComponent();
+ /// var navigationHelper = new NavigationHelper(this);
+ /// this.navigationHelper.LoadState += navigationHelper_LoadState;
+ /// this.navigationHelper.SaveState += navigationHelper_SaveState;
+ /// }
+ ///
+ /// private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
+ /// { }
+ /// private async void navigationHelper_SaveState(object sender, LoadStateEventArgs e)
+ /// { }
+ /// </code>
+ ///
+ /// 2) Register the page to call into the NavigationHelper whenever the page participates
+ /// in navigation by overriding the <see cref="Windows.UI.Xaml.Controls.Page.OnNavigatedTo"/>
+ /// and <see cref="Windows.UI.Xaml.Controls.Page.OnNavigatedFrom"/> events.
+ /// <code>
+ /// protected override void OnNavigatedTo(NavigationEventArgs e)
+ /// {
+ /// navigationHelper.OnNavigatedTo(e);
+ /// }
+ ///
+ /// protected override void OnNavigatedFrom(NavigationEventArgs e)
+ /// {
+ /// navigationHelper.OnNavigatedFrom(e);
+ /// }
+ /// </code>
+ /// </example>
+ [Windows.Foundation.Metadata.WebHostHidden]
+ public class NavigationHelper : DependencyObject
+ {
+ private Page Page { get; set; }
+ private Frame Frame { get { return this.Page.Frame; } }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="NavigationHelper"/> class.
+ /// </summary>
+ /// <param name="page">A reference to the current page used for navigation.
+ /// This reference allows for frame manipulation and to ensure that keyboard
+ /// navigation requests only occur when the page is occupying the entire window.</param>
+ public NavigationHelper(Page page)
+ {
+ this.Page = page;
+
+ // When this page is part of the visual tree make two changes:
+ // 1) Map application view state to visual state for the page
+ // 2) Handle hardware navigation requests
+ this.Page.Loaded += (sender, e) =>
+ {
+#if WINDOWS_PHONE_APP
+ Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
+#else
+ // Keyboard and mouse navigation only apply when occupying the entire window
+ if (this.Page.ActualHeight == Window.Current.Bounds.Height &&
+ this.Page.ActualWidth == Window.Current.Bounds.Width)
+ {
+ // Listen to the window directly so focus isn't required
+ Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=
+ CoreDispatcher_AcceleratorKeyActivated;
+ Window.Current.CoreWindow.PointerPressed +=
+ this.CoreWindow_PointerPressed;
+ }
+#endif
+ };
+
+ // Undo the same changes when the page is no longer visible
+ this.Page.Unloaded += (sender, e) =>
+ {
+#if WINDOWS_PHONE_APP
+ Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
+#else
+ Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated -=
+ CoreDispatcher_AcceleratorKeyActivated;
+ Window.Current.CoreWindow.PointerPressed -=
+ this.CoreWindow_PointerPressed;
+#endif
+ };
+ }
+
+ #region Navigation support
+
+ RelayCommand _goBackCommand;
+ RelayCommand _goForwardCommand;
+
+ /// <summary>
+ /// <see cref="RelayCommand"/> used to bind to the back Button's Command property
+ /// for navigating to the most recent item in back navigation history, if a Frame
+ /// manages its own navigation history.
+ ///
+ /// The <see cref="RelayCommand"/> is set up to use the virtual method <see cref="GoBack"/>
+ /// as the Execute Action and <see cref="CanGoBack"/> for CanExecute.
+ /// </summary>
+ public RelayCommand GoBackCommand
+ {
+ get
+ {
+ if (_goBackCommand == null)
+ {
+ _goBackCommand = new RelayCommand(
+ () => this.GoBack(),
+ () => this.CanGoBack());
+ }
+ return _goBackCommand;
+ }
+ set
+ {
+ _goBackCommand = value;
+ }
+ }
+ /// <summary>
+ /// <see cref="RelayCommand"/> used for navigating to the most recent item in
+ /// the forward navigation history, if a Frame manages its own navigation history.
+ ///
+ /// The <see cref="RelayCommand"/> is set up to use the virtual method <see cref="GoForward"/>
+ /// as the Execute Action and <see cref="CanGoForward"/> for CanExecute.
+ /// </summary>
+ public RelayCommand GoForwardCommand
+ {
+ get
+ {
+ if (_goForwardCommand == null)
+ {
+ _goForwardCommand = new RelayCommand(
+ () => this.GoForward(),
+ () => this.CanGoForward());
+ }
+ return _goForwardCommand;
+ }
+ }
+
+ /// <summary>
+ /// Virtual method used by the <see cref="GoBackCommand"/> property
+ /// to determine if the <see cref="Frame"/> can go back.
+ /// </summary>
+ /// <returns>
+ /// true if the <see cref="Frame"/> has at least one entry
+ /// in the back navigation history.
+ /// </returns>
+ public virtual bool CanGoBack()
+ {
+ return this.Frame != null && this.Frame.CanGoBack;
+ }
+ /// <summary>
+ /// Virtual method used by the <see cref="GoForwardCommand"/> property
+ /// to determine if the <see cref="Frame"/> can go forward.
+ /// </summary>
+ /// <returns>
+ /// true if the <see cref="Frame"/> has at least one entry
+ /// in the forward navigation history.
+ /// </returns>
+ public virtual bool CanGoForward()
+ {
+ return this.Frame != null && this.Frame.CanGoForward;
+ }
+
+ /// <summary>
+ /// Virtual method used by the <see cref="GoBackCommand"/> property
+ /// to invoke the <see cref="Windows.UI.Xaml.Controls.Frame.GoBack"/> method.
+ /// </summary>
+ public virtual void GoBack()
+ {
+ if (this.Frame != null && this.Frame.CanGoBack) this.Frame.GoBack();
+ }
+ /// <summary>
+ /// Virtual method used by the <see cref="GoForwardCommand"/> property
+ /// to invoke the <see cref="Windows.UI.Xaml.Controls.Frame.GoForward"/> method.
+ /// </summary>
+ public virtual void GoForward()
+ {
+ if (this.Frame != null && this.Frame.CanGoForward) this.Frame.GoForward();
+ }
+
+#if WINDOWS_PHONE_APP
+ /// <summary>
+ /// Invoked when the hardware back button is pressed. For Windows Phone only.
+ /// </summary>
+ /// <param name="sender">Instance that triggered the event.</param>
+ /// <param name="e">Event data describing the conditions that led to the event.</param>
+ private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
+ {
+ if (this.GoBackCommand.CanExecute(null))
+ {
+ e.Handled = true;
+ this.GoBackCommand.Execute(null);
+ }
+ }
+#else
+ /// <summary>
+ /// Invoked on every keystroke, including system keys such as Alt key combinations, when
+ /// this page is active and occupies the entire window. Used to detect keyboard navigation
+ /// between pages even when the page itself doesn't have focus.
+ /// </summary>
+ /// <param name="sender">Instance that triggered the event.</param>
+ /// <param name="e">Event data describing the conditions that led to the event.</param>
+ private void CoreDispatcher_AcceleratorKeyActivated(CoreDispatcher sender,
+ AcceleratorKeyEventArgs e)
+ {
+ var virtualKey = e.VirtualKey;
+
+ // Only investigate further when Left, Right, or the dedicated Previous or Next keys
+ // are pressed
+ if ((e.EventType == CoreAcceleratorKeyEventType.SystemKeyDown ||
+ e.EventType == CoreAcceleratorKeyEventType.KeyDown) &&
+ (virtualKey == VirtualKey.Left || virtualKey == VirtualKey.Right ||
+ (int)virtualKey == 166 || (int)virtualKey == 167))
+ {
+ var coreWindow = Window.Current.CoreWindow;
+ var downState = CoreVirtualKeyStates.Down;
+ bool menuKey = (coreWindow.GetKeyState(VirtualKey.Menu) & downState) == downState;
+ bool controlKey = (coreWindow.GetKeyState(VirtualKey.Control) & downState) == downState;
+ bool shiftKey = (coreWindow.GetKeyState(VirtualKey.Shift) & downState) == downState;
+ bool noModifiers = !menuKey && !controlKey && !shiftKey;
+ bool onlyAlt = menuKey && !controlKey && !shiftKey;
+
+ if (((int)virtualKey == 166 && noModifiers) ||
+ (virtualKey == VirtualKey.Left && onlyAlt))
+ {
+ // When the previous key or Alt+Left are pressed navigate back
+ e.Handled = true;
+ this.GoBackCommand.Execute(null);
+ }
+ else if (((int)virtualKey == 167 && noModifiers) ||
+ (virtualKey == VirtualKey.Right && onlyAlt))
+ {
+ // When the next key or Alt+Right are pressed navigate forward
+ e.Handled = true;
+ this.GoForwardCommand.Execute(null);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Invoked on every mouse click, touch screen tap, or equivalent interaction when this
+ /// page is active and occupies the entire window. Used to detect browser-style next and
+ /// previous mouse button clicks to navigate between pages.
+ /// </summary>
+ /// <param name="sender">Instance that triggered the event.</param>
+ /// <param name="e">Event data describing the conditions that led to the event.</param>
+ private void CoreWindow_PointerPressed(CoreWindow sender,
+ PointerEventArgs e)
+ {
+ var properties = e.CurrentPoint.Properties;
+
+ // Ignore button chords with the left, right, and middle buttons
+ if (properties.IsLeftButtonPressed || properties.IsRightButtonPressed ||
+ properties.IsMiddleButtonPressed) return;
+
+ // If back or foward are pressed (but not both) navigate appropriately
+ bool backPressed = properties.IsXButton1Pressed;
+ bool forwardPressed = properties.IsXButton2Pressed;
+ if (backPressed ^ forwardPressed)
+ {
+ e.Handled = true;
+ if (backPressed) this.GoBackCommand.Execute(null);
+ if (forwardPressed) this.GoForwardCommand.Execute(null);
+ }
+ }
+#endif
+
+ #endregion
+
+ #region Process lifetime management
+
+ private String _pageKey;
+
+ /// <summary>
+ /// Register this event on the current page to populate the page
+ /// with content passed during navigation as well as any saved
+ /// state provided when recreating a page from a prior session.
+ /// </summary>
+ public event LoadStateEventHandler LoadState;
+ /// <summary>
+ /// Register this event on the current page to preserve
+ /// state associated with the current page in case the
+ /// application is suspended or the page is discarded from
+ /// the navigaqtion cache.
+ /// </summary>
+ public event SaveStateEventHandler SaveState;
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// This method calls <see cref="LoadState"/>, where all page specific
+ /// navigation and process lifetime management logic should be placed.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached. The Parameter
+ /// property provides the group to be displayed.</param>
+ public void OnNavigatedTo(NavigationEventArgs e)
+ {
+ var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
+ this._pageKey = "Page-" + this.Frame.BackStackDepth;
+
+ if (e.NavigationMode == NavigationMode.New)
+ {
+ // Clear existing state for forward navigation when adding a new page to the
+ // navigation stack
+ var nextPageKey = this._pageKey;
+ int nextPageIndex = this.Frame.BackStackDepth;
+ while (frameState.Remove(nextPageKey))
+ {
+ nextPageIndex++;
+ nextPageKey = "Page-" + nextPageIndex;
+ }
+
+ // Pass the navigation parameter to the new page
+ if (this.LoadState != null)
+ {
+ this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));
+ }
+ }
+ else
+ {
+ // Pass the navigation parameter and preserved page state to the page, using
+ // the same strategy for loading suspended state and recreating pages discarded
+ // from cache
+ if (this.LoadState != null)
+ {
+ this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));
+ }
+ }
+ }
+
+ /// <summary>
+ /// Invoked when this page will no longer be displayed in a Frame.
+ /// This method calls <see cref="SaveState"/>, where all page specific
+ /// navigation and process lifetime management logic should be placed.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached. The Parameter
+ /// property provides the group to be displayed.</param>
+ public void OnNavigatedFrom(NavigationEventArgs e)
+ {
+ var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
+ var pageState = new Dictionary<String, Object>();
+ if (this.SaveState != null)
+ {
+ this.SaveState(this, new SaveStateEventArgs(pageState));
+ }
+ frameState[_pageKey] = pageState;
+ }
+
+ #endregion
+ }
+
+ /// <summary>
+ /// Represents the method that will handle the <see cref="NavigationHelper.LoadState"/>event
+ /// </summary>
+ public delegate void LoadStateEventHandler(object sender, LoadStateEventArgs e);
+ /// <summary>
+ /// Represents the method that will handle the <see cref="NavigationHelper.SaveState"/>event
+ /// </summary>
+ public delegate void SaveStateEventHandler(object sender, SaveStateEventArgs e);
+
+ /// <summary>
+ /// Class used to hold the event data required when a page attempts to load state.
+ /// </summary>
+ public class LoadStateEventArgs : EventArgs
+ {
+ /// <summary>
+ /// The parameter value passed to <see cref="Frame.Navigate(Type, Object)"/>
+ /// when this page was initially requested.
+ /// </summary>
+ public Object NavigationParameter { get; private set; }
+ /// <summary>
+ /// A dictionary of state preserved by this page during an earlier
+ /// session. This will be null the first time a page is visited.
+ /// </summary>
+ public Dictionary<string, Object> PageState { get; private set; }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="LoadStateEventArgs"/> class.
+ /// </summary>
+ /// <param name="navigationParameter">
+ /// The parameter value passed to <see cref="Frame.Navigate(Type, Object)"/>
+ /// when this page was initially requested.
+ /// </param>
+ /// <param name="pageState">
+ /// A dictionary of state preserved by this page during an earlier
+ /// session. This will be null the first time a page is visited.
+ /// </param>
+ public LoadStateEventArgs(Object navigationParameter, Dictionary<string, Object> pageState)
+ : base()
+ {
+ this.NavigationParameter = navigationParameter;
+ this.PageState = pageState;
+ }
+ }
+ /// <summary>
+ /// Class used to hold the event data required when a page attempts to save state.
+ /// </summary>
+ public class SaveStateEventArgs : EventArgs
+ {
+ /// <summary>
+ /// An empty dictionary to be populated with serializable state.
+ /// </summary>
+ public Dictionary<string, Object> PageState { get; private set; }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="SaveStateEventArgs"/> class.
+ /// </summary>
+ /// <param name="pageState">An empty dictionary to be populated with serializable state.</param>
+ public SaveStateEventArgs(Dictionary<string, Object> pageState)
+ : base()
+ {
+ this.PageState = pageState;
+ }
+ }
+}
diff --git a/File360/Common/ObservableDictionary.cs b/File360/Common/ObservableDictionary.cs
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Windows.Foundation.Collections;
+
+namespace File360.Common
+{
+ /// <summary>
+ /// Implementation of IObservableMap that supports reentrancy for use as a default view
+ /// model.
+ /// </summary>
+ public class ObservableDictionary : IObservableMap<string, object>
+ {
+ private class ObservableDictionaryChangedEventArgs : IMapChangedEventArgs<string>
+ {
+ public ObservableDictionaryChangedEventArgs(CollectionChange change, string key)
+ {
+ this.CollectionChange = change;
+ this.Key = key;
+ }
+
+ public CollectionChange CollectionChange { get; private set; }
+ public string Key { get; private set; }
+ }
+
+ private Dictionary<string, object> _dictionary = new Dictionary<string, object>();
+ public event MapChangedEventHandler<string, object> MapChanged;
+
+ private void InvokeMapChanged(CollectionChange change, string key)
+ {
+ var eventHandler = MapChanged;
+ if (eventHandler != null)
+ {
+ eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));
+ }
+ }
+
+ public void Add(string key, object value)
+ {
+ this._dictionary.Add(key, value);
+ this.InvokeMapChanged(CollectionChange.ItemInserted, key);
+ }
+
+ public void Add(KeyValuePair<string, object> item)
+ {
+ this.Add(item.Key, item.Value);
+ }
+
+ public bool Remove(string key)
+ {
+ if (this._dictionary.Remove(key))
+ {
+ this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
+ return true;
+ }
+ return false;
+ }
+
+ public bool Remove(KeyValuePair<string, object> item)
+ {
+ object currentValue;
+ if (this._dictionary.TryGetValue(item.Key, out currentValue) &&
+ Object.Equals(item.Value, currentValue) && this._dictionary.Remove(item.Key))
+ {
+ this.InvokeMapChanged(CollectionChange.ItemRemoved, item.Key);
+ return true;
+ }
+ return false;
+ }
+
+ public object this[string key]
+ {
+ get
+ {
+ return this._dictionary[key];
+ }
+ set
+ {
+ this._dictionary[key] = value;
+ this.InvokeMapChanged(CollectionChange.ItemChanged, key);
+ }
+ }
+
+ public void Clear()
+ {
+ var priorKeys = this._dictionary.Keys.ToArray();
+ this._dictionary.Clear();
+ foreach (var key in priorKeys)
+ {
+ this.InvokeMapChanged(CollectionChange.ItemRemoved, key);
+ }
+ }
+
+ public ICollection<string> Keys
+ {
+ get { return this._dictionary.Keys; }
+ }
+
+ public bool ContainsKey(string key)
+ {
+ return this._dictionary.ContainsKey(key);
+ }
+
+ public bool TryGetValue(string key, out object value)
+ {
+ return this._dictionary.TryGetValue(key, out value);
+ }
+
+ public ICollection<object> Values
+ {
+ get { return this._dictionary.Values; }
+ }
+
+ public bool Contains(KeyValuePair<string, object> item)
+ {
+ return this._dictionary.Contains(item);
+ }
+
+ public int Count
+ {
+ get { return this._dictionary.Count; }
+ }
+
+ public bool IsReadOnly
+ {
+ get { return false; }
+ }
+
+ public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
+ {
+ return this._dictionary.GetEnumerator();
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return this._dictionary.GetEnumerator();
+ }
+
+ public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
+ {
+ int arraySize = array.Length;
+ foreach (var pair in this._dictionary)
+ {
+ if (arrayIndex >= arraySize) break;
+ array[arrayIndex++] = pair;
+ }
+ }
+ }
+}
diff --git a/File360/Common/ReadMe.txt b/File360/Common/ReadMe.txt
@@ -0,0 +1,7 @@
+The Common directory contains classes that simplify application development.
+
+Classes in the Common directory form part of your project and may be further enhanced to meet your
+needs. Care should be taken when altering existing methods and properties as incompatible changes
+will require corresponding changes to code included in a variety of Visual Studio templates. For
+example, additional pages added to your project are written assuming that the original methods and
+properties in Common classes are still present and that the names of the types have not changed.
+\ No newline at end of file
diff --git a/File360/Common/RelayCommand.cs b/File360/Common/RelayCommand.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+
+namespace File360.Common
+{
+ /// <summary>
+ /// A command whose sole purpose is to relay its functionality
+ /// to other objects by invoking delegates.
+ /// The default return value for the CanExecute method is 'true'.
+ /// <see cref="RaiseCanExecuteChanged"/> needs to be called whenever
+ /// <see cref="CanExecute"/> is expected to return a different value.
+ /// </summary>
+ public class RelayCommand : ICommand
+ {
+ private readonly Action _execute;
+ private readonly Func<bool> _canExecute;
+
+ /// <summary>
+ /// Raised when RaiseCanExecuteChanged is called.
+ /// </summary>
+ public event EventHandler CanExecuteChanged;
+
+ /// <summary>
+ /// Creates a new command that can always execute.
+ /// </summary>
+ /// <param name="execute">The execution logic.</param>
+ public RelayCommand(Action execute)
+ : this(execute, null)
+ {
+ }
+
+ /// <summary>
+ /// Creates a new command.
+ /// </summary>
+ /// <param name="execute">The execution logic.</param>
+ /// <param name="canExecute">The execution status logic.</param>
+ public RelayCommand(Action execute, Func<bool> canExecute)
+ {
+ if (execute == null)
+ throw new ArgumentNullException("execute");
+ _execute = execute;
+ _canExecute = canExecute;
+ }
+
+ /// <summary>
+ /// Determines whether this <see cref="RelayCommand"/> can execute in its current state.
+ /// </summary>
+ /// <param name="parameter">
+ /// Data used by the command. If the command does not require data to be passed, this object can be set to null.
+ /// </param>
+ /// <returns>true if this command can be executed; otherwise, false.</returns>
+ public bool CanExecute(object parameter)
+ {
+ return _canExecute == null ? true : _canExecute();
+ }
+
+ /// <summary>
+ /// Executes the <see cref="RelayCommand"/> on the current command target.
+ /// </summary>
+ /// <param name="parameter">
+ /// Data used by the command. If the command does not require data to be passed, this object can be set to null.
+ /// </param>
+ public void Execute(object parameter)
+ {
+ _execute();
+ }
+
+ /// <summary>
+ /// Method used to raise the <see cref="CanExecuteChanged"/> event
+ /// to indicate that the return value of the <see cref="CanExecute"/>
+ /// method has changed.
+ /// </summary>
+ public void RaiseCanExecuteChanged()
+ {
+ var handler = CanExecuteChanged;
+ if (handler != null)
+ {
+ handler(this, EventArgs.Empty);
+ }
+ }
+ }
+}
+\ No newline at end of file
diff --git a/File360/Common/SuspensionManager.cs b/File360/Common/SuspensionManager.cs
@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.ApplicationModel;
+using Windows.Storage;
+using Windows.Storage.Streams;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+namespace File360.Common
+{
+ /// <summary>
+ /// SuspensionManager captures global session state to simplify process lifetime management
+ /// for an application. Note that session state will be automatically cleared under a variety
+ /// of conditions and should only be used to store information that would be convenient to
+ /// carry across sessions, but that should be discarded when an application crashes or is
+ /// upgraded.
+ /// </summary>
+ internal sealed class SuspensionManager
+ {
+ private static Dictionary<string, object> _sessionState = new Dictionary<string, object>();
+ private static List<Type> _knownTypes = new List<Type>();
+ private const string sessionStateFilename = "_sessionState.xml";
+
+ /// <summary>
+ /// Provides access to global session state for the current session. This state is
+ /// serialized by <see cref="SaveAsync"/> and restored by
+ /// <see cref="RestoreAsync"/>, so values must be serializable by
+ /// <see cref="DataContractSerializer"/> and should be as compact as possible. Strings
+ /// and other self-contained data types are strongly recommended.
+ /// </summary>
+ public static Dictionary<string, object> SessionState
+ {
+ get { return _sessionState; }
+ }
+
+ /// <summary>
+ /// List of custom types provided to the <see cref="DataContractSerializer"/> when
+ /// reading and writing session state. Initially empty, additional types may be
+ /// added to customize the serialization process.
+ /// </summary>
+ public static List<Type> KnownTypes
+ {
+ get { return _knownTypes; }
+ }
+
+ /// <summary>
+ /// Save the current <see cref="SessionState"/>. Any <see cref="Frame"/> instances
+ /// registered with <see cref="RegisterFrame"/> will also preserve their current
+ /// navigation stack, which in turn gives their active <see cref="Page"/> an opportunity
+ /// to save its state.
+ /// </summary>
+ /// <returns>An asynchronous task that reflects when session state has been saved.</returns>
+ public static async Task SaveAsync()
+ {
+ try
+ {
+ // Save the navigation state for all registered frames
+ foreach (var weakFrameReference in _registeredFrames)
+ {
+ Frame frame;
+ if (weakFrameReference.TryGetTarget(out frame))
+ {
+ SaveFrameNavigationState(frame);
+ }
+ }
+
+ // Serialize the session state synchronously to avoid asynchronous access to shared
+ // state
+ MemoryStream sessionData = new MemoryStream();
+ DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
+ serializer.WriteObject(sessionData, _sessionState);
+
+ // Get an output stream for the SessionState file and write the state asynchronously
+ StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);
+ using (Stream fileStream = await file.OpenStreamForWriteAsync())
+ {
+ sessionData.Seek(0, SeekOrigin.Begin);
+ await sessionData.CopyToAsync(fileStream);
+ }
+ }
+ catch (Exception e)
+ {
+ throw new SuspensionManagerException(e);
+ }
+ }
+
+ /// <summary>
+ /// Restores previously saved <see cref="SessionState"/>. Any <see cref="Frame"/> instances
+ /// registered with <see cref="RegisterFrame"/> will also restore their prior navigation
+ /// state, which in turn gives their active <see cref="Page"/> an opportunity restore its
+ /// state.
+ /// </summary>
+ /// <param name="sessionBaseKey">An optional key that identifies the type of session.
+ /// This can be used to distinguish between multiple application launch scenarios.</param>
+ /// <returns>An asynchronous task that reflects when session state has been read. The
+ /// content of <see cref="SessionState"/> should not be relied upon until this task
+ /// completes.</returns>
+ public static async Task RestoreAsync(String sessionBaseKey = null)
+ {
+ _sessionState = new Dictionary<String, Object>();
+
+ try
+ {
+ // Get the input stream for the SessionState file
+ StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(sessionStateFilename);
+ using (IInputStream inStream = await file.OpenSequentialReadAsync())
+ {
+ // Deserialize the Session State
+ DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
+ _sessionState = (Dictionary<string, object>)serializer.ReadObject(inStream.AsStreamForRead());
+ }
+
+ // Restore any registered frames to their saved state
+ foreach (var weakFrameReference in _registeredFrames)
+ {
+ Frame frame;
+ if (weakFrameReference.TryGetTarget(out frame) && (string)frame.GetValue(FrameSessionBaseKeyProperty) == sessionBaseKey)
+ {
+ frame.ClearValue(FrameSessionStateProperty);
+ RestoreFrameNavigationState(frame);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ throw new SuspensionManagerException(e);
+ }
+ }
+
+ private static DependencyProperty FrameSessionStateKeyProperty =
+ DependencyProperty.RegisterAttached("_FrameSessionStateKey", typeof(String), typeof(SuspensionManager), null);
+ private static DependencyProperty FrameSessionBaseKeyProperty =
+ DependencyProperty.RegisterAttached("_FrameSessionBaseKeyParams", typeof(String), typeof(SuspensionManager), null);
+ private static DependencyProperty FrameSessionStateProperty =
+ DependencyProperty.RegisterAttached("_FrameSessionState", typeof(Dictionary<String, Object>), typeof(SuspensionManager), null);
+ private static List<WeakReference<Frame>> _registeredFrames = new List<WeakReference<Frame>>();
+
+ /// <summary>
+ /// Registers a <see cref="Frame"/> instance to allow its navigation history to be saved to
+ /// and restored from <see cref="SessionState"/>. Frames should be registered once
+ /// immediately after creation if they will participate in session state management. Upon
+ /// registration if state has already been restored for the specified key
+ /// the navigation history will immediately be restored. Subsequent invocations of
+ /// <see cref="RestoreAsync"/> will also restore navigation history.
+ /// </summary>
+ /// <param name="frame">An instance whose navigation history should be managed by
+ /// <see cref="SuspensionManager"/></param>
+ /// <param name="sessionStateKey">A unique key into <see cref="SessionState"/> used to
+ /// store navigation-related information.</param>
+ /// <param name="sessionBaseKey">An optional key that identifies the type of session.
+ /// This can be used to distinguish between multiple application launch scenarios.</param>
+ public static void RegisterFrame(Frame frame, String sessionStateKey, String sessionBaseKey = null)
+ {
+ if (frame.GetValue(FrameSessionStateKeyProperty) != null)
+ {
+ throw new InvalidOperationException("Frames can only be registered to one session state key");
+ }
+
+ if (frame.GetValue(FrameSessionStateProperty) != null)
+ {
+ throw new InvalidOperationException("Frames must be either be registered before accessing frame session state, or not registered at all");
+ }
+
+ if (!string.IsNullOrEmpty(sessionBaseKey))
+ {
+ frame.SetValue(FrameSessionBaseKeyProperty, sessionBaseKey);
+ sessionStateKey = sessionBaseKey + "_" + sessionStateKey;
+ }
+
+ // Use a dependency property to associate the session key with a frame, and keep a list of frames whose
+ // navigation state should be managed
+ frame.SetValue(FrameSessionStateKeyProperty, sessionStateKey);
+ _registeredFrames.Add(new WeakReference<Frame>(frame));
+
+ // Check to see if navigation state can be restored
+ RestoreFrameNavigationState(frame);
+ }
+
+ /// <summary>
+ /// Disassociates a <see cref="Frame"/> previously registered by <see cref="RegisterFrame"/>
+ /// from <see cref="SessionState"/>. Any navigation state previously captured will be
+ /// removed.
+ /// </summary>
+ /// <param name="frame">An instance whose navigation history should no longer be
+ /// managed.</param>
+ public static void UnregisterFrame(Frame frame)
+ {
+ // Remove session state and remove the frame from the list of frames whose navigation
+ // state will be saved (along with any weak references that are no longer reachable)
+ SessionState.Remove((String)frame.GetValue(FrameSessionStateKeyProperty));
+ _registeredFrames.RemoveAll((weakFrameReference) =>
+ {
+ Frame testFrame;
+ return !weakFrameReference.TryGetTarget(out testFrame) || testFrame == frame;
+ });
+ }
+
+ /// <summary>
+ /// Provides storage for session state associated with the specified <see cref="Frame"/>.
+ /// Frames that have been previously registered with <see cref="RegisterFrame"/> have
+ /// their session state saved and restored automatically as a part of the global
+ /// <see cref="SessionState"/>. Frames that are not registered have transient state
+ /// that can still be useful when restoring pages that have been discarded from the
+ /// navigation cache.
+ /// </summary>
+ /// <remarks>Apps may choose to rely on <see cref="NavigationHelper"/> to manage
+ /// page-specific state instead of working with frame session state directly.</remarks>
+ /// <param name="frame">The instance for which session state is desired.</param>
+ /// <returns>A collection of state subject to the same serialization mechanism as
+ /// <see cref="SessionState"/>.</returns>
+ public static Dictionary<String, Object> SessionStateForFrame(Frame frame)
+ {
+ var frameState = (Dictionary<String, Object>)frame.GetValue(FrameSessionStateProperty);
+
+ if (frameState == null)
+ {
+ var frameSessionKey = (String)frame.GetValue(FrameSessionStateKeyProperty);
+ if (frameSessionKey != null)
+ {
+ // Registered frames reflect the corresponding session state
+ if (!_sessionState.ContainsKey(frameSessionKey))
+ {
+ _sessionState[frameSessionKey] = new Dictionary<String, Object>();
+ }
+ frameState = (Dictionary<String, Object>)_sessionState[frameSessionKey];
+ }
+ else
+ {
+ // Frames that aren't registered have transient state
+ frameState = new Dictionary<String, Object>();
+ }
+ frame.SetValue(FrameSessionStateProperty, frameState);
+ }
+ return frameState;
+ }
+
+ private static void RestoreFrameNavigationState(Frame frame)
+ {
+ var frameState = SessionStateForFrame(frame);
+ if (frameState.ContainsKey("Navigation"))
+ {
+ frame.SetNavigationState((String)frameState["Navigation"]);
+ }
+ }
+
+ private static void SaveFrameNavigationState(Frame frame)
+ {
+ var frameState = SessionStateForFrame(frame);
+ frameState["Navigation"] = frame.GetNavigationState();
+ }
+ }
+ public class SuspensionManagerException : Exception
+ {
+ public SuspensionManagerException()
+ {
+ }
+
+ public SuspensionManagerException(Exception e)
+ : base("SuspensionManager failed", e)
+ {
+
+ }
+ }
+}
diff --git a/File360/ContinuationManager.cs b/File360/ContinuationManager.cs
@@ -0,0 +1,191 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.ApplicationModel.Activation;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+#if WINDOWS_PHONE_APP
+/// <summary>
+/// ContinuationManager is used to detect if the most recent activation was due
+/// to a continuation such as the FileOpenPicker or WebAuthenticationBroker
+/// </summary>
+public class ContinuationManager
+{
+ IContinuationActivatedEventArgs args = null;
+ bool handled = false;
+ Guid id = Guid.Empty;
+
+ /// <summary>
+ /// Sets the ContinuationArgs for this instance. Using default Frame of current Window
+ /// Should be called by the main activation handling code in App.xaml.cs
+ /// </summary>
+ /// <param name="args">The activation args</param>
+ internal void Continue(IContinuationActivatedEventArgs args)
+ {
+ Continue(args, Window.Current.Content as Frame);
+ }
+
+ /// <summary>
+ /// Sets the ContinuationArgs for this instance. Should be called by the main activation
+ /// handling code in App.xaml.cs
+ /// </summary>
+ /// <param name="args">The activation args</param>
+ /// <param name="rootFrame">The frame control that contains the current page</param>
+ internal void Continue(IContinuationActivatedEventArgs args, Frame rootFrame)
+ {
+ if (args == null)
+ throw new ArgumentNullException("args");
+
+ if (this.args != null && !handled)
+ throw new InvalidOperationException("Can't set args more than once");
+
+ this.args = args;
+ this.handled = false;
+ this.id = Guid.NewGuid();
+
+ if (rootFrame == null)
+ return;
+
+ switch (args.Kind)
+ {
+ case ActivationKind.PickFileContinuation:
+ var fileOpenPickerPage = rootFrame.Content as IFileOpenPickerContinuable;
+ if (fileOpenPickerPage != null)
+ {
+ fileOpenPickerPage.ContinueFileOpenPicker(args as FileOpenPickerContinuationEventArgs);
+ }
+ break;
+
+ case ActivationKind.PickSaveFileContinuation:
+ var fileSavePickerPage = rootFrame.Content as IFileSavePickerContinuable;
+ if (fileSavePickerPage != null)
+ {
+ fileSavePickerPage.ContinueFileSavePicker(args as FileSavePickerContinuationEventArgs);
+ }
+ break;
+
+ case ActivationKind.PickFolderContinuation:
+ var folderPickerPage = rootFrame.Content as IFolderPickerContinuable;
+ if (folderPickerPage != null)
+ {
+ folderPickerPage.ContinueFolderPicker(args as FolderPickerContinuationEventArgs);
+ }
+ break;
+
+ case ActivationKind.WebAuthenticationBrokerContinuation:
+ var wabPage = rootFrame.Content as IWebAuthenticationContinuable;
+ if (wabPage != null)
+ {
+ wabPage.ContinueWebAuthentication(args as WebAuthenticationBrokerContinuationEventArgs);
+ }
+ break;
+ }
+ }
+
+ /// <summary>
+ /// Marks the contination data as 'stale', meaning that it is probably no longer of
+ /// any use. Called when the app is suspended (to ensure future activations don't appear
+ /// to be for the same continuation) and whenever the continuation data is retrieved
+ /// (so that it isn't retrieved on subsequent navigations)
+ /// </summary>
+ internal void MarkAsStale()
+ {
+ this.handled = true;
+ }
+
+ /// <summary>
+ /// Retrieves the continuation args, if they have not already been retrieved, and
+ /// prevents further retrieval via this property (to avoid accidentla double-usage)
+ /// </summary>
+ public IContinuationActivatedEventArgs ContinuationArgs
+ {
+ get
+ {
+ if (handled)
+ return null;
+ MarkAsStale();
+ return args;
+ }
+ }
+
+ /// <summary>
+ /// Unique identifier for this particular continuation. Most useful for components that
+ /// retrieve the continuation data via <see cref="GetContinuationArgs"/> and need
+ /// to perform their own replay check
+ /// </summary>
+ public Guid Id { get { return id; } }
+
+ /// <summary>
+ /// Retrieves the continuation args, optionally retrieving them even if they have already
+ /// been retrieved
+ /// </summary>
+ /// <param name="includeStaleArgs">Set to true to return args even if they have previously been returned</param>
+ /// <returns>The continuation args, or null if there aren't any</returns>
+ public IContinuationActivatedEventArgs GetContinuationArgs(bool includeStaleArgs)
+ {
+ if (!includeStaleArgs && handled)
+ return null;
+ MarkAsStale();
+ return args;
+ }
+}
+
+/// <summary>
+/// Implement this interface if your page invokes the file open picker
+/// API.
+/// </summary>
+interface IFileOpenPickerContinuable
+{
+ /// <summary>
+ /// This method is invoked when the file open picker returns picked
+ /// files
+ /// </summary>
+ /// <param name="args">Activated event args object that contains returned files from file open picker</param>
+ void ContinueFileOpenPicker(FileOpenPickerContinuationEventArgs args);
+}
+
+/// <summary>
+/// Implement this interface if your page invokes the file save picker
+/// API
+/// </summary>
+interface IFileSavePickerContinuable
+{
+ /// <summary>
+ /// This method is invoked when the file save picker returns saved
+ /// files
+ /// </summary>
+ /// <param name="args">Activated event args object that contains returned file from file save picker</param>
+ void ContinueFileSavePicker(FileSavePickerContinuationEventArgs args);
+}
+
+/// <summary>
+/// Implement this interface if your page invokes the folder picker API
+/// </summary>
+interface IFolderPickerContinuable
+{
+ /// <summary>
+ /// This method is invoked when the folder picker returns the picked
+ /// folder
+ /// </summary>
+ /// <param name="args">Activated event args object that contains returned folder from folder picker</param>
+ void ContinueFolderPicker(FolderPickerContinuationEventArgs args);
+}
+
+/// <summary>
+/// Implement this interface if your page invokes the web authentication
+/// broker
+/// </summary>
+interface IWebAuthenticationContinuable
+{
+ /// <summary>
+ /// This method is invoked when the web authentication broker returns
+ /// with the authentication result
+ /// </summary>
+ /// <param name="args">Activated event args object that contains returned authentication token</param>
+ void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args);
+}
+
+#endif
diff --git a/File360/Dialog.cs b/File360/Dialog.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Animation;
+
+namespace File360
+{
+ public class Dialog : Grid
+ {
+ Storyboard OpenDialog = new Storyboard();
+ Storyboard CloseDialog = new Storyboard();
+ public Dialog()
+ {
+ Height = Window.Current.Bounds.Height;
+ Width = Window.Current.Bounds.Width;
+ Window.Current.SizeChanged += CurrentSizeChanged;
+ Background = new SolidColorBrush((Color)Application.Current.Resources["ContentDialogDimmingColor"]);
+ FadeInThemeAnimation fadeInAnimation = new FadeInThemeAnimation();
+
+ Storyboard.SetTarget(fadeInAnimation, this);
+ OpenDialog.Children.Add(fadeInAnimation);
+
+
+ FadeOutThemeAnimation fadeOutAnimation = new FadeOutThemeAnimation();
+
+ Storyboard.SetTarget(fadeOutAnimation, this);
+ CloseDialog.Children.Add(fadeOutAnimation);
+
+ }
+
+ public bool IsOpen
+ {
+ get
+ {
+ if (Visibility == Visibility.Collapsed)
+ return false;
+ else return true;
+ }
+ set
+ {
+ if (value == true)
+ {
+ Visibility = Visibility.Visible;
+ OpenDialog.Begin();
+ }
+ else
+ {
+
+ CloseDialog.Begin();
+ CloseDialog.Completed += (s, f) =>
+ {
+ Visibility = Visibility.Collapsed;
+ };
+ }
+ }
+ }
+
+ private void CurrentSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
+ {
+ Height = Window.Current.Bounds.Height;
+ Width = Window.Current.Bounds.Width;
+ this.UpdateLayout();
+ }
+ }
+}
diff --git a/File360/DialogBox.xaml b/File360/DialogBox.xaml
@@ -0,0 +1,51 @@
+<UserControl
+ x:Class="File360.DialogBox"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ RequestedTheme="Dark" FontFamily="Assets/Font/iconfont.ttf#iconfont">
+
+ <Grid x:Name="AlphaGrid">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <StackPanel x:Name="LayoutRoot"
+ MinHeight="100"
+ MaxHeight="200"
+ MinWidth="300"
+ MaxWidth="450"
+ Background="{StaticResource PhoneChromeBrush}"
+ HorizontalAlignment="Center"
+ VerticalAlignment="Center">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="2*"/>
+ <RowDefinition Height="50*"/>
+ <RowDefinition Height="2*"/>
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="2*"/>
+ <ColumnDefinition Width="50*"/>
+ <ColumnDefinition Width="2*"/>
+ </Grid.ColumnDefinitions>
+ <StackPanel Grid.Row="1" Grid.Column="1" Margin="10,0">
+ <TextBlock x:Name="heading" Foreground="{StaticResource PhoneForegroundBrush}" Text="ARE YOU SURE?" FontFamily="Segoe UI" FontSize="20" FontWeight="Bold" HorizontalAlignment="Left"/>
+ <Rectangle MinHeight="10"/>
+ <TextBlock x:Name="dialogDetails" Grid.Row="1" TextWrapping="Wrap" Text="Random Text and Messages Detailed about this operation comes here." FontFamily="Segoe WP Light" TextAlignment="Center" FontSize="20"/>
+ <Rectangle MinHeight="15"/>
+ </StackPanel>
+ </Grid>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="4*"/>
+ <ColumnDefinition Width="10*"/>
+ </Grid.ColumnDefinitions>
+ <Button MinWidth="0" x:Name="leftButton" Style="{StaticResource DialogBoxButton}" Content="x" FontFamily="Assets/Font/iconfont.ttf#iconfont" Margin="0" VerticalAlignment="Stretch" BorderBrush="{x:Null}" Background="{ThemeResource PhoneBackgroundBrush}" Click="leftButton_Click" HorizontalAlignment="Stretch"/>
+ <Button x:Name="rightButton" Grid.Column="1" Background="{StaticResource PhoneAccentBrush}" BorderBrush="{x:Null}" HorizontalAlignment="Stretch" Style="{StaticResource DialogBoxButton}" Content="K" FontFamily="Assets/Font/iconfont.ttf#iconfont" Click="rightButton_Click" Foreground="White"/>
+ </Grid>
+ </StackPanel>
+ </Grid>
+</UserControl>
diff --git a/File360/DialogBox.xaml.cs b/File360/DialogBox.xaml.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.ComponentModel;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml;
+using File360;
+using Windows.UI.Xaml.Controls.Primitives;
+
+namespace File360
+{
+ public sealed partial class DialogBox : UserControl
+ {
+ public DialogBox()
+ {
+ InitializeComponent();
+ Loaded += DialogBox_Loaded;
+ heading.FontSize = Window.Current.Bounds.Width / 20;
+ dialogDetails.FontSize = Window.Current.Bounds.Width / 30;
+ leftButton.FontSize = Window.Current.Bounds.Width / 35;
+ rightButton.FontSize = Window.Current.Bounds.Width / 35;
+ }
+
+ void DialogBox_Loaded(object sender, RoutedEventArgs e)
+ {
+
+ }
+ public string HeadingText
+ {
+ get { return heading.Text; }
+ set { heading.Text = value; }
+ }
+ public string ContentText
+ {
+ get { return dialogDetails.Text; }
+ set { dialogDetails.Text = value; }
+ }
+ public string LeftButtonContent
+ {
+ get { return leftButton.Content.ToString(); }
+ set { leftButton.Content = value; }
+ }
+ public string RightButtonContent
+ {
+ get { return rightButton.Content.ToString(); }
+ set { rightButton.Content = value; }
+ }
+ public RoutedEventHandler LeftButtonHandler
+ {
+ get { return leftButton_Click; }
+ set { leftButton.Click += value; }
+ }
+
+ private void rightButton_Click(object sender, RoutedEventArgs e)
+ {
+ IsOpen = false;
+ }
+
+ private void leftButton_Click(object sender, RoutedEventArgs e)
+ {
+ IsOpen = false;
+ }
+ public bool IsOpen
+ {
+ get
+ {
+ if (Height == 0)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ set
+ {
+ if (value == true)
+ {
+ Height = Window.Current.Bounds.Height;
+ }
+ if (value == false)
+ {
+ Height = 0;
+ }
+ }
+ }
+ }
+}
diff --git a/File360/DownloadIndicator.xaml b/File360/DownloadIndicator.xaml
@@ -0,0 +1,30 @@
+<Button
+ x:Class="File360.DownloadIndicator"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ HorizontalContentAlignment="Stretch">
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Button.Background>
+
+ <Grid Margin="0,7">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <TextBlock x:Name="FileName" Text="Vedhalam_avi.Xvid.Rip.mp4" FontSize="14.667" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" Margin="3,2,3,10" Foreground="White" HorizontalAlignment="Left"/>
+ <Grid Grid.Row="1">
+ <TextBlock Text="3mb" Foreground="{ThemeResource PhoneAccentBrush}" FontSize="10.667" Margin="3,0,0,0"/>
+ <TextBlock HorizontalAlignment="Right" Foreground="{ThemeResource PhoneAccentBrush}" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" FontSize="10.667" VerticalAlignment="Center" Margin="0,0,3,0" TextLineBounds="TrimToBaseline" >
+ <Run Text="25.3"/>
+ <Run Text="kbps"/>
+ </TextBlock>
+ </Grid>
+ <ProgressBar x:Name="progBar" Value="75" Grid.Row="2" VerticalAlignment="Bottom" Margin="3,10,3,0"/>
+ </Grid>
+</Button>
diff --git a/File360/DownloadIndicator.xaml.cs b/File360/DownloadIndicator.xaml.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
+
+namespace File360
+{
+ public sealed partial class DownloadIndicator : Button
+ {
+ public DownloadIndicator()
+ {
+ this.InitializeComponent();
+ //Width = (Window.Current.Bounds.Width * 2) / 3;
+ //Height = Window.Current.Bounds.Height / 10;
+ }
+
+ public string ContentText
+ {
+ get { return FileName.Text; }
+ set { FileName.Text = value; }
+ }
+ public double ProgressBarValue
+ {
+ get { return progBar.Value; }
+ set { progBar.Value = value; }
+ }
+ public double DownSpeed
+ {
+ get { return progBar.Value; }
+ set { progBar.Value = value; }
+ }
+ //public SolidColorBrush Status
+ //{
+ // get { return (SolidColorBrush)LayoutGrid.Background; }
+ // set { LayoutGrid.Background = value; }
+ //}
+ }
+}
diff --git a/File360/DrawerLayout.cs b/File360/DrawerLayout.cs
@@ -0,0 +1,524 @@
+using System;
+using System.Linq;
+using System.Windows;
+using Windows.Foundation;
+using Windows.UI;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Animation;
+
+namespace File360
+{
+ public class DrawerLayout : Grid
+ {
+ #region Globals and events
+ private readonly PropertyPath _translatePath = new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)");
+ private readonly PropertyPath _colorPath = new PropertyPath("(Grid.Background).(SolidColorBrush.Color)");
+
+ private readonly TranslateTransform _listFragmentTransform = new TranslateTransform();
+ private readonly TranslateTransform _deltaTransform = new TranslateTransform();
+ private const int MaxAlpha = 190;
+
+ public delegate void DrawerEventHandler(object sender);
+ public event DrawerEventHandler DrawerOpened;
+ public event DrawerEventHandler DrawerClosed;
+
+ private Storyboard _fadeInStoryboard;
+ private Storyboard _fadeOutStoryboard;
+ private Grid _listFragment;
+ private Grid _mainFragment;
+ private Grid _shadowFragment;
+ private double grabCornerLeft = 40;
+ #endregion
+
+ #region Properties
+
+ public bool IsDrawerOpen { get; set; }
+ private PropertyPath TranslatePath
+ {
+ get { return _translatePath; }
+ }
+ private PropertyPath ColorPath
+ {
+ get { return _colorPath; }
+ }
+
+ #endregion
+
+ #region Methods
+
+ public DrawerLayout()
+ {
+ IsDrawerOpen = false;
+ }
+
+ public void InitializeDrawerLayout()
+ {
+ if (Children == null) return;
+ if (Children.Count < 2) return;
+
+ try
+ {
+ _mainFragment = Children.OfType<Grid>().ElementAt(1);
+ _listFragment = Children.OfType<Grid>().ElementAt(2);
+ }
+ catch (Exception)
+ {
+ //ShowStatus(ex.Message);
+ return;
+ }
+
+ if (_mainFragment == null || _listFragment == null) return;
+
+ _mainFragment.Name = "_mainFragment";
+ _listFragment.Name = "_listFragment";
+
+ // _mainFragment
+ _mainFragment.HorizontalAlignment = HorizontalAlignment.Left;
+ _mainFragment.VerticalAlignment = VerticalAlignment.Stretch;
+
+ // Render transform _listFragment
+ _listFragment.HorizontalAlignment = HorizontalAlignment.Left;
+ _listFragment.VerticalAlignment = VerticalAlignment.Stretch;
+ _listFragment.Width = Window.Current.Bounds.Width > Window.Current.Bounds.Height ? (Window.Current.Bounds.Height * 2) / 3 : (Window.Current.Bounds.Width * 2) / 3;
+ if (_listFragment.Background == null) _listFragment.Background = new SolidColorBrush(Color.FromArgb(40, 46, 46, 46));
+
+ var animatedTranslateTransform = new TranslateTransform { X = -_listFragment.Width - 200, Y = 0 };
+
+ _listFragment.RenderTransform = animatedTranslateTransform;
+ _listFragment.RenderTransformOrigin = new Point(0.5, 0.5);
+
+ _listFragment.UpdateLayout();
+
+
+ // Create a shadow element
+ _shadowFragment = new Grid
+ {
+ Name = "_shadowFragment",
+ Background = new SolidColorBrush(Color.FromArgb(0, 255, 255, 255)),
+ HorizontalAlignment = HorizontalAlignment.Stretch,
+ VerticalAlignment = VerticalAlignment.Stretch,
+ Visibility = Visibility.Collapsed
+ };
+
+ // Set ZIndexes
+ Canvas.SetZIndex(_shadowFragment, 49);
+ Canvas.SetZIndex(_listFragment, 51);
+ Children.Add(_shadowFragment);
+
+ // Create a new fadeIn animation storyboard
+ _fadeInStoryboard = new Storyboard();
+
+ // New double animation
+ var doubleAnimation1 = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = 0
+ };
+
+ Storyboard.SetTarget(doubleAnimation1, _listFragment);
+ Storyboard.SetTargetProperty(doubleAnimation1, TranslatePath.Path);
+ _fadeInStoryboard.Children.Add(doubleAnimation1);
+
+ // New color animation for _shadowFragment
+ var colorAnimation1 = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(190, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation1, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation1, ColorPath.Path);
+ _fadeInStoryboard.Children.Add(colorAnimation1);
+
+ // Create a new fadeOut animation storyboard
+ _fadeOutStoryboard = new Storyboard();
+
+ // New double animation
+ var doubleAnimation2 = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = -_listFragment.Width - 200
+ };
+
+ Storyboard.SetTarget(doubleAnimation2, _listFragment);
+ Storyboard.SetTargetProperty(doubleAnimation2, TranslatePath.Path);
+ _fadeOutStoryboard.Children.Add(doubleAnimation2);
+
+ // New color animation for _shadowFragment
+ var colorAnimation2 = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(0, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation2, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation2, ColorPath.Path);
+ _fadeOutStoryboard.Children.Add(colorAnimation2);
+
+
+ _mainFragment.ManipulationMode = ManipulationModes.TranslateX;
+ _mainFragment.ManipulationStarted += mainFragment_ManipulationStarted;
+
+ _listFragment.ManipulationMode = ManipulationModes.TranslateX;
+ _listFragment.ManipulationStarted += listFragment_ManipulationStarted;
+
+ _shadowFragment.ManipulationMode = ManipulationModes.TranslateX;
+ _shadowFragment.ManipulationStarted += shadowFragment_ManipulationStarted;
+
+ _shadowFragment.Tapped += shadowFragment_Tapped;
+
+ }
+
+
+ public void OpenDrawer()
+ {
+ if (_fadeInStoryboard == null || _mainFragment == null || _listFragment == null) return;
+ _shadowFragment.Visibility = Visibility.Visible;
+ _shadowFragment.IsHitTestVisible = true;
+ _fadeInStoryboard.Begin();
+ IsDrawerOpen = true;
+
+ if (DrawerOpened != null)
+ DrawerOpened(this);
+ }
+ public void CloseDrawer()
+ {
+ if (_fadeOutStoryboard == null || _mainFragment == null || _listFragment == null) return;
+ _fadeOutStoryboard.Begin();
+ _fadeOutStoryboard.Completed += fadeOutStoryboard_Completed;
+ IsDrawerOpen = false;
+
+ if (DrawerClosed != null)
+ DrawerClosed(this);
+ }
+ private void shadow_Completed(object sender, object e)
+ {
+ _shadowFragment.IsHitTestVisible = false;
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ IsDrawerOpen = false;
+
+ // raise close event
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ private void fadeOutStoryboard_Completed(object sender, object e)
+ {
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ IsDrawerOpen = false;
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ private void MoveListFragment(double left, Color color)
+ {
+ var s = new Storyboard();
+
+ var doubleAnimation = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = left
+ };
+
+ Storyboard.SetTarget(doubleAnimation, _listFragment);
+ Storyboard.SetTargetProperty(doubleAnimation, TranslatePath.Path);
+ s.Children.Add(doubleAnimation);
+
+ var colorAnimation = new ColorAnimation { Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)), To = color };
+
+ Storyboard.SetTarget(colorAnimation, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation, ColorPath.Path);
+ s.Children.Add(colorAnimation);
+
+ s.Begin();
+ }
+ private void FadeShadowFragment(double left)
+ {
+ // Show shadow fragment
+ _shadowFragment.Background = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
+ _shadowFragment.Visibility = Visibility.Visible;
+
+ // Set bg color based on current _listFragment position.
+ var maxLeft = _listFragment.ActualWidth;
+ var currentLeft = maxLeft - left;
+
+ var temp = Convert.ToInt32((currentLeft / maxLeft) * MaxAlpha);
+
+ // Limit temp variable to 190 to avoid OverflowException
+ if (temp > MaxAlpha) temp = MaxAlpha;
+
+ byte alphaColorIndex;
+ try
+ {
+ alphaColorIndex = Convert.ToByte(MaxAlpha - temp);
+ }
+ catch
+ {
+ alphaColorIndex = 0;
+ }
+
+ _shadowFragment.Background = new SolidColorBrush(Color.FromArgb(alphaColorIndex, 0, 0, 0));
+ }
+
+ #endregion
+
+
+ #region Main fragment manipulation events
+
+ private void mainFragment_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
+ {
+ // If the user has the first touch on the left side of canvas, that means he's trying to swipe the drawer
+ if (e.Position.X <= grabCornerLeft)
+ {
+ //Manipulation can be allowed
+ _mainFragment.ManipulationDelta += mainFragment_ManipulationDelta;
+ _mainFragment.ManipulationCompleted += mainFragment_ManipulationCompleted;
+ }
+ }
+ private void mainFragment_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
+ {
+ if (Math.Abs(e.Cumulative.Translation.X) > 0 && e.Cumulative.Translation.X <= _listFragment.Width)
+ {
+ _deltaTransform.X = -_listFragment.Width + e.Cumulative.Translation.X;
+ _listFragment.RenderTransform = _deltaTransform;
+ FadeShadowFragment(e.Cumulative.Translation.X);
+ //ShowStatus(e.Cumulative.Translation.X.ToString());
+ }
+ //if ()
+ //{
+ // //mainFragment_ManipulationCompleted(this, null);
+ // return;
+ //}
+
+ }
+ private void mainFragment_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
+ {
+ // Get left of _listFragment
+ var transform = (TranslateTransform)_listFragment.RenderTransform;
+ if (transform == null) return;
+ var left = transform.X;
+
+ // Set snap divider to 1/20 of _mainFragment width
+ var snapLimit = _mainFragment.ActualWidth / 20;
+
+ // Get init position of _listFragment
+ var initialPosition = -_listFragment.Width;
+
+ // If current left coordinate is smaller than snap limit, close drawer
+ if (Math.Abs(initialPosition - left) < snapLimit + 50)
+ {
+ MoveListFragment(initialPosition, Color.FromArgb(0, 0, 0, 0));
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ _shadowFragment.IsHitTestVisible = false;
+
+ _mainFragment.ManipulationDelta -= mainFragment_ManipulationDelta;
+ _mainFragment.ManipulationCompleted -= mainFragment_ManipulationCompleted;
+ IsDrawerOpen = false;
+
+ // raise DrawerClosed event
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ // else open drawer
+ else if (Math.Abs(initialPosition - left) > snapLimit)
+ {
+ // move drawer to zero
+ MoveListFragment(0, Color.FromArgb(190, 0, 0, 0));
+ _shadowFragment.Visibility = Visibility.Visible;
+ _shadowFragment.IsHitTestVisible = true;
+ _mainFragment.ManipulationDelta -= mainFragment_ManipulationDelta;
+ _mainFragment.ManipulationCompleted -= mainFragment_ManipulationCompleted;
+ IsDrawerOpen = true;
+
+ // raise DrawerClosed event
+ if (DrawerOpened != null) DrawerOpened(this);
+ }
+ }
+
+ #endregion
+
+ #region List Fragment manipulation events
+
+ private void listFragment_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
+ {
+ var listWidth = _listFragment.Width;
+ if (e.Position.X >= listWidth) return;
+ _listFragment.ManipulationDelta += listFragment_ManipulationDelta;
+ _listFragment.ManipulationCompleted += listFragment_ManipulationCompleted;
+ }
+ private void listFragment_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
+ {
+ if (e.Cumulative.Translation.X <= -_listFragment.Width)
+ {
+ listFragment_ManipulationCompleted(this, null);
+ return;
+ }
+ else if (_listFragmentTransform.X >= 0 && e.Delta.Translation.X > 0)
+ {
+ listFragment_ManipulationCompleted(this, null);
+ return;
+ }
+ _listFragmentTransform.X = e.Cumulative.Translation.X;
+ _listFragment.RenderTransform = _listFragmentTransform;
+ FadeShadowFragment(e.Cumulative.Translation.X + _listFragment.Width);
+ }
+ private void listFragment_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
+ {
+ // Get left of _listFragment
+ var transform = (TranslateTransform)_listFragment.RenderTransform;
+ if (transform == null) return;
+ var left = transform.X;
+
+ // Set snap divider to 1/4 of _mainFragment height
+ var snapLimit = _mainFragment.ActualHeight / 4;
+
+ // Get init position of _listFragment
+ const int initialPosition = 0;
+
+ // If current left coordinate is smaller than snap limit, close drawer
+ if (Math.Abs(initialPosition - left) > snapLimit)
+ {
+ MoveListFragment(-_listFragment.Width, Color.FromArgb(0, 0, 0, 0));
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ _shadowFragment.IsHitTestVisible = false;
+ _shadowFragment.ManipulationDelta -= listFragment_ManipulationDelta;
+
+ _listFragment.ManipulationDelta -= listFragment_ManipulationDelta;
+ _listFragment.ManipulationCompleted -= listFragment_ManipulationCompleted;
+ IsDrawerOpen = false;
+
+ // raise DrawerClosed event
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ // else open drawer
+ else if (Math.Abs(initialPosition - left) < snapLimit)
+ {
+ // move drawer to zero
+ MoveListFragment(0, Color.FromArgb(190, 0, 0, 0));
+ _shadowFragment.Visibility = Visibility.Visible;
+ _shadowFragment.IsHitTestVisible = true;
+ _shadowFragment.ManipulationDelta += listFragment_ManipulationDelta;
+
+ _listFragment.ManipulationDelta -= listFragment_ManipulationDelta;
+ _listFragment.ManipulationCompleted -= listFragment_ManipulationCompleted;
+ IsDrawerOpen = true;
+
+ // raise Drawer_Open event
+ if (DrawerOpened != null) DrawerOpened(this);
+ }
+ }
+
+ #endregion
+ #region Shadow fragment manipulation events
+ private void shadowFragment_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
+ {
+ if (e.Cumulative.Translation.X > 0) return;
+ _shadowFragment.ManipulationDelta += _shadowFragment_ManipulationDelta;
+ _shadowFragment.ManipulationCompleted += _shadowFragment_ManipulationCompleted;
+ }
+
+ private void _shadowFragment_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
+ {
+ if (e.Cumulative.Translation.X <= -_listFragment.Width)
+ {
+ _shadowFragment_ManipulationCompleted(this, null);
+ return;
+ }
+ else if (_listFragmentTransform.X >= 0 && e.Delta.Translation.X > 0)
+ {
+ _shadowFragment_ManipulationCompleted(this, null);
+ return;
+ }
+ _listFragmentTransform.X = e.Cumulative.Translation.X;
+ _listFragment.RenderTransform = _listFragmentTransform;
+ FadeShadowFragment(e.Cumulative.Translation.X + _listFragment.Width);
+
+ }
+ private void _shadowFragment_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
+ {
+ // Get left of _listFragment
+ var transform = (TranslateTransform)_listFragment.RenderTransform;
+ if (transform == null) return;
+ var left = transform.X;
+
+ // Set snap divider to 1/4 of _mainFragment height
+ var snapLimit = _mainFragment.ActualHeight / 4;
+
+ // Get init position of _listFragment
+ const int initialPosition = 0;
+
+ // If current left coordinate is smaller than snap limit, close drawer
+ if (Math.Abs(initialPosition - left) > snapLimit)
+ {
+ MoveListFragment(-_listFragment.Width, Color.FromArgb(0, 0, 0, 0));
+
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ _shadowFragment.IsHitTestVisible = false;
+ _shadowFragment.ManipulationDelta -= _shadowFragment_ManipulationDelta;
+ _shadowFragment.ManipulationCompleted -= _shadowFragment_ManipulationCompleted;
+
+ _listFragment.ManipulationDelta -= listFragment_ManipulationDelta;
+ _listFragment.ManipulationCompleted -= listFragment_ManipulationCompleted;
+
+ IsDrawerOpen = false;
+
+ // raise DrawerClosed event
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ // else open drawer
+ else if (Math.Abs(initialPosition - left) < snapLimit)
+ {
+ // move drawer to zero
+ MoveListFragment(0, Color.FromArgb(190, 0, 0, 0));
+
+ _shadowFragment.Visibility = Visibility.Visible;
+ _shadowFragment.IsHitTestVisible = true;
+ _shadowFragment.ManipulationDelta -= _shadowFragment_ManipulationDelta;
+ _shadowFragment.ManipulationCompleted -= _shadowFragment_ManipulationCompleted;
+
+ _listFragment.ManipulationDelta -= listFragment_ManipulationDelta;
+ _listFragment.ManipulationCompleted -= listFragment_ManipulationCompleted;
+
+ IsDrawerOpen = true;
+
+ // raise Drawer_Open event
+ if (DrawerOpened != null) DrawerOpened(this);
+ }
+ }
+
+ private void shadowFragment_Tapped(object sender, TappedRoutedEventArgs e)
+ {
+ var shadow = new Storyboard();
+
+ var doubleAnimation = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = -_listFragment.Width - 200
+ };
+
+ Storyboard.SetTarget(doubleAnimation, _listFragment);
+ Storyboard.SetTargetProperty(doubleAnimation, TranslatePath.Path);
+ shadow.Children.Add(doubleAnimation);
+
+ var colorAnimation = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(0, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation, ColorPath.Path);
+ shadow.Children.Add(colorAnimation);
+
+ shadow.Completed += shadow_Completed;
+ shadow.Begin();
+ _shadowFragment.IsHitTestVisible = false;
+ }
+ #endregion
+ //#region ShowStatus
+ //public void ShowStatus(string info)
+ //{
+ // rootPage.NotifyUser(info);
+ //}
+ //#endregion
+
+ }
+}
diff --git a/File360/FTPPage.xaml b/File360/FTPPage.xaml
@@ -0,0 +1,57 @@
+<Page
+ x:Class="File360.FTPPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d">
+ <Page.Transitions>
+ <TransitionCollection>
+ <ContentThemeTransition HorizontalOffset="0"/>
+ </TransitionCollection>
+ </Page.Transitions>
+
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Button Style="{StaticResource DefaultButton}" HorizontalAlignment="Left" VerticalAlignment="Stretch" HorizontalContentAlignment="Left" Opacity="0.95">
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Button.Background>
+ <StackPanel Orientation="Horizontal">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" TextAlignment="Left" FontSize="24" Text="g" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" FontWeight="Thin" FontStretch="UltraCondensed">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <TextBlock HorizontalAlignment="Left"
+ TextWrapping="Wrap"
+ Text="ftp"
+ VerticalAlignment="Center"
+ FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" FontWeight="Normal" Margin="5,0,0,0" TextLineBounds="TrimToCapHeight" FontSize="32">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </Button>
+ <ToggleSwitch HorizontalAlignment="Right" Margin="10,0,0,0"/>
+ <ScrollViewer Grid.Row="1">
+ <ScrollViewer.Background>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.3">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Offset="0.02"/>
+ </LinearGradientBrush>
+ </ScrollViewer.Background>
+ <StackPanel Margin="10,0">
+ <TextBlock Text="users connected" Style="{StaticResource GroupHeaderTextBlockStyle}"/>
+ <GridView Height="400"/>
+ <TextBlock Text="address" Style="{StaticResource GroupHeaderTextBlockStyle}"/>
+ <TextBlock Text="192.168.1.100" Style="{StaticResource ListViewItemTextBlockStyle}"/>
+ </StackPanel>
+ </ScrollViewer>
+ </Grid>
+</Page>
diff --git a/File360/FTPPage.xaml.cs b/File360/FTPPage.xaml.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class FTPPage : Page
+ {
+ public FTPPage()
+ {
+ this.InitializeComponent();
+ }
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached.
+ /// This parameter is typically used to configure the page.</param>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ }
+ }
+}
diff --git a/File360/File.cs b/File360/File.cs
@@ -0,0 +1,13 @@
+
+public class File {
+ public string Name { set; get; }
+ public string Thumbnail { set; get; }
+ public boolean IsVisibile {set; get; }
+
+ public File(string name, Thumbnail thumbnail, boolean isVisible)
+ {
+ this.Name = name;
+ this.Background = thumbnail;
+ this.IsVisibile = isVisible;
+ }
+}
+\ No newline at end of file
diff --git a/File360/File360.csproj b/File360/File360.csproj
@@ -1,179 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>10.0.20506</ProductVersion>
- <SchemaVersion>2.0</SchemaVersion>
- <ProjectGuid>{6DB737B7-6D8E-4901-86A4-3110A717C72F}</ProjectGuid>
- <ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
- <OutputType>Library</OutputType>
+ <ProjectGuid>{08490F1C-404B-4B58-B97E-C23BB7A1B31D}</ProjectGuid>
+ <OutputType>AppContainerExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>File360</RootNamespace>
<AssemblyName>File360</AssemblyName>
- <TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
- <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
- <SilverlightVersion>
- </SilverlightVersion>
- <SilverlightApplication>true</SilverlightApplication>
- <SupportedCultures>ta</SupportedCultures>
- <XapOutputs>true</XapOutputs>
- <GenerateSilverlightManifest>true</GenerateSilverlightManifest>
- <XapFilename>File360_$(Configuration)_$(Platform).xap</XapFilename>
- <SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
- <SilverlightAppEntry>File360.App</SilverlightAppEntry>
- <ValidateXaml>true</ValidateXaml>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <ThrowErrorsInValidation>true</ThrowErrorsInValidation>
- <ExpressionBlendVersion>12.0.50716.0</ExpressionBlendVersion>
- <TargetFrameworkProfile />
<DefaultLanguage>en-US</DefaultLanguage>
+ <TargetPlatformVersion>8.1</TargetPlatformVersion>
+ <MinimumVisualStudioVersion>12</MinimumVisualStudioVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{76F1466A-8B6D-4E39-A767-685A06062A39};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <AppxBundle>Always</AppxBundle>
+ <ExpressionBlendVersion>12.0.60617.0</ExpressionBlendVersion>
+ <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
+ <AppxBundlePlatforms>neutral</AppxBundlePlatforms>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
<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>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>Bin\Release</OutputPath>
- <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
- <NoStdLib>true</NoStdLib>
- <NoConfig>true</NoConfig>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\ARM\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+ <NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>Bin\x86\Debug</OutputPath>
- <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
- <NoStdLib>true</NoStdLib>
- <NoConfig>true</NoConfig>
+ <PlatformTarget>ARM</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
<WarningLevel>4</WarningLevel>
- <PlatformTarget />
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
- <DebugType>pdbonly</DebugType>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+ <OutputPath>bin\ARM\Release\</OutputPath>
+ <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
<Optimize>true</Optimize>
- <OutputPath>Bin\x86\Release</OutputPath>
- <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
- <NoStdLib>true</NoStdLib>
- <NoConfig>true</NoConfig>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>ARM</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <PlatformTarget />
+ <Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
+ <NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>Bin\ARM\Debug</OutputPath>
- <DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
- <NoStdLib>true</NoStdLib>
- <NoConfig>true</NoConfig>
+ <PlatformTarget>x86</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <PlatformTarget />
+ <Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
- <DebugType>pdbonly</DebugType>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <DefineConstants>TRACE;NETFX_CORE;WINDOWS_PHONE_APP</DefineConstants>
<Optimize>true</Optimize>
- <OutputPath>Bin\ARM\Release</OutputPath>
- <DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
- <NoStdLib>true</NoStdLib>
- <NoConfig>true</NoConfig>
+ <NoWarn>;2008</NoWarn>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <PlatformTarget />
+ <Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
- <Compile Include="AboutPage.xaml.cs">
- <DependentUpon>AboutPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="AlphaKeyGroup.cs" />
- <Compile Include="App.xaml.cs">
- <DependentUpon>App.xaml</DependentUpon>
- </Compile>
- <Compile Include="musiclist.cs" />
- <Compile Include="PersonalizationPage.xaml.cs">
- <DependentUpon>PersonalizationPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="picturelist.cs" />
- <Compile Include="SkydrivePage.xaml.cs">
- <DependentUpon>SkydrivePage.xaml</DependentUpon>
- </Compile>
- <Compile Include="EBookReader.xaml.cs">
- <DependentUpon>EBookReader.xaml</DependentUpon>
- </Compile>
- <Compile Include="LinqToVisualTree.cs" />
- <Compile Include="LocalizedStrings.cs" />
- <Compile Include="MainPage.xaml.cs">
- <DependentUpon>MainPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="MetroInMotion.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Resources\AppResources.Designer.cs">
- <AutoGen>True</AutoGen>
- <DesignTime>True</DesignTime>
- <DependentUpon>AppResources.resx</DependentUpon>
- </Compile>
- <Compile Include="sdlist.cs" />
- <Compile Include="SecurityPage.xaml.cs">
- <DependentUpon>SecurityPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="settinglist.cs" />
- <Compile Include="SettingsPage.xaml.cs">
- <DependentUpon>SettingsPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="TiltEffect.cs" />
- <Compile Include="UriMapper.cs" />
- <Compile Include="URISchemeExtensionsLandingPage.xaml.cs">
- <DependentUpon>URISchemeExtensionsLandingPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="vaultlist.cs" />
- <Compile Include="VaultPage.xaml.cs">
- <DependentUpon>VaultPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="VideoPlayer.xaml.cs">
- <DependentUpon>VideoPlayer.xaml</DependentUpon>
- </Compile>
- </ItemGroup>
- <ItemGroup>
- <ApplicationDefinition Include="App.xaml">
+ <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
+ <Page Include="BlankPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
- </ApplicationDefinition>
- <Page Include="AboutPage.xaml">
+ </Page>
+ <Page Include="BottomBarItem.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
- <Page Include="PersonalizationPage.xaml">
+ <Page Include="CardDetails.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
- <Page Include="SkydrivePage.xaml">
+ <Page Include="ColorPicker.xaml">
+ <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
+ </Page>
+ <Page Include="DialogBox.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Page Include="DownloadIndicator.xaml">
<SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
+ <Page Include="FTPPage.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
</Page>
- <Page Include="EBookReader.xaml">
+ <Page Include="GeneralSettings.xaml">
+ <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
+ </Page>
+ <Page Include="HelpPage.xaml">
<SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
- <Page Include="SecurityPage.xaml">
+ <Page Include="MarqueeText.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
+ <Page Include="MessageBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
@@ -181,154 +137,200 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
- <Page Include="URISchemeExtensionsLandingPage.xaml">
+ <Page Include="SideBarMenuButton.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="VaultPage.xaml">
- <Generator>MSBuild:MarkupCompilePass1</Generator>
<SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
</Page>
- <Page Include="VideoPlayer.xaml">
- <Generator>MSBuild:MarkupCompilePass1</Generator>
+ <Page Include="VideoPage.xaml">
<SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
- <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>
+ <Compile Include="Addresser.cs" />
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="BlankPage.xaml.cs">
+ <DependentUpon>BlankPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="BoolToVisibilityConverter.cs" />
+ <Compile Include="CardDetails.xaml.cs">
+ <DependentUpon>CardDetails.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="ColorSampler.cs" />
+ <Compile Include="Common\NavigationHelper.cs" />
+ <Compile Include="Common\ObservableDictionary.cs" />
+ <Compile Include="Common\RelayCommand.cs" />
+ <Compile Include="Common\SuspensionManager.cs" />
+ <Compile Include="Dialog.cs" />
+ <Compile Include="DownloadIndicator.xaml.cs">
+ <DependentUpon>DownloadIndicator.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="FTPPage.xaml.cs">
+ <DependentUpon>FTPPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="MessageBox.xaml.cs">
+ <DependentUpon>MessageBox.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="MusicList.cs" />
+ <Compile Include="PictureList.cs" />
+ <Compile Include="SelectorItemEx.cs" />
+ <Compile Include="Utility\Helper\NativeOperationsHelper.cs" />
+ <Compile Include="Utility\Helper\SecurityAccessDeniedException.cs" />
+ <Compile Include="HelpPage.xaml.cs">
+ <DependentUpon>HelpPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="IBackgroundAudioUpdater.cs" />
+ <Compile Include="BottomBarItem.xaml.cs">
+ <DependentUpon>BottomBarItem.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="ColorList.cs" />
+ <Compile Include="ColorPicker.xaml.cs">
+ <DependentUpon>ColorPicker.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="ContinuationManager.cs" />
+ <Compile Include="DialogBox.xaml.cs">
+ <DependentUpon>DialogBox.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="DrawerLayout.cs" />
+ <Compile Include="GeneralSettings.xaml.cs">
+ <DependentUpon>GeneralSettings.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="IntToNegativeIntConverter.cs" />
+ <Compile Include="MainPage.xaml.cs">
+ <DependentUpon>MainPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="MarqueeText.xaml.cs">
+ <DependentUpon>MarqueeText.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="OccupyStack.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="sdlist.cs" />
+ <Compile Include="SettingsPage.xaml.cs">
+ <DependentUpon>SettingsPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Shade.cs" />
+ <Compile Include="SideBarMenuButton.xaml.cs">
+ <DependentUpon>SideBarMenuButton.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="VaultPage.xaml.cs">
+ <DependentUpon>VaultPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="VideoList.cs" />
+ <Compile Include="VideoPage.xaml.cs">
+ <DependentUpon>VideoPage.xaml</DependentUpon>
+ </Compile>
</ItemGroup>
<ItemGroup>
- <Content Include="123.wmv" />
- <Content Include="AMI.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="Resources\Assets\Images\audio.png" />
- <Content Include="Resources\Assets\Images\cover_art.jpg" />
- <Content Include="Resources\Assets\Images\cover_art.png" />
- <Content Include="Resources\Assets\Images\documents.png" />
- <Content Include="Resources\Assets\Images\download.png" />
- <Content Include="Resources\Assets\Images\greySearch.png" />
- <Content Include="Resources\Assets\Images\Hamburger_alpha.png" />
- <Content Include="Resources\Assets\Images\headphone.png" />
- <Content Include="Resources\Assets\Images\MusicBar.png" />
- <Content Include="Resources\Assets\Images\phone.png" />
- <Content Include="Resources\Assets\Images\sdcard.png" />
- <Content Include="Resources\Assets\Images\Search.png" />
- <Content Include="Resources\Assets\Images\skydrive.png" />
- <Content Include="Resources\Assets\Images\Hamburger.png" />
- <Content Include="Resources\Assets\File_Types\7z.png" />
- <Content Include="Resources\Assets\File_Types\avi.png" />
- <Content Include="Resources\Assets\File_Types\csv.png" />
- <Content Include="Resources\Assets\File_Types\mkv.png" />
- <Content Include="Resources\Assets\File_Types\pdf.png" />
- <Content Include="Resources\Assets\AlignmentGrid.png" />
- <Content Include="Resources\Assets\ApplicationIcon.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\File_Types\rar.png" />
- <Content Include="Resources\Assets\Images\flatIcon.PNG" />
- <Content Include="Resources\Assets\Images\add.png" />
- <Content Include="Resources\Assets\Images\folder.png" />
- <Content Include="Resources\Assets\Images\list.png" />
- <Content Include="Resources\Assets\Images\mute.png" />
- <Content Include="Resources\Assets\Images\pause.png" />
- <Content Include="Resources\Assets\Images\settings_dark.png">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\Images\settings_light.png">
- <CopyToOutputDirectory>Always</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\Images\share.png" />
- <Content Include="Resources\Assets\Images\whiteSearch.png" />
- <Content Include="Resources\Assets\Wallpaper\bg1.jpg" />
- <Content Include="Resources\Assets\Wallpaper\bg2.jpg" />
- <Content Include="Resources\Assets\Images\transport.ff.png" />
- <Content Include="Resources\Assets\Images\user.png" />
- <Content Include="Resources\Assets\Images\video.png" />
- <Content Include="Resources\Assets\Images\back.png" />
- <Content Include="Toolkit.Content\home.png" />
- <Resource Include="greyhome.png" />
- <Resource Include="Resources\Assets\Images\next.png" />
- <Resource Include="Resources\Assets\Images\onedrive.png" />
- <Resource Include="Resources\Assets\Images\play.png" />
- <Resource Include="Resources\Assets\Images\previous.png" />
- <Resource Include="Resources\Assets\Images\slider_alpha.png" />
- <Resource Include="Resources\Assets\Images\transport.pause.png" />
- <Resource Include="Resources\Assets\Images\transport.play.png" />
- <Content Include="Resources\Assets\Images\transport.rew.png" />
- <Content Include="Resources\Assets\Tiles\FlipCycleTileLarge.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\Tiles\FlipCycleTileMedium.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\Tiles\FlipCycleTileSmall.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\Tiles\IconicTileMediumLarge.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="Resources\Assets\Tiles\IconicTileSmall.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="File360.Logo.Large.png" />
- <Content Include="File360.Logo.Medium.png" />
- <Content Include="File360.Logo.png" />
- <Content Include="File360.Logo.Small.png" />
- <Content Include="README_FIRST.txt" />
- <Content Include="Resources\Assets\Images\settings.png">
+ <Content Include="Assets\ARAM.png" />
+ <Content Include="Assets\Fine-Halftone-Screen-Small.png" />
+ <Content Include="Assets\innerShadow.png" />
+ <Content Include="Assets\Maari-Tamil-2015-500x500.jpg" />
+ <Content Include="Assets\mainDropShadow.png" />
+ <Content Include="Assets\mainDropShadowTransparent.png" />
+ <Content Include="Assets\main_drop_shadow_png 13-Dec-2007 09_42 31K.png" />
+ <Content Include="Assets\nullMusicArt.jpg" />
+ <Content Include="Assets\start3.png" />
+ <Content Include="Assets\IMG-20150528-WA0003.jpg" />
+ <Content Include="Assets\Logo.scale-240.png" />
+ <Content Include="Assets\pic %281%29.jpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
- <Content Include="SplashScreenImage.jpg" />
- <Content Include="Resources\Assets\File_Types\svg.png" />
- <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" />
- <Content Include="Toolkit.Content\ApplicationBar.Sort.png" />
- <Resource Include="Resources\Assets\Settings\ftp.png" />
- <Resource Include="whitehome.png" />
+ <Content Include="Assets\pic %282%29.jpg" />
+ <Content Include="Assets\pulse2.png" />
+ <Content Include="Assets\SmallLogo.scale-240.png" />
+ <Content Include="Assets\SplashScreen.scale-240.png" />
+ <Content Include="Assets\Square71x71Logo.scale-240.png" />
+ <Content Include="Assets\StoreLogo.scale-240.png" />
+ <Content Include="Assets\url.png" />
+ <Content Include="Assets\vertDrop.png" />
+ <Content Include="Assets\WideLogo.scale-240.png" />
+ <Content Include="Common\ReadMe.txt" />
+ <Content Include="KernelBase.dll" />
+ <Content Include="ReadMe.Coding4Fun.Toolkit.txt" />
+ <Content Include="SharpCompress.dll" />
+ <Content Include="StoreManifest.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </ApplicationDefinition>
+ </ItemGroup>
+ <ItemGroup>
+ <PRIResource Include="Strings\en-US\Resources.resw">
+ <SubType>Designer</SubType>
+ </PRIResource>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Assets\Font\FileTypes\" />
+ <Folder Include="Assets\Font\UI\" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Assets\Font\Custom\Mohave.otf" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Assets\Font\Custom\Lobster 1.4.otf" />
</ItemGroup>
<ItemGroup>
- <EmbeddedResource Include="Resources\AppResources.resx">
- <Generator>PublicResXFileCodeGenerator</Generator>
- <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
- </EmbeddedResource>
- <EmbeddedResource Include="Resources\AppResources.ta.resx" />
+ <Content Include="Assets\Font\settingsfont.ttf" />
</ItemGroup>
<ItemGroup>
- <Reference Include="Microsoft.Expression.Drawing" />
- <Reference Include="Microsoft.Expression.Interactions" />
- <Reference Include="Microsoft.Phone.Controls.Toolkit">
- <HintPath>..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
+ <Reference Include="Coding4Fun.Toolkit, Version=2.0.8.0, Culture=neutral, PublicKeyToken=c5fd7b72b1a17ce4, processorArchitecture=MSIL">
+ <HintPath>..\packages\Coding4Fun.Toolkit.Controls.2.1.7\lib\wpa81\Coding4Fun.Toolkit.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="Coding4Fun.Toolkit.Controls, Version=2.1.6.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\Coding4Fun.Toolkit.Controls.2.1.7\lib\wpa81\Coding4Fun.Toolkit.Controls.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="TagLib.Portable, Version=2.2.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
+ <HintPath>..\packages\TagLib.Portable.1.0.3\lib\portable-net45+win+wpa81+wp8+MonoAndroid10+xamarinios10+MonoTouch10\TagLib.Portable.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="WinRTXamlToolkit, Version=1.8.1.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\packages\WinRTXamlToolkit.WindowsPhone.1.8.1.0\lib\wpa\WinRTXamlToolkit.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="WriteableBitmapEx.WinRT, Version=1.5.0.0, Culture=neutral, PublicKeyToken=50375ca6144f1c69, processorArchitecture=MSIL">
+ <HintPath>..\packages\WriteableBitmapEx.1.5.0.0\lib\wpa81\WriteableBitmapEx.WinRT.dll</HintPath>
+ <Private>True</Private>
</Reference>
- <Reference Include="System.Windows.Interactivity" />
</ItemGroup>
<ItemGroup>
- <Folder Include="FileTypeAssociation\" />
- <Folder Include="GaussianBlur\" />
+ <Content Include="Assets\Font\Custom\ClearSans-Light.ttf" />
+ <Content Include="Assets\Font\Custom\ClearSans-Thin.ttf" />
+ <AppxManifest Include="Package.appxmanifest">
+ <SubType>Designer</SubType>
+ </AppxManifest>
+ <Content Include="Assets\Font\Custom\Raleway-Light.ttf" />
+ <Content Include="Assets\Font\Custom\Raleway-Thin.ttf" />
+ <Content Include="Assets\Font\Custom\Raleway-SemiBold.ttf" />
+ <Content Include="Assets\Font\Custom\Roboto-Thin.ttf" />
+ <Content Include="Assets\Font\Custom\HelveticaNeue-Thin.otf" />
+ <Content Include="Assets\Font\filetypes.ttf" />
+ <Content Include="Assets\Font\iconfont.ttf" />
+ <None Include="packages.config" />
+ <None Include="File.cs" />
+ <None Include="FileLister.cs" />
</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.
+ <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '12.0' ">
+ <VisualStudioVersion>12.0</VisualStudioVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(TargetPlatformIdentifier)' == '' ">
+ <TargetPlatformIdentifier>WindowsPhoneApp</TargetPlatformIdentifier>
+ </PropertyGroup>
+ <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.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>
\ No newline at end of file
diff --git a/File360/File360.csproj.user b/File360/File360.csproj.user
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+ <DeviceId>30F105C9-681E-420b-A277-7C086EAD8A4E</DeviceId>
+ <BackgroundTaskDebugEngines>{2E36F1D4-B23C-435D-AB41-18E608940038}</BackgroundTaskDebugEngines>
+ <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
+ <DebugEngines>{2E36F1D4-B23C-435D-AB41-18E608940038}</DebugEngines>
+ </PropertyGroup>
+ <PropertyGroup>
+ <ProjectView>ShowAllFiles</ProjectView>
+ <AppxPackageIsForStore>False</AppxPackageIsForStore>
+ <AppxShowAllApps>False</AppxShowAllApps>
+ <AppxBuildConfigurationSelection>neutral</AppxBuildConfigurationSelection>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
+ <DeviceId>30F105C9-681E-420b-A277-7C086EAD8A4E</DeviceId>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
+ <DeviceId>30F105C9-681E-420b-A277-7C086EAD8A4E</DeviceId>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
+ <DeviceId>30F105C9-681E-420b-A277-7C086EAD8A4E</DeviceId>
+ </PropertyGroup>
+</Project>
+\ No newline at end of file
diff --git a/File360/FileLister.cs b/File360/FileLister.cs
@@ -0,0 +1,309 @@
+namespace File360 {
+ /*
+ * FileLister provides the UI component for
+ * interacting with files
+ */
+ public class sealed FileLister {
+ /*
+ * filePath setter updates the UI
+ */
+ public string filePath {get; set;}
+ public FileLister(){
+ //SDLoad.Begin();
+ //PhoneLoad.Begin();
+ GetSDRoot();
+ //gridScrollViewer = SDGridView.GetFirstLogicalChildByType<ScrollViewer>(false);
+ //gridScrollViewer.VerticalScrollMode = ScrollMode.Auto;
+ //LoadMemoryData();
+ //SettingsTab.Height = Window.Current.Bounds.Width * 2 / 3;
+ //PasteFlipView.SelectionChanged += PasteBarSelectionChanged;
+ //AppearancePanel.Begin();
+ //SubFrame.ContentTransitions = new TransitionCollection { new PaneThemeTransition { Edge = EdgeTransitionLocation.Bottom } };
+ }
+
+ private async void GetSDRoot()
+ {
+ if (ApplicationData.Current.LocalSettings.Values.ContainsKey("FolderTokenSettingsKey"))
+ {
+ string token = (string)ApplicationData.Current.LocalSettings.Values["FolderTokenSettingsKey"];
+ // if we do, use it to get the StorageFolder instance
+ folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token);
+ this.Addresser.Reset();
+ try
+ {
+ GetFilesAndFolder(folder);
+ RootFolder.Text = "3";
+ IsMusicLibraryOpen = false;
+ IsVideoLibraryOpen = false;
+ IsPictureLibraryOpen = false;
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ //AI("no sdcard is detected", 2);
+ }
+ }
+ }
+
+ public async void GetFilesAndFolder(IStorageFolder anyFolder)
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, async delegate
+ {
+ ShowStatus(anyFolder.Path);
+ if (anyFolder != null)
+ {
+ Items = null;
+ sd.Clear();
+ SDGridView.ItemsSource = null;
+ CurrentFolder = anyFolder;
+ Items = await anyFolder.GetItemsAsync();
+ if (Items.Count == 0)
+ {
+ CurrentFolder = anyFolder;
+ headerText.Text = anyFolder.Name;
+ sd.Clear();
+ switch (anyFolder.Path)
+ {
+ case @"D:\Documents":
+ //display documents missing sad face
+ break;
+ case @"D:\Music":
+ //display music missing sad face
+ break;
+ case @"D:\Videos":
+ //display videos missing sad face
+ break;
+ case @"D:\Pictures":
+ //display pictures missing sad face
+ break;
+ default:
+ EmptyFolderStack.Visibility = Visibility.Visible;
+ //default options for other empty folders
+ break;
+
+ }
+ return;
+ }
+ //if (GridType)
+ // SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ //else SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["ListViewItemsPanel"];
+ else
+ {
+ EmptyFolderStack.Visibility = Visibility.Collapsed;
+ foreach (IStorageItem Data in Items)
+ {
+ if (Data.IsOfType(StorageItemTypes.Folder))
+ {
+ IStorageFolder Folder;
+ Folder = (IStorageFolder)Data;
+ //IReadOnlyList<IStorageItem> item = await Folder.GetItemsAsync();
+ headerText.Text = anyFolder.Name;
+ if (CurrentFolder.Path == @"D:\")
+ {
+ if (Folder.Name == "Videos") sd.Add(new sdlist(Folder.Name, "o", ""));
+ else if (Folder.Name == "Pictures") sd.Add(new sdlist(Folder.Name, "f", ""));
+ else if (Folder.Name == "Music") sd.Add(new sdlist(Folder.Name, "g", ""));
+ else if (Folder.Name == "Downloads") sd.Add(new sdlist(Folder.Name, "e", ""));
+ else if (Folder.Name == "Documents") sd.Add(new sdlist(Folder.Name, "n", ""));
+ else sd.Add(new sdlist(Folder.Name, "h", ""));
+ }
+ else sd.Add(new sdlist(Folder.Name, "h", ""));
+ }
+ if (Data.IsOfType(StorageItemTypes.File))
+ {
+ IStorageFile File = (IStorageFile)Data;
+ string fn = File.Name;
+ string fi = File.FileType;
+ #region FileTypes
+ if (fi == ".mp3")
+ {
+ if (((string)settings.Values["musThumbnail"] == "1"))
+ {
+
+ #region Mp3
+
+ //var fileStream = await File.OpenStreamForReadAsync();
+ //var tagFile = TagLib.File.Create(new StreamFileAbstraction(File.Name, fileStream, fileStream));
+ //var tags = tagFile.GetTag(TagTypes.Id3v2);
+ //try
+ //{
+ // if (tags.Pictures != null)
+ // {
+ // MemoryStream ms = new MemoryStream(tags.Pictures[0].Data.Data);
+ // WriteableBitmap wm = null;
+ // WriteableBitmap wwm = await wm.FromStream(ms, Windows.Graphics.Imaging.BitmapPixelFormat.Unknown);
+
+ // ms.Dispose();
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = wwm;
+ // im.Stretch = Stretch.UniformToFill;
+ // sd.Add(new sdlist(fn, im, ""));
+ // #endregion
+ // }
+ //}
+ //catch (IndexOutOfRangeException ex)
+ //{
+ // BitmapImage bm = new BitmapImage(new Uri("ms-appx:///Assets/IMG-20150528-WA0003.jpg", UriKind.Absolute));
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = bm;
+ // sd.Add(new sdlist(fn, im, ""));
+ //}
+ //catch (Exception ex)
+ //{
+ // AI(ex.Message, 2);
+ //}
+ #endregion
+ }
+ else sd.Add(new sdlist(fn, "m"));
+
+ }
+ else if (fi == ".wma")
+ {
+ if (((string)settings.Values["musThumbnail"] == "1"))
+ { }
+ #region wma-work in progress
+
+ //var fileStream = await File.OpenStreamForReadAsync();
+ //var tagFile = TagLib.File.Create(new StreamFileAbstraction(File.Name, fileStream, fileStream));
+ //var tags = tagFile.GetTag(TagTypes.Id3v2);
+ //try
+ //{
+ // if (tags.Pictures != null)
+ // {
+ // MemoryStream ms = new MemoryStream(tags.Pictures[0].Data.Data);
+ // WriteableBitmap wm = null;
+ // WriteableBitmap wwm = await wm.FromStream(ms, Windows.Graphics.Imaging.BitmapPixelFormat.Unknown);
+
+ // ms.Dispose();
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = wwm;
+ // im.Stretch = Stretch.UniformToFill;
+ // sd.Add(new sdlist(fn, im, ""));
+ // #endregion
+ // }
+ //}
+ //catch (IndexOutOfRangeException ex)
+ //{
+ // BitmapImage bm = new BitmapImage(new Uri("ms-appx:///Assets/IMG-20150528-WA0003.jpg", UriKind.Absolute));
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = bm;
+ // sd.Add(new sdlist(fn, im, ""));
+ //}
+ //catch (Exception ex)
+ //{
+ // AI(ex.Message, 2);
+ //}
+ #endregion
+ else sd.Add(new sdlist(fn, "m"));
+
+ }
+ else if (fi == ".docx")
+ {
+ sd.Add(new sdlist(fn, "k"));
+
+ }
+ else if (fi == ".png")
+ {
+ if (((string)settings.Values["picThumbnail"] == "1"))
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ else sd.Add(new sdlist(fn, "p"));
+ }
+ else if (fi == ".jpg")
+ {
+ if (((string)settings.Values["picThumbnail"] == "1"))
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ else sd.Add(new sdlist(fn, "p"));
+ }
+ else if (fi == ".mp4")
+ {
+ if (((string)settings.Values["vidThumbnail"] == "1"))
+ {
+ try
+ {
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ }
+ catch
+ {
+ sd.Add(new sdlist(fn, "v"));
+ }
+ }
+ else sd.Add(new sdlist(fn, "v"));
+ }
+ else if (fi == ".mov")
+ {
+ if (((string)settings.Values["vidThumbnail"] == "1"))
+ {
+ try
+ {
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ }
+ catch
+ {
+ sd.Add(new sdlist(fn, "v"));
+ }
+ }
+ else sd.Add(new sdlist(fn, "v"));
+ }
+ else if (fi == ".zip")
+ {
+ sd.Add(new sdlist(fn, "z"));
+
+ }
+ else if (fi == ".cs")
+ {
+ sd.Add(new sdlist(fn, "c"));
+ }
+ else if (fi == ".pdf")
+ {
+ sd.Add(new sdlist(fn, "b"));
+ }
+ else if (fi == ".vcf")
+ {
+ sd.Add(new sdlist(fn, "l"));
+ }
+ else if (fi == ".doc")
+ {
+ sd.Add(new sdlist(fn, "k"));
+ }
+ else if (fi == ".xlx")
+ {
+ sd.Add(new sdlist(fn, "j"));
+ }
+ else if (fi == ".xlsx")
+ {
+ sd.Add(new sdlist(fn, "j"));
+ }
+ else if (fi == ".7z")
+ {
+ sd.Add(new sdlist(fn, "7"));
+ }
+ else if (fi == ".xml")
+ {
+ sd.Add(new sdlist(fn, "x"));
+ }
+ else if (fi == ".txt")
+ {
+ sd.Add(new sdlist(fn, "a"));
+ }
+ else if (fi == ".rar")
+ {
+ sd.Add(new sdlist(fn, "r"));
+ }
+ else
+ {
+ sd.Add(new sdlist(fn, "i"));
+
+ }
+ #endregion
+ }
+ }
+ }
+ }
+ //else AI("This folder contains no items", 2);
+ SDGridView.ItemsSource = sd;
+ });
+ }
+
+
+ }
+}
+\ No newline at end of file
diff --git a/File360/GeneralSettings.xaml b/File360/GeneralSettings.xaml
@@ -0,0 +1,62 @@
+<Page
+ x:Class="File360.GeneralSettings"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:toolkit="using:WinRTXamlToolkit.Controls"
+ mc:Ignorable="d"
+ FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway">
+ <Page.Transitions>
+ <TransitionCollection>
+ <ContentThemeTransition HorizontalOffset="40"/>
+ </TransitionCollection>
+ </Page.Transitions>
+
+
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Button Style="{StaticResource DefaultButton}" Click="GoBack" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left">
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Button.Background>
+ <StackPanel Orientation="Horizontal">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" TextAlignment="Left" FontSize="24" Text="g" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" FontWeight="Thin" FontStretch="UltraCondensed"/>
+ <TextBlock HorizontalAlignment="Left"
+ TextWrapping="Wrap"
+ Text="general"
+ VerticalAlignment="Center"
+ FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" FontWeight="Normal" Margin="5,0,0,0" TextLineBounds="TrimToCapHeight" FontSize="32"/>
+ </StackPanel>
+ </Button>
+ <ScrollViewer Grid.Row="1" Background="{x:Null}">
+ <StackPanel>
+ <StackPanel.Background>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.3">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Color="Transparent" Offset="0.02"/>
+ </LinearGradientBrush>
+ </StackPanel.Background>
+ <TextBlock Text="use built-in viewer for" FontFamily="Segoe WP Light" FontSize="17.333" Margin="15,10,0,0" TextLineBounds="TrimToBaseline">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <Grid Height="75">
+ <ToggleSwitch Grid.Column="1" Header="music" Margin="10,0,0,0" Foreground="White"/>
+
+ </Grid>
+ <Grid Height="75">
+ <ToggleSwitch Header="videos" Margin="10,0,0,0" Foreground="White"/>
+ </Grid>
+ <Grid Height="75">
+ <ToggleSwitch Grid.Column="1" Header="ebooks" Margin="10,0,0,0" Foreground="White"/>
+ </Grid>
+ </StackPanel>
+ </ScrollViewer>
+ </Grid>
+</Page>
diff --git a/File360/GeneralSettings.xaml.cs b/File360/GeneralSettings.xaml.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class GeneralSettings : Page
+ {
+ public GeneralSettings()
+ {
+ this.InitializeComponent();
+ }
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached.
+ /// This parameter is typically used to configure the page.</param>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ }
+
+ private void GoBack(object sender, RoutedEventArgs e)
+ {
+ if (this.Frame.CanGoBack) this.Frame.GoBack();
+ }
+ }
+}
diff --git a/File360/HelpPage.xaml b/File360/HelpPage.xaml
@@ -0,0 +1,52 @@
+<Page
+ x:Class="File360.HelpPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ RequestedTheme="Dark"
+ FontFamily="Segoe WP Light" FontSize="18.667">
+
+ <Page.Transitions>
+ <TransitionCollection>
+ <ContentThemeTransition HorizontalOffset="0"/>
+ </TransitionCollection>
+ </Page.Transitions>
+
+ <Grid>
+ <ScrollViewer>
+ <ScrollViewer.Background>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.3">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Offset="0.02"/>
+ </LinearGradientBrush>
+ </ScrollViewer.Background>
+ <StackPanel Margin="10,0">
+ <Button Content="TOUR FILE360" Visibility="Collapsed"/>
+ <TextBlock Text="copy or move" Style="{StaticResource GroupHeaderTextBlockStyle}" />
+ <TextBlock Text="long press to select file(s) and press the clipboard button to copy the selected file(s) to clipboard." TextWrapping="Wrap"/>
+ <TextBlock Text="sdcard" Style="{StaticResource GroupHeaderTextBlockStyle}" />
+ <TextBlock Text="select sdcard from folder picker to view files in sd. " TextWrapping="Wrap"/>
+ <TextBlock Text="phone" Style="{StaticResource GroupHeaderTextBlockStyle}" />
+ <TextBlock Text="to view all the folders. add all the folders in phone memory to this app." TextWrapping="Wrap"/>
+ <TextBlock Text="navigation" Style="{StaticResource GroupHeaderTextBlockStyle}" />
+ <TextBlock Text="navigate using the sidebar which can be accessed by sliding from left." TextWrapping="Wrap"/>
+ <TextBlock Text="settings" Style="{StaticResource GroupHeaderTextBlockStyle}" />
+ <TextBlock Text="settings can be found in the bottom of the sidebar page" TextWrapping="Wrap"/>
+ <TextBlock Text="music & video player" Style="{StaticResource GroupHeaderTextBlockStyle}" />
+ <TextBlock Text="you can open player from the sidebar by clicking the now playing button" TextWrapping="Wrap"/>
+ <TextBlock Text="about" HorizontalAlignment="Center" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue"/>
+ <Rectangle Height="128" Width="250">
+ <Rectangle.Fill>
+ <ImageBrush Stretch="Uniform" ImageSource="Assets/ARAM.png"/>
+ </Rectangle.Fill>
+ </Rectangle>
+ <TextBlock Text="developed and produced by," FontSize="18" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" TextAlignment="Center"/>
+ <HyperlinkButton FontSize="{StaticResource ContentControlFontSize}" Content="Ulōka" HorizontalAlignment="Center" Background="{x:Null}" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" Foreground="{ThemeResource PhoneAccentBrush}"/>
+ <TextBlock Margin="10,5" HorizontalAlignment="Center" TextWrapping="Wrap" Text="thankyou for choosing FILE360. This is a premium version." FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" FontSize="20" TextAlignment="Center"/>
+ </StackPanel>
+ </ScrollViewer>
+ </Grid>
+</Page>
diff --git a/File360/HelpPage.xaml.cs b/File360/HelpPage.xaml.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class HelpPage : Page
+ {
+ public HelpPage()
+ {
+ this.InitializeComponent();
+ Transitions = null;
+ }
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached.
+ /// This parameter is typically used to configure the page.</param>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ }
+ }
+}
diff --git a/File360/IntToNegativeIntConverter.cs b/File360/IntToNegativeIntConverter.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI.Xaml.Data;
+
+namespace File360
+{
+ class IntToNegativeIntConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, string language)
+ {
+ if (value == null)
+ return value;
+
+ return (-1 * (double)value);
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, string language)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
+
diff --git a/File360/MainPage.xaml b/File360/MainPage.xaml
@@ -1,223 +1,1321 @@
-<phone:PhoneApplicationPage
- xmlns:local="clr-namespace:File360"
- xmlns:fx="clr-namespace:MetroInMotionUtils"
- xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
- xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
+<Page x:Name="page"
+ x:Class="File360.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:local="using:File360"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps" xmlns:es="clr-namespace:Microsoft.Expression.Shapes;assembly=Microsoft.Expression.Drawing" x:Name="Menu"
- x:Class="File360.MainPage"
- local:TiltEffect.IsTiltEnabled="True"
- mc:Ignorable="d"
- Orientation="Portrait"
- shell:SystemTray.IsVisible="True">
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:toolkit="using:WinRTXamlToolkit.Controls"
+ mc:Ignorable="d" RequestedTheme="Dark" FontFamily="Helvetica Neue" FontSize="18.667" FontWeight="SemiLight">
+ <Page.Resources>
+ <local:BoolToVisibilityConverter x:Key="BoolToVisConverter" />
+ <Storyboard x:Name="SideBarSlide">
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="SideMenuLeft" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="0.5" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="SDGridView" d:IsOptimized="True"/>
+ </Storyboard>
+ <DataTemplate x:Name="PicturesView">
+ <ItemsControl Tapped="PictureItemClick" Height="{Binding PicHeight}" Width="{Binding PicWidth}">
+ <Grid Height="{Binding ImageHeight}" Width="{Binding ImageWidth}" Background="{Binding Background}">
+ <Grid VerticalAlignment="Bottom" Background="{ThemeResource PhoneChromeBrush}">
+ <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Name}" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin"/>
+ </Grid>
+ </Grid>
+ </ItemsControl>
+ </DataTemplate>
+ <local:IntToNegativeIntConverter x:Key="IntToNegativeIntConverter" />
+ <DataTemplate x:Name="VideosView">
+ <ItemsControl Tapped="VideoItemClick" Margin="10">
+ <Border BorderThickness="5" Background="{Binding Background}" Height="{Binding VidHeight}" Width="{Binding VidWidth}">
+ <Border.BorderBrush>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Border.BorderBrush>
+ <Border VerticalAlignment="Bottom">
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}" Opacity="0.8"/>
+ </Border.Background>
+ <TextBlock TextTrimming="WordEllipsis" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding Name}" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" FontSize="20"/>
+ </Border>
+ </Border>
+ </ItemsControl>
+ </DataTemplate>
+ <DataTemplate x:Name="MusicsView">
+ <ItemsControl Tapped="MusicItemClick" Height="{Binding PicHeight}" Width="{Binding PicWidth}">
+ <Grid Height="{Binding ImageHeight}" Width="{Binding ImageWidth}" Background="{Binding Background}">
+ <Grid VerticalAlignment="Bottom" Background="{ThemeResource PhoneChromeBrush}">
+ <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding SongName}" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" TextTrimming="WordEllipsis"/>
+ </Grid>
+ </Grid>
+ </ItemsControl>
+ </DataTemplate>
+ <DataTemplate x:Name="GridFoldersView">
+ <ItemsControl CacheMode="BitmapCache" Holding="FolderHold" IsDoubleTapEnabled="True" Tapped="GridItemClick" Height="{Binding GridHeight}" Width="{Binding GridWidth}" Background="{x:Null}" DoubleTapped="ItemDoubleTap">
+ <StackPanel CacheMode="BitmapCache" Background="{Binding Background}">
+ <Grid Margin="0,5,0,0">
+ <TextBlock HorizontalAlignment="Center" Width="130" Text="{Binding Image}" FontSize="65" FontFamily="Assets/Font/filetypes.ttf#filetypes" TextAlignment="Center" VerticalAlignment="Center"/>
+ <TextBlock Text="{Binding Count}" x:Name="DataContents" Foreground="{ThemeResource AppBarItemForegroundThemeBrush}" TextAlignment="Center" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,2,0,0"/>
+ </Grid>
+ <TextBlock Text="{Binding Name}" FontSize="16" TextTrimming="WordEllipsis" x:Name="DataName" Foreground="{ThemeResource AppBarItemForegroundThemeBrush}" TextAlignment="Center" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" Margin="4,0"/>
+ <TextBox x:Name="box" Visibility="Collapsed" Text="{Binding Name}" FontSize="16" TextAlignment="Center" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" Margin="4,0">
+ <TextBox.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </TextBox.Foreground>
+ </TextBox>
+ <TextBlock Text="53.05 mb" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisConverter}}" HorizontalAlignment="Center">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBaseLowColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </ItemsControl>
+ </DataTemplate>
+ <DataTemplate x:Name="ListFoldersView">
+ <ItemsControl Tapped="GridItemClick" DoubleTapped="ItemDoubleTap" Holding="FolderHold" Height="{Binding ListHeight}" Width="{Binding Width}" Margin="0" Background="{x:Null}">
+ <StackPanel Orientation="Horizontal" Background="{x:Null}">
+ <Grid>
+ <TextBlock Margin="10" VerticalAlignment="Center" Text="{Binding Image}" FontSize="66.667" FontFamily="Assets/Font/filetypes.ttf#filetypes" TextAlignment="Left"/>
+ <TextBlock Margin="2,5,2,2" Text="{Binding Count}" Foreground="{ThemeResource AppBarItemForegroundThemeBrush}" TextAlignment="Center" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" VerticalAlignment="Bottom"/>
+ </Grid>
+ <StackPanel VerticalAlignment="Center">
+ <TextBlock Text="{Binding Name}" TextTrimming="WordEllipsis" Foreground="{ThemeResource AppBarItemForegroundThemeBrush}" TextAlignment="Left" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" FontSize="20" VerticalAlignment="Bottom" Margin="3,0,0,1"/>
+
+ <TextBlock Text="05/02/1997" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisConverter}}" VerticalAlignment="Center" Margin="3,1,0,0">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBaseMediumHighColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <TextBlock Text="53.05 mb" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisConverter}}" VerticalAlignment="Top" Margin="3,1,0,0">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBaseLowColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </StackPanel>
+ </ItemsControl>
+ </DataTemplate>
+ <ItemsPanelTemplate x:Name="GridViewItemsPanel">
+ <ItemsWrapGrid Orientation="Horizontal">
+ <ItemsWrapGrid.ChildrenTransitions>
+ <TransitionCollection>
+ <ContentThemeTransition VerticalOffset="0" HorizontalOffset="0"/>
+ </TransitionCollection>
+ </ItemsWrapGrid.ChildrenTransitions>
+ </ItemsWrapGrid>
+ </ItemsPanelTemplate>
+ <ItemsPanelTemplate x:Name="ListViewItemsPanel">
+ <ItemsStackPanel Orientation="Vertical">
+ <ItemsStackPanel.ChildrenTransitions>
+ <TransitionCollection>
+ <ContentThemeTransition VerticalOffset="0" HorizontalOffset="10"/>
+ </TransitionCollection>
+ </ItemsStackPanel.ChildrenTransitions>
+ </ItemsStackPanel>
+ </ItemsPanelTemplate>
+ <Storyboard x:Name="SDLoad" RepeatBehavior="Forever">
+ <DoubleAnimation Duration="0:0:1" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="symbolIcon" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuadraticEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="PhoneLoad" RepeatBehavior="Forever">
+ <DoubleAnimation Duration="0:0:1" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="symbolIcon1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuinticEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="sdload">
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="textBlock">
+ <DiscreteObjectKeyFrame KeyTime="0">
+ <DiscreteObjectKeyFrame.Value>
+ <Visibility>Visible</Visibility>
+ </DiscreteObjectKeyFrame.Value>
+ </DiscreteObjectKeyFrame>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ <DataTemplate x:Name="SettingsItemTemplate">
+ <Button x:Name="SettingTap" Height="Auto" Margin="0,12.5,0,10">
+ <StackPanel Orientation="Horizontal">
+ <TextBlock Text="{Binding SettingPicture}" FontSize="26.667" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Center" Margin="5,0,10,5" Foreground="{ThemeResource PhoneAccentBrush}" Opacity="0.95" LineStackingStrategy="MaxHeight" FontWeight="Thin"/>
+ <StackPanel Orientation="Vertical">
+ <TextBlock Margin="10,0,0,0" Text="{Binding SettingName}" FontSize="23.333" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" FontWeight="Thin" IsColorFontEnabled="False">
+ <TextBlock.Foreground>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+ <GradientStop Color="{ThemeResource PhoneForegroundColor}" Offset="0"/>
+ <GradientStop Color="{ThemeResource PhoneForegroundColor}" Offset="1"/>
+ <GradientStop Color="{ThemeResource PhoneTextHighColor}" Offset="0.5"/>
+ </LinearGradientBrush>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <TextBlock Margin="10,1,0,0" Text="{Binding SettingDescription}" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" FontSize="11" FontWeight="Thin" IsColorFontEnabled="False">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </StackPanel>
+ </Button>
+ </DataTemplate>
+
+ <DataTemplate x:Name="SettingsGridItemTemplate">
+ <ItemsControl x:Name="SettingTap" Height="{Binding GridHeight}" Width="{Binding GridWidth}" HorizontalAlignment="Center" VerticalAlignment="Center">
+ <StackPanel Margin="0,25" HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="{Binding SettingPicture}" FontSize="26.667" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Top" Margin="5,0,10,5" Foreground="{ThemeResource PhoneAccentBrush}" Opacity="0.95" LineStackingStrategy="MaxHeight" FontWeight="Thin"/>
+ <TextBlock Text="{Binding SettingName}" FontSize="23.333" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" FontWeight="Thin" HorizontalAlignment="Center"/>
+ <TextBlock Text="{Binding SettingDescription}" HorizontalAlignment="Center"/>
+ </StackPanel>
+ </ItemsControl>
+ </DataTemplate>
+ <DataTemplate x:Name="RecentPlayTemplate">
+ <Grid Height="100" Width="75">
+ <Grid Background="{Binding Background}" Height="90" Width="70">
+ <Border Height="25" Width="25" CornerRadius="30" VerticalAlignment="Center" HorizontalAlignment="Center" BorderBrush="#7F383838" Background="#7F0F0F0F" BorderThickness="2">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#7FE0DFDF" FontSize="14" Text="5" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ </Border>
+ </Grid>
+ </Grid>
+ </DataTemplate>
+ <Storyboard x:Name="MediaOpen">
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="MediaFragment" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <SineEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="MediaOpenRev">
+ <DoubleAnimation To="700" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="MediaFragment" Duration="0:0:0.2">
+ <DoubleAnimation.EasingFunction>
+ <SineEase EasingMode="EaseIn"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="DurationBlink" RepeatBehavior="Forever" AutoReverse="True">
+ <DoubleAnimation Duration="0:0:0.6" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="currentDuration">
+ <DoubleAnimation.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="SeekOpen">
+ <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="border" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <BackEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="SeekClose">
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="border" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="border" d:IsOptimized="True"/>
+ </Storyboard>
+ <Storyboard x:Name="FTPOpen">
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="border1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <CircleEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="border1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <CircleEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="border1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <CircleEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="border1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <CircleEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="border1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <CircleEase EasingMode="EaseOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ </Storyboard>
+ <Storyboard x:Name="OpenSortMenuAnim">
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="SortMenu">
+ <EasingDoubleKeyFrame KeyTime="0" Value="0">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <QuinticEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="SortMenu">
+ <DiscreteObjectKeyFrame KeyTime="0">
+ <DiscreteObjectKeyFrame.Value>
+ <Visibility>Visible</Visibility>
+ </DiscreteObjectKeyFrame.Value>
+ </DiscreteObjectKeyFrame>
+ </ObjectAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="SortMenu">
+ <EasingDoubleKeyFrame KeyTime="0" Value="0">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <QuinticEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="SortMenu">
+ <EasingDoubleKeyFrame KeyTime="0" Value="0">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <QuinticEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ </Storyboard>
+ <Storyboard x:Name="PhotoSlide">
+ <DoubleAnimation Duration="0:0:0.3" To="0" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationX)" Storyboard.TargetName="rectangle" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <BackEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.3" To="0" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="rectangle" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <BackEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationZ)" Storyboard.TargetName="rectangle">
+ <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="359">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <BackEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="0">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <BackEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.CornerRadius)" Storyboard.TargetName="border2">
+ <DiscreteObjectKeyFrame KeyTime="0:0:0.7">
+ <DiscreteObjectKeyFrame.Value>
+ <CornerRadius>250</CornerRadius>
+ </DiscreteObjectKeyFrame.Value>
+ </DiscreteObjectKeyFrame>
+ </ObjectAnimationUsingKeyFrames>
+ </Storyboard>
+ <Storyboard x:Name="FTPActive" RepeatBehavior="Forever" AutoReverse="True">
+ <ColorAnimation Duration="0:0:0.5" To="White" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="border3" d:IsOptimized="True">
+ <ColorAnimation.EasingFunction>
+ <SineEase EasingMode="EaseOut"/>
+ </ColorAnimation.EasingFunction>
+ </ColorAnimation>
+ </Storyboard>
+ <Storyboard x:Name="AppearancePanel" AutoReverse="True" RepeatBehavior="Forever">
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="rectangle1">
+ <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="1.2">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="rectangle1">
+ <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="1.2">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="rectangle2">
+ <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.5">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:1.1" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="rectangle2">
+ <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.5">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:1.1" Value="1">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <SineEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ </Storyboard>
- <phone:PhoneApplicationPage.Resources>
+ </Page.Resources>
- <DataTemplate x:Key="File360ItemTemplate">
- <StackPanel Tap="folderTap_Click" >
- <toolkit:ContextMenuService.ContextMenu>
+ <Grid>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="0.035*"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid x:Name="grid4" Grid.RowSpan="2">
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid x:Name="Header" Margin="0">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.3"/>
+ </Grid.Background>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Button x:Name="hamburgerButton" MinWidth="0" HorizontalContentAlignment="Left" Click="Menu_Click" VerticalAlignment="Center" BorderBrush="{x:Null}" BorderThickness="0" Foreground="{ThemeResource PhoneForegroundBrush}">
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.6"/>
+ </Button.Background>
+ <StackPanel Orientation="Horizontal">
+ <TextBlock Text="h" FontFamily="Assets/Font/iconFont.ttf#iconfont" FontSize="25" MinHeight="0" MinWidth="0" Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+ <TextBlock Visibility="Collapsed" VerticalAlignment="Center" x:Name="menuText" FontFamily="Segoe WP Semibold" FontWeight="Normal" FontSize="16" HorizontalAlignment="Center">
+ <Run CharacterSpacing="75" Text="FILE360"/>
+ <Run Foreground="{StaticResource PhoneAccentBrush}" Text="°"/>
+ </TextBlock>
+ </StackPanel>
+ </Button>
+ <Grid Grid.Column="1">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Border Width="{StaticResource FlyoutThemeMinHeight}" >
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.6"/>
+ </Border.Background>
+ <TextBlock Foreground="{StaticResource PhoneAccentBrush}" x:Name="RootFolder" Text="" TextLineBounds="Tight" FontFamily="Assets/Font/iconfont.ttf#iconfont" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5"/>
+ </Border>
+ <ScrollViewer
+ Grid.Column="1">
+ <StackPanel Orientation="Horizontal">
+ <local:Addresser x:Name="Addresser"/>
+ </StackPanel>
+ </ScrollViewer>
+ </Grid>
+ </Grid>
+ <local:DrawerLayout x:Name="SideMenu" Grid.Row="1">
- <toolkit:ContextMenu IsZoomEnabled="True" x:Name="ContextMenu">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="0.12*"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
- <toolkit:MenuItem x:Name="Copy" Header="copy" Click="Copy_Click"/>
- <toolkit:MenuItem x:Name="Cut" Header="cut" Click="Cut_Click"/>
+ <Grid Grid.Row="1" >
+ <GridView x:Name="SDGridView"
+ Visibility="Visible"
+ ItemTemplate="{StaticResource ListFoldersView}"
+ ItemsPanel="{StaticResource GridViewItemsPanel}"
+ SelectionMode="None"
+ ScrollViewer.VerticalScrollMode="Enabled"
+ ScrollViewer.IsDeferredScrollingEnabled="False"
+ ScrollViewer.IsScrollInertiaEnabled="False"
+ ScrollViewer.VerticalScrollBarVisibility="Visible"
+ ScrollViewer.HorizontalScrollBarVisibility="Disabled"
+ ScrollViewer.HorizontalScrollMode="Disabled"
+ SelectionChanged="SDGridViewSelectionChanged">
- <toolkit:MenuItem x:Name="Delete" Header="delete" Click="Delete_Click"/>
+ <GridView.ItemContainerStyle>
+ <Style TargetType="GridViewItem">
+ <Setter Property="local:SelectorItemEx.ToggleSelectedOnHold" Value="False" />
+ </Style>
+ </GridView.ItemContainerStyle>
+ <GridView.Background>
+ <SolidColorBrush Opacity="0.800000011920929" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </GridView.Background>
+ </GridView>
+ <Grid x:Name="SortMenu" Margin="10" VerticalAlignment="Top" HorizontalAlignment="Right" Width="150" Height="250" Visibility="Collapsed" RenderTransformOrigin="1,0">
+ <Grid.RenderTransform>
+ <CompositeTransform/>
+ </Grid.RenderTransform>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Name" HorizontalContentAlignment="Left" Padding="25,0,9.5,3.5" Click="SortMenuItemClick"/>
+ <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="1" Content="Type" HorizontalContentAlignment="Left" Padding="25,0,9.5,3.5" Click="SortMenuItemClick"/>
+ <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="2" Content="Size" HorizontalContentAlignment="Left" Padding="25,0,9.5,3.5" Click="SortMenuItemClick"/>
+ <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="3" Content="Date" HorizontalContentAlignment="Left" Padding="25,0,9.5,3.5" Click="SortMenuItemClick"/>
+ </Grid>
- <toolkit:MenuItem x:Name="Hide" Header="hide" Click="Hide_Click"/>
+ <Button Click="SDCardEnumerator" Margin="50" x:Name="AddSDButton" HorizontalAlignment="Center" Visibility="Collapsed">
+ <StackPanel>
+ <TextBlock Text="f" HorizontalAlignment="Center" FontSize="80" FontFamily="iconfont.ttf#iconfont"/>
+ <TextBlock Text="your OS keeps us from accessing your files... maybe you can help us. tap to add folder." VerticalAlignment="Center" TextWrapping="Wrap" Margin="0,15,0,0" TextAlignment="Center" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}"/>
+ </StackPanel>
+ </Button>
+ </Grid>
+ <Grid Grid.Row="0">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.7"/>
+ </Grid.Background>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="0.50*"/>
+ <ColumnDefinition Width="3*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Button MinWidth="50" Content="l" Click="PreviousFolder" FontFamily="Assets/Font/iconfont.ttf#iconfont" Background="{x:Null}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+ <Grid Grid.Column="1" VerticalAlignment="Center">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="5*"/>
+ </Grid.ColumnDefinitions>
+ <CheckBox x:Name="selectBox" Checked="SelectAll" Margin="10,-2" VerticalAlignment="Center" IsChecked="{x:Null}" HorizontalAlignment="Left" Background="{x:Null}" BorderBrush="{ThemeResource PhoneAccentBrush}" Foreground="{ThemeResource PhoneForegroundBrush}" Unchecked="selectBox_Unchecked"/>
+ <TextBlock Grid.Column="1" Margin="5" TextWrapping="NoWrap" x:Name="headerText" Text="" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="20" TextTrimming="WordEllipsis" TextLineBounds="TrimToCapHeight"/>
+ </Grid>
+ <Button x:Name="sortButton" MinWidth="50" Grid.Column="2" FontFamily="Assets/Font/iconfont.ttf#iconfont" Click="OpenSortMenu">
+ <TextBlock Text="i"/>
+ </Button>
- </toolkit:ContextMenu>
- </toolkit:ContextMenuService.ContextMenu>
- <Image Source="{Binding Name2}" Width="60" Height="55" VerticalAlignment="Center" HorizontalAlignment="Center" />
- <TextBlock x:Name="folderTap" Text="{Binding Name}" TextWrapping="NoWrap" VerticalAlignment="Bottom" TextAlignment="Center" FontSize="16" />
- </StackPanel>
- </DataTemplate>
+ <Rectangle Grid.ColumnSpan="3" Height="2" MinHeight="2" Fill="{ThemeResource PhoneAccentBrush}" Opacity="0.25" VerticalAlignment="Bottom"/>
+ <!--<local:BottomBarItem x:Name="compressButton" Visibility="Visible" HorizontalAlignment="Center" ImageText="B" Grid.Column="1" ContentText="compress"/>-->
+ </Grid>
+ <ScrollViewer Grid.Row="1" Margin="15" x:Name="EmptyFolderStack" Visibility="Collapsed">
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid Grid.Row="1">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.6"/>
+ </Grid.Background>
+ <Button Margin="25" Click="AddFolder" HorizontalAlignment="Center" Background="{x:Null}">
+ <StackPanel>
+ <TextBlock Text="G" FontSize="90" FontFamily="Assets/Font/iconfont.ttf#iconfont" Foreground="#FF27AE60"/>
+ <TextBlock Text="add folder" HorizontalAlignment="Center"/>
+ </StackPanel>
+ </Button>
+ </Grid>
+ <Grid Grid.Column="1">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.805"/>
+ </Grid.Background>
+ <Button Click="AddFile" Margin="25" HorizontalAlignment="Center" Grid.Column="1">
+ <StackPanel>
+ <TextBlock Text="S" FontSize="100" FontFamily="Assets/Font/iconfont.ttf#iconfont" Foreground="#FFF39C12"/>
+ <TextBlock Text="add file" HorizontalAlignment="Center"/>
+ </StackPanel>
+ </Button>
+ </Grid>
+ </Grid>
+ <Button HorizontalAlignment="Stretch" Grid.Row="2" VerticalAlignment="Stretch" Click="DeleteThisFolder" >
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}" Opacity="0.7"/>
+ </Button.Background>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="3*"/>
+ </Grid.ColumnDefinitions>
+ <TextBlock VerticalAlignment="Center" Margin="10" Text="I" FontSize="66.667" FontFamily="Assets/Font/iconfont.ttf#iconfont">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="#FFE74C3C"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <TextBlock Margin="5" Text="delete this folder?" Grid.Column="1" VerticalAlignment="Center" Style="{StaticResource HeaderTextBlockStyle}" TextWrapping="Wrap" FontSize="33.333"/>
+ </Grid>
+ </Button>
+ <Button HorizontalAlignment="Stretch" Grid.Row="3" VerticalAlignment="Stretch" Click="PreviousFolder" >
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}" Opacity="0.7"/>
+ </Button.Background>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="3*"/>
+ </Grid.ColumnDefinitions>
+ <TextBlock VerticalAlignment="Center" Margin="10" Text="l" FontSize="66.667" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ <TextBlock Margin="5" Text="go back" Grid.Column="1" VerticalAlignment="Center" Style="{StaticResource HeaderTextBlockStyle}" TextWrapping="Wrap" FontSize="33.333"/>
+ </Grid>
+ </Button>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <TextBlock Margin="10" Text="empty folder" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" FontSize="22" VerticalAlignment="Top" HorizontalAlignment="Left">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Grid>
+
+ </Grid>
+ </ScrollViewer>
+
+ <!--><StackPanel Grid.Row="1" x:Name="MediaGridView"
+ ScrollViewer.VerticalScrollMode="Enabled"
+ ScrollViewer.VerticalScrollBarVisibility="Hidden"
+ ScrollViewer.HorizontalScrollBarVisibility="Disabled"
+ ScrollViewer.HorizontalScrollMode="Disabled"/>-->
+
+ <StackPanel Grid.Row="2">
+ <Rectangle Height="2" MinHeight="2" Fill="{ThemeResource PhoneAccentBrush}" Opacity="0.25"/>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.6"/>
+ </Grid.Background>
+ <Grid x:Name="operationBar" Visibility="Collapsed">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <local:BottomBarItem HorizontalAlignment="Center" ImageText="O" ContentText="copy" Click="CutItems"/>
+ <local:BottomBarItem HorizontalAlignment="Center" Grid.Column="1" ImageText="I" ContentText="delete" Click="DeleteItem"/>
+ <local:BottomBarItem HorizontalAlignment="Center" ImageText="P" Grid.Column="2" ContentText="rename" Click="RenameItem"/>
+ <local:BottomBarItem HorizontalAlignment="Center" ImageText="n" MinHeight="55" ContentText="share" Grid.Column="3" Click="ShareContent"/>
+ </Grid>
+ <Grid x:Name="operationBarNormal">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <local:BottomBarItem ImageText="G" ContentText="add folder" Click="AddFolder" HorizontalAlignment="Center"/>
+ <local:BottomBarItem Grid.Column="1" ImageText="S" ContentText="add file" Click="AddFile" HorizontalAlignment="Center"/>
+ <local:BottomBarItem
+ ImageText="T"
+ Grid.Column="2"
+ ContentText="paste"
+ Click="PasteItem"
+ HorizontalAlignment="Center"/>
+ <local:BottomBarItem x:Name="gridList" Grid.Column="3" ImageText="N" MinHeight="55" IsEnabled="True" ContentText="grid" Click="GridListChange" HorizontalAlignment="Center"/>
+ </Grid>
- <DataTemplate x:Name="File360MusicTemplate">
- <StackPanel>
- <TextBlock x:Name="{Binding MusicIndex}" Text="{Binding SongName}" FontFamily="Default" Tap="txtB_Tap" FontWeight="Normal" FontSize="30" Height="43"/>
- <TextBlock x:Name="txtB2" Text="{Binding ArtistName}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" Height="50"/>
- </StackPanel>
- </DataTemplate>
- </phone:PhoneApplicationPage.Resources>
-
- <phone:PhoneApplicationPage.ApplicationBar>
- <shell:ApplicationBar x:Name="appBar" IsVisible="True" IsMenuEnabled="True" Mode="Default" Opacity="1.0" >
-
- <shell:ApplicationBar.MenuItems>
- <shell:ApplicationBarMenuItem Text="settings" Click="Settings_Click" />
- </shell:ApplicationBar.MenuItems>
-
- <shell:ApplicationBarIconButton x:Name="NewFolder" IconUri="/Toolkit.Content/ApplicationBar.Add.png" Text="new folder" Click="NewFolder_Click" />
- <shell:ApplicationBarIconButton x:Name="MultiSelect" IconUri="/Toolkit.Content/ApplicationBar.Select.png" Text="multi select" Click="MultiSelect_Click" />
-
- </shell:ApplicationBar>
- </phone:PhoneApplicationPage.ApplicationBar>
-
-
-
- <Grid x:Name="LayoutRoot">
- <Grid.RowDefinitions>
- <RowDefinition Height="126*"/>
- <RowDefinition Height="183*"/>
- <RowDefinition Height="388*"/>
- </Grid.RowDefinitions>
- <Canvas x:Name="canvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.RowSpan="3">
- <Canvas.Resources>
- <Storyboard x:Name="moveAnimation">
- <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(Canvas.Left)" Storyboard.TargetName="CanvasRoot" d:IsOptimized="True" />
- </Storyboard>
- </Canvas.Resources>
- <Canvas.Background>
- <StaticResource ResourceKey="PhoneBackgroundBrush"/>
- </Canvas.Background>
- <Canvas CacheMode="BitmapCache" x:Name="CanvasRoot" Width="1170" VerticalAlignment="Stretch" Canvas.Left="-320" Height="768">
- <Border Width="310" CacheMode="BitmapCache" Background="{StaticResource PhoneBackgroundBrush}" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="768">
- <Grid HorizontalAlignment="Left" Width="310" Background="{StaticResource PhoneChromeBrush}">
- <ListBox x:Name="SideBar" Height="978" VerticalAlignment="Bottom" Margin="0,0,4,-301">
- <ListBox.Background>
- <ImageBrush Stretch="UniformToFill" ImageSource="/Resources/Assets/Wallpaper/bg1.jpg"/>
- </ListBox.Background>
- <Grid Width="310" Background="{StaticResource PhoneProgressBarBackgroundBrush}">
- <Ellipse HorizontalAlignment="Left" Height="64" Margin="23,25,0,0" VerticalAlignment="Top" Width="64" Fill="{StaticResource PhoneButtonBasePressedForegroundBrush}"/>
- <Image Margin="39,39,240,31" Source="/Resources/Assets/Images/user.png"/>
- <TextBlock Text="Hi User!" FontSize="24" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="15,0,0,0">
- <TextBlock.Foreground>
- <SolidColorBrush Color="White"/>
- </TextBlock.Foreground>
- </TextBlock>
+ </Grid>
+ </StackPanel>
</Grid>
- <Grid Width="310" Height="103" Background="#AA000000">
- <Ellipse Tap="oneFill_Tap" x:Name="oneFill" HorizontalAlignment="Left" Height="64" Margin="23,23,0,0" VerticalAlignment="Top" Width="64" Fill="#FF094AB2">
- <Ellipse.OpacityMask>
- <ImageBrush ImageSource="Resources/Assets/Images/onedrive.png" Stretch="Fill"/>
- </Ellipse.OpacityMask>
- </Ellipse>
- <TextBlock Margin="0,0,15,0" Text="OneDrive" FontSize="24" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center">
- <TextBlock.Foreground>
- <SolidColorBrush Color="White"/>
- </TextBlock.Foreground>
- </TextBlock>
+ <Grid x:Name="MainFragment" Width="40" Margin="0,50" HorizontalAlignment="Left">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0"/>
+ </Grid.Background>
</Grid>
- <Grid x:Name="sdcard_menu" Tap="sdcard_menu_Tap" Width="310" Height="107" Background="{StaticResource TransparentBrush}">
- <TextBlock Margin="100,0,0,0" Text="SD" FontSize="24" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Left">
- <TextBlock.Foreground>
- <SolidColorBrush Color="White"/>
- </TextBlock.Foreground>
- </TextBlock>
- <Ellipse Fill="{StaticResource PhoneInverseBackgroundBrush}" HorizontalAlignment="Left" Height="64" Margin="23,25,0,0" VerticalAlignment="Top" Width="64"/>
- <Image Margin="35,27,237,24" Source="/Resources/Assets/Images/sdcard.png" OpacityMask="{StaticResource PhoneAccentBrush}"/>
+ <Grid x:Name="ListFragment" Width="250" HorizontalAlignment="Left" ManipulationMode="TranslateX">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <Grid Height="57" VerticalAlignment="Top" d:LayoutOverrides="TopMargin, BottomMargin">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Border>
+ <Border.Background>
+ <SolidColorBrush Color="{StaticResource MediaControlPanelVideoThemeColor}"/>
+ </Border.Background>
+ <TextBox x:Name="searchBox" VerticalAlignment="Stretch" MinWidth="54" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Disabled" Padding="0" UseLayoutRounding="False" Style="{StaticResource SearchBox}" Text="" Background="{x:Null}" TextChanged="searchBox_TextChanged"/>
+ </Border>
+ <Button Grid.Column="1" MinWidth="20" Width="50" BorderBrush="{x:Null}" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontSize="26.667">
+ <Button.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.5"/>
+ </Button.Background>
+ <TextBlock Text="s" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="29.333"/>
+ </Button>
+ </Grid>
+ <ScrollViewer BorderBrush="{x:Null}" BorderThickness="0" ManipulationMode="TranslateX" IsRightTapEnabled="False" IsHoldingEnabled="False" IsDoubleTapEnabled="False" Margin="0,57,0,0" Background="{x:Null}">
+
+ <StackPanel>
+
+ <StackPanel>
+ <TextBlock Margin="10,4" Opacity="0.60" Text="Settings" FontSize="18.667"/>
+ <Grid x:Name="SettingsTab" Height="250">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <!--<Button HorizontalAlignment="Center" VerticalAlignment="Center" Click="OpenBluetoothSettings">
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="b" FontSize="25" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Top" Margin="5,0,10,5" Foreground="{ThemeResource PhoneAccentBrush}" Opacity="0.95" LineStackingStrategy="MaxHeight" FontWeight="Thin"/>
+ <TextBlock Text="bluetooth" HorizontalAlignment="Center" FontSize="13.333"/>
+ --><!--<TextBlock Text="configure bluetooth settings" HorizontalAlignment="Center" FontSize="13"/>--><!--
+ </StackPanel>
+ </Button>-->
+ <Button Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Click="HelpOpen">
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="h" FontSize="25" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Top" Margin="5,0,10,5" Foreground="{ThemeResource PhoneAccentBrush}" Opacity="0.95" LineStackingStrategy="MaxHeight" FontWeight="Thin"/>
+ <TextBlock Text="help" HorizontalAlignment="Center" FontSize="13.333"/>
+ <!--<TextBlock Text="check out this guide" HorizontalAlignment="Center" FontFamily="Helvetica Neue" FontSize="13" FontWeight="Normal"/>-->
+ </StackPanel>
+ </Button>
+ <Border x:Name="border1" Grid.ColumnSpan="3" Grid.RowSpan="3" CornerRadius="20" Canvas.ZIndex="10" RenderTransformOrigin="0.5,0.5" Opacity="0">
+ <Border.RenderTransform>
+ <CompositeTransform ScaleX="0.3" ScaleY="0.3" TranslateX="80" TranslateY="-100"/>
+ </Border.RenderTransform>
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </Border.Background>
+ <StackPanel Margin="60,50,60,0">
+ <TextBlock Text="ADDRESS" FontSize="20" TextAlignment="Center" HorizontalAlignment="Center">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <TextBlock Text="192.168.1.1" TextAlignment="Center" FontSize="20" HorizontalAlignment="Center">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <Button HorizontalAlignment="Center" Click="StopFTP">
+ <Grid>
+ <Ellipse x:Name="ellipse" Height="100" Width="100" Fill="#BFEA1010"/>
+ <TextBlock Text="X" HorizontalAlignment="Center" FontSize="25" TextAlignment="Center" VerticalAlignment="Center">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="White"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Grid>
+ </Button>
+
+ </StackPanel>
+ </Border>
+ <Grid Grid.Column="2" Canvas.ZIndex="11">
+ <Button MinWidth="0" x:Name="button" HorizontalAlignment="Stretch" Click="OpenFTP">
+ <Border x:Name="border3" CornerRadius="50" VerticalAlignment="Center" Width="65" Height="65">
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource SystemColorControlAccentColor}"/>
+ </Border.Background>
+ <Grid>
+ <Ellipse x:Name="ellipse1" Margin="5">
+ <Ellipse.Fill>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Ellipse.Fill>
+ </Ellipse>
+ <TextBlock Text="FTP" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#D8FFFFFF"/>
+ </Grid>
+ </Border>
+ </Button>
+ </Grid>
+ <Grid x:Name="password_rect" Grid.Column="2" Grid.Row="2" Tapped="password_rect_Tapped">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <TextBlock x:Name="textBlock1" FontFamily="Assets/Font/iconfont.ttf#iconfont" Text="r" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="26.667">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBaseMediumMidColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Grid>
+ <ToggleButton MinWidth="0" x:Name="musicToggle" Checked="musicToggle_Checked" Unchecked="musicToggle_Unchecked" Grid.Row="1" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
+ <StackPanel HorizontalAlignment="Center">
+ <TextBlock HorizontalAlignment="Center" Text="b" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="33.333" VerticalAlignment="Center" Foreground="{ThemeResource PhoneAccentBrush}"/>
+ <TextBlock Text="music"/>
+ </StackPanel>
+ </ToggleButton>
+ <ToggleButton MinWidth="0" Grid.Row="1" Grid.Column="1" x:Name="videosToggle" Checked="videosToggle_Checked" Unchecked="videosToggle_Unchecked" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text=")" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="33.333" VerticalAlignment="Center" Foreground="{ThemeResource PhoneAccentBrush}"/>
+ <TextBlock Text="videos" HorizontalAlignment="Center"/>
+ </StackPanel>
+ </ToggleButton>
+ <ToggleButton Grid.Column="2" Grid.Row="1" Visibility="Collapsed" x:Name="ebookToggle" Checked="ebookToggle_Checked" Unchecked="ebookToggle_Unchecked" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text="m" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="33.333" Foreground="{ThemeResource PhoneAccentBrush}"/>
+ </StackPanel>
+ </ToggleButton>
+ <ToggleButton MinWidth="0" Grid.Row="1" Grid.Column="2" x:Name="picturesToggle" Checked="picturesToggle_Checked" Unchecked="picturesToggle_Unchecked" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text="M" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="33.333" VerticalAlignment="Center" Foreground="{ThemeResource PhoneAccentBrush}"/>
+ <TextBlock Text="pictures" HorizontalAlignment="Center"/>
+ </StackPanel>
+ </ToggleButton>
+ <Border Grid.Row="2" Grid.Column="1" BorderThickness="5" RenderTransformOrigin="0.5,0.5">
+ <Grid x:Name="grid3" RenderTransformOrigin="0.5,0.5">
+ <Grid.RenderTransform>
+ <CompositeTransform/>
+ </Grid.RenderTransform>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </Grid.Background>
+ <Rectangle x:Name="rectangle1" Margin="10" Fill="{ThemeResource PhoneAccentBrush}" RenderTransformOrigin="0.5,0.5">
+ <Rectangle.RenderTransform>
+ <CompositeTransform/>
+ </Rectangle.RenderTransform>
+ </Rectangle>
+
+ <Rectangle x:Name="rectangle2" Margin="20" RenderTransformOrigin="0.5,0.5">
+ <Rectangle.RenderTransform>
+ <CompositeTransform/>
+ </Rectangle.RenderTransform>
+ <Rectangle.Fill>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Rectangle.Fill>
+ </Rectangle>
+ </Grid>
+ </Border>
+ <ToggleButton MinWidth="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="0">
+ <StackPanel>
+ <TextBlock TextAlignment="Center" Text="c" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="33.333" VerticalAlignment="Center" Foreground="{ThemeResource PhoneAccentBrush}"/>
+ <TextBlock Text="list" HorizontalAlignment="Center"/>
+ </StackPanel>
+ </ToggleButton>
+ </Grid>
+ </StackPanel>
+ <local:SideBarMenuButton ImageText="F" ContentText="Recent" HorizontalAlignment="Stretch"/>
+
+ <Button x:Name="sdbutton" HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" Width="260" Click="SDCardEnumerator" Margin="0,5">
+ <StackPanel Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Left">
+ <StackPanel Orientation="Horizontal">
+ <TextBlock VerticalAlignment="Center" Text="SD Card" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" FontWeight="Light" FontSize="21.333" />
+ <SymbolIcon x:Name="symbolIcon" Symbol="Refresh" RenderTransformOrigin="0.5,0.5" Margin="100,0,0,0" >
+ <SymbolIcon.RenderTransform>
+ <CompositeTransform/>
+ </SymbolIcon.RenderTransform>
+ </SymbolIcon>
+ </StackPanel>
+ <TextBlock FontSize="10" VerticalAlignment="Bottom" Margin="0,0,0,7" HorizontalAlignment="Left">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource TextBoxPlaceholderColor}"/>
+ </TextBlock.Foreground>
+ <Run x:Name="FreeSpace" Foreground="{ThemeResource PhoneForegroundBrush}" FontWeight="Bold" FontSize="13.333" Text="2"/>
+ <Run Text="GB free"/>
+ </TextBlock>
+ <ProgressBar x:Name="sdProgbar" Height="3" Width="250"/>
+ <TextBlock x:Name="textBlock" Text="please wait... sdcard is loading" FontSize="13" Visibility="Collapsed" Foreground="#66FFF2F2"/>
+ </StackPanel>
+ </Button>
+ <Button HorizontalContentAlignment="Left" Click="PhoneEnumerator" Margin="0,5" HorizontalAlignment="Stretch">
+ <StackPanel Orientation="Horizontal">
+ <StackPanel>
+ <TextBlock Text="Phone" Foreground="{ThemeResource PhoneForegroundBrush}" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" FontWeight="Light" FontSize="21.333"/>
+ <TextBlock Text="browse internal memory" FontSize="10.667">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource TextBoxPlaceholderColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <ProgressBar Margin="0,5" Height="3" Maximum="{Binding Maximum,ElementName=sdProgbar}" Width="{Binding ActualWidth,ElementName=sdProgbar}" Value="{Binding Value, ElementName=sdProgbar}"/>
+ </StackPanel>
+ </StackPanel>
+ </Button>
+ <Button HorizontalContentAlignment="Left" HorizontalAlignment="Stretch" Width="260" Click="PersonalStorageEnumerator" Margin="0,5">
+ <StackPanel Grid.Column="1" Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Left">
+ <StackPanel Orientation="Horizontal">
+ <TextBlock VerticalAlignment="Center" Text="Home" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" FontWeight="Light" FontSize="21.333" />
+ <SymbolIcon x:Name="symbolIcon1" Symbol="Refresh" RenderTransformOrigin="0.5,0.5" Margin="115,0,0,0" Tapped="PhoneRefreshTapped" >
+ <SymbolIcon.RenderTransform>
+ <CompositeTransform/>
+ </SymbolIcon.RenderTransform>
+ </SymbolIcon>
+ </StackPanel>
+ <TextBlock FontSize="10" VerticalAlignment="Bottom" Margin="0,0,0,7" HorizontalAlignment="Left">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource TextBoxPlaceholderColor}"/>
+ </TextBlock.Foreground>
+ <Run FontWeight="Bold" Text="{Binding Text,ElementName=FreeSpace}"/>
+ <Run Text="GB free"/>
+ </TextBlock>
+
+ <TextBlock Visibility="Collapsed" x:Name="phoneWarning" Text="please wait... phone memory is loading" FontSize="13" Foreground="#66FFF2F2"/>
+ </StackPanel>
+ </Button>
+
+
+ <TextBlock Margin="10,4" Opacity="0.60" Text="Library"/>
+ <local:SideBarMenuButton ImageText="M" ContentText="Pictures" Click="PicturesLibraryTapped" HorizontalAlignment="Stretch" Width="Auto"/>
+ <local:SideBarMenuButton ImageText="C" ContentText="Video" Click="VideoLibraryTapped" HorizontalAlignment="Stretch" Width="Auto"/>
+ <local:SideBarMenuButton ImageText="y" ContentText="Music" Click="MusicLibraryClick" HorizontalAlignment="Stretch" Width="Auto"/>
+ <!--<Button Click="RightMenu_Click" HorizontalContentAlignment="Left" Margin="0,5" Visibility="Collapsed">
+ <StackPanel Orientation="Horizontal">
+ <StackPanel>
+ <TextBlock Text="Downloads" Foreground="{ThemeResource PhoneForegroundBrush}" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" FontWeight="Light" FontSize="21.333"/>
+ <TextBlock Text="there are no active downloads" FontSize="10.667">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource TextBoxPlaceholderColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </StackPanel>
+ </Button>-->
+ <Rectangle Height="2" Margin="5">
+ <Rectangle.Fill>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}" Opacity="0.25"/>
+ </Rectangle.Fill>
+ </Rectangle>
+ <Button Click="NowPlaying" Height="100" HorizontalAlignment="Stretch" BorderThickness="0" HorizontalContentAlignment="Stretch">
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Border x:Name="border2" Height="75" Width="75" Background="{x:Null}">
+ <Rectangle x:Name="rectangle" Fill="{Binding Background, ElementName=imageContainerMedia}" RenderTransformOrigin="0.5,0.5">
+ <Rectangle.Projection>
+ <PlaneProjection/>
+ </Rectangle.Projection>
+ <Rectangle.RenderTransform>
+ <CompositeTransform/>
+ </Rectangle.RenderTransform>
+ </Rectangle>
+ </Border>
+ <StackPanel Grid.Column="1" Margin="5" VerticalAlignment="Bottom">
+ <TextBlock Text="Now Playing" FontSize="15" FontWeight="Thin"/>
+ <TextBlock Text="{Binding Text, ElementName=SongName}" TextTrimming="WordEllipsis" TextWrapping="Wrap"/>
+ <TextBlock FontSize="12" Opacity="0.60" Text="{Binding Text, ElementName=SongArtist}" TextTrimming="WordEllipsis"/>
+ <ProgressBar Maximum="{Binding Maximum, ElementName=musicSlider}" Value="{Binding Value, ElementName=musicSlider}"/>
+ </StackPanel>
+ </Grid>
+ </Button>
+ <Rectangle Height="2" Margin="5">
+ <Rectangle.Fill>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}" Opacity="0.25"/>
+ </Rectangle.Fill>
+ </Rectangle>
+
+ <!--<Button HorizontalContentAlignment="Left" Margin="0,5" Click="Browser" Visibility="Collapsed">
+ <StackPanel Orientation="Horizontal">
+ <StackPanel>
+ <TextBlock Text="Experimental Browser" Foreground="{ThemeResource PhoneForegroundBrush}" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" FontWeight="Light" FontSize="21.333"/>
+ <TextBlock Text="Internet connection inactive" FontSize="10.667">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource TextBoxPlaceholderColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </StackPanel>
+ </Button>-->
+
+
+
+
+
+ </StackPanel>
+ </ScrollViewer>
+ </Grid>
+ <Grid x:Name="DownloadsFragment" ManipulationMode="TranslateX" Visibility="Collapsed">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <ScrollViewer BorderBrush="{x:Null}" BorderThickness="0" ManipulationMode="TranslateY" IsRightTapEnabled="False" IsHoldingEnabled="False" IsDoubleTapEnabled="False" Margin="0">
+ <ScrollViewer.Background>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.1">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Color="Black" Offset="1"/>
+ <GradientStop Offset="0.03"/>
+ <GradientStop Offset="0.97"/>
+ </LinearGradientBrush>
+ </ScrollViewer.Background>
+ <StackPanel>
+ <local:DownloadIndicator HorizontalAlignment="Stretch"/>
+ </StackPanel>
+ </ScrollViewer>
+ <Grid Grid.Row="1" Height="57">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </Grid.Background>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <toolkit:WatermarkTextBox Foreground="{StaticResource PhoneBackgroundBrush}" TextWrapping="NoWrap" VerticalContentAlignment="Center" WatermarkText="url..." MinWidth="200" BorderThickness="0" Margin="0" FontSize="21.333" VerticalAlignment="Stretch" Background="{x:Null}" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" BorderBrush="{x:Null}"/>
+ <Button Grid.Column="1" MinWidth="20" Width="50" BorderBrush="{x:Null}" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Foreground="#FFA04F4F" Background="{x:Null}">
+ <TextBlock Text="q" FontFamily="Assets/Font/iconfont.ttf#iconfont">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Button>
+ </Grid>
</Grid>
- <Grid Width="310" Height="107" Background="{StaticResource PhoneDisabledBrush}">
- <TextBlock Margin="100,0,0,0" Text="Phone" FontSize="24" TextAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Center">
- <TextBlock.Foreground>
- <SolidColorBrush Color="White"/>
- </TextBlock.Foreground>
- </TextBlock>
- <Ellipse Fill="{StaticResource PhoneInverseBackgroundBrush}" HorizontalAlignment="Left" Height="64" Margin="23,25,0,0" VerticalAlignment="Top" Width="64"/>
- <Image Margin="43,28,245,20" Source="/Resources/Assets/Images/phone.png" OpacityMask="{StaticResource PhoneAccentBrush}"/>
+ </local:DrawerLayout>
+
+ </Grid>
+ <Grid x:Name="WebBrowser" Visibility="Collapsed">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}" Opacity="0.9"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <StackPanel Orientation="Horizontal">
+ <Button MinWidth="0" Content="l" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ <Button MinWidth="0" Content="r" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ </StackPanel>
+ <TextBox x:Name="webAddressBar" Grid.Column="1" Margin="10">
+ <TextBox.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </TextBox.Foreground>
+ <TextBox.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBox.Background>
+ </TextBox>
+ <Button Content="GO" HorizontalAlignment="Right" Grid.Column="1" Click="Button_Click"/>
+ </Grid>
+ <WebView x:Name="webView" Grid.Row="1"/>
+ </Grid>
+ </Grid>
+ </Grid>
+ <Grid x:Name="MediaFragment" Grid.RowSpan="2" RequestedTheme="Dark" RenderTransformOrigin="0,0">
+ <Grid.RenderTransform>
+ <CompositeTransform TranslateX="600"/>
+ </Grid.RenderTransform>
+ <Grid x:Name="imageContainerMedia" VerticalAlignment="Stretch">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Grid.Background>
+ <Viewbox StretchDirection="Both" Stretch="Uniform">
+ <MediaElement x:Name="mediaPlayer" AudioCategory="BackgroundCapableMedia" VerticalAlignment="Center"/>
+ </Viewbox>
+ <Grid VerticalAlignment="Stretch" Margin="0">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid x:Name="grid1" ManipulationDelta="mediaFragManipDelta" ManipulationCompleted="mediaFragManipCompleted" ManipulationMode="TranslateX" CacheMode="BitmapCache" Opacity="1">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Grid MinWidth="50" MinHeight="0" >
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Button >
+ <StackPanel Margin="10,0" Orientation="Horizontal">
+ <StackPanel VerticalAlignment="Center" CacheMode="BitmapCache" x:Name="grid" Grid.Column="1" Margin="0">
+ <TextBlock x:Name="SongName" Text="no media" TextWrapping="NoWrap" MinWidth="175" FontSize="18.667" VerticalAlignment="Center" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" Margin="0" HorizontalAlignment="Left" Foreground="White"/>
+ <TextBlock x:Name="SongArtist" Text="" FontSize="10.667" VerticalAlignment="Center" Margin="0" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" HorizontalAlignment="Left" Foreground="White"/>
+ </StackPanel>
+ </StackPanel>
+ </Button>
</Grid>
- <Grid toolkit:TiltEffect.SuppressTilt="True" Margin="0,0,0,0" Width="310" Height="142" Background="{StaticResource PhoneBorderBrush}">
- <Rectangle x:Name="rect_above" HorizontalAlignment="Left" Height="22" Margin="24,30,0,0" VerticalAlignment="Top" Width="56" RenderTransformOrigin="0.5,0.5">
- <Rectangle.Projection>
- <PlaneProjection RotationX="-67" />
- </Rectangle.Projection>
+ <Button x:Name="button2" Grid.Column="1" MinWidth="0" Visibility="Collapsed" Content="c" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ </Grid>
+ <Grid x:Name="grid2" Grid.Row="1" Visibility="Visible" >
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Grid ManipulationMode="TranslateX" ManipulationDelta="mediaFragManipDelta" ManipulationCompleted="mediaFragManipCompleted">
+ <TextBlock x:Name="musicArt" Text="y" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="Assets/Font/iconfont.ttf#iconfont" />
+ <Rectangle>
+ <Rectangle.Fill>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.7">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Color="Black" Offset="1"/>
+ <GradientStop Offset="0.5"/>
+ <GradientStop Offset="0.05" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ <GradientStop Offset="0.95" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </LinearGradientBrush>
+ </Rectangle.Fill>
</Rectangle>
+ <!--<ListView x:Name="MusicView"
+ ItemTemplate="{StaticResource RecentPlayTemplate}">
+ <ListView.Background>
+
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.75">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Color="Black" Offset="1"/>
+ <GradientStop Offset="0.05" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ <GradientStop Offset="0.95" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </LinearGradientBrush>
+ </ListView.Background>
- <Rectangle x:Name="dl" HorizontalAlignment="Left" Height="43" Margin="25,54,0,0" VerticalAlignment="Top" Width="54"/>
- <Ellipse x:Name="pl" HorizontalAlignment="Left" Height="78" Margin="206,35,0,0" VerticalAlignment="Top" Width="90"/>
- <Image HorizontalAlignment="Right" Height="112" Margin="0,12,127,18" VerticalAlignment="Center" Tap="Music_Tap" Width="82" Source="/Resources/Assets/Images/MusicBar.png"/>
- <Image Tap="downloads_Tap" HorizontalAlignment="Left" Height="91" VerticalAlignment="Center" Width="84" Source="/Resources/Assets/Images/download.png" Margin="10,22,0,29" OpacityMask="{StaticResource PhoneBackgroundBrush}" Opacity="0.9"/>
- <Image HorizontalAlignment="Right" Height="120" Margin="0,12,14,10" VerticalAlignment="Center" Tap="VideoLister" Width="90" Source="/Resources/Assets/Images/video.png"/>
+ </ListView>-->
+ </Grid>
+ <Grid VerticalAlignment="Bottom">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <ToggleButton MinWidth="50" Content="X" FontFamily="Assets/Font/iconfont.ttf#iconfont" Style="{StaticResource ToggleButtonStyle}" VerticalAlignment="Bottom" Margin="10,0,0,25"/>
+ <Border Grid.Column="1" x:Name="border" VerticalAlignment="Center" RenderTransformOrigin="0.5,1">
+ <Border.RenderTransform>
+ <CompositeTransform ScaleY="0"/>
+ </Border.RenderTransform>
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.98"/>
+ </Border.Background>
+ <TextBlock x:Name="sliderTimer" Margin="30" Text="{Binding Text, ElementName=currentDuration}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Border>
+ <ToggleButton Content="Y" MinWidth="50" Grid.Column="2" FontFamily="Assets/Font/iconfont.ttf#iconfont" Style="{StaticResource ToggleButtonStyle}" Margin="0,0,10,25" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
</Grid>
- </ListBox>
- <Rectangle Fill="{StaticResource PhoneChromeBrush}" Stroke="{StaticResource PhoneChromeBrush}" toolkit:TiltEffect.SuppressTilt="True" Margin="-7,0,0,677" RadiusY="8" RadiusX="8"/>
- <TextBox x:Name="searchBox" HorizontalAlignment="Left" Height="76" Margin="10,7,0,0" TextWrapping="NoWrap" VerticalAlignment="Top" Width="221" Style="{StaticResource CurvedTextBox}"/>
- <Button x:Name="SearchModule" Click="SearchModule_Click" toolkit:TiltEffect.IsTiltEnabled="True" HorizontalAlignment="Left" Height="76" Margin="231,7,0,0" VerticalAlignment="Top" Width="69" ClickMode="Press" Style="{StaticResource SearchButton}">
- <Button.OpacityMask>
- <ImageBrush Stretch="Uniform" ImageSource="/Resources/Assets/Images/Search.png"/>
- </Button.OpacityMask>
- </Button>
+ <Grid Grid.Row="1" VerticalAlignment="Center">
+ <StackPanel>
+ <Grid ManipulationMode="TranslateX" ManipulationStarted="musicSlider_ManipulationStarted" ManipulationDelta="musicSlider_ManipulationDelta" ManipulationCompleted="musicSlider_ManipulationCompleted">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <ProgressBar Value="0" Margin="10" x:Name="musicSlider" BorderBrush="{x:Null}" VerticalAlignment="Top" Height="5"/>
- </Grid>
- </Border>
- <Border Width="370" CacheMode="BitmapCache" Grid.Column="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="768" Canvas.Left="800">
- <Border.Background>
- <ImageBrush ImageSource="/Resources/Assets/Wallpaper/bg1.jpg"/>
- </Border.Background>
- <Grid x:Name="music_bg">
- <Grid.Background>
- <SolidColorBrush Color="{StaticResource PhoneSemitransparentColor}"/>
- </Grid.Background>
- <Rectangle HorizontalAlignment="Left" Height="335" Margin="20,14,0,0" VerticalAlignment="Top" Width="327" RadiusY="22" RadiusX="22" Fill="{StaticResource PhoneDisabledBrush}" Stroke="{StaticResource PhoneChromeBrush}"/>
- <Rectangle x:Name="coverArt" HorizontalAlignment="Left" Height="316" Margin="30,24,0,0" VerticalAlignment="Top" Width="306" RadiusY="22" RadiusX="22">
- <Rectangle.Fill>
- <ImageBrush ImageSource="/Resources/Assets/Images/headphone.png" Stretch="None"/>
- </Rectangle.Fill>
- </Rectangle>
- <Button x:Name="music_reverse" Content="" HorizontalAlignment="Left" Height="97" Margin="30,358,0,0" VerticalAlignment="Top" Width="102" Style="{StaticResource Previous}"/>
- <Button x:Name="music_forward" Content="" HorizontalAlignment="Left" Height="97" Margin="234,358,0,0" VerticalAlignment="Top" Width="102" Style="{StaticResource Forward}"/>
- <Slider x:Name="music_slider" HorizontalAlignment="Left" Height="82" Margin="30,276,0,0" VerticalAlignment="Top" Width="306" Style="{StaticResource SliderStyle}"/>
- <toolkit:LongListMultiSelector
- x:Name="musicLists"
- Margin="0,482,0,0"
- ItemTemplate="{StaticResource File360MusicTemplate}"
- IsGroupingEnabled="False"/>
- <Button HorizontalAlignment="Left" Height="97" Margin="132,358,0,0" VerticalAlignment="Top" Width="102" Style="{StaticResource ButtonPlay}"/>
+ <TextBlock x:Name="currentDuration" Grid.Row="1" Text="--:--" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,5,0,5"/>
+ <TextBlock x:Name="mediaDuration" Text="--:--" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,5,10,5"/>
+ </Grid>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Button Content="6" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+ <Button x:Name="playPause" Grid.Column="1" Content="5" FontFamily="Assets/Font/iconfont.ttf#iconfont" Click="PlayCurrent" FontSize="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+ <Button Content="4" Grid.Column="2" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+ </Grid>
+ </Grid>
+ </StackPanel>
+ </Grid>
</Grid>
- </Border>
- <Grid x:Name="grdCommands" CacheMode="BitmapCache" Grid.Column="1" Height="{Binding ActualHeight, ElementName=canvas}" Width="485" Canvas.Left="315" >
- <toolkit:LongListMultiSelector
- x:Name="sdlists"
- ItemTemplate="{StaticResource File360ItemTemplate}"
- IsGroupingEnabled="False"
- GridCellSize="107,90" LayoutMode="Grid" Margin="15,194,10,0"/>
- <TextBlock HorizontalAlignment="Left" DoubleTap="vault_button_DoubleTap" TextWrapping="Wrap" VerticalAlignment="Top" Height="26" Width="139" Margin="68,17,0,0" Foreground="{StaticResource PhoneForegroundBrush}" FontSize="24">
- <Run Foreground="{StaticResource PhoneForegroundBrush}" Text="FILE360"/>
- <Run FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}" Text="°"/>
+ </Grid>
+ </Grid>
+ </Grid>
+ </Grid>
+ <local:DialogBox Visibility="Collapsed" IsOpen="False" HeadingText="ARE YOU SURE?" ContentText="...are you sure you want to exit?" x:Name="DialogBox"/>
+ <ScrollViewer VerticalAlignment="Bottom" Visibility="Visible" Height="20">
+ <Grid VerticalAlignment="Top">
+ <Grid.Background>
+ <SolidColorBrush Color="Black"/>
+ </Grid.Background>
+ <TextBlock TextWrapping="Wrap" x:Name="statusMsg" FontSize="18" Text="Status Message" Foreground="White"/>
+ </Grid>
+ </ScrollViewer>
+ <Border x:Name="aiBorder" CornerRadius="8" Visibility="Collapsed" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,10,0,10" BorderThickness="2">
+ <Border.BorderBrush>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Border.BorderBrush>
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </Border.Background>
+ <StackPanel Margin="1">
+ <TextBlock x:Name="aiText" TextWrapping="Wrap" Text="Rename Operation failed" FontSize="15" Margin="10,5" FontFamily="Segoe WP Light" FontWeight="Bold">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ <TextBlock x:Name="aiSubText" TextWrapping="Wrap" Text="A file or folder can't contain any of the following characters" FontSize="15" Margin="10,5" FontFamily="Segoe WP Light">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </StackPanel>
+ </Border>
+
+ <Grid x:Name="PictureDisplayer" Visibility="Collapsed">
+ <Grid >
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <FlipView x:Name="PictureFlipView" Grid.RowSpan="2"/>
+
+ <StackPanel Grid.Row="1" >
+ <StackPanel.Background>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+ <GradientStop Color="#19000000"/>
+ <GradientStop Color="#F2000000" Offset="1"/>
+ </LinearGradientBrush>
+ </StackPanel.Background>
+ <TextBlock x:Name="picName" Margin="10,2" Text="pic(1).jpg" Style="{StaticResource GroupHeaderTextBlockStyle}" Foreground="White"/>
+ <TextBlock x:Name="picDate" Margin="10,2" Text="05/02/2015" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" Foreground="White"/>
+ </StackPanel>
+ </Grid>
+ </Grid>
+ <Grid x:Name="ProgressDialog" Visibility="Collapsed">
+ <Grid.Background>
+ <SolidColorBrush Color="#99000000"/>
+ </Grid.Background>
+
+ <Grid x:Name="SubFrameGrid" Visibility="Collapsed">
+ <Grid.Background>
+ <SolidColorBrush Color="#99000000"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <TextBlock x:Name="SubFrameHeader" Text="" FontSize="21.333" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="15,0,0,0"/>
+ <Button Content="X" HorizontalAlignment="Right" Click="HelpPageClose" MinWidth="0" Margin="0,0,15,0"/>
+ <Frame Margin="15" Grid.Row="1" x:Name="SubFrame" Background="{x:Null}"/>
+ </Grid>
+
+
+ <Border x:Name="FileMoveDialog" CornerRadius="20" Margin="20,100" VerticalAlignment="Center" Visibility="Collapsed">
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Border.Background>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Grid>
+ <TextBlock Margin="10" TextWrapping="Wrap" Text="Paste" Style="{StaticResource SubheaderTextBlockStyle}"/>
+ <Button Content="x" HorizontalAlignment="Right" FontFamily="Assets/Font/iconfont.ttf#iconfont" Click="CloseDialog"/>
+ </Grid>
+ <TextBlock Grid.Row="1" Margin="10" TextWrapping="Wrap" Text="swipe horizontally to switch modes : copy / move" FontSize="20"/>
+ <Grid Grid.Row="2">
+ <FlipView x:Name="PasteFlipView">
+ <FlipViewItem>
+
+ <StackPanel Margin="10" HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="O" TextAlignment="Center" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="40"/>
+ <TextBlock Text="copy" TextAlignment="Center"/>
+ </StackPanel>
+ </FlipViewItem>
+ <FlipViewItem>
+
+ <StackPanel Margin="10" HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="R" TextAlignment="Center" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="40"/>
+ <TextBlock Text="move" TextAlignment="Center"/>
+ </StackPanel>
+ </FlipViewItem>
+ </FlipView>
+ </Grid>
+ <TextBlock Grid.Row="3" Margin="10" TextWrapping="Wrap" Text="select file actions" FontSize="20"/>
+ <Grid Grid.Row="4" Margin="0,10,0,0">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{ThemeResource PhoneAccentBrush}" Click="OverwriteContents">
+ <StackPanel>
+ <TextBlock Text="Overwrite" TextAlignment="Center"/>
+ <TextBlock TextWrapping="Wrap" Text="replaces existing contents" FontSize="10.667" TextAlignment="Center"/>
+ </StackPanel>
+ </Button>
+ <Button Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{ThemeResource PhoneAccentBrush}" Click="KeepBothFiles">
+ <StackPanel>
+ <TextBlock Text="Keep Both" TextAlignment="Center"/>
+ <TextBlock TextWrapping="Wrap" Text="gives unique file name" FontSize="10.667" TextAlignment="Center"/>
+ </StackPanel>
+ </Button>
+ </Grid>
+ </Grid>
+ </Border>
+
+
+ <Grid Margin="15" x:Name="ProgInfoView" HorizontalAlignment="Stretch" Visibility="Collapsed">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <TextBlock Margin="25" TextWrapping="Wrap" Text="Please do not close this app during this operation." TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+ <TextBlock Margin="25" TextWrapping="Wrap" Text="This dialog will close automatically upon completion." TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2"/>
+ <StackPanel Grid.Row="1" VerticalAlignment="Center">
+ <StackPanel.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </StackPanel.Background>
+ <TextBlock Margin="15,5" HorizontalAlignment="Center" TextWrapping="Wrap">
+ <Run x:Name="cmstatus" Text="copying "/>
+ <Run x:Name="progFileSource" FontWeight="Bold" Text="Vedhalam"/>
+ <Run Text=" to "/>
+ <Run x:Name="progFileDest" Text="D:" FontWeight="Bold"/>
+ <Run/>
</TextBlock>
- <TextBlock x:Name="nosd" Visibility="Collapsed" Style="{StaticResource PhoneTextLargeStyle}" Margin="10,173,0,0" TextWrapping="Wrap" Height="104" Width="460" TextAlignment="Center" Foreground="{StaticResource PhoneForegroundBrush}">
- <Span Foreground="{StaticResource PhoneForegroundBrush}" FontSize="32">
- <Run Text="no "/>
- </Span>
- <Span Foreground="{StaticResource PhoneAccentBrush}" FontSize="32" >
- <Run Text="sdcard " FontWeight="Bold"/>
- </Span>
- <Span Foreground="{StaticResource PhoneForegroundBrush}" FontSize="32">
- <Run Text="found, please insert one to view files. "/>
- </Span>
+ <ProgressBar x:Name="progBar" Margin="15,10" IsIndeterminate="True" VerticalAlignment="Stretch" Height="18"/>
+ <TextBlock Margin="0,5" x:Name="progText" HorizontalAlignment="Center">
+ <Run x:Name="progCurrentSize" FontWeight="Bold" Text="25.3 "/>
+ <Run Text="/ "/>
+ <Run x:Name="progTotalSize" FontWeight="Bold" Text="45.2 "/>
+ <Run Text="mb"/>
</TextBlock>
- <TextBlock x:Name="sd" Text="sdcard" Style="{StaticResource PhoneTextLargeStyle}" Margin="24,49,17,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="49" Width="439" FontSize="40" Foreground="{StaticResource PhoneForegroundBrush}" />
- <Rectangle HorizontalAlignment="Left" Height="40" Margin="74,124,0,0" VerticalAlignment="Top" Width="401" Fill="{StaticResource PhoneChromeBrush}"/>
- <TextBlock x:Name="textBlock" TextWrapping="NoWrap" Height="40" FontFamily="Segoe WP Semibold" FontSize="24" Canvas.Left="500" Canvas.Top="120" Margin="94,124,10,0" VerticalAlignment="Top" Foreground="{StaticResource PhoneForegroundBrush}"/>
- <Ellipse HorizontalAlignment="Left" Height="70" Margin="15,109,0,0" VerticalAlignment="Top" Width="74" Fill="{StaticResource PhoneChromeBrush}"/>
- <Button x:Name="homeButton" toolkit:TiltEffect.IsTiltEnabled="True" Tap="sdcard_menu_Tap" Content="" HorizontalAlignment="Left" Margin="14,109,0,0" VerticalAlignment="Top" Width="74" BorderBrush="{x:Null}" Foreground="{x:Null}" Height="70" Style="{StaticResource MainBarButton}">
- <Button.Background>
- <ImageBrush Stretch="Uniform" ImageSource="greyhome.png"/>
- </Button.Background>
- <Button.OpacityMask>
- <ImageBrush Stretch="Uniform" ImageSource="/Resources/Assets/Images/home.png"/>
- </Button.OpacityMask>
- </Button>
- <Rectangle Visibility="Collapsed" x:Name="Blurer" HorizontalAlignment="Left" Height="784" VerticalAlignment="Top" Width="490" Margin="-10,0,0,-88" Fill="{StaticResource PhoneSemitransparentBrush}"/>
- <Button toolkit:TiltEffect.IsTiltEnabled="True" Click="OpenClose_Left" Margin="10,11,412,639" BorderBrush="{x:Null}" Foreground="{x:Null}" Style="{StaticResource SideMenuInitiater}">
- <Button.Background>
- <ImageBrush ImageSource="/Resources/Assets/Images/Hamburger.png" Stretch="Uniform"/>
- </Button.Background>
- </Button>
- <toolkit:Rating x:Name="rating" HorizontalAlignment="Left" Height="34" Margin="685,27,-330,0" VerticalAlignment="Top" Width="130" Background="{x:Null}"/>
- <Button Click="OpenClose_Right" HorizontalAlignment="Left" Height="57" Margin="416,0,0,0" VerticalAlignment="Top" Width="59"/>
- </Grid>
- </Canvas>
- </Canvas>
- </Grid>
+ <Button Style="{StaticResource DialogBoxButton}" HorizontalAlignment="Stretch" Content="Cancel" FontFamily="Assets/Font/Custom/HelveticaNeue-Thin.otf#Helvetica Neue" Background="{ThemeResource PhoneAccentBrush}"/>
+ </StackPanel>
+ </Grid>
+ </Grid>
-</phone:PhoneApplicationPage>
-\ No newline at end of file
+ <Grid.ChildrenTransitions>
+ <TransitionCollection>
+ <EntranceThemeTransition FromVerticalOffset="400" FromHorizontalOffset="0"/>
+ </TransitionCollection>
+ </Grid.ChildrenTransitions>
+ </Grid>
+</Page>
diff --git a/File360/MainPage.xaml.cs b/File360/MainPage.xaml.cs
@@ -1,644 +1,2604 @@
-using System;
+// Copyright (c) Microsoft. All rights reserved.
+
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using File360.Resources;
+using Windows.Phone.UI.Input;
+using Windows.UI.Xaml.Media.Animation;
+using System.Collections.ObjectModel;
+using Windows.UI.ViewManagement;
+using Windows.Storage;
+using Windows.Media.Playback;
using System.Threading.Tasks;
-using Microsoft.Phone.Storage;
+using TagLib;
using System.IO;
-using System.Collections;
-using System.Windows.Media;
-using Windows.Phone.Storage.SharedAccess;
-using System.Data.Linq;
-using Windows.Storage;
-using System.Text;
-using Windows.ApplicationModel;
+using Windows.UI.Xaml.Media.Imaging;
+using System.IO.Compression;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel.DataTransfer;
+using Windows.Foundation;
+using System.Linq;
+using Windows.Storage.FileProperties;
+using Coding4Fun.Toolkit.Controls;
+using Windows.ApplicationModel.Activation;
+using Windows.Storage.Streams;
+using Windows.Storage.Pickers;
+using Windows.Storage.AccessCache;
using Windows.Phone.Devices.Notification;
-using Windows.Phone.UI.Input;
-using System.ComponentModel;
-using System.Resources;
-using System.Windows.Input;
-using System.IO.IsolatedStorage;
-using System.Windows.Media.Imaging;
-using System.Windows.Documents;
-using System.Windows.Media.Animation;
-using Microsoft.Xna.Framework.Media;
-using Microsoft.Xna.Framework;
-
-
+using System.Runtime.InteropServices;
+using Windows.Media;
+using System.Text;
namespace File360
{
- public partial class MainPage : PhoneApplicationPage
+ public sealed partial class MainPage : Page, IFolderPickerContinuable
{
- List<sdlist> l = new List<sdlist>();
- List<musiclist> ml = new List<musiclist>();
- const string SETTINGS_PAGE_URI = "/SettingsPage.xaml";
- const string VAULT_PAGE_URI = "/VaultPage.xaml";
- public string btns;
- public static string Hbtns;
- ExternalStorageFolder temp;
- TextBox pb;
- IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
- internal static BitmapImage bm = new BitmapImage(new Uri("pack://application:/Resources/Assets/Wallpaper/bg1.jpg", UriKind.Absolute));
+
+
+
+ //[DllImport("KernelBase.dll")]
+ //public static extern void KernelDll();
+ #region Variables
+
+ public bool GridType = true;
+ public ItemsControl musicItemsControlGrid = null;
+
+ #region SettingsVaribles
+ ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
+ StorageFolder folder;
+ BitmapImage niy = new BitmapImage(new Uri("ms-appx:///Assets/IMG-20150528-WA0003.jpg", UriKind.Absolute));
+ ImageSource musicCoverArt = null;
+ IReadOnlyList<IStorageItem> Items;
+
+ ObservableCollection<sdlist> sd = new ObservableCollection<sdlist>();
+ ObservableCollection<MusicList> music = new ObservableCollection<MusicList>();
+ ObservableCollection<PictureList> picture = new ObservableCollection<PictureList>();
+ ObservableCollection<VideoList> video = new ObservableCollection<VideoList>();
+
+ public IStorageFolder CurrentFolder = null;
+ ScrollViewer gridScrollViewer;
+ TextBlock txtBlockRe = null;
+ ItemsControl itemsControlGrid = null;
+ List<IStorageItem> SelectedItems = new List<IStorageItem>();
+ bool InZipRoot = false;
+
+ #region LibraryVariables
+ public bool IsVideoLibraryOpen = false;
+ public bool IsPictureLibraryOpen = false;
+ public bool IsMusicLibraryOpen = false;
+ #endregion
+
+ bool singleTap = true;
+
+ App app = (App)Application.Current;
+ bool IsSDLoading = true;
+ bool IsPhoneLoading = true;
+ private bool IsMediaOpen = false;
+ private DispatcherTimer musicDispatcher = new DispatcherTimer();
+
+ #region FileOperationVariables
+ bool IS_FILE_MOVE = false;
+ #endregion
+
+ #region MusicVariables
+ SystemMediaTransportControls systemControls;
+ string title = String.Empty;
+ string artist = String.Empty;
+ #endregion
+
+
+ #endregion
+
public MainPage()
{
- InitializeComponent();
- VisualStateManager.GoToState(this, "Normal", false);
- #region InitialKeyUpdater
- if (appSettings.Count == 0)
+
+ this.InitializeComponent();
+ SDGridView.ItemsSource = sd;
+ SideMenu.InitializeDrawerLayout();
+ Addresser.InitializeComponent();
+ #region MusicPlayerInitialization
+
+
+ // Hook up app to system transport controls.
+
+ systemControls = SystemMediaTransportControls.GetForCurrentView();
+
+ systemControls.ButtonPressed += async (sender, args) =>
+ {
+ switch (args.Button)
+
+ {
+
+ case SystemMediaTransportControlsButton.Play:
+
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
+
+ {
+ mediaPlayer.Play();
+
+ });
+
+ break;
+
+ case SystemMediaTransportControlsButton.Pause:
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
+
+ {
+
+ mediaPlayer.Pause();
+
+ });
+
+ break;
+
+ default:
+
+ break;
+
+ }
+ };
+
+ // Register to handle the following system transpot control buttons.
+
+ systemControls.IsPlayEnabled = true;
+
+ systemControls.IsPauseEnabled = true;
+ #endregion
+ musicCoverArt = niy;
+ #region SettingsSerializer
+ if (settings.Values.Count == 0)
+ {
+ settings.Values["userName"] = "User";
+ app.UserName = (string)settings.Values["userName"];
+ settings.Values["itemType"] = 1;
+ GridType = (int)settings.Values["itemType"] == 1;
+
+ settings.Values["musicPlayer"] = "1";
+ settings.Values["picturesPlayer"] = "1";
+ settings.Values["videoPlayer"] = "1";
+ settings.Values["ebookViewer"] = "1";
+ settings.Values["musThumbnail"] = "0";
+ settings.Values["vidThumbnail"] = "0";
+ settings.Values["picThumbnail"] = "0";
+ }
+ else
+ {
+ app.UserName = (string)settings.Values["userName"];
+ GridType = (int)settings.Values["itemType"] == 1;
+ }
+ ChangeTemplate();
+ #endregion
+ #region Orientation
+ Window.Current.SizeChanged += Current_SizeChanged;
+ #endregion
+ #region MediaPlayerDispatcherInitialization
+ musicDispatcher.Interval = TimeSpan.FromMilliseconds(1000);
+
+ mediaPlayer.MediaFailed += async (s, t) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ UpdateMusic("no media", "", TimeSpan.FromSeconds(0));
+ musicSlider.Value = 0;
+ playPause.Content = "5";
+ currentDuration.Text = "--:--";
+ mediaDuration.Text = "--:--";
+ if (musicDispatcher.IsEnabled)
+ musicDispatcher.Stop();
+ });
+ };
+
+ mediaPlayer.MediaEnded += async (s, t) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ UpdateMusic("no media", "", mediaPlayer.NaturalDuration.TimeSpan);
+ musicSlider.Value = 0;
+ playPause.Content = "5";
+ currentDuration.Text = "--:--";
+ mediaDuration.Text = "--:--";
+ musicDispatcher.Stop();
+ });
+ };
+ musicDispatcher.Tick += (s, t) =>
+ {
+ musicSlider.Value = mediaPlayer.Position.TotalSeconds;
+ currentDuration.Text = mediaPlayer.Position.Minutes + ":" + mediaPlayer.Position.Seconds;
+
+ };
+ #endregion
+ #region CriticalStartup
+ HideStatusBar();
+ Loaded += MainPageLoaded;
+ HardwareButtons.BackPressed += HardwareButtons_BackPressed;
+ #endregion
+ }
+
+
+ #region FileOperationsNotifier
+
+ private void PasteBarSelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (PasteFlipView.SelectedIndex == 0)
+ IS_FILE_MOVE = false;
+ else IS_FILE_MOVE = true;
+ }
+ #endregion
+
+ #region MainEvents
+ private void MainPageLoaded(object sender, RoutedEventArgs e)
+ {
+ SDLoad.Begin();
+ PhoneLoad.Begin();
+ GetSDRoot();
+ gridScrollViewer = SDGridView.GetFirstLogicalChildByType<ScrollViewer>(false);
+ gridScrollViewer.VerticalScrollMode = ScrollMode.Auto;
+ LoadMemoryData();
+ //SettingsTab.Height = Window.Current.Bounds.Width * 2 / 3;
+ PasteFlipView.SelectionChanged += PasteBarSelectionChanged;
+ AppearancePanel.Begin();
+ SubFrame.ContentTransitions = new TransitionCollection { new PaneThemeTransition { Edge = EdgeTransitionLocation.Bottom } };
+
+ }
+ private async void HideStatusBar()
+ {
+ StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
+
+ // Hide the status bar
+ await statusBar.HideAsync();
+ }
+ public void OpenDialog()
+ {
+ if (!this.DialogBox.IsOpen)
+ {
+ this.DialogBox.IsOpen = true;
+ this.DialogBox.LeftButtonHandler += ExitApplicaton;
+ }
+ }
+ #region Navigaion Methods
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+
+ }
+ #endregion
+
+ #region BackButtonHandler
+ public async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
+ {
+ e.Handled = true;
+ if (PictureDisplayer.Visibility == Visibility.Visible)
+ {
+ PictureFlipView.Items.Clear();
+ PictureDisplayer.Visibility = Visibility.Collapsed;
+ }
+ else if (FileMoveDialog.Visibility == Visibility.Visible)
+ {
+ CloseDialog(2);
+ }
+ else if (SubFrameGrid.Visibility == Visibility.Visible)
+ {
+ CloseDialog(0);
+ }
+ else if (IsMediaOpen)
+ {
+ MediaOpenRev.Begin();
+ IsMediaOpen = false;
+ }
+
+ else if (SortMenu.Visibility == Visibility.Visible)
+ {
+ SortMenu.Visibility = Visibility.Collapsed;
+ }
+ else if (WebBrowser.Visibility == Visibility.Visible)
+ {
+ WebBrowser.Visibility = Visibility.Collapsed;
+ }
+ else if (this.SideMenu.IsDrawerOpen == true)
+ {
+ this.SideMenu.CloseDrawer();
+ }
+ else if (SDGridView.SelectionMode == ListViewSelectionMode.Multiple)
+ {
+ UnselectAll();
+ }
+ else if (InZipRoot)
+ {
+ GetFilesAndFolder(CurrentFolder);
+ InZipRoot = false;
+ }
+ else if (!this.Addresser.Root)
+ {
+ try
+ {
+ int curFoldCharNm = CurrentFolder.Path.LastIndexOf(CurrentFolder.Name);
+ StorageFolder sf = await StorageFolder.GetFolderFromPathAsync(CurrentFolder.Path.Remove(curFoldCharNm));
+ this.Addresser.RemoveLast();
+ GetFilesAndFolder(sf);
+ }
+ catch { }
+ }
+ else
+ {
+ OpenDialog();
+ }
+ }
+ #endregion
+
+ #endregion
+ #region Music
+ #region MusicEvents
+ //private void MusicSegmentChanged(object sender, RangeBaseValueChangedEventArgs e)
+ //{
+ // // if (!(mediaPlayer.CurrentState == MediaPlayerState.Closed))
+ // // {
+ // // if (mediaPlayer.CanSeek)
+ // // {
+ // // mediaPlayer.Position = TimeSpan.FromSeconds(e.NewValue);
+ // // }
+ // // }
+ // // else
+ // // {
+ // // musicSlider.Value = 0;
+ // // }
+ //}
+ internal async void PlayMedia(IStorageFile selectedItem)
+ {
+
+ mediaPlayer.Source = new Uri(selectedItem.Path);
+
+ mediaPlayer.MediaOpened += async (s, t) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, delegate
+ {
+ musicSlider.Maximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
+ playPause.Content = "8";
+ UpdateMusic(title, artist, mediaPlayer.NaturalDuration.TimeSpan);
+ musicDispatcher.Start();
+ });
+ };
+ mediaPlayer.Play();
+
+ #region TagLib AlbumArt
+ Tag tags = null;
+ var fileStream = await selectedItem.OpenStreamForReadAsync();
+ try
+ {
+ var tagFile = TagLib.File.Create(new StreamFileAbstraction(selectedItem.Name, fileStream, fileStream));
+ if (selectedItem.FileType == ".mp3" || selectedItem.FileType == ".wma")
+ tags = tagFile.GetTag(TagTypes.Id3v2);
+ else if (selectedItem.FileType == ".m4a")
+ tags = tagFile.GetTag(TagLib.TagTypes.MovieId);
+ try
+ {
+ title = tags.Title;
+ }
+ catch (NullReferenceException)
+ {
+ title = selectedItem.Name;
+ }
+ try
+ {
+ artist = String.Concat(tags.Performers);
+ }
+ catch (NullReferenceException)
+ {
+ artist = String.Empty;
+ }
+ if (tags.Pictures != null)
+ {
+ try
+ {
+ MemoryStream ms = new MemoryStream(tags.Pictures[0].Data.Data);
+ WriteableBitmap wm = null;
+ var wwmV = wm.FromStream(ms, Windows.Graphics.Imaging.BitmapPixelFormat.Unknown);
+ await wwmV.ContinueWith(delegate
+ {
+#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
+#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ {
+ ms.Dispose();
+ ImageBrush im = new ImageBrush();
+ im.ImageSource = wwmV.Result;
+ im.Stretch = Stretch.UniformToFill;
+ musicArt.Visibility = Visibility.Collapsed;
+ imageContainerMedia.Background = im;
+ });
+ });
+ }
+
+ catch (IndexOutOfRangeException)
+ {
+ imageContainerMedia.Background = (SolidColorBrush)App.Current.Resources["PhoneChromeBrush"];
+ musicArt.Visibility = Visibility.Visible;
+ }
+ catch (UnauthorizedAccessException)
+ {
+ }
+ #endregion
+ }
+ else
+ {
+ imageContainerMedia.Background = (SolidColorBrush)App.Current.Resources["PhoneChromeBrush"];
+ musicArt.Visibility = Visibility.Visible;
+ }
+ }
+ catch
+ {
+ imageContainerMedia.Background = (SolidColorBrush)App.Current.Resources["PhoneChromeBrush"];
+ musicArt.Visibility = Visibility.Visible;
+ }
+ MusicStatusUpdate();
+ }
+
+ private void UpdateMusic(string songName, string songArtist, TimeSpan duration)
+ {
+ try
+ {
+ SongName.Text = songName;
+ SongArtist.Text = songArtist;
+ mediaDuration.Text = duration.Minutes + ":" + duration.Seconds;
+ }
+ catch
+ {
+ SongName.Text = "no media";
+ SongArtist.Text = "";
+ mediaDuration.Text = "--:--";
+ }
+ }
+ #endregion
+ #region MusicMenu
+ public void MusicMenuClick()
+ {
+ if (IsMediaOpen)
+ {
+ MediaOpenRev.Begin();
+ IsMediaOpen = false;
+ //OpenMusic.Content = "u";
+ return;
+ }
+ else if (!IsMediaOpen)
+ {
+ //BitmapImage bm = new BitmapImage(new Uri("ms-appx:///SampleData/SampleDataSource1/SampleDataSource1_Files/image01.png", UriKind.RelativeOrAbsolute));
+ //var wb = await WinRTXamlToolkit.Imaging.WriteableBitmapFromBitmapImageExtension.FromBitmapImage(bm);
+ //ColorSampler cs = new ColorSampler();
+ //WriteableBitmap wd = wb;
+ //MusicDock.Background = new SolidColorBrush(cs.GetPixel(wd));
+ MediaOpen.Begin();
+ IsMediaOpen = true;
+ //OpenMusic.Content = "d";
+ return;
+ }
+ }
+
+ private void PlayCurrent(object sender, RoutedEventArgs e)
+ {
+ if (mediaPlayer.CurrentState == MediaElementState.Playing)
+ {
+ mediaPlayer.Pause();
+ playPause.Content = "5";
+ DurationBlink.Begin();
+ }
+ else if (mediaPlayer.CurrentState == MediaElementState.Paused)
+ {
+ mediaPlayer.Play();
+ playPause.Content = "8";
+ DurationBlink.Stop();
+ }
+
+ else if (mediaPlayer.CurrentState == MediaElementState.Stopped)
+ {
+ KnownFolders.MusicLibrary.GetFilesAsync().Completed += (es,st)=>
+ {
+ mediaPlayer.Source = new Uri(es.GetResults().First().Path);
+ mediaPlayer.Play();
+ playPause.Content = "8";
+ };
+
+ }
+
+ }
+ #endregion
+ #endregion
+
+ #region MediaMaipulations
+ private void mediaFragManipDelta(object sender, ManipulationDeltaRoutedEventArgs e)
+ {
+ if (e.Cumulative.Translation.X > 0)
+ MediaFragment.RenderTransform = new CompositeTransform { TranslateX = e.Cumulative.Translation.X };
+ else if (e.Delta.Translation.X < -25)
+ {
+ MediaOpen.Begin();
+ IsMediaOpen = true;
+ }
+ }
+
+ private void mediaFragManipCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
+ {
+ var transform = (CompositeTransform)MediaFragment.RenderTransform;
+ if (transform == null) return;
+ var up = transform.TranslateX;
+
+ var snapLimit = ActualHeight / 1.1;
+
+ // Get init position of _listFragment
+ var initialPosition = ActualHeight;
+
+ // If current left coordinate is smaller than snap limit, close drawer
+ if (Math.Abs(initialPosition - up) < snapLimit)
+ {
+ MediaOpenRev.Begin();
+ IsMediaOpen = false;
+ }
+ else
+ {
+ MediaOpen.Begin();
+ IsMediaOpen = true;
+ }
+ }
+ #endregion
+
+ #region NotifyHelpers
+ public void NotifyUser(string info)
+ {
+ statusMsg.Text = info;
+ }
+
+ public void AI(string header, string msg)
+ {
+ aiText.Text = header;
+ aiSubText.Text = msg;
+ aiBorder.Visibility = Visibility.Visible;
+ DispatcherTimer dt = new DispatcherTimer();
+ dt.Interval = new TimeSpan(0, 0, 4);
+ dt.Tick += delegate
+ {
+ aiBorder.Visibility = Visibility.Collapsed;
+ dt.Stop();
+ };
+ dt.Start();
+ }
+ #endregion
+ #region Pictures
+
+
+ public void DisplayPhoto(IStorageFile selectedItem)
+ {
+ FlipViewItem fvi = new FlipViewItem();
+ ScrollViewer scv = new ScrollViewer();
+ Image im = new Image();
+ BitmapImage bi = new BitmapImage(new Uri(selectedItem.Path));
+ im.Source = bi;
+ scv.Content = im;
+ fvi.Content = scv;
+ PictureFlipView.Items.Add(fvi);
+ PictureDisplayer.Visibility = Visibility.Visible;
+ }
+
+ #endregion
+
+
+ #region MainGrid
+ public void CloseDrawer()
+ {
+ SideMenu.CloseDrawer();
+ }
+
+
+
+ private void ChangeTemplate()
+ {
+ if (!GridType)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["ListViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["ListFoldersView"];
+ gridList.ContentText = "list";
+ gridList.ImageText = "b";
+ settings.Values["itemType"] = 0;
+ GridType = false;
+ }
+ else
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["GridFoldersView"];
+ gridList.ContentText = "grid";
+ gridList.ImageText = "N";
+ settings.Values["itemType"] = 1;
+ GridType = true;
+ }
+ }
+
+ private async void GetSDRoot()
+ {
+
+ if (ApplicationData.Current.LocalSettings.Values.ContainsKey("FolderTokenSettingsKey"))
+ {
+ string token = (string)ApplicationData.Current.LocalSettings.Values["FolderTokenSettingsKey"];
+ // if we do, use it to get the StorageFolder instance
+ folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token);
+ this.Addresser.Reset();
+ try
+ {
+ GetFilesAndFolder(folder);
+ RootFolder.Text = "3";
+ IsMusicLibraryOpen = false;
+ IsVideoLibraryOpen = false;
+ IsPictureLibraryOpen = false;
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ //AI("no sdcard is detected", 2);
+ }
+ }
+ }
+
+
+ #region UserFolderCommunication
+
+
+ private void Reset()
+ {
+ SDGridView.ItemsSource = null;
+ sd.Clear();
+ }
+
+
+ #endregion
+ #region OrientationHelpers
+ private void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
+ {
+ //var b = Window.Current.Bounds;
+ VisualStateManager.GoToState(this, "Portrait", false);
+ }
+ public bool IsVertical()
+ {
+ if (Window.Current.Bounds.Height > Window.Current.Bounds.Width) return true;
+ else return false;
+ }
+ #endregion
+ #endregion
+
+
+
+ #region ExitApplication
+
+ private void ExitApplicaton(object sender, RoutedEventArgs e)
+ {
+ Application.Current.Exit();
+ }
+ #endregion
+ #region FileLister
+ public async void GetFilesAndFolder(IStorageFolder anyFolder)
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, async delegate
+ {
+ ShowStatus(anyFolder.Path);
+ if (anyFolder != null)
+ {
+ Items = null;
+ sd.Clear();
+ SDGridView.ItemsSource = null;
+ CurrentFolder = anyFolder;
+ Items = await anyFolder.GetItemsAsync();
+ if (Items.Count == 0)
+ {
+ CurrentFolder = anyFolder;
+ headerText.Text = anyFolder.Name;
+ sd.Clear();
+ switch (anyFolder.Path)
+ {
+ case @"D:\Documents":
+ //display documents missing sad face
+ break;
+ case @"D:\Music":
+ //display music missing sad face
+ break;
+ case @"D:\Videos":
+ //display videos missing sad face
+ break;
+ case @"D:\Pictures":
+ //display pictures missing sad face
+ break;
+ default:
+ EmptyFolderStack.Visibility = Visibility.Visible;
+ //default options for other empty folders
+ break;
+
+ }
+ return;
+ }
+ //if (GridType)
+ // SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ //else SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["ListViewItemsPanel"];
+ else
+ {
+ EmptyFolderStack.Visibility = Visibility.Collapsed;
+ foreach (IStorageItem Data in Items)
+ {
+ if (Data.IsOfType(StorageItemTypes.Folder))
+ {
+ IStorageFolder Folder;
+ Folder = (IStorageFolder)Data;
+ //IReadOnlyList<IStorageItem> item = await Folder.GetItemsAsync();
+ headerText.Text = anyFolder.Name;
+ if (CurrentFolder.Path == @"D:\")
+ {
+ if (Folder.Name == "Videos") sd.Add(new sdlist(Folder.Name, "o", ""));
+ else if (Folder.Name == "Pictures") sd.Add(new sdlist(Folder.Name, "f", ""));
+ else if (Folder.Name == "Music") sd.Add(new sdlist(Folder.Name, "g", ""));
+ else if (Folder.Name == "Downloads") sd.Add(new sdlist(Folder.Name, "e", ""));
+ else if (Folder.Name == "Documents") sd.Add(new sdlist(Folder.Name, "n", ""));
+ else sd.Add(new sdlist(Folder.Name, "h", ""));
+ }
+ else sd.Add(new sdlist(Folder.Name, "h", ""));
+ }
+ if (Data.IsOfType(StorageItemTypes.File))
+ {
+ IStorageFile File = (IStorageFile)Data;
+ string fn = File.Name;
+ string fi = File.FileType;
+ #region FileTypes
+ if (fi == ".mp3")
+ {
+ if (((string)settings.Values["musThumbnail"] == "1"))
+ {
+
+ #region Mp3
+
+ //var fileStream = await File.OpenStreamForReadAsync();
+ //var tagFile = TagLib.File.Create(new StreamFileAbstraction(File.Name, fileStream, fileStream));
+ //var tags = tagFile.GetTag(TagTypes.Id3v2);
+ //try
+ //{
+ // if (tags.Pictures != null)
+ // {
+ // MemoryStream ms = new MemoryStream(tags.Pictures[0].Data.Data);
+ // WriteableBitmap wm = null;
+ // WriteableBitmap wwm = await wm.FromStream(ms, Windows.Graphics.Imaging.BitmapPixelFormat.Unknown);
+
+ // ms.Dispose();
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = wwm;
+ // im.Stretch = Stretch.UniformToFill;
+ // sd.Add(new sdlist(fn, im, ""));
+ // #endregion
+ // }
+ //}
+ //catch (IndexOutOfRangeException ex)
+ //{
+ // BitmapImage bm = new BitmapImage(new Uri("ms-appx:///Assets/IMG-20150528-WA0003.jpg", UriKind.Absolute));
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = bm;
+ // sd.Add(new sdlist(fn, im, ""));
+ //}
+ //catch (Exception ex)
+ //{
+ // AI(ex.Message, 2);
+ //}
+ #endregion
+ }
+ else sd.Add(new sdlist(fn, "m"));
+
+ }
+ else if (fi == ".wma")
+ {
+ if (((string)settings.Values["musThumbnail"] == "1"))
+ { }
+ #region wma-work in progress
+
+ //var fileStream = await File.OpenStreamForReadAsync();
+ //var tagFile = TagLib.File.Create(new StreamFileAbstraction(File.Name, fileStream, fileStream));
+ //var tags = tagFile.GetTag(TagTypes.Id3v2);
+ //try
+ //{
+ // if (tags.Pictures != null)
+ // {
+ // MemoryStream ms = new MemoryStream(tags.Pictures[0].Data.Data);
+ // WriteableBitmap wm = null;
+ // WriteableBitmap wwm = await wm.FromStream(ms, Windows.Graphics.Imaging.BitmapPixelFormat.Unknown);
+
+ // ms.Dispose();
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = wwm;
+ // im.Stretch = Stretch.UniformToFill;
+ // sd.Add(new sdlist(fn, im, ""));
+ // #endregion
+ // }
+ //}
+ //catch (IndexOutOfRangeException ex)
+ //{
+ // BitmapImage bm = new BitmapImage(new Uri("ms-appx:///Assets/IMG-20150528-WA0003.jpg", UriKind.Absolute));
+ // ImageBrush im = new ImageBrush();
+ // im.ImageSource = bm;
+ // sd.Add(new sdlist(fn, im, ""));
+ //}
+ //catch (Exception ex)
+ //{
+ // AI(ex.Message, 2);
+ //}
+ #endregion
+ else sd.Add(new sdlist(fn, "m"));
+
+ }
+ else if (fi == ".docx")
+ {
+ sd.Add(new sdlist(fn, "k"));
+
+ }
+ else if (fi == ".png")
+ {
+ if (((string)settings.Values["picThumbnail"] == "1"))
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ else sd.Add(new sdlist(fn, "p"));
+ }
+ else if (fi == ".jpg")
+ {
+ if (((string)settings.Values["picThumbnail"] == "1"))
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ else sd.Add(new sdlist(fn, "p"));
+ }
+ else if (fi == ".mp4")
+ {
+ if (((string)settings.Values["vidThumbnail"] == "1"))
+ {
+ try
+ {
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ }
+ catch
+ {
+ sd.Add(new sdlist(fn, "v"));
+ }
+ }
+ else sd.Add(new sdlist(fn, "v"));
+ }
+ else if (fi == ".mov")
+ {
+ if (((string)settings.Values["vidThumbnail"] == "1"))
+ {
+ try
+ {
+ await GetThumbnailImageAsync((StorageFile)File, ThumbnailMode.ListView);
+ }
+ catch
+ {
+ sd.Add(new sdlist(fn, "v"));
+ }
+ }
+ else sd.Add(new sdlist(fn, "v"));
+ }
+ else if (fi == ".zip")
+ {
+ sd.Add(new sdlist(fn, "z"));
+
+ }
+ else if (fi == ".cs")
+ {
+ sd.Add(new sdlist(fn, "c"));
+ }
+ else if (fi == ".pdf")
+ {
+ sd.Add(new sdlist(fn, "b"));
+ }
+ else if (fi == ".vcf")
+ {
+ sd.Add(new sdlist(fn, "l"));
+ }
+ else if (fi == ".doc")
+ {
+ sd.Add(new sdlist(fn, "k"));
+ }
+ else if (fi == ".xlx")
+ {
+ sd.Add(new sdlist(fn, "j"));
+ }
+ else if (fi == ".xlsx")
+ {
+ sd.Add(new sdlist(fn, "j"));
+ }
+ else if (fi == ".7z")
+ {
+ sd.Add(new sdlist(fn, "7"));
+ }
+ else if (fi == ".xml")
+ {
+ sd.Add(new sdlist(fn, "x"));
+ }
+ else if (fi == ".txt")
+ {
+ sd.Add(new sdlist(fn, "a"));
+ }
+ else if (fi == ".rar")
+ {
+ sd.Add(new sdlist(fn, "r"));
+ }
+ else
+ {
+ sd.Add(new sdlist(fn, "i"));
+
+ }
+ #endregion
+ }
+ }
+ }
+ }
+ //else AI("This folder contains no items", 2);
+ SDGridView.ItemsSource = sd;
+ });
+ }
+
+ #endregion
+ #region LateralMenu
+ private void Menu_Click(object sender, RoutedEventArgs e)
+ {
+ if (SideMenu.IsDrawerOpen == false)
+ {
+ SideMenu.OpenDrawer();
+ }
+ else
+ {
+ SideMenu.CloseDrawer();
+ }
+ }
+ #endregion
+ #region ListBox
+ Object preObj = null;
+ Object curObj = null;
+ SideBarMenuButton stkChildren = null;
+
+ private void SideMenuLeft_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ ListBox lBox = (ListBox)sender;
+ curObj = lBox.SelectedItem;
+ stkChildren = (SideBarMenuButton)curObj;
+ if (stkChildren.ContentText == "Settings") return;
+ if (preObj != null)
+ {
+ SideBarMenuButton preSBMB = (SideBarMenuButton)preObj;
+ preSBMB.BackgroundColor = null;
+ }
+ preObj = curObj;
+ stkChildren.BackgroundColor = (SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"];
+ }
+ #endregion
+ #region MenuHandlers
+ #region SDCard
+ private async void SDCardEnumerator(object sender, RoutedEventArgs e)
+ {
+ if (IsSDLoading)
+ {
+ textBlock.Visibility = Visibility.Visible;
+ }
+ if (!IsSDLoading)
+ {
+ StorageFolder folder;
+ // check if we already have a token
+ if (ApplicationData.Current.LocalSettings.Values.ContainsKey("FolderTokenSettingsKey"))
+ {
+ string token = (string)ApplicationData.Current.LocalSettings.Values["FolderTokenSettingsKey"];
+ // if we do, use it to get the StorageFolder instance
+ folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token);
+ this.Addresser.Reset();
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, delegate
+ {
+ IsMusicLibraryOpen = false;
+ IsVideoLibraryOpen = false;
+ IsPictureLibraryOpen = false;
+ headerText.Text = "SD Card";
+ RootFolder.Text = "3";
+ if (GridType)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["GridFoldersView"];
+ }
+ else
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["ListViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["ListFoldersView"];
+ }
+ GetFilesAndFolder(folder);
+ });
+ }
+ else
+ {
+ // if we don't, this is the first time the code is being executed; user has to give
+ // us a consent to use the folder
+ FolderPicker folderPicker = new FolderPicker();
+ folderPicker.FileTypeFilter.Add("*");
+ folderPicker.PickFolderAndContinue();
+
+ }
+ }
+ }
+ #endregion
+ #region Phone
+ private void PhoneStorageEnumerator(object sender, TappedRoutedEventArgs e)
+ {
+
+ }
+ #endregion
+ #region Pictures
+ private async void PicturesLibraryTapped(object sender, RoutedEventArgs e)
+ {
+ IsPictureLibraryOpen = true;
+ var picturesAlbums = await KnownFolders.PicturesLibrary.GetItemsAsync();
+ if (picturesAlbums.Count != 0)
+ {
+ sd.Clear();
+ SDGridView.ItemsSource = null;
+ headerText.Text = "Pictures";
+ RootFolder.Text = "M";
+ this.Addresser.Reset();
+ SDGridView.ItemTemplate = (DataTemplate)Resources["PicturesView"];
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ Items = picturesAlbums;
+ foreach (var pFo in picturesAlbums)
+ {
+ try
+ {
+ if (pFo.IsOfType(StorageItemTypes.Folder))
+ await GetThumbnailImageAsync((StorageFolder)pFo, ThumbnailMode.PicturesView);
+ else await GetThumbnailImageAsync((StorageFile)pFo, ThumbnailMode.PicturesView);
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message + ex.Source + ex.StackTrace);
+ }
+
+ }
+ SDGridView.ItemsSource = sd;
+ }
+ else
+ {
+ AI("no pictures", "there no pictures in your phone");
+ }
+ }
+
+ private void SettingsPage(object sender, RoutedEventArgs e)
+ {
+
+ if (!Frame.Navigate(typeof(SettingsPage)))
+ {
+ throw new Exception("Failed to create scenario list");
+ }
+ }
+
+ #endregion
+ #region Video
+ private async void VideoLibraryTapped(object sender, RoutedEventArgs e)
+ {
+ Items = await KnownFolders.VideosLibrary.GetItemsAsync();
+ if (Items.Count != 0)
+ {
+ sd.Clear();
+ SDGridView.ItemsSource = null;
+ SDGridView.ItemTemplate = VideosView;
+ SDGridView.ItemsPanel = GridViewItemsPanel;
+ this.Addresser.Reset();
+ RootFolder.Text = ")";
+ headerText.Text = "Videos";
+ IsVideoLibraryOpen = true;
+ foreach (var pFo in Items)
+ {
+ try
+ {
+ if (pFo.IsOfType(StorageItemTypes.Folder))
+ await GetThumbnailImageAsync((StorageFolder)pFo, ThumbnailMode.VideosView);
+ else await GetThumbnailImageAsync((StorageFile)pFo, ThumbnailMode.VideosView);
+ }
+ catch (Exception)
+ {
+ //AI(ex.Message + ex.Source + ex.StackTrace, 2);
+ }
+
+ }
+ SDGridView.ItemsSource = sd;
+ }
+ else
+ {
+ AI("no videos", "there no videos in your phone");
+ }
+ }
+
+ private void ChangeListSource(int listType)
+ {
+ SDGridView.ItemsSource = null;
+ switch (listType)
+ {
+
+ case 0:
+ sd.Clear();
+ SDGridView.ItemsSource = sd;
+ break;
+ case 1:
+ music.Clear();
+ SDGridView.ItemsSource = music;
+ IsMusicLibraryOpen = true;
+ break;
+ case 2:
+ picture.Clear();
+ SDGridView.ItemsSource = picture;
+ IsPictureLibraryOpen = true;
+ break;
+ case 3:
+ video.Clear();
+ SDGridView.ItemsSource = video;
+ IsVideoLibraryOpen = true;
+ break;
+ default:
+ throw new NotImplementedException();
+ }
+ }
+
+ #region Music
+ private async void MusicLibraryClick(object sender, RoutedEventArgs e)
+ {
+ var musicFolder = KnownFolders.MusicLibrary;
+ IReadOnlyList<IStorageItem> musicItems = await musicFolder.GetItemsAsync();
+ ChangeListSource(1);
+ if (musicItems.Count != 0)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["MusicsView"];
+ RootFolder.Text = "y";
+ this.Addresser.Reset();
+ Items = musicItems;
+ IsMusicLibraryOpen = true;
+ headerText.Text = "Music";
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, async delegate
+ {
+ foreach (var pFo in musicItems)
+ {
+ try
+ {
+ if (pFo.IsOfType(StorageItemTypes.Folder))
+ {
+ music.Add(new MusicList(pFo.Name, 0));//0 is passed as dummy count, the dummy value should be replaced by the folder's children count.
+ }
+ else
+ {
+
+ IStorageFile File = (IStorageFile)pFo;
+ if (File.FileType == ".mp3")
+ {
+ var fileStream = await File.OpenStreamForReadAsync();
+ var tagFile = TagLib.File.Create(new StreamFileAbstraction(File.Name, fileStream, fileStream));
+ var tags = tagFile.GetTag(TagTypes.Id3v2);
+ try
+ {
+ if (tags.Pictures != null)
+ {
+ WriteableBitmap wm = null;
+
+ try
+ {
+ wm.FromByteArray(tags.Pictures[0].Data.Data);
+ }
+ catch (UnauthorizedAccessException)
+ {
+
+ }
+ catch (NullReferenceException)
+ {
+
+ }
+ ImageBrush im = new ImageBrush();
+ im.ImageSource = wm;
+ im.Stretch = Stretch.UniformToFill;
+ music.Add(new MusicList(tags.Title, tags.AlbumArtists[0], tags.Album, im));
+ #endregion
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ music.Add(new MusicList(pFo.Name, tags.AlbumArtists[0], tags.Album, null));
+ }
+ }
+ else if (File.FileType == ".m4a")
+ music.Add(new MusicList(pFo.Name,"","",null));
+ }
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message + ex.Source + ex.StackTrace);
+ }
+ }
+ });
+ }
+ else
+ {
+ ShowStatus("no music content can be found :(");
+ }
+ }
+
+ private async Task GetThumbnailImageAsync(StorageFile item, ThumbnailMode mode)
+ {
+ if (item == null)
+ return;
+ using (var thumbnail = await item.GetThumbnailAsync(mode))
+ {
+ if (thumbnail != null)
+ {
+ sd.Add(new sdlist(item.DisplayName, thumbnail, ""));
+ return;
+ }
+ }
+ }
+ //public async Task<bool> IsEmpty(IStorageFolder directory)
+ //{
+ // var items = await directory.GetItemsAsync();
+ // ShowStatus(directory.Path);
+ // bool isEmpty = items.Count == 0;
+ // if (isEmpty)
+ // {
+ // //Storyboard story = new Storyboard();
+ // switch (directory.Path)
+ // {
+
+ // case "D:/Documents":
+ // //EmptyFolderStack.Visibility = Visibility.Visible;
+ // break;
+ // case "D:/Music":
+ // EmptyFolderStack.Visibility = Visibility.Visible;
+ // break;
+ // default:
+ // EmptyFolderStack.Visibility = Visibility.Visible;
+ // break;
+
+
+ // }
+ // return true;
+ // }
+ // else
+ // {
+ // EmptyFolderStack.Visibility = Visibility.Collapsed;
+ // return false;
+ // }
+ //}
+ #endregion
+
+ #endregion
+ #region ImageHelpers
+ public async Task GetThumbnailImageAsync(StorageFolder item, ThumbnailMode mode)
+ {
+ if (item == null)
+ return;
+ using (var thumbnail = await item.GetThumbnailAsync(mode))
+ {
+ if (thumbnail != null /*&& thumbnail.Type == ThumbnailType.Image && thumbnail.Type == ThumbnailType.Icon*/)
+ {
+ sd.Add(new sdlist(item.DisplayName, thumbnail, "2"));
+ return;
+ }
+ }
+ }
+ #endregion
+
+ #region UI
+ public double PicHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 3;
+ else return Window.Current.Bounds.Width / 3;
+ }
+ }
+ public double PicWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 2;
+ else return Window.Current.Bounds.Height / 2;
+ }
+ }
+ public double ImageHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 3.5;
+ else return Window.Current.Bounds.Width / 3.5;
+ }
+ }
+ public double ImageWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 2.2;
+ else return Window.Current.Bounds.Height / 2.2;
+ }
+ }
+ public double Space
+ {
+ get { return Window.Current.Bounds.Height / 600; }
+ }
+ public double GridHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 4;
+ else return Window.Current.Bounds.Width / 4;
+ }
+ }
+ public double GridWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 3;
+ else return Window.Current.Bounds.Height / 3;
+ }
+ }
+
+ #endregion
+ #region FolderPicker
+
+
+ public void ContinueFolderPicker(FolderPickerContinuationEventArgs args)
+ {
+ folder = args.Folder;
+ if (folder != null)
+ {
+ try
+ {
+ var id = folder.FolderRelativeId;
+ if (folder != null)
+ {
+ if (folder.IsOfType(StorageItemTypes.Folder))
+ {
+ this.Addresser.Reset();
+ }
+ // after that, we can store the folder for future reuse
+ string pickedFolderToken = StorageApplicationPermissions.FutureAccessList.Add(folder);
+ ApplicationData.Current.LocalSettings.Values.Add("FolderTokenSettingsKey", pickedFolderToken);
+ StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
+ string mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(folder);
+ IsMusicLibraryOpen = false;
+ IsVideoLibraryOpen = false;
+ IsPictureLibraryOpen = false;
+ headerText.Text = "SD Card";
+ RootFolder.Text = "3";
+ if (GridType)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["GridFoldersView"];
+ }
+ else
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["ListViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["ListFoldersView"];
+ }
+ GetFilesAndFolder(folder);
+ }
+ else
+ {
+ return;
+ }
+ }
+ catch
+ { return; }
+ }
+ }
+ #endregion
+ #region FolderInteraction
+ private void FolderHold(object sender, HoldingRoutedEventArgs e)
+ {
+ if (SDGridView.SelectionMode == ListViewSelectionMode.None)
+ {
+ //folderHold.Begin();
+ operationBar.Visibility = Windows.UI.Xaml.Visibility.Visible;
+ //compressButton.Visibility = Visibility.Visible;
+ //sortButton.Visibility = Visibility.Collapsed;
+ operationBarNormal.Visibility = Visibility.Collapsed;//Start Cool Animations also :)
+
+ SDGridView.SelectionMode = ListViewSelectionMode.Multiple;
+ //int index = SDGridView.Items.IndexOf(((sdlist)((ItemsControl)sender).DataContext));
+ //SDGridView.SelectedIndex = index;
+ }
+ }
+
+ private void ItemDoubleTap(object sender, DoubleTappedRoutedEventArgs e)
+ {
+ if (SDGridView.SelectionMode == ListViewSelectionMode.Multiple) return;
+ singleTap = false;
+ Rename((ItemsControl)sender);
+
+ }
+
+ private async void Rename(ItemsControl itemsControl)
+ {
+ itemsControlGrid = itemsControl;
+ var sdl = await CurrentFolder.GetItemsAsync();
+ int index = SDGridView.Items.IndexOf(((sdlist)itemsControlGrid.DataContext));
+ var selectedItem = sdl.ElementAt(index);
+ SDGridView.SelectedIndex = index;
+ Windows.UI.Xaml.Controls.TextBox txtBoxRe = new Windows.UI.Xaml.Controls.TextBox();
+ txtBoxRe.TextAlignment = TextAlignment.Center;
+ //txtBoxRe.Margin = new Thickness(0, 4, 0, 4);
+ StackPanel stk = itemsControlGrid.GetFirstLogicalChildByType<StackPanel>(false);
+ txtBlockRe = stk.GetLogicalChildrenByType<TextBlock>(false).ElementAt(0);
+ stk.Children.Add(txtBoxRe);
+ txtBlockRe.Visibility = Visibility.Collapsed;
+ txtBoxRe.GotFocus += (s, ex) =>
+ {
+ try
+ {
+ txtBoxRe.Select(0, txtBoxRe.Text.LastIndexOf('.'));
+ }
+ catch
+ {
+ txtBoxRe.SelectAll();
+ }
+ };
+ txtBoxRe.LostFocus += (s, ex) =>
+ {
+ txtBoxRe.Visibility = Visibility.Collapsed;
+ txtBlockRe.Visibility = Visibility.Visible;
+ };
+ txtBoxRe.KeyDown += async (s, ex) =>
+ {
+ if (ex.Key == Windows.System.VirtualKey.Enter)
+ {
+ if (txtBoxRe.Text == String.Empty)
+ {
+ txtBoxRe.Visibility = Visibility.Collapsed;
+ txtBlockRe.Visibility = Visibility.Visible;
+ }
+ else if (txtBoxRe.Text.Contains("/") || txtBoxRe.Text.Contains(@"\"))
+ {
+ AI("Cannot rename File or Folder", @"A file or folder can't contain any of the following characters: \ / : * ? " + "\"" + " < > |");
+ }
+ else
+ {
+ try
+ {
+ txtBlockRe.Text = txtBoxRe.Text;
+ txtBoxRe.Visibility = Visibility.Collapsed;
+ txtBlockRe.Visibility = Visibility.Visible;
+ await selectedItem.RenameAsync(txtBoxRe.Text, NameCollisionOption.GenerateUniqueName);
+ }
+ catch
+ {
+ AI("Rename operation failed", "Cannot rename this file at the moment");
+ }
+ GetFilesAndFolder(CurrentFolder);
+ }
+ }
+ };
+ txtBoxRe.Focus(FocusState.Programmatic);
+ }
+
+ private async void GridItemClick(object sender, TappedRoutedEventArgs e)
+ {
+ e.Handled = true;
+ ShowStatus(SDGridView.SelectedIndex.ToString());
+ if (SDGridView.SelectedIndex != -1) return;
+ singleTap = true;
+ await Task.Delay(200);
+ itemsControlGrid = (ItemsControl)sender;
+ //if (!singleTap) return;
+ int index = SDGridView.Items.IndexOf((sdlist)(itemsControlGrid.DataContext));
+ IStorageItem selectedItem = Items.ElementAt(index);
+ if (selectedItem.IsOfType(StorageItemTypes.Folder))
+ {
+ #region Folder PopOut Animation
+ //Storyboard story = new Storyboard();
+ //itemsControlGrid.RenderTransform = new CompositeTransform();
+ //itemsControlGrid.RenderTransformOrigin = new Point(0.5, 0.5);
+ //CircleEase ease = new CircleEase();
+ //DoubleAnimation opacity = new DoubleAnimation { From = 1, To = 0, Duration = TimeSpan.FromMilliseconds(100), EasingFunction=ease };
+ //Storyboard.SetTargetProperty(opacity, "(UIElement.Opacity)");
+ //Storyboard.SetTarget(opacity, itemsControlGrid);
+ //DoubleAnimation scaleX = new DoubleAnimation { From = 1, To = 6, Duration = TimeSpan.FromMilliseconds(100), EasingFunction = ease };
+ //Storyboard.SetTargetProperty(scaleX, "(UIElement.RenderTransform).(CompositeTransform.ScaleX)");
+ //Storyboard.SetTarget(scaleX, itemsControlGrid);
+ //DoubleAnimation scaleY = new DoubleAnimation { From = 1, To = 6, Duration = TimeSpan.FromMilliseconds(100), EasingFunction = ease };
+ //Storyboard.SetTargetProperty(scaleY, "(UIElement.RenderTransform).(CompositeTransform.ScaleY)");
+ //Storyboard.SetTarget(scaleY, itemsControlGrid);
+ //story.Children.Add(scaleX);
+ //story.Children.Add(scaleY);
+ //story.Children.Add(opacity);
+ //story.Begin();
+ #endregion
+ Addresser.Address(((IStorageFolder)selectedItem).Name, ((IStorageFolder)selectedItem).Path);
+ if (IsVideoLibraryOpen || IsPictureLibraryOpen)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["PicturesView"];
+ }
+ else if (IsMusicLibraryOpen)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["MusicsView"];
+ }
+ GetFilesAndFolder((IStorageFolder)selectedItem);
+ return;
+ }
+ else if (selectedItem.IsOfType(StorageItemTypes.File))
+ {
+ ExecuteFile((IStorageFile)selectedItem);
+ return;
+ }
+ }
+
+ private async void VideoItemClick(object sender, TappedRoutedEventArgs e)
+ {
+ singleTap = true;
+ await Task.Delay(200);
+ itemsControlGrid = (ItemsControl)sender;
+ if (!singleTap) return;
+ int index = SDGridView.Items.IndexOf((sdlist)(itemsControlGrid.DataContext));
+ IStorageItem selectedItem = Items.ElementAt(index);
+ if (selectedItem.IsOfType(StorageItemTypes.Folder))
+ {
+ Addresser.Address(((IStorageFolder)selectedItem).Name, ((IStorageFolder)selectedItem).Path);
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["PicturesView"];
+
+ GetFilesAndFolder((IStorageFolder)selectedItem);
+ return;
+ }
+ else if (selectedItem.IsOfType(StorageItemTypes.File))
+ {
+ ExecuteFile((IStorageFile)selectedItem);
+ return;
+ }
+ }
+ private async void PictureItemClick(object sender, TappedRoutedEventArgs e)
+ {
+ singleTap = true;
+ await Task.Delay(200);
+ itemsControlGrid = (ItemsControl)sender;
+ if (!singleTap) return;
+ int index = SDGridView.Items.IndexOf((sdlist)(itemsControlGrid.DataContext));
+ IStorageItem selectedItem = Items.ElementAt(index);
+ if (selectedItem.IsOfType(StorageItemTypes.Folder))
+ {
+ Addresser.Address(((IStorageFolder)selectedItem).Name, ((IStorageFolder)selectedItem).Path);
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["PicturesView"];
+
+ GetFilesAndFolder((IStorageFolder)selectedItem);
+ return;
+ }
+ else if (selectedItem.IsOfType(StorageItemTypes.File))
+ {
+ ExecuteFile((IStorageFile)selectedItem);
+ return;
+ }
+ }
+ private async void MusicItemClick(object sender, TappedRoutedEventArgs e)
+ {
+ singleTap = true;
+ await Task.Delay(200);
+ musicItemsControlGrid = (ItemsControl)sender;
+ if (!singleTap) return;
+ int index = SDGridView.Items.IndexOf((sdlist)(musicItemsControlGrid.DataContext));
+ IStorageItem selectedItem = Items.ElementAt(index);
+ if (selectedItem.IsOfType(StorageItemTypes.Folder))
+ {
+ Addresser.Address(((IStorageFolder)selectedItem).Name, ((IStorageFolder)selectedItem).Path);
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["MusicsView"];
+
+ GetFilesAndFolder((IStorageFolder)selectedItem);
+ return;
+ }
+ else if (selectedItem.IsOfType(StorageItemTypes.File))
+ {
+ ExecuteFile((IStorageFile)selectedItem);
+ return;
+ }
+ }
+ #endregion
+ #region MusicStatusUpdater(work-in progress)
+ public async void MusicStatusUpdate()
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ Grid grd = null;
+ if (!IsMusicLibraryOpen) return;
+ grd = musicItemsControlGrid.GetFirstLogicalChildByType<Grid>(false);
+ if (grd.Children.Count == 2)
+ {
+ Border brdB = grd.GetFirstLogicalChildByType<Border>(false);
+ grd.Children.Remove(brdB);
+ return;
+ }
+ Border brd = new Border();
+ brd.CornerRadius = new CornerRadius(150);
+ TextBlock txt = new TextBlock();
+ brd.VerticalAlignment = VerticalAlignment.Center;
+ brd.HorizontalAlignment = HorizontalAlignment.Center;
+ brd.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(200, 0, 0, 0));
+ txt.FontFamily = new FontFamily("Assets/Font/iconFont.ttf#iconfont");
+ txt.Margin = new Thickness(20);
+ txt.FontSize = 50;
+ txt.Foreground = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 255, 255, 255));
+ txt.VerticalAlignment = VerticalAlignment.Center;
+ txt.HorizontalAlignment = HorizontalAlignment.Center;
+ txt.Text = "2";
+ brd.Child = txt;
+ grd.Children.Add(brd);
+ });
+ }
+ #endregion
+ #region FileExecution
+ private async void ExecuteFile(IStorageFile selectedItem)
+ {
+
+ if (selectedItem.FileType == ".zip")
+ {
+ //var temps = await ApplicationData.Current.TemporaryFolder.GetItemsAsync();
+ //foreach (var temp in temps)
+ //{
+ // await temp.DeleteAsync();
+ //}
+ //temps = await ApplicationData.Current.TemporaryFolder.GetItemsAsync();
+ //if (temps.Count == 0)
+ GetFilesAndFolder((IStorageFolder)await OpenZip(selectedItem));
+ }
+ else if (selectedItem.FileType == ".mp3")
+ {
+ if ((string)settings.Values["musicPlayer"] == "1")
+ PlayMedia(selectedItem);
+ else await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ else if (selectedItem.FileType == ".wma")
+ {
+ if ((string)settings.Values["musicPlayer"] == "1")
+ PlayMedia(selectedItem);
+ else await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ else if (selectedItem.FileType == ".m4a")
+ {
+ if ((string)settings.Values["musicPlayer"] == "1")
+ PlayMedia(selectedItem);
+ else await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ else if (selectedItem.FileType == ".mp4")
+ {
+ if ((string)settings.Values["videosPlayer"] == "1")
+ {
+ PlayVideo(selectedItem);
+ }
+ else await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ else if (selectedItem.FileType == ".mov")
+ {
+ if ((string)settings.Values["videosPlayer"] == "1")
+ {
+ PlayVideo(selectedItem);
+ }
+ else await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ else if (selectedItem.FileType == ".jpg")
+ {
+ if ((string)settings.Values["picturesPlayer"] == "1")
+ {
+ DisplayPhoto(selectedItem);
+ }
+ else await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ else
+ {
+ await Windows.System.Launcher.LaunchFileAsync(selectedItem);
+ }
+ }
+
+ private void PlayVideo(IStorageFile selectedItem)
+ {
+ this.Frame.Navigate(typeof(VideoPage),selectedItem);
+ //mediaPlayer.Source = new Uri(selectedItem.Path);
+ //musicArt.Text = "";
+ //mediaPlayer.MediaOpened += async (s, t) =>
+ //{
+ // await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, delegate
+ // {
+ // musicSlider.Maximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
+ // playPause.Content = "8";
+ // UpdateMusic(title, artist, mediaPlayer.NaturalDuration.TimeSpan);
+ // musicDispatcher.Start();
+ // });
+ //};
+ //mediaPlayer.Play();
+ //var fileStream = await selectedItem.OpenStreamForReadAsync();
+ //MusicStatusUpdate();
+ }
+
+ #endregion
+ #region ZipFileHelpers
+ public async Task<StorageFolder> OpenZip(IStorageFile compressedFile)
+ {
+ try
+ {
+ //using (MemoryStream zipMemoryStream = new MemoryStream(WindowsRuntimeBufferExtensions.ToArray(await FileIO.ReadBufferAsync(compressedFile))))
+ //{
+ // using (ZipArchive zipArchive = new ZipArchive(zipMemoryStream, ZipArchiveMode.Read))
+ // {
+ // var files = zipArchive.Entries;
+ // foreach (var file in files)
+ // {
+ // try
+ // {
+ // var uncompressedFol = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(file.Name, CreationCollisionOption.ReplaceExisting);
+ // }
+ // catch
+ // {
+ // var uncompressedFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(file.Name, CreationCollisionOption.ReplaceExisting);
+ // }
+
+ // return ApplicationData.Current.TemporaryFolder;
+ // }
+ // return null;
+ // }
+ //}
+ var zipArchive = new System.IO.Compression.ZipArchive(await compressedFile.OpenStreamForReadAsync());
+
+ foreach (var entry in zipArchive.Entries)
+ {
+ using (var entryStream = entry.Open())
+ {
+ if (true)//IsFileBinary(entry.Name) ?
+ {
+ using (BinaryReader br = new BinaryReader(entryStream))
+ {
+ //var fileSize = await reader.LoadAsync((uint)entryStream.Length);
+ var fileSize = br.BaseStream.Length;
+ byte[] read = br.ReadBytes((int)fileSize);
+
+ var binaryContent = read;
+ }
+ }
+ }
+ }
+ using (BinaryReader b = new BinaryReader(await compressedFile.OpenStreamForReadAsync()))
+ {
+ // Do not do this.
+ while (b.PeekChar() != -1)
+ {
+ int v = b.ReadInt32();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ return null;
+ }
+ return null;
+ }
+
+ byte[] CentralDirImage = {50,01,05,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00};
+
+ public List<string> ReadCentralDir()
+ {
+ if (this.CentralDirImage == null)
+ throw new InvalidOperationException("Central directory currently does not exist");
+
+ List<string> result = new List<string>();
+
+ for (int pointer = 0; pointer < this.CentralDirImage.Length; )
+ {
+ uint signature = BitConverter.ToUInt32(CentralDirImage, pointer);
+ if (signature != 0x02014b50)
+ break;
+
+ bool encodeUTF8 = (BitConverter.ToUInt16(CentralDirImage, pointer + 8) & 0x0800) != 0;
+ ushort method = BitConverter.ToUInt16(CentralDirImage, pointer + 10);
+ uint modifyTime = BitConverter.ToUInt32(CentralDirImage, pointer + 12);
+ uint crc32 = BitConverter.ToUInt32(CentralDirImage, pointer + 16);
+ uint comprSize = BitConverter.ToUInt32(CentralDirImage, pointer + 20);
+ uint fileSize = BitConverter.ToUInt32(CentralDirImage, pointer + 24);
+ ushort filenameSize = BitConverter.ToUInt16(CentralDirImage, pointer + 28);
+ ushort extraSize = BitConverter.ToUInt16(CentralDirImage, pointer + 30);
+ ushort commentSize = BitConverter.ToUInt16(CentralDirImage, pointer + 32);
+ uint headerOffset = BitConverter.ToUInt32(CentralDirImage, pointer + 42);
+ uint headerSize = (uint)( 46 + filenameSize + extraSize + commentSize);
+
+ Encoding encoder = encodeUTF8 ? Encoding.UTF8 : Encoding.Unicode;
+
+ string zfe = new string();
+ zfe.Method = (Compression)method;
+ zfe.FilenameInZip = encoder.GetString(CentralDirImage, pointer + 46, filenameSize);
+ zfe.FileOffset = GetFileOffset(headerOffset);
+ zfe.FileSize = fileSize;
+ zfe.CompressedSize = comprSize;
+ zfe.HeaderOffset = headerOffset;
+ zfe.HeaderSize = headerSize;
+ zfe.Crc32 = crc32;
+ zfe.ModifyTime = DosTimeToDateTime(modifyTime);
+ if (commentSize > 0)
+ zfe.Comment = encoder.GetString(CentralDirImage, pointer + 46 + filenameSize + extraSize, commentSize);
+
+ result.Add(zfe);
+ pointer += (46 + filenameSize + extraSize + commentSize);
+ }
+
+ return result;
+ }
+
+
+ public async Task<StorageFile> CreateZip(StorageFile file)
+ {
+ if (CurrentFolder != null)
+ {
+ try
+ {
+ using (MemoryStream zipMemoryStream = new MemoryStream())
+ {
+ using (System.IO.Compression.ZipArchive zipArchive = new System.IO.Compression.ZipArchive(zipMemoryStream, ZipArchiveMode.Create))
+ {
+ try
+ {
+ byte[] buffer = WindowsRuntimeBufferExtensions.ToArray(await FileIO.ReadBufferAsync(file));
+ ZipArchiveEntry entry = zipArchive.CreateEntry(file.Name);
+ using (Stream entryStream = entry.Open())
+ {
+ await entryStream.WriteAsync(buffer, 0, buffer.Length);
+ }
+ GetFilesAndFolder(CurrentFolder);
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ }
+ }
+
+ // Created new file to store compressed files
+ var compressedFileName = file.Name + ".zip";
+ StorageFile zipFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(compressedFileName, CreationCollisionOption.GenerateUniqueName);
+ using (IRandomAccessStream zipStream = await zipFile.OpenAsync(FileAccessMode.ReadWrite))
+ {
+ // Write compressed data from memory to file
+ using (Stream outstream = zipStream.AsStreamForWrite())
+ {
+ byte[] buffer = zipMemoryStream.ToArray();
+ outstream.Write(buffer, 0, buffer.Length);
+ outstream.Flush();
+ return zipFile;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ return null;
+ }
+ }
+ else
+ {
+ ShowStatus("Error! This is not a valid folder");
+ return null;
+ }
+ }
+ #endregion
+ #region BottomBarmenuEventHandlers
+ private void GridListChange(object sender, RoutedEventArgs e)
+ {
+ if (GridType)
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["ListViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["ListFoldersView"];
+ gridList.ContentText = "list";
+ gridList.ImageText = "b";
+ GridType = false;
+ }
+ else
+ {
+ SDGridView.ItemsPanel = (ItemsPanelTemplate)Resources["GridViewItemsPanel"];
+ SDGridView.ItemTemplate = (DataTemplate)Resources["GridFoldersView"];
+ gridList.ContentText = "grid";
+ gridList.ImageText = "N";
+ GridType = true;
+ }
+ }
+ private void SelectAll(object sender, RoutedEventArgs e)
+ {
+ SDGridView.SelectionMode = ListViewSelectionMode.Multiple;
+ SDGridView.SelectAll();
+ operationBar.Visibility = Visibility.Visible;
+ operationBarNormal.Visibility = Visibility.Collapsed;
+ //folderHold.Begin();
+ }
+ private void selectBox_Unchecked(object sender, RoutedEventArgs e)
+ {
+ UnselectAll();
+ }
+ public void UnselectAll()
+ {
+ SDGridView.SelectionMode = ListViewSelectionMode.None;
+ operationBar.Visibility = Visibility.Collapsed;
+ operationBarNormal.Visibility = Visibility.Visible;
+ }
+ #endregion
+ #region SDGridViewSelectionChanged
+ private void SDGridViewSelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (SDGridView.SelectedIndex == -1)
{
- appSettings.Add("Shaker","Off");
- appSettings.Save();
- appSettings.Add("Passer","Off");
- appSettings.Save();
- appSettings.Add("PasswordValue", "2580");
- appSettings.Save();
+ //operationBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
+ //operationBarNormal.Visibility = Visibility.Visible;
+ //headerText.Visibility = Windows.UI.Xaml.Visibility.Visible;
+ //folderHoldRev.Begin();
+ SDGridView.SelectionMode = ListViewSelectionMode.None;
+ //SDGridView.IsItemClickEnabled = true;
+ return;
}
- #endregion
- #region ThemeChecker
- //Visibility isVisible = (Visibility)Application.Current.Resources["PhoneLightThemeVisibility"];
- //if (isVisible == System.Windows.Visibility.Visible)
- //{
+ else { return; }
+ }
+ #endregion
- //}
- //else
- //{
- //}
- #endregion
- StateHelper();
- WallpaperChanger(bm);
- MusicStateCreator();
+
+ #region FileSortingMethods
+
+ private void OpenSortMenu(object sender, RoutedEventArgs e)
+ {
+ OpenSortMenuAnim.Begin();
+ //ToggleMenu(SortMenu);
}
- #region ContextMenu
+ private void ToggleMenu(Panel element)
+ {
+ if (element.Visibility == Visibility.Visible)
+ element.Visibility = Visibility.Collapsed;
+ else element.Visibility = Visibility.Visible;
+ }
+ private void SortMenuItemClick(object sender, RoutedEventArgs e)
+ {
+ Button bt = (Button)sender;
+ string buttonName = bt.Content.ToString();
+ if (buttonName == "Name")
+ {
+ Sort(0);
+ }
+ else if (buttonName == "Type")
+ {
+ Sort(1);
+ }
+ else if (buttonName == "Size")
+ {
+ Sort(2);
+ }
+ else if (buttonName == "Date")
+ {
+ Sort(3);
+ }
+ SortMenu.Visibility = Visibility.Collapsed;
+ }
- private void vault_button_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ public void Sort(int sortType)
{
- Button b = (Button)sender;
- Hbtns = (b.Content).ToString();
+ try
+ {
+ switch (sortType)
+ {
+ case 0:
+ sd.OrderBy(o => o.Name);
+ break;
+ case 1:
+ sd.OrderBy(o => o.Image);
+ break;
+ case 2:
+ sd.OrderBy(o => o.Name);
+ break;
+ case 3:
+ sd.OrderBy(o => o.Name);
+ break;
+ }
+ }
+ catch (ArgumentNullException)
+ {
+
+ }
}
- private void Copy_Click(object sender, RoutedEventArgs e)
+ #endregion
+ private void ListBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
- MessageBox.Show("Copied To Clipboard");
+ if (stkChildren != null && stkChildren.ContentText == "Settings") return;
+ this.Addresser.Reset();
+ sd.Clear();
+ SDGridView.ItemsSource = null;
+ headerText.Text = String.Empty;
}
+ private void PhoneRefreshTapped(object sender, TappedRoutedEventArgs e)
+ {
- private void Cut_Click(object sender, RoutedEventArgs e)
+ }
+ private void PhoneEnumerator(object sender, RoutedEventArgs e)
{
- MessageBox.Show("Ready to be Pasted");
+ FolderPicker fp = new FolderPicker();
+ fp.PickFolderAndContinue();
+ if (IsPhoneLoading)
+ {
+ phoneWarning.Visibility = Visibility.Visible;
+ }
}
- private void Delete_Click(object sender, RoutedEventArgs e)
+ private Task LoadMemoryData()
{
- MessageBox.Show("File Couldn't be deleted");
+ textBlock.Visibility = Visibility.Collapsed;
+ phoneWarning.Visibility = Visibility.Collapsed;
+ IStorageItem sf = ApplicationData.Current.LocalFolder;
+
+ var properties = sf.GetBasicPropertiesAsync().Completed += (es, t) =>
+ {
+ es.GetResults().RetrievePropertiesAsync(new[] { "System.FreeSpace" }).Completed += (ex, tx) =>
+ {
+ var freeSpace = ex.GetResults()["System.FreeSpace"];
+#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
+#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ {
+ float freeSpaceGB = (float)Double.Parse((freeSpace.ToString())) / 1000000000;
+ FreeSpace.Text = Math.Round(freeSpaceGB, 2).ToString();
+ sdProgbar.Maximum = 16.00;
+ sdProgbar.Value = 16.00 - freeSpaceGB;
+ IsSDLoading = false;
+ IsPhoneLoading = false;
+ SDLoad.Stop();
+ symbolIcon.Visibility = Visibility.Collapsed;
+ PhoneLoad.Stop();
+ symbolIcon1.Visibility = Visibility.Collapsed;
+ });
+ };
+ };
+
+ return null;
}
- private void Hide_Click(object sender, RoutedEventArgs e)
+ private void AddFile(object sender, RoutedEventArgs e)
{
- MenuItem m = (MenuItem)sender;
- sdlists.ItemsSource = l;
+ CurrentFolder.CreateFileAsync("New File", CreationCollisionOption.GenerateUniqueName).Completed += (es,t) =>
+ {
+#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ {
+ GetFilesAndFolder(CurrentFolder);
+ });
+ };
}
+ private void AddZip(object sender, RoutedEventArgs e)
+ {
+ InputPrompt ip = new InputPrompt();
+ ip.Completed += (async (ex, t) =>
+ {
+ StorageFile sf = await CurrentFolder.CreateFileAsync(t.Result + ".zip", CreationCollisionOption.GenerateUniqueName);
+ if (sf != null && CreateZip(sf).IsCompleted)
+ {
- #endregion
+ GetFilesAndFolder(CurrentFolder);
+ }
+ });
+ ip.Title = "Enter file name";
+ ip.Show();
+ }
- #region FileLister
- async public void StateHelper()
+ private void AddFolder(object sender, RoutedEventArgs e)
+ {
+ InputPrompt ip = new InputPrompt();
+ ip.Completed += (async (ex, t) =>
+ {
+ StorageFolder sf = await CurrentFolder.CreateFolderAsync(t.Result, CreationCollisionOption.GenerateUniqueName);
+ GetFilesAndFolder(CurrentFolder);
+ });
+ ip.Title = "Enter folder name";
+ ip.Show();
+ }
+ private async void DeleteItem(object sender, RoutedEventArgs e)
{
- ExternalStorageDevice sdCard = (await ExternalStorage.GetExternalStorageDevicesAsync()).FirstOrDefault();
- if (sdCard != null)
+ var sdl = SDGridView.SelectedItems;
+ foreach (var sdli in sdl)
{
- ExternalStorageFolder sdrootFolder = sdCard.RootFolder;
- temp = sdrootFolder;
- var folder = await sdrootFolder.GetFoldersAsync();
- var files = await sdrootFolder.GetFilesAsync();
- foreach(ExternalStorageFolder currentChildFolder in folder)
+ try
{
- l.Add(new sdlist(currentChildFolder.Name, "/Resources/Assets/Images/folder.png"));
+ var si = (sdlist)sdli;
+ IStorageItem selectedItem = Items.ElementAt(sd.IndexOf(si));
+ await selectedItem.DeleteAsync();
+ sd.Remove(si);
}
- foreach (ExternalStorageFile currentChildFile in files)
+ catch (Exception ex)
{
- if (currentChildFile.Name.EndsWith(".pdf"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/pdf.png"));
- if (currentChildFile.Name.EndsWith(".svg"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/svg.png"));
- if (currentChildFile.Name.EndsWith(".mkv"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/mkv.png"));
- if (currentChildFile.Name.EndsWith(".rar"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/rar.png"));
- if (currentChildFile.Name.EndsWith(".csv"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/csv.png"));
- if (currentChildFile.Name.EndsWith(".avi"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/avi.png"));
- if (currentChildFile.Name.EndsWith(".7z"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/7z.png"));
-
+ AI("Cannot Delete File", "Cannot delete file because the file may be locked");
+ ShowStatus(ex.Message);
}
}
+ //GetFilesAndFolder(CurrentFolder);
+ }
- else
+ private void RenameItem(object sender, RoutedEventArgs e)
+ {
+ Rename((ItemsControl)sender);
+ }
+
+ List<StorageFile> clipboard = new List<StorageFile>();
+ private void CutItems(object sender, RoutedEventArgs e)
+ {
+ clipboard.Clear();
+ var sdl = SDGridView.SelectedItems;
+ foreach (var sdli in sdl)
{
- nosd.Visibility = System.Windows.Visibility.Visible;
+ try
+ {
+ var si = (sdlist)sdli;
+ IStorageItem selectedItem = Items.ElementAt(sd.IndexOf(si));
+ if (selectedItem.IsOfType(StorageItemTypes.File))
+ {
+ StorageFile sf = (StorageFile)selectedItem;
+
+ clipboard.Add(sf);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ AI("Cannot add to clipboard",ex.Message);
+ }
+
}
- sdlists.ItemsSource = l;
-
}
- async private void folderTap_Click(object sender, System.Windows.Input.GestureEventArgs e)
+
+ #region ShowStatus
+ public void ShowStatus(string info)
{
+ NotifyUser(info);
+ }
+ #endregion
- StackPanel sp = (StackPanel)sender;
- TextBlock btn = (TextBlock)sp.FindName("folderTap");
- btns = btn.Text;
- if (btns.EndsWith(".7z") || btns.EndsWith(".avi") || btns.EndsWith(".mkv"))
+ private void PasteItem(object sender, RoutedEventArgs e)
+ {
+ OpenDialog(2);
+ }
+ private void OverwriteContents(object sender, RoutedEventArgs e)
+ {
+ FileMoveDialog.Visibility = Visibility.Collapsed;
+ ProgInfoView.Visibility = Visibility.Visible;
+ int clipCount = 0;
+ if ((clipCount = clipboard.Count) != 0)
{
- if (btns.EndsWith(".7z"))
- {
- MessageBox.Show("It's a 7-zip File");
- }
- if (btns.EndsWith(".avi"))
+ progFileDest.Text = CurrentFolder.Name;
+ progTotalSize.Text = clipCount.ToString();
+ if (IS_FILE_MOVE)//move
{
- MessageBox.Show("It's a avi File");
+ cmstatus.Text = "moving";
+ try
+ {
+ foreach (var item in clipboard)
+ {
+ progFileSource.Text = item.Name;
+ progCurrentSize.Text = clipboard.IndexOf(item).ToString();
+ var tb = item.MoveAsync(CurrentFolder, item.Name, NameCollisionOption.ReplaceExisting);
+ tb.Completed += async (i, s) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ ProgInfoView.Visibility = Visibility.Collapsed;
+ ProgressDialog.Visibility = Visibility.Collapsed;
+ });
+ };
+ }
+ GetFilesAndFolder(CurrentFolder);
+ }
+ catch (Exception ex)
+ {
+ AI("Error copying file", ex.Message);
+ }
}
- if (btns.EndsWith(".mkv"))
+ else//copy
{
- MessageBox.Show("It's a mkv File");
+ cmstatus.Text = "copying";
+ try
+ {
+ foreach (var item in clipboard)
+ {
+ progFileSource.Text = item.Name;
+ progCurrentSize.Text = clipboard.IndexOf(item).ToString();
+ var tb = item.CopyAsync(CurrentFolder, item.Name, NameCollisionOption.ReplaceExisting);
+ tb.Completed += async (i, s) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ ProgInfoView.Visibility = Visibility.Collapsed;
+ ProgressDialog.Visibility = Visibility.Collapsed;
+ });
+ };
+ }
+ GetFilesAndFolder(CurrentFolder);
+ }
+ catch (Exception ex)
+ {
+ AI("Error copying file", ex.Message);
+ }
}
}
- else
+ }
+
+ private void KeepBothFiles(object sender, RoutedEventArgs e)
+ {
+ FileMoveDialog.Visibility = Visibility.Collapsed;
+ ProgInfoView.Visibility = Visibility.Visible;
+ int clipCount = 0;
+ if ((clipCount = clipboard.Count) != 0)
{
- var temps = await temp.GetFoldersAsync();
- l.Clear();
- foreach (ExternalStorageFolder subTemp in temps)
+ progFileDest.Text = CurrentFolder.Name;
+ progTotalSize.Text = clipCount.ToString();
+ if (IS_FILE_MOVE)//move
{
- if (btns == subTemp.Name)
+ cmstatus.Text = "moving";
+ try
{
- temp = subTemp;
- textBlock.Text = subTemp.Path;
- sd.Text = subTemp.Name;
- var subtemps = await subTemp.GetFoldersAsync();
- var files = await subTemp.GetFilesAsync();
- l.Clear();
- l.Add(new sdlist("back", "/Resources/Assets/Images/back.png"));
- foreach (ExternalStorageFolder subsTemp in subtemps)
+ foreach (var item in clipboard)
{
- l.Add(new sdlist(subsTemp.Name, "/Resources/Assets/Images/folder.png"));
+ progFileSource.Text = item.Name;
+ progCurrentSize.Text = clipboard.IndexOf(item).ToString();
+ var tb = item.MoveAsync(CurrentFolder, item.Name, NameCollisionOption.GenerateUniqueName);
+ tb.Completed += async (i, s) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ ProgInfoView.Visibility = Visibility.Collapsed;
+ ProgressDialog.Visibility = Visibility.Collapsed;
+ });
+ };
}
- foreach (ExternalStorageFile currentChildFile in files)
+ GetFilesAndFolder(CurrentFolder);
+ }
+ catch (Exception ex)
+ {
+ AI("Error copying file", ex.Message);
+ }
+ }
+ else//copy
+ {
+ cmstatus.Text = "copying";
+ try
+ {
+ foreach (var item in clipboard)
{
- if (currentChildFile.Name.EndsWith(".pdf"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/pdf.png"));
- if (currentChildFile.Name.EndsWith(".svg"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/svg.png"));
- if (currentChildFile.Name.EndsWith(".mkv"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/mkv.png"));
- if (currentChildFile.Name.EndsWith(".rar"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/rar.png"));
- if (currentChildFile.Name.EndsWith(".csv"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/csv.png"));
- if (currentChildFile.Name.EndsWith(".avi"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/avi.png"));
- if (currentChildFile.Name.EndsWith(".7z"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/7z.png"));
+ progFileSource.Text = item.Name;
+ progCurrentSize.Text = clipboard.IndexOf(item).ToString();
+ var tb = item.CopyAsync(CurrentFolder, item.Name, NameCollisionOption.GenerateUniqueName);
+ tb.Completed += async (i, s) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ ProgInfoView.Visibility = Visibility.Collapsed;
+ ProgressDialog.Visibility = Visibility.Collapsed;
+ });
+ };
}
+ GetFilesAndFolder(CurrentFolder);
+ }
+ catch (Exception ex)
+ {
+ AI("Error copying file", ex.Message);
}
}
}
- sdlists.ItemsSource = l;
}
- #endregion
-
- #region AppBarButtons
-
-
- void NewFolder_Click(object sender, EventArgs e)
+ #region InternetBrowser
+ private void Browser(object sender, RoutedEventArgs e)
{
- l.Add(new sdlist("New Folder", "/Resources/Assets/Images/folder.png"));
- sdlists.ItemsSource = l;
+ WebBrowser.Visibility = Visibility.Visible;
}
-
- private void MultiSelect_Click(object sender, EventArgs e)
+ private void Button_Click(object sender, RoutedEventArgs e)
{
- if (sdlists.IsSelectionEnabled == false)
+ try
{
- sdlists.IsSelectionEnabled = true;
+ webView.Navigate(new Uri(webAddressBar.Text));
}
- if (sdlists.IsSelectionEnabled == true)
+ catch
{
- sdlists.IsSelectionEnabled = false;
+ webView.Navigate(new Uri("https://www.google.com/"));
}
}
-
- private void Settings_Click(object sender, EventArgs e)
+ #endregion
+ #region FileShare
+ private void ShareContent(object sender, RoutedEventArgs e)
{
- NavigationService.Navigate(new Uri(SETTINGS_PAGE_URI, UriKind.Relative));
+ DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
+ dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(ShareStorageItemsHandler);
+ // If the user clicks the share button, invoke the share flow programatically.
+ DataTransferManager.ShowShareUI();
}
-
-
- #endregion
-
+ private void ShareStorageItemsHandler(DataTransferManager sender, DataRequestedEventArgs e)
+ {
+ DataRequest request = e.Request;
+ request.Data.Properties.Title = "File360";
+ request.Data.Properties.Description = "files & folders";
- #region BackButtonControl
+ // Because we are making async calls in the DataRequested event handler,
+ // we need to get the deferral first.
+ DataRequestDeferral deferral = request.GetDeferral();
- protected override void OnBackKeyPress(CancelEventArgs e)
- {
- if (textBlock.Text == null)
- {
- e.Cancel = false;
- }
- if (textBlock.Text != null)
- {
- l.Clear();
- StateHelper();
- btns = null;
- e.Cancel = true;
- sd.Text = "sdcard";
- }
- if (sdlists.IsSelectionEnabled == false)
- {
- e.Cancel = false;
- }
- if (sdlists.IsSelectionEnabled == true)
+ // Make sure we always call Complete on the deferral.
+ try
{
- sdlists.IsSelectionEnabled = false;
- e.Cancel = true;
- }
- }
- #endregion
+ var sdl = SDGridView.SelectedItems;
+ foreach (var sdli in sdl)
+ {
+ try
+ {
+ var si = (sdlist)sdli;
+ SelectedItems.Add(Items.ElementAt(sd.IndexOf(si)));
+ }
+ catch (Exception ex)
+ {
+ ShowStatus(ex.Message);
+ }
+ }
- #region HiddenVault
- private void vault_button_DoubleTap(object sender, System.Windows.Input.GestureEventArgs e)
- {
- if ((string)appSettings["Passer"] == "On")
- {
- pb = new TextBox();
- pb.Background = (SolidColorBrush)Resources["PhoneBackgroundBrush"];
- pb.Foreground = (SolidColorBrush)Resources["PhoneForegroundBrush"];
- pb.BorderBrush = (SolidColorBrush)Resources["PhoneBackgroundBrush"];
- pb.Height = 70;
- pb.Width = 356;
- pb.Margin = new Thickness(124, 0, 0, 625);
- pb.InputScope = new InputScope { Names = { new InputScopeName { NameValue = InputScopeNameValue.Number } } };
- pb.LostFocus += pb_LostFocus;
- pb.GotFocus += pb_GotFocus;
- LayoutRoot.Children.Add(pb);
- pb.Focus();
- pb.TextChanged += PChanged;
+ request.Data.SetStorageItems(SelectedItems);
}
-
- if ((string)appSettings["Passer"] == "Off")
+ finally
{
- NavigationService.Navigate(new Uri(VAULT_PAGE_URI, UriKind.Relative));
+ deferral.Complete();
}
}
+ #endregion
- private void PChanged(object sender, TextChangedEventArgs e)
+ private async void DeleteThisFolder(object sender, RoutedEventArgs e)
{
- if (pb.Text == (string)appSettings["PasswordValue"])
- {
- LayoutRoot.Children.Remove(pb);
- NavigationService.Navigate(new Uri(VAULT_PAGE_URI, UriKind.Relative));
- }
+ int index = CurrentFolder.Path.LastIndexOf(CurrentFolder.Name);
+ var sf = await StorageFolder.GetFolderFromPathAsync(CurrentFolder.Path.Remove(index));
+ await CurrentFolder.DeleteAsync();
+ GetFilesAndFolder(sf);
+ headerText.Text = CurrentFolder.Name;
+ this.Addresser.RemoveLast();
}
- void pb_GotFocus(object sender, RoutedEventArgs e)
+
+ private async void PersonalStorageEnumerator(object sender, RoutedEventArgs e)
{
- pb.Background = (SolidColorBrush)Resources["PhoneBackgroundBrush"];
- pb.Foreground = (SolidColorBrush)Resources["PhoneForegroundBrush"];
- pb.MaxLength = 5;
- pb.BorderBrush = (SolidColorBrush)Resources["PhoneBackgroundBrush"];
- pb.TextAlignment = TextAlignment.Center;
+ var HomeFolderP = ApplicationData.Current.LocalFolder;
+ var HomeFolder = await HomeFolderP.CreateFolderAsync("Home", CreationCollisionOption.OpenIfExists);
+ GetFilesAndFolder(HomeFolder);
+ this.Addresser.Reset();
+ headerText.Text = "Home";
+ RootFolder.Text = "|";
}
- private void pb_LostFocus(object sender, RoutedEventArgs e)
+ private void NowPlaying(object sender, RoutedEventArgs e)
{
- LayoutRoot.Children.Remove(pb);
+ MusicMenuClick();
}
- #endregion
-
- #region LateralMenu
- private void OpenClose_Left(object sender, RoutedEventArgs e)
+ private async void PreviousFolder(object sender, RoutedEventArgs e)
{
- var left = Canvas.GetLeft(CanvasRoot);
- if (left > -100)
+ if (!this.Addresser.Root)
{
- ApplicationBar.IsVisible = true;
- MoveViewWindow(-320);
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
+ try
+ {
+ int curFoldCharNm = CurrentFolder.Path.LastIndexOf(CurrentFolder.Name);
+ StorageFolder sf = await StorageFolder.GetFolderFromPathAsync(CurrentFolder.Path.Remove(curFoldCharNm));
+ this.Addresser.RemoveLast();
+ GetFilesAndFolder(sf);
+ }
+ catch { }
}
else
{
- ApplicationBar.IsVisible = false;
- MoveViewWindow(0);
- Blurer.Visibility = System.Windows.Visibility.Visible;
+ SideMenu.OpenDrawer();
}
}
- private void OpenClose_Right(object sender, RoutedEventArgs e)
+ #endregion
+
+ private void password_rect_Tapped(object sender, TappedRoutedEventArgs e)
{
- var left = Canvas.GetLeft(CanvasRoot);
- if (left > -350)
- {
- ApplicationBar.IsVisible = false;
- MoveViewWindow(-680);
- Blurer.Visibility = System.Windows.Visibility.Visible;
- }
- else
- {
- ApplicationBar.IsVisible = true;
- MoveViewWindow(-320);
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
- }
+ OpenDialog(1);
}
- void MoveViewWindow(double left)
+
+ //#region Bluetooth
+ //private async void OpenBluetoothSettings(object sender, RoutedEventArgs e)
+ //{
+ // await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:"));
+ //}
+ //#endregion
+
+ #region HelpMenu
+ private void HelpOpen(object sender, RoutedEventArgs e)
{
- if (left == -320)
- ApplicationBar.IsVisible = true;
- else
- ApplicationBar.IsVisible = false;
- ((Storyboard)canvas.Resources["moveAnimation"]).SkipToFill();
- ((DoubleAnimation)((Storyboard)canvas.Resources["moveAnimation"]).Children[0]).To = left;
- ((Storyboard)canvas.Resources["moveAnimation"]).Begin();
+ OpenDialog(0);
}
- private void canvas_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
+ private void HelpPageClose(object sender, RoutedEventArgs e)
{
- if (e.DeltaManipulation.Translation.X != 0)
- Canvas.SetLeft(CanvasRoot, Math.Min(Math.Max(-680, Canvas.GetLeft(CanvasRoot) + e.DeltaManipulation.Translation.X), 0));
+ CloseDialog(0);
}
+ #endregion
+
- double initialPosition;
- bool _viewMoved = false;
- private void canvas_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
+ #region FTP
+ private void OpenFTP(object sender, RoutedEventArgs e)
{
- _viewMoved = false;
- initialPosition = Canvas.GetLeft(CanvasRoot);
+ FTPOpen.Begin();
+ FTPActive.Begin();
}
-
- private void canvas_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
+ #endregion
+ #region Music
+ private void musicToggle_Checked(object sender, RoutedEventArgs e)
{
- var left = Canvas.GetLeft(CanvasRoot);
- if (_viewMoved)
- return;
- if (Math.Abs(initialPosition - left) < 100)
- {
- //bouncing back
- MoveViewWindow(initialPosition);
- return;
- }
- //change of state
- if (initialPosition - left > 0)
- {
- //slide to the left
- if (initialPosition > -320)
- MoveViewWindow(-320);
- else
- MoveViewWindow(-680);
- }
- else
- {
- //slide to the right
- if (initialPosition < -320)
- MoveViewWindow(-320);
- else
- MoveViewWindow(0);
- }
+ settings.Values["musicPlayer"] = "1";
+ }
+ private void musicToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musicPlayer"] = "0";
+ }
+ private void musThumbnailToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musThumbnail"] = "1";
}
+ private void musThumbnailToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musThumbnail"] = "0";
+ }
#endregion
+ #region Videos
+ private void videosToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["videosPlayer"] = "1";
+ }
+ private void videosToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["videosPlayer"] = "0";
+ }
+ private void vidThumbnailToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["vidThumbnail"] = "1";
+ }
- private void downloads_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ private void vidThumbnailToggle_Unchecked(object sender, RoutedEventArgs e)
{
- sd.Text = "downloads";
- textBlock.Text = "downloads";
- sdcard_menu.Background = null;
- l.Clear();
- List<AlphaKeyGroup<sdlist>> DataSource = AlphaKeyGroup<sdlist>.CreateGroups(l, System.Threading.Thread.CurrentThread.CurrentUICulture, (sdlist s) => { return s.Name; }, true);
- sdlists.ItemsSource = DataSource;
- MoveViewWindow(-320);
- dl.Fill = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
- rect_above.Fill = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
- pl.Fill = null;
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
+ settings.Values["vidThumbnail"] = "0";
}
- private void sdcard_menu_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ #endregion
+ #region Ebooks
+ private void ebookToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["ebookViewer"] = "1";
+ }
+ private void ebookToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["ebookViewer"] = "0";
+ }
+ #endregion
+ #region Pictures
+ private void picturesToggle_Checked(object sender, RoutedEventArgs e)
{
- sd.Text = "sdcard";
- textBlock.Text = null;
- l.Clear();
- StateHelper();
- MoveViewWindow(-320);
- //HomeBrush.ImageSource = new BitmapImage(new Uri("pack://application:/Toolkit.Content/home.png", UriKind.Absolute));
- pl.Fill = null;
- dl.Fill = null;
- oneFill.Fill = null;
- sdcard_menu.Background = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
- rect_above.Fill = null;
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
+ settings.Values["picturesPlayer"] = "1";
}
- public void WallpaperChanger(BitmapImage bitm)
+ private void picturesToggle_Unchecked(object sender, RoutedEventArgs e)
{
- ImageBrush im = new ImageBrush();
- im.ImageSource = bitm;
- ApplyGaussianFilter(im.ImageSource);
+ settings.Values["picturesPlayer"] = "0";
}
-
- public void ApplyGaussianFilter(ImageSource image)
+
+ private void picThumbnailToggle_Checked(object sender, RoutedEventArgs e)
{
- ImageApply(image);
+ settings.Values["picThumbnail"] = "1";
}
- public void ImageApply(ImageSource imt)
+ private void picThumbnailToggle_Unchecked(object sender, RoutedEventArgs e)
{
- ImageBrush im = new ImageBrush();
- im.Stretch = Stretch.UniformToFill;
- im.ImageSource = imt;
- SideBar.Background = im;
+ settings.Values["picThumbnail"] = "0";
}
- #region Music
+ #endregion
- public void MusicStateCreator()
+ #region DialogOpenClose
+ public void OpenDialog(int dialogNo)
{
- int trackno = 0;
- try
- {
- l.Clear();
- ml.Clear();
- using (var library = new MediaLibrary())
- {
- SongCollection songs = library.Songs;
- foreach (Song song in songs)
- {
- ml.Add(new musiclist((song.Name).ToString(), (song.Album).ToString(), (song.Artist).ToString(), (trackno+1).ToString()));
- }
- musicLists.ItemsSource = ml;
- sdlists.ItemsSource = ml;
- }
- }
- catch (ArgumentOutOfRangeException)
- {
- MessageBox.Show("There are no songs in your phone...");
- }
- catch (InvalidOperationException iop)
+ ProgressDialog.Visibility = Visibility.Visible;
+ switch(dialogNo)
{
- MessageBox.Show(iop.ToString());
+ case 0:
+ SubFrameGrid.Visibility = Visibility.Visible;
+ SubFrame.Navigate(typeof(HelpPage));
+ SubFrameHeader.Text = "HELP";
+ break;
+
+ case 1:
+ SubFrameGrid.Visibility = Visibility.Visible;
+ SubFrame.Navigate(typeof(VaultPage));
+ SubFrameHeader.Text = "VAULT";
+ break;
+ case 2:
+ FileMoveDialog.Visibility = Visibility.Visible;
+ break;
+ case 3:
+ ProgInfoView.Visibility = Visibility.Visible;
+ break;
+
}
}
- private void Music_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+
+ public void CloseDialog(int dialogNo)
{
- int trackno = 0;
- //ImageBrush ib = new ImageBrush();
- //ib.ImageSource = new BitmapImage(new Uri("pack://application:/Resources/Assets/Images/MusicBar.png", UriKind.Absolute));
- //homeButton.OpacityMask = ib;
- sd.Text = "music";
- pl.Fill = null;
- dl.Fill = null;
- rect_above.Fill = null;
- oneFill.Fill = null;
- sdcard_menu.Background = null;
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
- try
- {
- l.Clear();
- ml.Clear();
- using (var library = new MediaLibrary())
- {
- SongCollection songs = library.Songs;
- foreach (Song song in songs)
- {
- ml.Add(new musiclist((song.Name).ToString(), (song.Artist).ToString(), (song.Album).ToString(), (trackno+1).ToString()));
- }
- musicLists.ItemsSource = ml;
- sdlists.ItemsSource = ml;
- }
- }
- catch (ArgumentOutOfRangeException)
+ ProgressDialog.Visibility = Visibility.Collapsed ;
+ switch (dialogNo)
{
- MessageBox.Show("There are no songs in your phone...");
+ case 0:
+ SubFrameGrid.Visibility = Visibility.Collapsed;
+ break;
+
+ case 1:
+ SubFrameGrid.Visibility = Visibility.Collapsed;
+ break;
+ case 2:
+ FileMoveDialog.Visibility = Visibility.Collapsed;
+ break;
+ case 3:
+ ProgInfoView.Visibility = Visibility.Collapsed;
+ break;
+
}
}
+ #endregion
+ private void CloseDialog(object sender, RoutedEventArgs e)
+ {
+ CloseDialog(2);
+ }
- public void txtB_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ private void musicSlider_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
- TextBlock txt = (TextBlock)sender;
- string txts = (txt.Name).ToString();
- int index = int.Parse(txts);
- MainPage mp = new MainPage();
- using (var library = new MediaLibrary())
- {
- SongCollection songs = library.Songs;
- Song song = songs[index];
- try
- {
- FrameworkDispatcher.Update();
- MediaPlayer.Play(song);
- }
- catch (InvalidOperationException)
- {
- MediaPlayer.Play(songs[2]);
- }
- }
+ ((Storyboard)Resources["SeekOpen"]).Begin();
}
- #endregion
- async public void VideoLister(object sender, System.Windows.Input.GestureEventArgs e)
+ private void musicSlider_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
- pl.Fill = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
- dl.Fill = null;
- rect_above.Fill = null;
- sdcard_menu.Background = null;
- oneFill.Fill = null;
- sd.Text = "videos";
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
- //HomeBrush.ImageSource = new BitmapImage(new Uri("pack://application:/Resources/Assets/Images/Video.png", UriKind.Absolute));
- ExternalStorageDevice sdCard = (await ExternalStorage.GetExternalStorageDevicesAsync()).FirstOrDefault();
- if (sdCard != null)
+ int m = (int)(e.Delta.Translation.X *0.4);
+ if (m < 1 && m> -1)
+ return;
+ if (mediaPlayer.CanSeek && m > 0)
{
- ExternalStorageFolder sdrootFolder = sdCard.RootFolder;
- temp = sdrootFolder;
- var folder = await sdrootFolder.GetFoldersAsync();
- l.Clear();
- foreach (ExternalStorageFolder currentChildFolder in folder)
- {
- var files = await currentChildFolder.GetFilesAsync();
- foreach (ExternalStorageFile currentChildFile in files)
- {
- if (currentChildFile.Name.EndsWith(".avi"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/avi.png"));
- if (currentChildFile.Name.EndsWith(".mkv"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/mkv.png"));
- }
- var folderss = await currentChildFolder.GetFoldersAsync();
- foreach (ExternalStorageFolder currentChildFolder2 in folderss)
- {
- var filess = await currentChildFolder2.GetFilesAsync();
- foreach (ExternalStorageFile currentChildFile in filess)
- {
- if (currentChildFile.Name.EndsWith(".avi"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/avi.png"));
- if (currentChildFile.Name.EndsWith(".mkv"))
- l.Add(new sdlist(currentChildFile.Name, "/Resources/Assets/File_Types/mkv.png"));
- }
- }
-
- }
-
+ mediaPlayer.Position.Add(new TimeSpan(0, 0, m));
}
-
- else
+ else if(mediaPlayer.CanSeek)
{
- nosd.Visibility = System.Windows.Visibility.Visible;
+ mediaPlayer.Position.Subtract(new TimeSpan(0, 0, m));
}
- sdlists.ItemsSource = l;
}
- private void oneFill_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ private void musicSlider_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
- oneFill.Fill = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
- pl.Fill = null;
- dl.Fill = null;
- rect_above.Fill = null;
- Blurer.Visibility = System.Windows.Visibility.Collapsed;
+ ((Storyboard)Resources["SeekClose"]).Begin();
}
- async private void SearchModule_Click(object sender, RoutedEventArgs e)
+ private void StopFTP(object sender, RoutedEventArgs e)
{
- if (searchBox.Text != null)
+ FTPOpen.Stop();
+ FTPActive.Stop();
+ }
+
+ private void searchBox_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ try
{
- ExternalStorageDevice sdCard = (await ExternalStorage.GetExternalStorageDevicesAsync()).FirstOrDefault();
- ExternalStorageFolder sdrootFolder = sdCard.RootFolder;
- temp = sdrootFolder;
- var folder = await sdrootFolder.GetFoldersAsync();
- foreach (ExternalStorageFolder currentChildFolder in folder)
- {
- var files = await currentChildFolder.GetFilesAsync();
- foreach (ExternalStorageFile currentChildFile in files)
- {
- l.Clear();
- if (currentChildFile.Name.EndsWith(searchBox.Text))
- l.Add(new sdlist(searchBox.Text, "/Resources/Assets/Images/folder.png"));
- }
- }
- sdlists.ItemsSource = l;
-
+ sd.Where(x => x.Name == searchBox.Text);
+ }
+ catch (ArgumentNullException)
+ {
+ sd.Clear();
}
-
}
}
}
\ No newline at end of file
diff --git a/File360/MarqueeText.xaml b/File360/MarqueeText.xaml
@@ -0,0 +1,13 @@
+<UserControl
+ x:Class="File360.MarqueeText"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d">
+
+ <Grid>
+
+ </Grid>
+</UserControl>
diff --git a/File360/MarqueeText.xaml.cs b/File360/MarqueeText.xaml.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
+
+namespace File360
+{
+ public sealed partial class MarqueeText : UserControl
+ {
+ public MarqueeText()
+ {
+ this.InitializeComponent();
+ }
+ }
+}
diff --git a/File360/MessageBox.xaml b/File360/MessageBox.xaml
@@ -0,0 +1,50 @@
+<UserControl
+ x:Class="File360.MessageBox"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d">
+
+ <Grid x:Name="AlphaGrid">
+ <Grid.Background>
+ <SolidColorBrush Color="#19000000"/>
+ </Grid.Background>
+ <StackPanel x:Name="LayoutRoot"
+ MinHeight="100"
+ MaxHeight="200"
+ MinWidth="300"
+ MaxWidth="450"
+ Background="{StaticResource PhoneChromeBrush}"
+ HorizontalAlignment="Center"
+ VerticalAlignment="Center">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="2*"/>
+ <RowDefinition Height="50*"/>
+ <RowDefinition Height="2*"/>
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="2*"/>
+ <ColumnDefinition Width="50*"/>
+ <ColumnDefinition Width="2*"/>
+ </Grid.ColumnDefinitions>
+ <StackPanel Grid.Row="1" Grid.Column="1" Margin="10,0">
+ <TextBlock x:Name="heading" Foreground="{StaticResource PhoneForegroundBrush}" Text="ARE YOU SURE?" FontFamily="Segoe UI" FontSize="20" FontWeight="Bold" HorizontalAlignment="Left"/>
+ <Rectangle MinHeight="10"/>
+ <TextBlock x:Name="dialogDetails" Grid.Row="1" TextWrapping="Wrap" Text="Random Text and Messages Detailed about this operation comes here." FontFamily="Segoe WP Light" TextAlignment="Center" FontSize="20"/>
+ <Rectangle MinHeight="15"/>
+ </StackPanel>
+ </Grid>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="4*"/>
+ <ColumnDefinition Width="10*"/>
+ </Grid.ColumnDefinitions>
+ <Button MinWidth="0" x:Name="leftButton" Style="{StaticResource DialogBoxButton}" Content="<" FontFamily="Assets/Font/iconfont.ttf#iconfont" Click="leftButton_Click" Margin="0" VerticalAlignment="Stretch" BorderBrush="{x:Null}" Background="{ThemeResource PhoneBackgroundBrush}" HorizontalAlignment="Stretch"/>
+ <Button x:Name="rightButton" Grid.Column="1" Background="{StaticResource PhoneAccentBrush}" BorderBrush="{x:Null}" HorizontalAlignment="Stretch" Click="rightButton_Click" Style="{StaticResource DialogBoxButton}" Content="K" FontFamily="Assets/Font/iconfont.ttf#iconfont" Foreground="White"/>
+ </Grid>
+ </StackPanel>
+ </Grid>
+</UserControl>
diff --git a/File360/MessageBox.xaml.cs b/File360/MessageBox.xaml.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ public sealed partial class MessageBox : UserControl
+ {
+ public MessageBox()
+ {
+ InitializeComponent();
+ heading.FontSize = Window.Current.Bounds.Width / 20;
+ dialogDetails.FontSize = Window.Current.Bounds.Width / 30;
+ leftButton.FontSize = Window.Current.Bounds.Width / 35;
+ }
+ public string HeadingText
+ {
+ get { return heading.Text; }
+ set { heading.Text = value; }
+ }
+ public string ContentText
+ {
+ get { return dialogDetails.Text; }
+ set { dialogDetails.Text = value; }
+ }
+ public string LeftButtonContent
+ {
+ get { return leftButton.Content.ToString(); }
+ set { leftButton.Content = value; }
+ }
+ public string RightButtonContent
+ {
+ get { return rightButton.Content.ToString(); }
+ set { rightButton.Content = value; }
+ }
+ public RoutedEventHandler LeftButtonHandler
+ {
+ get { return leftButton_Click; }
+ set { leftButton.Click += value; }
+ }
+
+ public RoutedEventHandler RightButtonHandler
+ {
+ get { return rightButton_Click; }
+ set { rightButton.Click += value; }
+ }
+
+
+ private void leftButton_Click(object sender, RoutedEventArgs e)
+ {
+ IsOpen = false;
+ }
+ private void rightButton_Click(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ public bool IsOpen
+ {
+ get
+ {
+ if (Height == 0)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ set
+ {
+ if (value == true)
+ {
+ Height = Window.Current.Bounds.Height;
+ }
+ if (value == false)
+ {
+ Height = 0;
+ }
+ }
+ }
+ }
+}
diff --git a/File360/OccupyStack.cs b/File360/OccupyStack.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+
+namespace File360
+{
+ class OccupyStack : StackPanel
+ {
+ public OccupyStack()
+ {
+ foreach (Button but in Children)
+ {
+ but.Height = ((Grid)Parent).ActualHeight;
+ but.Width = ActualWidth / Children.Count;
+ }
+ SizeChanged += OccupyStack_SizeChanged;
+ }
+
+ private void OccupyStack_SizeChanged(object sender, Windows.UI.Xaml.SizeChangedEventArgs e)
+ {
+ Width = Window.Current.Bounds.Width;
+ UpdateLayout();
+ foreach (Button but in Children)
+ {
+ but.Height = ((Grid)Parent).ActualHeight;
+ but.Width = ActualWidth / Children.Count;
+ }
+ }
+ }
+}
diff --git a/File360/Package.appxmanifest b/File360/Package.appxmanifest
@@ -1,58 +1,46 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?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="c5e5323f-37ff-4a94-8835-ee041976b1b9"
- Publisher="CN=Sri"
- Version="1.0.0.0" />
-
- <mp:PhoneIdentity PhoneProductId="6db737b7-6d8e-4901-86a4-3110a717c72f" PhonePublisherId="adf37227-c10c-460b-a659-59745477b5c6"/>
-
+ <Identity Name="a7ce2a91-b87b-4cc7-b794-5bf854343085" Publisher="CN=Puli Bharatvaj" Version="1.0.0.0" />
+ <mp:PhoneIdentity PhoneProductId="a7ce2a91-b87b-4cc7-b794-5bf854343085" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>File360</DisplayName>
- <PublisherDisplayName>Sri</PublisherDisplayName>
+ <PublisherDisplayName>Puli Bharatvaj</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
-
<Prerequisites>
<OSMinVersion>6.3.1</OSMinVersion>
<OSMaxVersionTested>6.3.1</OSMaxVersionTested>
</Prerequisites>
-
<Resources>
- <Resource Language="x-generate"/>
+ <Resource Language="x-generate" />
</Resources>
-
<Applications>
- <Application Id="x6db737b7y6d8ey4901y86a4y3110a717c72fx"
- Executable="AGHost.exe"
- EntryPoint="MainPage.xaml">
- <m3:VisualElements
- DisplayName="File360"
- Square150x150Logo="Assets\SquareTile150x150.png"
- Square44x44Logo="Assets\Logo.png"
- Description="File360"
- ForegroundText="light"
- BackgroundColor="#464646">
- <m3:DefaultTile Square71x71Logo="Assets\SquareTile71x71.png"/>
- <m3:SplashScreen Image="SplashScreenImage.jpg" />
+ <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="File360.App">
+ <m3:VisualElements DisplayName="File360" Square150x150Logo="Assets\Logo.png" Square44x44Logo="Assets\SmallLogo.png" Description="File360" ForegroundText="light" BackgroundColor="transparent">
+ <m3:DefaultTile Wide310x150Logo="Assets\WideLogo.png" Square71x71Logo="Assets\Square71x71Logo.png">
+ </m3:DefaultTile>
+ <m3:SplashScreen Image="Assets\SplashScreen.png" />
</m3:VisualElements>
<Extensions>
- <Extension Category="windows.backgroundTasks" EntryPoint="AgHost.BackgroundTask">
+ <Extension Category="windows.fileOpenPicker">
+ <FileOpenPicker>
+ <SupportedFileTypes>
+ <SupportsAnyFileType />
+ </SupportedFileTypes>
+ </FileOpenPicker>
+ </Extension>
+ <Extension Category="windows.backgroundTasks" EntryPoint="File360.app">
<BackgroundTasks>
- <Task Type="systemEvent" />
+ <Task Type="audio" />
</BackgroundTasks>
</Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
+ <Capability Name="videosLibrary" />
+ <Capability Name="removableStorage" />
+ <Capability Name="musicLibrary" />
+ <Capability Name="picturesLibrary" />
</Capabilities>
- <Extensions>
- <Extension Category="windows.activatableClass.inProcessServer">
- <InProcessServer>
- <Path>AgHostSvcs.dll</Path>
- <ActivatableClass ActivatableClassId="AgHost.BackgroundTask" ThreadingModel="both" />
- </InProcessServer>
- </Extension>
- </Extensions>
</Package>
\ No newline at end of file
diff --git a/File360/Properties/AssemblyInfo.cs b/File360/Properties/AssemblyInfo.cs
@@ -1,28 +1,19 @@
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("File360")]
-[assembly: AssemblyDescription("Best File Manager for Windows Phone 8.0")]
+[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("AMI")]
+[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("File360")]
[assembly: AssemblyCopyright("Copyright © 2015")]
-[assembly: AssemblyTrademark("AMI")]
+[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("9d7b1f07-3c45-4014-baca-2741880a5f97")]
-
// Version information for an assembly consists of the following four values:
//
// Major Version
@@ -30,8 +21,9 @@ using System.Resources;
// Build Number
// Revision
//
-// You can specify all the values or you can default the Revision and Build Numbers
+// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
-[assembly: NeutralResourcesLanguageAttribute("en-US")]
-\ No newline at end of file
+[assembly: ComVisible(false)]
+\ No newline at end of file
diff --git a/File360/ReadMe.Coding4Fun.Toolkit.txt b/File360/ReadMe.Coding4Fun.Toolkit.txt
@@ -0,0 +1,8 @@
+Thanks for using the Coding4Fun Toolkit!
+
+Migration Notes:
+2.1.0 -> 2.1.1
+
+1) Added Windows Phone 8 SL Components removed in 2.0.8 (no new functionality added)
+2) Added David Anson's PlaceImage control to WinRT WP81 / Win81
+3) Added ToastPrompt to WinRT Win81
+\ No newline at end of file
diff --git a/File360/SelectorItemEx.cs b/File360/SelectorItemEx.cs
@@ -0,0 +1,60 @@
+using Windows.UI.Input;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Input;
+
+namespace File360
+{
+ public static class SelectorItemEx
+ {
+ public static bool GetToggleSelectedOnHold(SelectorItem item)
+ {
+ return (bool)item.GetValue(ToggleSelectedOnHoldProperty);
+ }
+
+ public static void SetToggleSelectedOnHold(SelectorItem item, bool value)
+ {
+ item.SetValue(ToggleSelectedOnHoldProperty, value);
+ }
+
+ public static readonly DependencyProperty ToggleSelectedOnHoldProperty =
+ DependencyProperty.RegisterAttached(
+ "ToggleSelectedOnHold",
+ typeof(bool),
+ typeof(SelectorItemEx),
+ new PropertyMetadata(
+ false,
+ ToggleSelectedOnHoldChanged));
+
+ private static void ToggleSelectedOnHoldChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
+ {
+ var item = o as SelectorItem;
+ if (item == null)
+ return;
+
+ var oldValue = (bool)e.OldValue;
+ var newValue = (bool)e.NewValue;
+
+ if (oldValue && !newValue)
+ {
+ item.Holding -= Item_Holding;
+ }
+ else if (newValue && !oldValue)
+ {
+ item.Holding += Item_Holding;
+ }
+ }
+
+ private static void Item_Holding(object sender, HoldingRoutedEventArgs e)
+ {
+ var item = sender as SelectorItem;
+ if (item == null)
+ return;
+
+
+ if (e.HoldingState == HoldingState.Started)
+ item.IsSelected = !item.IsSelected;
+ }
+ }
+}
+\ No newline at end of file
diff --git a/File360/SettingsPage.xaml b/File360/SettingsPage.xaml
@@ -1,44 +1,154 @@
-<phone:PhoneApplicationPage
+<Page
x:Class="File360.SettingsPage"
- xmlns:local="clr-namespace:File360"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:local="using:File360"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- FontFamily="{StaticResource PhoneFontFamilyNormal}"
- FontSize="{StaticResource PhoneFontSizeNormal}"
- Foreground="{StaticResource PhoneForegroundBrush}"
- local:TiltEffect.IsTiltEnabled="True"
- SupportedOrientations="Portrait" Orientation="Portrait"
- mc:Ignorable="d"
- shell:SystemTray.IsVisible="True">
+ mc:Ignorable="d">
- <phone:PhoneApplicationPage.Resources>
- <DataTemplate x:Name="SettingsItemTemplate">
- <Grid Tap="SettingTap_Tap" x:Name="SettingTap">
- <TextBlock x:Name="txtB" Margin="116,12,10,47" Tap="txtB_Tap" Foreground="{StaticResource PhoneForegroundBrush}" Text="{Binding SettingName}" FontSize="46"/>
- <TextBlock x:Name="txtB2" Margin="116,86,10,20" Foreground="{StaticResource PhoneSubtleBrush}" Text="{Binding SettingDescription}" FontFamily="Portable User Interface"/>
- <Ellipse HorizontalAlignment="Left" Height="77" Margin="12,28,0,0" Stroke="{x:Null}" VerticalAlignment="Top" Width="77">
- <Ellipse.Fill>
- <ImageBrush ImageSource="{Binding SettingPicture}"/>
- </Ellipse.Fill>
- </Ellipse>
- </Grid>
- </DataTemplate>
-
- </phone:PhoneApplicationPage.Resources>
-
<Grid>
- <phone:Pivot HorizontalAlignment="Left" Height="768" Title="FILE360°" VerticalAlignment="Top" Width="480">
- <phone:PivotItem CacheMode="{x:Null}" Header="settings" Margin="0,28,-368,0" FontSize="24">
- <phone:LongListSelector
- x:Name="SettingsList"
- ItemTemplate="{StaticResource SettingsItemTemplate}"
- IsGroupingEnabled="False" Margin="10,0"/>
- </phone:PivotItem>
- </phone:Pivot>
- </Grid>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}" Opacity="0.92"/>
+ </Grid.Background>
+ <Grid.RenderTransform>
+ <CompositeTransform/>
+ </Grid.RenderTransform>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Button HorizontalContentAlignment="Left" Style="{StaticResource DefaultButton}" Click="GoBack" Margin="0" VerticalAlignment="Stretch" d:LayoutOverrides="Height, LeftPosition, RightPosition, TopPosition, BottomPosition" BorderThickness="0" HorizontalAlignment="Stretch" FontSize="26.667" FontWeight="Thin">
+ <StackPanel Orientation="Horizontal">
+ <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" TextAlignment="Left" FontSize="24" Text="g" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" FontWeight="Thin" FontStretch="UltraCondensed"/>
+ <TextBlock HorizontalAlignment="Left"
+ TextWrapping="Wrap"
+ Text="settings"
+ VerticalAlignment="Center"
+ FontWeight="Normal" Margin="5,0,0,0" TextLineBounds="TrimToCapHeight"/>
+ </StackPanel>
+ </Button>
+ <ScrollViewer Grid.Row="1">
+ <ScrollViewer.Background>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.3">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Color="#00000000" Offset="0.02"/>
+ </LinearGradientBrush>
+ </ScrollViewer.Background>
+ <StackPanel Margin="10">
+ <TextBlock Text="general" HorizontalAlignment="Center" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" />
+ <TextBlock Text="use built in viewer for" Style="{StaticResource ControlHeaderTextBlockStyle}"/>
+ <StackPanel Orientation="Horizontal">
+ <ToggleButton x:Name="musicToggle" Checked="musicToggle_Checked" Unchecked="musicToggle_Unchecked">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text="b" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ <TextBlock Text="music"/>
+ </StackPanel>
+ </ToggleButton>
+ <ToggleButton x:Name="videosToggle" Checked="videosToggle_Checked" Unchecked="videosToggle_Unchecked">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text=")" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ <TextBlock Text="videos"/>
+ </StackPanel>
+ </ToggleButton>
+ <ToggleButton Visibility="Collapsed" x:Name="ebookToggle" Checked="ebookToggle_Checked" Unchecked="ebookToggle_Unchecked">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text="m" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ <TextBlock Text="ebook"/>
+ </StackPanel>
+ </ToggleButton>
+ <ToggleButton x:Name="picturesToggle" Checked="picturesToggle_Checked" Unchecked="picturesToggle_Unchecked">
+ <StackPanel>
+ <TextBlock HorizontalAlignment="Center" Text="M" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ <TextBlock Text="pictures"/>
+ </StackPanel>
+ </ToggleButton>
+ </StackPanel>
+ <TextBlock Text="show thumbnail for" Style="{StaticResource ControlHeaderTextBlockStyle}"/>
+ <CheckBox Visibility="Collapsed" x:Name="musThumbnailToggle" Content="music" Checked="musThumbnailToggle_Checked" Unchecked="musThumbnailToggle_Unchecked" />
+ <CheckBox x:Name="vidThumbnailToggle" Content="videos" Checked="vidThumbnailToggle_Checked" Unchecked="vidThumbnailToggle_Unchecked" />
+ <CheckBox x:Name="picThumbnailToggle" Content="pictures" Checked="picThumbnailToggle_Checked" Unchecked="picThumbnailToggle_Unchecked" />
+ <TextBlock Text="personalization" HorizontalAlignment="Center" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" />
+ <StackPanel>
+ <!--<local:ColorPicker ColorSet="2" x:Name="folderColor" OptionName="folder" Foreground="Black" />
+ <local:ColorPicker ColorSet="0" x:Name="accentColor" OptionName="app accent" />
+ <local:ColorPicker ColorSet="1" x:Name="themeColor" OptionName="app theme" />-->
+ <ToggleSwitch Header="use slideshow" Margin="0,5" Height="75"/>
+ <TextBlock Text="folder view type" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}"/>
+ <ComboBox x:Name="typeComboBox" SelectionChanged="FolderViewChanged">
+ <ComboBoxItem>
+ <StackPanel>
+ <TextBlock TextAlignment="Center" Text="c" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="29.333"/>
+ <TextBlock TextAlignment="Center" Text="list" FontSize="21.333"/>
+ </StackPanel>
+ </ComboBoxItem>
+ <ComboBoxItem>
+ <StackPanel>
+ <TextBlock TextAlignment="Center" Text="N" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="24"/>
+ <TextBlock TextAlignment="Center" Text="grid" />
+ </StackPanel>
+ </ComboBoxItem>
+ </ComboBox>
+ </StackPanel>
+ <Grid>
+ <Button x:Name="button" HorizontalAlignment="Center" Style="{StaticResource DefaultButton}" RenderTransformOrigin="0.5,0.5" Click="OpenFTP">
+ <Button.RenderTransform>
+ <CompositeTransform/>
+ </Button.RenderTransform>
+ <Border CornerRadius="50" VerticalAlignment="Center" Background="{ThemeResource PhoneAccentBrush}">
+ <TextBlock Margin="20" Text="ftp" HorizontalAlignment="Center" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" />
+ </Border>
+ </Button>
+ <Border x:Name="border" RenderTransformOrigin="0.5,0.5">
+ <Border.RenderTransform>
+ <CompositeTransform ScaleX="0" ScaleY="0" TranslateY="-30"/>
+ </Border.RenderTransform>
+ <StackPanel Margin="0,20" Background="{ThemeResource PhoneAccentBrush}">
+ <TextBlock Text="Address" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" />
+ <TextBlock Margin="0,5" Text="192.162.1.103:23" FontSize="13.333"/>
+ </StackPanel>
+ </Border>
+ </Grid>
+ <Grid HorizontalAlignment="Center">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Button Margin="25,0" Style="{StaticResource DefaultButton}" HorizontalAlignment="Center" VerticalAlignment="Center" Click="OpenBluetoothSettings">
+ <StackPanel Margin="0,25" HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="b" FontSize="26.667" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Top" Margin="5,0,10,5" Foreground="{ThemeResource PhoneAccentBrush}" Opacity="0.95" LineStackingStrategy="MaxHeight" FontWeight="Thin"/>
+ <TextBlock Text="bluetooth" FontSize="23.333" FontWeight="Thin" HorizontalAlignment="Center"/>
+ <TextBlock Text="configure bluetooth settings" HorizontalAlignment="Center" FontSize="13"/>
+ </StackPanel>
+ </Button>
+ <Button Margin="25,0" Style="{StaticResource DefaultButton}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Click="HelpOpen">
+ <StackPanel Margin="0,25" HorizontalAlignment="Center" VerticalAlignment="Center">
+ <TextBlock Text="h" FontSize="26.667" FontFamily="Assets/Font/settingsfont.ttf#settingsfont" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Top" Margin="5,0,10,5" Foreground="{ThemeResource PhoneAccentBrush}" Opacity="0.95" LineStackingStrategy="MaxHeight" FontWeight="Thin"/>
+ <TextBlock Text="help" FontSize="23.333" FontWeight="Thin" HorizontalAlignment="Center"/>
+ <TextBlock Text="check out this guide" HorizontalAlignment="Center" FontFamily="Helvetica Neue" FontSize="13" FontWeight="Normal"/>
+ </StackPanel>
+ </Button>
+ </Grid>
+ <StackPanel Margin="0,10">
+ <StackPanel.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}" Opacity="0.2"/>
+ </StackPanel.Background>
+ <TextBlock Text="security" HorizontalAlignment="Center" Style="{StaticResource ComboBoxPlaceholderTextBlockStyle}" Margin="0,10,0,0"/>
+ <ToggleSwitch Header="password protection" Toggled="PasswordToggle"/>
+ <Grid Margin="30,10" Background="{StaticResource ContentDialogDimmingThemeBrush}">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <TextBlock VerticalAlignment="Center" MaxLines="1" Height="50" FontSize="20" TextWrapping="NoWrap" x:Name="securityBlock" Margin="10,0" HorizontalAlignment="Center"/>
+ <Button Grid.Column="1" Style="{StaticResource DefaultButton}" Content="clear" FontSize="12" Background="{StaticResource ContentDialogDimmingThemeBrush}"/>
+ </Grid>
+ <Grid Visibility="Collapsed" x:Name="wrapPanel" Height="260"/>
+ </StackPanel>
-</phone:PhoneApplicationPage>
-\ No newline at end of file
+ </StackPanel>
+ </ScrollViewer>
+ </Grid>
+ </Grid>
+</Page>
diff --git a/File360/SettingsPage.xaml.cs b/File360/SettingsPage.xaml.cs
@@ -1,80 +1,207 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
+using Windows.Storage;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
namespace File360
{
- public partial class SettingsPage : PhoneApplicationPage
+ public sealed partial class SettingsPage : Page
{
- const string about = "/AboutPage.xaml";
- const string security = "/SecurityPage.xaml";
- const string personalization = "/PersonalizationPage.xaml";
- string txts;
- List<settinglist> sl = new List<settinglist>();
+
+ ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
public SettingsPage()
{
- InitializeComponent();
- sl.Add(new settinglist("ftp", "configure file transfer prtocol","/Resources/Assets/Settings/ftp.png"));
- sl.Add(new settinglist("bluetooth", "bluetooth settings","/Resources/Assets/Images/add.png"));
- sl.Add(new settinglist("nfc", "nfc configuration",""));
- sl.Add(new settinglist("personalization", "get a look",""));
- sl.Add(new settinglist("music", "change your music settings",""));
- sl.Add(new settinglist("security", "protect your files",""));
- sl.Add(new settinglist("about", "About Us!",""));
- SettingsList.ItemsSource = sl;
+ this.InitializeComponent();
+ //Loaded += SettingsPage_Loaded;
+ }
+
+ public void GoBack(object sender, RoutedEventArgs e)
+ {
+ this.Frame.GoBack();
}
- async private void txtB_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ private void SettingsPage_Loaded(object sender, RoutedEventArgs e)
{
- TextBlock txt = (TextBlock)sender;
- txts = (txt.Text).ToString();
- if (txts == "about")
- {
- NavigationService.Navigate(new Uri(about, UriKind.Relative));
- }
- if (txts == "security")
+ #region SettingsSerializer
+ if (settings.Containers.Count == 9)
{
- NavigationService.Navigate(new Uri(security, UriKind.Relative));
+ settings.Values["musicPlayer"] = "1";
+ musicToggle.IsChecked = true;
+ settings.Values["picturesPlayer"] = "1";
+ picturesToggle.IsChecked = true;
+ settings.Values["videoPlayer"] = "1";
+ videosToggle.IsChecked = true;
+ settings.Values["ebookViewer"] = "1";
+ ebookToggle.IsChecked = true;
+ settings.Values["itemType"] = 1;
+ typeComboBox.SelectedIndex = 1;
+ settings.Values["musThumbnail"] = "0";
+ musThumbnailToggle.IsChecked = false;
+ settings.Values["vidThumbnail"] = "0";
+ vidThumbnailToggle.IsChecked = false;
+ settings.Values["picThumbnail"] = "0";
+ picThumbnailToggle.IsChecked = false;
}
-
- if (txts == "bluetooth")
+ else
{
- await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:"));
+ musicToggle.IsChecked = ((string)settings.Values["musicPlayer"] == "1");
+ picturesToggle.IsChecked = ((string)settings.Values["picturesPlayer"] == "1");
+ videosToggle.IsChecked = ((string)settings.Values["videosPlayer"] == "1");
+ ebookToggle.IsChecked = ((string)settings.Values["ebookViewer"] == "1");
+ typeComboBox.SelectedIndex = (int)(settings.Values["itemType"]);
+ musThumbnailToggle.IsChecked = ((string)settings.Values["musThumbnail"] == "1");
+ vidThumbnailToggle.IsChecked = ((string)settings.Values["vidThumbnail"] == "1");
+ picThumbnailToggle.IsChecked = ((string)settings.Values["picThumbnail"] == "1");
}
+ #endregion
- if (txts == "nfc")
- {
- MessageBox.Show("coming soon...");
- }
- if (txts == "personalization")
+ #region InitializePasswordButtons
+ for (int i = 1; i <= 9; i++)
{
- NavigationService.Navigate(new Uri(personalization, UriKind.Relative));
+ Button b = new Button();
+ b.Content = i;
+ try
+ {
+ b.Height = (Window.Current.Bounds.Width / 3) - 40;
+ b.Width = Window.Current.Bounds.Width / 3;
+ }
+ catch
+ {
+ }
+ b.Click += B_Click;
+ b.Style = (Style)Application.Current.Resources["DefaultButton"];
+ wrapPanel.Children.Add(b);
}
+ #endregion
+ }
+
+
+ #region SettingsHandler
+ #region Bluetooth
+ private async void OpenBluetoothSettings(object sender, RoutedEventArgs e)
+ {
+ await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:"));
+ }
+ #endregion
+
+ #region HelpMenu
+ private void HelpOpen(object sender, RoutedEventArgs e)
+ {
+ // SettingsFrameGrid.Visibility = Visibility.Visible;
+ // if (!SettingsFrame.Navigate(typeof(HelpPage)))
+ // {
+ // throw new Exception("Failed to create scenario list");
+ // }
+ }
+ #endregion
+ #region FTP
+ private void OpenFTP(object sender, RoutedEventArgs e)
+ {
+ //FTPOpen.Begin();
+ }
+ #endregion
+ #region Music
+ private void musicToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musicPlayer"] = "1";
+ }
+ private void musicToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musicPlayer"] = "0";
+ }
+
+ private void musThumbnailToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musThumbnail"] = "1";
+ }
+
+ private void musThumbnailToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["musThumbnail"] = "0";
+ }
+ #endregion
+ #region Videos
+ private void videosToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["videosPlayer"] = "1";
+ }
+ private void videosToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["videosPlayer"] = "0";
+ }
+ private void vidThumbnailToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["vidThumbnail"] = "1";
+ }
+
+ private void vidThumbnailToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["vidThumbnail"] = "0";
+ }
+
+ #endregion
+ #region Ebooks
+ private void ebookToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["ebookViewer"] = "1";
+ }
+ private void ebookToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["ebookViewer"] = "0";
+ }
+ #endregion
+ #region Pictures
+ private void picturesToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["picturesPlayer"] = "1";
+ }
- if (txts == "ftp")
+ private void picturesToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["picturesPlayer"] = "0";
+ }
+
+ private void picThumbnailToggle_Checked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["picThumbnail"] = "1";
+ }
+
+ private void picThumbnailToggle_Unchecked(object sender, RoutedEventArgs e)
+ {
+ settings.Values["picThumbnail"] = "0";
+ }
+ #endregion
+
+ #region Folder
+ private void FolderViewChanged(object sender, SelectionChangedEventArgs e)
+ {
+ settings.Values["itemType"] = typeComboBox.SelectedIndex;
+ }
+ #endregion
+
+ #region Security
+ private void PasswordToggle(object sender, RoutedEventArgs e)
+ {
+ ToggleSwitch ts = (ToggleSwitch)sender;
+ if (ts.IsOn)
{
- MessageBox.Show("coming soon...");
+ wrapPanel.Visibility = Visibility.Visible;
}
- if (txts == "music")
+ else
{
- MessageBox.Show("coming soon...");
+ wrapPanel.Visibility = Visibility.Visible;
}
- }
-
- public void SettingTap_Tap(object sender, System.Windows.Input.GestureEventArgs e)
- {
-
- }
+ }
+ private void B_Click(object sender, RoutedEventArgs e)
+ {
+ securityBlock.Text += ((Button)sender).Content;
+ }
+ #endregion
+ #endregion
}
-}
-\ No newline at end of file
+}
diff --git a/File360/Shade.cs b/File360/Shade.cs
@@ -0,0 +1,229 @@
+using System;
+using System.Linq;
+using System.Windows;
+using Windows.Foundation;
+using Windows.UI;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Animation;
+
+namespace File360
+{
+ public class Shade : Grid
+ {
+ #region Globals and events
+
+ private readonly PropertyPath _translatePath = new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)");
+ private readonly PropertyPath _colorPath = new PropertyPath("(Grid.Background).(SolidColorBrush.Color)");
+
+ private readonly TranslateTransform _listFragmentTransform = new TranslateTransform();
+ private readonly TranslateTransform _deltaTransform = new TranslateTransform();
+ private const int MaxAlpha = 190;
+
+ public delegate void DrawerEventHandler(object sender);
+ public event DrawerEventHandler DrawerOpened;
+ public event DrawerEventHandler DrawerClosed;
+
+ private Storyboard _fadeInStoryboard;
+ private Storyboard _fadeOutStoryboard;
+ private Grid _shadowFragment;
+ private Grid _slideFragment;
+
+ #endregion
+
+ #region Properties
+
+ public bool Shadowed { get; set; }
+ private PropertyPath TranslatePath
+ {
+ get { return _translatePath; }
+ }
+ private PropertyPath ColorPath
+ {
+ get { return _colorPath; }
+ }
+
+ #endregion
+
+ #region Methods
+
+ public Shade()
+ {
+ Shadowed = false;
+ }
+
+ public void Shadow(Grid Element)
+ {
+ _slideFragment = (Grid)Element;
+ // Create a shadow element
+ _shadowFragment = new Grid
+ {
+ Name = "_shadowFragment",
+ Background = new SolidColorBrush(Color.FromArgb(0, 255, 255, 255)),
+ HorizontalAlignment = HorizontalAlignment.Stretch,
+ VerticalAlignment = VerticalAlignment.Stretch,
+ Visibility = Visibility.Collapsed
+ };
+ _shadowFragment.Tapped += shadowFragment_Tapped;
+ _shadowFragment.IsHitTestVisible = false;
+
+ // Set ZIndexes
+ Canvas.SetZIndex(_shadowFragment, 50);
+ Canvas.SetZIndex(_slideFragment, 51);
+ Children.Add(_shadowFragment);
+
+ // Create a new fadeIn animation storyboard
+ _fadeInStoryboard = new Storyboard();
+
+ // New double animation
+ var doubleAnimation1 = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = 0
+ };
+
+ Storyboard.SetTarget(doubleAnimation1, _slideFragment);
+ Storyboard.SetTargetProperty(doubleAnimation1, TranslatePath.Path);
+ _fadeInStoryboard.Children.Add(doubleAnimation1);
+
+ // New color animation for _shadowFragment
+ var colorAnimation1 = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(190, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation1, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation1, ColorPath.Path);
+ _fadeInStoryboard.Children.Add(colorAnimation1);
+
+ // Create a new fadeOut animation storyboard
+ _fadeOutStoryboard = new Storyboard();
+
+ // New double animation
+ var doubleAnimation2 = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = -_slideFragment.Width - 200
+ };
+
+ Storyboard.SetTarget(doubleAnimation2, _slideFragment);
+ Storyboard.SetTargetProperty(doubleAnimation2, TranslatePath.Path);
+ _fadeOutStoryboard.Children.Add(doubleAnimation2);
+
+ // New color animation for _shadowFragment
+ var colorAnimation2 = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(0, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation2, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation2, ColorPath.Path);
+ _fadeOutStoryboard.Children.Add(colorAnimation2);
+
+ }
+
+ public void UnShadow()
+ {
+ var shadow = new Storyboard();
+
+ var doubleAnimation = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = -_slideFragment.Width
+ };
+
+ Storyboard.SetTarget(doubleAnimation, _slideFragment);
+ Storyboard.SetTargetProperty(doubleAnimation, TranslatePath.Path);
+ shadow.Children.Add(doubleAnimation);
+
+ var colorAnimation = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(0, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation, ColorPath.Path);
+ shadow.Children.Add(colorAnimation);
+
+ shadow.Completed += shadow_Completed;
+ shadow.Begin();
+ }
+ private void shadowFragment_Tapped(object sender, TappedRoutedEventArgs e)
+ {
+ var shadow = new Storyboard();
+
+ var doubleAnimation = new DoubleAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = -_slideFragment.Width
+ };
+
+ Storyboard.SetTarget(doubleAnimation, _slideFragment);
+ Storyboard.SetTargetProperty(doubleAnimation, TranslatePath.Path);
+ shadow.Children.Add(doubleAnimation);
+
+ var colorAnimation = new ColorAnimation
+ {
+ Duration = new Duration(new TimeSpan(0, 0, 0, 0, 200)),
+ To = Color.FromArgb(0, 0, 0, 0)
+ };
+
+ Storyboard.SetTarget(colorAnimation, _shadowFragment);
+ Storyboard.SetTargetProperty(colorAnimation, ColorPath.Path);
+ shadow.Children.Add(colorAnimation);
+
+ shadow.Completed += shadow_Completed;
+ shadow.Begin();
+ }
+ private void shadow_Completed(object sender, object e)
+ {
+ _shadowFragment.IsHitTestVisible = false;
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ Shadowed = false;
+
+ // raise close event
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ private void fadeOutStoryboard_Completed(object sender, object e)
+ {
+ _shadowFragment.Visibility = Visibility.Collapsed;
+ Shadowed = false;
+ if (DrawerClosed != null) DrawerClosed(this);
+ }
+ #region MoveShadow
+ private void MoveShadowFragment(double left)
+ {
+ // Show shadow fragment
+ _shadowFragment.Background = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
+ _shadowFragment.Visibility = Visibility.Visible;
+
+ // Set bg color based on current _slideFragment position.
+ var maxLeft = _slideFragment.ActualWidth;
+ var currentLeft = maxLeft - left;
+
+ var temp = Convert.ToInt32((currentLeft / maxLeft) * MaxAlpha);
+
+ // Limit temp variable to 190 to avoid OverflowException
+ if (temp > MaxAlpha) temp = MaxAlpha;
+
+ byte alphaColorIndex;
+ try
+ {
+ alphaColorIndex = Convert.ToByte(MaxAlpha - temp);
+ }
+ catch
+ {
+ alphaColorIndex = 0;
+ }
+
+ _shadowFragment.Background = new SolidColorBrush(Color.FromArgb(alphaColorIndex, 0, 0, 0));
+ }
+ #endregion
+ #endregion
+ }
+}
diff --git a/File360/SideBarMenuButton.xaml b/File360/SideBarMenuButton.xaml
@@ -0,0 +1,25 @@
+<Button
+ x:Class="File360.SideBarMenuButton"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ HorizontalContentAlignment="Left" FontWeight="Thin" BorderBrush="{x:Null}">
+
+ <StackPanel Orientation="Horizontal" x:Name="LayoutGrid" Margin="0,5">
+ <TextBlock x:Name="TextImage"
+ VerticalAlignment="Center"
+ FontFamily="Assets/Font/iconFont.ttf#iconfont"
+ FontSize="25"
+ Text="t"
+ TextAlignment="Left" Foreground="{ThemeResource PhoneForegroundBrush}"/>
+ <TextBlock x:Name="Text"
+ TextWrapping="NoWrap"
+ FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway"
+ FontSize="18"
+ TextAlignment="Left"
+ Text="sd som" VerticalAlignment="Center" Foreground="{ThemeResource PhoneForegroundBrush}" Margin="5,0,0,0"/>
+ </StackPanel>
+</Button>
diff --git a/File360/SideBarMenuButton.xaml.cs b/File360/SideBarMenuButton.xaml.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236
+
+namespace File360
+{
+ public sealed partial class SideBarMenuButton : Button
+ {
+ public SideBarMenuButton()
+ {
+ this.InitializeComponent();
+ Width = (Window.Current.Bounds.Width*2)/3;
+ Height = Window.Current.Bounds.Height / 12;
+ }
+ public string ImageText
+ {
+ get { return TextImage.Text; }
+ set { TextImage.Text = value; }
+ }
+ public string ContentText
+ {
+ get { return Text.Text; }
+ set { Text.Text = value; }
+ }
+ public SolidColorBrush BackgroundColor
+ {
+ get { return (SolidColorBrush)LayoutGrid.Background; }
+ set { LayoutGrid.Background = value; }
+ }
+ }
+}
diff --git a/File360/StoreManifest.xml b/File360/StoreManifest.xml
@@ -0,0 +1,5 @@
+<StoreManifest xmlns="http://schemas.microsoft.com/appx/2010/StoreManifest">
+ <ProductFeatures>
+ <SDOptOut>true</SDOptOut>
+ </ProductFeatures>
+</StoreManifest>
+\ No newline at end of file
diff --git a/File360/Strings/en-US/Resources.resw b/File360/Strings/en-US/Resources.resw
@@ -0,0 +1,150 @@
+<?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="AddAppBarButton.Label" xml:space="preserve">
+ <value>add</value>
+ </data>
+ <data name="Header.Text" xml:space="preserve">
+ <value>MY APPLICATION</value>
+ </data>
+ <data name="NavigationFailedExceptionMessage" xml:space="preserve">
+ <value>Navigation failed.</value>
+ </data>
+ <data name="NewItemDescription" xml:space="preserve">
+ <value>Item Description: Pellentesque porta, mauris quis interdum vehicula, urna sapien ultrices velit, nec venenatis dui odio in augue. Cras posuere, enim a cursus convallis, neque turpis malesuada erat, ut adipiscing neque tortor ac erat.</value>
+ </data>
+ <data name="NewItemTitle" xml:space="preserve">
+ <value>Item Title: {0}</value>
+ </data>
+ <data name="Pivot.Title" xml:space="preserve">
+ <value>MY APPLICATION</value>
+ </data>
+ <data name="PivotItem1.Header" xml:space="preserve">
+ <value>first</value>
+ </data>
+ <data name="PivotItem2.Header" xml:space="preserve">
+ <value>second</value>
+ </data>
+ <data name="SecondaryButton1.Label" xml:space="preserve">
+ <value>secondary command 1</value>
+ </data>
+ <data name="SecondaryButton2.Label" xml:space="preserve">
+ <value>secondary command 2</value>
+ </data>
+</root>
+\ No newline at end of file
diff --git a/File360/Utility/Helper/NativeOperationsHelper.cs b/File360/Utility/Helper/NativeOperationsHelper.cs
@@ -0,0 +1,86 @@
+/**********************************************************************
+ * VLC for WinRT
+ **********************************************************************
+ * Copyright © 2013-2014 VideoLAN and Authors
+ *
+ * Licensed under GPLv2+ and MPLv2
+ * Refer to COPYING file of the official project for license
+ **********************************************************************/
+
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.InteropServices.ComTypes;
+using Windows.Storage;
+
+namespace File360.Utility.Helpers
+{
+ internal class NativeOperationsHelper
+ {
+ // ReSharper disable InconsistentNaming
+ /// <summary>
+ /// La déclaration de l'API GetFileAttributesEx
+ /// </summary>
+ /// <param name="lpFileName">Le nom du fichier recherché</param>
+ /// <param name="fInfoLevelId">Quelles types d'info on recherche</param>
+ /// <param name="lpFileInformation">Structure contenant les informations une fois l'API appelée</param>
+ /// <returns></returns>
+ [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ public static extern bool GetFileAttributesEx(
+ string lpFileName,
+ GET_FILEEX_INFO_LEVELS fInfoLevelId,
+ out WIN32_FILE_ATTRIBUTE_DATA lpFileInformation);
+
+ /// <summary>
+ /// Type d'infos recherchées
+ /// </summary>
+ public enum GET_FILEEX_INFO_LEVELS
+ {
+ /// <summary>
+ /// C'est la seule valeur autorisée avec WinRT
+ /// </summary>
+ GetFileExInfoStandard,
+ /// <summary>
+ /// Ne fonctionne pas sous WinRT => marqué Obsolete
+ /// </summary>
+ [Obsolete]
+ GetFileExMaxInfoLevel
+ }
+
+ /// <summary>
+ /// Structure contenant les informations sur le fichier
+ /// </summary>
+ [StructLayout(LayoutKind.Sequential)]
+ public struct WIN32_FILE_ATTRIBUTE_DATA
+ {
+ public FileAttributes dwFileAttributes;
+ public FILETIME ftCreationTime;
+ public FILETIME ftLastAccessTime;
+ public FILETIME ftLastWriteTime;
+ public uint nFileSizeHigh;
+ public uint nFileSizeLow;
+ }
+
+ // quelques valeurs d'erreurs succeptibles d'arriver
+ private const int ERROR_FILE_NOT_FOUND = 2;
+ private const int ERROR_PATH_NOT_FOUND = 3;
+ private const int ERROR_ACCESS_DENIED = 5;
+
+ public static bool FileExist(string fileName)
+ {
+ WIN32_FILE_ATTRIBUTE_DATA fileData;
+ if (GetFileAttributesEx(fileName, GET_FILEEX_INFO_LEVELS.GetFileExInfoStandard, out fileData))
+ return true;
+
+ // récupération de la dernière erreur (in the same thread of course ;-))
+ var lastError = Marshal.GetLastWin32Error();
+ if (lastError == ERROR_FILE_NOT_FOUND || lastError == ERROR_PATH_NOT_FOUND) return false;
+ // si c'est pas un fichier non trouvé, on lance une exception
+ if (lastError == ERROR_ACCESS_DENIED)
+ throw new SecurityAccessDeniedException("Acces Denied");
+
+ throw new InvalidOperationException(string.Format("Erreur pendant l'accès au fichier {0}, code {1}", fileName, lastError));
+ }
+
+ }
+}
diff --git a/File360/Utility/Helper/SecurityAccessDeniedException.cs b/File360/Utility/Helper/SecurityAccessDeniedException.cs
@@ -0,0 +1,19 @@
+using System;
+
+namespace File360.Utility.Helpers
+{
+ internal class SecurityAccessDeniedException : Exception
+ {
+ public SecurityAccessDeniedException()
+ {
+ }
+
+ public SecurityAccessDeniedException(string message) : base(message)
+ {
+ }
+
+ public SecurityAccessDeniedException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+ }
+}
+\ No newline at end of file
diff --git a/File360/VaultPage.xaml b/File360/VaultPage.xaml
@@ -1,83 +1,74 @@
-<phone:PhoneApplicationPage
- xmlns:local="clr-namespace:File360"
- xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
- xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
+<Page
+ x:Class="File360.VaultPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:local="using:File360"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- x:Class="File360.vault"
- local:TiltEffect.IsTiltEnabled="True"
mc:Ignorable="d"
- Orientation="Portrait"
- shell:SystemTray.IsVisible="True">
+ RequestedTheme="Dark"
+ Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" FontSize="33.333">
+ <Page.Resources>
+ <Storyboard x:Name="AuthenticationFailed" AutoReverse="True" RepeatBehavior="1x">
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="image">
+ <SplineDoubleKeyFrame KeyTime="0" Value="0"/>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="15">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <QuarticEase EasingMode="EaseIn"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="-15">
+ <EasingDoubleKeyFrame.EasingFunction>
+ <QuadraticEase EasingMode="EaseInOut"/>
+ </EasingDoubleKeyFrame.EasingFunction>
+ </EasingDoubleKeyFrame>
+ </DoubleAnimationUsingKeyFrames>
+ </Storyboard>
+ </Page.Resources>
- <phone:PhoneApplicationPage.Resources>
- <Style x:Key="EmptyPressedState" TargetType="Button">
- <Setter Property="HorizontalAlignment" Value="Left"/>
- <Setter Property="BorderBrush" Value="Transparent"/>
- <Setter Property="VerticalAlignment" Value="Top"/>
- <Setter Property="FontSize" Value="30"/>
- <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiLight}"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="Button">
- <Grid Background="Transparent">
- <VisualStateManager.VisualStateGroups>
- <VisualStateGroup x:Name="CommonStates">
- <VisualState x:Name="Pressed">
- <Storyboard>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneButtonBasePressedForegroundBrush}"/>
- </ObjectAnimationUsingKeyFrames>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
- <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </VisualState>
- </VisualStateGroup>
- </VisualStateManager.VisualStateGroups>
- <Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
- <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"/>
- </Border>
- </Grid>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <DataTemplate x:Key="VaultTemplate">
- <StackPanel Margin="0,0,15,50" >
- <!--<Button x:Name="btnb" Content="{Binding Name}" Click="sdsub" Style="{StaticResource ListButtonStyle}"/>-->
- <Button x:Name="folderTap" Content="{Binding VaultName}" Style="{StaticResource EmptyPressedState}" CharacterSpacing="0" Hold="folderTap_Hold" VerticalAlignment="Top" />
- <!--<TextBlock x:Name="subtxt" Text="{Binding Name2}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>-->
- <toolkit:ContextMenuService.ContextMenu>
-
- <toolkit:ContextMenu IsZoomEnabled="True" x:Name="ContextMenu">
-
- <toolkit:MenuItem x:Name="Remove" Header="remove" Click="Remove_Click"/>
-
- </toolkit:ContextMenu>
-
- </toolkit:ContextMenuService.ContextMenu>
- </StackPanel>
- </DataTemplate>
- </phone:PhoneApplicationPage.Resources>
-
- <!--LayoutRoot is the root grid where all page content is placed-->
- <Grid x:Name="LayoutRoot" Background="Transparent">
- <phone:Pivot x:Name="vaultpivot" HorizontalAlignment="Left" Height="768" Title="FILE360°" VerticalAlignment="Top" Width="480" Grid.RowSpan="2">
- <phone:PivotItem Header="vault" Margin="10,28,-358,0">
- <toolkit:LongListMultiSelector
- x:Name="vaultLister"
- ItemTemplate="{StaticResource VaultTemplate}"
- IsGroupingEnabled="True"/>
- </phone:PivotItem>
- </phone:Pivot>
-
+ <Grid>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="1.5*"/>
+ </Grid.RowDefinitions>
+ <Grid>
+ <Image x:Name="image" Margin="45" Source="Assets/SmallLogo.png" HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5">
+ <Image.RenderTransform>
+ <CompositeTransform/>
+ </Image.RenderTransform>
+ </Image>
+ </Grid>
+ <Grid Grid.Row="1">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1.5*"/>
+ <RowDefinition Height="5*"/>
+ </Grid.RowDefinitions>
+ <TextBox x:Name="passwordBox" InputScope="Number" VerticalAlignment="Stretch" BorderBrush="{x:Null}" Foreground="White" PlaceholderText="" FontSize="26.667" MaxLength="4" TextAlignment="Center" Style="{StaticResource PasswordTextBox}" Background="{x:Null}" TextChanged="passwordBox_TextChanged" LostFocus="passwordBox_LostFocus"/>
+ <!--<TextBlock x:Name="passwordBox" Text="" CharacterSpacing="1000" FontWeight="Bold" VerticalAlignment="Stretch" MaxLines="1"/>-->
+ <!--<Grid x:Name="passwordGrid" Grid.Row="1">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ </Grid>-->
+ <Grid Grid.Row="1" Tapped="Grid_Tapped">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneChromeColor}"/>
+ </Grid.Background>
+ </Grid>
+ </Grid>
+ </Grid>
</Grid>
-
-</phone:PhoneApplicationPage>
-\ No newline at end of file
+</Page>
diff --git a/File360/VaultPage.xaml.cs b/File360/VaultPage.xaml.cs
@@ -1,114 +1,81 @@
-using System;
+using File360.Common;
+using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Navigation;
-using Microsoft.Phone.Controls;
-using Microsoft.Phone.Shell;
-using Microsoft.Devices.Sensors;
-using Microsoft.Xna.Framework;
-using System.ComponentModel;
-using File360.Resources;
-using System.IO.IsolatedStorage;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Graphics.Display;
+using Windows.UI.ViewManagement;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
namespace File360
{
- public partial class vault : PhoneApplicationPage
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class VaultPage : Page
{
- Accelerometer accelerometer;
- const string MAIN_PAGE_URI = "/MainPage.xaml";
- List<vaultlist> vl = new List<vaultlist>();
- public static string Vbtns;
- IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
-
- int index;
- public vault()
+ string PASS_KEY = "2580";
+ public VaultPage()
{
- InitializeComponent();
- #region AccelerometerChecker
-
- if ((string)appSettings["Shaker"] == "On")
- {
- if (accelerometer == null)
- {
- accelerometer = new Accelerometer();
- accelerometer.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20);
- accelerometer.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(accelerometer_CurrentValueChanged);
- try
- {
- accelerometer.Start();
- }
- catch (InvalidOperationException ex)
- {
- MessageBox.Show("Initiating Accelerometer Failed!" + "\nAdditional Information:\n" + ex);
- }
- }
- }
-
-#endregion
- #region FilesLister
- if (MainPage.Hbtns != null)
- {
- vl.Add(new vaultlist(MainPage.Hbtns, "Folder"));
- List<AlphaKeyGroup<vaultlist>> DataSource = AlphaKeyGroup<vaultlist>.CreateGroups(vl, System.Threading.Thread.CurrentThread.CurrentUICulture, (vaultlist v) => { return v.VaultName; }, true);
- vaultLister.ItemsSource = DataSource;
- }
- #endregion
+ this.InitializeComponent();
+ Loaded += VaultPage_Loaded;
}
- #region Accelerometer
-
- void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
+ private void VaultPage_Loaded(object sender, RoutedEventArgs e)
{
- Dispatcher.BeginInvoke(() => UpdateUI(e.SensorReading));
+ passwordBox.Focus(FocusState.Pointer);
+ //int btNo = 0;
+ //for (int i = 0; i <= 3; i++)
+ //{
+ // for (int j = 0; j < 3; j++)
+ // {
+ // btNo++;
+ // Button bt = new Button();
+ // bt.Content = btNo;
+ // bt.HorizontalAlignment = HorizontalAlignment.Stretch;
+ // bt.VerticalAlignment = VerticalAlignment.Stretch;
+ // bt.Click += (o, t) =>
+ // {
+ // passwordBox.Text += bt.Content;
+ // };
+ // Grid.SetRow(bt, i);
+ // Grid.SetColumn(bt, j);
+ // passwordGrid.Children.Add(bt);
+ // }
+ //}
}
- private void UpdateUI(AccelerometerReading accelerometerReading)
+ private void passwordBox_TextChanged(object sender, TextChangedEventArgs e)
{
-
- Vector3 acceleration = accelerometerReading.Acceleration;
-
- if (acceleration.X >= 0.8 || acceleration.X <= -0.8)
+ if (passwordBox.Text.Count() == 4 && passwordBox.Text != PASS_KEY)
{
- if (accelerometer != null)
- {
- accelerometer.Stop();
- }
- NavigationService.GoBack();
+ AuthenticationFailed.Begin();
+ passwordBox.Text = "";
}
-
}
- protected override void OnBackKeyPress(CancelEventArgs e)
+ private void Grid_Tapped(object sender, TappedRoutedEventArgs e)
{
- if (accelerometer != null)
- {
- accelerometer.Stop();
- }
+ e.Handled = true;
+ passwordBox.Focus(FocusState.Pointer);
}
-#endregion
- #region ContextMenu
-
- private void Remove_Click(object sender, RoutedEventArgs e)
+ private void passwordBox_LostFocus(object sender, RoutedEventArgs e)
{
-
- vl.RemoveAt(index);
- List<AlphaKeyGroup<vaultlist>> DataSource = AlphaKeyGroup<vaultlist>.CreateGroups(vl, System.Threading.Thread.CurrentThread.CurrentUICulture, (vaultlist v) => { return v.VaultName; }, true);
- vaultLister.ItemsSource = DataSource;
- }
-
- #endregion
+ ((Grid)(((Grid)this.Frame.Parent).Parent)).Visibility = Visibility.Collapsed;
+ this.Frame.Content = null;
- private void folderTap_Hold(object sender, System.Windows.Input.GestureEventArgs e)
- {
- Button b = (Button)sender;
- Vbtns = (b.Content).ToString();
- vaultlist dataObject = (vaultlist)b.DataContext;
- index = vl.IndexOf(dataObject);
}
-
}
-}
-\ No newline at end of file
+}
diff --git a/File360/VideoList.cs b/File360/VideoList.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI.Xaml.Media;
+
+namespace File360
+{
+ class VideoList
+ {
+
+ public ImageBrush Preview { set; get; }
+ public string VideoName { set; get; }
+ public string VideoDuration { set; get; }
+ public string FolderName { get; set; }
+ public string Count { set; get; }
+
+ public VideoList(string videoName, TimeSpan videoDuration,ImageBrush preview)
+ {
+ this.VideoName = videoName;
+ this.VideoDuration = videoDuration.ToString();
+ this.Preview = preview;
+ }
+
+ public VideoList(string folderName, int count)
+ {
+ this.FolderName = folderName;
+ this.Count = count.ToString();
+ }
+ }
+
+}
diff --git a/File360/VideoPage.xaml b/File360/VideoPage.xaml
@@ -0,0 +1,213 @@
+<Page
+ x:Class="File360.VideoPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="using:File360"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
+ <Page.Resources>
+ <Storyboard x:Name="MenuHide">
+ <DoubleAnimation Duration="0:0:0.2" To="-50" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="grid1" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid1" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="-40" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="toggleButton" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="40" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="toggleButton1" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid3" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.3" To="1.2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="stackPanel" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.3" To="1.2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="stackPanel" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.3" To="80" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="stackPanel" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.3" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.4" To="1.1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="grid1" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.4" To="1.1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="grid1" d:IsOptimized="True"/>
+ <DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="rectangle" d:IsOptimized="True"/>
+ </Storyboard>
+ <Storyboard x:Name="MenuHideRev">
+ <DoubleAnimation Duration="0:0:0.4" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="grid1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid1">
+ <SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="toggleButton">
+ <SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="0"/>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="toggleButton1">
+ <SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="0"/>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid3">
+ <SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimation Duration="0:0:0.4" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="stackPanel" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.4" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="stackPanel" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.4" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="stackPanel" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="stackPanel">
+ <SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="1"/>
+ </DoubleAnimationUsingKeyFrames>
+ <DoubleAnimation Duration="0:0:0.4" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="grid1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.4" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="grid1" d:IsOptimized="True">
+ <DoubleAnimation.EasingFunction>
+ <QuarticEase EasingMode="EaseInOut"/>
+ </DoubleAnimation.EasingFunction>
+ </DoubleAnimation>
+ <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="rectangle" d:IsOptimized="True"/>
+ </Storyboard>
+ </Page.Resources>
+
+ <Grid x:Name="MediaFragment" Grid.RowSpan="2" RequestedTheme="Dark" RenderTransformOrigin="0,0">
+ <Grid x:Name="imageContainerMedia" VerticalAlignment="Stretch">
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource PhoneBackgroundColor}"/>
+ </Grid.Background>
+ <Viewbox StretchDirection="Both" Stretch="Uniform">
+ <MediaElement x:Name="mediaPlayer" AudioCategory="BackgroundCapableMedia" ManipulationStarted="mediaPlayer_ManipulationStarted" ManipulationDelta="mediaPlayer_ManipulationDelta" ManipulationCompleted="mediaPlayer_ManipulationCompleted"/>
+ </Viewbox>
+ <Grid VerticalAlignment="Stretch" Margin="0">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid x:Name="grid1" Opacity="1" RenderTransformOrigin="0.5,0.5">
+ <Grid.RenderTransform>
+ <CompositeTransform/>
+ </Grid.RenderTransform>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Grid MinWidth="50" MinHeight="0" >
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Button >
+ <StackPanel Margin="10,0" Orientation="Horizontal">
+ <StackPanel VerticalAlignment="Center" CacheMode="BitmapCache" x:Name="grid" Grid.Column="1" Margin="0">
+ <TextBlock x:Name="videoName" Text="no media" TextWrapping="NoWrap" MinWidth="175" FontSize="18.667" VerticalAlignment="Center" FontFamily="Assets/Font/Custom/Raleway-Light.ttf#Raleway" Margin="0" HorizontalAlignment="Left" Foreground="White"/>
+ <TextBlock Text="{Binding Text, ElementName=mediaDuration}" FontSize="13.333" VerticalAlignment="Center" Margin="0" FontFamily="Assets/Font/Custom/ClearSans-Thin.ttf#Clear Sans Thin" HorizontalAlignment="Left" Foreground="White"/>
+ </StackPanel>
+ </StackPanel>
+ </Button>
+ </Grid>
+ <Button x:Name="button2" Grid.Column="1" MinWidth="0" Visibility="Collapsed" Content="c" FontFamily="Assets/Font/iconfont.ttf#iconfont"/>
+ </Grid>
+ <Grid RequestedTheme="Dark" x:Name="grid2" Grid.Row="1" Visibility="Visible" >
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Grid Tapped="Grid_Tapped">
+ <TextBlock x:Name="vidoeStats" Text="" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="Assets/Font/iconfont.ttf#iconfont" />
+ <Rectangle x:Name="rectangle">
+ <Rectangle.Fill>
+ <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.7">
+ <GradientStop Color="Black" Offset="0"/>
+ <GradientStop Color="Black" Offset="1"/>
+ <GradientStop Offset="0.5"/>
+ <GradientStop Offset="0.05" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ <GradientStop Offset="0.95" Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </LinearGradientBrush>
+ </Rectangle.Fill>
+ </Rectangle>
+ <Border Grid.Column="1" x:Name="border" VerticalAlignment="Center" RenderTransformOrigin="0.5,1">
+ <Border.RenderTransform>
+ <CompositeTransform ScaleY="0"/>
+ </Border.RenderTransform>
+ <Border.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}" Opacity="0.98"/>
+ </Border.Background>
+ <TextBlock x:Name="sliderTimer" Margin="30" Text="{Binding Text, ElementName=currentDuration}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30">
+ <TextBlock.Foreground>
+ <SolidColorBrush Color="{ThemeResource PhoneForegroundColor}"/>
+ </TextBlock.Foreground>
+ </TextBlock>
+ </Border>
+ </Grid>
+ <Grid x:Name="grid3" VerticalAlignment="Bottom">
+ <ToggleButton x:Name="toggleButton" MinWidth="50" Content="X" FontFamily="Assets/Font/iconfont.ttf#iconfont" Style="{StaticResource ToggleButtonStyle}" VerticalAlignment="Bottom" Margin="10,0,0,25" RenderTransformOrigin="0.5,0.5">
+ <ToggleButton.RenderTransform>
+ <CompositeTransform/>
+ </ToggleButton.RenderTransform>
+ </ToggleButton>
+
+ <ToggleButton x:Name="toggleButton1" Content="C" MinWidth="50" FontFamily="Assets/Font/iconfont.ttf#iconfont" Style="{StaticResource ToggleButtonStyle}" Margin="0,0,10,25" HorizontalAlignment="Right" VerticalAlignment="Bottom" RenderTransformOrigin="0.5,0.5">
+ <ToggleButton.RenderTransform>
+ <CompositeTransform/>
+ </ToggleButton.RenderTransform>
+ </ToggleButton>
+ </Grid>
+
+ <Grid Grid.Row="1" VerticalAlignment="Center">
+ <StackPanel x:Name="stackPanel" RenderTransformOrigin="0.5,0.5">
+ <StackPanel.RenderTransform>
+ <CompositeTransform/>
+ </StackPanel.RenderTransform>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <ProgressBar Value="0" Margin="10" x:Name="musicSlider" BorderBrush="{x:Null}" VerticalAlignment="Top" Height="5"/>
+
+ <TextBlock x:Name="currentDuration" Grid.Row="1" Text="--:--" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,5,0,5"/>
+ <TextBlock x:Name="mediaDuration" Text="--:--" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,5,10,5"/>
+ </Grid>
+ <Grid>
+ <Grid.Background>
+ <SolidColorBrush Color="{ThemeResource ContentDialogDimmingColor}"/>
+ </Grid.Background>
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Button Content="6" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+ <Button x:Name="playPause" Grid.Column="1" Content="8" FontFamily="Assets/Font/iconfont.ttf#iconfont" Click="PlayCurrent" FontSize="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+ <Button Content="4" Grid.Column="2" FontFamily="Assets/Font/iconfont.ttf#iconfont" FontSize="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
+ </Grid>
+ </Grid>
+ </StackPanel>
+ </Grid>
+ </Grid>
+ </Grid>
+ </Grid>
+ </Grid>
+</Page>
diff --git a/File360/VideoPage.xaml.cs b/File360/VideoPage.xaml.cs
@@ -0,0 +1,172 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.Storage;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkID=390556
+
+namespace File360
+{
+ /// <summary>
+ /// An empty page that can be used on its own or navigated to within a Frame.
+ /// </summary>
+ public sealed partial class VideoPage : Page
+ {
+
+ private bool MENU_HIDDEN = true;
+ private DispatcherTimer musicDispatcher;
+ public VideoPage()
+ {
+ this.InitializeComponent();
+ Loaded += VideoPage_Loaded;
+ Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
+ SizeChanged += VideoPage_SizeChanged;
+ }
+
+ private void VideoPage_SizeChanged(object sender, SizeChangedEventArgs e)
+ {
+ VisualStateManager.GoToState(this, "Landscape", false);
+ }
+
+ private void VideoPage_Loaded(object sender, RoutedEventArgs e)
+ {
+ MenuHide.Begin();
+ }
+
+ private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
+ {
+ if (this.Frame.CanGoBack)
+ this.Frame.GoBack();
+ else Application.Current.Exit();
+ }
+
+ /// <summary>
+ /// Invoked when this page is about to be displayed in a Frame.
+ /// </summary>
+ /// <param name="e">Event data that describes how this page was reached.
+ /// This parameter is typically used to configure the page.</param>
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ IStorageFile isf = (IStorageFile)e.Parameter;
+ mediaPlayer.Source = new Uri(isf.Path);
+ mediaPlayer.MediaOpened += (es,st) =>
+ {
+ UpdateVideoInfo(isf.Name, mediaPlayer.NaturalDuration.TimeSpan.Minutes + ":" + mediaPlayer.NaturalDuration.TimeSpan.Seconds.ToString(),"8");
+ musicSlider.Maximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
+ musicDispatcher.Start();
+ };
+
+ musicDispatcher = new DispatcherTimer();
+ musicDispatcher.Interval = TimeSpan.FromMilliseconds(1000);
+
+
+ mediaPlayer.MediaEnded += async (es,st) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ //UpdateVideoInfo("no media", "--:--", "5");
+ //musicDispatcher.Stop();
+ ExitOrGoBack();
+ });
+ };
+
+ mediaPlayer.MediaFailed += async (s, t) =>
+ {
+ await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
+ {
+ //UpdateVideoInfo("no media", "--:--", "5");
+ if (musicDispatcher.IsEnabled)
+ musicDispatcher.Stop();
+ MessageBox mb = new MessageBox();
+ mb.HeadingText = "Cannot Play Media";
+ mb.ContentText = "Cannot play this file, do you want to open with other video player?";
+ mb.LeftButtonHandler += (es, st) =>
+ {
+ ExitOrGoBack();
+ };
+ mb.RightButtonHandler += async (es, st) =>
+ {
+ await Windows.System.Launcher.LaunchFileAsync(isf);
+ };
+ MediaFragment.Children.Add(mb);
+ });
+ };
+
+
+ musicDispatcher.Tick += (s, t) =>
+ {
+ musicSlider.Value = mediaPlayer.Position.TotalSeconds;
+ currentDuration.Text = mediaPlayer.Position.Minutes + ":" + mediaPlayer.Position.Seconds;
+
+ };
+ videoName.Text = isf.Name;
+
+ }
+
+ private void ExitOrGoBack()
+ {
+ if (this.Frame.CanGoBack)
+ this.Frame.GoBack();
+ else Application.Current.Exit();
+ }
+
+ private void UpdateVideoInfo(string name, string dur, string playMode)
+ {
+ videoName.Text = name;
+ mediaDuration.Text = dur;
+ musicSlider.Value = 0;
+ playPause.Content = playMode;
+ }
+
+ private void mediaPlayer_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
+ {
+
+ }
+
+ private void mediaPlayer_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
+ {
+
+ }
+
+ private void mediaPlayer_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
+ {
+
+ }
+
+ private void PlayCurrent(object sender, RoutedEventArgs e)
+ {
+ if (mediaPlayer.CurrentState == MediaElementState.Playing)
+ {
+ mediaPlayer.Pause();
+ playPause.Content = "5";
+ //DurationBlink.Begin();
+ }
+ else if (mediaPlayer.CurrentState == MediaElementState.Paused)
+ {
+ mediaPlayer.Play();
+ playPause.Content = "8";
+ //DurationBlink.Stop();
+ }
+
+ }
+
+ private void Grid_Tapped(object sender, TappedRoutedEventArgs e)
+ {
+ if (MENU_HIDDEN)
+ MenuHideRev.Begin();
+ else MenuHide.Begin();
+ MENU_HIDDEN = !MENU_HIDDEN;
+ }
+ }
+}
diff --git a/File360/musiclist.cs b/File360/musiclist.cs
@@ -3,23 +3,74 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Media;
namespace File360
{
- class musiclist
+ class MusicList
{
- public string SongName{set;get;}
+ public double ImageHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 3.5;
+ else return Window.Current.Bounds.Width / 3.5;
+ }
+ }
+ public double ImageWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 2.2;
+ else return Window.Current.Bounds.Height / 2.2;
+ }
+ }
+
+ public double PicHeight
+ {
+ get
+ {
+ if (IsVertical()) return (Window.Current.Bounds.Height) / 2.5;
+ else return (Window.Current.Bounds.Width) / 2.5;
+ }
+ }
+ public double PicWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 2;
+ else return Window.Current.Bounds.Height / 2;
+ }
+ }
+ public ImageBrush Background { set; get; }
+ public string SongName { set; get; }
public string ArtistName { set; get; }
public string AlbumName { set; get; }
- public string Musicindex { set; get; }
+ public string Count{ set; get; }
+ public string FolderName { get; set; }
- public musiclist(string songName, string artistName, string albumName, string index)
+ public MusicList(string songName, string artistName, string albumName, ImageBrush background)
{
this.SongName = songName;
this.ArtistName = artistName;
this.AlbumName = albumName;
- this.Musicindex = index;
+ this.Background = background;
+ }
+
+ public MusicList(string folderName, int count)
+ {
+ this.FolderName = folderName;
+ this.Count = count.ToString();
+ }
+
+
+ private bool IsVertical()
+ {
+ if (Window.Current.Bounds.Height > Window.Current.Bounds.Width) return true;
+ else return false;
}
}
+
}
diff --git a/File360/packages.config b/File360/packages.config
@@ -1,4 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
+ <package id="Coding4Fun.Toolkit.Controls" version="2.1.7" targetFramework="wpa81" />
+ <package id="TagLib.Portable" version="1.0.3" targetFramework="wpa81" />
+ <package id="WinRTXamlToolkit.WindowsPhone" version="1.8.1.0" targetFramework="wpa81" />
+ <package id="WriteableBitmapEx" version="1.5.0.0" targetFramework="wpa81" />
</packages>
\ No newline at end of file
diff --git a/File360/picturelist.cs b/File360/picturelist.cs
@@ -2,10 +2,32 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Threading.Tasks;
+using Windows.UI.Xaml.Media;
namespace File360
{
- class picturelist<T>
+ class PictureList
{
+
+ public ImageBrush Preview { set; get; }
+ public string PicName { set; get; }
+ public DateTime PicDate { set; get; } //pic created date.
+ public string Count { set; get; }
+ public string FolderName { get; set; }
+
+ public PictureList(string picName, DateTime picDate, ImageBrush preview)
+ {
+ this.PicName = picName;
+ this.PicDate = picDate;
+ this.Preview = preview;
+ }
+
+ public PictureList(string folderName, int count)
+ {
+ this.FolderName = folderName;
+ this.Count = count.ToString();
+ }
}
+
}
diff --git a/File360/sdlist.cs b/File360/sdlist.cs
@@ -1,22 +1,167 @@
-using System.Text;
-using Microsoft.Phone.Storage;
-
+using System;
+using System.Collections.ObjectModel;
+using Windows.Foundation;
+using Windows.Storage.FileProperties;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Media.Imaging;
namespace File360
{
- class sdlist
+ public class sdlist
{
+ public ImageBrush Background { set; get; }
+
+ public double BarHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 7.3;
+ else return Window.Current.Bounds.Width / 7.3;
+ }
+ }
+
+
+
+ public double PopupHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 2;
+ else return Window.Current.Bounds.Width / 2;
+ }
+ }
+
+ public string Name { set; get; }
+
+ public string Image { set; get; }
+
+ public string Count { set; get; }
- public string Name
+ public bool IsVisible { set; get; }
+
+
+ public double VidHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 4;
+ else return Window.Current.Bounds.Width / 4;
+ }
+ }
+ public double VidWidth
{
- set;
- get;
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 0.95;
+ else return Window.Current.Bounds.Height / 0.95;
+ }
}
- public string Name2 { set; get; }
- public sdlist(string name, string FImage)
+ public double PicHeight
+ {
+ get
+ {
+ if (IsVertical()) return (Window.Current.Bounds.Height - 20) / 3;
+ else return (Window.Current.Bounds.Width -20) / 3;
+ }
+ }
+ public double PicWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 2;
+ else return Window.Current.Bounds.Height / 2;
+ }
+ }
+ public double ImageHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 3.5;
+ else return Window.Current.Bounds.Width / 3.5;
+ }
+ }
+ public double ImageWidth
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Width / 2.2;
+ else return Window.Current.Bounds.Height / 2.2;
+ }
+ }
+ public double Space
+ {
+ get { return Window.Current.Bounds.Height / 600; }
+ }
+ public double GridHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 6;
+ else return Window.Current.Bounds.Width / 6;
+ }
+ }
+ public double GridWidth
+ {
+ get
+ {
+ if (IsVertical()) return (Window.Current.Bounds.Width ) / 3;
+ else return (Window.Current.Bounds.Height) / 3;
+ }
+ }
+ public double ListHeight
+ {
+ get
+ {
+ if (IsVertical()) return Window.Current.Bounds.Height / 8;
+ else return Window.Current.Bounds.Width / 8;
+ }
+ }
+ public double Width
+ {
+ get { return Window.Current.Bounds.Width; }
+ }
+
+
+ public sdlist(string name, string image)
{
this.Name = name;
- this.Name2 = FImage;
+ this.Image = image;
+ if (image == "f") IsVisible = false;
+ else IsVisible = true;
+ }
+
+string Name;
+string Image;
+
+ public sdlist(string name, string image, string count)
+ {
+ this.Name = name;
+ this.Image = image;
+ this.Count = count;
+ }
+ public sdlist(string name, StorageItemThumbnail background, string count)
+ {
+ ImageBrush im = new ImageBrush();
+ BitmapImage bm = new BitmapImage();
+ bm.SetSource(background);
+ im.ImageSource = bm;
+ im.Stretch = Stretch.UniformToFill;
+ this.Name = name;
+ this.Background = im;
+ this.Count = count;
+ }
+ public sdlist(string name, ImageBrush background, string count)
+ {
+ this.Name = name;
+ this.Background = background;
+ this.Count = count;
+ }
+ private bool IsVertical()
+ {
+ if (Window.Current.Bounds.Height > Window.Current.Bounds.Width) return true;
+ else return false;
}
}
}