00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kchatdialog.h"
00021
00022 #include "kchatbase.h"
00023
00024 #include <klocale.h>
00025 #include <kfontdialog.h>
00026
00027 #include <qlayout.h>
00028 #include <qlabel.h>
00029 #include <qpushbutton.h>
00030
00031 class KChatDialogPrivate
00032 {
00033 public:
00034 KChatDialogPrivate()
00035 {
00036 mTextPage = 0;
00037
00038 mNamePreview = 0;
00039 mTextPreview = 0;
00040 mSystemNamePreview = 0;
00041 mSystemTextPreview = 0;
00042
00043 mChat = 0;
00044 }
00045
00046 QFrame* mTextPage;
00047
00048 QLabel* mNamePreview;
00049 QLabel* mTextPreview;
00050 QLabel* mSystemNamePreview;
00051 QLabel* mSystemTextPreview;
00052
00053 QLineEdit* mMaxMessages;
00054
00055 KChatBase* mChat;
00056 };
00057
00058 KChatDialog::KChatDialog(KChatBase* chat, QWidget* parent, bool modal)
00059
00060 : KDialogBase(Plain, i18n("Configure Chat"), Ok|Default|Apply|Cancel, Ok, parent, 0, modal, true)
00061 {
00062 init();
00063 plugChatWidget(chat);
00064 }
00065
00066 KChatDialog::KChatDialog(QWidget* parent, bool modal)
00067
00068 : KDialogBase(Plain, i18n("Configure Chat"), Ok|Default|Apply|Cancel, Ok, parent, 0, modal, true)
00069 {
00070 init();
00071 }
00072
00073 KChatDialog::~KChatDialog()
00074 {
00075 delete d;
00076 }
00077
00078 void KChatDialog::init()
00079 {
00080 d = new KChatDialogPrivate;
00081
00082 d->mTextPage = plainPage();
00083 QGridLayout* layout = new QGridLayout(d->mTextPage, 7, 2, KDialog::marginHint(), KDialog::spacingHint());
00084
00085
00086 QPushButton* nameFont = new QPushButton(i18n("Name Font..."), d->mTextPage);
00087 connect(nameFont, SIGNAL(pressed()), this, SLOT(slotGetNameFont()));
00088 layout->addWidget(nameFont, 0, 0);
00089 QPushButton* textFont = new QPushButton(i18n("Text Font..."), d->mTextPage);
00090 connect(textFont, SIGNAL(pressed()), this, SLOT(slotGetTextFont()));
00091 layout->addWidget(textFont, 0, 1);
00092
00093 QFrame* messagePreview = new QFrame(d->mTextPage);
00094 messagePreview->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
00095 QHBoxLayout* messageLayout = new QHBoxLayout(messagePreview);
00096 layout->addMultiCellWidget(messagePreview, 1, 1, 0, 1);
00097
00098 d->mNamePreview = new QLabel(i18n("Player: "), messagePreview);
00099 messageLayout->addWidget(d->mNamePreview, 0);
00100 d->mTextPreview = new QLabel(i18n("This is a player message"), messagePreview);
00101 messageLayout->addWidget(d->mTextPreview, 1);
00102
00103 layout->addRowSpacing(2, 10);
00104
00105
00106 QLabel* systemMessages = new QLabel(i18n("System Messages - Messages directly sent from the game"), d->mTextPage);
00107 layout->addMultiCellWidget(systemMessages, 3, 3, 0, 1);
00108 QPushButton* systemNameFont = new QPushButton(i18n("Name Font..."), d->mTextPage);
00109 connect(systemNameFont, SIGNAL(pressed()), this, SLOT(slotGetSystemNameFont()));
00110 layout->addWidget(systemNameFont, 4, 0);
00111 QPushButton* systemTextFont = new QPushButton(i18n("Text Font..."), d->mTextPage);
00112 connect(systemTextFont, SIGNAL(pressed()), this, SLOT(slotGetSystemTextFont()));
00113 layout->addWidget(systemTextFont, 4, 1);
00114
00115 QFrame* systemMessagePreview = new QFrame(d->mTextPage);
00116 systemMessagePreview->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
00117 QHBoxLayout* systemMessageLayout = new QHBoxLayout(systemMessagePreview);
00118 layout->addMultiCellWidget(systemMessagePreview, 5, 5, 0, 1);
00119
00120 d->mSystemNamePreview = new QLabel(i18n("--- Game: "), systemMessagePreview);
00121 systemMessageLayout->addWidget(d->mSystemNamePreview, 0);
00122 d->mSystemTextPreview = new QLabel(i18n("This is a system message"), systemMessagePreview);
00123 systemMessageLayout->addWidget(d->mSystemTextPreview, 1);
00124
00125
00126 QLabel* maxMessages = new QLabel(i18n("Maximal number of messages (-1 = unlimited):"), d->mTextPage);
00127 layout->addWidget(maxMessages, 6, 0);
00128 d->mMaxMessages = new QLineEdit(d->mTextPage);
00129 d->mMaxMessages->setText(QString::number(-1));
00130 layout->addWidget(d->mMaxMessages, 6, 1);
00131 }
00132
00133 void KChatDialog::slotGetNameFont()
00134 {
00135 QFont font = nameFont();
00136 KFontDialog::getFont(font);
00137 setNameFont(font);
00138 }
00139
00140 void KChatDialog::slotGetTextFont()
00141 {
00142 QFont font = textFont();
00143 KFontDialog::getFont(font);
00144 setTextFont(font);
00145 }
00146
00147 void KChatDialog::slotGetSystemNameFont()
00148 {
00149 QFont font = systemNameFont();
00150 KFontDialog::getFont(font);
00151 setSystemNameFont(font);
00152 }
00153
00154 void KChatDialog::slotGetSystemTextFont()
00155 {
00156 QFont font = systemTextFont();
00157 KFontDialog::getFont(font);
00158 setSystemTextFont(font);
00159 }
00160
00161 QFont KChatDialog::nameFont() const
00162 {
00163 return d->mNamePreview->font();
00164 }
00165
00166 QFont KChatDialog::textFont() const
00167 {
00168 return d->mTextPreview->font();
00169 }
00170
00171 QFont KChatDialog::systemNameFont() const
00172 {
00173 return d->mSystemNamePreview->font();
00174 }
00175
00176 QFont KChatDialog::systemTextFont() const
00177 {
00178 return d->mSystemTextPreview->font();
00179 }
00180
00181 void KChatDialog::plugChatWidget(KChatBase* widget, bool applyFonts)
00182 {
00183 d->mChat = widget;
00184 if (applyFonts && d->mChat) {
00185 setNameFont(d->mChat->nameFont());
00186 setTextFont(d->mChat->messageFont());
00187 setSystemNameFont(d->mChat->systemNameFont());
00188 setSystemTextFont(d->mChat->systemMessageFont());
00189 setMaxMessages(d->mChat->maxItems());
00190 }
00191 }
00192
00193 void KChatDialog::configureChatWidget(KChatBase* widget)
00194 {
00195 if (!widget) {
00196 return;
00197 }
00198 widget->setNameFont(nameFont());
00199 widget->setMessageFont(textFont());
00200
00201 widget->setSystemNameFont(systemNameFont());
00202 widget->setSystemMessageFont(systemTextFont());
00203
00204 widget->setMaxItems(maxMessages());
00205 }
00206
00207 void KChatDialog::slotOk()
00208 {
00209 slotApply();
00210 KDialogBase::slotOk();
00211 }
00212
00213 void KChatDialog::slotApply()
00214 {
00215 configureChatWidget(d->mChat);
00216 }
00217
00218 void KChatDialog::setNameFont(QFont f)
00219 {
00220 d->mNamePreview->setFont(f);
00221 }
00222
00223 void KChatDialog::setTextFont(QFont f)
00224 {
00225 d->mTextPreview->setFont(f);
00226 }
00227
00228 void KChatDialog::setSystemNameFont(QFont f)
00229 {
00230 d->mSystemNamePreview->setFont(f);
00231 }
00232
00233 void KChatDialog::setSystemTextFont(QFont f)
00234 {
00235 d->mSystemTextPreview->setFont(f);
00236 }
00237
00238 void KChatDialog::setMaxMessages(int max)
00239 {
00240 d->mMaxMessages->setText(QString::number(max));
00241 }
00242
00243 int KChatDialog::maxMessages() const
00244 {
00245 bool ok;
00246 int max = d->mMaxMessages->text().toInt(&ok);
00247 if (!ok) {
00248 return -1;
00249 }
00250 return max;
00251 }
00252
00253 #include "kchatdialog.moc"