Commit 930d88e8 by NitefullWind

1. 实现登录功能。 2. 修复菜单按钮展开时的小bug.

parent 10ba8584
...@@ -20,12 +20,12 @@ FMNetwork::~FMNetwork() ...@@ -20,12 +20,12 @@ FMNetwork::~FMNetwork()
delete _req; delete _req;
} }
bool FMNetwork::post(const QString *url, const QByteArray *reqData, QByteArray *rspData) bool FMNetwork::post(const QString &url, const QByteArray *reqData, QByteArray *rspData)
{ {
qDebug() << "Post Url: " << *url; qDebug() << "Post Url: " << url;
qDebug() << "Post Data: " << *reqData; qDebug() << "Post Data: " << *reqData;
_req->setUrl(*url); _req->setUrl(url);
// 设置请求头 // 设置请求头
_req->setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); _req->setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
...@@ -47,7 +47,7 @@ bool FMNetwork::post(const QString *url, const QByteArray *reqData, QByteArray * ...@@ -47,7 +47,7 @@ bool FMNetwork::post(const QString *url, const QByteArray *reqData, QByteArray *
timer.stop(); timer.stop();
if (reply->error() == QNetworkReply::NoError) { if (reply->error() == QNetworkReply::NoError) {
*rspData = reply->readAll(); *rspData = reply->readAll();
qDebug() << tr("Recv data: %1") << *rspData; qDebug() << tr("Recv data: ") << QString::fromUtf8(*rspData);
} else { } else {
_errorString = reply->errorString(); _errorString = reply->errorString();
qDebug() << tr("Network error: %1").arg(_errorString); qDebug() << tr("Network error: %1").arg(_errorString);
......
...@@ -20,7 +20,7 @@ public: ...@@ -20,7 +20,7 @@ public:
* @param rspData 返回数据 * @param rspData 返回数据
* @return 是否有错误 * @return 是否有错误
*/ */
bool post(const QString *url, const QByteArray *reqData, QByteArray *rspData); bool post(const QString &url, const QByteArray *reqData, QByteArray *rspData);
QString errorString() const { return _errorString;} QString errorString() const { return _errorString;}
private: private:
......
...@@ -29,3 +29,21 @@ int FMPHome::Uninit() ...@@ -29,3 +29,21 @@ int FMPHome::Uninit()
Q_D(FMPHome); Q_D(FMPHome);
return d->Uninit(); return d->Uninit();
} }
int FMPHome::login()
{
Q_D(FMPHome);
return d->login();
}
bool FMPHome::isLogined()
{
Q_D(FMPHome);
return d->_isLogined;
}
QString FMPHome::userName()
{
Q_D(FMPHome);
return d->_userName;
}
...@@ -21,12 +21,13 @@ public: ...@@ -21,12 +21,13 @@ public:
int Uninit(); int Uninit();
int Upgrade() {return 0;} int Upgrade() {return 0;}
int Downgrade() {return 0;} int Downgrade() {return 0;}
int login();
bool isLogined();
QString userName();
public slots: public slots:
void OnUpgraded() {} void OnUpgraded() {}
public:
int Login() {return 0;}
private: private:
FMPHomePrivate *d_ptr; FMPHomePrivate *d_ptr;
bool _inited; bool _inited;
......
...@@ -2,11 +2,14 @@ ...@@ -2,11 +2,14 @@
#define FMP_HOME_I_H #define FMP_HOME_I_H
#include <fmp_base_i.h> #include <fmp_base_i.h>
#include <QString>
class FMPHomeInterface : public FMPluginInterface class FMPHomeInterface : public FMPluginInterface
{ {
public: public:
virtual int Login() = 0; virtual int login() = 0;
virtual bool isLogined() = 0;
virtual QString userName() = 0;
}; };
Q_DECLARE_INTERFACE(FMPHomeInterface, "fmp.home") Q_DECLARE_INTERFACE(FMPHomeInterface, "fmp.home")
......
...@@ -21,6 +21,7 @@ NavWindow::NavWindow(QWidget *parent) : ...@@ -21,6 +21,7 @@ NavWindow::NavWindow(QWidget *parent) :
MenuUiProp.distance = 100; MenuUiProp.distance = 100;
MenuUiProp.beginAngle = -(PI*0.45); MenuUiProp.beginAngle = -(PI*0.45);
MenuUiProp.endAngle = (PI*0.45); MenuUiProp.endAngle = (PI*0.45);
isUseAnimation = true;
setNavStatus(Default); setNavStatus(Default);
...@@ -29,6 +30,11 @@ NavWindow::NavWindow(QWidget *parent) : ...@@ -29,6 +30,11 @@ NavWindow::NavWindow(QWidget *parent) :
connect(_btn_group, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onMenuBtnClicked(QAbstractButton*))); connect(_btn_group, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onMenuBtnClicked(QAbstractButton*)));
initMenu(); initMenu();
connect(this, SIGNAL(statusChanged(NavStatus)), this, SLOT(onStatusChanged(NavStatus)));
connect(_animationShow, &QParallelAnimationGroup::finished, this, [=](){
ui->navMainBtn->lower();
});
} }
NavWindow::~NavWindow() NavWindow::~NavWindow()
...@@ -41,22 +47,7 @@ NavWindow::~NavWindow() ...@@ -41,22 +47,7 @@ NavWindow::~NavWindow()
void NavWindow::setNavStatus(const NavStatus status) void NavWindow::setNavStatus(const NavStatus status)
{ {
this->_status = status; this->_status = status;
switch (status) { emit statusChanged(status);
case Default:
spreadMenus(false);
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:fm-icon_01)}");
break;
case Spread:
spreadMenus(true);
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:fm-icon_02)}");
break;
case Message:
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:xiaoxi)}");
break;
default:
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:fm-icon_01)}");
break;
}
} }
void NavWindow::on_navMainBtn_clicked() void NavWindow::on_navMainBtn_clicked()
...@@ -68,11 +59,14 @@ void NavWindow::on_navMainBtn_clicked() ...@@ -68,11 +59,14 @@ void NavWindow::on_navMainBtn_clicked()
void NavWindow::spreadMenus(const bool isSpread) void NavWindow::spreadMenus(const bool isSpread)
{ {
if(isSpread) { //! Start animation.
if(isSpread && isUseAnimation) {
ui->navMainBtn->raise();
_animationShow->start(); _animationShow->start();
} }
//! Set the menu btns are visible.
foreach (QAbstractButton *b , _btn_group->buttons()) { foreach (QAbstractButton *b , _btn_group->buttons()) {
QPushButton *btn = qobject_cast<QPushButton*>(b); auto btn = qobject_cast<QPushButton*>(b);
btn->setVisible(isSpread); btn->setVisible(isSpread);
} }
} }
...@@ -109,7 +103,6 @@ void NavWindow::initMenu() ...@@ -109,7 +103,6 @@ void NavWindow::initMenu()
animation->setEndValue(btn->geometry()); animation->setEndValue(btn->geometry());
_animationShow->addAnimation(animation); _animationShow->addAnimation(animation);
} }
ui->navMainBtn->raise();
} }
void NavWindow::onMenuBtnClicked(QAbstractButton *btn) void NavWindow::onMenuBtnClicked(QAbstractButton *btn)
...@@ -117,3 +110,23 @@ void NavWindow::onMenuBtnClicked(QAbstractButton *btn) ...@@ -117,3 +110,23 @@ void NavWindow::onMenuBtnClicked(QAbstractButton *btn)
QString btnName = btn->objectName(); QString btnName = btn->objectName();
emit menuBtnClicked(btnName); emit menuBtnClicked(btnName);
} }
void NavWindow::onStatusChanged(NavStatus status)
{
switch (status) {
case Default:
spreadMenus(false);
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:fm-icon_01)}");
break;
case Spread:
spreadMenus(true);
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:fm-icon_02)}");
break;
case Message:
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:xiaoxi)}");
break;
default:
ui->navMainBtn->setStyleSheet("#navMainBtn{ border-image: url(:fm-icon_01)}");
break;
}
}
...@@ -50,10 +50,12 @@ public slots: ...@@ -50,10 +50,12 @@ public slots:
signals: signals:
void menuBtnClicked(QString btnName); void menuBtnClicked(QString btnName);
void statusChanged(NavStatus status);
private slots: private slots:
void on_navMainBtn_clicked(); void on_navMainBtn_clicked();
void onMenuBtnClicked(QAbstractButton*); void onMenuBtnClicked(QAbstractButton*);
void onStatusChanged(NavStatus status);
private: private:
Ui::NavWindow *ui; Ui::NavWindow *ui;
...@@ -74,6 +76,7 @@ private: ...@@ -74,6 +76,7 @@ private:
double endAngle; double endAngle;
}; };
MenuUiProps MenuUiProp; MenuUiProps MenuUiProp;
bool isUseAnimation;
}; };
#endif // NAVWINDOW_H #endif // NAVWINDOW_H
...@@ -8,7 +8,10 @@ ...@@ -8,7 +8,10 @@
FMPHomePrivate::FMPHomePrivate(FMPHome *q) FMPHomePrivate::FMPHomePrivate(FMPHome *q)
: q_ptr(q), : q_ptr(q),
_navWindow(new NavWindow) _navWindow(new NavWindow),
_isLogined(false),
_userName(""),
_errorMsg("")
{ {
} }
...@@ -19,11 +22,7 @@ FMPHomePrivate::~FMPHomePrivate() ...@@ -19,11 +22,7 @@ FMPHomePrivate::~FMPHomePrivate()
int FMPHomePrivate::Init() int FMPHomePrivate::Init()
{ {
loginWnd = new FMPLogin; if(login() != FMP_SUCCESS) {
int ret = loginWnd->exec();
delete loginWnd;
loginWnd = nullptr;
if(ret == FMP_FAILURE) {
return FMP_FAILURE; return FMP_FAILURE;
} }
_navWindow->show(); _navWindow->show();
...@@ -49,6 +48,20 @@ int FMPHomePrivate::Uninit() ...@@ -49,6 +48,20 @@ int FMPHomePrivate::Uninit()
return FMP_SUCCESS; return FMP_SUCCESS;
} }
int FMPHomePrivate::login()
{
FMPLogin loginWnd;
loginWnd.exec();
if(loginWnd.isLogined()) {
_isLogined = true;
_userName = loginWnd.userName();
return FMP_SUCCESS;
} else {
_isLogined = false;
return FMP_FAILURE;
}
}
void FMPHomePrivate::onMenuBtnClicked(QString btnName) void FMPHomePrivate::onMenuBtnClicked(QString btnName)
{ {
qDebug() << "====" << __FUNCTION__ << btnName; qDebug() << "====" << __FUNCTION__ << btnName;
......
...@@ -16,15 +16,20 @@ public: ...@@ -16,15 +16,20 @@ public:
int Init(); int Init();
int Uninit(); int Uninit();
int login();
public slots: public slots:
void onMenuBtnClicked(QString btnName); void onMenuBtnClicked(QString btnName);
public: public:
FMPHome *q_ptr; FMPHome *q_ptr;
bool _isLogined;
QString _userName;
QString _errorMsg;
private: private:
NavWindow *_navWindow; NavWindow *_navWindow;
FMPLogin *loginWnd;
}; };
#endif // FMP_HOME_P_H #endif // FMP_HOME_P_H
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
#include "ui_fmp_login.h" #include "ui_fmp_login.h"
#include <QMessageBox> #include <QMessageBox>
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include "fmp_num_pad.h" #include "fmp_num_pad.h"
#include "fmnetwork.h" #include "fmnetwork.h"
#include <QDebug> #include <QDebug>
...@@ -9,7 +12,9 @@ ...@@ -9,7 +12,9 @@
FMPLogin::FMPLogin(QDialog *parent) : FMPLogin::FMPLogin(QDialog *parent) :
FMPWnd(parent), FMPWnd(parent),
ui(new Ui::FMPLogin), ui(new Ui::FMPLogin),
_numPad(new FMNumPad) _numPad(new FMNumPad),
_userName(""),
_errorMsg("")
{ {
ui->setupUi(this); ui->setupUi(this);
connect(_numPad, SIGNAL(digit_confirm()), this, SLOT(on_login_btn_clicked())); connect(_numPad, SIGNAL(digit_confirm()), this, SLOT(on_login_btn_clicked()));
...@@ -28,16 +33,46 @@ FMPLogin::~FMPLogin() ...@@ -28,16 +33,46 @@ FMPLogin::~FMPLogin()
void FMPLogin::on_login_btn_clicked() void FMPLogin::on_login_btn_clicked()
{ {
_numPad->close(); _numPad->close();
QString url = "http://115.159.142.32:30001/api/user/login"; this->setEnabled(false);
QByteArray reqData = "{\"StoreId\": \"123\",\"PartnerId\": \"123\",\"UserId\": \"123\",\"Pwd\": \"123\",\"ClassNo\": \"123\",\"DeviceId\": \"\"}";
if(login(ui->user_edit->text(), ui->pwd_edit->text())) {
this->close();
} else {
QMessageBox::critical(this, "Login Failed", _errorMsg);
this->setEnabled(true);
ui->pwd_edit->clear();
ui->pwd_edit->setFocus();
}
}
bool FMPLogin::login(QString userName, QString password)
{
_userName = "";
QString url = "http://115.159.226.87:20001/api/user/login";
QByteArray reqData = tr("{\"StoreId\": \"%1\",\"PartnerId\": \"%2\",\"UserId\": \"%3\",\"Pwd\": \"%4\"}")
.arg("fm99999")
.arg("1371")
.arg(userName)
.arg(password).toLatin1();
QByteArray rspData; QByteArray rspData;
FMNetwork net; FMNetwork net;
if(net.post(&url, &reqData, &rspData)) { if(net.post(url, &reqData, &rspData)) {
QMessageBox::information(this, "Login", QString(rspData)); // 解析返回的数据
} else { QJsonParseError error;
QMessageBox::critical(this, "Login", net.errorString()); QJsonDocument json = QJsonDocument::fromJson(rspData, &error);
if(error.error == QJsonParseError::NoError) {
QJsonObject job = json.object();
if(job["Code"] == 1000) {
_userName = job["Data"].toObject()["UserId"].toString();
} else{
_errorMsg = job["Msg"].toString();
}
} else {
_errorMsg = error.errorString();
}
} }
this->close(); return isLogined();
} }
void FMPLogin::on_key_btn_clicked() void FMPLogin::on_key_btn_clicked()
......
...@@ -17,6 +17,17 @@ public: ...@@ -17,6 +17,17 @@ public:
explicit FMPLogin(QDialog *parent = 0); explicit FMPLogin(QDialog *parent = 0);
~FMPLogin(); ~FMPLogin();
/**
* @brief login
* @param userName
* @param password
* @return
*/
bool login(QString userName, QString password);
bool isLogined() {return _userName != "";}
QString userName() {return _userName;}
QString errorMsg() {return _errorMsg;}
private slots: private slots:
void on_login_btn_clicked(); void on_login_btn_clicked();
...@@ -28,6 +39,8 @@ private: ...@@ -28,6 +39,8 @@ private:
Ui::FMPLogin *ui; Ui::FMPLogin *ui;
FMNumPad* _numPad; FMNumPad* _numPad;
QString _userName;
QString _errorMsg;
}; };
#endif // FMP_LOGIN_H #endif // FMP_LOGIN_H
...@@ -355,7 +355,11 @@ QLineEdit { ...@@ -355,7 +355,11 @@ QLineEdit {
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>user_edit</tabstop>
<tabstop>pwd_edit</tabstop>
<tabstop>login_btn</tabstop> <tabstop>login_btn</tabstop>
<tabstop>key_btn</tabstop>
<tabstop>key_btn_2</tabstop>
<tabstop>close_btn</tabstop> <tabstop>close_btn</tabstop>
</tabstops> </tabstops>
<resources/> <resources/>
......
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