aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/qmmpuiplugincache.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-05-14 11:57:45 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-05-14 11:57:45 +0000
commitd8073e08b4b58ce02ef94ff124a8724f7d466cae (patch)
treefe7799f3d735bcbf1212c82c30200b3078febb39 /src/qmmpui/qmmpuiplugincache.cpp
parent1826b12a65687057909cc3e3b4836b0f8bcafee6 (diff)
downloadqmmp-d8073e08b4b58ce02ef94ff124a8724f7d466cae.tar.gz
qmmp-d8073e08b4b58ce02ef94ff124a8724f7d466cae.tar.bz2
qmmp-d8073e08b4b58ce02ef94ff124a8724f7d466cae.zip
added file dialog cache
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3467 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/qmmpuiplugincache.cpp')
-rw-r--r--src/qmmpui/qmmpuiplugincache.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/qmmpui/qmmpuiplugincache.cpp b/src/qmmpui/qmmpuiplugincache.cpp
index b4a88ac2f..2586f01ed 100644
--- a/src/qmmpui/qmmpuiplugincache.cpp
+++ b/src/qmmpui/qmmpuiplugincache.cpp
@@ -26,6 +26,7 @@
#include <QTranslator>
#include "generalfactory.h"
#include "uifactory.h"
+#include "filedialogfactory.h"
#include "qmmpuiplugincache_p.h"
QmmpUiPluginCache::QmmpUiPluginCache(const QString &file, QSettings *settings)
@@ -34,6 +35,7 @@ QmmpUiPluginCache::QmmpUiPluginCache(const QString &file, QSettings *settings)
m_instance = 0;
m_generalFactory = 0;
m_uiFactory = 0;
+ m_fileDialogFactory = 0;
m_priority = 0;
bool update = false;
QFileInfo info(file);
@@ -73,6 +75,11 @@ QmmpUiPluginCache::QmmpUiPluginCache(const QString &file, QSettings *settings)
m_shortName = factory->properties().shortName;
m_priority = 0;
}
+ else if(FileDialogFactory *factory = fileDialogFactory())
+ {
+ m_shortName = factory->properties().shortName;
+ m_priority = 0;
+ }
else
{
qWarning("QmmpUiPluginCache: unknown plugin type: %s", qPrintable(m_path));
@@ -93,6 +100,39 @@ QmmpUiPluginCache::QmmpUiPluginCache(const QString &file, QSettings *settings)
settings->endGroup();
}
+QmmpUiPluginCache::QmmpUiPluginCache(QObject *instance)
+{
+ m_error = false;
+ m_instance = instance;
+ m_generalFactory = 0;
+ m_uiFactory = 0;
+ m_fileDialogFactory = 0;
+ m_priority = 0;
+
+ if(GeneralFactory *factory = generalFactory())
+ {
+ m_shortName = factory->properties().shortName;
+ m_priority = 0;
+ }
+ else if(UiFactory *factory = uiFactory())
+ {
+ m_shortName = factory->properties().shortName;
+ m_priority = 0;
+ }
+ else if(FileDialogFactory *factory = fileDialogFactory())
+ {
+ m_shortName = factory->properties().shortName;
+ m_priority = 0;
+ }
+ else
+ {
+ qWarning("QmmpUiPluginCache: unknown plugin type");
+ m_error = true;
+ return;
+ }
+ qDebug("QmmpUiPluginCache: registered internal factory %s", qPrintable(m_shortName));
+}
+
const QString QmmpUiPluginCache::shortName() const
{
return m_shortName;
@@ -135,6 +175,17 @@ UiFactory *QmmpUiPluginCache::uiFactory()
return m_uiFactory;
}
+FileDialogFactory *QmmpUiPluginCache::fileDialogFactory()
+{
+ if(!m_fileDialogFactory)
+ {
+ m_fileDialogFactory = qobject_cast<FileDialogFactory *> (instance());
+ if(m_fileDialogFactory)
+ qApp->installTranslator(m_fileDialogFactory->createTranslator(qApp));
+ }
+ return m_fileDialogFactory;
+}
+
QObject *QmmpUiPluginCache::instance()
{
if(m_error)