Commit cd71b166 by yunpeng.song

更改图标样式,增加多用户互斥,修改posSalesId写入db错误的问题,给一些资源增加互斥锁,登录改为同步的。

parent 716544c1
......@@ -54,7 +54,7 @@ FlowControl::FlowControl():semaphore(0)
connect(this,&FlowControl::doConfirmOrder,this,&FlowControl::_ConfirmOrder,Qt::BlockingQueuedConnection);
connect(this,&FlowControl::doRefundOrder,this,&FlowControl::_RefundOrder,Qt::BlockingQueuedConnection);
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo);
connect(this, &FlowControl::doLogin, this, &FlowControl::onGetNewStoreInfo,Qt::BlockingQueuedConnection);
m_tcpServerManage = new JQHttpServer::TcpServerManage(10);
m_tcpServerManage->setHttpAcceptedCallback( [this]( const QPointer< JQHttpServer::Session > &session )
......@@ -86,7 +86,7 @@ FlowControl::FlowControl():semaphore(0)
{
status = 0;
}
if(!m_ordersMapXbk.isEmpty())
if(!m_ordersEntryMap.isEmpty())
{
iscontinue=1;
}
......@@ -109,6 +109,7 @@ FlowControl::FlowControl():semaphore(0)
{
QLOG_INFO() << QString("bind failed!");
}
Orderstatus::getInstance();
_ClickOMSAssignArea();
m_loginTimer->start(20*1000);
semaphore.release(1);
......@@ -140,9 +141,7 @@ void FlowControl::_AddOrderPull(const QString &orderId, const QString &channel,
orderPull.channel=channel;
orderPull.pageNumber=pageNumber;
orderPull.pageSize=pageSize;
m_mutex.lock();
m_orderPullList.append(orderPull);
m_mutex.unlock();
}
void FlowControl::_GetOrder(const QString &orderId, const QString &channel)
......@@ -162,7 +161,7 @@ void FlowControl::_ClickOMSAssignArea()
void FlowControl::_ClickToLogin()
{
if(!m_bLoginResult||!m_ordersMapXbk.isEmpty())
if(!m_bLoginResult||!m_ordersEntryMap.isEmpty())
{
QLOG_INFO()<<"retry click after 20s";
_ClickOMSAssignArea();
......@@ -243,17 +242,14 @@ bool FlowControl::_Login()
m_clearTimer->start(1000*60*60*24*2);
m_heartTimer->start(1000*60*5);
m_pullTimer->start(1000*10);
onGetBusinessStatus();
emit doPullOrder(QString(),QString());
}
}
if(!result)
{
QLOG_INFO() << QString("%1 msec after login...").arg(VALUE_RELOGINTIME);
QTimer::singleShot(VALUE_RELOGINTIME, this, &FlowControl::_Login);
}
return result;
}
......@@ -350,6 +346,7 @@ bool FlowControl::_PullOrder()
}
}
}
orderObject->update_time=QDateTime::currentDateTime().toTime_t();
if(OrderObject::RequestRefund==orderObject->status)
{
emit startRemind(1);
......@@ -365,28 +362,42 @@ bool FlowControl::_PullOrder()
}
OrderProperpy op;
QString posSaledId=m_orderIdToPosSalesIdMap.value(orderObject->order_id);
switch (orderObject->status){
case OrderObject::NewOrder:
case OrderObject::Confirmed:
case OrderObject::Sendout:
case OrderObject::ToSend:
case OrderObject::Finished:
case OrderObject::RequestRefund:
if(!breaded)
{
op.bCancled = bcancled;
op.bReaded = breaded;
op.entryType = 1;
op.pullNum=0;
m_ordersMapXbk.insert(orderObject->order_id, op);
m_OrderEntryMutex.lock();
m_ordersEntryMap.insert(orderObject->order_id, op);
m_OrderEntryMutex.unlock();
_ClickOMSAssignArea();
}
break;
case OrderObject::AgreeRefund:
case OrderObject::Refunded:
case OrderObject::Cancled:
if(!breaded&&m_ordersMapXbk.contains(orderObject->order_id))
m_ordersMapXbk.erase(m_ordersMapXbk.find(orderObject->order_id));
if(!breaded&&m_ordersEntryMap.contains(orderObject->order_id))
{
if(posSaledId.isEmpty())
{
m_OrderEntryMutex.lock();
m_ordersEntryMap.erase(m_ordersEntryMap.find(orderObject->order_id));
m_OrderEntryMutex.unlock();
}
else{
orderObject->possale_id=posSaledId;
}
}
break;
default:
break;
......@@ -595,7 +606,6 @@ bool FlowControl::_CompleteOrder(const QString& orderId)
OrderObject *orderObject = m_ordersMap.value(orderId);
int oldStatus = orderObject->status;
orderObject->status = recvJson[JSON_STATUS].toInt();
//orderObject->status_desc = recvJson[JSON_STATUSDESC].toString();
emit changeOrderStatus(orderObject, oldStatus);
}
}
......@@ -925,19 +935,23 @@ void FlowControl::_ClearOrder()
{
QDateTime currentDateTime= QDateTime::currentDateTime();
OrderObject *order=NULL;
m_OrderEntryMutex.lock();
foreach (order, m_ordersMap.values()) {
QDateTime createDateTime=QDateTime::fromTime_t(order->create_time);
QDateTime createDateTime=QDateTime::fromTime_t(order->update_time);
qint64 days=createDateTime.daysTo(currentDateTime);
if(days>=2)
{
QLOG_INFO()<<QString("clear order %1").arg(order->order_id);
emit clearorder(order->order_id,order->status);
m_ordersMap.value(order->order_id)->deleteLater();
m_ordersEntryMap.erase(m_ordersEntryMap.find(order->order_id));
delete m_ordersMap.take(order->order_id);
}
}
Orderstatus::getInstance().deleteRecord(QDate::currentDate().addMonths(-1).toString("yyyy-MM-dd"));
m_OrderEntryMutex.unlock();
Orderstatus::getInstance().deleteRecord(QDate::currentDate().addMonths(-1).toString("yyyyMMdd"));
}
bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QString& error)
......@@ -958,7 +972,6 @@ bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QS
else{
actionId=content["actionId"].toInt();
}
qDebug()<<actionId;
switch (actionId) {
case 1://simphony拉取订单
result=_Get01ReplyJson(content,data,error);
......@@ -969,6 +982,9 @@ bool FlowControl::_GetReplyJson(const QJsonObject &content,QJsonObject &data, QS
case 3://simphony取消接单
result=_Get03ReplyJson(content,data,error);
break;
case 4://simphony消息回复
result=_Get04ReplyJson(content,data,error);
break;
case 11://推送订单
result=_Get11ReplyJson(content,data,error);
break;
......@@ -1006,15 +1022,15 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data,
QString orderId=content["orderId"].toString();
if(m_ordersMap.contains(orderId))
{
if(m_orderOperatePair.contains(orderId))
{
if(orderOperation.orderId==orderId)
{
emit showAlert(AlertForm::MSGERROR,"订单已经在收银机上操作,请等待结果");
error=QString("订单已经在收银机上操作,请等待结果");
}
return false;
}
// if(m_orderOperatePair.contains(orderId))
// {
// if(orderOperation.orderId==orderId)
// {
// emit showAlert(AlertForm::MSGERROR,"订单已经在收银机上操作,请等待结果");
// error=QString("订单已经在收银机上操作,请等待结果");
// }
// return false;
// }
emit doStartOperateTimer();
emit doConfirmOrder(orderId);
orderOperation.orderId=orderId;
......@@ -1028,6 +1044,7 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data,
error=QString("响应超时");
}
result=m_bOperateResult;
//memset(&orderOperation,0, sizeof(orderOperation));
semaphore.release(1);
}
else{
......@@ -1043,20 +1060,21 @@ bool FlowControl::_Get02ReplyJson(const QJsonObject &content, QJsonObject &data,
}
bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error)
{
QLOG_INFO()<<__FUNCTION__;
int result;
if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString();
if(m_ordersMap.contains(orderId))
{
if(m_orderOperatePair.contains(orderId))
{
if(orderOperation.orderId==orderId)
{
emit showAlert(AlertForm::SUCCESS,"订单已经在收银机上操作,请等待结果");
error=QString("订单已经在收银机上操作,请等待结果");
}
return false;
}
// if(m_orderOperatePair.contains(orderId))
// {
// if(orderOperation.orderId==orderId)
// {
// emit showAlert(AlertForm::SUCCESS,"订单已经在收银机上操作,请等待结果");
// error=QString("订单已经在收银机上操作,请等待结果");
// }
// return false;
// }
emit doStartOperateTimer();
emit doRefundOrder(orderId,-1,QString("同意退款"));
orderOperation.orderId=orderId;
......@@ -1070,6 +1088,7 @@ bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data,
error=QString("响应超时");
}
result=m_bOperateResult;
memset(&orderOperation,0, sizeof(orderOperation));
semaphore.release(1);
}
......@@ -1084,10 +1103,59 @@ bool FlowControl::_Get03ReplyJson(const QJsonObject &content, QJsonObject &data,
}
return result;
}
bool FlowControl::_Get04ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error)
{
QLOG_INFO()<<__FUNCTION__;
bool result=true;
if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString();
QString posSaleId=content["PosSaleId"].toString();
if(!orderId.isEmpty()&&posSaleId.isEmpty())
{
QLOG_INFO()<<QString("%1订单已经成功推送给simphony").arg(orderId);
m_orderIdToPosSalesIdMap.insert(orderId,posSaleId);
if(m_ordersEntryMap.contains(orderId))
{
if(m_ordersEntryMap.value(orderId).entryType==1)
{
Orderstatus::getInstance().putupdate(orderId,1);
Orderstatus::getInstance().PosSalesIdupdate(orderId,posSaleId);
}
else
{
orderId=m_orderIdToPosSalesIdMap.key(posSaleId);
Orderstatus::getInstance().refundupdate(orderId,1);
}
m_OrderEntryMutex.lock();
m_ordersEntryMap.erase(m_ordersEntryMap.find(orderId));
m_OrderEntryMutex.unlock();
}
else{
OrderProperpy op;
op.bCancled = true;
op.bReaded = false;
op.entryType = 0;
op.pullNum=0;
m_OrderEntryMutex.lock();
m_ordersEntryMap.insert(orderId,op);
m_OrderEntryMutex.unlock();
}
}
else{
result=false;
error=QString("订单号不能为空");
}
}
else{
result=false;
error=QString("请求参数错误");
}
return result;
}
bool FlowControl::_Get11ReplyJson(const QJsonObject &content, QJsonObject &data, QString &error)
{
QLOG_INFO()<<__FUNCTION__;
int result;
bool result=true;
if(!m_bLoginResult){
error = QString("FMOMS未登录");
return false;
......@@ -1136,44 +1204,25 @@ bool FlowControl::_GetLoginReplyJson(const QJsonObject &content,QString &error)
bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QString &orderId)
{
QLOG_INFO()<<__FUNCTION__<<error<<orderId;
bool result;
bool result=true;
if(!m_bLoginResult)
{
error = QString("FMOMS 未登录");
return false;
}
if(!orderId.isEmpty())
{
if(!m_ordersMapXbk.contains(orderId))
{
error = QString("%1订单不能抓取").arg(orderId);
QLOG_INFO()<<QString("%1订单不能抓取").arg(orderId);
}else
{
QLOG_INFO()<<QString("%1订单已经成功推送给simphony").arg(orderId);
if(m_ordersMapXbk.value(orderId).entryType==1)
{
Orderstatus::getInstance().putupdate(orderId,1);
}
else
{
Orderstatus::getInstance().refundupdate(orderId,1);
}
m_ordersMapXbk.erase(m_ordersMapXbk.find(orderId));
}
}
if(m_ordersMapXbk.isEmpty())
if(m_ordersEntryMap.isEmpty())
{
error = QString("没有新订单待拉取");
result = false;
result = true;
}
else
{
QString orderId=m_ordersMapXbk.firstKey();
error.clear();
QString orderId=m_ordersEntryMap.firstKey();
int pullNum=4;
QMap<QString, OrderProperpy>::iterator iter ;
//auto iter=m_ordersMapXbk.Iterator();
for(iter=m_ordersMapXbk.begin();iter!=m_ordersMapXbk.end();iter++)
//auto iter=m_ordersEntryMap.Iterator();
for(iter=m_ordersEntryMap.begin();iter!=m_ordersEntryMap.end();iter++)
{
OrderProperpy op=iter.value();
int num=op.pullNum;
......@@ -1184,14 +1233,16 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS
}
}
OrderObject* orderObject = m_ordersMap.value(orderId);
if(4==m_ordersMapXbk.value(orderId).pullNum)
if(4==m_ordersEntryMap.value(orderId).pullNum)
{
OrderProperpy op=m_ordersMapXbk.value(orderId);
OrderProperpy op=m_ordersEntryMap.value(orderId);
op.pullNum=0;
m_ordersMapXbk.insert(orderId,op);
m_OrderEntryMutex.lock();
m_ordersEntryMap.insert(orderId,op);
m_OrderEntryMutex.unlock();
}
QJsonObject rObj, cObj;
if(m_ordersMapXbk.first().entryType==1)
if(m_ordersEntryMap.first().entryType==1)
{
rObj.insert("fm_cmd", "put_order");
}
......@@ -1201,6 +1252,7 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS
rObj.insert("fm_ver", "1.0");
cObj.insert("pay_id", "002");
cObj.insert("pay_str", "非码外卖");
cObj.insert("posSales_id", orderObject->possale_id);
cObj.insert("order_status",orderObject->status);//订单的状态
cObj.insert("pay_ebcode", orderObject->channel);
cObj.insert("order_index", orderObject->order_index);
......@@ -1306,7 +1358,11 @@ void FlowControl::_OperateTimeOut()
QLOG_INFO()<<__FUNCTION__;
m_bOperateResult=false;
semaphore.release(1);
m_orderOperatePair.erase(m_orderOperatePair.find(orderOperation.orderId));
auto iter=m_orderOperatePair.find(orderOperation.orderId);
if(iter!=m_orderOperatePair.end())
{
m_orderOperatePair.erase(iter);
}
}
......
......@@ -87,17 +87,19 @@ private:
QMap<QString, QMultiMap<QString, dishesObject> >m_dishesMap;
// 已接单的订单
QMap<QString, OrderProperpy> m_ordersMapXbk;
QMap<QString, OrderProperpy> m_ordersEntryMap;
//订单号与pos短号映射
QMap<QString,QString> m_orderIdToPosSalesIdMap;
//记录当前订单操作
QMap<QString, int> m_orderOperatePair;
QMutex m_mutex;
//订单拉取记录
QList<PullOrderInfo> m_orderPullList;
//订单操作互斥信号
QSemaphore semaphore;
//订单操作状态
OrderOperation orderOperation;
QMutex m_OrderEntryMutex;
signals:
// 发送信号给自己 做登陆
void doLogin();
......@@ -252,6 +254,7 @@ private slots:
bool _Get01ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get02ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get03ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get04ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get11ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _Get12ReplyJson(const QJsonObject &content, QJsonObject &data,QString &error);
bool _GetLoginReplyJson(const QJsonObject &content, QString &error);
......
#include "orderstatus.h"
#include "orderstatus.h"
#include "QsLog.h"
#include <QCoreApplication>
......@@ -25,8 +25,7 @@ Orderstatus::Orderstatus()
}
if(!isTableExist){
QLOG_INFO() << "table status does not exist";
query.prepare(QString("create table status (orderId varchar(20) primary key, "
"isput int(1),isrefund int(1),isreport int(1),isbackreport int(1),creatTime varchar(20))"));
query.prepare(QString("create table status (orderId varchar(20) primary key,isput int(1),isrefund int(1),isreport int(1),isbackreport int(1),posSalesId varchar(20),creatTime varchar(20))"));
if(!query.exec())
{
QLOG_ERROR()<<query.lastError().text()<<QString::number(query.lastError().type())<<"create table";
......@@ -55,7 +54,7 @@ bool Orderstatus::statusinsert(const QString &orderId,const QString& creatTime)
}
bool result;
QSqlQuery query(db);
query.prepare(QString("insert into status values('%1',0,0,0,0,'%6')").arg(orderId).arg(creatTime));
query.prepare(QString("insert into status values('%1',0,0,0,0,NUll,'%6')").arg(orderId).arg(creatTime));
qDebug()<<creatTime;
if(!query.exec())
{
......@@ -302,6 +301,56 @@ bool Orderstatus::isorderexit(const QString &orderId)
return result;
}
bool Orderstatus::PosSalesIdupdate(const QString &orderId, const QString &posSalesId)
{
m_mutex.lock();
if(!db.open())
{
QLOG_ERROR()<<"sqlite open failed"<<db.lastError().text();
return false;
}
bool result;
QSqlQuery query(db);
query.prepare(QString("update status set posSalesId='%1' where orderId='%2'")
.arg(posSalesId).arg(orderId));
if(!query.exec())
{
QLOG_ERROR()<<query.lastError().text()<<__FUNCTION__;
result= false;
}
else{
QLOG_INFO()<<QString("update orderId %1 posSalesId success").arg(orderId);
result = true;
}
db.close();
m_mutex.unlock();
return result;
}
QString Orderstatus::getPosSalesId(const QString &orderId)
{
m_mutex.lock();
QString result;
if(!db.open())
{
QLOG_ERROR()<<"sqlite open failed"<<db.lastError().text();
return result;
}
QSqlQuery query(db);
query.prepare(QString("select posSalesId from status where orderId='%1'").arg(orderId));
if(!query.exec())
{
QLOG_ERROR()<<query.lastError().text()<<orderId<<__FUNCTION__;
}
while(query.next())
{
result= query.value(0).toString();
}
db.close();
m_mutex.unlock();
return result;
}
bool Orderstatus::deleteRecord(QString creatTime)
{
m_mutex.lock();
......
/******************
/******************
*进行sqlite操作
******************/
#ifndef ORDERSTATUS_H
......@@ -76,6 +76,9 @@ public:
*返回:true是,false否
**/
bool isorderexit(const QString& orderId);
bool PosSalesIdupdate(const QString& orderId, const QString &posSalesId);
QString getPosSalesId(const QString& orderId);
bool deleteRecord(QString creatTime);
private:
QMutex m_mutex;
......
#include "SysTray.h"
#include "SysTray.h"
#include <QApplication>
#include <QThread>
extern QThread tcpThread;
......@@ -9,7 +9,7 @@ SysTray::SysTray(QObject *parent) :
{
_CreatMenu();
setIcon(QIcon(":fm.ico"));
setIcon(QIcon(":fm.png"));
}
void SysTray::_CreatMenu()
......
#ifndef ORDEROBJECT_H
#ifndef ORDEROBJECT_H
#define ORDEROBJECT_H
#include "Model/baseObject.h"
......@@ -148,6 +148,7 @@ public:
Q_PROPERTY (int delivery_time READ getdelivery_time WRITE setdelivery_time)
Q_PROPERTY (int delivery_status READ getdelivery_status WRITE setdelivery_status)
Q_PROPERTY (QString fm_id READ getfm_id WRITE setfm_id)
Q_PROPERTY (QString possale_id READ getpossale_id WRITE setpossale_id)
Q_PROPERTY (QStringList records READ getrecords WRITE setrecords)
Q_PROPERTY (int service_fee READ getservice_fee WRITE setservice_fee)
Q_PROPERTY (int dis_platform_fee READ getdis_platform_fee WRITE setdis_platform_fee)
......@@ -155,11 +156,13 @@ public:
Q_PROPERTY (int package_fee READ getpackage_fee WRITE setpackage_fee)
Q_PROPERTY (int product_fee READ getproduct_fee WRITE setproduct_fee)
Q_PROPERTY (int order_type READ getorder_type WRITE setorder_type)
Q_PROPERTY (int update_time READ getupdate_time WRITE setupdate_time)
int service_fee; //平台佣金
int dis_platform_fee; //平台承担的优惠金额
int dis_shop_fee; //商户承担的优惠金额
int package_fee; //打包费
QString possale_id; //pos短号
QString address; //地址
QString channel; //渠道
......@@ -201,8 +204,14 @@ public:
int product_fee; // 商户商品金额=商品金额+打包费
int order_type; //订单类型
int update_time; //期望送达时间
protected:
inline int getupdate_time() const{return update_time;}
inline void setupdate_time(const int &v){update_time = v;}
inline int getproduct_fee() const{return product_fee;}
inline void setproduct_fee(const int &v){product_fee = v;}
......@@ -239,6 +248,10 @@ protected:
inline void setchannelName(const QString &v){channel_name = v;}
inline void setpossale_id(const QString &v){possale_id = v;}
inline QString getpossale_id() const{return possale_id;}
inline QString getphone() const{return phone;}
inline void setphone(const QString& v){phone = v;}
......
#include "floatForm.h"
#include "floatForm.h"
#include "ui_floatForm.h"
#include <QPixmap>
#include "DTools/configManger.h"
......@@ -18,9 +18,9 @@ FloatForm::FloatForm(QWidget *parent) :
m_bReminding = false;
QPixmap imgNormal(":float_normal.jpg");
QPixmap imgNormal(":float_normal.png");
m_imgNormalSize = imgNormal.size();
QPixmap imgRemind(":float_remind.jpg");
QPixmap imgRemind(":float_remind.png");
m_imgRemindSize = imgRemind.size();
m_animation.setTargetObject(this);
......@@ -93,7 +93,7 @@ void FloatForm::_Init()
setAttribute(Qt::WA_TranslucentBackground);
setFixedSize(m_imgNormalSize);
setStyleSheet("#floatWdg{ border-image: url(:float_normal.jpg); }");
setStyleSheet("#floatWdg{ border-image: url(:float_normal.png); }");
//setStyleSheet("#floatWdg{ border-image: url(:logo.svg); }");
//setStyleSheet("#floatWdg{ border-image: url(:float_normal.png); }");
......@@ -109,7 +109,7 @@ void FloatForm::_Blink()
m_animation.start();
loop.exec();
this->setFixedSize(m_imgRemindSize);
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.jpg);}");
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.png);}");
//ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_remind.png);}");
m_animation.setStartValue(0);
m_animation.setEndValue(1);
......@@ -121,7 +121,7 @@ void FloatForm::_Blink()
loop.exec();
this->setFixedSize(m_imgNormalSize);
//ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.png)}");
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.jpg);}");
ui->floatWdg->setStyleSheet("#floatWdg{ border-image: url(:float_normal.png);}");
m_animation.setStartValue(0);
m_animation.setEndValue(1);
m_animation.start();
......
......@@ -14,7 +14,7 @@
<string>Dialog</string>
</property>
<property name="windowOpacity">
<double>0.500000000000000</double>
<double>0.800000000000000</double>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
......
......@@ -4,7 +4,7 @@
#
#-------------------------------------------------
QT += core gui network printsupport multimedia concurrent sql
QT += core gui network multimedia concurrent sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
......
IDI_ICON1 ICON DISCARDABLE"fm.ico"
\ No newline at end of file
IDI_ICON1 ICON DISCARDABLE "logo.ico"
\ No newline at end of file
#include "mainForm.h"
#include "mainForm.h"
#include <QApplication>
#include <QDir>
#include <QResource>
......@@ -53,13 +53,18 @@ void LoadTheme(const QString& theme)
int main(int argc, char *argv[])
{
HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"fmTakeaway" );
HANDLE m_hMutex = CreateMutex(NULL, FALSE, L"Global\\fmTakeaway" );
if(NULL!=m_hMutex){
if (GetLastError() == ERROR_ALREADY_EXISTS) {
CloseHandle(m_hMutex);
m_hMutex = NULL;
return -1;
}
}
else{
return -1;
}
QApplication a(argc, argv);
g_appDir = a.applicationDirPath();
......
#include "settingForm.h"
#include "settingForm.h"
#include "ui_settingForm.h"
#include "preDefine.h"
#include "DTools/configManger.h"
#include <QPrinterInfo>
#include <QSound>
SettingForm::SettingForm(QWidget *parent) :
......@@ -12,17 +11,17 @@ SettingForm::SettingForm(QWidget *parent) :
ui->setupUi(this);
// 初始化打印机选项
QString printer = ConfigManger::GetInstance().GetPrinterName();
QStringList printerList = QPrinterInfo::availablePrinterNames();
for(int i=0; i<printerList.count(); i++)
{
QString name = printerList[i];
ui->settingCbxPrinter->addItem(name);
if(!name.compare(printer))
{
ui->settingCbxPrinter->setCurrentIndex(i);
}
}
// QString printer = ConfigManger::GetInstance().GetPrinterName();
// QStringList printerList = QPrinterInfo::availablePrinterNames();
// for(int i=0; i<printerList.count(); i++)
// {
// QString name = printerList[i];
// ui->settingCbxPrinter->addItem(name);
// if(!name.compare(printer))
// {
// ui->settingCbxPrinter->setCurrentIndex(i);
// }
// }
_Init();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment