Sunday, March 30, 2014

Syncing XBMC settings over DropBox on a KitKat Android

I have a Sony Xperia Z1 and I wanted to try XBMC on it before applying it on all of my other devices so instead of simply installing all of the addons and configure them on each device seperately, there is an addon that does that exactly.
I chose the use DropBox as a place that holds my configuration but since my Xperia Z1 is on KitKat, it wasn't as easy as I initially thought.
The stated below is intended for anyone who wants to acheive the stated above.

Taken from http://forum.stmlabs.com/showthread.php?tid=5701

1. select dropbox...below it will ask you for your app key and secret.
Here is how you get them
A. Login to your dropbox and goto dropbox.com/developers/apps
B. Create and app
App Type: Core API
Name: "can be anything ur little heart desires"
Description: I put "the answer to world peace" but it also can be anything/blank
Access: App folder...unless u want ur pi to have access to any other folder besides ur backup folder.
C. hit Create!
You should see a screen with ur app key and secret...WRITE IT DOWN!
2. Enter ur app key and secret u just created.
3. hit OK

After u tell XBMCbackup what u want it to backup and set ur scheduling pref. hit OK!

Now lets back some stuff up shall we...
1. Goto program add-ons from main menu and select XBMCbackup and hit backup!
2. A msg box will appears telling to to goto ur log and get the URL...DO NOT HIT OK...i repeat...DO NOT HIT OK YET!!!!
3. SSH into ur pi and goto home/pi/.xmbc/xbmc.log (scroll down to the bottom or search "script.xbmcbackup")
4. copy and paste URL in to a browser of ur choice (CHROME for me)
5. If the gods have smiled upon u...u should see a screen asking you to allow access..hit ALLOW!
6. Now go back to ur pi and hit the OK button
7. The back up should start! 
The second part is where the issue begins as on kitkat the log reside in /data/data/org.xbmc.xbmc/cache/temp/xbmc.log which unless rooted, you can't access.
So the solution was quite simple. Do it on one of my linux machines, then copy the dropbox configuration from ~/.xbmc/userdata/addon_data/script.xbmcbackup to /sdcard/ /Android/data/org.xbmc.xbmc/files/.xbmc/userdata/addon_data/script.xbmcbackup, restart XBMC and viola! I was able to sync my Xperia Z1 (with KitKat) through DropBox.

Wednesday, June 6, 2012

Waze-qt support

Waze-qt  

Waze is a free, community-based traffic & navigation app - This is its unofficial Qt port

Current release is v0.0.9

This page offers users an easy way to report issues or feature. If you would like to request a new feature or feel that something can be improved, simply comment below.

To report issues you can either comment below or create an issue entry here

Friday, July 1, 2011

Dynamic translations in pure QML
























Anyone who develop in QML knows for a fact that it is a problem to translate those at runtime.

I am currently working on a new opensource project named qwazer which is a web client for Waze written in pure QML. I initially did it as a Hebrew & Israel only client, but then there was a lot of requests for multi-country/multi-lingual support.

Still wanting to stay in pure QML, it would seems that there was no way but to use the QtLinguist for translations and use QT/C++ calls.

I said no to that after several attempts and came up with a dynamic translations system where I can change the language with a click of a button from inside the application QML itself without involving any QT/C++ code.



Howto:
translator.js - This is uncomplete as I will add soon a mechanism that loads all translation files dynamically from other JS files as needed in order to avoid putting all translation in the same JS:

var _currentTranslation;
var _translations = [];
var _hebrewTranslation = {"Settings": "הגדרות", "Language%1": "שפה%1"};

function initializeTranslation() {
console.log("initialized translations");
_translations["en"] = {};
_translations["he"] = _hebrewTranslation;
_currentTranslation = _translations["en"];
}

function setLanguage(languageId) {
console.log("language set requested: " + languageId);
_currentTranslation = _translations[languageId];
console.log("language was set");
}

function translate(key, args) {

console.log("translating " + key);
var value = key;
if (typeof(_currentTranslation) != "undefined" && typeof(_currentTranslation[key]) != "undefined")
{
value = _currentTranslation[key];
}

if (typeof(args) != "undefined")
{
for(var i=0; i<args.length; i++)
value = value.replace(eval("/%"+(i+1)+"/"), args[i]);
}

return value;
}


Translator.qml:

import QtQuick 1.0
import "js/translator.js" as Translator

QtObject {

signal retranslateRequired(string langId)

function initializeTranslation() {
Translator.initializeTranslation();
}

function setLanguage(languageId) {
Translator.setLanguage(languageId);
retranslateRequired(languageId)
}

function translate(key, args) {
return Translator.translate(key, args);
}
}



root.qml:

