#ifndef _CLIST_MODEL_H_
#define _CLIST_MODEL_H_
#include <QAbstractListModel>
#include <list>
#include <vector>
#include<QMutex>
using namespace std;
enum DATA_TYPE
{
ITEM_BINARY,
ITEM_STRING,
ITEM_BYTE,
ITEM_UINT
};
class CListItem
{
public:
CListItem();
virtual ~CListItem();
void pushData(DATA_TYPE type, const void * data, int size = 0);
void setData(int index, DATA_TYPE type, void * data, int size);
QVariant getData(int index);
protected:
vector<QVariant> item;
};
class CListModel : public QAbstractListModel
{
Q_OBJECT
signals:
void sigAddItem(CListItem * item);
void sigInsertItem(int index, CListItem * item);
void sigRemoveItem(int index);
void sigModifyItem(int row, int col, int type, void * data, int size);
void sigClearItems();
private slots:
void SlotAddItem(CListItem * item);
void SlotInsertItem(int index, CListItem * item);
void SlotRemoveItem(int index);
void SlotModifyItem(int row, int col, int type, void * data, int size);
void SlotClearItems();
public:
CListModel(int colNum);
virtual ~CListModel();
void addItem(CListItem * item);
void insertItem(int index, CListItem * item);
void removeItem(int index);
void modifyItem(int row, int col, DATA_TYPE type, void * data, int size);
void clearItems();
int rowCount(const QModelIndex & parent = QModelIndex()) const;