1// Copyright (C) 2014 Google Inc.
2
3package com.android.mail.ui;
4
5import android.app.LoaderManager;
6import android.content.Context;
7import android.content.Loader;
8import android.net.Uri;
9import android.os.Bundle;
10
11import com.android.mail.content.CursorCreator;
12import com.android.mail.content.ObjectCursor;
13import com.android.mail.content.ObjectCursorLoader;
14import com.android.mail.providers.Account;
15import com.android.mail.providers.UIProvider;
16
17/**
18 * Callbacks for loading an account cursor.
19 */
20public class AccountLoadCallbacks implements LoaderManager.LoaderCallbacks<ObjectCursor<Account>> {
21
22    public interface AccountLoadCallbackListener {
23        void onAccountLoadCallbackFinished(ObjectCursor<Account> data);
24    }
25
26    private final Context mContext;
27    private final Uri mAccountUri;
28    private final AccountLoadCallbackListener mAccountLoadCallbackListener;
29
30    public AccountLoadCallbacks(Context context, Uri accountUri,
31                                AccountLoadCallbackListener accountLoadCallbackListener) {
32        mContext = context;
33        mAccountUri = accountUri;
34        mAccountLoadCallbackListener = accountLoadCallbackListener;
35    }
36
37    @Override
38    public Loader<ObjectCursor<Account>> onCreateLoader(int id, Bundle args) {
39        final String[] projection = UIProvider.ACCOUNTS_PROJECTION;
40        final CursorCreator<Account> factory = Account.FACTORY;
41        return new ObjectCursorLoader<Account>(
42                mContext, mAccountUri, projection, factory);
43    }
44
45    @Override
46    public void onLoadFinished(Loader<ObjectCursor<Account>> loader,
47            ObjectCursor<Account> data) {
48        mAccountLoadCallbackListener.onAccountLoadCallbackFinished(data);
49    }
50
51    @Override
52    public void onLoaderReset(Loader<ObjectCursor<Account>> loader) {
53    }
54}
55