LeechCraft 0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
flatitemsmodelbase.h
Go to the documentation of this file.
1/**********************************************************************
2 * LeechCraft - modular cross-platform feature rich internet client.
3 * Copyright (C) 2006-2014 Georg Rudoy
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7 **********************************************************************/
8
9#pragma once
10
11#include <source_location>
12#include <QAbstractItemModel>
13#include "modelsconfig.h"
14
15namespace LC::Util
16{
17 class UTIL_MODELS_API FlatItemsModelBase : public QAbstractItemModel
18 {
19 const QStringList Headers_;
20
21 QHash<int, QVariant> GlobalData_;
22 public:
23 constexpr static auto DataRole = Qt::UserRole;
24
25 explicit FlatItemsModelBase (QStringList headers, QObject* = nullptr);
26
27 int columnCount (const QModelIndex& index = {}) const override;
28 QVariant data (const QModelIndex& index, int role) const override;
29 QVariant headerData (int section, Qt::Orientation orientation, int role) const override;
30 QModelIndex index (int row, int col, const QModelIndex& parent = {}) const override;
31 QModelIndex parent (const QModelIndex&) const override;
32 int rowCount (const QModelIndex& parent = {}) const override;
33
34 void SetGlobalData (const QVariant& data, int role);
35 protected:
36 virtual int GetItemsCount () const = 0;
37 virtual QVariant GetData (int row, int col, int role) const = 0;
38
39 [[noreturn, gnu::cold, gnu::noinline]]
40 static void NotifyRowOutOfRange (const FlatItemsModelBase& model, int row, int count, const std::source_location& loc);
41 };
42}
virtual int GetItemsCount() const =0
QModelIndex index(int row, int col, const QModelIndex &parent={}) const override
int columnCount(const QModelIndex &index={}) const override
static void NotifyRowOutOfRange(const FlatItemsModelBase &model, int row, int count, const std::source_location &loc)
static constexpr auto DataRole
virtual QVariant GetData(int row, int col, int role) const =0
FlatItemsModelBase(QStringList headers, QObject *=nullptr)
#define UTIL_MODELS_API