Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
bibletime/bibletime/backend/creferencemanager.h

113 wiersze
4.0 KiB

/*********
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2006 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
*
**********/
#ifndef CREFERENCEMANAGER_H
#define CREFERENCEMANAGER_H
//Qt includes
#include <tqstring.h>
#include "cswordmoduleinfo.h"
/** Contains static functions to work with referneces used for Drag & Drop and for hyperlinks used in our
* rendered HTML code.
* @author The BibleTime team
*/
class CReferenceManager {
public:
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
*/
static const bool decodeHyperlink( const TQString& hyperlink, TQString& module, TQString& key, Type& type);
/**
* Returns a hyperlink used to be imbedded 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
*/
static const TQString encodeHyperlink( const TQString module, const TQString 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
*/
static const TQString encodeReference(const TQString &module, const TQString &reference);
/**
* decodes a 'draggable' reference into a modulename and a reference
* @author Martin Gruner
*/
static void decodeReference(TQString &dragreference, TQString &module, TQString &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
*/
static const bool isHyperlink( const TQString& 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
*/
static const TQString preferredModule( const Type type );
/**
* Returns the type of the passed module type
* @param type The CSwordModuleInfo module typpe
* @return The ReferenceManager type
*/
static CReferenceManager::Type typeFromModule( const CSwordModuleInfo::ModuleType type );
struct ParseOptions {
TQString refDestinationModule;
TQString refBase; /* only valid for verse based destination modules*/
TQString sourceLanguage; /* only valid for verse based destination modules*/
TQString 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.
*/
static const TQString parseVerseReference( const TQString& ref, const ParseOptions& options);
};
#endif