package com.tomclaw.mandarin.core;
import android.content.ContentResolver;
import android.database.ContentObserver;
import com.tomclaw.mandarin.im.BuddyCursor;
import com.tomclaw.mandarin.util.Logger;
/**
* Created by solkin on 05/05/14.
*/
public abstract class BuddyObserver extends ContentObserver {
private ContentResolver contentResolver;
private int buddyDbId;
public BuddyObserver(ContentResolver contentResolver, int buddyDbId) {
super(null);
this.contentResolver = contentResolver;
this.buddyDbId = buddyDbId;
observe();
}
public void touch() {
onChange(true);
}
private void observe() {
contentResolver.registerContentObserver(Settings.BUDDY_RESOLVER_URI, true, this);
}
@Override
public void onChange(boolean selfChange) {
MainExecutor.execute(new Runnable() {
@Override
public void run() {
BuddyCursor buddyCursor = null;
try {
buddyCursor = QueryHelper.getBuddyCursor(contentResolver, buddyDbId);
onBuddyInfoChanged(buddyCursor);
} catch (Throwable ignored) {
// Sadly.
Logger.log("Unable to get buddy cursor in buddy observer", ignored);
} finally {
if (buddyCursor != null) {
buddyCursor.close();
}
}
}
});
}
public abstract void onBuddyInfoChanged(BuddyCursor buddyCursor);
public void stop() {
contentResolver.unregisterContentObserver(this);
}
}