diff options
Diffstat (limited to 'bibletime/backend/cswordmoduleinfo.h')
-rw-r--r-- | bibletime/backend/cswordmoduleinfo.h | 373 |
1 files changed, 0 insertions, 373 deletions
diff --git a/bibletime/backend/cswordmoduleinfo.h b/bibletime/backend/cswordmoduleinfo.h deleted file mode 100644 index 40112ec..0000000 --- a/bibletime/backend/cswordmoduleinfo.h +++ /dev/null @@ -1,373 +0,0 @@ -/********* -* -* 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 CSWORDMODULEINFO_H -#define CSWORDMODULEINFO_H - -//BibleTime includes -#include "clanguagemgr.h" - -//Qt includes -#include <qstring.h> -#include <qvaluelist.h> -#include <qsignal.h> - -//Sword includes -#include <listkey.h> -#include <swsearchable.h> -#include <swmodule.h> -#include <swversion.h> -#include <swdisp.h> - - -class CSwordBackend; - -class CSwordKey; - -namespace Rendering { - - class CEntryDisplay; -} - -/** - * Base class for Sword modules. - * This is the base class for all Sword modules. Every class handling a special Sword module type - * does inherit from this class. - * - * @author The BibleTime team - * @version $Id: cswordmoduleinfo.h,v 1.83 2007/02/04 23:12:32 joachim Exp $ - */ - -class CSwordModuleInfo { - -public: - /** - * These are the options which could be supported by modules and by this backend. - * It's used in @ref CSwordBackend::isOptionEnabled and @ref CSwordBackend::setOption. - */ - enum FilterTypes { - footnotes, /**< Footnotes embedded in the module's text */ - strongNumbers, /**< strong numbers, usually in the text for the info display */ - headings, /**< additional section headings */ - morphTags, /**< morphology */ - lemmas, /**< lemma tags */ - hebrewPoints,/**< Hebrew vowel points */ - hebrewCantillation, /**<Hewbrew caantillation points */ - greekAccents, /**< Greek accents may be switched on and off */ - scriptureReferences, /**< scripture references may be switched on and off, just makes sense in Bibles */ - redLetterWords, /**< Jesus words in red, color is template specific */ - textualVariants, /**< variants */ - morphSegmentation, /**< morph word segmentation, supported by OSIS */ - filterTypesMIN = footnotes, /**< first entry of this enum */ - filterTypesMAX = morphSegmentation /**< last item in this enum */ - // transliteration /* The following are handled in a special way */ - }; - /** The text direction of a module */ - enum TextDirection { /* The text direction of the modules's text */ - LeftToRight, /**< Left to right text direction, the default setting */ - RightToLeft /**< Right to left text directin, e.g. for hebrew */ - }; - /** The module type. - */ - enum ModuleType { - Bible, /**< Bible module */ - Commentary, /**< Commentary module */ - Lexicon, /**< Lexicon module */ - GenericBook, /**< Generic book module */ - Unknown /**< Fall back type for unknown modules */ - }; - /** - * This enum is used to give - * back an error code after unlocking the module - * BibleTime stores the unlock key not in the module's config file but in BibleTime's - * configuration file. - */ - enum UnlockErrorCode { - noError, /**< No error occured, everything worked ok. The key was written to the BibleTime config */ - wrongUnlockKey, /**< The wrong key was used. Module is not unlocked */ - notLocked, /**< The module was not locked so it can't be unlocked */ - noPermission /**< The key was not written to config because we have no permissions */ - }; - enum ConfigEntry { - AboutInformation, /**< The about information of a module which is stored in the config file*/ - AbsoluteDataPath, /**< The absolute data path stored in the config object */ - CipherKey, /**< The cipher key which was used to unlock the module. Not necessarily set.*/ - DataPath, /**< The relative path. See AbsoluteDataPath*/ - Description, /**< The module description stored in the config file */ - ModuleVersion, /**< The module's version.*/ - MinimumSwordVersion, /**< The required Sword Version of this module. Otherwise some things may not work (compression etc.).*/ - TextDir, /**< The text direction */ - DisplayLevel, /**< Mostly used for books. Gives the level which should contain the connected entries.*/ - GlossaryFrom, /**< lamguage from which the Glosaary tramslates */ - GlossaryTo, /**< lamguages to which the glossary maps to */ - DistributionLicense, - DistributionSource, - DistributionNotes, - TextSource, - CopyrightNotes, - CopyrightHolder, - CopyrightDate, - CopyrightContactName, - CopyrightContactAddress, - CopyrightContactEmail, - Markup /**< The markup of this module */ - }; - enum Feature { - //StrongsNumbers, /**< Use for Bibles which have embedded strong numbers */ - GreekDef, - HebrewDef, - GreekParse, - HebrewParse, - featureMin = GreekDef, - featureMax = HebrewParse - }; - enum Category { - UnknownCategory = 0, /**< The category wasn't set or has an unknwon value */ - Cult, /**< The module is a cult / sect / questionable module */ - DailyDevotional, - Glossary - }; - - /** - * Returns the base directory for search indices - */ - static const QString getGlobalBaseIndexLocation(); - /** - * Removes search index for this module, even if the module is not there any more - */ - static void deleteIndexForModule( QString name ); - - - /** - * Returns the config entry which is pecified by the parameter. - */ - const QString config( const CSwordModuleInfo::ConfigEntry entry ) const; - - CSwordModuleInfo( sword::SWModule* module, CSwordBackend* const = 0 ); - /** Copy constructor to copy the passed parameter. - * @param m The module to be copied - */ - CSwordModuleInfo( const CSwordModuleInfo& m ); - /** Reimplementation to return a valid clone. - */ - virtual CSwordModuleInfo* clone(); - /** Destructor. - */ - virtual ~CSwordModuleInfo(); - - /** - * Returns the module object so all objects can access the original Sword module. - */ - inline sword::SWModule* const module() const; - /** - * Sets the unlock key of the modules and writes the key into the cofig file. - * @return True if the unlock process was succesful, if the key was wrong, or if the config file was write protected return false. - */ - const bool unlock( const QString& unlockKey ); - /** - * Returns the display object for this module. Normally every module should have a Display object. - * Please don't use module()->Display() because this function does return the Sword display and does - * render the text, too. - * This function performs some casts to return the correct display. If it returns 0 there's no valid - * display object. - */ - Rendering::CEntryDisplay* const getDisplay() const; - /** - * This function does return true if the data files of the module are encrypted by the module author - * (the on who made the module) no matter if it's locked or not. - * @return True if this module is encryped - */ - const bool isEncrypted() const; - /** - * This function returns true if this module is locked (encrypted + correct cipher key), - * otherwise return false. - * @return True if this module is locked, i.e. encrypted but without a key set - */ - const bool isLocked(); - - const bool unlockKeyIsValid(); - - /** The module version. - * @return true if this module has a version number and false if it doesn't have one. - */ - inline const bool hasVersion() const; - - /** - * Returns true if the module's index has been built. - */ - virtual const bool hasIndex(); - /** - * Returns the path to this module's index base dir - */ - virtual const QString getModuleBaseIndexLocation() const; - /** - * Returns the path to this module's standard index - */ - virtual const QString getModuleStandardIndexLocation() const; - /** - * Builds a search index for this module - */ - virtual void buildIndex(); - /** - * Returns index size - */ - virtual unsigned long indexSize() const; - - void connectIndexingFinished(QObject* receiver, const char* slot); - void connectIndexingProgress(QObject* receiver, const char* slot); - void disconnectIndexingSignals(QObject* receiver); - - /** - * Returns true if something was found, otherwise return false. - * This function uses CLucene to perform and index based search. It also - * overwrites the variable containing the last search result. - */ - virtual const bool searchIndexed(const QString& searchedText, sword::ListKey& scope); - /** - * Returns the last search result for this module. - * The last result is cleared by @ref search - */ - virtual sword::ListKey& searchResult( const sword::ListKey* newResult = 0 ); - /** - * Clears the last search result. - * This does immediately clean the last search result, - * no matter if search is in progress or not. - */ - void clearSearchResult(); - /** - * Returns the type of the module. - */ - virtual const CSwordModuleInfo::ModuleType type() const; - /** - * Returns the required Sword version for this module. - * Returns -1 if no special Sword version is required. - */ - const sword::SWVersion minimumSwordVersion(); - /** - * Returns the name of the module. - * @return The name of this module. - */ - inline const QString name() const; - /** - * Snaps to the closest entry in the module if the current key is - * not present in the data files. - */ - virtual const bool snap() { - return false; - }; - - const bool has( const CSwordModuleInfo::Feature ) const; - const bool has( const CSwordModuleInfo::FilterTypes ) const; - /** - * Returns the text direction of the module's text., - */ - virtual const CSwordModuleInfo::TextDirection textDirection(); - /** - * Writes the new text at the given position into the module. This does only work for writabe modules. - */ - virtual void write( CSwordKey* key, const QString& newText ); - /** - * Deletes the current entry and removes it from the module. - */ - const bool deleteEntry( CSwordKey* const key ); - /** - * Returns the language of the module. - */ - const CLanguageMgr::Language* const language() const; - /** - * Returns true if this module may be written by the write display windows. - */ - inline virtual const bool isWritable() const; - /** - * Returns the category of this module. See CSwordModuleInfo::Category for possible values. - */ - const CSwordModuleInfo::Category category() const; - /** - * The about text which belongs to this module. - */ - QString aboutText() const; - /** - * Returns true if this module is Unicode encoded. False if the charset is iso8859-1. - * Protected because it should not be used outside of the CSword*ModuleInfo classes. - */ - inline const bool isUnicode() const { - return m_dataCache.isUnicode; - } - -protected: - friend class CSwordBackend; - - inline CSwordBackend* backend() const { - return m_backend; - } - - inline void backend( CSwordBackend* newBackend ) { - if (newBackend) { - m_backend = newBackend; - } - } - - QString getSimpleConfigEntry(const QString& name) const; - QString getFormattedConfigEntry(const QString& name) const; - -private: - sword::SWModule* m_module; - sword::ListKey m_searchResult; - - mutable struct DataCache { - DataCache() { - language = 0; - } - - QString name; - bool isUnicode; - CSwordModuleInfo::Category category; - const CLanguageMgr::Language* language; - bool hasVersion; - } - - m_dataCache; - - CSwordBackend* m_backend; - - QSignal m_indexingFinished; - QSignal m_indexingProgress; -}; - -// typedef QPtrList<CSwordModuleInfo> ListCSwordModuleInfo; -typedef QValueList<CSwordModuleInfo*> ListCSwordModuleInfo; - -inline const CSwordModuleInfo::ModuleType CSwordModuleInfo::type() const { - return CSwordModuleInfo::Unknown; -} - -inline sword::SWModule* const CSwordModuleInfo::module() const { - return m_module; -} - -inline const bool CSwordModuleInfo::hasVersion() const { - return m_dataCache.hasVersion; -} - - -/** Returns the name of the module. */ -inline const QString CSwordModuleInfo::name() const { - return m_dataCache.name; -} - -/** Returns true if this module may be written by the write display windows. */ -inline const bool CSwordModuleInfo::isWritable() const { - return false; -} - -#include "util/cpointers.h" - -#endif |