diff options
author | BogDan Vatra <bog_dan_ro@yahoo.com> | 2012-06-18 21:33:19 +0300 |
---|---|---|
committer | BogDan Vatra <bog_dan_ro@yahoo.com> | 2012-06-18 21:33:19 +0300 |
commit | 8237d4a7340bce4b91df5fa1f1c35c92529efacb (patch) | |
tree | 879b0c43b80f685b60e0633b2f48d33929cccd66 | |
parent | 853f3fcf061ca02749135672266016019fa55e6c (diff) |
Final touches to Ministro for alpha4 release
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) |