android states handle

This commit is contained in:
Zira project 2020-12-01 00:31:04 +05:00
parent 36917efbb1
commit 99e04b843e
4 changed files with 37 additions and 7 deletions

View File

@ -271,6 +271,7 @@ private slots:
void installAndroidPackFinished(QString result);
void mainMenuDialogTriggered(bool checked);
void sendContextMenuEvent();
void applicationStateChanged(Qt::ApplicationState state);
private:
Ui::MainWindow *ui;
ParserWorker * parserWorker;
@ -321,7 +322,9 @@ private:
EditorTabs * editorTabsSplit;
bool isSplitActive;
QHash<QString,int> filesHistory;
bool suspended;
signals:
void initWorker();
void disableWorker();
void parseLint(int tabIndex, QString path);
void execPHP(int tabIndex, QString path);

View File

@ -84,6 +84,7 @@ signals:
void updateProgressInfo(QString text);
void installAndroidPackFinished(QString result);
public slots:
void init();
void disable();
void lint(int tabIndex, QString path);
void execPHP(int tabIndex, QString path);

View File

@ -333,6 +333,7 @@ MainWindow::MainWindow(QWidget *parent) :
parserWorker = new ParserWorker();
parserWorker->moveToThread(&parserThread);
connect(&parserThread, &QThread::finished, parserWorker, &QObject::deleteLater);
connect(this, SIGNAL(initWorker()), parserWorker, SLOT(init()));
connect(this, SIGNAL(disableWorker()), parserWorker, SLOT(disable()));
connect(this, SIGNAL(parseLint(int,QString)), parserWorker, SLOT(lint(int,QString)));
connect(this, SIGNAL(execPHP(int,QString)), parserWorker, SLOT(execPHP(int,QString)));
@ -661,6 +662,7 @@ MainWindow::MainWindow(QWidget *parent) :
QTimer::singleShot(CHECK_SCALE_FACTOR_DELAY, this, SLOT(checkScaleFactor()));
}
suspended = false;
// make sure that window is maximized in Android
#if defined(Q_OS_ANDROID)
setWindowState( windowState() | Qt::WindowMaximized);
@ -670,6 +672,8 @@ MainWindow::MainWindow(QWidget *parent) :
mainMenuAction->setIcon(Icon::get("actionMenu", QIcon(":/icons/separator-double.png")));
connect(mainMenuAction, SIGNAL(triggered(bool)), this, SLOT(mainMenuDialogTriggered(bool)));
ui->mainToolBar->insertAction(ui->mainToolBar->actions().at(0), mainMenuAction);
connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(applicationStateChanged(Qt::ApplicationState)));
#endif
bool autoShowVirtualKeyboard = false;
@ -3058,3 +3062,19 @@ void MainWindow::inputMethodVisibleChanged()
updateTabsListButton();
}
}
void MainWindow::applicationStateChanged(Qt::ApplicationState state)
{
if (state == Qt::ApplicationActive) {
if (suspended) {
emit initWorker();
}
suspended = false;
} else if (state == Qt::ApplicationSuspended) {
if (progressInfo->isVisible()) {
emit progressInfo->cancelTriggered();
}
Settings::save();
suspended = true;
}
}

View File

@ -26,13 +26,7 @@ const QString PHP_WEBSERVER_URI = "127.0.0.1:8000";
const QString ZIRA_DEV_PACK_PATH = "/data/data/com.github.ziracms.devpack/files/bin";
ParserWorker::ParserWorker(QObject *parent) : QObject(parent)
{
phpPath = "";
gitPath = "";
bashPath = "";
sasscPath = "";
phpcsPath = "";
ParserWorker::ParserWorker(QObject *parent) : QObject(parent){
phpcsStandard = QString::fromStdString(Settings::get("parser_phpcs_standard"));
if (phpcsStandard.size() == 0) phpcsStandard = "PEAR";
phpcsErrorSeverity = std::stoi(Settings::get("parser_phpcs_error_severity"));
@ -49,6 +43,16 @@ ParserWorker::ParserWorker(QObject *parent) : QObject(parent)
quickBreaked = false;
wantStop = false;
phpWebServerPid = 0;
init();
}
void ParserWorker::init()
{
phpPath = "";
gitPath = "";
bashPath = "";
sasscPath = "";
phpcsPath = "";
// android pack
androidHomePath="";
@ -60,6 +64,7 @@ ParserWorker::ParserWorker(QObject *parent) : QObject(parent)
if (stddirs.size()>0) androidHomePath = stddirs.at(0);
#endif
#if !defined(Q_OS_ANDROID)
// php path
QString phpPathStr = QString::fromStdString(Settings::get("parser_php_path"));
if (phpPathStr.size() == 0) {
@ -129,6 +134,7 @@ ParserWorker::ParserWorker(QObject *parent) : QObject(parent)
if (phpcsPathStr.size() > 0 && Helper::fileOrFolderExists(phpcsPathStr)) {
phpcsPath = phpcsPathStr;
}
#endif
#if defined(Q_OS_ANDROID)
setAndroidBinPaths(); // use installed binaries if exists