void Widget::onAppStateChanged(Qt::ApplicationState state) { if(state == Qt::ApplicationActive) { checkNetworkState(); } }
bool startWorker(THREAD_TYPE * coreWorker, DATA_LOADED **** todoList, int8_t *** status, uint ** IDToPosition, uint * nbElemTotal, bool * quit, void * mainTab, bool threaded) { //If we have to wait for some network request to end, we send the task in a different thread if(checkNetworkState(CONNEXION_TEST_IN_PROGRESS) && !threaded) { struct START_WORKER_DELAYED * argument = malloc(sizeof(struct START_WORKER_DELAYED)); if(argument == NULL) return false; argument->coreWorker = coreWorker; argument->todoList = todoList; argument->status = status; argument->IDToPosition = IDToPosition; argument->nbElemTotal = nbElemTotal; argument->quit = quit; argument->mainTab = mainTab; createNewThread(_startWorkerDeamon, argument); return true; } /*On attend d'avoir confirmé que on peut bien accéder à Internet*/ while(checkNetworkState(CONNEXION_TEST_IN_PROGRESS)) { usleep(5000); } if(!checkNetworkState(CONNEXION_DOWN)) { bool startWatcher = false; if(!MDLPHandle(**todoList, status, *IDToPosition, *nbElemTotal)) //We need to login, f**k { startWatcher = dataRequireLoginWithNotif(**todoList, *status, *IDToPosition, *nbElemTotal, mainTab); } MDL_MWORKER_ARG * argument = malloc(sizeof(MDL_MWORKER_ARG)); if(argument != NULL) { argument->todoList = todoList; argument->status = status; argument->nbElemTotal = nbElemTotal; argument->quit = quit; argument->mainTab = mainTab; argument->IDToPosition = IDToPosition; if(startWatcher) { MDL_MWORKER_ARG * watcherArg = malloc(sizeof(MDL_MWORKER_ARG)); if(watcherArg != NULL) { memcpy(watcherArg, argument, sizeof(MDL_MWORKER_ARG)); createNewThread(watcherForLoginRequest, watcherArg); } } *coreWorker = createNewThreadRetValue(mainDLProcessing, argument); MDLSetThreadID(coreWorker); return true; } } return false; }
Widget::Widget(QWidget *parent) : QWidget(parent) { connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(onAppStateChanged(Qt::ApplicationState))); QGridLayout *layout = new QGridLayout(this); layout->setColumnStretch(1, 1); m_networkState = new QLabel(); layout->addWidget(m_networkState, 0, 0, 1, 2); m_connectButton = new QPushButton("Connect"); connect(m_connectButton, SIGNAL(clicked()), this, SLOT(onConnectButton())); layout->addWidget(m_connectButton, 0, 2); checkNetworkState(); layout->addWidget(new QLabel("Toast:"), 1, 0); m_toastEdit = new QLineEdit("Qt toast"); layout->addWidget(m_toastEdit, 1, 1); m_toastButton = new QPushButton("makeToast"); layout->addWidget(m_toastButton, 1, 2); connect(m_toastButton, SIGNAL(clicked()), this , SLOT(onToastButton())); layout->addWidget(new QLabel("通知:"), 2, 0); m_notificationEdit = new QLineEdit("Qt notification"); layout->addWidget(m_notificationEdit, 2, 1); m_notifyButton = new QPushButton("Send"); connect(m_notifyButton, SIGNAL(clicked()), this, SLOT(onNotifyButton())); layout->addWidget(m_notifyButton, 2, 2); layout->addWidget(new QLabel("广播:"), 3, 0); m_broadcastEdit = new QLineEdit("an.qt.extendsQt.test"); layout->addWidget(m_broadcastEdit, 3, 1); m_broadcastButton = new QPushButton("Send"); connect(m_broadcastButton, SIGNAL(clicked()), this, SLOT(onBroadcastButton())); layout->addWidget(m_broadcastButton, 3, 2); layout->addWidget(new QLabel("Activity:"), 4, 0); m_activityEdit = new QLineEdit("android.settings.SETTINGS"); layout->addWidget(m_activityEdit, 4, 1); m_activityButton = new QPushButton("Start"); connect(m_activityButton, SIGNAL(clicked()), this, SLOT(onActivityButton())); layout->addWidget(m_activityButton, 4, 2); layout->addWidget(new QLabel("Location:"), 5, 0); m_locationState = new QLabel; layout->addWidget(m_locationState, 5, 1); QPushButton * btn = new QPushButton("Get"); connect(btn, SIGNAL(clicked()), this, SLOT(onGetLocation())); layout->addWidget(btn, 5, 2); layout->addWidget(new QLabel("CaptureImage:"), 6, 0); m_captureState = new QLabel; layout->addWidget(m_captureState, 6, 1); btn = new QPushButton("camera"); connect(btn, SIGNAL(clicked()), this, SLOT(onCaptureImage())); layout->addWidget(btn, 6, 2); layout->setRowStretch(7, 1); }