~ubuntu-branches/ubuntu/wily/smplayer/wily

« back to all changes in this revision

Viewing changes to src/winfileassoc.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Maia Kozheva
  • Date: 2009-11-04 12:45:38 UTC
  • mto: (1.1.10 upstream) (3.1.3 squeeze)
  • mto: This revision was merged to the branch mainline in revision 15.
  • Revision ID: james.westby@ubuntu.com-20091104124538-i5ntu42ni0e1njnv
ImportĀ upstreamĀ versionĀ 0.6.8

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
#include <QApplication>
42
42
#include <QFileInfo>
43
43
 
44
 
/*
45
 
   Note by RVM: Added some #ifdef Q_OS_WIN to allow the file to compile under linux. 
46
 
   It should compile the code for Windows XP.
47
 
   The registry entries are saved on a file named HKEY_CURRENT_USER.
48
 
*/
49
 
 
50
44
WinFileAssoc::WinFileAssoc( const QString ClassId, const QString AppName )
51
45
{
52
46
        m_ClassId = ClassId;
58
52
//Returns number of extensions processed successfully. 
59
53
int WinFileAssoc::CreateFileAssociations(const QStringList& fileExtensions)
60
54
{
61
 
#ifdef Q_OS_WIN
62
 
        if (QSysInfo::WindowsVersion == QSysInfo::WV_VISTA)
 
55
        if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA)
63
56
        {
64
57
                return VistaSetAppsAsDefault(fileExtensions); 
65
58
        }
66
 
#endif
67
59
 
68
60
        QSettings RegCR ("HKEY_CLASSES_ROOT", QSettings::NativeFormat); //Read only on NT+
69
61
        QSettings RegCU ("HKEY_CURRENT_USER", QSettings::NativeFormat);
74
66
        if (RegCR.status() != QSettings::NoError)
75
67
                return 0; 
76
68
 
77
 
#ifdef Q_OS_WIN
78
69
        if (QSysInfo::WindowsVersion < QSysInfo::WV_NT && !RegCR.isWritable())  //Win98
79
70
                return 0; 
80
 
#endif
81
71
 
82
72
        //Check if classId exists in the registry
83
73
        if (!RegCR.contains(m_ClassId) && !RegCU.contains("Software/Classes/" + m_ClassId))
120
110
                        RegCU.setValue(ExtKeyName + "/MPlayer_Backup_Application", KeyVal); 
121
111
 
122
112
                //Create the associations
123
 
#ifdef Q_OS_WIN
124
113
                if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT)
125
 
#endif
126
114
                {
127
115
                        RegCU.setValue(CUKeyName + "/.", m_ClassId);            //Extension class
128
116
                        RegCU.setValue(ExtKeyName + "/Progid", m_ClassId);      //Explorer FileExt association
129
117
 
130
118
                }
131
 
#ifdef Q_OS_WIN
132
119
                else
133
120
                {
134
121
                        //Windows ME/98/95 support
135
122
                        RegCR.setValue("." + fileExtension + "/.", m_ClassId); 
136
123
                }
137
 
#endif
138
124
 
139
125
                if (RegCU.status() == QSettings::NoError && RegCR.status() == QSettings::NoError)
140
126
                        count++; 
150
136
{
151
137
        registeredExtensions.clear(); 
152
138
 
153
 
#ifdef Q_OS_WIN
154
 
        if (QSysInfo::WindowsVersion == QSysInfo::WV_VISTA)
 
139
        if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA)
155
140
        {
156
141
                return VistaGetDefaultApps(extensionsToCheck, registeredExtensions); 
157
142
        }
158
 
#endif
159
143
 
160
144
        QSettings RegCR ("HKEY_CLASSES_ROOT", QSettings::NativeFormat);
161
145
        QSettings RegCU ("HKEY_CURRENT_USER", QSettings::NativeFormat);
171
155
                bool bRegistered = false; 
172
156
                //Check the explorer extension (Always use this program to open this kind of file...)
173
157
 
