notify-osd
Attachment 'summary-body.cs'
Download 1 ////////////////////////////////////////////////////////////////////////////////
2 //3456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
3 // 10 20 30 40 50 60 70 80
4 //
5 // Info:
6 // Example of how to use libnotify correctly and at the same time comply to
7 // the new jaunty notification spec (read: visual guidelines)
8 //
9 // Compile and run:
10 // gmcs -pkg:notify-sharp summary-body.cs -out:summary-body.exe
11 // mono summary-body.exe
12 //
13 // Copyright 2009 Canonical Ltd.
14 //
15 // Author:
16 // Mirco "MacSlow" Mueller <mirco.mueller@canonical.com>
17 //
18 // This program is free software: you can redistribute it and/or modify it
19 // under the terms of the GNU General Public License version 3, as published
20 // by the Free Software Foundation.
21 //
22 // This program is distributed in the hope that it will be useful, but
23 // WITHOUT ANY WARRANTY; without even the implied warranties of
24 // MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
25 // PURPOSE. See the GNU General Public License for more details.
26 //
27 // You should have received a copy of the GNU General Public License along
28 // with this program. If not, see <http://www.gnu.org/licenses/>.
29 //
30 ////////////////////////////////////////////////////////////////////////////////
31
32 using System;
33 using Notifications;
34
35 public class SummaryBody
36 {
37 enum Capability {
38 CAP_ACTIONS = 0,
39 CAP_BODY,
40 CAP_BODY_HYPERLINKS,
41 CAP_BODY_IMAGES,
42 CAP_BODY_MARKUP,
43 CAP_ICON_MULTI,
44 CAP_ICON_STATIC,
45 CAP_SOUND,
46 CAP_IMAGE_SVG,
47 CAP_SYNCHRONOUS,
48 CAP_APPEND,
49 CAP_LAYOUT_ICON_ONLY,
50 CAP_MAX}
51
52 static bool[] m_capabilities = {false, // actions
53 false, // body
54 false, // body-hyperlinks
55 false, // body-imges
56 false, // body-markup
57 false, // icon-multi
58 false, // icon-static
59 false, // sound
60 false, // image/svg+xml
61 false, // synchronous-hint
62 false, // append-hint
63 false}; // icon-only-hint
64
65 private static void InitCaps ()
66 {
67
68 if (Global.Capabilities == null)
69 return;
70
71 if (Array.IndexOf (Global.Capabilities, "actions") > -1)
72 m_capabilities[(int) Capability.CAP_ACTIONS] = true;
73
74 if (Array.IndexOf (Global.Capabilities, "body") > -1)
75 m_capabilities[(int) Capability.CAP_BODY] = true;
76
77 if (Array.IndexOf (Global.Capabilities, "body-hyperlinks") > -1)
78 m_capabilities[(int) Capability.CAP_BODY_HYPERLINKS] = true;
79
80 if (Array.IndexOf (Global.Capabilities, "body-images") > -1)
81 m_capabilities[(int) Capability.CAP_BODY_IMAGES] = true;
82
83 if (Array.IndexOf (Global.Capabilities, "body-markup") > -1)
84 m_capabilities[(int) Capability.CAP_BODY_MARKUP] = true;
85
86 if (Array.IndexOf (Global.Capabilities, "icon-multi") > -1)
87 m_capabilities[(int) Capability.CAP_ICON_MULTI] = true;
88
89 if (Array.IndexOf (Global.Capabilities, "icon-static") > -1)
90 m_capabilities[(int) Capability.CAP_ICON_STATIC] = true;
91
92 if (Array.IndexOf (Global.Capabilities, "sound") > -1)
93 m_capabilities[(int) Capability.CAP_SOUND] = true;
94
95 if (Array.IndexOf (Global.Capabilities, "image/svg+xml") > -1)
96 m_capabilities[(int) Capability.CAP_IMAGE_SVG] = true;
97
98 if (Array.IndexOf (Global.Capabilities, "private-synchronous") > -1)
99 m_capabilities[(int) Capability.CAP_SYNCHRONOUS] = true;
100
101 if (Array.IndexOf (Global.Capabilities, "append") > -1)
102 m_capabilities[(int) Capability.CAP_APPEND] = true;
103
104 if (Array.IndexOf (Global.Capabilities, "private-icon-only") > -1)
105 m_capabilities[(int) Capability.CAP_LAYOUT_ICON_ONLY] = true;
106 }
107
108 private static void PrintCaps ()
109 {
110 Console.WriteLine ("Name: "
111 + Global.ServerInformation.Name);
112 Console.WriteLine ("Vendor: "
113 + Global.ServerInformation.Vendor);
114 Console.WriteLine ("Version: "
115 + Global.ServerInformation.Version);
116 Console.WriteLine ("Spec. Version: "
117 + Global.ServerInformation.SpecVersion);
118
119 Console.WriteLine ("Supported capabilities/hints:");
120 if (m_capabilities[(int) Capability.CAP_ACTIONS])
121 Console.WriteLine ("\tactions");
122 if (m_capabilities[(int) Capability.CAP_BODY])
123 Console.WriteLine ("\tbody");
124 if (m_capabilities[(int) Capability.CAP_BODY_HYPERLINKS])
125 Console.WriteLine ("\tbody-hyperlinks");
126 if (m_capabilities[(int) Capability.CAP_BODY_IMAGES])
127 Console.WriteLine ("\tbody-images");
128 if (m_capabilities[(int) Capability.CAP_BODY_MARKUP])
129 Console.WriteLine ("\tbody-markup");
130 if (m_capabilities[(int) Capability.CAP_ICON_MULTI])
131 Console.WriteLine ("\ticon-multi");
132 if (m_capabilities[(int) Capability.CAP_ICON_STATIC])
133 Console.WriteLine ("\ticon-static");
134 if (m_capabilities[(int) Capability.CAP_SOUND])
135 Console.WriteLine ("\tsound");
136 if (m_capabilities[(int) Capability.CAP_IMAGE_SVG])
137 Console.WriteLine ("\timage/svg+xml");
138 if (m_capabilities[(int) Capability.CAP_SYNCHRONOUS])
139 Console.WriteLine ("\tprivate-synchronous");
140 if (m_capabilities[(int) Capability.CAP_APPEND])
141 Console.WriteLine ("\tappend");
142 if (m_capabilities[(int) Capability.CAP_LAYOUT_ICON_ONLY])
143 Console.WriteLine ("\tprivate-icon-only");
144
145 Console.WriteLine ("Notes:");
146 if (Global.ServerInformation.Name == "notify-osd")
147 {
148 Console.WriteLine ("\tx- and y-coordinates hints are ignored");
149 Console.WriteLine ("\texpire-timeout is ignored");
150 Console.WriteLine ("\tbody-markup is accepted but filtered");
151 }
152 else
153 Console.WriteLine ("\tnone");
154 }
155
156 public static void Main ()
157 {
158 // call this so we can savely use the m_capabilities array later
159 InitCaps ();
160
161 // show what's supported
162 PrintCaps ();
163
164 // try the summary-body case
165 Notification n = new Notification ("Totem",
166 "This is a superfluous notification.");
167 n.Show ();
168 }
169 }
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.