00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "tellpage.h"
00012 #include <qtextedit.h>
00013
00014 #include <qvariant.h>
00015 #include <qtextedit.h>
00016 #include <qlayout.h>
00017 #include <qtooltip.h>
00018 #include <qwhatsthis.h>
00019 #include <qimage.h>
00020 #include <qpixmap.h>
00021 #include <iostream>
00022
00023 #include <qsplitter.h>
00024 #include <qvaluelist.h>
00025
00026 #include "mtpbrowser.h"
00027
00028 PLUGIN_FACTORY(TellPage,"tell");
00029
00030 TellPage::TellPage(QWidget *parent, const char *name, Master * session)
00031 : Page(parent,name,session) {
00032 if ( !name )
00033 setName( "TellPageBase" );
00034 TellPageBaseLayout = new QGridLayout( this, 1, 1, 6, 6, "TellPageBaseLayout");
00035
00036 QSplitter *vsplit = new QSplitter(Qt::Vertical,this);
00037 chat_view = new MtpBrowser( vsplit, "chat_view" );
00038 chat_edit = new QTextEdit( vsplit, "chat_edit" );
00039
00040 chat_edit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, chat_edit->sizePolicy().hasHeightForWidth() ) );
00041 chat_edit->setMinimumSize( QSize( 300, 50 ) );
00042 chat_edit->setFrameShape( QTextEdit::LineEditPanel );
00043
00044 QValueList<int> list = vsplit->sizes();
00045 int tmp = list[1];
00046 list[1] = 0;
00047 list[0] += tmp-list[1];
00048 vsplit->setSizes(list);
00049
00050 TellPageBaseLayout->addWidget(vsplit,0,0);
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 resize( QSize(573, 361).expandedTo(minimumSizeHint()) );
00065
00066 chat_view->setTextFormat(Qt::RichText);
00067
00068 chat_view->setWrapPolicy(QTextBrowser::Anywhere);
00069 chat_view->setLinkUnderline(true);
00070
00071 QStyleSheetItem *item = new QStyleSheetItem(chat_view->styleSheet(),"mypre");
00072 item->setWhiteSpaceMode(QStyleSheetItem::WhiteSpacePre);
00073
00074 history_up = new QAction(chat_edit,"up");
00075 history_up->setAccel(QKeySequence(SHIFT + Key_Up));
00076 history_down = new QAction(chat_edit,"down");
00077 history_down->setAccel(QKeySequence(SHIFT + Key_Down));
00078 new_line = new QAction(chat_edit,"new");
00079 new_line->setAccel(QKeySequence(CTRL + Key_Return));
00080
00081 connect(history_up, SIGNAL(activated()),
00082 this, SLOT(slotHistoryUp()));
00083 connect(history_down, SIGNAL(activated()),
00084 this, SLOT(slotHistoryDown()));
00085 connect(new_line, SIGNAL(activated()),
00086 this, SLOT(slotNewLine()));
00087
00088 connect(chat_edit, SIGNAL(returnPressed()),
00089 this, SLOT(returnPressed()));
00090
00091 connect(chat_view,SIGNAL(linkClicked(const QString &)),
00092 session, SLOT(slotLinkClicked(const QString &)));
00093
00094 chat_edit->setFocus();
00095 chat_edit->setWordWrap(QTextEdit::NoWrap);
00096
00097
00098 setPrefix(QString("tell ") + name + " ");
00099 }
00100
00101
00102 TellPage::~TellPage() {}
00103
00104 void TellPage::append(const QString &msg) {
00105
00106 chat_view->append(msg);
00107 emit textDisplayed(this);
00108 }
00109
00110 void TellPage::returnPressed() {
00111
00112 chat_edit->doKeyboardAction(QTextEdit::ActionBackspace);
00113
00114 history.push_front(chat_edit->text());
00115
00116 QString msg(prefix + chat_edit->text());
00117 this->getMaster()->send(msg);
00118 chat_edit->clear();
00119
00120 history_iterator = 0;
00121 }
00122
00123 void TellPage::setPrefix(const QString& prefix) {
00124 this->prefix = prefix;
00125 }
00126
00127 void TellPage::languageChange() {
00128 setCaption( tr( "Tell page" ) );
00129 }
00130
00131 void TellPage::slotHistoryUp() {
00132
00133 if (history_iterator == 0)
00134 history_iterator=history.begin();
00135 else if (history_iterator != (--history.end()))
00136 history_iterator++;
00137 chat_edit->setText(*history_iterator);
00138 }
00139
00140 void TellPage::slotHistoryDown() {
00141 if( history_iterator == 0)
00142 return;
00143 if (history_iterator != history.begin()) {
00144 history_iterator--;
00145 chat_edit->setText(*history_iterator);
00146 } else {
00147 chat_edit->clear();
00148 history_iterator = 0;
00149 }
00150 }
00151
00152 void TellPage::slotNewLine() {
00153 chat_edit->doKeyboardAction(QTextEdit::ActionReturn);
00154 }