]> git.sesse.net Git - vlc/blob - modules/gui/qt4/util/registry.cpp
af47deda89a45434c9c01700e05f1fcf2ae04b0f
[vlc] / modules / gui / qt4 / util / registry.cpp
1 // License GPLv2+
2
3 #include "registry.hpp"
4
5 QVLCRegistry::QVLCRegistry(HKEY rootKey)
6 {
7     this->m_RootKey = rootKey;
8 }
9
10 QVLCRegistry::~QVLCRegistry(void)
11 {
12 }
13
14 int QVLCRegistry::RegistryKeyExists(char *path) {
15     HKEY keyHandle;
16     if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
17         RegCloseKey(keyHandle);
18         return 1;
19     }
20     return 0;
21 }
22
23 int QVLCRegistry::RegistryValueExists(char *path, char *valueName) {
24     HKEY keyHandle;
25     int temp = 0;
26     DWORD size1;
27     DWORD valueType;
28
29     if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
30         if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
31            temp = 1;
32         }
33         RegCloseKey(keyHandle);
34     }
35     return temp;
36 }
37
38 void QVLCRegistry::WriteRegistryInt(char *path, char *valueName, int value) {
39     HKEY keyHandle;
40
41     if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL)  == ERROR_SUCCESS) {
42         RegSetValueEx(keyHandle,valueName,0,REG_DWORD,(LPBYTE)&value,sizeof(int));
43         RegCloseKey(keyHandle);
44     }
45
46 }
47
48 void QVLCRegistry::WriteRegistryString(char *path, char *valueName, char *value) {
49     HKEY keyHandle;
50
51     if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL)  == ERROR_SUCCESS) {
52         RegSetValueEx(keyHandle,valueName,0,REG_SZ,(LPBYTE)value,(DWORD)(strlen(value)+1));
53         RegCloseKey(keyHandle);
54     }
55 }
56
57 void QVLCRegistry::WriteRegistryDouble(char *path, char *valueName, double value) {
58     HKEY keyHandle;
59     if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL)  == ERROR_SUCCESS) {
60         RegSetValueEx(keyHandle,valueName,0,REG_BINARY,(LPBYTE)&value,sizeof(double));
61         RegCloseKey(keyHandle);
62     }
63 }
64
65 int QVLCRegistry::ReadRegistryInt(char *path, char *valueName, int default_value) {
66     HKEY keyHandle;
67     int tempValue;
68     DWORD size1;
69     DWORD valueType;
70
71     if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
72         if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
73            if(valueType == REG_DWORD) {
74                if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)&tempValue, &size1) == ERROR_SUCCESS) {
75                   default_value = tempValue;
76                };
77            }
78         }
79         RegCloseKey(keyHandle);
80     }
81     return default_value;
82 }
83
84 char * QVLCRegistry::ReadRegistryString(char *path, char *valueName, char *default_value) {
85     HKEY keyHandle;
86     char *tempValue = NULL;
87     DWORD size1;
88     DWORD valueType;
89
90     if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
91         if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
92            if(valueType == REG_SZ) {
93                // free
94                tempValue = (char *)malloc(size1+1); // +1 für NullByte`?
95                if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)tempValue, &size1) == ERROR_SUCCESS) {
96                   default_value = tempValue;
97                };
98            }
99         }
100         RegCloseKey(keyHandle);
101     }
102     if(tempValue == NULL)  {
103         // wenn tempValue nicht aus registry gelesen wurde dafür sorgen das ein neuer String mit der Kopie von DefaultValue
104         // geliefert wird - das macht das Handling des Rückgabewertes der Funktion einfacher - immer schön mit free freigeben!
105         default_value = strdup(default_value);
106     }
107
108     return default_value;
109 }
110
111 double QVLCRegistry::ReadRegistryDouble(char *path, char *valueName, double default_value) {
112     HKEY keyHandle;
113     double tempValue;
114     DWORD size1;
115     DWORD valueType;
116
117     if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
118         if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
119            if((valueType == REG_BINARY) && (size1 == sizeof(double))) {
120                if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)&tempValue, &size1) == ERROR_SUCCESS) {
121                   default_value = tempValue;
122                };
123            }
124         }
125         RegCloseKey(keyHandle);
126     }
127     return default_value;
128 }