Import GingerCal 1.0 source
This commit is contained in:
commit
01f49852ab
116 files changed
+5079
No files matched your search
@@ -0,0 +1,64 @@
|
||||
package org.gingercal;
|
||||
|
||||
import android.app.IntentService;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
/** Runs a sync on a worker thread and broadcasts the outcome to whatever screen is open. */
|
||||
public class SyncService extends IntentService {
|
||||
public static final String STATE = "org.gingercal.SYNC_STATE";
|
||||
public static volatile boolean running;
|
||||
|
||||
public SyncService() {
|
||||
super("GingerCalSync");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onHandleIntent(Intent intent) {
|
||||
boolean manual = intent != null && intent.getBooleanExtra("manual", false);
|
||||
boolean force = intent != null && intent.getBooleanExtra("force", false);
|
||||
SharedPreferences p = App.prefs(this);
|
||||
Dav dav = null;
|
||||
try {
|
||||
if (!App.configured(this)) return;
|
||||
if (!manual && !App.online(this)) return;
|
||||
running = true;
|
||||
send("start", null, null);
|
||||
dav = App.dav(this);
|
||||
long now = System.currentTimeMillis();
|
||||
Syncer.Result r = Syncer.sync(dav, Db.get(this), now, 1, App.ahead(this), force);
|
||||
p.edit().putLong("lastsync", now).putString("status", r.summary()).putBoolean("error", false).commit();
|
||||
send("done", r.summary(), null);
|
||||
} catch (DavException.UntrustedCert u) {
|
||||
p.edit().putString("status", u.getMessage()).putBoolean("error", true).commit();
|
||||
send("error", u.getMessage(), u);
|
||||
} catch (Throwable t) {
|
||||
String msg = App.describe(t);
|
||||
p.edit().putString("status", msg).putBoolean("error", true).commit();
|
||||
send("error", msg, null);
|
||||
} finally {
|
||||
running = false;
|
||||
if (dav != null) dav.close();
|
||||
try {
|
||||
Reminders.schedule(this);
|
||||
} catch (RuntimeException ignored) {
|
||||
}
|
||||
AlarmReceiver.release();
|
||||
}
|
||||
}
|
||||
|
||||
void send(String state, String msg, DavException.UntrustedCert u) {
|
||||
Intent b = new Intent(STATE);
|
||||
b.setPackage(getPackageName());
|
||||
b.putExtra("state", state);
|
||||
if (msg != null) b.putExtra("msg", msg);
|
||||
if (u != null) {
|
||||
b.putExtra("fp", u.fingerprint);
|
||||
b.putExtra("subject", u.subject);
|
||||
b.putExtra("issuer", u.issuer);
|
||||
b.putExtra("expires", u.expires);
|
||||
b.putExtra("mismatch", u.pinMismatch);
|
||||
}
|
||||
sendBroadcast(b);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user