PageRenderTime 26ms CodeModel.GetById 15ms app.highlight 10ms RepoModel.GetById 0ms app.codeStats 0ms

/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}