summaryrefslogtreecommitdiffstats
path: root/src/configuration.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/configuration.h')
-rw-r--r--src/configuration.h355
1 files changed, 355 insertions, 0 deletions
diff --git a/src/configuration.h b/src/configuration.h
new file mode 100644
index 0000000..c6488c1
--- /dev/null
+++ b/src/configuration.h
@@ -0,0 +1,355 @@
+
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "formatinfoloader.h"
+#include "conversionoptions.h"
+
+#include <tqobject.h>
+#include <tqvaluelist.h>
+#include <tqstringlist.h>
+#include <tqmap.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 <hessijames@gmail.com>
+ * @version 0.3
+ */
+class FormatItem
+{
+public:
+ /**
+ * Constructor
+ */
+ FormatItem();
+
+ /**
+ * Destructor
+ */
+ virtual ~FormatItem();
+
+ TQStringList mime_types;
+ TQStringList extensions; // for easy use
+ TQStringList correction_file_mime_types;
+ TQStringList correction_file_extensions; // for easy use
+ TQString description;
+ FormatInfo::CompressionType compressionType;
+ int compressionLevel; // the value from the config dialog
+ bool internalReplayGain;
+ int size;
+ TQValueList<ConvertPlugin*> encoders;
+ TQValueList<ConvertPlugin*> decoders;
+ TQValueList<ReplayGainPlugin*> replaygains;
+ //TQValueList<RepairerPlugin*> repairers;
+ ConvertPlugin* encoder;
+ ConvertPlugin* decoder;
+ ReplayGainPlugin* replaygain;
+ //RepairerPlugin* repairer;
+};
+
+
+/**
+ * @short Configuration class
+ * @author Daniel Faust <hessijames@gmail.com>
+ * @version 0.3
+ */
+class Config : public TQObject
+{
+ TQ_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 TQString &format );
+
+ /**
+ * Get the decoder for a given file format (mime type or extension)
+ */
+ ConvertPlugin* decoderForFormat( const TQString &format );
+
+ /**
+ * Get the decoder for a given file format (mime type or extension)
+ */
+ ReplayGainPlugin* replaygainForFormat( const TQString &format );
+
+ /**
+ * Get the format information for a given file format (mime type or extension)
+ */
+ FormatItem* getFormatItem( const TQString &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
+ */
+ TQValueList<RipperPlugin*> allRippers() { return rippers; }
+
+ /**
+ * Returns a list of all loaded converters
+ */
+ TQValueList<ConvertPlugin*> allConverters() { return converters; }
+
+ /**
+ * Returns a list of all loaded replaygains
+ */
+ TQValueList<ReplayGainPlugin*> allReplayGains() { return replaygains; }
+
+ /**
+ * Returns a list of all known file formats
+ */
+ TQStringList allFormats();
+
+ /**
+ * Returns a list of all known encodeable file formats
+ */
+ TQStringList allEncodableFormats();
+
+ /**
+ * Returns a list of all known lossy encodeable file formats
+ */
+ TQStringList allLossyEncodableFormats();
+
+ /**
+ * Returns a list of all known lossless encodeable file formats
+ */
+ TQStringList allLosslessEncodableFormats();
+
+ /**
+ * Returns a list of all known hybrid encodeable file formats
+ */
+ TQStringList 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
+ */
+ TQString getCorrectionExtension( const TQString &format );
+
+ /**
+ * Returns a localized description for the given format
+ */
+ TQString getFormatDescription( const TQString &format );
+
+ /**
+ * Add a new profile
+ */
+ void addProfile( const TQString &name, const ConversionOptions& profile );
+
+ /**
+ * Remove a new profile
+ */
+ void removeProfile( const TQString &name );
+
+ /**
+ * Returns the conversion options for a profile
+ */
+ ConversionOptions getProfile( const TQString &name );
+
+ /**
+ * Returns the name of the profile with conversion options @p options
+ */
+ TQString getProfileName( const ConversionOptions& options );
+
+ /**
+ * Returns a list of all user defined profiles
+ */
+ TQStringList getAllProfiles();
+
+ /**
+ * Returns true if the @p file can be added to the conversion list (can be decoded)
+ */
+ bool acceptFile( const TQString& format );
+
+ /**
+ * Returns true if the @p file can be added to the replay gain tool
+ */
+ bool acceptReplayGainFile( const TQString& format );
+
+ /**
+ * Returns a file filter suitable for the file open dialog
+ */
+ TQString fileFilter( bool wav = true );
+
+ /**
+ * Returns a string list of supported file formats
+ */
+ TQStringList fileTypes( bool wav = true );
+
+ /**
+ * Returns a file filter suitable for the file open dialog for the replay gain scanner
+ */
+ TQString replayGainFilter();
+
+ /**
+ * Returns a string list of Replay Gain supported file formats
+ */
+ TQStringList replayGainFileTypes();
+
+ struct Data {
+ struct General {
+ int startTab;
+ int lastTab;
+ TQString defaultProfile;
+ TQString defaultFormat;
+// TQString defaultOutputDirectory;
+ TQString specifyOutputDirectory;
+ TQString metaDataOutputDirectory;
+ TQString 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 {
+ TQStringList directories;
+ TQStringList foundPrograms;
+ } environment;
+ struct App {
+ int configVersion;
+ } app;
+ } data;
+
+ bool onlinePluginsChanged;
+ bool backendsChanged;
+
+ TQMap<TQString, TQString> binaries;
+
+private:
+ struct PluginMapData {
+ int version;
+ TQString filename;
+ TQString type;
+ };
+
+ Logger* logger;
+
+ /** holds all known formats */
+ TQValueList<FormatItem> formats;
+
+ /** holds all known rippers */
+ TQValueList<RipperPlugin*> rippers;
+ RipperPlugin* currentRipper;
+
+ /** holds all known converters */
+ TQValueList<ConvertPlugin*> converters;
+ /** holds all known replaygain apps */
+ TQValueList<ReplayGainPlugin*> replaygains;
+ /* holds all known file repairing apps */
+// TQValueList<RepairerItem> repairer;
+
+ //ConvertPluginLoader* convertPluginLoader;
+ //ReplayGainPluginLoader* replaygainPluginLoader;
+
+ /** holds all user defined profiles */
+ TQValueList<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 TQString &mime_type,
+ ConvertPlugin* encoder = 0, ConvertPlugin* decoder = 0,
+ ReplayGainPlugin* replaygain = 0/*, RepairPlugin* repairer = 0*/,
+ const TQString &correction_file_mime_type = TQString() );
+
+ /**
+ * 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 TQString &extension, const TQString &newSynonym = TQString(),
+ const TQString &newMimeType = TQString(),
+ const TQString &newDescription = TQString(),
+ int newSize = 0, FormatInfo::CompressionType newCompressionType = FormatInfo::lossy );*/
+ //void registerFileFormat( const TQString &mime_type, const TQString &option, const TQString &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