#include "LanPaper.h" LanPaper::LanPaper(QWidget *parent) : QMainWindow(parent),server(new Server(this)) { setupUi(this); this->server->listen(QHostAddress(Config::getSrcIP()),QString(Config::getSrcPort()).toInt() ); //install message key filter this->pTEMessage->installEventFilter(this); this->installEventFilter(this); this->trayIco=new TrayIco(this); connect(this->actionAbout,SIGNAL(triggered()),this,SLOT(aboutClick()) ); QScrollBar* scrollBar=this->pTEChatText->verticalScrollBar(); scrollBar->setTracking(true); } void LanPaper::addChatContentToThereSide(const QString& content) { QTime time=QTime::currentTime(); QString displayTime=QString("%1:%2:%3").arg(time.hour()).arg(time.minute()).arg(time.second()); this->pTEChatText->appendPlainText(displayTime+":There"); this->pTEChatText->appendPlainText(content); this->pTEChatText->appendPlainText(" "); if(this->isHidden()||this->isMinimized()||!this->isWindowsActivated()) { this->trayIco->setFlash(true); } this->scrollToBottom(); } QString LanPaper::getMessage() { return this->pTEMessage->toPlainText(); } void LanPaper::on_pBTSendMessage_clicked() { QString text=this->pTEMessage->toPlainText(); if(text.trimmed()=="") { QMessageBox::information(this,"warning","no empty message allowed."); return; } this->addChatContentToMeSide(text); this->client=new Client(this); connect(this->client,SIGNAL(connectionSuccess(bool)),this,SLOT(clientSuccess(bool)) ); this->client->sendMessage(text); this->pBTSendMessage->setEnabled(false); } void LanPaper::addChatContentToMeSide(const QString& content) { QTime time=QTime::currentTime(); QString displayTime=QString("%1:%2:%3").arg(time.hour()).arg(time.minute()).arg(time.second()); this->pTEChatText->appendPlainText(" Me:"+displayTime); this->pTEChatText->appendPlainText(" "+content); this->pTEChatText->appendPlainText(" "); this->scrollToBottom(); } bool LanPaper::eventFilter(QObject *obj, QEvent *event) { if(obj==this->pTEMessage) { if(event->type()==QEvent::KeyPress) { QKeyEvent* keyEvent=(QKeyEvent*)event; if(keyEvent->key()==Qt::Key_Return||keyEvent->key()==Qt::Key_Enter) { this->on_pBTSendMessage_clicked(); event->accept(); return true; } } } if(obj==this) { if(event->type()==QEvent::WindowActivate) { this->trayIco->setFlash(false); } } return false; } void LanPaper::changeEvent(QEvent *e) { if((e->type()==QEvent::WindowStateChange)&&this->isMinimized()) { this->hide(); } } void LanPaper::aboutClick() { QString srcIP=Config::getSrcIP(); QString srcPort=Config::getSrcPort(); QString desIP=Config::getDesIP(); QString desPort=Config::getDesPort(); QString info; info=QString("src %1:%2\n des %3:%4").arg(srcIP).arg(srcPort).arg(desIP).arg(desPort); QMessageBox::about(this,"about",info); } void LanPaper::clientSuccess(bool success) { if(success) { this->pTEMessage->setPlainText(""); } else { QMessageBox::warning(this,"warning","message send failed."); } this->pBTSendMessage->setEnabled(true); this->pTEMessage->setFocus(); this->client->deleteLater(); } bool LanPaper::isWindowsActivated() { if(this->isActiveWindow()) { return true; } if(this->pTEChatText->isActiveWindow()) { return true; } if(this->pTEChatText->isActiveWindow()) { return true; } return false; } void LanPaper::scrollToBottom() { QScrollBar* scrollBar=this->pTEChatText->verticalScrollBar(); scrollBar->setValue(scrollBar->maximum()); }