package com.gettingmobile.google.reader.sync;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
class CallbackHandler extends Handler {
private static final int PROGRESS_UPDATE = 1;
private static final int SYNC_FINISHED = 2;
private static final String DATAKEY_ERROR = "error";
private static final String DATAKEY_UNREAD_COUNT = "unreadCount";
private static final String DATAKEY_NEW_UNREAD_COUNT = "newUnreadCount";
private static final String DATAKEY_SKIP_COUNT = "skipCount";
public void sendProgressUpdate(SyncCallback callback, int progress, int max) {
if (callback != null) {
sendMessage(obtainMessage(PROGRESS_UPDATE, progress, max, callback));
}
}
public void sendSyncFinished(SyncCallback callback, SyncException error,
int unreadCount, int newUnreadCount, int skipCount) {
Log.d(AbstractSynchronizer.LOG_TAG, "Sync finished called.");
if (callback != null) {
final Message msg = obtainMessage(SYNC_FINISHED, callback);
msg.getData().putInt(DATAKEY_UNREAD_COUNT, unreadCount);
msg.getData().putInt(DATAKEY_NEW_UNREAD_COUNT, newUnreadCount);
msg.getData().putInt(DATAKEY_SKIP_COUNT, skipCount);
msg.getData().putSerializable(DATAKEY_ERROR, error);
sendMessage(msg);
}
}
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case PROGRESS_UPDATE:
((SyncCallback) msg.obj).onProgressUpdate(msg.arg1, msg.arg2);
break;
case SYNC_FINISHED:
((SyncCallback) msg.obj).onSyncFinished(
(SyncException) msg.getData().getSerializable(DATAKEY_ERROR),
msg.getData().getInt(DATAKEY_UNREAD_COUNT),
msg.getData().getInt(DATAKEY_NEW_UNREAD_COUNT),
msg.getData().getInt(DATAKEY_SKIP_COUNT));
break;
}
super.handleMessage(msg);
}
}