summaryrefslogtreecommitdiff
path: root/src/backend/bookshelfmodel/btbookshelfmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/bookshelfmodel/btbookshelfmodel.h')
-rw-r--r--src/backend/bookshelfmodel/btbookshelfmodel.h295
1 files changed, 152 insertions, 143 deletions
diff --git a/src/backend/bookshelfmodel/btbookshelfmodel.h b/src/backend/bookshelfmodel/btbookshelfmodel.h
index 20f2b3d..0884b4c 100644
--- a/src/backend/bookshelfmodel/btbookshelfmodel.h
+++ b/src/backend/bookshelfmodel/btbookshelfmodel.h
@@ -4,7 +4,7 @@
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
-* Copyright 1999-2011 by the BibleTime developers.
+* Copyright 1999-2014 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License
* version 2.0.
*
@@ -25,148 +25,157 @@
BtBookshelfTreeModel might be a better choice, since it also provides sorting and grouping.
*/
class BtBookshelfModel: public QAbstractListModel {
- Q_OBJECT
- public:
- enum ModuleRole {
- ModuleNameRole = Qt::DisplayRole,
- ModuleIconRole = Qt::DecorationRole,
- ModulePointerRole = Qt::UserRole,
- ModuleCategoryRole = Qt::UserRole + 1,
- ModuleLanguageRole = Qt::UserRole + 2,
- ModuleHiddenRole = Qt::UserRole + 3,
- ModuleInstallPathRole = Qt::UserRole + 4,
- ModuleHasIndexRole = Qt::UserRole + 5,
- ModuleIndexSizeRole = Qt::UserRole + 6,
- ModuleDescriptionRole = Qt::UserRole + 7,
- UserRole = Qt::UserRole + 100
- };
-
- public:
- BtBookshelfModel(QObject *parent = 0);
- ~BtBookshelfModel();
-
- // Virtual methods implemented from QAbstractListModel:
- int rowCount(const QModelIndex &parent = QModelIndex()) const;
- QVariant data(CSwordModuleInfo *module, int role) const;
- QVariant data(const QModelIndex &index, int role) const;
- QVariant headerData(int section, Qt::Orientation orientation,
- int role = Qt::DisplayRole) const;
- bool setData(const QModelIndex &index, const QVariant &value,
- int role = ModuleHiddenRole);
-
- /**
- Given an index of this model, this method returns a pointer to the underlying
- CSwordModuleInfo instance corresponding to the given index.
- \param[in] index An index to this model.
- */
- inline CSwordModuleInfo *module(const QModelIndex &index) const {
- return (CSwordModuleInfo *)
- data(index, BtBookshelfModel::ModulePointerRole)
- .value<void *>();
- }
-
- /**
- Clears the data of the whole model by removing all items.
- \param[in] destroy If true, all CSwordModuleInfo instances in this model are also
- destroyed.
- */
- void clear(bool destroy = false);
-
- /**
- Appends the given module to this model.
- \param[in] module Module to add.
- */
- void addModule(CSwordModuleInfo * const module);
-
- /**
- Appends the all the modules in the given set to this model.
- \param[in] modules Set of modules to add.
- */
- void addModules(const QSet<CSwordModuleInfo *> &modules);
-
- /**
- Appends the all the modules in the given list to this model.
- \param[in] modules Set of modules to add.
- */
- void addModules(const QList<CSwordModuleInfo *> &modules);
-
- /**
- Removes the given module from this model and optionally destroys it.
- \param[in] module The module to remove from this model.
- \param[in] destroy If true, the given CSwordModuleInfo instance is destroyed.
- */
- void removeModule(CSwordModuleInfo * const module,
- bool destroy = false);
-
- /**
- Removes all modules from the given set from this model and optionally destroys
- them.
- \param[in] modules The set of modules to remove from this model.
- \param[in] destroy If true, the given CSwordModuleInfo instances are destroyed.
- */
- void removeModules(const QSet<CSwordModuleInfo *> &modules,
- bool destroy = false);
-
- /**
- Removes all modules from the given list from this model and optionally destroys
- them.
- \param[in] modules The list of modules to remove from this model.
- \param[in] destroy If true, the given CSwordModuleInfo instances are destroyed.
- */
- void removeModules(const QList<CSwordModuleInfo *> &modules,
- bool destroy = false);
-
- /**
- Returns the first module found with the given name.
- \param[in] name Name of the module to find.
- */
- CSwordModuleInfo* getModule(const QString &name) const;
-
- /**
- Returns the list of handled modules as a list of CSwordModuleInfo* pointers.
- */
- inline const QList<CSwordModuleInfo *> &moduleList() const {
- return m_data;
- }
-
- protected slots:
- /**
- Slot DIRECTLY called by CSwordModuleInfo when the hidden status of the respective
- module changes.
- \param[in] hidden True, if the module was hidden; false, if the module was shown.
- */
- void moduleHidden(bool hidden);
-
- /**
- Slot DIRECTLY called by CSwordModuleInfo when the indexed status of the respective
- module changes.
- \param[in] indexed True, if the module was indexed; false if the index was deleted.
- */
- void moduleIndexed(bool indexed);
-
- /**
- Slot DIRECTLY called by CSwordModuleInfo when the locked status of the respective
- module changes.
- \param[in] unlocked True, if the module was unlocked; false if the module was
- locked.
- */
- void moduleUnlocked(bool unlocked);
-
- protected:
- /**
- Called internally when module data changes. This method emits any neccessary
- signals for this model.
- \pre The givem module is handled by this model.
- \param[in] module The module that changed status.
- */
- void moduleDataChanged(CSwordModuleInfo *module);
-
- protected:
- /**
- The underlying data as a list of pointers to the respective CSwordModuleInfo
- instances.
- */
- QList<CSwordModuleInfo *> m_data;
+
+ Q_OBJECT
+
+public: /* Types: */
+
+ enum ModuleRole {
+ ModuleNameRole = Qt::DisplayRole,
+ ModuleIconRole = Qt::DecorationRole,
+ ModulePointerRole = Qt::UserRole,
+ ModuleCategoryRole = Qt::UserRole + 1,
+ ModuleLanguageRole = Qt::UserRole + 2,
+ ModuleHiddenRole = Qt::UserRole + 3,
+ ModuleInstallPathRole = Qt::UserRole + 4,
+ ModuleHasIndexRole = Qt::UserRole + 5,
+ ModuleIndexSizeRole = Qt::UserRole + 6,
+ ModuleDescriptionRole = Qt::UserRole + 7,
+ UserRole = Qt::UserRole + 100
+ };
+
+public: /* Methods: */
+
+ inline BtBookshelfModel(QObject * const parent = 0)
+ : QAbstractListModel(parent) {}
+
+ // Virtual methods implemented from QAbstractListModel:
+ int rowCount(const QModelIndex & parent = QModelIndex()) const;
+ QVariant data(CSwordModuleInfo * module, int role) const;
+ QVariant data(const QModelIndex & index, int role) const;
+ QVariant headerData(int section,
+ Qt::Orientation orientation,
+ int role = Qt::DisplayRole) const;
+ bool setData(const QModelIndex & index,
+ const QVariant & value,
+ int role = ModuleHiddenRole);
+
+ /**
+ Given an index of this model, this method returns a pointer to the underlying
+ CSwordModuleInfo instance corresponding to the given index.
+ \param[in] index An index to this model.
+ */
+ inline CSwordModuleInfo * module(const QModelIndex & index) const {
+ return static_cast<CSwordModuleInfo *>(
+ data(index, BtBookshelfModel::ModulePointerRole).value<void *>());
+ }
+
+ /**
+ Clears the data of the whole model by removing all items.
+ \param[in] destroy If true, all CSwordModuleInfo instances in this model are also
+ destroyed.
+ */
+ void clear(bool destroy = false);
+
+ /**
+ Appends the given module to this model.
+ \param[in] module Module to add.
+ */
+ void addModule(CSwordModuleInfo * const module);
+
+ /**
+ Appends the all the modules in the given set to this model.
+ \param[in] modules Set of modules to add.
+ */
+ void addModules(const QSet<CSwordModuleInfo *> & modules);
+
+ /**
+ Appends the all the modules in the given list to this model.
+ \param[in] modules Set of modules to add.
+ */
+ void addModules(const QList<CSwordModuleInfo *> & modules);
+
+ /**
+ Removes the given module from this model and optionally destroys it.
+ \param[in] module The module to remove from this model.
+ \param[in] destroy If true, the given CSwordModuleInfo instance is destroyed.
+ */
+ void removeModule(CSwordModuleInfo * const module,
+ bool destroy = false);
+
+ /**
+ Removes all modules from the given set from this model and optionally destroys
+ them.
+ \param[in] modules The set of modules to remove from this model.
+ \param[in] destroy If true, the given CSwordModuleInfo instances are destroyed.
+ */
+ void removeModules(const QSet<CSwordModuleInfo *> & modules,
+ bool destroy = false);
+
+ /**
+ Removes all modules from the given list from this model and optionally destroys
+ them.
+ \param[in] modules The list of modules to remove from this model.
+ \param[in] destroy If true, the given CSwordModuleInfo instances are destroyed.
+ */
+ void removeModules(const QList<CSwordModuleInfo *> & modules,
+ bool destroy = false);
+
+ /**
+ Returns the first module found with the given name.
+ \param[in] name Name of the module to find.
+ */
+ CSwordModuleInfo* getModule(const QString & name) const;
+
+ /**
+ Returns the list of handled modules as a list of CSwordModuleInfo* pointers.
+ */
+ inline const QList<CSwordModuleInfo *> & moduleList() const {
+ return m_data;
+ }
+
+protected slots:
+
+ /**
+ Slot DIRECTLY called by CSwordModuleInfo when the hidden status of the respective
+ module changes.
+ \param[in] hidden True, if the module was hidden; false, if the module was shown.
+ */
+ void moduleHidden(bool hidden);
+
+ /**
+ Slot DIRECTLY called by CSwordModuleInfo when the indexed status of the respective
+ module changes.
+ \param[in] indexed True, if the module was indexed; false if the index was deleted.
+ */
+ void moduleIndexed(bool indexed);
+
+ /**
+ Slot DIRECTLY called by CSwordModuleInfo when the locked status of the respective
+ module changes.
+ \param[in] unlocked True, if the module was unlocked; false if the module was
+ locked.
+ */
+ void moduleUnlocked(bool unlocked);
+
+private: /* Methods: */
+
+ /**
+ Called internally when module data changes. This method emits any neccessary
+ signals for this model.
+ \pre The givem module is handled by this model.
+ \param[in] module The module that changed status.
+ */
+ void moduleDataChanged(CSwordModuleInfo * module);
+
+private: /* Fields: */
+
+ /**
+ The underlying data as a list of pointers to the respective CSwordModuleInfo
+ instances.
+ */
+ QList<CSwordModuleInfo *> m_data;
+
};
#endif // BTBOOKSHELFMODEL_H