Commit a40d9dd3 by NitefullWind

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

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