void SPrefsPanel::assoDialog()
{
+
QDialog *d = new QDialog( this );
QGridLayout *assoLayout = new QGridLayout( d );
CONNECT( clearButton, clicked(), d, reject() );
d->exec();
delete d;
+ listAsso.clear();
}
void addAsso( QVLCRegistry *qvReg, char *psz_ext )
{
- char psz_VLC[] = "VLC";
+ std::string s_path( "VLC" ); s_path += psz_ext;
+ std::string s_path2 = s_path;
+ /* Save a backup if already assigned */
char *psz_value = qvReg->ReadRegistryString( psz_ext, "", "" );
- if( strlen( psz_value ) > 0 )
+
+ if( psz_value && strlen( psz_value ) > 0 )
qvReg->WriteRegistryString( psz_ext, "VLC.backup", psz_value );
+ delete psz_value;
+
+ /* Put a "link" to VLC.EXT as default */
+ qvReg->WriteRegistryString( psz_ext, "", s_path.c_str() );
+
+ /* Create the needed Key if they weren't done in the installer */
+ if( !qvReg->RegistryKeyExists( s_path.c_str() ) )
+ {
+ qvReg->WriteRegistryString( psz_ext, "", s_path.c_str() );
+ qvReg->WriteRegistryString( s_path.c_str(), "", "Media file" );
+ qvReg->WriteRegistryString( s_path.append( "\\shell" ).c_str() , "", "Play" );
+
+ /* Get the installer path */
+ QVLCRegistry *qvReg2 = new QVLCRegistry( HKEY_LOCAL_MACHINE );
+ std::string str_temp; str_temp.assign(
+ qvReg2->ReadRegistryString( "Software\\VideoLAN\\VLC", "", "" ) );
+
+ if( str_temp.size() )
+ {
+ qvReg->WriteRegistryString( s_path.append( "\\Play\\command" ).c_str(),
+ "", str_temp.append(" --started-from-file \"%1\"" ).c_str() );
- qvReg->WriteRegistryString( psz_ext, "", strcat( psz_VLC, psz_ext ) );
+ qvReg->WriteRegistryString( s_path2.append( "\\DefaultIcon" ).c_str(),
+ "", str_temp.append(",0").c_str() );
+ }
+ delete qvReg2;
+ }
}
void delAsso( QVLCRegistry *qvReg, char *psz_ext )
char psz_VLC[] = "VLC";
char *psz_value = qvReg->ReadRegistryString( psz_ext, "", "" );
- if( !strcmp( strcat( psz_VLC, psz_ext ), psz_value ) )
+ if( psz_value && !strcmp( strcat( psz_VLC, psz_ext ), psz_value ) )
{
- qvReg->WriteRegistryString( psz_ext, "",
- qvReg->ReadRegistryString( psz_ext, "VLC.backup", "" ) );
- // qvReg->DeletKey( psz_ext, "VLC.backup" );
+ free( psz_value );
+ psz_value = qvReg->ReadRegistryString( psz_ext, "VLC.backup", "" );
+ if( psz_value )
+ qvReg->WriteRegistryString( psz_ext, "", psz_value );
+
+ //qvReg->DeletKey( psz_ext, "VLC.backup" );
+
}
+ delete( psz_value );
}
void SPrefsPanel::saveAsso()
{
for( int i = 0; i < listAsso.size(); i ++ )
{
QVLCRegistry * qvReg = new QVLCRegistry( HKEY_CLASSES_ROOT );
+
if( listAsso[i]->checkState() > 0 )
{
addAsso( qvReg, qtu( listAsso[i]->text() ) );
{
}
-bool QVLCRegistry::RegistryKeyExists( char *path )
+bool QVLCRegistry::RegistryKeyExists( const char *path )
{
HKEY keyHandle;
if( RegOpenKeyEx( m_RootKey, path, 0, KEY_READ, &keyHandle ) == ERROR_SUCCESS )
return false;
}
-bool QVLCRegistry::RegistryValueExists( char *path, char *valueName )
+bool QVLCRegistry::RegistryValueExists( const char *path, const char *valueName )
{
HKEY keyHandle;
bool temp = false;
return temp;
}
-void QVLCRegistry::WriteRegistryInt( char *path, char *valueName, int value )
+void QVLCRegistry::WriteRegistryInt( const char *path, const char *valueName, int value )
{
HKEY keyHandle;
}
}
-void QVLCRegistry::WriteRegistryString( char *path, char *valueName, char *value )
+void QVLCRegistry::WriteRegistryString( const char *path, const char *valueName, const char *value )
{
HKEY keyHandle;
}
}
-void QVLCRegistry::WriteRegistryDouble( char *path, char *valueName, double value )
+void QVLCRegistry::WriteRegistryDouble( const char *path, const char *valueName, double value )
{
HKEY keyHandle;
if( RegCreateKeyEx( m_RootKey, path, 0, NULL, REG_OPTION_NON_VOLATILE,
}
}
-int QVLCRegistry::ReadRegistryInt( char *path, char *valueName, int default_value ) {
+int QVLCRegistry::ReadRegistryInt( const char *path, const char *valueName, int default_value ) {
HKEY keyHandle;
int tempValue;
DWORD size1;
return default_value;
}
-char * QVLCRegistry::ReadRegistryString( char *path, char *valueName, char *default_value )
+char * QVLCRegistry::ReadRegistryString( const char *path, const char *valueName, char *default_value )
{
HKEY keyHandle;
char *tempValue = NULL;
return default_value;
}
-double QVLCRegistry::ReadRegistryDouble( char *path, char *valueName, double default_value )
+double QVLCRegistry::ReadRegistryDouble( const char *path, const char *valueName, double default_value )
{
HKEY keyHandle;
double tempValue;
return default_value;
}
+int QVLCRegistry::DeleteValue( char *path, char *valueName )
+{
+ HKEY keyHandle;
+ long result;
+ if( (result = RegOpenKeyEx(m_RootKey, path, 0, KEY_WRITE, &keyHandle)) == ERROR_SUCCESS)
+ {
+ result = RegDeleteValue(keyHandle, valueName);
+ RegCloseKey(keyHandle);
+ }
+ //ERROR_SUCCESS = ok everything else you have a problem*g*,
+ return result;
+}
+
+long QVLCRegistry::DeleteKey( char *path, char *keyName )
+{
+ HKEY keyHandle;
+ long result;
+ if( (result = RegOpenKeyEx(m_RootKey, path, 0, KEY_WRITE, &keyHandle)) == ERROR_SUCCESS)
+ {
+ // be warned the key "keyName" will not be deleted if there are subkeys below him, values
+ // I think are ok and will be recusively deleted, but not keys...
+ // for this case we have to do a little bit more work!
+ result = RegDeleteKey(keyHandle, keyName);
+ RegCloseKey(keyHandle);
+ }
+ //ERROR_SUCCESS = ok everything else you have a problem*g*,
+ return result;
+}
+
#endif /* WIN32 */
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);
+ void WriteRegistryInt( const char *path, const char *valueName, int value);
+ void WriteRegistryString( const char *path, const char *valueName, const char *value);
+ void WriteRegistryDouble( const char *path, const 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 ReadRegistryInt( const char *path, const char *valueName, int default_value);
+ char * ReadRegistryString( const char *path, const char *valueName, char *default_value);
+ double ReadRegistryDouble( const char *path, const char *valueName, double default_value);
- bool RegistryKeyExists(char *path);
- bool RegistryValueExists(char *path, char *valueName);
+ bool RegistryKeyExists( const char *path);
+ bool RegistryValueExists( const char *path, const char *valueName);
+ int DeleteValue( char *path, char *valueName );
+ long DeleteKey( char *path, char *keyName );
};
#endif