Commit a40d9dd3 by NitefullWind

1. 米有会员系统对接。不显示导航窗口。

parent 06108fca
...@@ -18,6 +18,7 @@ NavWindow::NavWindow(QWidget *parent) : ...@@ -18,6 +18,7 @@ NavWindow::NavWindow(QWidget *parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::NavWindow), ui(new Ui::NavWindow),
_btn_group(new QButtonGroup(this)), _btn_group(new QButtonGroup(this)),
_menu(new QMenu(this)),
_animationShow(new QParallelAnimationGroup(this)), _animationShow(new QParallelAnimationGroup(this)),
_stateMachine(new QStateMachine(this)), _stateMachine(new QStateMachine(this)),
_systemTrayIcon(new QSystemTrayIcon(this)), _systemTrayIcon(new QSystemTrayIcon(this)),
...@@ -29,9 +30,9 @@ NavWindow::NavWindow(QWidget *parent) : ...@@ -29,9 +30,9 @@ NavWindow::NavWindow(QWidget *parent) :
connect(this, SIGNAL(stopBlink()), ui->navMainBtn, SLOT(stop())); connect(this, SIGNAL(stopBlink()), ui->navMainBtn, SLOT(stop()));
btns.push_back(std::make_pair("payment", QString::fromLocal8Bit("非码支付"))); btns.push_back(std::make_pair("payment", QString::fromLocal8Bit("非码支付")));
// btns.push_back(std::make_pair("vip", QString::fromLocal8Bit("非码会员"))); btns.push_back(std::make_pair("vip", QString::fromLocal8Bit("非码会员")));
btns.push_back(std::make_pair("takeout", QString::fromLocal8Bit("非码外卖"))); btns.push_back(std::make_pair("takeout", QString::fromLocal8Bit("非码外卖")));
// btns.push_back(std::make_pair("coupons", QString::fromLocal8Bit("码多多"))); btns.push_back(std::make_pair("coupons", QString::fromLocal8Bit("码多多")));
btns.push_back(std::make_pair("tool", QString::fromLocal8Bit("设置"))); btns.push_back(std::make_pair("tool", QString::fromLocal8Bit("设置")));
MenuUiProp.distance = 100; MenuUiProp.distance = 100;
...@@ -44,7 +45,7 @@ NavWindow::NavWindow(QWidget *parent) : ...@@ -44,7 +45,7 @@ NavWindow::NavWindow(QWidget *parent) :
this->setWindowFlags(windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool); this->setWindowFlags(windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool);
connect(_btn_group, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onMenuBtnClicked(QAbstractButton*))); connect(_btn_group, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onMenuBtnClicked(QAbstractButton*)));
initMenu(); // initMenu();
initSystemTrayIcon(); initSystemTrayIcon();
this->move(FMPHomeSettings::instance()->getWindowPosition()); this->move(FMPHomeSettings::instance()->getWindowPosition());
...@@ -65,16 +66,13 @@ NavWindow::~NavWindow() ...@@ -65,16 +66,13 @@ NavWindow::~NavWindow()
_blinkFuture.waitForFinished(); _blinkFuture.waitForFinished();
delete _btn_group; delete _btn_group;
for(int i=0; i<actions.size(); ++i) { delete _menu;
delete actions.at(i);
}
actions.clear();
delete _animationShow; delete _animationShow;
delete _systemTrayIcon; delete _systemTrayIcon;
delete stateDefault; // delete stateDefault;
delete stateSpread; // delete stateSpread;
delete stateGroup; // delete stateGroup;
delete stateBlink; // delete stateBlink;
delete _stateMachine; delete _stateMachine;
delete ui; delete ui;
} }
...@@ -131,37 +129,50 @@ void NavWindow::initMenu() ...@@ -131,37 +129,50 @@ void NavWindow::initMenu()
ui->navMainBtn->raise(); ui->navMainBtn->raise();
}); });
_stateMachine->addDefaultAnimation(_animationShow);
_stateMachine->setInitialState(stateGroup);
_stateMachine->start();
MenuUiProp.btnWidth = 60;
int centerX = ui->navMainBtn->x() + ui->navMainBtn->width()/2; int centerX = ui->navMainBtn->x() + ui->navMainBtn->width()/2;
int centerY = ui->navMainBtn->y() + ui->navMainBtn->height()/2; int centerY = ui->navMainBtn->y() + ui->navMainBtn->height()/2;
_centerPoint = QPoint(centerX, centerY);
_centerGeometry = QRect(centerX-MenuUiProp.btnWidth/2,centerY-MenuUiProp.btnWidth/2,MenuUiProp.btnWidth,MenuUiProp.btnWidth);
const int dis = MenuUiProp.distance; // for(int i=0; i<btns.size(); i++) {
int btnsNum = btns.size(); // std::pair<QString, QString> btnP = btns.at(i);
double jianGe = 0; // createMenuBtn(btnP.first, btnP.second);
if(MenuUiProp.interval > 0) { // }
jianGe = MenuUiProp.interval; }
} else if(btnsNum > 1) {
jianGe = (MenuUiProp.endAngle - MenuUiProp.beginAngle)/(btns.size()-1);
}
const int btnWidth = 60;
_centerGeometry = QRect(centerX-btnWidth/2,centerY-btnWidth/2,btnWidth,btnWidth);
for(decltype(btns.size()) i = 0; i<btns.size(); ++i) { void NavWindow::createMenuBtn(const QString &btnName, const QString &showName)
std::pair<QString, QString> btnPair = btns.at(i); {
QAction *action = new QAction(QIcon(QString(":%1").arg(btnPair.first)), btnPair.second, this); const int dis = MenuUiProp.distance;
double jianGe = MenuUiProp.interval;
// int btnsNum = btns.size();
// if(MenuUiProp.interval > 0) {
// jianGe = MenuUiProp.interval;
// } else if(btnsNum > 1) {
// jianGe = (MenuUiProp.endAngle - MenuUiProp.beginAngle)/(btns.size()-1);
// }
// QAction *action = new QAction(QIcon(QString(":%1").arg(btnName)), showName, this);
QAction *action = _menu->addAction(QIcon(QString(":%1").arg(btnName)), showName);;
connect(action, &QAction::triggered, this, [=](){ connect(action, &QAction::triggered, this, [=](){
emit menuBtnClicked(btnPair.first); emit menuBtnClicked(btnName);
}); });
actions << action;
auto btn = new QPushButton(this); auto btn = new QPushButton(this);
btn->setCursor(QCursor(Qt::PointingHandCursor)); btn->setCursor(QCursor(Qt::PointingHandCursor));
btn->addAction(action); btn->addAction(action);
double angle = MenuUiProp.beginAngle + jianGe*i; int btnIndex = _btn_group->buttons().length();
int x = centerX + dis*cos(angle) - btnWidth/2;
int y = centerY + dis*sin(angle) - btnWidth/2;
QRect btnGrometry(x, y, btnWidth, btnWidth);
btn->setObjectName(btnPair.first); double angle = MenuUiProp.beginAngle + jianGe*btnIndex;
int x = _centerPoint.x() + dis*cos(angle) - MenuUiProp.btnWidth/2;
int y = _centerPoint.y() + dis*sin(angle) - MenuUiProp.btnWidth/2;
QRect btnGrometry(x, y, MenuUiProp.btnWidth, MenuUiProp.btnWidth);
btn->setObjectName(btnName);
_btn_group->addButton(btn); _btn_group->addButton(btn);
btn->setGeometry(_centerGeometry); btn->setGeometry(_centerGeometry);
...@@ -171,15 +182,12 @@ void NavWindow::initMenu() ...@@ -171,15 +182,12 @@ void NavWindow::initMenu()
if(isUseAnimation) { if(isUseAnimation) {
// 创建动画 // 创建动画
auto animation = new QPropertyAnimation(btn, "geometry"); auto animation = new QPropertyAnimation(btn, "geometry");
animation->setDuration(300 + i*75); animation->setDuration(300 + btnIndex*75);
animation->setEasingCurve(QEasingCurve::InOutBack); animation->setEasingCurve(QEasingCurve::InOutBack);
_animationShow->addAnimation(animation); _animationShow->addAnimation(animation);
} }
}
ui->navMainBtn->raise(); ui->navMainBtn->raise();
_stateMachine->addDefaultAnimation(_animationShow);
_stateMachine->setInitialState(stateGroup);
_stateMachine->start();
} }
void NavWindow::onMenuBtnClicked(QAbstractButton *btn) void NavWindow::onMenuBtnClicked(QAbstractButton *btn)
...@@ -199,10 +207,8 @@ void NavWindow::initSystemTrayIcon() ...@@ -199,10 +207,8 @@ void NavWindow::initSystemTrayIcon()
_systemTrayIcon->hide(); _systemTrayIcon->hide();
emit menuBtnClicked("quit"); emit menuBtnClicked("quit");
}); });
auto menus = new QMenu(this); _menu->addAction(quitAction);
menus->addActions(actions); _systemTrayIcon->setContextMenu(_menu);
menus->addAction(quitAction);
_systemTrayIcon->setContextMenu(menus);
_systemTrayIcon->show(); _systemTrayIcon->show();
} }
......
...@@ -48,6 +48,7 @@ public: ...@@ -48,6 +48,7 @@ public:
QString navImage() const; QString navImage() const;
void setNavImage(const QString &image); void setNavImage(const QString &image);
void createMenuBtn(const QString &btnName, const QString &showName);
public slots: public slots:
/** /**
...@@ -112,10 +113,11 @@ private: ...@@ -112,10 +113,11 @@ private:
Ui::NavWindow *ui; Ui::NavWindow *ui;
QButtonGroup* _btn_group; QButtonGroup* _btn_group;
QList<QAction*> actions; QMenu *_menu;
std::vector<QRect> _btnsGeometry; std::vector<QRect> _btnsGeometry;
QParallelAnimationGroup* _animationShow; QParallelAnimationGroup* _animationShow;
QRect _centerGeometry; QRect _centerGeometry;
QPoint _centerPoint;
QStateMachine *_stateMachine; QStateMachine *_stateMachine;
QState *stateGroup; QState *stateGroup;
QState *stateDefault; QState *stateDefault;
...@@ -155,6 +157,7 @@ private: ...@@ -155,6 +157,7 @@ private:
double beginAngle; double beginAngle;
double endAngle; double endAngle;
double interval; double interval;
int btnWidth;
}; };
MenuUiProps MenuUiProp; MenuUiProps MenuUiProp;
bool isUseAnimation; bool isUseAnimation;
......
...@@ -34,9 +34,18 @@ int FMPHomePrivate::Init() ...@@ -34,9 +34,18 @@ int FMPHomePrivate::Init()
_settings = q->GetService<FMPSettingsInterface>(q->_ctx); _settings = q->GetService<FMPSettingsInterface>(q->_ctx);
FMPHomeSettings::instance()->init(_settings); FMPHomeSettings::instance()->init(_settings);
FMPStartEventHandler* handler = new FMPStartEventHandler(q->_ctx, q);
_navWindow = new NavWindow; _navWindow = new NavWindow;
std::vector<FMPBaseInterface*> svcVector;
svcVector.push_back(q->GetService<FMPVipInterface>(q->_ctx));
svcVector.push_back(q->GetService<FMPePayInterface>(q->_ctx));
FMPStartEventHandler* handler = new FMPStartEventHandler(q->_ctx, q); // _navWindow->createMenuBtn("payment", QString::fromLocal8Bit("非码支付"));
// _navWindow->createMenuBtn("vip", QString::fromLocal8Bit("非码会员"));
// _navWindow->createMenuBtn("takeout", QString::fromLocal8Bit("非码外卖"));
// _navWindow->createMenuBtn("coupons", QString::fromLocal8Bit("码多多"));
// _navWindow->createMenuBtn("tool", QString::fromLocal8Bit("设置"));
_navWindow->show(); _navWindow->show();
connect(_navWindow, SIGNAL(menuBtnClicked(QString)), this, SLOT(onMenuBtnClicked(QString))); connect(_navWindow, SIGNAL(menuBtnClicked(QString)), this, SLOT(onMenuBtnClicked(QString)));
...@@ -44,8 +53,8 @@ int FMPHomePrivate::Init() ...@@ -44,8 +53,8 @@ int FMPHomePrivate::Init()
login(); login();
// 启动外卖 // 启动会员
FMPBaseInterface *svc = q->GetService<FMPTakeoutInterface>(q->_ctx); FMPBaseInterface *svc = q->GetService<FMPVipInterface>(q->_ctx);
if(svc) { if(svc) {
svc->StartService(); svc->StartService();
} }
...@@ -144,7 +153,7 @@ void FMPHomePrivate::onMenuBtnClicked(QString btnName) ...@@ -144,7 +153,7 @@ void FMPHomePrivate::onMenuBtnClicked(QString btnName)
svc = q->GetService<FMPePayInterface>(q->_ctx); svc = q->GetService<FMPePayInterface>(q->_ctx);
} else if(btnName == "vip") { } else if(btnName == "vip") {
svc = q->GetService<FMPVipInterface>(q->_ctx); svc = q->GetService<FMPVipInterface>(q->_ctx);
q->blink((FMPluginInterface*)svc, ":/image/float_remind.png"); // q->blink((FMPluginInterface*)svc, ":/image/float_remind.png");
} else if(btnName == "takeout") { } else if(btnName == "takeout") {
svc = q->GetService<FMPTakeoutInterface>(q->_ctx); svc = q->GetService<FMPTakeoutInterface>(q->_ctx);
} else if(btnName == "coupons") { } else if(btnName == "coupons") {
......
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