1fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardpackage com.android.gallery3d.filtershow.data; 2fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 3fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport android.os.Handler; 4fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport android.os.HandlerThread; 5fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport android.os.Message; 6fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport com.android.gallery3d.R; 7fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport com.android.gallery3d.filtershow.FilterShowActivity; 8fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport com.android.gallery3d.filtershow.filters.FilterUserPresetRepresentation; 9fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport com.android.gallery3d.filtershow.pipeline.ImagePreset; 10fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 11fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardimport java.util.ArrayList; 12fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 13fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroardpublic class UserPresetsManager implements Handler.Callback { 14fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 15fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private static final String LOGTAG = "UserPresetsManager"; 16fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 17fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private FilterShowActivity mActivity; 18fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private HandlerThread mHandlerThread = null; 19fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private Handler mProcessingHandler = null; 20fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private FilterStackSource mUserPresets; 21fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 22fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private static final int LOAD = 1; 23fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private static final int LOAD_RESULT = 2; 24fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private static final int SAVE = 3; 25fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private static final int DELETE = 4; 26fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private static final int UPDATE = 5; 27fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 28fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private ArrayList<FilterUserPresetRepresentation> mRepresentations; 29fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 30fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private final Handler mResultHandler = new Handler() { 31fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard @Override 32fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public void handleMessage(Message msg) { 33fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard switch (msg.what) { 34fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard case LOAD_RESULT: 35fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard resultLoad(msg); 36fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard break; 37fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 38fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 39fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard }; 40fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 41fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard @Override 42fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public boolean handleMessage(Message msg) { 43fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard switch (msg.what) { 44fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard case LOAD: 45fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processLoad(); 46fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard return true; 47fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard case SAVE: 48fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processSave(msg); 49fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard return true; 50fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard case DELETE: 51fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processDelete(msg); 52fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard return true; 53fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard case UPDATE: 54fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processUpdate(msg); 55fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard return true; 56fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 57fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard return false; 58fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 59fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 60fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public UserPresetsManager(FilterShowActivity context) { 61fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mActivity = context; 62fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mHandlerThread = new HandlerThread(LOGTAG, 63fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard android.os.Process.THREAD_PRIORITY_BACKGROUND); 64fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mHandlerThread.start(); 65fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mProcessingHandler = new Handler(mHandlerThread.getLooper(), this); 66fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mUserPresets = new FilterStackSource(mActivity); 67fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mUserPresets.open(); 68fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 69fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 70fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public ArrayList<FilterUserPresetRepresentation> getRepresentations() { 71fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard return mRepresentations; 72fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 73fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 74fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public void load() { 75fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard Message msg = mProcessingHandler.obtainMessage(LOAD); 76fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mProcessingHandler.sendMessage(msg); 77fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 78fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 79fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public void close() { 80fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mUserPresets.close(); 81fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mHandlerThread.quit(); 82fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 83fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 84fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard static class SaveOperation { 85fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard String json; 86fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard String name; 87fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 88fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 890a24e52185c4e88dd52b8e072cf7cd1d04f74b0anicolasroard public void save(ImagePreset preset, String name) { 90fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard Message msg = mProcessingHandler.obtainMessage(SAVE); 91fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard SaveOperation op = new SaveOperation(); 928a0072e519157b976d7d1fd34ca2aa1c849a983bJohn Hoford op.json = preset.getJsonString(ImagePreset.JASON_SAVED); 930a24e52185c4e88dd52b8e072cf7cd1d04f74b0anicolasroard op.name = name; 94fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard msg.obj = op; 95fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mProcessingHandler.sendMessage(msg); 96fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 97fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 98fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public void delete(int id) { 99fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard Message msg = mProcessingHandler.obtainMessage(DELETE); 100fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard msg.arg1 = id; 101fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mProcessingHandler.sendMessage(msg); 102fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 103fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 104fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard static class UpdateOperation { 105fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard int id; 106fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard String name; 107fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 108fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 109fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard public void update(FilterUserPresetRepresentation representation) { 110fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard Message msg = mProcessingHandler.obtainMessage(UPDATE); 111fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard UpdateOperation op = new UpdateOperation(); 112fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard op.id = representation.getId(); 113fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard op.name = representation.getName(); 114fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard msg.obj = op; 115fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mProcessingHandler.sendMessage(msg); 116fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 117fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 118fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private void processLoad() { 119fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard ArrayList<FilterUserPresetRepresentation> list = mUserPresets.getAllUserPresets(); 120fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard Message msg = mResultHandler.obtainMessage(LOAD_RESULT); 121fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard msg.obj = list; 122fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mResultHandler.sendMessage(msg); 123fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 124fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 125fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private void resultLoad(Message msg) { 126fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mRepresentations = 127fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard (ArrayList<FilterUserPresetRepresentation>) msg.obj; 128fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mActivity.updateUserPresetsFromManager(); 129fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 130fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 131fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private void processSave(Message msg) { 132fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard SaveOperation op = (SaveOperation) msg.obj; 133fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mUserPresets.insertStack(op.name, op.json.getBytes()); 134fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processLoad(); 135fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 136fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 137fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private void processDelete(Message msg) { 138fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard int id = msg.arg1; 139fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mUserPresets.removeStack(id); 140fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processLoad(); 141fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 142fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 143fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard private void processUpdate(Message msg) { 144fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard UpdateOperation op = (UpdateOperation) msg.obj; 145fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard mUserPresets.updateStackName(op.id, op.name); 146fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard processLoad(); 147fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard } 148fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard 149fa474a198019851ecc3824a1dfbac94cd1928efcnicolasroard} 150