QTfrontend/chatwidget.cpp
author unc0rr
Mon, 29 Sep 2008 22:14:23 +0000
changeset 1301 c6fe8a4bfd34
parent 1066 1f1b3686a2b0
child 1311 49beb1221c0b
permissions -rw-r--r--
Fix a bug screwing team selection up in network game (REMOVETEAM message doesn't have teamID, and after removing the team QMap still contains old info, when add and remove team with the same name, total hedgehogs number will be decreased by first team hh number)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
480
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 575
diff changeset
     2
 * Hedgewars, a free turn based strategy game
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 480
diff changeset
     3
 * Copyright (c) 2007 Igor Ulyanov <iulyanov@gmail.com>
480
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     4
 *
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     8
 *
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    12
 * GNU General Public License for more details.
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    13
 *
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    14
 * You should have received a copy of the GNU General Public License
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    15
 * along with this program; if not, write to the Free Software
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    17
 */
09434d6c3865 GPL headers added
displacer
parents: 465
diff changeset
    18
461
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    19
#include <QListWidget>
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    20
#include <QLineEdit>
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    21
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    22
#include "chatwidget.h"
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    23
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    24
HWChatWidget::HWChatWidget(QWidget* parent) :
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    25
  QWidget(parent),
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    26
  mainLayout(this)
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    27
{
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    28
  mainLayout.setSpacing(1);
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    29
  mainLayout.setMargin(1);
462
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    30
  mainLayout.setSizeConstraint(QLayout::SetMinimumSize);
464
7f48321fc38a vertical size fix for chatwidget
displacer
parents: 463
diff changeset
    31
  mainLayout.setColumnStretch(0, 75);
7f48321fc38a vertical size fix for chatwidget
displacer
parents: 463
diff changeset
    32
  mainLayout.setColumnStretch(1, 25);
461
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    33
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    34
  chatEditLine = new QLineEdit(this);
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    35
  connect(chatEditLine, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    36
463
353c2f830888 fixes last commit problems
displacer
parents: 462
diff changeset
    37
  mainLayout.addWidget(chatEditLine, 1, 0, 1, 2);
462
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    38
461
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    39
  chatText = new QListWidget(this);
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    40
  chatText->setMinimumHeight(10);
462
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    41
  chatText->setMinimumWidth(10);
463
353c2f830888 fixes last commit problems
displacer
parents: 462
diff changeset
    42
  chatText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
461
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    43
  mainLayout.addWidget(chatText, 0, 0);
462
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    44
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    45
  chatNicks = new QListWidget(this);
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    46
  chatNicks->setMinimumHeight(10);
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    47
  chatNicks->setMinimumWidth(10);
463
353c2f830888 fixes last commit problems
displacer
parents: 462
diff changeset
    48
  chatNicks->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
462
91baab07b79a resizing and grid problems
displacer
parents: 461
diff changeset
    49
  mainLayout.addWidget(chatNicks, 0, 1);
461
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    50
}
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    51
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    52
void HWChatWidget::returnPressed()
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    53
{
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    54
  emit chatLine(chatEditLine->text());
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    55
  chatEditLine->clear();
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    56
}
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    57
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    58
void HWChatWidget::onChatStringFromNet(const QStringList& str)
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    59
{
575
9a18a9b9d7d4 One more security fix (check size of QList before using QList::operator[])
unc0rr
parents: 486
diff changeset
    60
  if (str.size() < 2) return;
461
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    61
  QListWidget* w=chatText;
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    62
  w->addItem(str[0]+": "+str[1]);
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    63
  w->scrollToBottom();
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    64
  w->setSelectionMode(QAbstractItemView::NoSelection);
105af110b0e6 chatWidget with layout
displacer
parents:
diff changeset
    65
}
465
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    66
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    67
void HWChatWidget::nickAdded(const QString& nick)
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    68
{
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    69
  chatNicks->addItem(nick);
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    70
}
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    71
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    72
void HWChatWidget::nickRemoved(const QString& nick)
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    73
{
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    74
  QList<QListWidgetItem *> items=chatNicks->findItems(nick, Qt::MatchExactly);
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    75
  for(QList<QListWidgetItem *>::iterator it=items.begin(); it!=items.end();) {
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    76
    chatNicks->takeItem(chatNicks->row(*it));
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    77
    ++it;
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    78
  }
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    79
}
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    80
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    81
void HWChatWidget::clear()
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    82
{
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    83
  chatNicks->clear();
07eca0a2546c chatWidget with nicks ready
displacer
parents: 464
diff changeset
    84
}