00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef IMMODEL_H
00023 #define IMMODEL_H
00024
00025 #include <QtCore/QAbstractItemModel>
00026 #include <QtCore/QVector>
00027
00028 class IMAddress
00029 {
00030 public:
00031 typedef QVector<IMAddress> List;
00032
00033 IMAddress();
00034 IMAddress( const QString &protocol, const QString &name, bool preferred );
00035
00036 void setProtocol( const QString &protocol );
00037 QString protocol() const;
00038
00039 void setName( const QString &name );
00040 QString name() const;
00041
00042 void setPreferred( bool preferred );
00043 bool preferred() const;
00044
00045 private:
00046 QString mProtocol;
00047 QString mName;
00048 bool mPreferred;
00049 };
00050
00051 class IMModel : public QAbstractItemModel
00052 {
00053 public:
00054 enum Role
00055 {
00056 ProtocolRole = Qt::UserRole,
00057 IsPreferredRole
00058 };
00059
00060 IMModel( QObject *parent = 0 );
00061 ~IMModel();
00062
00063 void setAddresses( const IMAddress::List &addresses );
00064 IMAddress::List addresses() const;
00065
00066 virtual QModelIndex index( int row, int col, const QModelIndex &parent = QModelIndex() ) const;
00067 virtual QModelIndex parent( const QModelIndex &child ) const;
00068 virtual QVariant data( const QModelIndex &index, int role ) const;
00069 virtual bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole );
00070 virtual QVariant headerData( int section, Qt::Orientation orientation, int role ) const;
00071 virtual Qt::ItemFlags flags( const QModelIndex &index ) const;
00072 virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const;
00073 virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;
00074
00075 virtual bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() );
00076 virtual bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() );
00077
00078 private:
00079 IMAddress::List mAddresses;
00080 };
00081
00082 #endif