root / trunk / Pithos.Client.WPF / Shell / PithosBalloon.xaml.cs @ b449fa49
History | View | Annotate | Download (4.1 kB)
1 | fb9d6e00 | Panagiotis Kanavos | using System; |
---|---|---|---|
2 | fb9d6e00 | Panagiotis Kanavos | using System.Collections.Generic; |
3 | fb9d6e00 | Panagiotis Kanavos | using System.Linq; |
4 | fb9d6e00 | Panagiotis Kanavos | using System.Text; |
5 | fb9d6e00 | Panagiotis Kanavos | using System.Windows; |
6 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Controls; |
7 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Controls.Primitives; |
8 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Data; |
9 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Documents; |
10 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Input; |
11 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Media; |
12 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Media.Imaging; |
13 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Navigation; |
14 | fb9d6e00 | Panagiotis Kanavos | using System.Windows.Shapes; |
15 | fb9d6e00 | Panagiotis Kanavos | using Hardcodet.Wpf.TaskbarNotification; |
16 | fb9d6e00 | Panagiotis Kanavos | |
17 | fb9d6e00 | Panagiotis Kanavos | namespace Pithos.Client.WPF.Shell |
18 | fb9d6e00 | Panagiotis Kanavos | { |
19 | fb9d6e00 | Panagiotis Kanavos | /// <summary> |
20 | fb9d6e00 | Panagiotis Kanavos | /// Interaction logic for PithosBalloon.xaml |
21 | fb9d6e00 | Panagiotis Kanavos | /// </summary> |
22 | fb9d6e00 | Panagiotis Kanavos | public partial class PithosBalloon : UserControl |
23 | fb9d6e00 | Panagiotis Kanavos | { |
24 | fb9d6e00 | Panagiotis Kanavos | private bool isClosing = false; |
25 | fb9d6e00 | Panagiotis Kanavos | |
26 | 2dc6f765 | Panagiotis Kanavos | #region Message dependency property |
27 | fb9d6e00 | Panagiotis Kanavos | |
28 | 2dc6f765 | Panagiotis Kanavos | public static readonly DependencyProperty MessageProperty = |
29 | 2dc6f765 | Panagiotis Kanavos | DependencyProperty.Register("Message", |
30 | 2dc6f765 | Panagiotis Kanavos | typeof (string), |
31 | 2dc6f765 | Panagiotis Kanavos | typeof (PithosBalloon), |
32 | 2dc6f765 | Panagiotis Kanavos | new FrameworkPropertyMetadata("")); |
33 | 2dc6f765 | Panagiotis Kanavos | public static readonly DependencyProperty TitleProperty = |
34 | 2dc6f765 | Panagiotis Kanavos | DependencyProperty.Register("Title", |
35 | fb9d6e00 | Panagiotis Kanavos | typeof (string), |
36 | fb9d6e00 | Panagiotis Kanavos | typeof (PithosBalloon), |
37 | fb9d6e00 | Panagiotis Kanavos | new FrameworkPropertyMetadata("")); |
38 | 2dc6f765 | Panagiotis Kanavos | public static readonly DependencyProperty IconProperty = |
39 | 2dc6f765 | Panagiotis Kanavos | DependencyProperty.Register("Icon", |
40 | 2dc6f765 | Panagiotis Kanavos | typeof (BalloonIcon), |
41 | 2dc6f765 | Panagiotis Kanavos | typeof (PithosBalloon), |
42 | 2dc6f765 | Panagiotis Kanavos | new FrameworkPropertyMetadata(BalloonIcon.None)); |
43 | fb9d6e00 | Panagiotis Kanavos | |
44 | 2dc6f765 | Panagiotis Kanavos | public string Message |
45 | fb9d6e00 | Panagiotis Kanavos | { |
46 | 2dc6f765 | Panagiotis Kanavos | get { return (string) GetValue(MessageProperty); } |
47 | 2dc6f765 | Panagiotis Kanavos | set { SetValue(MessageProperty, value); } |
48 | 2dc6f765 | Panagiotis Kanavos | } |
49 | 2dc6f765 | Panagiotis Kanavos | |
50 | 2dc6f765 | Panagiotis Kanavos | public BalloonIcon Icon |
51 | 2dc6f765 | Panagiotis Kanavos | { |
52 | 2dc6f765 | Panagiotis Kanavos | get { return (BalloonIcon) GetValue(IconProperty); } |
53 | 2dc6f765 | Panagiotis Kanavos | set { |
54 | 2dc6f765 | Panagiotis Kanavos | SetValue(IconProperty, value); |
55 | 2dc6f765 | Panagiotis Kanavos | } |
56 | 2dc6f765 | Panagiotis Kanavos | } |
57 | 2dc6f765 | Panagiotis Kanavos | |
58 | 2dc6f765 | Panagiotis Kanavos | public string Title |
59 | 2dc6f765 | Panagiotis Kanavos | { |
60 | 2dc6f765 | Panagiotis Kanavos | get { return (string) GetValue(TitleProperty); } |
61 | 2dc6f765 | Panagiotis Kanavos | set { SetValue(TitleProperty, value); } |
62 | fb9d6e00 | Panagiotis Kanavos | } |
63 | fb9d6e00 | Panagiotis Kanavos | |
64 | 2dc6f765 | Panagiotis Kanavos | |
65 | 2dc6f765 | Panagiotis Kanavos | |
66 | fb9d6e00 | Panagiotis Kanavos | #endregion |
67 | fb9d6e00 | Panagiotis Kanavos | |
68 | fb9d6e00 | Panagiotis Kanavos | |
69 | fb9d6e00 | Panagiotis Kanavos | public PithosBalloon() |
70 | fb9d6e00 | Panagiotis Kanavos | { |
71 | fb9d6e00 | Panagiotis Kanavos | InitializeComponent(); |
72 | 2dc6f765 | Panagiotis Kanavos | this.DataContext = this; |
73 | fb9d6e00 | Panagiotis Kanavos | TaskbarIcon.AddBalloonClosingHandler(this, OnBalloonClosing); |
74 | fb9d6e00 | Panagiotis Kanavos | } |
75 | fb9d6e00 | Panagiotis Kanavos | |
76 | fb9d6e00 | Panagiotis Kanavos | |
77 | fb9d6e00 | Panagiotis Kanavos | /// <summary> |
78 | fb9d6e00 | Panagiotis Kanavos | /// By subscribing to the <see cref="TaskbarIcon.BalloonClosingEvent"/> |
79 | fb9d6e00 | Panagiotis Kanavos | /// and setting the "Handled" property to true, we suppress the popup |
80 | fb9d6e00 | Panagiotis Kanavos | /// from being closed in order to display the fade-out animation. |
81 | fb9d6e00 | Panagiotis Kanavos | /// </summary> |
82 | fb9d6e00 | Panagiotis Kanavos | private void OnBalloonClosing(object sender, RoutedEventArgs e) |
83 | fb9d6e00 | Panagiotis Kanavos | { |
84 | fb9d6e00 | Panagiotis Kanavos | e.Handled = true; |
85 | fb9d6e00 | Panagiotis Kanavos | isClosing = true; |
86 | fb9d6e00 | Panagiotis Kanavos | } |
87 | fb9d6e00 | Panagiotis Kanavos | |
88 | fb9d6e00 | Panagiotis Kanavos | |
89 | fb9d6e00 | Panagiotis Kanavos | /// <summary> |
90 | fb9d6e00 | Panagiotis Kanavos | /// Resolves the <see cref="TaskbarIcon"/> that displayed |
91 | fb9d6e00 | Panagiotis Kanavos | /// the balloon and requests a close action. |
92 | fb9d6e00 | Panagiotis Kanavos | /// </summary> |
93 | fb9d6e00 | Panagiotis Kanavos | private void imgClose_MouseDown(object sender, MouseButtonEventArgs e) |
94 | fb9d6e00 | Panagiotis Kanavos | { |
95 | fb9d6e00 | Panagiotis Kanavos | //the tray icon assigned this attached property to simplify access |
96 | fb9d6e00 | Panagiotis Kanavos | TaskbarIcon taskbarIcon = TaskbarIcon.GetParentTaskbarIcon(this); |
97 | fb9d6e00 | Panagiotis Kanavos | taskbarIcon.CloseBalloon(); |
98 | fb9d6e00 | Panagiotis Kanavos | } |
99 | fb9d6e00 | Panagiotis Kanavos | |
100 | fb9d6e00 | Panagiotis Kanavos | /// <summary> |
101 | fb9d6e00 | Panagiotis Kanavos | /// If the users hovers over the balloon, we don't close it. |
102 | fb9d6e00 | Panagiotis Kanavos | /// </summary> |
103 | fb9d6e00 | Panagiotis Kanavos | private void grid_MouseEnter(object sender, MouseEventArgs e) |
104 | fb9d6e00 | Panagiotis Kanavos | { |
105 | fb9d6e00 | Panagiotis Kanavos | //if we're already running the fade-out animation, do not interrupt anymore |
106 | fb9d6e00 | Panagiotis Kanavos | //(makes things too complicated for the sample) |
107 | fb9d6e00 | Panagiotis Kanavos | if (isClosing) return; |
108 | fb9d6e00 | Panagiotis Kanavos | |
109 | fb9d6e00 | Panagiotis Kanavos | //the tray icon assigned this attached property to simplify access |
110 | fb9d6e00 | Panagiotis Kanavos | TaskbarIcon taskbarIcon = TaskbarIcon.GetParentTaskbarIcon(this); |
111 | fb9d6e00 | Panagiotis Kanavos | taskbarIcon.ResetBalloonCloseTimer(); |
112 | fb9d6e00 | Panagiotis Kanavos | } |
113 | fb9d6e00 | Panagiotis Kanavos | |
114 | fb9d6e00 | Panagiotis Kanavos | |
115 | fb9d6e00 | Panagiotis Kanavos | /// <summary> |
116 | fb9d6e00 | Panagiotis Kanavos | /// Closes the popup once the fade-out animation completed. |
117 | fb9d6e00 | Panagiotis Kanavos | /// The animation was triggered in XAML through the attached |
118 | fb9d6e00 | Panagiotis Kanavos | /// BalloonClosing event. |
119 | fb9d6e00 | Panagiotis Kanavos | /// </summary> |
120 | fb9d6e00 | Panagiotis Kanavos | private void OnFadeOutCompleted(object sender, EventArgs e) |
121 | fb9d6e00 | Panagiotis Kanavos | { |
122 | fb9d6e00 | Panagiotis Kanavos | Popup pp = (Popup)Parent; |
123 | fb9d6e00 | Panagiotis Kanavos | pp.IsOpen = false; |
124 | fb9d6e00 | Panagiotis Kanavos | } |
125 | fb9d6e00 | Panagiotis Kanavos | } |
126 | fb9d6e00 | Panagiotis Kanavos | } |