summaryrefslogtreecommitdiffstats
path: root/Ministro
diff options
context:
space:
mode:
authorBogDan Vatra <bog_dan_ro@yahoo.com>2011-04-25 16:37:01 +0300
committerBogDan Vatra <bog_dan_ro@yahoo.com>2011-04-25 16:37:01 +0300
commite8139669c71b81ad9f4f4a9a2438ce9d12bf6789 (patch)
treece629e0aa27108303e91aeec4a1949f1fd9a5675 /Ministro
parent9b0a579a8a996f1db08f1f9864efc86cb805dfdd (diff)
Switch to kde infrastructure
Check for updates once pre day
Diffstat (limited to 'Ministro')
-rw-r--r--Ministro/AndroidManifest.xml2
-rw-r--r--Ministro/src/eu/licentia/necessitas/ministro/MinistroActivity.java21
-rw-r--r--Ministro/src/eu/licentia/necessitas/ministro/MinistroService.java63
3 files changed, 76 insertions, 10 deletions
diff --git a/Ministro/AndroidManifest.xml b/Ministro/AndroidManifest.xml
index 73f013d..aeeba91 100644
--- a/Ministro/AndroidManifest.xml
+++ b/Ministro/AndroidManifest.xml
@@ -9,7 +9,7 @@
android:configChanges="orientation|locale|fontScale|keyboard|keyboardHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
+ <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service android:name=".MinistroService">
diff --git a/Ministro/src/eu/licentia/necessitas/ministro/MinistroActivity.java b/Ministro/src/eu/licentia/necessitas/ministro/MinistroActivity.java
index 5c4a366..35923f5 100644
--- a/Ministro/src/eu/licentia/necessitas/ministro/MinistroActivity.java
+++ b/Ministro/src/eu/licentia/necessitas/ministro/MinistroActivity.java
@@ -46,6 +46,7 @@ import org.w3c.dom.Node;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.NotificationManager;
import android.app.ProgressDialog;
import android.content.ComponentName;
import android.content.Context;
@@ -62,7 +63,7 @@ public class MinistroActivity extends Activity {
public native static int nativeChmode(String filepath, int mode);
- private static final String DOMAIN_NAME="http://ministro.licentia.eu";
+ private static final String DOMAIN_NAME="http://files.kde.org/necessitas";
private String[] m_modules;
private int m_id=-1;
@@ -108,6 +109,11 @@ public class MinistroActivity extends Activity {
{
if (-1 != m_id && null != MinistroService.instance())
MinistroService.instance().activityFinished(m_id);
+ else
+ {
+ NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ nm.cancelAll();
+ }
finish();
}
@@ -121,7 +127,7 @@ public class MinistroActivity extends Activity {
return new URL(DOMAIN_NAME+"/qt/android/"+android.os.Build.CPU_ABI+"/android-"+android.os.Build.VERSION.SDK_INT+"/libs-"+version+".xml");
}
- public static double downloadVersionXmlFile()
+ public static double downloadVersionXmlFile(boolean checkOnly)
{
try
{
@@ -137,6 +143,9 @@ public class MinistroActivity extends Activity {
if ( MinistroService.instance().getVersion() >= version )
return MinistroService.instance().getVersion();
+ if (checkOnly)
+ return version;
+
connection = getLibsXmlUrl(version).openConnection();
connection.setRequestProperty("Accept-Encoding", "gzip,deflate");
File file= new File(MinistroService.instance().getVersionXmlFile());
@@ -149,7 +158,7 @@ public class MinistroActivity extends Activity {
outstream.write(tmp, 0, downloaded);
}
outstream.close();
- MinistroService.instance().refreshLibraries();
+ MinistroService.instance().refreshLibraries(false);
return version;
} catch (ClientProtocolException e) {
e.printStackTrace();
@@ -223,6 +232,7 @@ public class MinistroActivity extends Activity {
{
outstream.close();
nativeChmode(filePath, 0644);
+ MinistroService.instance().refreshLibraries(false);
return true;
}
outstream.close();
@@ -316,7 +326,6 @@ public class MinistroActivity extends Activity {
m_dialog.dismiss();
m_dialog = null;
}
- MinistroService.instance().refreshLibraries();
finishMe();
}
}
@@ -337,17 +346,17 @@ public class MinistroActivity extends Activity {
protected Double doInBackground(Boolean... update) {
double version=0.0;
try {
- ArrayList<Library> libraries = MinistroService.instance().getAvailableLibraries();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = null;
Element root = null;
if (update[0] || MinistroService.instance().getVersion()<0)
- version = downloadVersionXmlFile();
+ version = downloadVersionXmlFile(false);
else
version = MinistroService.instance().getVersion();
+ ArrayList<Library> libraries = MinistroService.instance().getAvailableLibraries();
ArrayList<String> notFoundModules = new ArrayList<String>();
if (m_modules!=null)
{
diff --git a/Ministro/src/eu/licentia/necessitas/ministro/MinistroService.java b/Ministro/src/eu/licentia/necessitas/ministro/MinistroService.java
index 59f0474..c418e1f 100644
--- a/Ministro/src/eu/licentia/necessitas/ministro/MinistroService.java
+++ b/Ministro/src/eu/licentia/necessitas/ministro/MinistroService.java
@@ -30,8 +30,14 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
import android.app.Service;
+import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
import android.os.IBinder;
import android.os.RemoteException;
@@ -44,6 +50,7 @@ public class MinistroService extends Service {
private static MinistroService m_instance = null;
private String m_environmentVariables = null;
private String m_applicationParams = null;
+
public static MinistroService instance()
{
return m_instance;
@@ -74,9 +81,50 @@ public class MinistroService extends Service {
}
}
+ class CheckForUpdates extends AsyncTask<Void, Void, Void>
+ {
+
+ @Override
+ protected void onPreExecute() {
+ if (m_version<MinistroActivity.downloadVersionXmlFile(true))
+ {
+ NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+
+ int icon = R.drawable.icon;
+ CharSequence tickerText = "New Qt libs found"; // ticker-text
+ long when = System.currentTimeMillis(); // notification time
+ Context context = getApplicationContext(); // application Context
+ CharSequence contentTitle = "Ministro update"; // expanded message title
+ CharSequence contentText = "New Qt libs has been found tap to update."; // expanded message text
+
+ Intent notificationIntent = new Intent(MinistroService.this, MinistroActivity.class);
+ PendingIntent contentIntent = PendingIntent.getActivity(MinistroService.this, 0, notificationIntent, 0);
+
+ // the next two lines initialize the Notification, using the configurations above
+ 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);
+ }catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ }
+
// this method reload all downloaded libraries
- synchronized ArrayList<Library> refreshLibraries()
+ synchronized ArrayList<Library> refreshLibraries(boolean checkCrc)
{
synchronized (this) {
try {
@@ -103,7 +151,7 @@ public class MinistroService extends Service {
File file=new File(m_qtLibsRootPath + lib.filePath);
if ((file).exists())
{
- if (!Library.checkCRC(file.getAbsolutePath(), lib.sha1))
+ if (checkCrc && !Library.checkCRC(file.getAbsolutePath(), lib.sha1))
file.delete();
else
m_downloadedLibraries.add(lib);
@@ -181,7 +229,16 @@ public class MinistroService extends Service {
public void onCreate() {
m_versionXmlFile = getFilesDir().getAbsolutePath()+"/version.xml";
m_qtLibsRootPath = getFilesDir().getAbsolutePath()+"/qt/";
- refreshLibraries();
+ refreshLibraries(true);
+ SharedPreferences preferences=getSharedPreferences("Ministro", MODE_PRIVATE);
+ long lastCheck = preferences.getLong("LASTCHECK",0);
+ if (System.currentTimeMillis()-lastCheck>24l*3600*100) // check once/day
+ {
+ SharedPreferences.Editor editor= preferences.edit();
+ editor.putLong("LASTCHECK",System.currentTimeMillis());
+ editor.commit();
+ new CheckForUpdates().execute((Void[])null);
+ }
super.onCreate();
}