diff options
author | BogDan Vatra <bog_dan_ro@yahoo.com> | 2011-04-25 16:37:01 +0300 |
---|---|---|
committer | BogDan Vatra <bog_dan_ro@yahoo.com> | 2011-04-25 16:37:01 +0300 |
commit | e8139669c71b81ad9f4f4a9a2438ce9d12bf6789 (patch) | |
tree | ce629e0aa27108303e91aeec4a1949f1fd9a5675 /Ministro | |
parent | 9b0a579a8a996f1db08f1f9864efc86cb805dfdd (diff) |
Switch to kde infrastructure
Check for updates once pre day
Diffstat (limited to 'Ministro')
-rw-r--r-- | Ministro/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | Ministro/src/eu/licentia/necessitas/ministro/MinistroActivity.java | 21 | ||||
-rw-r--r-- | Ministro/src/eu/licentia/necessitas/ministro/MinistroService.java | 63 |
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(); } |