diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | c90c389a8a8d9d8661e9772ec4144c5cf2039f23 (patch) | |
tree | 6d8391395bce9eaea4ad78958617edb20c6a7573 /libkdegames/kchatdialog.cpp | |
download | tdegames-c90c389a8a8d9d8661e9772ec4144c5cf2039f23.tar.gz tdegames-c90c389a8a8d9d8661e9772ec4144c5cf2039f23.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdegames@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkdegames/kchatdialog.cpp')
-rw-r--r-- | libkdegames/kchatdialog.cpp | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/libkdegames/kchatdialog.cpp b/libkdegames/kchatdialog.cpp new file mode 100644 index 00000000..bd196e7c --- /dev/null +++ b/libkdegames/kchatdialog.cpp @@ -0,0 +1,253 @@ +/* + This file is part of the KDE games library + Copyright (C) 2001 Andreas Beckermann ([email protected]) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "kchatdialog.h" + +#include "kchatbase.h" + +#include <klocale.h> +#include <kfontdialog.h> + +#include <qlayout.h> +#include <qlabel.h> +#include <qpushbutton.h> + +class KChatDialogPrivate +{ + public: + KChatDialogPrivate() + { + mTextPage = 0; + + mNamePreview = 0; + mTextPreview = 0; + mSystemNamePreview = 0; + mSystemTextPreview = 0; + + mChat = 0; + } + + QFrame* mTextPage; + + QLabel* mNamePreview; + QLabel* mTextPreview; + QLabel* mSystemNamePreview; + QLabel* mSystemTextPreview; + + QLineEdit* mMaxMessages; + + KChatBase* mChat; +}; + +KChatDialog::KChatDialog(KChatBase* chat, QWidget* parent, bool modal) +// : KDialogBase(Tabbed, i18n("Configure Chat"), Ok|Default|Apply|Cancel, Ok, parent, 0, modal, true) + : KDialogBase(Plain, i18n("Configure Chat"), Ok|Default|Apply|Cancel, Ok, parent, 0, modal, true) +{ + init(); + plugChatWidget(chat); +} + +KChatDialog::KChatDialog(QWidget* parent, bool modal) +// : KDialogBase(Tabbed, i18n("Configure Chat"), Ok|Default|Apply|Cancel, Ok, parent, 0, modal, true) + : KDialogBase(Plain, i18n("Configure Chat"), Ok|Default|Apply|Cancel, Ok, parent, 0, modal, true) +{ + init(); +} + +KChatDialog::~KChatDialog() +{ + delete d; +} + +void KChatDialog::init() +{ + d = new KChatDialogPrivate; +// d->mTextPage = addPage(i18n("&Messages"));// not a good name - game Messages? + d->mTextPage = plainPage(); + QGridLayout* layout = new QGridLayout(d->mTextPage, 7, 2, KDialog::marginHint(), KDialog::spacingHint()); + +// General fonts + QPushButton* nameFont = new QPushButton(i18n("Name Font..."), d->mTextPage); + connect(nameFont, SIGNAL(pressed()), this, SLOT(slotGetNameFont())); + layout->addWidget(nameFont, 0, 0); + QPushButton* textFont = new QPushButton(i18n("Text Font..."), d->mTextPage); + connect(textFont, SIGNAL(pressed()), this, SLOT(slotGetTextFont())); + layout->addWidget(textFont, 0, 1); + + QFrame* messagePreview = new QFrame(d->mTextPage); + messagePreview->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); + QHBoxLayout* messageLayout = new QHBoxLayout(messagePreview); + layout->addMultiCellWidget(messagePreview, 1, 1, 0, 1); + + d->mNamePreview = new QLabel(i18n("Player: "), messagePreview); + messageLayout->addWidget(d->mNamePreview, 0); + d->mTextPreview = new QLabel(i18n("This is a player message"), messagePreview); + messageLayout->addWidget(d->mTextPreview, 1); + + layout->addRowSpacing(2, 10); + +// System Message fonts + QLabel* systemMessages = new QLabel(i18n("System Messages - Messages directly sent from the game"), d->mTextPage); + layout->addMultiCellWidget(systemMessages, 3, 3, 0, 1); + QPushButton* systemNameFont = new QPushButton(i18n("Name Font..."), d->mTextPage); + connect(systemNameFont, SIGNAL(pressed()), this, SLOT(slotGetSystemNameFont())); + layout->addWidget(systemNameFont, 4, 0); + QPushButton* systemTextFont = new QPushButton(i18n("Text Font..."), d->mTextPage); + connect(systemTextFont, SIGNAL(pressed()), this, SLOT(slotGetSystemTextFont())); + layout->addWidget(systemTextFont, 4, 1); + + QFrame* systemMessagePreview = new QFrame(d->mTextPage); + systemMessagePreview->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); + QHBoxLayout* systemMessageLayout = new QHBoxLayout(systemMessagePreview); + layout->addMultiCellWidget(systemMessagePreview, 5, 5, 0, 1); + + d->mSystemNamePreview = new QLabel(i18n("--- Game: "), systemMessagePreview); + systemMessageLayout->addWidget(d->mSystemNamePreview, 0); + d->mSystemTextPreview = new QLabel(i18n("This is a system message"), systemMessagePreview); + systemMessageLayout->addWidget(d->mSystemTextPreview, 1); + +// message count + QLabel* maxMessages = new QLabel(i18n("Maximal number of messages (-1 = unlimited):"), d->mTextPage); + layout->addWidget(maxMessages, 6, 0); + d->mMaxMessages = new QLineEdit(d->mTextPage); + d->mMaxMessages->setText(QString::number(-1)); + layout->addWidget(d->mMaxMessages, 6, 1); +} + +void KChatDialog::slotGetNameFont() +{ + QFont font = nameFont(); + KFontDialog::getFont(font); + setNameFont(font); +} + +void KChatDialog::slotGetTextFont() +{ + QFont font = textFont(); + KFontDialog::getFont(font); + setTextFont(font); +} + +void KChatDialog::slotGetSystemNameFont() +{ + QFont font = systemNameFont(); + KFontDialog::getFont(font); + setSystemNameFont(font); +} + +void KChatDialog::slotGetSystemTextFont() +{ + QFont font = systemTextFont(); + KFontDialog::getFont(font); + setSystemTextFont(font); +} + +QFont KChatDialog::nameFont() const +{ + return d->mNamePreview->font(); +} + +QFont KChatDialog::textFont() const +{ + return d->mTextPreview->font(); +} + +QFont KChatDialog::systemNameFont() const +{ + return d->mSystemNamePreview->font(); +} + +QFont KChatDialog::systemTextFont() const +{ + return d->mSystemTextPreview->font(); +} + +void KChatDialog::plugChatWidget(KChatBase* widget, bool applyFonts) +{ + d->mChat = widget; + if (applyFonts && d->mChat) { + setNameFont(d->mChat->nameFont()); + setTextFont(d->mChat->messageFont()); + setSystemNameFont(d->mChat->systemNameFont()); + setSystemTextFont(d->mChat->systemMessageFont()); + setMaxMessages(d->mChat->maxItems()); + } +} + +void KChatDialog::configureChatWidget(KChatBase* widget) +{ + if (!widget) { + return; + } + widget->setNameFont(nameFont()); + widget->setMessageFont(textFont()); + + widget->setSystemNameFont(systemNameFont()); + widget->setSystemMessageFont(systemTextFont()); + + widget->setMaxItems(maxMessages()); +} + +void KChatDialog::slotOk() +{ + slotApply(); + KDialogBase::slotOk(); +} + +void KChatDialog::slotApply() +{ + configureChatWidget(d->mChat); +} + +void KChatDialog::setNameFont(QFont f) +{ + d->mNamePreview->setFont(f); +} + +void KChatDialog::setTextFont(QFont f) +{ + d->mTextPreview->setFont(f); +} + +void KChatDialog::setSystemNameFont(QFont f) +{ + d->mSystemNamePreview->setFont(f); +} + +void KChatDialog::setSystemTextFont(QFont f) +{ + d->mSystemTextPreview->setFont(f); +} + +void KChatDialog::setMaxMessages(int max) +{ + d->mMaxMessages->setText(QString::number(max)); +} + +int KChatDialog::maxMessages() const +{ + bool ok; + int max = d->mMaxMessages->text().toInt(&ok); + if (!ok) { + return -1; // unlimited is default + } + return max; +} + +#include "kchatdialog.moc" |