QtComponents/Miniature

Miniature is a chess game currently maintained by Michael Hasselmann and Quim Gil and targeted to Harmattan devices. See more about it on Miniature page.

I'm going to make this project as an example of the required changes to get it working on Fremantle

Contents

Fetch sources

Get master code from repo following intructions at Miniature/Development

Refactor QML files

QtComponents use its own namespace inside fremantle. you need to replace:

QtQuick 1.1 QtQuick 1.0
com.nokia.meego 1.0 org.maemo.fremantle 1.0
com.nokia.extras 1.0 org.maemo.extras 1.0
Qt.labs.components 1.1 Qt.labs.components 1.0

Change meego namesapce by fremantle one

There is a simple script to do this task located at gitorious. invoke inside miniature directory as:

<syntaxhighlight lang="bash"> migrateTo --fremantle '*.qml' </syntaxhighlight>

Remove QtQuick 1.1 code

After that, you should lookup for QtQuick 1.1 properties. In current upstream code threre's no one. :). The easiest way to achieve this is to use QtSimulator 1.1 and try to run code inside it. See QtComponents/Simulator to know how to get QtComponents running on QtSimulator.

commit.

Handle Close events

<syntaxhighlight lang="diff"> diff --git a/game/frontend/miniature.cc b/game/frontend/miniature.cc index 4735a72..769f8ee 100644 --- a/game/frontend/miniature.cc +++ b/game/frontend/miniature.cc @@ -150,6 +150,9 @@ Miniature::Miniature(Dispatcher *dispatcher,

    d->ui.rootContext()->setContextProperty("localSide", &d->local_side);
    d->ui.rootContext()->setContextProperty("remoteSide", &d->remote_side);
    d->ui.rootContext()->setContextProperty("activeGame", &d->game_element);

+ + connect(d->ui.engine(), SIGNAL(quit()), this, SLOT(quit()), Qt::UniqueConnection); +

#endif

    d->command_line.setFlags(all_commands);

@@ -161,6 +164,12 @@ Miniature::Miniature(Dispatcher *dispatcher,

Miniature::~Miniature()
{}

+void Miniature::quit() +{ + Q_D(Miniature); + void Miniature::show(const QUrl &ui) {

    Q_D(Miniature);

diff --git a/game/frontend/miniature.h b/game/frontend/miniature.h index c4e7e91..42f4f28 100644 --- a/game/frontend/miniature.h +++ b/game/frontend/miniature.h @@ -201,6 +201,7 @@ public:

private:    
    void sendCommand(AbstractCommand *command);
    Q_SLOT void onPositionChanged(const Position &position);

+ Q_SLOT void quit();

};

}} // namespace Game, Frontend

</syntaxhighlight>


<syntaxhighlight lang="diff"> diff --git a/config.pri b/config.pri index 1c955c4..31be944 100644 --- a/config.pri +++ b/config.pri @@ -8,6 +8,13 @@ GAME_DIR = $${DIR_PREFIX}/game

SRC_DIR = $${DIR_PREFIX}/src
TESTS_DIR = $${DIR_PREFIX}/tests

+isEmpty( PREFIX ) { + PREFIX = /usr + maemo5 { + PREFIX = /opt + } +} +

enable-gui {
    DEFINES += MINIATURE_GUI_ENABLED
}

diff --git a/miniature.desktop b/miniature.desktop index dc88397..9f29209 100644 --- a/miniature.desktop +++ b/miniature.desktop @@ -4,5 +4,5 @@ Version=1.0

Terminal=false
Type=Application
Name=Miniature

-Exec=invoker --single-instance --type=d /usr/games/miniature -Icon=/usr/share/themes/base/meegotouch/icons/miniature-n9.png +Exec=/opt/games/miniature +Icon=miniature-n9 diff --git a/src/src.pro b/src/src.pro index 1b1356c..f42a6f9 100644 --- a/src/src.pro +++ b/src/src.pro @@ -95,7 +95,7 @@ LIBS += \

}

-target.path = /usr/games +target.path = $${PREFIX}/games

target.depends += \
    $${IN_PWD}/frontend/frontend.qrc \
    $${IN_PWD}/frontend/MainPage.qml \

@@ -104,10 +104,10 @@ target.depends += \

    $${IN_PWD}/frontend/SeekGame.qml \

desktop.files = ../miniature.desktop

-desktop.path = /usr/share/applications +desktop.path = /usr/share/applications/hildon

icon.files = $${TARGET}-n9.png

-icon.path = /usr/share/themes/base/meegotouch/icons/ +icon.path = $${PREFIX}/share/icons/hicolor/64x64/

INSTALLS += \
    target \

</syntaxhighlight>



Update packing scripts