From 03832a5531dabc275528122aee5892f6e9a52587 Mon Sep 17 00:00:00 2001 From: michaelwright235 Date: Sun, 18 Jun 2023 20:23:13 +0300 Subject: [PATCH] sys: Implement CFPreferences functions Adds `preferences` module corresponding to `CFPreferences.h`. Implements its external functions and constants. --- core-foundation-sys/src/lib.rs | 1 + core-foundation-sys/src/preferences.rs | 52 ++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 core-foundation-sys/src/preferences.rs diff --git a/core-foundation-sys/src/lib.rs b/core-foundation-sys/src/lib.rs index 16df21a..e53c62d 100644 --- a/core-foundation-sys/src/lib.rs +++ b/core-foundation-sys/src/lib.rs @@ -38,6 +38,7 @@ pub mod notification_center; pub mod number; pub mod number_formatter; pub mod plugin; +pub mod preferences; pub mod propertylist; pub mod runloop; pub mod set; diff --git a/core-foundation-sys/src/preferences.rs b/core-foundation-sys/src/preferences.rs new file mode 100644 index 0000000..35f1dda --- /dev/null +++ b/core-foundation-sys/src/preferences.rs @@ -0,0 +1,52 @@ +// Copyright 2023 The Servo Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use base::{Boolean, CFIndex}; +use string::CFStringRef; +use propertylist::CFPropertyListRef; +use array::CFArrayRef; +use dictionary::CFDictionaryRef; + +extern { + /* + * CFPreferences.h + */ + /* Application, Host, and User Keys */ + pub static kCFPreferencesAnyApplication: CFStringRef; + pub static kCFPreferencesCurrentApplication: CFStringRef; + pub static kCFPreferencesAnyHost: CFStringRef; + pub static kCFPreferencesCurrentHost: CFStringRef; + pub static kCFPreferencesAnyUser: CFStringRef; + pub static kCFPreferencesCurrentUser: CFStringRef; + + /* Getting Preference Values */ + pub fn CFPreferencesCopyAppValue(key: CFStringRef, applicationID: CFStringRef) -> CFPropertyListRef; + pub fn CFPreferencesCopyKeyList(applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> CFArrayRef; + pub fn CFPreferencesCopyMultiple(keysToFetch: CFArrayRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> CFDictionaryRef; + pub fn CFPreferencesCopyValue(key: CFStringRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> CFPropertyListRef; + pub fn CFPreferencesGetAppBooleanValue(key: CFStringRef, applicationID: CFStringRef, keyExistsAndHasValidFormat: *mut Boolean) -> Boolean; + pub fn CFPreferencesGetAppIntegerValue(key: CFStringRef, applicationID: CFStringRef, keyExistsAndHasValidFormat: *mut Boolean) -> CFIndex; + + /* Setting Preference Values */ + pub fn CFPreferencesSetAppValue(key: CFStringRef, value: CFPropertyListRef, applicationID: CFStringRef); + pub fn CFPreferencesSetMultiple(keysToSet: CFDictionaryRef, keysToRemove: CFArrayRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef); + pub fn CFPreferencesSetValue(key: CFStringRef, value: CFPropertyListRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef); + + /* Synchronizing Preferences */ + pub fn CFPreferencesAppSynchronize(applicationID: CFStringRef) -> Boolean; + pub fn CFPreferencesSynchronize(applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> Boolean; + + /* Adding and Removing Suite Preferences */ + pub fn CFPreferencesAddSuitePreferencesToApp(applicationID: CFStringRef, suiteID: CFStringRef); + pub fn CFPreferencesRemoveSuitePreferencesFromApp(applicationID: CFStringRef, suiteID: CFStringRef); + + /* Miscellaneous Functions */ + pub fn CFPreferencesAppValueIsForced(key: CFStringRef, applicationID: CFStringRef) -> Boolean; + pub fn CFPreferencesCopyApplicationList(userName: CFStringRef, hostName: CFStringRef) -> CFArrayRef; // deprecated since macos 10.9 +}