QrwAndroid - QML plugin
-
[NOT YET RELEASED]
This topic for now just provides news and updates of the development progress of the plugin. Follow this thread if you are interested.
QrwAndroid - QML extension plugin
The plan is to make a plugin which eases the development of native-looking Android apps with Qt and also provide the most commonly used features to developers without worrying too much about the proper integration and setup.
Code even less, create even more ;)Planned Features:
- Android QML elements (pure QML elements with Android look-and-feel - to be used on any platform also Qt runs
-
- following Google's material design for layouts (dp margins, etc.) and components
-
- BottomSheets
-
- FloatingActionButton
-
- Cards
-
- Sliders
-
- Swipe to refresh (partly implemented)
-
- Loading/Progress Indicators
-
- Date/Time pickers
-
- ListItems
-
- Left/Right swipe actions
-
- GridList
-
- ExpansionPanels
-
- Divider
-
- Dialogs (implemented)
-
- BottomNavigation
-
- TextFields
-
- Magnifier
-
- SnackBars
-
- Chips
-
- Switch
-
- SideNav (Drawer)
-
- App/Nav bar
-
- Fingerprint Dialog
-
- Unlock-Pattern control
-
- ScrollBar
-
- Steppers
-
- GridFlow (Masonry layout) (implemented)
-
- Inheritable customizable Style properties (implemented)
- Misc. helpful Android utilities
-
- adding/removing a file to the device's media library
-
- control of the device's notification LED
-
- vibration notification (implemented)
-
- Sharing of data with other Android apps (Intents)
-
- Device infos (isTablet, isPhone, isTV, .... ) (implemented)
-
- DP/density calculation (implemented)
-
- runtime App Permission checking
-
- enable/disable dim lock of screen
-
- PlayStore rate notifier
-
- fix screen orientation (during runtime)
-
- device fingerprint authentication
-
- support for AndroidTV (Leanback)
-
- support for Android Wear
The plugin contains this basic Android feature set. Additionally there are addons available with feature sets of GOOGLE, AMAZON, FACEBOOK (maybe even more will follow in the far future).
GOOGLE
- AdMob support (Banners only) (implemented)
- Google Cast support (mostly implemented)
-
- stream any url to chromecast / Google Cast receiver (implemented)
-
- stream local files (via a light-weight built-in Webserver) to a chromecast / Google Cast receiver (implemented)
- Google Sign-in
- Google Drive
-
- provided items model
- Google Analytics
- Google Games
AMAZON
- Support for FireOS devices (following Amazon's UX guideline)
- Amazon Fling (mostly implemented)
- Login with Amazon (implemented)
- Mobile Ads (implemented)
- ADM (Amazon Device Messaging)
FACEBOOK
- Facebook Login
-
- QML login dialog
- QML share dialog
The addons are also distributed as QML extension plugins (with dependency to the base plugin).
Follow this topic to keep up-to-date with the progress.
I do not know yet when it will be finished, but i will post it here when it reaches alpha/beta phase for testing if someone is interested. Also it's not yet determined if it will be commercial (small license fee) or open-source.Also if you are interested in this plugin you may want to rate up this post so i can evaluate how big the interest in it is and keep up the energy i put into it. ;)
Also you may want to add some wishes to the feature set? Let me know and i'll see what i can do. -
Have you seen https://github.com/lirios/fluid/ ?
-
@GrecKo
yes i am aware that there are various other libraries with a similiar scope available already .
But nevertheless i am planning some controls and features i couldn't find in any of them. -
I don't want to force you on anything, but wouldn't collaborating with Fluid make more sense ? at least for the UI controls.
A lot of elements are already present there and it's a little bit more established.For example, I implemented some Steppers internally that I would rather contribute to Fluid because it has a larger audience ( if I take the time to actually clean my code and make it more generic).
-
@GrecKo said in QrwAndroid - QML plugin:
I don't want to force you on anything, but wouldn't collaborating with Fluid make more sense ? at least for the UI controls.
Thats not that easy. Most elements of mine are heavily webbed with my C++ classes (self-inheriting AndroidStyle as attached property, various Util classes, etc).
And i am also not forcing anyone to use my library ;)
At the end everyone has to decide on it's own which lib fits the best for his/her requirements (regarding costs and/or provided feature-set). -
Fair enough, I understand and respect your position : )
-
bump.
Updated state of implemented features. -
- implemented Google Mobile Ads (Banners only)
(The native AdView android view is rendered into an QML item) - dropped QZXing integration - since it can be easily added by the enduser on demand
- implemented Google Mobile Ads (Banners only)
-
this plugin sounds great. I would love to see your masonry implementation.
-
@Attila-Santo
i will release the plugin for testing purposes during alpha/beta phase at some point when it makes sense.
Watch this thread to get the notification. -
-
This post is deleted!
-
@raven-worx did your plugin ever make it to alpha / beta?
I would still love to see the implementation of your masonry
-
@Attila-Santo
Hi, no i didnt find time to finish this plugin.Anyway here is the implementation of this layout:
https://gist.github.com/raven-worx/28a737f7333480cfac418b42480093fcExample:
GridFlow { anchors.fill: parent columnCount: 2 horizontalSpacing: 5 verticalSpacing: 5 spanningEnabled: true margin: 5 rowHeight: 50 keepChildOrder: true Rectangle { GridFlow.sizeHint: Qt.size(40,50) GridFlow.spanningChance: 0.2 GridFlow.minimumHeight : 10 GridFlow.maximumHeight: 10 } }
The implementation can easily adapted to set the row/column span explicitly via the attached property class and applied in the GridFlow::doLayout() method.
-
@raven-worx you're a hero 🙌