1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* ***** BEGIN LICENSE BLOCK ***** 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 4 * 5 * The contents of this file are subject to the Mozilla Public License Version 6 * 1.1 (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * http://www.mozilla.org/MPL/ 9 * 10 * Software distributed under the License is distributed on an "AS IS" basis, 11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 12 * for the specific language governing rights and limitations under the 13 * License. 14 * 15 * The Original Code is mozilla.org code. 16 * 17 * The Initial Developer of the Original Code is 18 * Netscape Communications Corporation. 19 * Portions created by the Initial Developer are Copyright (C) 1998 20 * the Initial Developer. All Rights Reserved. 21 * 22 * Contributor(s): 23 * 24 * Alternatively, the contents of this file may be used under the terms of 25 * either the GNU General Public License Version 2 or later (the "GPL"), or 26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 27 * in which case the provisions of the GPL or the LGPL are applicable instead 28 * of those above. If you wish to allow use of your version of this file only 29 * under the terms of either the GPL or the LGPL, and not to allow others to 30 * use your version of this file under the terms of the MPL, indicate your 31 * decision by deleting the provisions above and replace them with the notice 32 * and other provisions required by the GPL or the LGPL. If you do not delete 33 * the provisions above, a recipient may use your version of this file under 34 * the terms of any one of the MPL, the GPL or the LGPL. 35 * 36 * ***** END LICENSE BLOCK ***** */ 37 38 #include <windows.h> 39 40 #include "profilew.h" 41 42 ProfileWin::ProfileWin() : Profile() 43 { 44 hKey = NULL; 45 char szClass[] = "SpyPluginClass"; 46 DWORD disp = 0L; 47 48 LONG res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, 49 NPSPY_REG_SUBKEY, 50 0L, 51 szClass, 52 0L, 53 KEY_READ | KEY_WRITE, 54 NULL, 55 &hKey, 56 &disp); 57 58 if(res != ERROR_SUCCESS) 59 hKey = NULL; 60 } 61 62 ProfileWin::~ProfileWin() 63 { 64 if(hKey) 65 RegCloseKey(hKey); 66 } 67 68 BOOL ProfileWin::getBool(char * key, BOOL * value) 69 { 70 if(!value) 71 return FALSE; 72 73 DWORD size = sizeof(DWORD); 74 DWORD val = 1L; 75 LONG res = RegQueryValueEx(hKey, key, 0L, NULL, (BYTE *)&val, &size); 76 77 if(res != ERROR_SUCCESS) 78 return FALSE; 79 80 *value = (val == 0L) ? FALSE : TRUE; 81 82 return TRUE; 83 } 84 85 BOOL ProfileWin::setBool(char * key, BOOL value) 86 { 87 DWORD size = sizeof(DWORD); 88 DWORD val = value ? 1L : 0L; 89 LONG res = RegSetValueEx(hKey, key, 0L, REG_DWORD, (const BYTE *)&val, size); 90 return (res == ERROR_SUCCESS); 91 } 92 93 BOOL ProfileWin::getString(char * key, char * string, int size) 94 { 95 LONG res = RegQueryValueEx(hKey, key, 0L, NULL, (BYTE *)string, (DWORD *)&size); 96 return (res == ERROR_SUCCESS); 97 } 98 99 BOOL ProfileWin::setString(char * key, char * string) 100 { 101 DWORD size = strlen(string); 102 LONG res = RegSetValueEx(hKey, key, 0L, REG_SZ, (const BYTE *)string, size); 103 return (res == ERROR_SUCCESS); 104 } 105 106 BOOL ProfileWin::getSizeAndPosition(int *width, int *height, int *x, int *y) 107 { 108 DWORD size = sizeof(DWORD); 109 LONG res = ERROR_SUCCESS; 110 111 res = RegQueryValueEx(hKey, NPSPY_REG_KEY_WIDTH, 0L, NULL, (BYTE *)width, &size); 112 if(res != ERROR_SUCCESS) 113 return FALSE; 114 115 res = RegQueryValueEx(hKey, NPSPY_REG_KEY_HEIGHT, 0L, NULL, (BYTE *)height, &size); 116 if(res != ERROR_SUCCESS) 117 return FALSE; 118 119 res = RegQueryValueEx(hKey, NPSPY_REG_KEY_X, 0L, NULL, (BYTE *)x, &size); 120 if(res != ERROR_SUCCESS) 121 return FALSE; 122 123 res = RegQueryValueEx(hKey, NPSPY_REG_KEY_Y, 0L, NULL, (BYTE *)y, &size); 124 if(res != ERROR_SUCCESS) 125 return FALSE; 126 127 return TRUE; 128 } 129 130 BOOL ProfileWin::setSizeAndPosition(int width, int height, int x, int y) 131 { 132 DWORD size = sizeof(DWORD); 133 LONG res = ERROR_SUCCESS; 134 135 res = RegSetValueEx(hKey, NPSPY_REG_KEY_WIDTH, 0L, REG_DWORD, (const BYTE *)&width, size); 136 if(res != ERROR_SUCCESS) 137 return FALSE; 138 139 res = RegSetValueEx(hKey, NPSPY_REG_KEY_HEIGHT, 0L, REG_DWORD, (const BYTE *)&height, size); 140 if(res != ERROR_SUCCESS) 141 return FALSE; 142 143 res = RegSetValueEx(hKey, NPSPY_REG_KEY_X, 0L, REG_DWORD, (const BYTE *)&x, size); 144 if(res != ERROR_SUCCESS) 145 return FALSE; 146 147 res = RegSetValueEx(hKey, NPSPY_REG_KEY_Y, 0L, REG_DWORD, (const BYTE *)&y, size); 148 if(res != ERROR_SUCCESS) 149 return FALSE; 150 151 return TRUE; 152 } 153