--- a/src/FingersDance.ActionFactory/ActionFactory.cs Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.ActionFactory/ActionFactory.cs Wed Oct 07 17:16:46 2009 +0200
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
-using FingersDance.Control.Player;
namespace FingersDance.ActionFactory
{
--- a/src/FingersDance.ActionFactory/ActionGenerator.cs Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.ActionFactory/ActionGenerator.cs Wed Oct 07 17:16:46 2009 +0200
@@ -17,6 +17,7 @@
actionDict.Add("ActionOpenMedia", typeof(FingersDance.Actions.ActionOpenMedia));
actionDict.Add("ActionStopMedia", typeof(FingersDance.Actions.ActionStopMedia));
+ actionDict.Add("ActionStartOrEndAnnotation", typeof(FingersDance.Actions.ActionStartOrEndAnnotation));
actionDict.Add("ActionAddAnnotation", typeof(FingersDance.Actions.ActionAddAnnotation));
}
--- a/src/FingersDance.ActionFactory/FingersDance.ActionFactory.csproj Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.ActionFactory/FingersDance.ActionFactory.csproj Wed Oct 07 17:16:46 2009 +0200
@@ -3,7 +3,7 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProductVersion>9.0.21022</ProductVersion>
+ <ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C7B905EA-0678-4DA0-8EF8-7F9CBD22818E}</ProjectGuid>
<OutputType>Library</OutputType>
@@ -74,10 +74,6 @@
<Project>{1E80D5A1-C45C-443B-8992-4A4D78D280FC}</Project>
<Name>FingersDance.Actions</Name>
</ProjectReference>
- <ProjectReference Include="..\FingersDance.Control.Player\FingersDance.Control.Player.csproj">
- <Project>{D5625AA4-362F-4E46-9916-65F3B173ECBE}</Project>
- <Name>FingersDance.Control.Player</Name>
- </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
--- a/src/FingersDance.Actions/ActionAddAnnotation.cs Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Actions/ActionAddAnnotation.cs Wed Oct 07 17:16:46 2009 +0200
@@ -4,6 +4,7 @@
using System.Text;
using FingersDance.Control.TimeLine;
+using FingersDance.ViewModels;
namespace FingersDance.Actions
{
@@ -11,6 +12,7 @@
{
private string _Text = "";
private UserControlTimeLine myTimeline;
+ private AnnotationViewModel myAnnotationViewModel;
public ActionAddAnnotation()
{
@@ -22,15 +24,16 @@
_Text = text;
}
- public ActionAddAnnotation(UserControlTimeLine uct)
+ public ActionAddAnnotation(List<Object> args)
{
- myTimeline = uct;
+ myTimeline = (UserControlTimeLine)args[0];
+ myAnnotationViewModel = (AnnotationViewModel)args[1];
}
public void Execute()
{
if (myTimeline != null)
- myTimeline.addAnnotation();
+ myTimeline.addAnnotation(myAnnotationViewModel);
}
}
}
--- a/src/FingersDance.Actions/FingersDance.Actions.csproj Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Actions/FingersDance.Actions.csproj Wed Oct 07 17:16:46 2009 +0200
@@ -82,6 +82,7 @@
<Compile Include="ActionOpenMedia.cs" />
<Compile Include="ActionPlayMedia.cs" />
<Compile Include="ActionShowMessage.cs" />
+ <Compile Include="ActionStartOrEndAnnotation.cs" />
<Compile Include="ActionStopMedia.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Properties\Resources.resx">
@@ -121,6 +122,10 @@
<Project>{2BCEE1BF-D3AC-478C-A26B-DFDB7420E965}</Project>
<Name>FingersDance.Control.TimeLine</Name>
</ProjectReference>
+ <ProjectReference Include="..\FingersDance.ViewModel\FingersDance.ViewModels.csproj">
+ <Project>{E81BB080-0598-43AC-90CE-54D6570C4E9E}</Project>
+ <Name>FingersDance.ViewModels</Name>
+ </ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
--- a/src/FingersDance.Control.Player/FingersDance.Control.Player.csproj Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Control.Player/FingersDance.Control.Player.csproj Wed Oct 07 17:16:46 2009 +0200
@@ -142,6 +142,10 @@
<Resource Include="Resources\WindowBackground.jpg" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\FingersDance.ActionFactory\FingersDance.ActionFactory.csproj">
+ <Project>{C7B905EA-0678-4DA0-8EF8-7F9CBD22818E}</Project>
+ <Name>FingersDance.ActionFactory</Name>
+ </ProjectReference>
<ProjectReference Include="..\FingersDance.Actions\FingersDance.Actions.csproj">
<Project>{1E80D5A1-C45C-443B-8992-4A4D78D280FC}</Project>
<Name>FingersDance.Actions</Name>
--- a/src/FingersDance.Control.Player/UserControlPlayer.xaml Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Control.Player/UserControlPlayer.xaml Wed Oct 07 17:16:46 2009 +0200
@@ -125,20 +125,18 @@
</Style.BasedOn>
</Style>
</UserControl.Resources>
- <Grid x:Name="LayoutRoot" Width="{Binding ActualWidth, ElementName=UserControl, Mode=Default}" Height="{Binding ActualHeight, ElementName=UserControl, Mode=Default}" Background="{x:Null}"
- AllowDrop="True">
+ <Grid x:Name="LayoutRoot" Width="{Binding ActualWidth, ElementName=UserControl, Mode=Default}" Height="{Binding ActualHeight, ElementName=UserControl, Mode=Default}" Background="{x:Null}">
<Viewbox Margin="0,0,0,0" Width="{Binding ActualWidth, ElementName=UserControl, Mode=Default}" Height="{Binding ActualHeight, ElementName=UserControl, Mode=Default}" Stretch="Uniform" AllowDrop="True">
- <Grid Width="560" Height="400" HorizontalAlignment="Left" x:Name="GridPlayer" AllowDrop="True">
+ <Grid Width="560" Height="400" HorizontalAlignment="Left" x:Name="GridPlayer">
<MediaElement x:Name="MediaElementVideo" MediaOpened="MediaElementVideo_MediaOpened" Stretch="Fill" ScrubbingEnabled="False" StretchDirection="Both" Margin="0,0,50,0" />
<Custom:SurfaceButton x:Name="Rewind_area" Content="" ContactDown="ButtonRewind_ContactDown"
Click="ButtonRewind_Click" Foreground="{x:Null}" Background="#FFFFFFFF" BorderBrush="{x:Null}"
- Opacity="0" Width="72" HorizontalAlignment="Left" Style="{DynamicResource FingersDance.Control.PlayerButton}" Margin="0,0,0,196"/>
+ Opacity="0" Width="72" HorizontalAlignment="Left" Style="{DynamicResource FingersDance.Control.PlayerButton}" Margin="0,0,0,0"/>
<Custom:SurfaceButton x:Name="Fast_Forward_area" Content="" ContactDown="ButtonFastForward_ContactDown" Click="ButtonFastForward_Click"
Foreground="{x:Null}" Background="#FFFFFFFF" BorderBrush="{x:Null}" Opacity="0" Width="72" HorizontalAlignment="Right"
- Style="{DynamicResource FingersDance.Control.PlayerButton}" Margin="0,0,54,196"/>
+ Style="{DynamicResource FingersDance.Control.PlayerButton}" Margin="0,0,54,0"/>
<Custom:SurfaceButton x:Name="Play_Pause_area" ContactDown="ButtonPlayPause_ContactDown" Click="ButtonPlayPause_Click" Foreground="{x:Null}"
- Background="#FFFFFFFF" BorderBrush="{x:Null}" Margin="72,0,126,196" Style="{DynamicResource FingersDance.Control.PlayerButton}" Opacity="0"
- AllowDrop="True" />
+ Background="#FFFFFFFF" BorderBrush="{x:Null}" Margin="72,0,126,0" Style="{DynamicResource FingersDance.Control.PlayerButton}" Opacity="0"/>
<StackPanel Opacity="1" HorizontalAlignment="Right" Width="50" Background="#FF0046F6" x:Name="StackPanelAnnotation" VerticalAlignment="Bottom" Height="Auto">
<Rectangle Width="50" Height="50" Fill="#FFFFFFFF" Stroke="#FF000000"/>
<Rectangle Width="50" Height="50" Fill="#FFFFFFFF" Stroke="#FF000000"/>
--- a/src/FingersDance.Control.Player/UserControlPlayer.xaml.cs Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Control.Player/UserControlPlayer.xaml.cs Wed Oct 07 17:16:46 2009 +0200
@@ -10,8 +10,12 @@
using System.Windows.Navigation;
using System.ComponentModel;
using System.Reflection;
+using System.Collections.Generic;
using Microsoft.Surface.Presentation;
+using Microsoft.Surface.Presentation.Controls;
+using FingersDance.ActionFactory;
+using FingersDance.Actions;
using FingersDance.Views;
using FingersDance.ViewModels;
@@ -179,13 +183,13 @@
private void Play_Pause_area_DragEnter(object sender, SurfaceDragDropEventArgs e)
{
//Console.WriteLine("Enter");
- //Play_Pause_area.Opacity = 0.5;
+ Play_Pause_area.Opacity = 0.5;
}
private void Play_Pause_area_DragLeave(object sender, SurfaceDragDropEventArgs e)
{
//Console.WriteLine("Leave");
- //Play_Pause_area.Opacity = 0;
+ Play_Pause_area.Opacity = 0;
}
private void Play_Pause_area_DragOver(object sender, SurfaceDragDropEventArgs e)
@@ -196,11 +200,36 @@
private void Play_Pause_area_Drop(object sender, SurfaceDragDropEventArgs e)
{
//Console.WriteLine("Drop");
+ Play_Pause_area.Opacity = 0;
// e.Cursor.Visual is the ContentControl, so its Content is the dragged TimelineAnnotationView
AnnotationViewModel annotationDataVM = (AnnotationViewModel)((TimelineAnnotationView)((ContentControl)e.Cursor.Visual).Content).DataContext;
int nbSeconds = (int)annotationDataVM.TcBegin;
int nbMilliSec = (int)((annotationDataVM.TcBegin * 1000)%1000);
MediaElementVideo.Position = new TimeSpan(0, 0, 0, nbSeconds, nbMilliSec);
+
+
+ // If the TimelineAnnotationView comes from a user control different from the current one,
+ // it means that we want to add the annotation to the current list.
+ // So we generate the ActionAddAnnotation
+ // e.Cursor.DragSource is the SurfaceListBox where the drag started from
+ SurfaceListBox slb = (SurfaceListBox)e.Cursor.DragSource;
+ // We get the instance of the UserControlSyncSource
+ UserControl syncSrc = (UserControl)((Grid)((Grid)this.Parent).Parent).Parent;
+ // and its UserControlTimeline
+ UserControl tl = (UserControl)((Grid)((Grid)syncSrc.Content).Children[0]).Children[0];
+ if (((Grid)((UserControl)((Grid)slb.Parent).Parent).Parent).Parent != tl)
+ {
+ // Now we build the action arguments : a list holding the timeline and the annotation view models
+ List<Object> actionsArgs = new List<Object>();
+ actionsArgs.Add(tl);
+ actionsArgs.Add(annotationDataVM);
+
+ ActionGenerator ag = new ActionGenerator();
+ ActionBase ab = ag.GetAction("ActionAddAnnotation", actionsArgs);
+ if (ab != null)
+ ab.Execute();
+ }
+
}
}
}
\ No newline at end of file
--- a/src/FingersDance.Control.TimeLine/UserControlTimeLine.xaml.cs Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Control.TimeLine/UserControlTimeLine.xaml.cs Wed Oct 07 17:16:46 2009 +0200
@@ -14,6 +14,7 @@
using FingersDance.Data;
using FingersDance.ViewModels;
+using FingersDance.Views;
namespace FingersDance.Control.TimeLine
{
@@ -118,7 +119,10 @@
CuttingVM = new CuttingViewModel(cut, AnnotWidth);
tv.DataContext = CuttingVM;
- slider_ContactTapGesture(this,null);
+ UserControlTimeLine_SizeChanged(null, null);
+
+ slider_ContactTapGesture(this, null);
+
}
@@ -182,8 +186,7 @@
DragStarted(this, new EventArgs());
}
- private void sliderPosition_DragCompleted(
- object sender, DragCompletedEventArgs e)
+ private void sliderPosition_DragCompleted(object sender, DragCompletedEventArgs e)
{
finishedDragging = true;
OnDragCompleted();
@@ -196,10 +199,47 @@
private void slider_ContactTapGesture(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
{
- //addAnnotation();
+ //startOrEndAnnotation();
}
- public void addAnnotation()
+ public void addAnnotation(AnnotationViewModel avm)
+ {
+ Console.WriteLine("addAnnotation = " + avm.TcBegin + ", " + avm.Dur + ", " + avm.GestureType);
+ Boolean annotOk = true;
+ // We check if the annotation's begin and end timecodes allow a new annotation creation
+ if (CuttingVM != null && AnnotWaiting == false)
+ {
+ foreach (Annotation a in AnnotList)
+ {
+ //Console.WriteLine("a.TcBegin = " + a.TcBegin + ", avm.TcBegin = " + avm.TcBegin + ", tcOut = " + (a.TcBegin + a.Dur));
+ // Check begin TC
+ if (a.TcBegin <= avm.TcBegin && avm.TcBegin <= (a.TcBegin + a.Dur))
+ {
+ annotOk = false;
+ }
+ // Check end tc and if the new annotation will not cover any other
+ float endTC = avm.TcBegin + avm.Dur;
+ //Console.WriteLine("a.TcBegin = " + a.TcBegin + ", tcOut = " + (a.TcBegin + a.Dur) + ", AnnotTcBegin = " + AnnotTcBegin + ", currentTC = " + currentTC);
+ if (a.TcBegin <= endTC && endTC <= (a.TcBegin + a.Dur) || (avm.TcBegin < a.TcBegin && (a.TcBegin + a.Dur) < endTC))
+ {
+ annotOk = false;
+ }
+ }
+ // If everything's fine, we create the new one
+ if (annotOk == true)
+ {
+ AnnotList.Add(new Annotation(avm.TcBegin, avm.Dur, avm.GestureType));
+ CuttingVM.setListFromAnnotations(AnnotList, AnnotWidth);
+ tv.DataContext = null;
+ tv.DataContext = CuttingVM;
+ AnnotWaiting = false;
+ }
+
+ }
+
+ }
+
+ public void startOrEndAnnotation()
{
Boolean annotOk = true;
// We open a new annotation
--- a/src/FingersDance.Views/FingersDance.Views.csproj Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Views/FingersDance.Views.csproj Wed Oct 07 17:16:46 2009 +0200
@@ -123,6 +123,10 @@
</Page>
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\FingersDance.Data\FingersDance.Data.csproj">
+ <Project>{EAF384DB-2AE4-4132-839D-60F9DAFDEAD8}</Project>
+ <Name>FingersDance.Data</Name>
+ </ProjectReference>
<ProjectReference Include="..\FingersDance.ViewModel\FingersDance.ViewModels.csproj">
<Project>{E81BB080-0598-43AC-90CE-54D6570C4E9E}</Project>
<Name>FingersDance.ViewModels</Name>
--- a/src/FingersDance.Views/TimelineView.xaml.cs Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance.Views/TimelineView.xaml.cs Wed Oct 07 17:16:46 2009 +0200
@@ -14,8 +14,9 @@
using Microsoft.Surface.Presentation.Controls;
using Microsoft.Surface.Presentation;
+using FingersDance.Data;
+using FingersDance.ViewModels;
using FingersDance.Views;
-using FingersDance.ViewModels;
namespace FingersDance.Views
{
--- a/src/FingersDance/Resources/menu.xml Tue Oct 06 14:02:09 2009 +0200
+++ b/src/FingersDance/Resources/menu.xml Wed Oct 07 17:16:46 2009 +0200
@@ -68,13 +68,13 @@
<Name>Saut 1</Name>
<Items/>
<Ressource>FingersDanceAnnotationButtonNiveau3</Ressource>
- <Action>ActionAddAnnotation</Action>
+ <Action>ActionStartOrEndAnnotation</Action>
</Item>
<Item>
<Name>Pirouette 2</Name>
<Items/>
<Ressource>FingersDanceAnnotationButtonNiveau3</Ressource>
- <Action>ActionAddAnnotation</Action>
+ <Action>ActionStartOrEndAnnotation</Action>
</Item>
</Items>
<Ressource>FingersDanceAnnotationButtonNiveau2</Ressource>