diff options
Diffstat (limited to 'src/backend/managers/referencemanager.h')
-rw-r--r-- | src/backend/managers/referencemanager.h | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/backend/managers/referencemanager.h b/src/backend/managers/referencemanager.h new file mode 100644 index 0000000..a038130 --- /dev/null +++ b/src/backend/managers/referencemanager.h @@ -0,0 +1,106 @@ +/********* +* +* This file is part of BibleTime's source code, http://www.bibletime.info/. +* +* Copyright 1999-2008 by the BibleTime developers. +* The BibleTime source code is licensed under the GNU General Public License version 2.0. +* +**********/ + +#ifndef REFERENCEMANAGER_H +#define REFERENCEMANAGER_H + +#include <QString> +#include "backend/drivers/cswordmoduleinfo.h" + + +/** Contains functions to work with references used for Drag & Drop and for hyperlinks used in our + * rendered HTML code. + */ +namespace ReferenceManager { +enum Type { + Bible, /**< Bibles */ + Commentary, /**< Commentary */ + Lexicon, /**< Lexicon */ + GenericBook, /**< Generic Book */ + MorphHebrew, /**< Module for hebrew morphology*/ + MorphGreek, /**< Module for greek morphology */ + StrongsHebrew, /**< Module for hebrew strongs */ + StrongsGreek, /**< Module for greek strongs */ + Unknown /**< Unknown */ +}; + +/** Turn a hyperlink into module, key and type. +* Decodes the given hyperlink into module, key and type. +* @param hyperlink The hyperlink to decode +* @param module The string which will contain the module name after decoding +* @param key The string which will contain the key after decoding +* @param type The type param will contain the reference type after decoding +*/ +bool decodeHyperlink( const QString& hyperlink, QString& module, QString& key, Type& type); +/** +* Returns a hyperlink used to be embedded in the display windows. +* At the moment the format is sword://module/key +* @param module The module which is used to encode the hyperlink +* @param key The key which is used to encode the hyperlink +* @param type The type which is used to encode the hyperlink +* @return The encoded hyperlink +*/ +const QString encodeHyperlink( const QString module, const QString key, const Type type); +/** +* Puts a module Name and a Reference together in the 'draggable' form +* (module)reference +* @param module The name of the module +* @param reference The key reference as text +* @return The encoded reference using module and reference +* @author Martin Gruner +*/ +const QString encodeReference(const QString &module, const QString &reference); +/** +* decodes a 'draggable' reference into a modulename and a reference +* @author Martin Gruner +*/ +void decodeReference(QString &dragreference, QString &module, QString &reference); +/** +* Returns true if the parameter is a hyperlink. +* @param hyperlink The string which is tested +* @return True if the passed string is a hyperlink +*/ +bool isHyperlink( const QString& hyperlink ); +/** +* Returns the preferred module name for the given type. +* @param type The type which is used to find the module +* @return The default module name for the passed type +*/ +const QString preferredModule( const Type type ); +/** +* Returns the type of the passed module type +* @param type The CSwordModuleInfo module typpe +* @return The ReferenceManager type +*/ +ReferenceManager::Type typeFromModule( const CSwordModuleInfo::ModuleType type ); + + +struct ParseOptions { + QString refDestinationModule; + QString refBase; /* only valid for verse based destination modules*/ + QString sourceLanguage; /* only valid for verse based destination modules*/ + QString destinationLanguage; /* only valid for verse based destination modules*/ + + ParseOptions() { + destinationLanguage = "en"; + }; +}; + +/** Parses the given verse references using the given language and the module. +* @param moduleName The name of the module to use. Required for the language checking before parsing the key. +* @param ref The verse reference. +* @param lang The language of the verse reference +* @param newLang The language of the reference, which will be returned. For example: If BibleTime using an english environment parses a spanish ref (lang=es) the returned ref should be in english (newLang=en), because his english standard module only understands en. +*/ +const QString parseVerseReference( const QString& ref, const ParseOptions& options); + +}; + +#endif + |