174
 
#ifdef Q_OS_WIN
175
158
                if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT)
176
 
#endif
177
159
                {
178
160
                        QString FileExtsKey = QString("Software/Microsoft/Windows/CurrentVersion/Explorer/FileExts/.%1").arg(fileExtension);
179
161
                        QString CurClassId = RegCU.value(FileExtsKey + "/Progid").toString(); 
214
196
//Returns number of extensions successfully processed (error if fileExtensions.count() != return value && count > 0).
215
197
int WinFileAssoc::RestoreFileAssociations(const QStringList& fileExtensions)
216
198
{
217
 
#ifdef Q_OS_WIN
218
 
        if (QSysInfo::WindowsVersion == QSysInfo::WV_VISTA)
 
199
        if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA)
219
200
                return 0; //Not supported by the API
220
 
#endif
221
201
 
222
202
        QSettings RegCR ("HKEY_CLASSES_ROOT", QSettings::NativeFormat);
223
203
        QSettings RegCU ("HKEY_CURRENT_USER", QSettings::NativeFormat);
228
208
        if (RegCR.status() != QSettings::NoError)
229
209
                return 0; 
230
210
 
231
 
#ifdef Q_OS_WIN
232
211
        if (QSysInfo::WindowsVersion < QSysInfo::WV_NT && !RegCR.isWritable())  //Win98
233
212
                return 0; 
234
 
#endif
235
213
 
236
214
        int count = 0; 
237
215
        foreach(const QString& fileExtension, fileExtensions)
261
239
                                RegCU.remove(ExtKeyName + "/Application"); 
262
240
                }
263
241
 
264
 
#ifdef Q_OS_WIN
265
242
                if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT)
266
 
#endif
267
243
                {
268
244
                        //Restore old association for current user
269
245
                        if (!OldClassId.isEmpty() && OldClassId != m_ClassId)
274
250
                                        RegCU.remove("Software/Classes/." + fileExtension); 
275
251
                        }
276
252
                }
277
 
#ifdef Q_OS_WIN
278
253
                else
279
254
                {
280
255
                        //Windows 98 ==> Write to HKCR
286
261
                                        RegCR.remove("." + fileExtension); 
287
262
                        }
288
263
                }
289
 
#endif
 
264
 
290
265
                //Remove our keys:
291
266
                //CurrentUserClasses/.ext/MPlayerBackup
292
267
                //Explorer: Backup_Application and Backup_ProgId
304
279
        QString RootKeyName;
305
280
        QString classId; 
306
281
 
307
 
#ifdef Q_OS_WIN
308
282
        if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT) 
309
 
#endif
310
283
        {
311
284
                classId = "Software/Classes/" + m_ClassId; 
312
285
                RootKeyName = "HKEY_CURRENT_USER";
313
286
        }
314
 
#ifdef Q_OS_WIN
315
287
        else 
316
288
        {
317
289
                classId = m_ClassId; 
318
290
                RootKeyName = "HKEY_CLASSES_ROOT";      //Windows 95/98/ME
319
291
        }
320
 
#endif
321
292
 
322
293
        QSettings Reg (RootKeyName, QSettings::NativeFormat);
323
294
        if (!Reg.isWritable() || Reg.status() != QSettings::NoError)
342
313
        QString RootKeyName;
343
314
        QString classId; 
344
315
 
345
 
#ifdef Q_OS_WIN
346
316
        if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT) 
347
 
#endif
348
317
        {
349
318
                classId = "Software/Classes/" + m_ClassId; 
350
319
                RootKeyName = "HKEY_CURRENT_USER";
351
320
        }
352
 
#ifdef Q_OS_WIN
353
321
        else 
354
322
        {
355
323
                classId = m_ClassId; 
356
324
                RootKeyName = "HKEY_CLASSES_ROOT";      //Windows 95/98/ME
357
325
        }
358
 
#endif
359
326
 
360
327
        QSettings RegCU (RootKeyName, QSettings::NativeFormat);
361
328