Rectangle {
id: mainView
width: 800
height: 400

property string forceTranslate
onForceTranslateChanged: console.log("retranslation requested")

Connections {
target: translator
onRetranslateRequired: forceTranslateChanged()
}

Translator {
id: translator
}

...


settings.qml - translator and persistent configuration maintainer:

Rectangle {
id: qwazerSettings

signal settingsLoaded

function initialize() {
translator.initializeTranslation();
Storage.initialize();
qwazerSettings.state = "Loaded";
settingsLoaded();
}

...

onLanguageChanged : {
Storage.setObjectSetting("Language", language);
translator.setLanguage(language.langId);
retranslateRequired(language.langId);
}


qml texts that needs translating:

Text {
id: languageLabel
text: translator.translate("Language%1", ":") + mainView.forceTranslate
font.pointSize: 20
}


Explanation:
  • The translator is initialized at earlymost possible
  • Whenever the language changes, I call the event that will eventually set the current translation map
  • Translation and string format (denotes by %1, %2, etc...) is done by the translate function of the translator.
  • In order to reevaluate the translation, I concat an empty string and link between the language changed event and the empty string event - found it in a forum
  • The keys are actually the English translation - and that is why I set the English translations to empty

Tuesday, January 27, 2009

the death of fsca16xx and the birth of cellwriter as an HIM plugin

sadly to inform that my amilo laptop has gone to a new way and it is no longer in my possession. so i will not be able to continue maintaining the fsca16xx script. there are a few open issues (like hotkeys daemon going bezzerk) which i haven't fixed yet, so my advice is to stop using the script. instead i would advice that acerhk or acer_acpi modules will be loaded and used ( running acerhk example: sudo modprobe acerhk force_series=5020 autowlan=1).

on a different subject i have started a new project named himcellwriter which integrate the magnificent
cellwriter hand writing recognition application (applause to the author) as an hildon input method plugin. currently i am attempting to revive a pentium 3 500mhz desktop computer from scrap to be my main machine that will replace the amilo i used to have.

******************************************************************
notes:
1) if you have been using the script and something which happens to be 'hotkeys' is eating your cpu on ubuntu interpid, i suggest that you remove it by running:
sudo apt-get remove hotkeys
after removal, the "Activate/Deactivate" popup will stop appearing.

2) if you're new to ubuntu and have amilo li1718 or a1650g run the following 3 commands to add wireless led support without using the script- this will work until acerhk will be removed from ubuntu (probably 9.04 or 9.10):
$ echo options acerhk autowlan=1 force_series=5020 | sudo tee -a /etc/modprobe.d/options
$ echo acerhk | sudo tee -a /etc/modules
$ sudo rmmod acerhk > /dev/null 2>&1 ; sudo modprobe acerhk autowlan=1 force_series=5020

please let me know if it does not work as i was unable to test it...

EDIT: i made a mistake in step 2 and it is fixed now. i will search a fix to what it caused and publish it soon

Thursday, October 23, 2008

FSCA16xx & Ubuntu 8.10

One week from the official release and Ubuntu 8.10 support was added to the fsca16xx script.

One bump though:
Currently there is a bug and yet another bug in Ubuntu 8.10 that causes it to load 2 different drivers (ath_pci && ath5k) for the Atheros wireless adapter. This causes the wireless not to work.

The script update does not handle this as it affects most of the people that use a wireless Atheros adapter and not just FSC laptops. It should be delt with by the Ubuntu Kernel team.

Saturday, September 20, 2008

acer_acpi & seg faults

In my attempts to modify acer_acpi and add it the required key pooling, I bumped into a problem...

Segmentation faults, lots of them...

I tried the latest acer_acpi code and had similar results.

Reason for seg faults:
kernel 2.6.27 - at least the one in Ubuntu Intrepid Ibex.

Reverting to 2.6.26 made the seg faults go away but the modified module still has not shown signs of doing what I told it to do... :S

Tuesday, August 26, 2008

fscamiloa16xx deprecation

Finally after a year and a half the patch I made is now available in Ubuntu Intrepid and its derivatives.

That means that starting Ubuntu 8.10 the script will no longer be necessary.

Fujitsu Amilo A1650g is supposed to work out of the box upon installation - LI1718 users please contact me ASAP I need some details.

This is good news. I cleared the time line I had imagined for this script as it was supposed to evolve into version 1.0, and instead I returned to my old attempt to add hotkeys support for acer_acpi.

acer_acpi has many benefits over acerhk:
1) It will be fully working on 64bit systems
2) Newer code and closer to the latest kernel
3) Works with ACPI calls as opposed to Assembler calls
...

As I have recently finished my BSc degree, I became a full time employee for BMC Software. For that reason it is important for me to mention (for the record) that I am doing this little project on my own free time and I receive no benefits from Fujitsu-Seimens corporation.