aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmp/abstractengine.cpp10
-rw-r--r--src/qmmp/abstractengine.h7
-rw-r--r--src/qmmp/decoder.cpp2
-rw-r--r--src/qmmp/decoder.h5
-rw-r--r--src/qmmp/effect.cpp16
-rw-r--r--src/qmmp/effect.h8
-rw-r--r--src/qmmp/enginefactory.h4
-rw-r--r--src/qmmp/inputsource.cpp10
-rw-r--r--src/qmmp/inputsource.h8
-rw-r--r--src/qmmp/output.cpp17
-rw-r--r--src/qmmp/output.h10
-rw-r--r--src/qmmp/visual.cpp17
-rw-r--r--src/qmmp/visual.h13
-rw-r--r--src/qmmpui/commandlinemanager.cpp8
-rw-r--r--src/qmmpui/commandlinemanager.h5
-rw-r--r--src/qmmpui/commandlineoption.h2
-rw-r--r--src/qmmpui/configdialog.cpp42
-rw-r--r--src/qmmpui/general.cpp16
-rw-r--r--src/qmmpui/general.h13
-rw-r--r--src/qmmpui/uiloader.cpp10
-rw-r--r--src/qmmpui/uiloader.h9
21 files changed, 115 insertions, 117 deletions
diff --git a/src/qmmp/abstractengine.cpp b/src/qmmp/abstractengine.cpp
index b5691ac2e..e84d31066 100644
--- a/src/qmmp/abstractengine.cpp
+++ b/src/qmmp/abstractengine.cpp
@@ -40,7 +40,7 @@ QMutex *AbstractEngine::mutex()
// static methods
QList<EngineFactory*> *AbstractEngine::m_factories = 0;
QList<EngineFactory*> *AbstractEngine::m_disabledFactories = 0;
-QStringList AbstractEngine::m_files;
+QHash <EngineFactory*, QString> *AbstractEngine::m_files = 0;
void AbstractEngine::checkFactories()
{
@@ -48,7 +48,7 @@ void AbstractEngine::checkFactories()
{
QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
QStringList disabledNames = settings.value("Engine/disabled_plugins").toStringList ();
- m_files.clear();
+ m_files = new QHash <EngineFactory*, QString>;
m_factories = new QList<EngineFactory *>;
m_disabledFactories = new QList<EngineFactory *>;
@@ -69,7 +69,7 @@ void AbstractEngine::checkFactories()
if (factory)
{
m_factories->append(factory);
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
if(disabledNames.contains(factory->properties().shortName))
m_disabledFactories->append(factory);
@@ -166,10 +166,10 @@ bool AbstractEngine::isEnabled(EngineFactory* factory)
return !m_disabledFactories->contains(factory);
}
-QStringList AbstractEngine::files()
+QString AbstractEngine::file(EngineFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
QStringList AbstractEngine::protocols()
diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h
index 7c81d0048..ef3bac7bc 100644
--- a/src/qmmp/abstractengine.h
+++ b/src/qmmp/abstractengine.h
@@ -102,9 +102,10 @@ public:
*/
static bool isEnabled(EngineFactory* factory);
/*!
- * Returns a list of engine plugin files.
+ * Returns plugin file path.
+ * @param factory Engine plugin factory.
*/
- static QStringList files();
+ static QString file(EngineFactory *factory);
/*!
* Returns a list of supported protocols (including meta-protocols).
* This fuction ignores disabled engines.
@@ -116,7 +117,7 @@ private:
static void checkFactories();
static QList<EngineFactory*> *m_factories;
static QList<EngineFactory*> *m_disabledFactories;
- static QStringList m_files;
+ static QHash <EngineFactory*, QString> *m_files;
};
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp
index 1b556cfdd..7d22a9ca3 100644
--- a/src/qmmp/decoder.cpp
+++ b/src/qmmp/decoder.cpp
@@ -147,7 +147,7 @@ void Decoder::checkFactories()
}
}
-QString Decoder::filePath(DecoderFactory *factory)
+QString Decoder::file(DecoderFactory *factory)
{
checkFactories();
return m_files->value(factory);
diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h
index be1336bc7..59d547c98 100644
--- a/src/qmmp/decoder.h
+++ b/src/qmmp/decoder.h
@@ -128,9 +128,10 @@ public:
*/
static QList<DecoderFactory*> *factories();
/*!
- * Returns file path of the \b factory
+ * Returns plugin file path.
+ * @param factory Decoder plugin factory.
*/
- static QString filePath(DecoderFactory *factory);
+ static QString file(DecoderFactory *factory);
/*!
* Returns a list of supported protocols (including meta-protocols).
* This fuction ignores disabled decoders.
diff --git a/src/qmmp/effect.cpp b/src/qmmp/effect.cpp
index a172cd97b..4d035012e 100644
--- a/src/qmmp/effect.cpp
+++ b/src/qmmp/effect.cpp
@@ -78,18 +78,18 @@ bool effectCompareFunc(EffectFactory *e1, EffectFactory *e2)
//static members
QList<EffectFactory*> *Effect::m_factories = 0;
-QStringList Effect::m_files;
+QHash <EffectFactory*, QString> *Effect::m_files = 0;
void Effect::checkFactories()
{
if (!m_factories)
{
- m_files.clear();
m_factories = new QList<EffectFactory *>;
+ m_files = new QHash <EffectFactory*, QString>;
QDir pluginsDir (Qmmp::pluginsPath());
pluginsDir.cd("Effect");
- QHash <EffectFactory*, QString> m_hash;
+
foreach (QString fileName, pluginsDir.entryList(QDir::Files))
{
QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
@@ -106,15 +106,11 @@ void Effect::checkFactories()
if (factory)
{
m_factories->append(factory);
- m_hash.insert(factory, pluginsDir.absoluteFilePath(fileName));
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
}
}
qSort(m_factories->begin(), m_factories->end(), effectCompareFunc);
- foreach(EffectFactory *factory, *m_factories) //generate files list with same order
- {
- m_files << m_hash.value(factory);
- }
}
}
@@ -132,10 +128,10 @@ QList<EffectFactory*> *Effect::factories()
return m_factories;
}
-QStringList Effect::files()
+QString Effect::file(EffectFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
void Effect::setEnabled(EffectFactory* factory, bool enable)
diff --git a/src/qmmp/effect.h b/src/qmmp/effect.h
index eb047e2fc..cdba21985 100644
--- a/src/qmmp/effect.h
+++ b/src/qmmp/effect.h
@@ -22,6 +22,7 @@
#include <QList>
#include <QStringList>
+#include <QHash>
#include "audioparameters.h"
#include "buffer.h"
@@ -84,9 +85,10 @@ public:
*/
static QList<EffectFactory*> *factories();
/*!
- * Returns a list of effect plugin file names.
+ * Returns plugin file path.
+ * @param factory Effect plugin factory.
*/
- static QStringList files();
+ static QString file(EffectFactory *factory);
/*!
* Sets whether the effect plugin is enabled.
* @param factory Effect plugin factory.
@@ -106,7 +108,7 @@ private:
Qmmp::AudioFormat m_format;
static void checkFactories();
static QList<EffectFactory*> *m_factories;
- static QStringList m_files;
+ static QHash <EffectFactory*, QString> *m_files;
};
#endif
diff --git a/src/qmmp/enginefactory.h b/src/qmmp/enginefactory.h
index 6bc09af66..894fd8a7e 100644
--- a/src/qmmp/enginefactory.h
+++ b/src/qmmp/enginefactory.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -108,6 +108,6 @@ public:
virtual QTranslator *createTranslator(QObject *parent) = 0;
};
-Q_DECLARE_INTERFACE(EngineFactory, "EngineFactory/1.0");
+Q_DECLARE_INTERFACE(EngineFactory, "EngineFactory/1.0")
#endif
diff --git a/src/qmmp/inputsource.cpp b/src/qmmp/inputsource.cpp
index 2baa0ac32..79a6a6d8c 100644
--- a/src/qmmp/inputsource.cpp
+++ b/src/qmmp/inputsource.cpp
@@ -72,7 +72,7 @@ void InputSource::addMetaData(const QMap<Qmmp::MetaData, QString> &metaData)
// static methods
QList<InputSourceFactory*> *InputSource::m_factories = 0;
-QStringList InputSource::m_files;
+QHash <InputSourceFactory*, QString> *InputSource::m_files = 0;
InputSource *InputSource::create(const QString &url, QObject *parent)
{
@@ -109,10 +109,10 @@ QList<InputSourceFactory*> *InputSource::factories()
return m_factories;
}
-QStringList InputSource::files()
+QString InputSource::file(InputSourceFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
QStringList InputSource::protocols()
@@ -131,7 +131,7 @@ void InputSource::checkFactories()
{
if (!m_factories)
{
- m_files.clear();
+ m_files = new QHash <InputSourceFactory*, QString>;
m_factories = new QList<InputSourceFactory *>;
QDir pluginsDir (Qmmp::pluginsPath());
@@ -151,7 +151,7 @@ void InputSource::checkFactories()
if (factory)
{
m_factories->append(factory);
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
}
}
diff --git a/src/qmmp/inputsource.h b/src/qmmp/inputsource.h
index 583bb9ded..76cbc825a 100644
--- a/src/qmmp/inputsource.h
+++ b/src/qmmp/inputsource.h
@@ -26,6 +26,7 @@
#include <QStringList>
#include <QIODevice>
#include <QMap>
+#include <QHash>
#include "qmmp.h"
#include "inputsourcefactory.h"
@@ -99,9 +100,10 @@ public:
*/
static QList<InputSourceFactory *> *factories();
/*!
- * Returns a list of transport plugin file names.
+ * Returns plugin file path.
+ * @param factory Transport plugin factory.
*/
- static QStringList files();
+ static QString file(InputSourceFactory *factory);
/*!
* Returns a list of supported protocols.
*/
@@ -124,7 +126,7 @@ private:
bool m_hasMetaData;
static void checkFactories();
static QList<InputSourceFactory*> *m_factories;
- static QStringList m_files;
+ static QHash <InputSourceFactory*, QString> *m_files;
};
#endif // INPUTSOURCE_H
diff --git a/src/qmmp/output.cpp b/src/qmmp/output.cpp
index 44f2ef2df..c2ea483be 100644
--- a/src/qmmp/output.cpp
+++ b/src/qmmp/output.cpp
@@ -395,13 +395,13 @@ void Output::updateEqSettings()
// static methods
QList<OutputFactory*> *Output::m_factories = 0;
-QStringList Output::m_files;
+QHash <OutputFactory*, QString> *Output::m_files = 0;
void Output::checkFactories()
{
if (!m_factories)
{
- m_files.clear();
+ m_files = new QHash <OutputFactory*, QString>;
m_factories = new QList<OutputFactory *>;
QDir pluginsDir (Qmmp::pluginsPath());
@@ -421,19 +421,14 @@ void Output::checkFactories()
if (factory)
{
- Output::registerFactory ( factory );
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_factories->append (factory);
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
}
}
}
}
-void Output::registerFactory (OutputFactory *fact)
-{
- m_factories->append (fact);
-}
-
Output *Output::create (QObject *parent)
{
Output *output = 0;
@@ -458,10 +453,10 @@ QList<OutputFactory*> *Output::factories()
return m_factories;
}
-QStringList Output::files()
+QString Output::file(OutputFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
void Output::setCurrentFactory(OutputFactory* factory)
diff --git a/src/qmmp/output.h b/src/qmmp/output.h
index 32b05e7d8..d67318c51 100644
--- a/src/qmmp/output.h
+++ b/src/qmmp/output.h
@@ -12,6 +12,7 @@
#include <QThread>
#include <QEvent>
#include <QList>
+#include <QHash>
#include <QIODevice>
#include "visual.h"
#include "outputfactory.h"
@@ -124,9 +125,10 @@ public:
*/
static QList<OutputFactory*> *factories();
/*!
- * Returns a list of output plugin file names.
+ * Returns plugin file path.
+ * @param factory Output plugin factory.
*/
- static QStringList files();
+ static QString file(OutputFactory *factory);
/*!
* Selects current output \b factory.
*/
@@ -200,10 +202,8 @@ private:
qint64 m_visBufferSize;
QmmpSettings *m_settings;
static void checkFactories();
- static void registerFactory(OutputFactory *);
- //TODO use QMap instead
static QList<OutputFactory*> *m_factories;
- static QStringList m_files;
+ static QHash <OutputFactory*, QString> *m_files;
};
diff --git a/src/qmmp/visual.cpp b/src/qmmp/visual.cpp
index 7b4008570..0cf5dc13b 100644
--- a/src/qmmp/visual.cpp
+++ b/src/qmmp/visual.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008 by Ilya Kotov *
+ * Copyright (C) 2008-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -23,13 +23,10 @@
#include <QList>
#include <QMetaObject>
#include <QApplication>
-
#include "visualfactory.h"
#include "output.h"
-
#include "visual.h"
-
Visual::Visual(QWidget *parent) : QWidget(parent)
{
setAttribute(Qt::WA_DeleteOnClose, true);
@@ -71,9 +68,9 @@ void Visual::closeEvent (QCloseEvent *event)
//static members
QList<VisualFactory*> *Visual::m_factories = 0;
-QStringList Visual::m_files;
+QHash <VisualFactory*, QString> *Visual::m_files = 0;
QList<Visual*> Visual::m_visuals;
-QMap<VisualFactory*, Visual*> Visual::m_vis_map;
+QHash<VisualFactory*, Visual*> Visual::m_vis_map;
QWidget *Visual::m_parentWidget = 0;
QObject *Visual::m_receiver = 0;
const char *Visual::m_member = 0;
@@ -84,10 +81,10 @@ QList<VisualFactory*> *Visual::factories()
return m_factories;
}
-QStringList Visual::files()
+QString Visual::file(VisualFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
void Visual::setEnabled(VisualFactory* factory, bool enable)
@@ -200,8 +197,8 @@ void Visual::checkFactories()
{
if (!m_factories)
{
- m_files.clear();
m_factories = new QList<VisualFactory *>;
+ m_files = new QHash <VisualFactory*, QString>;
QDir pluginsDir (Qmmp::pluginsPath());
pluginsDir.cd("Visual");
@@ -221,7 +218,7 @@ void Visual::checkFactories()
if (factory)
{
m_factories->append(factory);
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
}
}
diff --git a/src/qmmp/visual.h b/src/qmmp/visual.h
index 27df2f0b1..6ee4c5bea 100644
--- a/src/qmmp/visual.h
+++ b/src/qmmp/visual.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2009 by Ilya Kotov *
+ * Copyright (C) 2008-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -23,7 +23,7 @@
#include <QMutex>
#include <QStringList>
#include <QWidget>
-#include <QMap>
+#include <QHash>
class Buffer;
class Decoder;
@@ -68,9 +68,10 @@ public:
*/
static QList<VisualFactory*> *factories();
/*!
- * Returns a list of visual plugin file names.
+ * Returns plugin file path.
+ * @param factory Visual plugin factory.
*/
- static QStringList files();
+ static QString file(VisualFactory *factory);
/*!
* Sets whether the visual plugin is enabled.
* @param factory Visual plugin factory.
@@ -127,10 +128,10 @@ private:
QMutex m_mutex;
static QList<VisualFactory*> *m_factories;
- static QStringList m_files;
+ static QHash <VisualFactory*, QString> *m_files;
static void checkFactories();
static QList<Visual*> m_visuals;
- static QMap<VisualFactory*, Visual*> m_vis_map; //internal visualization
+ static QHash<VisualFactory*, Visual*> m_vis_map; //internal visualization
static QWidget *m_parentWidget;
static QObject *m_receiver;
static const char *m_member;
diff --git a/src/qmmpui/commandlinemanager.cpp b/src/qmmpui/commandlinemanager.cpp
index e4e8dfab1..2409a2ce2 100644
--- a/src/qmmpui/commandlinemanager.cpp
+++ b/src/qmmpui/commandlinemanager.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2010 by Ilya Kotov *
+ * Copyright (C) 2008-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -33,14 +33,14 @@
using namespace std;
QList<CommandLineOption *> *CommandLineManager::m_options = 0;
-QStringList CommandLineManager::m_files;
+QHash<CommandLineOption*, QString> *CommandLineManager::m_files = 0;
void CommandLineManager::checkOptions()
{
if (!m_options)
{
- m_files.clear();
m_options = new QList<CommandLineOption *>;
+ m_files = new QHash<CommandLineOption*, QString>;
QDir pluginsDir (Qmmp::pluginsPath());
pluginsDir.cd("CommandLineOptions");
@@ -60,7 +60,7 @@ void CommandLineManager::checkOptions()
if (option)
{
m_options->append(option);
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_files->insert(option, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(option->createTranslator(qApp));
}
}
diff --git a/src/qmmpui/commandlinemanager.h b/src/qmmpui/commandlinemanager.h
index eab7c46e1..3e395cccb 100644
--- a/src/qmmpui/commandlinemanager.h
+++ b/src/qmmpui/commandlinemanager.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2010 by Ilya Kotov *
+ * Copyright (C) 2008-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -20,6 +20,7 @@
#ifndef COMMANDLINEMANAGER_H
#define COMMANDLINEMANAGER_H
+#include <QHash>
#include "general.h"
#include "commandlineoption.h"
@@ -49,7 +50,7 @@ public:
private:
static void checkOptions();
static QList<CommandLineOption *> *m_options;
- static QStringList m_files;
+ static QHash<CommandLineOption*, QString> *m_files;
};
#endif
diff --git a/src/qmmpui/commandlineoption.h b/src/qmmpui/commandlineoption.h
index bd06cf0ee..ad99077c5 100644
--- a/src/qmmpui/commandlineoption.h
+++ b/src/qmmpui/commandlineoption.h
@@ -63,6 +63,6 @@ public:
virtual ~CommandLineOption() {}
};
-Q_DECLARE_INTERFACE(CommandLineOption,"CommandLineOptionInterface/1.0");
+Q_DECLARE_INTERFACE(CommandLineOption,"CommandLineOptionInterface/1.0")
#endif
diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp
index 9017f4ee3..0dcb95117 100644
--- a/src/qmmpui/configdialog.cpp
+++ b/src/qmmpui/configdialog.cpp
@@ -160,10 +160,10 @@ void ConfigDialog::loadPluginsInfo()
load transport plugin information
*/
QTreeWidgetItem *item = new QTreeWidgetItem (m_ui->treeWidget, QStringList() << tr("Transports"));
- QList <InputSourceFactory *> *transports = InputSource::factories();
- QStringList files = InputSource::files();
- for (int i = 0; i < transports->count (); ++i)
- new PluginItem (item, transports->at(i), files.at (i));
+ foreach(InputSourceFactory *factory, *InputSource::factories())
+ {
+ new PluginItem (item, factory, InputSource::file(factory));
+ }
m_ui->treeWidget->addTopLevelItem(item);
item->setExpanded(true);
/*
@@ -172,7 +172,7 @@ void ConfigDialog::loadPluginsInfo()
item = new QTreeWidgetItem (m_ui->treeWidget, QStringList() << tr("Decoders"));
foreach(DecoderFactory *factory, *Decoder::factories())
{
- new PluginItem (item, factory, Decoder::filePath(factory));
+ new PluginItem (item, factory, Decoder::file(factory));
}
m_ui->treeWidget->addTopLevelItem(item);
item->setExpanded(true);
@@ -180,40 +180,40 @@ void ConfigDialog::loadPluginsInfo()
load audio engines information
*/
item = new QTreeWidgetItem (m_ui->treeWidget, QStringList() << tr("Engines"));
- QList <EngineFactory *> *engines = AbstractEngine::factories();
- files = AbstractEngine::files();
- for (int i = 0; i < engines->count (); ++i)
- new PluginItem (item, engines->at(i), files.at (i));
+ foreach(EngineFactory *factory, *AbstractEngine::factories())
+ {
+ new PluginItem (item, factory, AbstractEngine::file(factory));
+ }
m_ui->treeWidget->addTopLevelItem(item);
item->setExpanded(true);
/*
load effect plugin information
*/
item = new QTreeWidgetItem (m_ui->treeWidget, QStringList() << tr("Effects"));
- QList <EffectFactory *> *effects = Effect::factories();
- files = Effect::files();
- for (int i = 0; i < effects->count (); ++i)
- new PluginItem (item, effects->at(i), files.at (i));
+ foreach(EffectFactory *factory, *Effect::factories())
+ {
+ new PluginItem (item, factory, Effect::file(factory));
+ }
m_ui->treeWidget->addTopLevelItem(item);
item->setExpanded(true);
/*
load visual plugin information
*/
item = new QTreeWidgetItem (m_ui->treeWidget, QStringList() << tr("Visualization"));
- QList <VisualFactory *> *visuals = Visual::factories();
- files = Visual::files();
- for (int i = 0; i < visuals->count (); ++i)
- new PluginItem (item, visuals->at(i), files.at (i));
+ foreach(VisualFactory *factory, *Visual::factories())
+ {
+ new PluginItem (item, factory, Visual::file(factory));
+ }
m_ui->treeWidget->addTopLevelItem(item);
item->setExpanded(true);
/*
load general plugin information
*/
item = new QTreeWidgetItem (m_ui->treeWidget, QStringList() << tr("General"));
- QList <GeneralFactory *> *generals = General::factories();
- files = General::files();
- for (int i = 0; i < generals->count (); ++i)
- new PluginItem (item, generals->at(i), files.at (i));
+ foreach(GeneralFactory *factory, *General::factories())
+ {
+ new PluginItem (item, factory, General::file(factory));
+ }
m_ui->treeWidget->addTopLevelItem(item);
item->setExpanded(true);
diff --git a/src/qmmpui/general.cpp b/src/qmmpui/general.cpp
index 2ae7b7199..9fc1a8703 100644
--- a/src/qmmpui/general.cpp
+++ b/src/qmmpui/general.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2010 by Ilya Kotov *
+ * Copyright (C) 2008-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,16 +26,16 @@
#include "general.h"
QList<GeneralFactory*> *General::m_factories = 0;
-QStringList General::m_files;
-QMap <GeneralFactory*, QObject*> *General::m_generals = 0;
+QHash <GeneralFactory*, QString> *General::m_files = 0;
+QHash <GeneralFactory*, QObject*> *General::m_generals = 0;
QObject *General::m_parent = 0;
void General::checkFactories()
{
if (!m_factories)
{
- m_files.clear();
m_factories = new QList<GeneralFactory *>;
+ m_files = new QHash <GeneralFactory*, QString>;
QDir pluginsDir (Qmmp::pluginsPath());
pluginsDir.cd("General");
foreach (QString fileName, pluginsDir.entryList(QDir::Files))
@@ -54,7 +54,7 @@ void General::checkFactories()
if (factory)
{
m_factories->append(factory);
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
}
}
@@ -65,7 +65,7 @@ void General::create(QObject *parent)
{
if(m_generals)
return;
- m_generals = new QMap <GeneralFactory*, QObject*>();
+ m_generals = new QHash <GeneralFactory*, QObject*>();
m_parent = parent;
checkFactories();
foreach(GeneralFactory* factory, *General::factories())
@@ -84,10 +84,10 @@ QList<GeneralFactory*> *General::factories()
return m_factories;
}
-QStringList General::files()
+QString General::file(GeneralFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
void General::setEnabled(GeneralFactory* factory, bool enable)
diff --git a/src/qmmpui/general.h b/src/qmmpui/general.h
index 502867957..95cf76132 100644
--- a/src/qmmpui/general.h
+++ b/src/qmmpui/general.h
@@ -22,7 +22,7 @@
#include <QObject>
#include <QStringList>
-#include <QMap>
+#include <QHash>
#include "generalfactory.h"
/*! @brief The General class provides simple access to general plugins
@@ -41,9 +41,10 @@ public:
*/
static QList<GeneralFactory*> *factories();
/*!
- * Returns a list of the loaded general plugin files.
+ * Returns plugin file path.
+ * @param factory General plugin factory.
*/
- static QStringList files();
+ static QString file(GeneralFactory *factory);
/*!
* Sets whether the general plugin is enabled.
* @param factory General plugin factory.
@@ -63,10 +64,10 @@ public:
static bool isEnabled(GeneralFactory* factory);
private:
- static QList<GeneralFactory*> *m_factories;
- static QStringList m_files;
static void checkFactories();
- static QMap <GeneralFactory*, QObject*> *m_generals;
+ static QList<GeneralFactory*> *m_factories;
+ static QHash <GeneralFactory*, QObject*> *m_generals;
+ static QHash <GeneralFactory*, QString> *m_files;
static QObject *m_parent;
};
diff --git a/src/qmmpui/uiloader.cpp b/src/qmmpui/uiloader.cpp
index 0209d5682..9eb7cd11b 100644
--- a/src/qmmpui/uiloader.cpp
+++ b/src/qmmpui/uiloader.cpp
@@ -26,14 +26,14 @@
#include "uiloader.h"
QList<UiFactory*> *UiLoader::m_factories = 0;
-QStringList UiLoader::m_files;
+QHash <UiFactory*, QString> *UiLoader::m_files = 0;
void UiLoader::checkFactories()
{
if (!m_factories)
{
- m_files.clear();
m_factories = new QList<UiFactory *>;
+ m_files = new QHash <UiFactory*, QString>;
QDir pluginsDir(Qmmp::pluginsPath());
pluginsDir.cd("Ui");
foreach (QString fileName, pluginsDir.entryList(QDir::Files))
@@ -52,7 +52,7 @@ void UiLoader::checkFactories()
if (factory)
{
m_factories->append(factory);
- m_files << pluginsDir.absoluteFilePath(fileName);
+ m_files->insert(factory, pluginsDir.absoluteFilePath(fileName));
qApp->installTranslator(factory->createTranslator(qApp));
}
}
@@ -65,10 +65,10 @@ QList<UiFactory*> *UiLoader::factories()
return m_factories;
}
-QStringList UiLoader::files()
+QString UiLoader::file(UiFactory *factory)
{
checkFactories();
- return m_files;
+ return m_files->value(factory);
}
void UiLoader::select(UiFactory* factory)
diff --git a/src/qmmpui/uiloader.h b/src/qmmpui/uiloader.h
index 27b766f39..5ea46ccf3 100644
--- a/src/qmmpui/uiloader.h
+++ b/src/qmmpui/uiloader.h
@@ -21,7 +21,7 @@
#define UI_H
#include <QStringList>
-#include <QMap>
+#include <QHash>
#include "uifactory.h"
/*! @brief The UiLoader provides user interface plugins access
@@ -35,9 +35,10 @@ public:
*/
static QList<UiFactory*> *factories();
/*!
- * Returns a list of the loaded ui plugin files.
+ * Returns plugin file path.
+ * @param factory User interface plugin factory.
*/
- static QStringList files();
+ static QString file(UiFactory *factory);
/*!
* Selects active user interface factory.
* @param factory Ui plugin factory.
@@ -51,7 +52,7 @@ public:
private:
static QList<UiFactory*> *m_factories;
- static QStringList m_files;
+ static QHash <UiFactory*, QString> *m_files;
static void checkFactories();
};