/quassel-0.7.3/src/client/irclistmodel.cpp
C++ | 89 lines | 55 code | 15 blank | 19 comment | 15 complexity | f4d17b46f1b5f09212f7d3fad626e357 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0
1/***************************************************************************
2 * Copyright (C) 2005-09 by the Quassel Project *
3 * devel@quassel-irc.org *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) version 3. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
20
21#include "irclistmodel.h"
22
23#include <QStringList>
24
25IrcListModel::IrcListModel(QObject *parent)
26 : QAbstractItemModel(parent)
27{
28}
29
30QVariant IrcListModel::data(const QModelIndex &index, int role) const {
31 if(!index.isValid() || index.row() >= rowCount() || index.column() >= columnCount() || role != Qt::DisplayRole)
32 return QVariant();
33
34 IrcListHelper::ChannelDescription channel = _channelList[index.row()];
35
36 switch(index.column()) {
37 case 0:
38 return channel.channelName;
39 case 1:
40 return channel.userCount;
41 case 2:
42 return channel.topic;
43 default:
44 return QVariant();
45 }
46}
47
48Qt::ItemFlags IrcListModel::flags(const QModelIndex &index) const {
49 if(!index.isValid()) {
50 return Qt::ItemIsDropEnabled;
51 } else {
52 return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
53 }
54}
55
56
57QVariant IrcListModel::headerData(int section, Qt::Orientation orientation, int role) const {
58 QStringList header;
59 header << tr("Channel")
60 << tr("Users")
61 << tr("Topic");
62
63 if(orientation == Qt::Horizontal && role == Qt::DisplayRole)
64 return header[section];
65
66 return QVariant();
67}
68
69QModelIndex IrcListModel::index(int row, int column, const QModelIndex &parent) const {
70 Q_UNUSED(parent);
71 if(row >= rowCount() || column >= columnCount())
72 return QModelIndex();
73
74 return createIndex(row, column);
75}
76
77void IrcListModel::setChannelList(const QList<IrcListHelper::ChannelDescription> &channelList) {
78 if(rowCount() > 0) {
79 beginRemoveRows(QModelIndex(), 0, _channelList.count() - 1);
80 _channelList.clear();
81 endRemoveRows();
82 }
83
84 if(channelList.count() > 0) {
85 beginInsertRows(QModelIndex(), 0, channelList.count() - 1);
86 _channelList = channelList;
87 endInsertRows();
88 }
89}