void ScoreLoopThread::DisplayDialog(AppData_t *app, const char* title, const char* message) { /* Close a former dialog - if any */ if (app->dialog) { dialog_destroy(app->dialog); app->dialog = 0; } /* Open a new alert dialog here - you would probably want to do something more elaborate */ dialog_create_alert(&app->dialog); dialog_set_title_text(app->dialog, title); dialog_set_alert_message_text(app->dialog, message); dialog_add_button(app->dialog, DIALOG_OK_LABEL, true, NULL, true); dialog_show(app->dialog); }
bool QQnxFileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) { Q_UNUSED(flags); qFileDialogHelperDebug() << Q_FUNC_INFO; QQnxBpsEventFilter *eventFilter = m_integration->bpsEventFilter(); // We *really* need the bps event filter ;) if (!eventFilter) return false; // Native dialogs can only handle application modal use cases so far if (modality != Qt::ApplicationModal) return false; // Tear down any existing dialog and start again as dialog mode may have changed if (m_dialog) { dialog_destroy(m_dialog); m_dialog = 0; } // Create dialog const QSharedPointer<QFileDialogOptions> &opts = options(); if (opts->acceptMode() == QFileDialogOptions::AcceptOpen) { if (dialog_create_filebrowse(&m_dialog) != BPS_SUCCESS) { qWarning("dialog_create_filebrowse failed"); return false; } // Select one or many files? bool multiSelect = (opts->fileMode() == QFileDialogOptions::ExistingFiles); dialog_set_filebrowse_multiselect(m_dialog, multiSelect); // Set the actual list of extensions if (!opts->nameFilters().isEmpty()) { qFileDialogHelperDebug() << "nameFilters =" << opts->nameFilters(); setNameFilter(opts->nameFilters().first()); } else { QString defaultNameFilter = QStringLiteral("*.*"); setNameFilter(defaultNameFilter); } } else { if (dialog_create_filesave(&m_dialog) != BPS_SUCCESS) { qWarning("dialog_create_filesave failed"); return false; } // Maybe pre-select a filename if (!opts->initiallySelectedFiles().isEmpty()) { QString fileName = opts->initiallySelectedFiles().first().toLocalFile(); dialog_set_filesave_filename(m_dialog, QFile::encodeName(fileName).constData()); } // Add OK and Cancel buttons. We add the buttons in the order "CANCEL" followed by "OK // such that they have indices matching the buttons on the file open dialog which // is automatically populated with buttons. if (dialog_add_button(m_dialog, tr("CANCEL").toLocal8Bit().constData(), true, 0, true) != BPS_SUCCESS) { qWarning("dialog_add_button failed"); return false; } if (dialog_add_button(m_dialog, tr("OK").toLocal8Bit().constData(), true, 0, true) != BPS_SUCCESS) { qWarning("dialog_add_button failed"); return false; } } // Cache the accept mode so we know which functions to use to get the results back m_acceptMode = opts->acceptMode(); // Set the libscreen window group and common properties QQnxScreen *nativeScreen = parent ? static_cast<QQnxScreen *>(parent->screen()->handle()) : m_integration->primaryDisplay(); Q_ASSERT(nativeScreen); dialog_set_group_id(m_dialog, nativeScreen->windowGroupName()); dialog_set_title_text(m_dialog, opts->windowTitle().toLocal8Bit().constData()); // Register ourselves for dialog domain events from bps eventFilter->registerForDialogEvents(this); // Show the dialog dialog_show(m_dialog); return true; }