src/FingersDance.Control.TimeLine/UserControlTimeLine.xaml.cs
author cavaliet
Thu, 17 Sep 2009 17:25:05 +0200
changeset 75 99d003723474
parent 74 7ce946833eae
child 99 5a49507c8159
permissions -rw-r--r--
data binding second step. we can add annotation by clicking on menu buttons or timeline.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     1
using System;
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
     2
using System.Collections.Generic;
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     3
using System.IO;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     4
using System.Net;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     5
using System.Windows;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     6
using System.Windows.Controls;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     7
using System.Windows.Data;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     8
using System.Windows.Media;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
     9
using System.Windows.Media.Animation;
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    10
using System.Windows.Navigation;
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    11
using System.Windows.Controls.Primitives;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    12
using Microsoft.Surface.Presentation.Controls;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    13
using System.Windows.Threading;
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    14
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
    15
using FingersDance.Data;
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
    16
using FingersDance.ViewModels;
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
    17
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    18
namespace FingersDance.Control.TimeLine
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    19
{
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    20
	public partial class UserControlTimeLine
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    21
    {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    22
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    23
        #region Variables
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    24
        private DispatcherTimer timer;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    25
        private bool isDragging = false;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    26
        private bool finishedDragging = false;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    27
        #endregion
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    28
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    29
        public event EventHandler DragStarted;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    30
        public event EventHandler DragCompleted;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    31
        public event EventHandler TimerTick;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    32
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
    33
        private List<Annotation> annotList = new List<Annotation>();
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
    34
        private float annotWidth = 40;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
    35
        private CuttingViewModel cutvm;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
    36
        private int numAnnot = 1;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
    37
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    38
        #region Properties
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    39
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    40
        public SurfaceSlider Slider
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    41
        {
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    42
            get
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    43
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    44
                return slider;
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    45
            }
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    46
            set
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    47
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    48
                slider = value;
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    49
            }
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    50
        }
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    51
        
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    52
        public bool IsDragging
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    53
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    54
            get
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    55
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    56
                return isDragging;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    57
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    58
            set
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    59
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    60
                isDragging = value;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    61
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    62
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    63
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    64
        public bool FinishedDragging
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    65
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    66
            get
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    67
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    68
                return finishedDragging;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    69
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    70
            set
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    71
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    72
                finishedDragging = value;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    73
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    74
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    75
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    76
        public DispatcherTimer Timer
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    77
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    78
            get
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    79
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    80
                return timer;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    81
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    82
            set
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    83
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    84
                timer = value;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    85
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    86
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    87
        #endregion
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    88
        
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    89
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    90
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
    91
        
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    92
		public UserControlTimeLine()
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
    93
		{   
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    94
			this.InitializeComponent();
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    95
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    96
			// Insert code required on object creation below this point.
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
    97
            
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    98
		}
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
    99
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   100
        public void initslider(double totalmilliseconds)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   101
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   102
            slider.Maximum = totalmilliseconds;
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
   103
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
   104
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
   105
            // TEMP FOR DATA BINDING
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   106
            annotList = new List<Annotation>();
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
   107
            annotList.Add(new Annotation(0, 10, "Axe Cam 1"));
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   108
            annotList.Add(new Annotation(20 - (1 * annotWidth), 30, "Mvt Cam 2"));
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   109
            annotList.Add(new Annotation(50 - (2 * annotWidth), 60, "Saut 3"));
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   110
            annotList.Add(new Annotation(100 - (3 * annotWidth), 20, "Saut 4"));
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   111
            annotList.Add(new Annotation(120 - (4 * annotWidth), 50, "Saut 5"));
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
   112
            Cutting cut = new Cutting("titre de cutting", annotList);
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   113
            cutvm = new CuttingViewModel(cut);
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   114
            tv.DataContext = cutvm;
