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 */ 44kern_return_t 45KUNCUserNotificationDisplayNotice( 46 int noticeTimeout, 47 unsigned flags, 48 char *iconPath, 49 char *soundPath, 50 char *localizationPath, 51 char *alertHeader, 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 */ 59kern_return_t 60KUNCUserNotificationDisplayAlert( 61 int alertTimeout, 62 unsigned flags, 63 char *iconPath, 64 char *soundPath, 65 char *localizationPath, 66 char *alertHeader, 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 86kern_return_t 87KUNCExecute( 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 188typedef 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 198enum { 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 KUNCPopUpSelection(n) (n << 24) 207 208/* 209 * Callback function for KUNCNotifications 210 */ 211typedef void 212(*KUNCUserNotificationCallBack)( 213 int contextKey, 214 int responseFlags, 215 const void *xmlData); 216 217/* 218 * Get a notification ID 219 */ 220KUNCUserNotificationID 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 224kern_return_t 225KUNCUserNotificationDisplayFromBundle( 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 236kern_return_t 237KUNCUserNotificationCancel( 238 KUNCUserNotificationID notification) __attribute__((deprecated)); 239 240 241__END_DECLS 242 243#endif /* __USERNOTIFICATION_KUNCUSERNOTIFICATIONS_H */ 244