summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogDan Vatra <bog_dan_ro@yahoo.com>2012-06-18 21:33:19 +0300
committerBogDan Vatra <bog_dan_ro@yahoo.com>2012-06-18 21:33:19 +0300
commit8237d4a7340bce4b91df5fa1f1c35c92529efacb (patch)
tree879b0c43b80f685b60e0633b2f48d33929cccd66
parent853f3fcf061ca02749135672266016019fa55e6c (diff)
Final touches to Ministro for alpha4 release
-rw-r--r--Ministro/AndroidManifest.xml1
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/ExtractStyle.java45
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/Library.java18
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/MinistroActivity.java26
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/MinistroConfigActivity.java5
-rw-r--r--Ministro/src/org/kde/necessitas/ministro/MinistroService.java3
6 files changed, 64 insertions, 34 deletions
diff --git a/Ministro/AndroidManifest.xml b/Ministro/AndroidManifest.xml
index 5610a9e..30ac068 100644
--- a/Ministro/AndroidManifest.xml
+++ b/Ministro/AndroidManifest.xml
@@ -26,4 +26,5 @@
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
</manifest>
diff --git a/Ministro/src/org/kde/necessitas/ministro/ExtractStyle.java b/Ministro/src/org/kde/necessitas/ministro/ExtractStyle.java
index ccdda31..7d02707 100644
--- a/Ministro/src/org/kde/necessitas/ministro/ExtractStyle.java
+++ b/Ministro/src/org/kde/necessitas/ministro/ExtractStyle.java
@@ -54,6 +54,7 @@ import android.util.AttributeSet;
import android.util.Xml;
import android.view.inputmethod.EditorInfo;
+
public class ExtractStyle {
native static int[] extractChunkInfo(byte[] chunkData);
@@ -829,7 +830,7 @@ public class ExtractStyle {
}
}
- public JSONObject extractTextAppearanceInformations(String styleName, String qtClass, AttributeSet attribSet )
+ public JSONObject extractTextAppearanceInformations(String styleName, String qtClass, AttributeSet attribSet, int textAppearance )
{
JSONObject json = new JSONObject();
try
@@ -852,9 +853,11 @@ public class ExtractStyle {
TypedArray a =m_theme.obtainStyledAttributes(null, textViewAttrs, styleId, 0);
TypedArray appearance = null;
- int ap = a.getResourceId(styleableClass.getDeclaredField("TextView_textAppearance").getInt(null), -1);
- if (ap != -1)
- appearance = m_theme.obtainStyledAttributes(ap, (int[]) styleableClass.getDeclaredField("TextAppearance").get(null));
+ if (-1==textAppearance)
+ textAppearance = a.getResourceId(styleableClass.getDeclaredField("TextView_textAppearance").getInt(null), -1);
+
+ if (textAppearance != -1)
+ appearance = m_theme.obtainStyledAttributes(textAppearance, (int[]) styleableClass.getDeclaredField("TextAppearance").get(null));
if (appearance != null)
{
@@ -1097,7 +1100,7 @@ public class ExtractStyle {
void extractCompoundButton(JSONObject parentObject, String styleName, String qtClass)
{
- JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null);
+ JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1);
Class<?> attrClass;
try {
attrClass = Class.forName("android.R$attr");
@@ -1160,7 +1163,7 @@ public class ExtractStyle {
void extractProgressBar(JSONObject parentObject, String styleName, String qtClass)
{
- JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null);
+ JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1);
try {
extractProgressBarInfo(json, styleName);
parentObject.put(styleName, json);
@@ -1171,7 +1174,7 @@ public class ExtractStyle {
void extractAbsSeekBar(JSONObject parentObject, String styleName, String qtClass)
{
- JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null);
+ JSONObject json = extractTextAppearanceInformations(styleName, qtClass, null, -1);
extractProgressBarInfo(json, styleName);
Class<?> attrClass;
try {
@@ -1195,7 +1198,7 @@ public class ExtractStyle {
JSONObject extractCheckedTextView(AttributeSet attribSet, String itemName)
{
- JSONObject json = extractTextAppearanceInformations("textViewStyle", itemName, attribSet);
+ JSONObject json = extractTextAppearanceInformations("textViewStyle", itemName, attribSet, -1);
try {
Class<?> attrClass= Class.forName("android.R$attr");
int styleId = attrClass.getDeclaredField("textViewStyle").getInt(null);
@@ -1214,7 +1217,7 @@ public class ExtractStyle {
return json;
}
- private JSONObject extractItemStyle(int resourceId, String itemName) {
+ private JSONObject extractItemStyle(int resourceId, String itemName, int textAppearance) {
try
{
XmlResourceParser parser = m_context.getResources().getLayout(resourceId);
@@ -1231,7 +1234,7 @@ public class ExtractStyle {
AttributeSet attributes = Xml.asAttributeSet(parser);
String name = parser.getName();
if (name.equals("TextView"))
- return extractTextAppearanceInformations("textViewStyle", itemName, attributes);
+ return extractTextAppearanceInformations("textViewStyle", itemName, attributes, textAppearance);
if (name.equals("CheckedTextView"))
return extractCheckedTextView(attributes, itemName);
} catch (Exception e) {
@@ -1243,13 +1246,13 @@ public class ExtractStyle {
private void extractItemsStyle(JSONObject json) {
try
{
- json.put("simple_list_item",extractItemStyle(android.R.layout.simple_list_item_1, "simple_list_item"));
- json.put("simple_list_item_checked",extractItemStyle(android.R.layout.simple_list_item_checked, "simple_list_item_checked"));
- json.put("simple_list_item_multiple_choice",extractItemStyle(android.R.layout.simple_list_item_multiple_choice, "simple_list_item_multiple_choice"));
- json.put("simple_list_item_single_choice",extractItemStyle(android.R.layout.simple_list_item_single_choice, "simple_list_item_single_choice"));
- json.put("simple_spinner_item",extractItemStyle(android.R.layout.simple_spinner_item, "simple_spinner_item"));
- json.put("simple_spinner_dropdown_item",extractItemStyle(android.R.layout.simple_spinner_dropdown_item, "simple_spinner_dropdown_item"));
- json.put("simple_dropdown_item_1line",extractItemStyle(android.R.layout.simple_dropdown_item_1line, "simple_dropdown_item_1line"));
+ json.put("simple_list_item",extractItemStyle(android.R.layout.simple_list_item_1, "simple_list_item", android.R.style.TextAppearance_Large));
+ json.put("simple_list_item_checked",extractItemStyle(android.R.layout.simple_list_item_checked, "simple_list_item_checked", android.R.style.TextAppearance_Large));
+ json.put("simple_list_item_multiple_choice",extractItemStyle(android.R.layout.simple_list_item_multiple_choice, "simple_list_item_multiple_choice", android.R.style.TextAppearance_Large));
+ json.put("simple_list_item_single_choice",extractItemStyle(android.R.layout.simple_list_item_single_choice, "simple_list_item_single_choice", android.R.style.TextAppearance_Large));
+ json.put("simple_spinner_item",extractItemStyle(android.R.layout.simple_spinner_item, "simple_spinner_item", -1));
+ json.put("simple_spinner_dropdown_item",extractItemStyle(android.R.layout.simple_spinner_dropdown_item, "simple_spinner_dropdown_item",android.R.style.TextAppearance_Large));
+ json.put("simple_dropdown_item_1line",extractItemStyle(android.R.layout.simple_dropdown_item_1line, "simple_dropdown_item_1line",android.R.style.TextAppearance_Large));
} catch (Exception e) {
e.printStackTrace();
}
@@ -1264,14 +1267,14 @@ public class ExtractStyle {
m_theme = context.getTheme();
JSONObject json = new JSONObject();
try {
- json.put("buttonStyle", extractTextAppearanceInformations("buttonStyle", "QPushButton", null));
- json.put("spinnerStyle", extractTextAppearanceInformations("spinnerStyle", "QComboBox", null));
+ json.put("buttonStyle", extractTextAppearanceInformations("buttonStyle", "QPushButton", null, -1));
+ json.put("spinnerStyle", extractTextAppearanceInformations("spinnerStyle", "QComboBox", null, -1));
extractProgressBar(json, "progressBarStyleHorizontal", "QProgressBar");
extractAbsSeekBar(json, "seekBarStyle", "QSlider");
extractCompoundButton(json, "checkboxStyle", "QCheckBox");
- json.put("editTextStyle", extractTextAppearanceInformations("editTextStyle", "QLineEdit", null));
+ json.put("editTextStyle", extractTextAppearanceInformations("editTextStyle", "QLineEdit", null, -1));
extractCompoundButton(json, "radioButtonStyle", "QRadioButton");
- json.put("textViewStyle", extractTextAppearanceInformations("textViewStyle", "QWidget", null));
+ json.put("textViewStyle", extractTextAppearanceInformations("textViewStyle", "QWidget", null, -1));
extractItemsStyle(json);
//extractCompoundButton(json, "buttonStyleToggle", null);
//extractCompoundButton(json, "switchStyle", null);
diff --git a/Ministro/src/org/kde/necessitas/ministro/Library.java b/Ministro/src/org/kde/necessitas/ministro/Library.java
index 211f29b..0646d86 100644
--- a/Ministro/src/org/kde/necessitas/ministro/Library.java
+++ b/Ministro/src/org/kde/necessitas/ministro/Library.java
@@ -30,6 +30,8 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import android.os.Bundle;
+
class Library
{
@@ -215,6 +217,22 @@ class Library
}
return builder.toString();
}
+
+ public static void mergeBundleParameters(Bundle out, String outKey, Bundle in, String inKey)
+ {
+ if (!in.containsKey(inKey))
+ return;
+
+ String value = null;
+ if (out.containsKey(outKey))
+ value=out.getString(outKey);
+
+ if (value!=null && value.length()>0 && value.charAt(value.length()-1)!='\t')
+ value=value+"\t";
+
+ value=value+in.getString(inKey);
+ out.putString(outKey, value);
+ }
};
class NeedsStruct
diff --git a/Ministro/src/org/kde/necessitas/ministro/MinistroActivity.java b/Ministro/src/org/kde/necessitas/ministro/MinistroActivity.java
index ed5e6f2..664904a 100644
--- a/Ministro/src/org/kde/necessitas/ministro/MinistroActivity.java
+++ b/Ministro/src/org/kde/necessitas/ministro/MinistroActivity.java
@@ -64,12 +64,14 @@ import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
import android.provider.Settings;
public class MinistroActivity extends Activity
{
private static final int CONNECTION_TIMEOUT = 20000; // 20 seconds for connection timeout
- private static final int READ_TIMEOUT = 2000; // 20 seconds for connection timeout
+ private static final int READ_TIMEOUT = 10000; // 10 seconds for read timeout
public native static int nativeChmode(String filepath, int mode);
private static final String DOMAIN_NAME="http://files.kde.org/necessitas/ministro/android/necessitas/";
@@ -77,6 +79,7 @@ public class MinistroActivity extends Activity
private String[] m_modules;
private int m_id=-1;
private String m_qtLibsRootPath;
+ private WakeLock m_wakeLock;
private void checkNetworkAndDownload(final boolean update)
{
@@ -143,9 +146,11 @@ public class MinistroActivity extends Activity
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
- if (getIntent().hasExtra("id") && getIntent().hasExtra("modules"))
- {
+ if (getIntent().hasExtra("id"))
m_id=getIntent().getExtras().getInt("id");
+
+ if (getIntent().hasExtra("modules"))
+ {
m_modules=getIntent().getExtras().getStringArray("modules");
AlertDialog.Builder builder = new AlertDialog.Builder(MinistroActivity.this);
builder.setMessage(getResources().getString(R.string.download_app_libs_msg,
@@ -183,11 +188,8 @@ public class MinistroActivity extends Activity
{
if (-1 != m_id && null != MinistroService.instance())
MinistroService.instance().retrievalFinished(m_id);
- else
- {
- NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- nm.cancelAll();
- }
+ NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ nm.cancelAll();
finish();
}
@@ -684,12 +686,20 @@ public class MinistroActivity extends Activity
dir.mkdirs();
nativeChmode(m_qtLibsRootPath, 0755);
bindService(new Intent("org.kde.necessitas.ministro.IMinistro"), m_ministroConnection, Context.BIND_AUTO_CREATE);
+ PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ m_wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Ministro");
+ m_wakeLock.acquire();
}
@Override
protected void onDestroy()
{
super.onDestroy();
+ if (null != m_wakeLock)
+ {
+ m_wakeLock.release();
+ m_wakeLock = null;
+ }
unbindService(m_ministroConnection);
}
diff --git a/Ministro/src/org/kde/necessitas/ministro/MinistroConfigActivity.java b/Ministro/src/org/kde/necessitas/ministro/MinistroConfigActivity.java
index 9b80e4d..ca8181d 100644
--- a/Ministro/src/org/kde/necessitas/ministro/MinistroConfigActivity.java
+++ b/Ministro/src/org/kde/necessitas/ministro/MinistroConfigActivity.java
@@ -48,7 +48,7 @@ public class MinistroConfigActivity extends Activity {
long id) {
Toast.makeText(parent.getContext()
, getResources().getString(R.string.ministro_repository_msg
- , parent.getItemAtPosition(pos).toString()), Toast.LENGTH_LONG).show();
+ , parent.getItemAtPosition(pos).toString()), Toast.LENGTH_SHORT).show();
MinistroService.setRepository(MinistroConfigActivity.this, parent.getItemAtPosition(pos).toString());
}
@Override
@@ -66,9 +66,6 @@ public class MinistroConfigActivity extends Activity {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
- Toast.makeText(parent.getContext()
- , getResources().getString(R.string.ministro_repository_msg
- , parent.getItemAtPosition(pos).toString()), Toast.LENGTH_LONG).show();
MinistroService.setCheckFrequency(MinistroConfigActivity.this, Long.parseLong(parent.getItemAtPosition(pos).toString()));
}
diff --git a/Ministro/src/org/kde/necessitas/ministro/MinistroService.java b/Ministro/src/org/kde/necessitas/ministro/MinistroService.java
index 71bdc9c..d7bd9af 100644
--- a/Ministro/src/org/kde/necessitas/ministro/MinistroService.java
+++ b/Ministro/src/org/kde/necessitas/ministro/MinistroService.java
@@ -179,7 +179,6 @@ public class MinistroService extends Service
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notification.defaults |= Notification.DEFAULT_SOUND;
- notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_LIGHTS;
try {
nm.notify(1, notification);
@@ -413,6 +412,8 @@ public class MinistroService extends Service
{
try
{
+ Library.mergeBundleParameters(loaderParams, ENVIRONMENT_VARIABLES_KEY, parameters, ENVIRONMENT_VARIABLES_KEY);
+ Library.mergeBundleParameters(loaderParams, APPLICATION_PARAMETERS_KEY, parameters, APPLICATION_PARAMETERS_KEY);
callback.loaderReady(loaderParams);
}
catch (Exception e)