69
a4c44555f205 First Data binding for annotations and timeline
cavaliet
parents: 34
diff changeset
   115
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   116
            numAnnot = 6;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   117
            slider_ContactTapGesture(this,null);
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   118
            /*
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   119
            cutvm.AnnotList.Add(new AnnotationViewModel(new Annotation(180 - (5 * annotWidth), 10, "6")));
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   120
            tv.DataContext = null;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   121
            tv.DataContext = cutvm;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   122
            numAnnot = 7;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   123
            */
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   124
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   125
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   126
        #region Timer
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   127
        public void initTimer()
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   128
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   129
            timer = new DispatcherTimer();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   130
            timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   131
            timer.Tick += new EventHandler(timer_Tick);
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   132
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   133
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   134
        public void timerStart()
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   135
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   136
            if (timer != null)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   137
                timer.Start();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   138
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   139
        void timer_Tick(object sender, EventArgs e)
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
   140
        {
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   141
            OnTimerTick();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   142
            if (!isDragging)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   143
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   144
                //slider.Value = media.Position.TotalMilliseconds;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   145
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   146
            if (finishedDragging)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   147
            {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   148
                //int SliderValue = (int)slider.Value;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   149
                //TimeSpan ts = new TimeSpan(0, 0, 0, 0, SliderValue);
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   150
               // media.Position = ts;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   151
               // media.Play();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   152
               // isDragging = false;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   153
                //finishedDragging = false;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   154
            }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   155
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   156
        protected virtual void OnTimerTick()
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   157
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   158
            if (TimerTick != null)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   159
                TimerTick(this, new EventArgs());
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
   160
        }
34
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   161
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   162
        #endregion
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   163
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   164
        private void sliderPosition_DragStarted(
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   165
            object sender, DragStartedEventArgs e)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   166
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   167
            isDragging = true;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   168
            OnDragStarted();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   169
           // media.Pause();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   170
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   171
        protected virtual void OnDragStarted()
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   172
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   173
            if (DragStarted != null)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   174
                DragStarted(this, new EventArgs());
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   175
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   176
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   177
        private void sliderPosition_DragCompleted(
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   178
            object sender, DragCompletedEventArgs e)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   179
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   180
            finishedDragging = true;
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   181
            OnDragCompleted();
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   182
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   183
        protected virtual void OnDragCompleted()
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   184
        {
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   185
            if (DragCompleted != null)
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   186
                DragCompleted(this, new EventArgs());
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   187
        }
9e222810f5b5 User Control Player
sarias
parents: 10
diff changeset
   188
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   189
        private void slider_ContactTapGesture(object sender, Microsoft.Surface.Presentation.ContactEventArgs e)
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   190
        {
75
99d003723474 data binding second step. we can add annotation by clicking on menu buttons or timeline.
cavaliet
parents: 74
diff changeset
   191
            addAnnotation();
99d003723474 data binding second step. we can add annotation by clicking on menu buttons or timeline.
cavaliet
parents: 74
diff changeset
   192
        }
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   193
75
99d003723474 data binding second step. we can add annotation by clicking on menu buttons or timeline.
cavaliet
parents: 74
diff changeset
   194
        public void addAnnotation()
99d003723474 data binding second step. we can add annotation by clicking on menu buttons or timeline.
cavaliet
parents: 74
diff changeset
   195
        {
99d003723474 data binding second step. we can add annotation by clicking on menu buttons or timeline.
cavaliet
parents: 74
diff changeset
   196
            cutvm.AnnotList.Add(new AnnotationViewModel(new Annotation(180 + (numAnnot - 6) * 20 - ((numAnnot - 1) * annotWidth), 10, numAnnot.ToString())));
74
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   197
            tv.DataContext = null;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   198
            tv.DataContext = cutvm;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   199
            numAnnot++;
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   200
        }
7ce946833eae First step of data binding where we can add an annotation by clicking on the timeline
cavaliet
parents: 69
diff changeset
   201
10
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
   202
	}
e8bfe1102e03 Modif sur ControlPlayer pour les videos.
sarias
parents:
diff changeset
   203
}