package com.orgzly.android.sync; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import com.orgzly.android.AppIntent; public class SyncStatus { private static final String SHARED_PREF_NAME = "sync-service"; private static final String EXTRA_TYPE = "type"; private static final String EXTRA_MESSAGE = "message"; private static final String EXTRA_TOTAL_BOOKS = "total_books"; private static final String EXTRA_CURRENT_BOOK = "current_book"; public Type type = Type.NOT_RUNNING; public String message = null; public int totalBooks = 0; public int currentBook = 0; public static SyncStatus fromIntent(Intent intent) { SyncStatus status = new SyncStatus(); status.type = SyncStatus.Type.valueOf(intent.getStringExtra(SyncStatus.EXTRA_TYPE)); status.message = intent.getStringExtra(SyncStatus.EXTRA_MESSAGE); status.currentBook = intent.getIntExtra(SyncStatus.EXTRA_CURRENT_BOOK, 0); status.totalBooks = intent.getIntExtra(SyncStatus.EXTRA_TOTAL_BOOKS, 0); return status; } public void set(Type type, String message, int currentBook, int totalBooks) { this.type = type; this.message = message; this.currentBook = currentBook; this.totalBooks = totalBooks; } public Intent intent() { return new Intent(AppIntent.ACTION_SYNC_STATUS) .putExtra(SyncStatus.EXTRA_TYPE, type.name()) .putExtra(SyncStatus.EXTRA_MESSAGE, message) .putExtra(SyncStatus.EXTRA_TOTAL_BOOKS, totalBooks) .putExtra(SyncStatus.EXTRA_CURRENT_BOOK, currentBook); } public void saveToPreferences(Context context) { context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE) .edit() .putString(EXTRA_TYPE, type.toString()) .putString(EXTRA_MESSAGE, message) .putInt(EXTRA_CURRENT_BOOK, currentBook) .putInt(EXTRA_TOTAL_BOOKS, totalBooks) .apply(); } public void loadFromPreferences(Context context) { SharedPreferences pref = context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE); this.type = Type.valueOf(pref.getString(EXTRA_TYPE, Type.NOT_RUNNING.toString())); this.message = pref.getString(EXTRA_MESSAGE, null); this.currentBook = pref.getInt(EXTRA_CURRENT_BOOK, 0); this.totalBooks = pref.getInt(EXTRA_TOTAL_BOOKS, 0); } public enum Type { NOT_RUNNING, STARTING, CANCELING, BOOKS_COLLECTED, BOOK_STARTED, BOOK_ENDED, NO_STORAGE_PERMISSION, CANCELED, FINISHED, FAILED } }