void OGRGDALImportExtension::proceedToImport() { if (mp_PrecheckImportDlg != NULL) delete mp_PrecheckImportDlg; mp_PrecheckImportDlg = new PrecheckImportDialog(OGRGDALEXT_PRECHECK_STEPS+m_SourcesInfos.size()+2,this); mp_PrecheckImportDlg->open(); QThread* WThread = new QThread; ImportWorker* Worker = new ImportWorker(m_SourcesInfos,mp_AdvancedDesc,m_InputDir); Worker->moveToThread(WThread); connect(Worker, SIGNAL(stepEntered(QString)), mp_PrecheckImportDlg, SLOT(handleStepEntered(QString))); connect(Worker, SIGNAL(stepCompleted(int,QString)), mp_PrecheckImportDlg, SLOT(handleStepCompleted(int,QString))); connect(Worker, SIGNAL(completed(QString)), mp_PrecheckImportDlg, SLOT(handleCompleted(QString))); connect(Worker, SIGNAL(finished()), mp_PrecheckImportDlg, SLOT(handleFinished())); // for automatic closing on successful import connect(Worker, SIGNAL(closeRequired()), mp_PrecheckImportDlg, SLOT(handleCloseRequired())); connect(mp_PrecheckImportDlg, SIGNAL(closeRequired()), this, SLOT(handleCloseRequired())); connect(WThread, SIGNAL(started()), Worker, SLOT(run())); connect(Worker, SIGNAL(finished()), WThread, SLOT(quit())); connect(Worker, SIGNAL(finished()), Worker, SLOT(deleteLater())); connect(WThread, SIGNAL(finished()), WThread, SLOT(deleteLater())); WThread->start(); }
void ImportWorker::run() { if (!runCheck(1)) emit completed(getStyledText(tr("Consistency error, " "import could not be performed with current import configuration"), "red",true)); else { if (runImport(OGRGDALEXT_PRECHECK_STEPS+1)) { emit completed(getStyledText(tr("Import sucessful"), "green",true)); } else { emit completed(getStyledText(tr("Import error. " "Import may be uncompleted or inconsistent"), "red",true)); } emit closeRequired(); } emit finished(); }