Qt4 - Prepare the work for file association from the interface.
authorJean-Baptiste Kempf <jb@videolan.org>
Sat, 19 Jan 2008 07:52:53 +0000 (07:52 +0000)
committerJean-Baptiste Kempf <jb@videolan.org>
Sat, 19 Jan 2008 07:52:53 +0000 (07:52 +0000)
Ref #763.

modules/gui/qt4/components/simple_preferences.cpp
modules/gui/qt4/components/simple_preferences.hpp
modules/gui/qt4/ui/sprefs_interface.ui
modules/gui/qt4/util/registry.cpp [new file with mode: 0644]
modules/gui/qt4/util/registry.hpp [new file with mode: 0644]

index 5f849d0..a7827c0 100644 (file)
@@ -396,9 +396,12 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
 
 #if defined( WIN32 ) || defined (__APPLE__)
             CONFIG_GENERIC( "language", StringList, NULL, language );
 
 #if defined( WIN32 ) || defined (__APPLE__)
             CONFIG_GENERIC( "language", StringList, NULL, language );
+            BUTTONACT( ui.assoButton, assoDialog );
 #else
             ui.language->hide();
             ui.languageLabel->hide();
 #else
             ui.language->hide();
             ui.languageLabel->hide();
+            ui.assoName->hide();
+            ui.assoButton->hide();
 #endif
 
             /* interface */
 #endif
 
             /* interface */
@@ -621,3 +624,8 @@ void SPrefsPanel::lastfm_Changed( int i_state )
     else if( i_state == Qt::Unchecked )
         config_RemoveIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );
 }
     else if( i_state == Qt::Unchecked )
         config_RemoveIntf( VLC_OBJECT( p_intf ), "audioscrobbler" );
 }
+
+void SPrefsPanel::assoDialog()
+{
+
+}
index 004737e..7e24983 100644 (file)
@@ -100,6 +100,7 @@ private:
 private slots:
     void lastfm_Changed( int );
     void updateAudioOptions( int );
 private slots:
     void lastfm_Changed( int );
     void updateAudioOptions( int );
+    void assoDialog();
 };
 
 #endif
 };
 
 #endif
index fd1f3aa..3612ef0 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>445</width>
-    <height>535</height>
+    <width>485</width>
+    <height>578</height>
    </rect>
   </property>
   <property name="windowTitle" >
    </rect>
   </property>
   <property name="windowTitle" >
      <property name="title" >
       <string>_("Instances")</string>
      </property>
      <property name="title" >
       <string>_("Instances")</string>
      </property>
-     <layout class="QVBoxLayout" >
-      <item>
+     <layout class="QGridLayout" >
+      <item row="0" column="0" colspan="2" >
        <widget class="QCheckBox" name="OneInterfaceMode" >
         <property name="text" >
          <string>_("Allow only one instance")</string>
         </property>
        </widget>
       </item>
        <widget class="QCheckBox" name="OneInterfaceMode" >
         <property name="text" >
          <string>_("Allow only one instance")</string>
         </property>
        </widget>
       </item>
-      <item>
+      <item row="1" column="0" colspan="2" >
        <widget class="QCheckBox" name="EnqueueOneInterfaceMode" >
         <property name="text" >
          <string>_("Enqueue files in playlist when in one instance mode")</string>
         </property>
        </widget>
       </item>
        <widget class="QCheckBox" name="EnqueueOneInterfaceMode" >
         <property name="text" >
          <string>_("Enqueue files in playlist when in one instance mode")</string>
         </property>
        </widget>
       </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="assoName" >
+        <property name="text" >
+         <string>_("File associations:")</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QPushButton" name="assoButton" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text" >
+         <string>_("Association Setup")</string>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
      </layout>
     </widget>
    </item>
