summaryrefslogtreecommitdiffstats
path: root/src/config.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 19:09:31 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-01 19:09:31 +0000
commitf2cfda2a54780868dfe0af7bd652fcd4906547da (patch)
treec6ac23545528f5701818424f2af5f79ce3665e6c /src/config.h
downloadsoundkonverter-f2cfda2a54780868dfe0af7bd652fcd4906547da.tar.gz
soundkonverter-f2cfda2a54780868dfe0af7bd652fcd4906547da.zip
Added KDE3 version of SoundKonverter
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/soundkonverter@1097614 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/config.h')
-rwxr-xr-xsrc/config.h354
1 files changed, 354 insertions, 0 deletions
diff --git a/src/config.h b/src/config.h
new file mode 100755
index 0000000..130ddf9
--- /dev/null
+++ b/src/config.h
@@ -0,0 +1,354 @@
+
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "formatinfoloader.h"
+#include "conversionoptions.h"
+
+#include <qobject.h>
+#include <qvaluelist.h>
+#include <qstringlist.h>
+#include <qmap.h>
+
+class Logger;
+class ConvertPlugin;
+//class ConvertPluginLoader;
+class ReplayGainPlugin;
+//class ReplayGainPluginLoader;
+class RipperPlugin;
+struct ProfileData;
+
+
+/**
+ * @short Format items for the format list
+ * @author Daniel Faust <[email protected]>
+ * @version 0.3
+ */
+class FormatItem
+{
+public:
+ /**
+ * Constructor
+ */
+ FormatItem();
+
+ /**
+ * Destructor
+ */
+ virtual ~FormatItem();
+
+ QStringList mime_types;
+ QStringList extensions; // for easy use
+ QStringList correction_file_mime_types;
+ QStringList correction_file_extensions; // for easy use
+ QString description;
+ FormatInfo::CompressionType compressionType;
+ int compressionLevel; // the value from the config dialog
+ bool internalReplayGain;
+ int size;
+ QValueList<ConvertPlugin*> encoders;
+ QValueList<ConvertPlugin*> decoders;
+ QValueList<ReplayGainPlugin*> replaygains;
+ //QValueList<RepairerPlugin*> repairers;
+ ConvertPlugin* encoder;
+ ConvertPlugin* decoder;
+ ReplayGainPlugin* replaygain;
+ //RepairerPlugin* repairer;
+};
+
+
+/**
+ * @short Configuration class
+ * @author Daniel Faust <[email protected]>
+ * @version 0.3
+ */
+class Config : public QObject
+{
+ Q_OBJECT
+public:
+ /**
+ * Constructor
+ */
+ Config( Logger* );
+
+ /**
+ * Destructor
+ */
+ virtual ~Config();
+
+ /**
+ * Read the preferences from the configuration file
+ */
+ void read();
+
+ /**
+ * Write the preferences to the configuration file
+ */
+ void write( bool sync = true );
+
+ /**
+ * Read the profiles from the profiles file
+ */
+ void readProfiles();
+
+ /**
+ * Write the profiles to the profiles file
+ */
+ void writeProfiles();
+
+ /**
+ * Get the encoder for a given file format (mime type or extension)
+ */
+ ConvertPlugin* encoderForFormat( const QString &format );
+
+ /**
+ * Get the decoder for a given file format (mime type or extension)
+ */
+ ConvertPlugin* decoderForFormat( const QString &format );
+
+ /**
+ * Get the decoder for a given file format (mime type or extension)
+ */
+ ReplayGainPlugin* replaygainForFormat( const QString &format );
+
+ /**
+ * Get the format information for a given file format (mime type or extension)
+ */
+ FormatItem* getFormatItem( const QString &format );
+
+ /**
+ * Get the current ripper
+ */
+ RipperPlugin* getCurrentRipper() { return currentRipper; }
+
+ /**
+ * Set the current ripper
+ */
+ void setCurrentRipper( RipperPlugin* ripper ) { currentRipper = ripper; }
+
+ /**
+ * Returns a list of all loaded rippers
+ */
+ QValueList<RipperPlugin*> allRippers() { return rippers; }
+
+ /**
+ * Returns a list of all loaded converters
+ */
+ QValueList<ConvertPlugin*> allConverters() { return converters; }
+
+ /**
+ * Returns a list of all loaded replaygains
+ */
+ QValueList<ReplayGainPlugin*> allReplayGains() { return replaygains; }
+
+ /**
+ * Returns a list of all known file formats
+ */
+ QStringList allFormats();
+
+ /**
+ * Returns a list of all known encodeable file formats
+ */
+ QStringList allEncodableFormats();
+
+ /**
+ * Returns a list of all known lossy encodeable file formats
+ */
+ QStringList allLossyEncodableFormats();
+
+ /**
+ * Returns a list of all known lossless encodeable file formats
+ */
+ QStringList allLosslessEncodableFormats();
+
+ /**
+ * Returns a list of all known hybrid encodeable file formats
+ */
+ QStringList allHybridEncodableFormats();
+
+ /**
+ * Returns the extension of the correction file format for the given format
+ * If there is nor correction file format, the returned string is empty
+ */
+ QString getCorrectionExtension( const QString &format );
+
+ /**
+ * Returns a localized description for the given format
+ */
+ QString getFormatDescription( const QString &format );
+
+ /**
+ * Add a new profile
+ */
+ void addProfile( const QString &name, const ConversionOptions& profile );
+
+ /**
+ * Remove a new profile
+ */
+ void removeProfile( const QString &name );
+
+ /**
+ * Returns the conversion options for a profile
+ */
+ ConversionOptions getProfile( const QString &name );
+
+ /**
+ * Returns the name of the profile with conversion options @p options
+ */
+ QString getProfileName( const ConversionOptions& options );
+
+ /**
+ * Returns a list of all user defined profiles
+ */
+ QStringList getAllProfiles();
+
+ /**
+ * Returns true if the @p file can be added to the conversion list (can be decoded)
+ */
+ bool acceptFile( const QString& format );
+
+ /**
+ * Returns true if the @p file can be added to the replay gain tool
+ */
+ bool acceptReplayGainFile( const QString& format );
+
+ /**
+ * Returns a file filter suitable for the file open dialog
+ */
+ QString fileFilter( bool wav = true );
+
+ /**
+ * Returns a string list of supported file formats
+ */
+ QStringList fileTypes( bool wav = true );
+
+ /**
+ * Returns a file filter suitable for the file open dialog for the replay gain scanner
+ */
+ QString replayGainFilter();
+
+ /**
+ * Returns a string list of Replay Gain supported file formats
+ */
+ QStringList replayGainFileTypes();
+
+ struct Data {
+ struct General {
+ int startTab;
+ int lastTab;
+ QString defaultProfile;
+ QString defaultFormat;
+// QString defaultOutputDirectory;
+ QString specifyOutputDirectory;
+ QString metaDataOutputDirectory;
+ QString copyStructureOutputDirectory;
+ int priority;
+ bool useVFATNames;
+ int conflictHandling;
+ int numFiles;
+ int updateDelay;
+ bool askForNewOptions;
+ bool executeUserScript;
+ bool showToolBar;
+ } general;
+ struct Plugins {
+ bool checkForUpdates;
+ } plugins;
+ struct Environment {
+ QStringList directories;
+ QStringList foundPrograms;
+ } environment;
+ struct App {
+ int configVersion;
+ } app;
+ } data;
+
+ bool onlinePluginsChanged;
+ bool backendsChanged;
+
+ QMap<QString, QString> binaries;
+
+private:
+ struct PluginMapData {
+ int version;
+ QString filename;
+ QString type;
+ };
+
+ Logger* logger;
+
+ /** holds all known formats */
+ QValueList<FormatItem> formats;
+
+ /** holds all known rippers */
+ QValueList<RipperPlugin*> rippers;
+ RipperPlugin* currentRipper;
+
+ /** holds all known converters */
+ QValueList<ConvertPlugin*> converters;
+ /** holds all known replaygain apps */
+ QValueList<ReplayGainPlugin*> replaygains;
+ /* holds all known file repairing apps */
+// QValueList<RepairerItem> repairer;
+
+ //ConvertPluginLoader* convertPluginLoader;
+ //ReplayGainPluginLoader* replaygainPluginLoader;
+
+ /** holds all user defined profiles */
+ QValueList<ProfileData> profiles;
+
+ /**
+ * Load the files with the file infos (format descriptions, file size, etc.)
+ */
+ void loadFileInfos();
+
+ /**
+ * Load all plugins that can be found
+ */
+ void loadPlugins();
+
+ /**
+ * A plugin wants to register it's features for a file format
+ * @p binary The binary name of the app that wants to register it's features
+ * @p extension The file name extension for that is wants to register
+ * @p features The features of the app for that extension
+ */
+ void registerFormatFeatures( const QString &mime_type,
+ ConvertPlugin* encoder = 0, ConvertPlugin* decoder = 0,
+ ReplayGainPlugin* replaygain = 0/*, RepairPlugin* repairer = 0*/,
+ const QString &correction_file_mime_type = QString::null );
+
+ /**
+ * Generate the service menu
+ */
+ void writeServiceMenu();
+
+ /**
+ * Copy the amarok script
+ */
+ void writeAmarokScript();
+
+ /*
+ * We have new inforamtion for a file format
+ * @p extension The file name extension for that is wants to register
+ * @p newSynonym Register a new synonym for this file format?
+ * @p newMimeType Register a new mime type for this file format?
+ * @p newDescription Register a new description for this file format?
+ * @p newSize Register a new size for this file format for calculating the progress?
+ */
+ /*void registerFileFormat( const QString &extension, const QString &newSynonym = QString::null,
+ const QString &newMimeType = QString::null,
+ const QString &newDescription = QString::null,
+ int newSize = 0, FormatInfo::CompressionType newCompressionType = FormatInfo::lossy );*/
+ //void registerFileFormat( const QString &mime_type, const QString &option, const QString &value );
+ // NOTE this function is obsolete.
+ // after loading all plugins and creating all neccessary file format items,
+ // sk will search for format info files and update the items.
+
+signals:
+ void configChanged();
+
+};
+
+#endif // CONFIG_H