149 lines
3.8 KiB
C++
149 lines
3.8 KiB
C++
|
|
#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());
|
||
|
|
}
|
||
|
|
|
||
|
|
|