diff --git a/modules/gui/qt4/util/registry.cpp b/modules/gui/qt4/util/registry.cpp
new file mode 100644 (file)
index 0000000..af47ded
--- /dev/null
@@ -0,0 +1,128 @@
+// License GPLv2+
+
+#include "registry.hpp"
+
+QVLCRegistry::QVLCRegistry(HKEY rootKey)
+{
+    this->m_RootKey = rootKey;
+}
+
+QVLCRegistry::~QVLCRegistry(void)
+{
+}
+
+int QVLCRegistry::RegistryKeyExists(char *path) {
+    HKEY keyHandle;
+    if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
+        RegCloseKey(keyHandle);
+        return 1;
+    }
+    return 0;
+}
+
+int QVLCRegistry::RegistryValueExists(char *path, char *valueName) {
+    HKEY keyHandle;
+    int temp = 0;
+    DWORD size1;
+    DWORD valueType;
+
+    if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
+        if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
+           temp = 1;
+        }
+        RegCloseKey(keyHandle);
+    }
+    return temp;
+}
+
+void QVLCRegistry::WriteRegistryInt(char *path, char *valueName, int value) {
+    HKEY keyHandle;
+
+    if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL)  == ERROR_SUCCESS) {
+        RegSetValueEx(keyHandle,valueName,0,REG_DWORD,(LPBYTE)&value,sizeof(int));
+        RegCloseKey(keyHandle);
+    }
+
+}
+
+void QVLCRegistry::WriteRegistryString(char *path, char *valueName, char *value) {
+    HKEY keyHandle;
+
+    if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL)  == ERROR_SUCCESS) {
+        RegSetValueEx(keyHandle,valueName,0,REG_SZ,(LPBYTE)value,(DWORD)(strlen(value)+1));
+        RegCloseKey(keyHandle);
+    }
+}
+
+void QVLCRegistry::WriteRegistryDouble(char *path, char *valueName, double value) {
+    HKEY keyHandle;
+    if( RegCreateKeyEx(m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &keyHandle, NULL)  == ERROR_SUCCESS) {
+        RegSetValueEx(keyHandle,valueName,0,REG_BINARY,(LPBYTE)&value,sizeof(double));
+        RegCloseKey(keyHandle);
+    }
+}
+
+int QVLCRegistry::ReadRegistryInt(char *path, char *valueName, int default_value) {
+    HKEY keyHandle;
+    int tempValue;
+    DWORD size1;
+    DWORD valueType;
+
+    if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
+        if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
+           if(valueType == REG_DWORD) {
+               if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)&tempValue, &size1) == ERROR_SUCCESS) {
+                  default_value = tempValue;
+               };
+           }
+        }
+        RegCloseKey(keyHandle);
+    }
+    return default_value;
+}
+
+char * QVLCRegistry::ReadRegistryString(char *path, char *valueName, char *default_value) {
+    HKEY keyHandle;
+    char *tempValue = NULL;
+    DWORD size1;
+    DWORD valueType;
+
+    if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
+        if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
+           if(valueType == REG_SZ) {
+               // free
+               tempValue = (char *)malloc(size1+1); // +1 für NullByte`?
+               if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)tempValue, &size1) == ERROR_SUCCESS) {
+                  default_value = tempValue;
+               };
+           }
+        }
+        RegCloseKey(keyHandle);
+    }
+    if(tempValue == NULL)  {
+        // wenn tempValue nicht aus registry gelesen wurde dafür sorgen das ein neuer String mit der Kopie von DefaultValue
+        // geliefert wird - das macht das Handling des Rückgabewertes der Funktion einfacher - immer schön mit free freigeben!
+        default_value = strdup(default_value);
+    }
+
+    return default_value;
+}
+
+double QVLCRegistry::ReadRegistryDouble(char *path, char *valueName, double default_value) {
+    HKEY keyHandle;
+    double tempValue;
+    DWORD size1;
+    DWORD valueType;
+
+    if( RegOpenKeyEx(m_RootKey, path, 0, KEY_READ, &keyHandle) == ERROR_SUCCESS) {
+        if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, NULL, &size1) == ERROR_SUCCESS) {
+           if((valueType == REG_BINARY) && (size1 == sizeof(double))) {
+               if(RegQueryValueEx( keyHandle, valueName, NULL, &valueType, (LPBYTE)&tempValue, &size1) == ERROR_SUCCESS) {
+                  default_value = tempValue;
+               };
+           }
+        }
+        RegCloseKey(keyHandle);
+    }
+    return default_value;
+}
diff --git a/modules/gui/qt4/util/registry.hpp b/modules/gui/qt4/util/registry.hpp
new file mode 100644 (file)
index 0000000..c3032bd
--- /dev/null
@@ -0,0 +1,30 @@
+// License GPLv2 or later
+// Code from ATMO
+
+#ifndef QVLC_REGISTRY_H
+#define QVLC_REGISTRY_H
+
+#include <windows.h>
+
+class QVLCRegistry
+{
+private:
+    HKEY m_RootKey;
+    char m_pathBuffer[256];
+public:
+    QVLCRegistry(HKEY rootKey);
+    ~QVLCRegistry(void);
+
+    void WriteRegistryInt(char *path, char *valueName, int value);
+    void WriteRegistryString(char *path, char *valueName, char *value);
+    void WriteRegistryDouble(char *path, char *valueName, double value);
+
+    int ReadRegistryInt(char *path, char *valueName, int default_value);
+    char * ReadRegistryString(char *path, char *valueName, char *default_value);
+    double ReadRegistryDouble(char *path, char *valueName, double default_value);
+
+    int RegistryKeyExists(char *path);
+    int RegistryValueExists(char *path, char *valueName);
+};
+
+#endif