
Prepare
-------

Please copy the app template files first:
```
$ cd ..
$ ./copy.sh camera
```


Info
----

This shows how to use the QML `Camera` item. Only very basic usage is covered
here -- of course you can set many parameters, if you want to dive into all the
details (see Qt Assistant).

Additionally, a basic web-server is integrated, in order to watch/download the
images (mobile device) on the desktop computer. On every new image taken, the
`index.html` is updated.

To display the images on the desktop, enter the following link, using the IP of
the mobile device (assuming both desktop and mobile are in the same WiFi):

```
http://192.168.1.x:1701/
```
**1701** is the default port of `:s-http-server` (from Quicklisp), which was
chosen here because it's both relatively small and works well on mobile.

This example needs a small Qt extension for rotating images. That's necessary
here because different devices may have different orientation handling (namely
iOS), so the saved images would be displayed with the wrong orientation in the
desktop browser.



Note
----

While testing on different devices (phone/tablet), I discovered that they may
behave differently regarding the saved image orientation, even if running the
same OS. So, to adapt to your device's behavior, you need to check if it needs
image rotation, and adapt function `updateImageRotation()` (QML) and
`qt:rotate-image` (Lisp).

The current settings worked for me on both an android phone and an iPhone (both
older models).



Run
---
```
lqml run.lisp
```
Optionally pass `-slime` to start a Swank server, and connect from Emacs with
`M-x slime-connect`.

During development you can pass `-auto`, which will reload all QML files after
you made a change to any of them and saved it. For re-initialization after
reloading, file `lisp/qml-reload/on-reloaded` will be loaded.

Closing the window quits the app. If you try to kill it with `ctrl-c`, you need
an additional `ctrl-d` to exit from ECL. To quit from Slime, do `(qq)` which is
short for `(qquit)`.

