core,tests: change qml register function

In order to address the C++ object directy in qml, a different
registration is needed.

qmlRegisterType, registers the C++ class, allowing qml code to inherit
from it and make qml objects. This is needed for graphical elemnets
like profile and map

setContentProperty, registers the C++ object, thus allowing signals to be
catched.

Signed-off-by: Jan Iversen <jani@apache.org>
This commit is contained in:
jan Iversen 2018-09-04 11:18:43 +02:00 committed by Dirk Hohndel
parent a71afd31ee
commit d0edc29636
9 changed files with 62 additions and 59 deletions

View file

@ -35,7 +35,6 @@ static void register_meta_types();
void init_ui()
{
init_qt_late();
register_qml_types();
register_meta_types();
#ifndef SUBSURFACE_MOBILE
PluginManager::instance().loadPlugins();
@ -60,11 +59,15 @@ double get_screen_dpi()
return mydesk->physicalDpiX();
}
// Forward declaration
static void register_qml_types(QQmlEngine *);
void run_ui()
{
#ifdef SUBSURFACE_MOBILE
QQmlApplicationEngine engine;
register_qml_types(&engine);
LOG_STP("run_ui qml engine started");
KirigamiPlugin::getInstance().registerTypes();
#if defined(__APPLE__) && !defined(Q_OS_IOS)
@ -135,6 +138,7 @@ void run_ui()
qml_window->show();
LOG_STP("run_ui running exec");
#else
register_qml_types(NULL);
MainWindow::instance()->show();
#endif // SUBSURFACE_MOBILE
qApp->exec();
@ -152,16 +156,14 @@ static void register_meta_types()
if (rc < 0) \
qWarning() << "ERROR: Cannot register " << useQML << ", QML will not work!!";
void register_qml_types()
void register_qml_types(QQmlEngine *engine)
{
int rc;
(void)rc;
// register qPref*
qPref::instance()->registerQML();
qPref::instance()->registerQML(engine);
#ifndef SUBSURFACE_TEST_DATA
int rc;
#ifdef SUBSURFACE_MOBILE
REGISTER_TYPE(QMLManager, "QMLManager");
REGISTER_TYPE(QMLPrefs, "QMLPrefs");