• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegames API Reference
  • KDE Home
  • Contact Us
 

libkdegames/libkdegamesprivate

  • sources
  • kde-4.14
  • kdegames
  • libkdegames
  • libkdegamesprivate
kchatbasemodel.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the KDE games library
3  Copyright (C) 2001 Andreas Beckermann (b_mann@gmx.de)
4  Copyright (C) 2007 Gael de Chalendar (aka Kleag) <kleag@free.fr>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License version 2 as published by the Free Software Foundation.
9 
10  This library 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 GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 */
20 
21 #include "kchatbasemodel.h"
22 
23 #include <kconfig.h>
24 #include <kconfiggroup.h>
25 #include <kdebug.h>
26 #include <kglobal.h>
27 #include <ksharedconfig.h>
28 #include <QFont>
29 
30 class KChatBaseMessagePrivate
31 {
32 public:
33  KChatBaseMessagePrivate()
34  {
35  m_type = KChatBaseMessage::Normal;
36  }
37 
38  KChatBaseMessage::MessageType m_type;
39 };
40 
41 KChatBaseMessage::KChatBaseMessage()
42 {
43  d = new KChatBaseMessagePrivate();
44 }
45 
46 KChatBaseMessage::KChatBaseMessage(const QString& sender, const QString& message,
47  MessageType type) :
48  QPair<QString,QString>(sender,message)
49 {
50  d = new KChatBaseMessagePrivate();
51  d->m_type = type;
52 }
53 
54 KChatBaseMessage::KChatBaseMessage(const KChatBaseMessage& m) :
55  QPair< QString, QString >(m)
56 {
57  d = new KChatBaseMessagePrivate();
58  d->m_type = m.d->m_type;
59 }
60 
61 KChatBaseMessage::~KChatBaseMessage()
62 {
63  delete d;
64 }
65 
66 
67 class KChatBaseModelPrivate
68 {
69 public:
70  KChatBaseModelPrivate()
71  {
72  mAcceptMessage = true;
73  mMaxItems = -1;
74  }
75  bool mAcceptMessage;
76  int mMaxItems;
77 
78  QList<int> mIndex2Id;
79 
80  QFont mNameFont;
81  QFont mMessageFont;
82  QFont mSystemNameFont;
83  QFont mSystemMessageFont;
84 
85  QList< KChatBaseMessage > m_messages;
86 
87 };
88 
89 
90 KChatBaseModel::KChatBaseModel(QObject *parent)
91  : QAbstractListModel(parent), d(new KChatBaseModelPrivate())
92 {
93 }
94 
95 KChatBaseModel::~KChatBaseModel()
96 {
97 // kDebug(11000) << "KChatBaseModelPrivate: DESTRUCT (" << this << ")";
98  saveConfig();
99 }
100 
101 void KChatBaseModel::slotClear()
102 {
103  clear();
104 }
105 
106 void KChatBaseModel::setNameFont(const QFont& font)
107 {
108  d->mNameFont = font;
109 }
110 
111 void KChatBaseModel::setMessageFont(const QFont& font)
112 {
113  d->mMessageFont = font;
114 }
115 
116 void KChatBaseModel::setBothFont(const QFont& font)
117 {
118  setNameFont(font);
119  setMessageFont(font);
120 }
121 
122 const QFont& KChatBaseModel::nameFont() const
123 { return d->mNameFont; }
124 
125 const QFont& KChatBaseModel::messageFont() const
126 { return d->mMessageFont; }
127 
128 void KChatBaseModel::setSystemNameFont(const QFont& font)
129 {
130  d->mSystemNameFont = font;
131 }
132 
133 void KChatBaseModel::setSystemMessageFont(const QFont& font)
134 {
135  d->mSystemMessageFont = font;
136 }
137 
138 void KChatBaseModel::setSystemBothFont(const QFont& font)
139 {
140  setSystemNameFont(font);
141  setSystemMessageFont(font);
142 }
143 
144 const QFont& KChatBaseModel::systemNameFont() const
145 { return d->mSystemNameFont; }
146 
147 const QFont& KChatBaseModel::systemMessageFont() const
148 { return d->mSystemMessageFont; }
149 
150 void KChatBaseModel::saveConfig(KConfig* conf)
151 {
152  if (!conf) {
153  conf = KGlobal::config().data();
154  }
155  KConfigGroup cg(conf, "KChatBaseModelPrivate");
156 
157  cg.writeEntry("NameFont", nameFont());
158  cg.writeEntry("MessageFont", messageFont());
159  cg.writeEntry("SystemNameFont", systemNameFont());
160  cg.writeEntry("SystemMessageFont", systemMessageFont());
161  cg.writeEntry("MaxMessages", maxItems());
162 }
163 
164 void KChatBaseModel::readConfig(KConfig* conf)
165 {
166  if (!conf) {
167  conf = KGlobal::config().data();
168  }
169  KConfigGroup cg(conf, "KChatBaseModelPrivate");
170 
171  setNameFont(cg.readEntry("NameFont", QFont()));
172  setMessageFont(cg.readEntry("MessageFont", QFont()));
173  setSystemNameFont(cg.readEntry("SystemNameFont", QFont()));
174  setSystemMessageFont(cg.readEntry("SystemMessageFont", QFont()));
175  setMaxItems(cg.readEntry("MaxMessages", -1));
176 }
177 
178 void KChatBaseModel::clear()
179 {
180  removeRows(0, rowCount());
181 }
182 
183 void KChatBaseModel::setMaxItems(int maxItems)
184 {
185  d->mMaxItems = maxItems;
186  //TODO cut too many messages
187  if (maxItems == 0) {
188  clear();
189  } else if (maxItems > 0) {
190  while (rowCount() > (int)maxItems)
191  {
192  removeRow(0);
193  }
194  }
195 }
196 
197 int KChatBaseModel::maxItems() const
198 {
199  return d->mMaxItems;
200 }
201 
202 
203 QVariant KChatBaseModel::data(const QModelIndex &index, int role) const
204 {
205  if (!index.isValid())
206  return QVariant();
207 
208  if (role == Qt::DisplayRole)
209  {
210  KChatBaseMessage p = d->m_messages[index.row()];
211  return QVariant::fromValue(p);
212  }
213  return QVariant();
214 }
215 
216 int KChatBaseModel::rowCount(const QModelIndex &parent) const
217 {
218  if (parent.isValid())
219  return 0;
220  else
221  return d->m_messages.size();
222 }
223 
224 void KChatBaseModel::addMessage(const QString& fromName, const QString& text)
225 {
226  int row;
227  row = d->m_messages.size();
228  beginInsertRows(QModelIndex(), row, row);
229  d->m_messages.push_back(KChatBaseMessage(fromName,text));
230  endInsertRows();
231 
232  while (maxItems()>-1 && rowCount() > maxItems())
233  {
234  beginRemoveRows(QModelIndex(), row, row);
235  d->m_messages.pop_front();
236  endRemoveRows();
237  }
238 }
239 
240 void KChatBaseModel::addSystemMessage(const QString& fromName, const QString& text)
241 {
242  int row;
243  row = d->m_messages.size();
244  beginInsertRows(QModelIndex(), row, row);
245  d->m_messages.push_back(KChatBaseMessage(fromName,text,KChatBaseMessage::System));
246  endInsertRows();
247 }
248 
249 
250 #include "kchatbasemodel.moc"
QModelIndex
KChatBaseModel::rowCount
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
Reimplementation of the inherited method.
Definition: kchatbasemodel.cpp:216
KChatBaseMessage
The class of the elements stored in the chat list model.
Definition: kchatbasemodel.h:41
KChatBaseModel::KChatBaseModel
KChatBaseModel(QObject *parent=0)
Default constructor.
Definition: kchatbasemodel.cpp:90
KChatBaseModel::~KChatBaseModel
virtual ~KChatBaseModel()
Default destructor.
Definition: kchatbasemodel.cpp:95
QAbstractItemModel::removeRow
bool removeRow(int row, const QModelIndex &parent)
KChatBaseMessage::MessageType
MessageType
The different types of messages.
Definition: kchatbasemodel.h:45
KChatBaseModel::setSystemBothFont
void setSystemBothFont(const QFont &font)
Same as setBothFont but applies only to system messages.
Definition: kchatbasemodel.cpp:138
QFont
KChatBaseModel::systemMessageFont
const QFont & systemMessageFont() const
Same as systemMessageFont but applies only to system messages.
Definition: kchatbasemodel.cpp:147
KChatBaseModel::systemNameFont
const QFont & systemNameFont() const
Same as systemNameFont but applies only to system messages.
Definition: kchatbasemodel.cpp:144
KChatBaseModel::addMessage
virtual void addMessage(const QString &fromName, const QString &text)
Add a text in the listbox.
Definition: kchatbasemodel.cpp:224
KChatBaseModel::addSystemMessage
virtual void addSystemMessage(const QString &fromName, const QString &text)
This works just like addMessage but adds a system message.
Definition: kchatbasemodel.cpp:240
KChatBaseModel::readConfig
virtual void readConfig(KConfig *conf=0)
Read the configuration from a KConfig object.
Definition: kchatbasemodel.cpp:164
KChatBaseModel::setBothFont
void setBothFont(const QFont &font)
This sets both - nameFont and messageFont to font.
Definition: kchatbasemodel.cpp:116
QModelIndex::isValid
bool isValid() const
KChatBaseModel::clear
void clear()
Clear all messages in the list.
Definition: kchatbasemodel.cpp:178
KChatBaseModel::maxItems
int maxItems() const
Definition: kchatbasemodel.cpp:197
QAbstractItemModel::endInsertRows
void endInsertRows()
QObject
QAbstractListModel
KChatBaseModel::setSystemMessageFont
void setSystemMessageFont(const QFont &font)
Same as setMessageFont but applies only to system messages.
Definition: kchatbasemodel.cpp:133
KChatBaseMessage::System
Definition: kchatbasemodel.h:48
KChatBaseModel::setMessageFont
void setMessageFont(const QFont &font)
Set the font that is used for the message part of a message.
Definition: kchatbasemodel.cpp:111
KChatBaseModel::slotClear
void slotClear()
This clears all messages in the view.
Definition: kchatbasemodel.cpp:101
KChatBaseMessage::KChatBaseMessage
KChatBaseMessage()
Default constructor.
Definition: kchatbasemodel.cpp:41
QAbstractItemModel::beginRemoveRows
void beginRemoveRows(const QModelIndex &parent, int first, int last)
QModelIndex::row
int row() const
KChatBaseMessage::Normal
Definition: kchatbasemodel.h:47
KChatBaseModel::setSystemNameFont
void setSystemNameFont(const QFont &font)
Same as setNameFont but applies only to system messages.
Definition: kchatbasemodel.cpp:128
KChatBaseModel::data
virtual QVariant data(const QModelIndex &index, int role) const
Reimplementation of the inherited method.
Definition: kchatbasemodel.cpp:203
KChatBaseModel::setNameFont
void setNameFont(const QFont &font)
Set the font that is used for the name part of a message.
Definition: kchatbasemodel.cpp:106
QString
QList< int >
KChatBaseModel::saveConfig
virtual void saveConfig(KConfig *conf=0)
Save the configuration of the dialog to a KConfig object.
Definition: kchatbasemodel.cpp:150
QPair
kchatbasemodel.h
KChatBaseMessage::~KChatBaseMessage
virtual ~KChatBaseMessage()
Default destructor.
Definition: kchatbasemodel.cpp:61
QVariant::fromValue
QVariant fromValue(const T &value)
QAbstractItemModel::removeRows
virtual bool removeRows(int row, int count, const QModelIndex &parent)
QAbstractItemModel::beginInsertRows
void beginInsertRows(const QModelIndex &parent, int first, int last)
KChatBaseModel::messageFont
const QFont & messageFont() const
This font should be used for a message.
Definition: kchatbasemodel.cpp:125
KChatBaseModel::nameFont
const QFont & nameFont() const
This font should be used for the name (the "from: " part) of a message.
Definition: kchatbasemodel.cpp:122
QAbstractItemModel::endRemoveRows
void endRemoveRows()
KChatBaseModel::setMaxItems
void setMaxItems(int maxItems)
Set the maximum number of items in the list.
Definition: kchatbasemodel.cpp:183
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:18:50 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libkdegames/libkdegamesprivate

Skip menu "libkdegames/libkdegamesprivate"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdegames API Reference

Skip menu "kdegames API Reference"
  • granatier
  • kapman
  • kblackbox
  • kgoldrunner
  • kigo
  • kmahjongg
  • KShisen
  • ksquares
  • libkdegames
  •   highscore
  •   libkdegamesprivate
  •     kgame
  • libkmahjongg
  • palapeli
  •   libpala

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal