// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <QApplication>
#include <QFont>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
#include <QtOhosExtras>
#include <memory>
namespace {
std::unique_ptr<QWidget> makeBundledUiExtensionWindow(const QString &windowQAbilityBindingKey)
{
auto widget = std::make_unique<QWidget>();
auto *layout = new QVBoxLayout(widget.get());
widget->setLayout(layout);
auto *label = new QLabel("Not clicked yet");
layout->addWidget(label);
auto *button = new QPushButton("Change label's text");
layout->addWidget(button);
QObject::connect(
button, &QPushButton::clicked, label,
[label, windowQAbilityBindingKey]() {
label->setText(QString("Button in window %1 was clicked").arg(windowQAbilityBindingKey));
QFont font = label->font();
font.setBold(true);
label->setFont(font);
});
return widget;
}
QWindow *getOrCreateUnderlyingQWindow(QWidget *qWidget)
{
qWidget->winId();
return qWidget->windowHandle();
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString windowAQAbilityBindingKey = "A";
auto windowA = makeBundledUiExtensionWindow(windowAQAbilityBindingKey);
QtOhosExtras::setBundledAbilityAndQWindowBindingKeyForQWindow(
getOrCreateUnderlyingQWindow(windowA.get()),
windowAQAbilityBindingKey);
QString windowBQAbilityBindingKey = "B";
auto windowB = makeBundledUiExtensionWindow(windowBQAbilityBindingKey);
QtOhosExtras::setBundledAbilityAndQWindowBindingKeyForQWindow(
getOrCreateUnderlyingQWindow(windowB.get()),
windowBQAbilityBindingKey);
return app.exec();
}