1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- * progress_dialog.cpp
- *
- * Created on: 2021年10月30日
- * Author: pengzc
- */
- #include "popup_service.h"
- #include "entry/EasyuiContext.h"
- #include "utils/Log.h"
- #include "base/os.hpp"
- void NavibarSetProgressMessage(const std::string& msg);
- void NavibarProgressAnimation(bool visible);
- void NavibarSetDialog1Message(const std::string& msg);
- void NavibarSetProgressWindowVisible(bool visible);
- void NavibarSetDialog1WindowVisible(bool visible);
- PopupService::PopupService() {
- busy_ = false;
- }
- PopupService::~PopupService() {
- }
- PopupService* PopupService::instance() {
- static PopupService singleton;
- return &singleton;
- }
- void PopupService::Dialog(const std::string& text) {
- instance()->InternalShow([text](PopupService* dialog){
- NavibarSetDialog1Message(text);
- return 0;
- }, PopupType::Dialog);
- }
- bool PopupService::busy() {
- return instance()->busy_;
- }
- void PopupService::InternalShow(const Task& func, PopupType type) {
- if (busy_) {
- LOGD("popup service is busy");
- return;
- }
- busy_ = true;
- std::thread backend([this, func, type](){
- base::screensaver_guard guard;
- //EASYUICONTEXT->showNaviBar();
- NavibarSetProgressMessage("");
- NavibarSetDialog1Message("");
- NavibarSetProgressWindowVisible(type == PopupType::Progress);
- NavibarSetDialog1WindowVisible(type == PopupType::Dialog);
- NavibarProgressAnimation(type == PopupType::Progress);
- int ret = func(this);
- if (type == PopupType::Progress) {
- if (0 != ret) {
- usleep(1000 * 2000);
- }
- NavibarSetProgressWindowVisible(false);
- //EASYUICONTEXT->hideNaviBar();
- busy_ = false;
- }
- NavibarProgressAnimation(false);
- });
- backend.detach();
- }
- void PopupService::Show(Task task) {
- LOGD("%s", __PRETTY_FUNCTION__);
- instance()->InternalShow(task, PopupType::Progress);
- }
- void PopupService::Show(Task task, PopupType type) {
- instance()->InternalShow(task, type);
- }
- void PopupService::SetMessage(const std::string& msg) {
- NavibarSetProgressMessage(msg);
- }
- void PopupService::Animation(bool visible) {
- NavibarProgressAnimation(visible);
- }
|