#include "desktopclient.h"
#include "ui_desktopclient.h"
#include<QMessageBox>
#include<QPixmap>
#include<QDebug>
#include<QBuffer>
#include<QDataStream>
#include<QByteArray>
#include<QIODevice>
#include<QSettings>
DeskTopClient::DeskTopClient(QWidget *parent) :
QWidget(parent),
ui(new Ui::DeskTopClient)
{
ui->setupUi(this);
this->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::ToolTip);
m_trayIcon = new QSystemTrayIcon(this);
m_trayIcon->setIcon(QIcon(":/view.ico")); //设置图标
mMenu = new QMenu(this);
exitAction = new QAction(QStringLiteral("Exit"),this);
mMenu->addAction(exitAction);
m_trayIcon->setContextMenu(mMenu);
connect(exitAction,SIGNAL(triggered(bool)),this,SLOT(HandleClose()));
m_trayIcon->show();
m_trayIcon->showMessage("tip","desktopclient has started",QSystemTrayIcon::Information,1000);
ReadConfig();
screen = QGuiApplication::primaryScreen();
m_client = new TcpImageClient(_ipAddr);
time = new QTimer(this);
time->setInterval(1000/_frame);
connect(time,SIGNAL(timeout()),this,SLOT(SendCutImageData()));
connect(m_client,SIGNAL(connectSuccess()),time,SLOT(start()));
connect(m_client,SIGNAL(distConnect()),time,SLOT(stop()));
}
DeskTopClient::~DeskTopClient()
{
delete m_client;
delete ui;
}
void DeskTopClient::SendCutImageData()
{
QPixmap image = screen->grabWindow(0);
QBuffer buffer;
image.scaled(820,530,Qt::IgnoreAspectRatio,Qt::FastTransformation);
image.save(&buffer,"PNG");
quint32 len = buffer.data().size() + 8;
QByteArray dataArray;
QDataStream stream(&dataArray,QIODevice::WriteOnly);
stream << len;
stream << _machineId;
dataArray.append(buffer.data());
m_client->sendImageData(dataArray);
// HandleClose();
}
void DeskTopClient::HandleClose()
{
QApplication::quit();
}
void DeskTopClient::ReadConfig()
{
QSettings settings("config.ini",QSettings::IniFormat);
settings.beginGroup("config");
if(settings.value("ipAddr").toString().isEmpty()){
QMessageBox box;
box.setWindowTitle("ip地址错误");
box.setText("请先配置服务端IP地址,再打开");
box.exec();
HandleClose();
return;
}
_ipAddr = settings.value("ipAddr").toString();
if(settings.value("machineId").toString().isEmpty()){
QMessageBox box;
box.setWindowTitle("ip地址错误");
box.setText("请先配置机器ID,再打开");
box.exec();
HandleClose();
return;
}
_machineId = settings.value("machineId").toInt();
if(settings.value("frame").toString().isEmpty()){
QMessageBox box;
box.setWindowTitle("ip地址错误");
box.setText("请先配置帧率,再打开");
box.exec();
HandleClose();
return;
}
_frame = settings.value("frame").toInt();
settings.endGroup();
}