2
xtrazstatusmodel.cpp - Xtraz Status Model
4
Copyright (c) 2007 by Roman Jarosz <kedgedev@centrum.cz>
5
Kopete (c) 2007 by the Kopete developers <kopete-devel@kde.org>
7
*************************************************************************
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
14
*************************************************************************
17
#include "xtrazstatusmodel.h"
25
StatusModel::StatusModel( QObject * parent )
26
: QAbstractTableModel( parent )
30
QList<Xtraz::Status> StatusModel::getStatuses() const
35
void StatusModel::setStatuses( const QList<Xtraz::Status> &statusList )
37
mStatuses = statusList;
41
int StatusModel::rowCount( const QModelIndex& ) const
43
return mStatuses.count();
46
int StatusModel::columnCount( const QModelIndex& ) const
51
bool StatusModel::setData( const QModelIndex &index, const QVariant &value, int role )
53
if ( !index.isValid() )
56
if ( index.row() >= mStatuses.count() || index.row() < 0 )
59
if ( role == Qt::EditRole )
61
switch ( index.column() )
64
mStatuses[index.row()].setDescription( value.toString() );
67
mStatuses[index.row()].setMessage( value.toString() );
71
else if ( role == Qt::UserRole )
73
if ( index.column() == 0 )
75
mStatuses[index.row()].setStatus( value.toInt() );
82
QVariant StatusModel::data( const QModelIndex &index, int role ) const
84
if ( !index.isValid() )
87
if ( index.row() >= mStatuses.count() || index.row() < 0 )
90
Xtraz::Status status = mStatuses.at(index.row());
92
if ( role == Qt::DisplayRole )
94
switch ( index.column() )
97
return status.description();
99
return status.message();
102
else if ( role == Qt::UserRole )
104
if ( index.column() == 0 )
105
return status.status();
107
else if ( role == Qt::DecorationRole )
109
if ( index.column() == 0 )
111
return KIcon( QString( "icq_xstatus%1" ).arg( status.status() ) );
119
QVariant StatusModel::headerData( int section, Qt::Orientation orientation, int role ) const
121
if ( orientation == Qt::Vertical && role == Qt::DisplayRole )
122
return (section + 1);
124
if ( role == Qt::DisplayRole )
129
return i18n( "Description" );
131
return i18n( "Message" );
141
Qt::ItemFlags StatusModel::flags( const QModelIndex &index ) const
143
if ( !index.isValid() )
144
return Qt::ItemIsEnabled;
146
if ( index.row() >= mStatuses.count() || index.row() < 0 )
147
return Qt::ItemIsEnabled;
149
return Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable;
152
bool StatusModel::swapRows( int i, int j )
154
if ( i == j || i < 0 || mStatuses.count() <= i ||
155
j < 0 || mStatuses.count() <= j )
158
mStatuses.swap( i, j );
159
emit dataChanged( index( qMin( i, j ), 0 ), index( qMax( i, j ), columnCount() ) );
163
bool StatusModel::insertRows( int row, int count, const QModelIndex &parent )
165
if ( row > mStatuses.count() || row < 0 )
168
beginInsertRows( parent, row, row + count - 1 );
170
for ( int i = 0; i < count; i++ )
171
mStatuses.insert( row, Xtraz::Status() );
177
bool StatusModel::removeRows( int row, int count, const QModelIndex &parent )
179
if ( row >= mStatuses.count() || row < 0 || row + count > mStatuses.count() )
182
beginRemoveRows( parent, row, row + count - 1 );
184
for ( int i = 0; i < count; i++ )
185
mStatuses.removeAt( row );