/
RingtoneItem.xaml.cs
149 lines (123 loc) · 4.39 KB
/
RingtoneItem.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using Microsoft.Phone.Tasks;
using XmasRingtones.ViewModel;
namespace XmasRingtones
{
public partial class RingtoneItem : UserControl
{
private RingtoneItemViewModel _viewModel;
public Ringtone Source;
public RingtoneItem()
{
InitializeComponent();
_viewModel = (RingtoneItemViewModel)DataContext;
}
public RingtoneItem(Ringtone ringtone, bool isFavorite = false)
: this()
{
Source = ringtone;
_viewModel.SetRingtone(ringtone.Source);
_viewModel.Title = ringtone.Title;
_viewModel.Icon = ringtone.Icon;
if (isFavorite) IsFavorite = true;
}
public void PlayPause()
{
_viewModel.PlayPause();
}
public RingtoneItemViewModel.PlayState PlayingState
{
get { return _viewModel.PlayingState; }
}
public bool IsFavorite
{
get { return _viewModel.IsFavorite; }
set
{
_viewModel.SetFavorite(value);
}
}
#region event
public delegate void PlayPauseButtonOnClickEventHandler();
public event PlayPauseButtonOnClickEventHandler PlayPauseButtonClick;
private void OnPlayPauseButtonClick()
{
PlayPauseButtonOnClickEventHandler handler = PlayPauseButtonClick;
if (handler != null) handler();
}
public delegate void FavoriteButtonClickEventHandler(object sender);
public event FavoriteButtonClickEventHandler FavoriteButonClick;
private void OnFavoriteButonClick()
{
FavoriteButtonClickEventHandler handler = FavoriteButonClick;
if (handler != null) handler(this);
}
private void saveRingtoneChooser_Completed(object sender, TaskEventArgs e)
{
switch (e.TaskResult)
{
//Logic for when the ringtone was saved successfully
case TaskResult.OK:
// MessageBox.Show("Ringtone saved.");
break;
//Logic for when the task was cancelled by the user
case TaskResult.Cancel:
// MessageBox.Show("Save cancelled.");
break;
//Logic for when the ringtone could not be saved
case TaskResult.None:
MessageBox.Show("Ringtone could not be saved.");
break;
}
}
#endregion
private bool _playPauseDown = false;
private void PlayPause_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_playPauseDown = true;
}
private void PlayPause_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_playPauseDown)
{
_playPauseDown = false;
if (PlayingState == RingtoneItemViewModel.PlayState.Pause) OnPlayPauseButtonClick();
PlayPause();
}
}
private bool _favoriteDown = false;
private void Favorite_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_favoriteDown = true;
}
private void Favorite_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_favoriteDown)
{
_favoriteDown = false;
_viewModel.SetFavorite(!IsFavorite);
OnFavoriteButonClick();
}
}
private bool _setRingtoneDown = false;
private void SetRingtone_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_setRingtoneDown = true;
}
private void SetRingtone_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if(_setRingtoneDown)
{
_setRingtoneDown = false;
var saveRingtoneChooser = new SaveRingtoneTask();
saveRingtoneChooser.Completed += saveRingtoneChooser_Completed;
saveRingtoneChooser.Source = new Uri("appdata:" + Source.Source);
saveRingtoneChooser.DisplayName = Source.Title;
saveRingtoneChooser.Show();
}
}
}
}