
Symbiançšã®Futoubraã¯ã©ã€ã¢ã³ãã®å®è£ ãéå§ããŠãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããã®ãã¬ãŒã ã¯ãŒã¯ãšããŠQt Quickãéžæããããšã«çãã®äœå°ã¯ãããŸããã§ããã ãªã¢ã¯ãã£ãããŒã¿ãã€ã³ãã£ã³ã°ã®ãããã§ãé«åºŠãªã¢ãŒããã¯ãã£èšèšãã¿ãŒã³ãç¹ã«Model-View-ViewModelã䜿çšããŠãã¬ãŒã³ããŒã·ã§ã³ã¬ã€ã€ãŒãå®è£ ããããšãå¯èœã«ãªããŸãã ãã ããQt Quickã®ã裞ã®ã圢åŒã«ã¯åºæ¬çãªèŠçŽ ãéåžžã«å°ãªãããããã¿ã³ãå ¥åãã£ãŒã«ããªã©ãããè€éãªèŠçŽ ãçµã¿ç«ãŠãããšãææ¡ãããŠããŸãã 以åã®ãããžã§ã¯ãã§ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæãããšãã«ããããå®è£ ããã®ã«ã©ãã ãæéãããã£ããã念é ã«çœ®ããŠãç§ã¯ããã«èªåã§è¡ããšããèããæšãŠãQt Quick Componentsã©ã€ãã©ãªãŒã«æ³šæãåããŸããã ã«ãã¿ãŒã®äžã«ã¯ãS60 5thãšãã£ã·ã§ã³ãã©ãããã©ãŒã ã§ã®é©çšç¯å²ãåºããŠãååŸãããæ¹æ³ã説æããŠããŸãã
Qt Quick Componentsã©ã€ãã©ãªã¯ãQMLã®äžã«å¹ åºããŠã£ãžã§ãããå®è£ ããQt Quickãã©ã°ã€ã³ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ã©ã€ãã©ãªã®äž»ãªæ©èœã®1ã€ã¯ãã¯ãã¹ãã©ãããã©ãŒã ã§ãã WindowsãMac OSãKDEãGNOMEçšã®ãã¹ã¯ãããããŒãžã§ã³ãšãSymbianãMaemoãMeeGoã«ä»£è¡šãããå°ããªå åŒåãã®ããªãšãŒã·ã§ã³ããããŸãã ãã¡ããããã©ãããã©ãŒã ã®æ©èœãç»é¢è§£å床ãããã³ãã¶ã€ã³ã¬ã€ãã©ã€ã³ã«ãããããŒãžã§ã³ã«ã¯å€å°ã®éãããããŸãããWindowsãSymbianãªã©ã®QMLã³ãŒãã®çŽ80ïŒ ãååŸããããšã¯å¯èœã§ãã ã©ã€ãã©ãªã®åæ§ã«éèŠãªæ©èœã¯ãåãã©ãããã©ãŒã ã®ãŠã£ãžã§ããã®ãã€ãã£ããªå€èŠ³ã§ãã
Symbiançšã©ã€ãã©ãªã®ããŒãžã§ã³ã®ããã¥ã¡ã³ãã調ã¹å§ãããšãããããã«äžå¿«ãªãã¥ãŒã¹ã«åºäŒããŸããã ããã¥ã¡ã³ãã«ãããšã Qt Quick Componentsã¯ææ°ã®Symbian ^ 3ãSymbian Annaããã³Nokia Belleã§ã®ã¿ãµããŒããããŠããŸãã ç§ã«ãšã£ãŠã5800 XpressMusicã5228ãªã©ãæãåœã§ã®ç¬¬äžäžä»£ã®Nokiaã¿ããã¹ããŒããã©ã³ã®äººæ°ãèãããšãS60 5thãšãã£ã·ã§ã³ãã©ãããã©ãŒã ããµããŒãããããšãå¿ èŠã§ããã ããš1ã€ãããããŸããã§ãã-ããªãèªèº«ã®ãªã¹ã¯ãšããã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ã©ã€ãã©ãªã移æ€ãããªã¹ã¯ããããŸãã ãã®äœéšã¯æåããããšãå€æãã ããã§ç¬èªã®ããŒãžã§ã³ã®Qt Quick Componentsã䜿çšããŠãã¢ã¢ããªã±ãŒã·ã§ã³ã®å®å šãªãœãŒã¹ã³ãŒããå ¬éããŸããã 以äžã¯ãäž»ã«qmakeããã°ã©ãã³ã°ã«é¢é£ããæãè€éãªç§»æ€ã®åé¡ã®ã¿ã瀺ããŠããŸãã
ã¢ã³ããŒã
ããã§éèŠãªã®ã¯ã1.0ãã©ã³ãã§ããå¿ èŠãããããšã§ã-ããã«äœ¿çšã§ããŸãã 1.1.xã©ã€ãã©ãªã®ä»¥éã®ããŒãžã§ã³ã«ã¯ãS60 5thãšãã£ã·ã§ã³SDKã«ã¯ãªãããããŒãã¡ã€ã«ãšã©ã€ãã©ãªã®åœ¢ã§Symbian SDKã«ãéããäŸåé¢ä¿ããããŸãã ãªã³ã¯ã䜿çšããŠããŸãã¯å¯Ÿå¿ããGitã³ãã³ãã䜿çšããŠãã¢ãŒã«ã€ãã®åœ¢åŒã§ãœãŒã¹ãååŸã§ããŸãã
git clone git://gitorious.org/qt-components/qt-components.git -b 1.0-symbian
ã·ã£ãŒããã
Qtã®ããã¥ã¡ã³ãã«ã¯ãã©ã°ã€ã³äœæã®è©³çŽ°ãªäŸãèšèŒãããŠããŸãããæ¬åŒ§ã®åŸãã«æ®ã£ãŠããéåžžã«é£ããéšåã¯ããããžã§ã¯ãã®* .proããã³* .pri-filesïŒä»¥äžãåã«ã¹ã¯ãªããïŒã®æ§æã§ãã ãã®ãããQt Creatorç°å¢ã«ãã£ãŠããã©ã«ãã§äœæãããã¹ã¯ãªããã«ã¯ãQt Quickãã©ã°ã€ã³ãå«ãã€ã³ã¹ããŒã©ãŒãäœæããã¡ã«ããºã ãå«ãŸããŠããŸããã Symbianã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããæ©èœã®1ã€ã¯ããã¹ãŠã®å®è¡å¯èœãã¡ã€ã«ãšåçã©ã€ãã©ãªãCïŒ\ sys \ binãã£ã¬ã¯ããªã«é 眮ããå¿ èŠããããŸãããWindowsã¯ãããã®å ŽæãèŠå¶ããªãããšã§ãã ãã®çµæããšãã¥ã¬ãŒã¿ãŒãšããã€ã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ã«èµ·å ãããã¡ã€ã«æ§é ãå€§å¹ ã«ç°ãªãç¶æ³ã«ãªãããããåãã©ãããã©ãŒã ã«åºæã®ã€ã³ã¹ããŒã©ãŒã®ãã°ãæ€çŽ¢ããããšã«ãªããŸãã ã¹ã¯ãªãããéçºãããšãã®ç§ã®äž»ãªã¢ã€ãã¢ã¯ãWindowsãšSymbianã®äž¡æ¹ã«ã¢ããªã±ãŒã·ã§ã³ãçããã€ã³ã¹ããŒã«ããããšã§ããã ããããæ€èšããŸãã
/config.pri
isEmpty(APP_SOURCE_TREE): APP_SOURCE_TREE = $$PWD isEmpty(APP_INSTALL_LIBS): APP_INSTALL_LIBS = $$APP_SOURCE_TREE/lib isEmpty(APP_INSTALL_ROOT): APP_INSTALL_ROOT = $$APP_SOURCE_TREE/install isEmpty(APP_INSTALL_BINS): APP_INSTALL_BINS = $$APP_INSTALL_ROOT/sys/bin isEmpty(APP_INSTALL_IMPORTS): APP_INSTALL_IMPORTS = $$APP_INSTALL_ROOT/resource/demo/imports isEmpty(APP_INSTALL_RESOURCES): APP_INSTALL_RESOURCES = $$APP_INSTALL_ROOT/resource/apps/demo symbian { # Symbian-specific paths from # [QtSDK]\Symbian\SDKs\[SymbianSDK]\mkspecs\features\symbian\data_caging_paths.prf load(data_caging_paths) # project-specific isEmpty(APP_IMPORTS_BASE_DIR): APP_IMPORTS_BASE_DIR = $$RESOURCE_FILES_DIR/demo/imports isEmpty(APP_RESOURCES_BASE_DIR): APP_RESOURCES_BASE_DIR = $$APP_RESOURCE_DIR/demo isEmpty(APP_CAPABILITY): APP_CAPABILITY = NetworkServices ReadUserData UserEnvironment }
config.priãã¡ã€ã«ã¯ãä»ã®ã¹ã¯ãªããã§äœ¿çšããããã¹ãŠã®ç°å¢å€æ°ãå®çŸ©ããŸãã $$ PWDã䜿çšããŠããããžã§ã¯ãã«ãŒããžã®ãã¹ã決å®ãããæ®ãã®ãã¹ã¯ããã«é¢é£ããŠå®çŸ©ãããŸãã ãããžã§ã¯ãããã«ããããšãã€ã³ã¹ããŒã«ãã©ã«ããŒããã®ã«ãŒãã«äœæãããŸããããã¯ãããã€ã¹ã®CïŒã·ã¹ãã ãã©ã€ãã®ãããã¿ã€ãã§ãã ãããšåãããã«ããããžã§ã¯ãã¯ããã€ã¹äžã«ã¬ã€ã¢ãŠããããŸãã
ç°¡æœã«ããããã«ãæãåçŽãªã³ã³ããŒãã³ãã§ãããã©ã°ã€ã³ã¹ã¯ãªãããæ€èšããŸãã åãã©ã°ã€ã³ã«ã¯ãåãååã®priãã¡ã€ã«ãšproãã¡ã€ã«ããããŸãã æåã¯ã€ã³ã¹ããŒã©ãŒã®äœæã«äœ¿çšããããã©ã°ã€ã³ã®ããããã£ã説æãã2çªç®ã¯ã©ã€ãã©ãªèªäœã®ãã«ãã«äœ¿çšãããããããã£ã説æããŸãã
/src/3rdparty/qt-components/components/components.pri
QT_COMPONENTS_PLUGIN.source_path = \ src/3rdparty/qt-components/components QT_COMPONENTS_PLUGIN.imports_path = \ Qt/labs/components QT_COMPONENTS_PLUGIN.target = \ $$qtLibraryTarget(embedded_qt_components_plugin) QT_COMPONENTS_PLUGIN.qml_files += \ qmldir \ Checkable.qml \ CheckableGroup.qml \ CheckableGroup.js APP_PLUGINS += QT_COMPONENTS_PLUGIN
ãã©ã°ã€ã³ãèšè¿°ããæ§é å ã®ãã£ãŒã«ãã®ããããã£ã«ã¯ã次ã®æå³ããããŸãã
- source_path-ãããžã§ã¯ãã®ã«ãŒãã«çžå¯Ÿçãªãã©ã°ã€ã³ãžã®ãã¹ã
- imports_path-ã¢ããªã±ãŒã·ã§ã³ã€ã³ããŒããã£ã¬ã¯ããªã®ã«ãŒãããã®çžå¯Ÿãã¹ã ã¹ã©ãã·ã¥ããããã«çœ®ãæãããšãã¢ããªã±ãŒã·ã§ã³ã®qml-filesã«ã€ã³ããŒãã®ååãä»ããããŸããããšãã°ããã®å Žå-
import Qt.labs.components;
- target-æ§ç¯ãããã©ã€ãã©ãªã®åå
- qml_files -qmlãã¡ã€ã«ã§æ¥ç¶ããããšãã«äœ¿çšå¯èœãªãã©ã°ã€ã³ãŠã£ãžã§ããã®ãªã¹ãã
çµã¿èŸŒã¿ã®Qt Quick Componentsã®1察1ã®çžå¯Ÿã€ã³ããŒããã¹ã¯ãããã€ã¹ã§å©çšå¯èœãªå ã®ãã©ã°ã€ã³ã®ã€ã³ããŒããã¹ãšäžèŽããŸãã 䜿çšãããã©ã°ã€ã³ã®æ§è³ªãç¥ãããšããqmlãã¡ã€ã«ãæœè±¡åããããšã§ãS60 5thãšãã£ã·ã§ã³ãšææ°ã®Symbianã®ã¢ã»ã³ããªã§ããããã·ãŒã ã¬ã¹ã«åãæ¿ããããšãã§ããŸãã priãã¡ã€ã«ã®æåŸã®è¡ã§ãã³ã³ããŒãã³ããã©ã°ã€ã³ãAPP_PLUGINSã«è¿œå ããŸããããã¯ãããã€ã¹ã«ã€ã³ã¹ããŒã«ããããã©ã°ã€ã³ã®é åã§ãã
/src/3rdparty/qt-components/components/components.pro
include(../../../../config.pri) include(components.pri) TARGETPATH = $$QT_COMPONENTS_PLUGIN.imports_path TEMPLATE = lib TARGET = $$QT_COMPONENTS_PLUGIN.target INCLUDEPATH += $$PWD $$PWD/models CONFIG += qt plugin QT += declarative network script DEFINES += QT_BUILD_COMPONENTS_LIB QML_FILES += $$QT_COMPONENTS_PLUGIN.qml_files symbian { TARGET.EPOCALLOWDLLDATA = 1 TARGET.CAPABILITY += $$APP_CAPABILITY TARGET.UID3 = 0xE1E604E2 } HEADERS += qglobalenums.h SOURCES += plugin.cpp include(kernel/kernel.pri) include(models/models.pri) include(../../../../install.pri)
åé ã®ãã¢ã®ãããã¡ã€ã«ã«ã¯config.priãå«ãŸããŠãããAPP_CAPABILITYãªã©ã®ãã¹ãŠã®ç°å¢å€æ°ãå©çšã§ããŸãã åŸè ã®äœ¿çšã¯ãå®è¡å¯èœãã¡ã€ã«ã§äœ¿çšãããåçã©ã€ãã©ãªã®ã¢ã¯ã»ã¹ã¬ãã«ããã¡ã€ã«èªäœã®ã¢ã¯ã»ã¹ã¬ãã«ãããäœããªããšäž»åŒµããSymbianã»ãã¥ãªãã£ã·ã¹ãã ã«ãããã®ã§ãã ããã«æ©ãŸãããªãããã«ãæãç°¡åãªæ¹æ³ã¯ããã¹ãŠã®ãã©ã°ã€ã³ãšexe-shnikã«åãæ©èœãæãããããšã§ãã
å§ãã
以äžã¯ããã¹ãŠã®ãã©ã°ã€ã³ããŸãšããŠåéããæ§æãã¡ã€ã«ã§ãã ãã¹ãŠã®Qt Quick Componentsãã©ã°ã€ã³ã®pri-filesãå«ããSymbianã®ã€ã³ã¹ããŒã©ãŒãäœæããããã®æ瀺ãå«ããã¡ã€ã«ãçæããããã®ãã£ã¬ã¯ãã£ãã圢æããŸãã
src / app / gui / gui.pro
include(../../../config.pri) include(../../3rdparty/qt-components/components/components.pri) include(../../3rdparty/qt-components/symbian/symbian.pri) include(../../3rdparty/qt-components/symbian/extras/extras.pri) CONFIG += qt mobility QT += core declarative network TARGET = EmbeddedComponents DESTDIR = $$APP_INSTALL_BINS # skip... symbian { # skip... for(plugin, APP_PLUGINS) { pluginstub = pluginstub$${plugin} pluginstubsources = $${pluginstub}.sources $$pluginstubsources = $$symbianRemoveSpecialCharacters($$eval($${plugin}.target)).dll pluginstubpath = $${pluginstub}.path $$pluginstubpath = $$APP_IMPORTS_BASE_DIR/$$eval($${plugin}.imports_path) resources = resources$${plugin} resourcessources = $${resources}.sources for(qmlfile, $$list($$eval($${plugin}.qml_files))) { $$resourcessources += $$APP_SOURCE_TREE/$$eval($${plugin}.source_path)/$$qmlfile } resourcespath = $${resources}.path $$resourcespath = $$APP_IMPORTS_BASE_DIR/$$eval($${plugin}.imports_path) DEPLOYMENT += $$pluginstub $$resources } } # skip...
æåŸã«ãã¢ããªã±ãŒã·ã§ã³èªäœã§ã€ã³ããŒããã©ã®ããã«æ¥ç¶ãããŠãããã
src / app / gui / application.cpp
QDeclarativeView *Application::buildRootView() { QScopedPointer<QDeclarativeView> view(new QDeclarativeView()); QObject::connect(view->engine(), SIGNAL(quit()), view.data(), SLOT(close())); view->setResizeMode(QDeclarativeView::SizeRootObjectToView); view->engine()->addImportPath(QLatin1String("../../resource/demo/imports")); view->setSource(QUrl("qrc:/layout/main.qml")); return view.take(); }
å®çŸ©ããç°å¢å€æ°ã«åŸã£ãŠãã¢ããªã±ãŒã·ã§ã³èªäœã¯/ sys / binã«ã€ã³ã¹ããŒã«ããããã©ã°ã€ã³ã¯åããã©ã€ãã®/ resource / demo / importsã«ã€ã³ã¹ããŒã«ãããŸããã ãããããQDeclarativeEngineã®addImportPathé¢æ°ã§æå®ããå¿ èŠããããã¹ãååŸããŸãã
çµè«ã®ä»£ããã«
æäœæ¥ã§çµã¿ç«ãŠãããQt Quick Componentsã䜿çšããŠäœæãããã¢ããªã±ãŒã·ã§ã³ã¯ãå ã®ããŒãžã§ã³ã§äœæãããåæ§ã®ã¢ããªã±ãŒã·ã§ã³ãšã»ãšãã©åºå¥ã§ããŸããã ããã«ãããNokia Storeã®QAããŒã ã®åŽã§é¢çœã誀解ãçãŸããŸããã 圌ãã¯é·ãéã¢ããªã±ãŒã·ã§ã³ãå ¬éããããªãã£ãã®ã§ãæ¬åœã®Qt Quickã³ã³ããŒãã³ãã䜿çšããŠãããšéé£ãããŸããããäœããã®çç±ã§ã€ã³ã¹ããŒã©ãŒã§ããããžã®äŸåã宣èšããŸããã§ããã ã³ã¡ã³ãã¯æ¬¡ã®ãšããã§ãã
JerryïŒVC-SigningïŒïŒThuã03 May 2012 18:41:30 +0000ïŒ
ãããªãã·ã£ãŒæ§ã
ããªãã®ã¢ããªã¯Qt Quick Components for Symbianã䜿çšããŠããŸãããã¢ããªããã±ãŒãžã«ã¯å¯Ÿå¿ããã³ã³ããŒãã³ãäŸåé¢ä¿å®£èšããããŸããã äŸåé¢ä¿ãè¿œå ããŠãã¢ããªãåæ§ç¯ããŠãã ããã
ãªãªãžãã«ã®ãã©ã°ã€ã³ã䜿çšããŠææ°ã®Symbiançšã®ã¢ããªã±ãŒã·ã§ã³ãã¢ã»ã³ãã«ããããšã«ãã£ãŠã®ã¿ããã®åé¡ã«å¯ŸåŠããããšãã§ããŸããã S60 5thãšãã£ã·ã§ã³ã§ã¯ç©ççã«åãããšãã§ããªããããNokia Storeã®åŸæ¥å¡ã¯ããã®ãã©ãããã©ãŒã ã®ã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ããŒã©ãŒã§ã®ååšã䞻匵ããŸããã§ããã æåŸã«ãç¬èªã®ããŒãžã§ã³ã®Qt Quick Componentsãåãããã¢ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãããã¡ãããå ¥æã§ããããšãå床ãç¥ããããŸã ã
ããã«ã»ãªã·ããã
Symbianã®Futubraå ¬åŒã¯ã©ã€ã¢ã³ãéçºè