From 358003e84b713bf7c99d57f13e0eda0a02c97678 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sun, 9 Mar 2014 13:51:11 +0000 Subject: added 'file types' settings page git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4139 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/configdialog.cpp | 8 ++ src/qmmpui/forms/prefassociations.ui | 161 ++++++++++++++--------------------- src/qmmpui/prefassociations.cpp | 26 +++--- src/qmmpui/prefassociations.h | 10 +-- src/qmmpui/qmmpui.pro | 11 +-- src/qmmpui/winfileassoc.cpp | 26 +++--- src/qmmpui/winfileassoc.h | 8 +- 7 files changed, 114 insertions(+), 136 deletions(-) diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp index 3da209339..6d113aa31 100644 --- a/src/qmmpui/configdialog.cpp +++ b/src/qmmpui/configdialog.cpp @@ -51,6 +51,7 @@ #include "mediaplayer.h" #include "qmmpuisettings.h" #include "playlistmodel.h" +#include "prefassociations.h" #include "configdialog.h" ConfigDialog::ConfigDialog (QWidget *parent) : QDialog (parent) @@ -74,6 +75,13 @@ ConfigDialog::ConfigDialog (QWidget *parent) : QDialog (parent) //setup icons m_ui->preferencesButton->setIcon(QIcon::fromTheme("configure")); m_ui->informationButton->setIcon(QIcon::fromTheme("dialog-information")); + //file associations +#ifdef Q_OS_WIN + QWidget *widget = new PrefAssociations(this); + m_ui->stackedWidget->addWidget(widget); + m_ui->contentsWidget->addItem(tr("File Types")); + m_ui->contentsWidget->item(m_ui->contentsWidget->count() - 1)->setIcon(QIcon(":associations.png")); +#endif } ConfigDialog::~ConfigDialog() diff --git a/src/qmmpui/forms/prefassociations.ui b/src/qmmpui/forms/prefassociations.ui index f1a62e08d..2960b6bda 100644 --- a/src/qmmpui/forms/prefassociations.ui +++ b/src/qmmpui/forms/prefassociations.ui @@ -1,110 +1,75 @@ - + + PrefAssociations - - + + 0 0 - 531 - 489 + 547 + 348 - - - 0 - - - 0 - - - - - 0 + + + + + Media files handled by Qmmp: + + + Qt::AlignVCenter + + + true + + + + + + + QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed + + + QAbstractItemView::MultiSelection + + + QListView::ListMode + + + true + + + true - - - File types - - - - 9 - - - 6 - - - - - Media files handled by SMPlayer: - - - Qt::AlignVCenter - - - true - - - - - - - QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers - - - QAbstractItemView::MultiSelection - - - QListView::ListMode - - - true - - - true - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 311 - 20 - - - - - - - - Select All - - - - - - - Select None - - - - - - - + + + + Select All + + + + + + + Select None + + + + + + + Qt::Horizontal + + + + 364 + 20 + + + + diff --git a/src/qmmpui/prefassociations.cpp b/src/qmmpui/prefassociations.cpp index a60498e80..89c12bca2 100644 --- a/src/qmmpui/prefassociations.cpp +++ b/src/qmmpui/prefassociations.cpp @@ -23,18 +23,18 @@ #include "prefassociations.h" -#include "images.h" +//#include "images.h" #include #include #include #include "winfileassoc.h" -#include "extensions.h" +//#include "extensions.h" static Qt::CheckState CurItemCheckState = Qt::Unchecked; PrefAssociations::PrefAssociations(QWidget * parent, Qt::WindowFlags f) -: PrefWidget(parent, f ) +: QWidget(parent, f ) { setupUi(this); @@ -52,7 +52,7 @@ PrefAssociations::PrefAssociations(QWidget * parent, Qt::WindowFlags f) //connect(lpbButton, SIGNAL(clicked(bool)), this, SLOT(launchAppDefaults())); } - Extensions e; + /*Extensions e; for (int n=0; n < e.multimedia().count(); n++) { addItem( e.multimedia()[n] ); } @@ -60,7 +60,7 @@ PrefAssociations::PrefAssociations(QWidget * parent, Qt::WindowFlags f) for (int n=0; n < e.playlist().count(); n++) { addItem( e.playlist()[n] ); } - retranslateStrings(); + retranslateStrings();*/ something_changed = false; } @@ -126,7 +126,7 @@ void PrefAssociations::addItem(QString label) void PrefAssociations::refreshList() { m_regExtensions.clear(); - WinFileAssoc ().GetRegisteredExtensions(Extensions().multimedia(), m_regExtensions); + //WinFileAssoc ().GetRegisteredExtensions(Extensions().multimedia(), m_regExtensions); for (int k = 0; k < listWidget->count(); k++) { @@ -207,21 +207,21 @@ QString PrefAssociations::sectionName() { return tr("File Types"); } -QPixmap PrefAssociations::sectionIcon() { +/*QPixmap PrefAssociations::sectionIcon() { return Images::icon("pref_associations", 22); -} +}*/ -void PrefAssociations::retranslateStrings() { +/*void PrefAssociations::retranslateStrings() { retranslateUi(this); createHelp(); -} +}*/ void PrefAssociations::createHelp() { - clearHelp(); + //clearHelp(); - setWhatsThis(selectAll, tr("Select all"), + /*setWhatsThis(selectAll, tr("Select all"), tr("Check all file types in the list")); setWhatsThis(selectNone, tr("Select none"), @@ -232,7 +232,7 @@ void PrefAssociations::createHelp() { "When you click Apply, the checked files will be associated with " "SMPlayer. If you uncheck a media type, the file association will " "be restored.") + - tr(" Note: (Restoration doesn't work on Windows Vista).")); + tr(" Note: (Restoration doesn't work on Windows Vista)."));*/ } #include "moc_prefassociations.cpp" diff --git a/src/qmmpui/prefassociations.h b/src/qmmpui/prefassociations.h index 8171cefe3..ff44677fa 100644 --- a/src/qmmpui/prefassociations.h +++ b/src/qmmpui/prefassociations.h @@ -25,11 +25,11 @@ #define _PREFASSOCIATIONS_H_ #include "ui_prefassociations.h" -#include "prefwidget.h" +//#include "prefwidget.h" class Preferences; -class PrefAssociations : public PrefWidget, public Ui::PrefAssociations +class PrefAssociations : public QWidget, public Ui::PrefAssociations { Q_OBJECT @@ -38,7 +38,7 @@ public: ~PrefAssociations(); virtual QString sectionName(); - virtual QPixmap sectionIcon(); + //virtual QPixmap sectionIcon(); // Pass data to the dialog void setData(Preferences * pref); @@ -56,8 +56,8 @@ protected: protected: virtual void createHelp(); -protected: - virtual void retranslateStrings(); +/*protected: + virtual void retranslateStrings();*/ public slots: void selectAllClicked(bool); diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro index d4a4832e9..3733b2b2d 100644 --- a/src/qmmpui/qmmpui.pro +++ b/src/qmmpui/qmmpui.pro @@ -25,11 +25,12 @@ unix { win32 { TARGET = ../../../bin/qmmpui - LIBS += -L../../bin -lqmmp0 - HEADERS += prefassociations.h \ - winfileaccos.h - SOURCES += prefassociations.cpp \ - winfileaccos.cpp + LIBS += -L../../bin -lqmmp0 -lole32 + HEADERS += winfileassoc.h \ + prefassociations.h + SOURCES += winfileassoc.cpp \ + prefassociations.cpp + FORMS += forms/prefassociations.ui } HEADERS += general.h \ diff --git a/src/qmmpui/winfileassoc.cpp b/src/qmmpui/winfileassoc.cpp index f8a5a0f85..50e2b42f6 100644 --- a/src/qmmpui/winfileassoc.cpp +++ b/src/qmmpui/winfileassoc.cpp @@ -69,7 +69,7 @@ int WinFileAssoc::CreateFileAssociations(const QStringList &fileExtensions) // Check if classId exists in the registry if (!RegCR.contains(m_ClassId) && !RegCU.contains("Software/Classes/" + m_ClassId)) { // If doesn't exist (user didn't run the setup program), try to create the ClassId for current user. - if (!CreateClassId(QApplication::applicationFilePath(), "SMPlayer Media Player")) + if (!CreateClassId(QApplication::applicationFilePath(), "Qt-based Multimedia Player")) return 0; } @@ -91,18 +91,18 @@ int WinFileAssoc::CreateFileAssociations(const QStringList &fileExtensions) } if (KeyVal != m_ClassId) - RegCU.setValue(CUKeyName + "/MPlayer_Backup", KeyVal); + RegCU.setValue(CUKeyName + "/Qmmp_Backup", KeyVal); // Save last ProgId and Application values from the Exts key KeyVal = RegCU.value(ExtKeyName + "/Progid").toString(); if (KeyVal != m_ClassId && KeyVal != m_ClassId2) - RegCU.setValue(ExtKeyName + "/MPlayer_Backup_ProgId", KeyVal); + RegCU.setValue(ExtKeyName + "/Qmmp_Backup_ProgId", KeyVal); KeyVal = RegCU.value(ExtKeyName + "/Application").toString(); if (KeyVal != m_ClassId || KeyVal != m_ClassId2) - RegCU.setValue(ExtKeyName + "/MPlayer_Backup_Application", KeyVal); + RegCU.setValue(ExtKeyName + "/Qmmp_Backup_Application", KeyVal); // Create the associations RegCU.setValue(CUKeyName + "/.", m_ClassId); // Extension class @@ -146,7 +146,7 @@ bool WinFileAssoc::GetRegisteredExtensions(const QStringList &extensionsToCheck, if (CurClassId.size()) { // Registered with Open With... / ProgId ? bRegistered = (CurClassId == m_ClassId) || (0 == CurClassId.compare(m_ClassId2, Qt::CaseInsensitive)); } else if (CurAppId.size()) { - // If user uses Open With..., explorer creates it's own ClassId under Application, usually "smplayer.exe" + // If user uses Open With..., explorer creates it's own ClassId under Application, usually "qmmp.exe" bRegistered = (CurAppId == m_ClassId) || (0 == CurAppId.compare(m_ClassId2, Qt::CaseInsensitive)); } else { // No classId means that no associations exists in Default Programs or Explorer @@ -185,9 +185,9 @@ int WinFileAssoc::RestoreFileAssociations(const QStringList &fileExtensions) int count = 0; foreach(const QString & fileExtension, fileExtensions) { QString ExtKeyName = QString("Software/Microsoft/Windows/CurrentVersion/Explorer/FileExts/.%1").arg(fileExtension); - QString OldProgId = RegCU.value(ExtKeyName + "/MPlayer_Backup_ProgId").toString(); - QString OldApp = RegCU.value(ExtKeyName + "/MPlayer_Backup_Application").toString(); - QString OldClassId = RegCU.value("Software/Classes/." + fileExtension + "/MPlayer_Backup").toString(); + QString OldProgId = RegCU.value(ExtKeyName + "/Qmmp_Backup_ProgId").toString(); + QString OldApp = RegCU.value(ExtKeyName + "/Qmmp_Backup_Application").toString(); + QString OldClassId = RegCU.value("Software/Classes/." + fileExtension + "/Qmmp_Backup").toString(); // Restore old explorer ProgId if (!OldProgId.isEmpty() && OldProgId != m_ClassId) @@ -218,11 +218,11 @@ int WinFileAssoc::RestoreFileAssociations(const QStringList &fileExtensions) } // Remove our keys: - // CurrentUserClasses/.ext/MPlayerBackup + // CurrentUserClasses/.ext/Qmmp_Backup // Explorer: Backup_Application and Backup_ProgId - RegCU.remove("Software/Classes/." + fileExtension + "/MPlayer_Backup"); - RegCU.remove(ExtKeyName + "/MPlayer_Backup_Application"); - RegCU.remove(ExtKeyName + "/MPlayer_Backup_ProgId"); + RegCU.remove("Software/Classes/." + fileExtension + "/Qmmp_Backup"); + RegCU.remove(ExtKeyName + "/Qmmp_Backup_Application"); + RegCU.remove(ExtKeyName + "/Qmmp_Backup_ProgId"); } return count; } @@ -251,7 +251,7 @@ bool WinFileAssoc::CreateClassId(const QString &executablePath, const QString &f Reg.setValue(classId + "/DefaultIcon/.", QString("\"%1\",1").arg(appPath)); // Add "Enqueue" command - Reg.setValue(classId + "/shell/enqueue/.", QObject::tr("Enqueue in SMPlayer")); + Reg.setValue(classId + "/shell/enqueue/.", QObject::tr("Enqueue in Qmmp")); Reg.setValue(classId + "/shell/enqueue/command/.", QString("\"%1\" -add-to-playlist \"%2\"").arg(appPath, "%1")); return true; } diff --git a/src/qmmpui/winfileassoc.h b/src/qmmpui/winfileassoc.h index e3c34d97d..7c5a5b351 100644 --- a/src/qmmpui/winfileassoc.h +++ b/src/qmmpui/winfileassoc.h @@ -27,11 +27,15 @@ #include #include + +/** + @internal +*/ class WinFileAssoc { protected: QString m_ClassId; //Application ClassId - QString m_ClassId2; //The ClassId created by explorer if user selects 'Open With...', usually smplayer.exe + QString m_ClassId2; //The ClassId created by explorer if user selects 'Open With...', usually qmmp.exe QString m_AppName; protected: @@ -40,7 +44,7 @@ protected: bool VistaGetDefaultApps(const QStringList &extensions, QStringList& registeredExt); int VistaSetAppsAsDefault(const QStringList& extensions); public: - WinFileAssoc(const QString ClassId = "MPlayerFileVideo", const QString AppName="SMPlayer"); + WinFileAssoc(const QString ClassId = "QmmpFileAudio", const QString AppName="Qmmp"); //Checks the registry to see which extensions are registered with SMPlayer bool GetRegisteredExtensions(const QStringList& extensionsToCheck, QStringList& registeredExtensions); -- cgit v1.2.3-13-gbd6f