[bt-devel] Bible Application for Mobile Devices

Костя Маслюк kostyamaslyuk at gmail.com
Fri Jul 12 04:02:19 MST 2013

2013/7/12 Gary Holmlund <gary.holmlund at gmail.com>

>  On 7/11/2013 8:22 AM, Костя Маслюк wrote:
>  2013/7/11 Gary Holmlund <gary.holmlund at gmail.com>
>> I have been working on a second frontend for BibleTime. I am calling it
>> BibleTime Mobile. One of the main goals of it is to run on various mobile
>> devices. I have been looking at Android for the first device. It is written
>> in c++ and QML using Qt 5.1. I have put together some information about it
>> on the BibleTime Wiki. (http://devel.bibletime.info/wiki/BibleTime_Mobile).
>> It is checked into the same repository as desktop BibleTime.  I believe
>> that work on the BibleTime backend is very useful for both a desktop and an
>> mobile frontend. So, a secondary goal is to keep the mobile effort in sync
>> with the desktop work.
>>  Before this point i was not interested  keep Mini-dev-tree  synced with
> BibleTime, because as far as i know it is still in refactoring cycle. When
> i had ported Mini to new platform i was very sensitive to any changes in
> core, there are some ifdef-s that are required for some platforms. After
> Mini will be released i would freely go to HEAD BibleTime revesion.
> I believe that having the application be in the same repository as the
> rest of BibleTime will make it relatively easy to keep in sync. The
> refactoring is generally not affecting interfaces between the backend and
> frontend. The backend code that deals with directory locations is platform
> dependent, but we can add the platforms that are needed. All of this means
> that there will not have to be a big resync someday to take advantage of
> new BibleTime backend code.
> Yes, but sometimes i need to sync only my own work (my home and work
machines), and not to be affected by other commits. I don't know git well

By the way, is there way merge branch in bibletime/mini (separate project)
on Gitorious with master branch of BibleTime, so BibleTime commits will be
automatically applied and merged with my modifications?

Anyway after some time of thinking i found that i'm ready to completely
re-wright Mini, this is not at first time (first - when Qt was ported on
Windows Mobile, second when i decided to use MVC pattern in Qt). Maybe not
right now, but if it would unite efforts or bring the general profit.

>  Provide simple and beautiful but powerful application on as much devices
> as possible is my goal, be useful to as much efforts as possible - also. I
> would like to share some portion of code with BibleTime: i have some
> models, have cool listview control, i would like to improve some Core
> parts: rendering pipeline for parallel display and correct per-entry
> display, install manager would be better too, for now can't remember all.
> These are goals that I would agree are good. I would be interested in what
> you are doing with the listview control. BibleTime backend rendering
> essentially handles the parallel display of modules.

I would like to build BTM, but encountered with that  QtCreator 2.7.2 can't
import CMake project (it fails when looking for QtCore5.dll not in right
place). I'm on windows7x64, have you any clue how i can be built?

BtMiniView is derived from QAbstractItemView, if really QWidget can't be
used in QML application i must find way to work it in both QWidgets and
QML. Main features are that it can layout tree models and plain models one
of them is sword-module-model, that consist of all the module entries, and
is limited to only render current visible entries. I found that it is more
comfortable to scroll and do not encounter with any bound as opposed modern
method to layout chapter and to follow next chapter when user pull&throw at
the bottom of chapter. Another feature is threaded text retrieving, so
application is always responsive while it gets data from Sword (changes to
BtCore are also applied because some data corruption was occurred).

I'm only do not know how it would be better to use threads, make them in
View or make them in Model and then notify view to re-layout item when data
will be retrieved from Sword.

Yes Bt have parallel display, but it is not take into consideration
different v11ns, i'm currently work on implementation and found that it
would require some changes in BibleTime or maybe its better to have
parallel display functionality in Sowrd, because mapping logic is not so
trivial. Currently solution for windows is built (link in another thread)
and for Android (at http://bibletimemini.sf.net/ - Files - Rc1 - 0.9.5

>  For example i need powerful bookshelftree model for install manager, i
> would like to add there remoteRepository item and abiblty to add several
> install sources. SOmething like this:
>  BtBookShelfTreeModel installModel(Grouping("language/category/module"));
>  installModel.setModel(CSwordBackend::instance()->model());
>  installModel.addInstallSource(crosswire);
> installModel.addInstallSource(crosswire_avraw);
> installModel.addInstallSource(xiphos);
>  then i will be able to get modules for particular language and use this
> in standard views, sort and get module update status. This would be useful
> for BibleTime too.
> In BibleTime Mobile I have written an install manager that makes use of
> the existing BibleTime backend BtBookShelfModel. It can download the list
> of 10 or so sources that descktop BibleTime can also download. It downloads
> this list and refreshes the modules of all of the soures with a single
> button press. The UI is written in QML and is quite easy to use.
> I'm using BtBookshelfTreeModel, but found that i need more. Currently i
can't combine several BtBookShelfModel-s and group them by language. Simply
i need this feature, can someone provide me info on how to make this right,
so this work can be included in BibleTime repo?

>  I found in wiki that you going to remove all references on QWidgets from
> BibleTime Core. Are both those technologies incompatible? Can i make custom
> control for QML app?
> With Qt 4, the QML (Quick 1.1) and QWidgets can co-exist. In Qt 5 they
> introduced QML (Quick 2.0). It cannot co-exist with QWidgets. The Quick 1.1
> is scheduled to be removed in Qt 5.2 due out later this year. The Qt for
> Android library does not have any QWidgets in it.

Can't agree with the last statement, or maybe i do not understand
something. I'm writing on QWidgets for Android.

> QML is meant for building custom controls. The install manager I wrote is
> an example.

I need to build it, can't understand here.

> The things in BibleTime backend that refer to QWidgets should be very easy
> to fix. One example is the function to load Icons is located in a frontend
> file that is derived from QWidget, but it is called from the backend. The
> icon function just needs to be moved to a location in the backend.
>  Both the BibleTime Mini group and a second group that is looking at a
>> Ubuntu Touch application have expressed interest in discussing this
>> further. I am interested and am opening the discussion with this message.
>> Gary Holmlund
>   Gary
> _______________________________________________
> bt-devel mailing list
> bt-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/bt-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/bt-devel/attachments/20130712/6570c12e/attachment-0001.html>

More information about the bt-devel mailing list