1 | /* |
2 | * Copyright (c) 2000-2004 Apple Inc. All rights reserved. |
3 | * |
4 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ |
5 | * |
6 | * This file contains Original Code and/or Modifications of Original Code |
7 | * as defined in and that are subject to the Apple Public Source License |
8 | * Version 2.0 (the 'License'). You may not use this file except in |
9 | * compliance with the License. The rights granted to you under the License |
10 | * may not be used to create, or enable the creation or redistribution of, |
11 | * unlawful or unlicensed copies of an Apple operating system, or to |
12 | * circumvent, violate, or enable the circumvention or violation of, any |
13 | * terms of an Apple operating system software license agreement. |
14 | * |
15 | * Please obtain a copy of the License at |
16 | * http://www.opensource.apple.com/apsl/ and read it before using this file. |
17 | * |
18 | * The Original Code and all software distributed under the License are |
19 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER |
20 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, |
21 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, |
22 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. |
23 | * Please see the License for the specific language governing rights and |
24 | * limitations under the License. |
25 | * |
26 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ |
27 | */ |
28 | |
29 | #ifndef __USERNOTIFICATION_KUNCUSERNOTIFICATIONS_H |
30 | #define __USERNOTIFICATION_KUNCUSERNOTIFICATIONS_H |
31 | |
32 | #include <sys/cdefs.h> |
33 | |
34 | |
35 | #include <mach/message.h> |
36 | #include <mach/kern_return.h> |
37 | #include <UserNotification/UNDTypes.h> |
38 | |
39 | __BEGIN_DECLS |
40 | |
41 | /* |
42 | * non blocking notice call. |
43 | */ |
44 | kern_return_t |
45 | KUNCUserNotificationDisplayNotice( |
46 | int noticeTimeout, |
47 | unsigned flags, |
48 | char *iconPath, |
49 | char *soundPath, |
50 | char *localizationPath, |
51 | char *, |
52 | char *alertMessage, |
53 | char *defaultButtonTitle) __attribute__((deprecated)); |
54 | |
55 | /* |
56 | * ***BLOCKING*** alert call, returned int value corresponds to the |
57 | * pressed button, spin this off in a thread only, or expect your kext to block. |
58 | */ |
59 | kern_return_t |
60 | KUNCUserNotificationDisplayAlert( |
61 | int alertTimeout, |
62 | unsigned flags, |
63 | char *iconPath, |
64 | char *soundPath, |
65 | char *localizationPath, |
66 | char *, |
67 | char *alertMessage, |
68 | char *defaultButtonTitle, |
69 | char *alternateButtonTitle, |
70 | char *otherButtonTitle, |
71 | unsigned *responseFlags) __attribute__((deprecated)); |
72 | |
73 | |
74 | /* |
75 | * Execute a userland executable with the given path, user and type |
76 | */ |
77 | |
78 | #define kOpenApplicationPath 0 /* essentially executes the path */ |
79 | #define kOpenPreferencePanel 1 /* runs the preferences with the foo.preference opened. foo.preference must exist in /System/Library/Preferences */ |
80 | #define kOpenApplication 2 /* essentially runs /usr/bin/open on the passed in application name */ |
81 | |
82 | |
83 | #define kOpenAppAsRoot 0 |
84 | #define kOpenAppAsConsoleUser 1 |
85 | |
86 | kern_return_t |
87 | KUNCExecute( |
88 | char *executionPath, |
89 | int openAsUser, |
90 | int pathExecutionType) __attribute__((deprecated)); |
91 | |
92 | |
93 | /* KUNC User Notification XML Keys |
94 | * |
95 | * These are the keys used in the xml plist file passed in to the |
96 | * KUNCUserNotitificationDisplayFrom* calls |
97 | * |
98 | * KUNC Notifications are completely dependent on CFUserNotifications in |
99 | * user land. The same restrictions apply, including the number of text fields, |
100 | * types of information displayable, etc. |
101 | * |
102 | * Key Type |
103 | * Header string (header displayed on dialog) |
104 | * corresponds to kCFUserNotificationAlertHeaderKey |
105 | * |
106 | * Icon URL string (url of the icon to display) |
107 | * corresponds to kCFUserNotificationIconURLKey |
108 | * |
109 | * Sound URL string (url of the sound to play on display) |
110 | * corresponds to kCFUserNotificationSoundURLKey |
111 | * |
112 | * Localization URL string (url of bundle to retrieve localization |
113 | * info from, using Localizable.strings files) |
114 | * corresponds to kCFUserNotificationLocalizationURLKey |
115 | * |
116 | * Message string (text of the message, can contain %@'s |
117 | * which are filled from tokenString passed in) |
118 | * corresponds to kCFUserNotificationAlertMessageKey |
119 | * |
120 | * OK Button Title string (title of the "main" button) |
121 | * corresponds to kCFUserNotificationDefaultButtonTitleKey |
122 | * |
123 | * Alternate Button Title string (title of the "alternate" button, usually cancel) |
124 | * corresponds to kCFUserNotificationAlternateButtonTitleKey |
125 | * |
126 | * Other Button Title string (title of the "other" button) |
127 | * corresponds to kCFUserNotificationOtherButtonTitleKey |
128 | * |
129 | * Timeout string (numeric, int - seconds until the dialog |
130 | * goes away on it's own) |
131 | * |
132 | * Alert Level string (Stop, Notice, Alert) |
133 | * |
134 | * Blocking Message string (numeric, 1 or 0 - if 1, the dialog will |
135 | * have no buttons) |
136 | * |
137 | * Text Field Strings array of strings (each becomes a text field) |
138 | * corresponds to kCFUserNotificationTextFieldTitlesKey |
139 | * |
140 | * Password Fields array of strings (numeric - each indicates a |
141 | * pwd field) |
142 | * |
143 | * Popup Button Strings array of strings (each entry becomes a popup |
144 | * button string) |
145 | * |
146 | * Radio Button Strings array of strings (each becomes a radio button) |
147 | * |
148 | * Check Box Strings array of strings (each becomes a check box) |
149 | * corresponds to kCFUserNotificationCheckBoxTitlesKey |
150 | * |
151 | * Selected Radio string (numeric - which radio is selected) |
152 | * |
153 | * Checked Boxes array of strings (numeric - each indicates a |
154 | * checked field) |
155 | * |
156 | * Selected Popup string (numeric - which popup entry is selected) |
157 | * |
158 | */ |
159 | |
160 | /* |
161 | * Bundle Calls |
162 | * |
163 | * Arguments |
164 | * |
165 | * bundleIdentifier |
166 | * path to the actual bundle (not inside of it) |
167 | * (i.e. "/System/Library/Extensions/Foo.kext") |
168 | * ***NOTE*** |
169 | * This WILL change soon to expect the CFBundleIdentifier instead of a bundle path |
170 | * fileName |
171 | * filename in bundle to retrive the xml from (i.e. "Messages") |
172 | * fileExtension |
173 | * if fileName has an extension, it goes here (i.e., "dict"); |
174 | * messageKey |
175 | * name of the xml key in the dictionary in the file to retrieve |
176 | * the info from (i.e., "Error Message") |
177 | * tokenString |
178 | * a string in the form of "foo@bar" where each element is |
179 | * seperated by the @ character. This string can be used to |
180 | * replace values of the form %@ in the message key in the provided |
181 | * dictionary in the xml plist |
182 | * specialKey |
183 | * user specified key for notification, use this to match return |
184 | * values with your requested notification, this value is passed |
185 | * back to the client in the callback pararmeter contextKey |
186 | */ |
187 | |
188 | typedef uintptr_t KUNCUserNotificationID; |
189 | |
190 | /* |
191 | * Reponse value checking & default setting |
192 | * |
193 | * The reponse value returned in the response Flags of the |
194 | * KUNCUserNotificationCallBack can be tested against the following |
195 | * enum and 2 defines to determine the state. |
196 | */ |
197 | |
198 | enum { |
199 | kKUNCDefaultResponse = 0, |
200 | kKUNCAlternateResponse = 1, |
201 | kKUNCOtherResponse = 2, |
202 | kKUNCCancelResponse = 3 |
203 | }; |
204 | |
205 | #define KUNCCheckBoxChecked(i) (1 << (8 + i)) /* can be used for radio's too */ |
206 | #define (n) (n << 24) |
207 | |
208 | /* |
209 | * Callback function for KUNCNotifications |
210 | */ |
211 | typedef void |
212 | (*KUNCUserNotificationCallBack)( |
213 | int contextKey, |
214 | int responseFlags, |
215 | const void *xmlData); |
216 | |
217 | /* |
218 | * Get a notification ID |
219 | */ |
220 | KUNCUserNotificationID KUNCGetNotificationID(void) __attribute__((deprecated)); |
221 | |
222 | /* This function currently requires a bundle path, which kexts cannot currently get. In the future, the CFBundleIdentiofier of the kext will be pass in in place of the bundlePath. */ |
223 | |
224 | kern_return_t |
225 | KUNCUserNotificationDisplayFromBundle( |
226 | KUNCUserNotificationID notificationID, |
227 | char *bundleIdentifier, |
228 | char *fileName, |
229 | char *fileExtension, |
230 | char *messageKey, |
231 | char *tokenString, |
232 | KUNCUserNotificationCallBack callback, |
233 | int contextKey) __attribute__((deprecated)); |
234 | |
235 | |
236 | __END_DECLS |
237 | |
238 | #endif /* __USERNOTIFICATION_KUNCUSERNOTIFICATIONS_H */ |
239 | |