Caching tag images

pull/14/head
Andrew Shaw 13 years ago
parent ada52d90e1
commit ab8bfbeda6

@ -203,4 +203,9 @@ public final class TagData extends RemoteModel {
return getValue(DELETION_DATE) > 0;
}
public String getPictureHash() {
String s = getValue(TagData.NAME) + "" + getValue(TagData.CREATION_DATE);
return s;
}
}

@ -162,4 +162,8 @@ public class Update extends RemoteModel {
return CREATOR;
}
public String getPictureHash() {
String s = getValue(Update.TASK) + "" + getValue(Update.CREATION_DATE);
return s;
}
}

@ -42,6 +42,7 @@ import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.activity.ShortcutActivity;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.helper.ImageDiskCache;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.TagDataService;
@ -81,12 +82,14 @@ public class TagSettingsActivity extends FragmentActivity {
private EditText tagDescription;
private ToggleButton isSilent;
private Bitmap setBitmap;
private final ImageDiskCache imageCache;
private boolean isNewTag = false;
private boolean isDialog;
public TagSettingsActivity() {
DependencyInjectionService.getInstance().inject(this);
imageCache = ImageDiskCache.getInstance();
}
@Override
@ -170,11 +173,10 @@ public class TagSettingsActivity extends FragmentActivity {
isSilent.setChecked(tagData.getFlag(TagData.FLAGS, TagData.FLAG_SILENT));
if(actFmPreferenceService.isLoggedIn()) {
picture.setVisibility(View.VISIBLE);
findViewById(R.id.tag_silenced_container).setVisibility(View.VISIBLE);
}
picture.setDefaultImageResource(TagService.getDefaultImageIDForTag(tagData.getValue(TagData.NAME)));
picture.setDefaultImageResource(TagService.getDefaultImageIDForTag(tagData.getValue(TagData.NAME)));
picture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
@ -273,7 +275,7 @@ public class TagSettingsActivity extends FragmentActivity {
getString(R.string.actfm_TVA_login_to_share), R.string.actfm_EPA_login_button,
R.string.actfm_EPA_dont_share_button, android.R.drawable.ic_dialog_alert,
okListener, cancelListener);
Toast.makeText(this, R.string.tag_list_saved, Toast.LENGTH_LONG).show();
Toast.makeText(this, R.string.tag_list_saved, Toast.LENGTH_LONG).show();
return;
@ -314,7 +316,9 @@ public class TagSettingsActivity extends FragmentActivity {
public void run() {
actFmSyncService.pushTagDataOnSave(tagData, tagData.getMergedValues());
if(setBitmap != null && tagData.getValue(TagData.REMOTE_ID) > 0)
uploadTagPicture(setBitmap);
uploadTagPicture(setBitmap);
runOnUiThread(loadTag);
}
}).start();
@ -332,6 +336,18 @@ public class TagSettingsActivity extends FragmentActivity {
finish();
}
private void saveTagPictureLocally(Bitmap bitmap) {
if (bitmap == null) return;
try {
String tagPicture = tagData.getPictureHash();
imageCache.put(tagPicture, bitmap);
tagData.setValue(TagData.PICTURE, tagPicture);
}
catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void finish() {
finishWithAnimation(!isDialog);
@ -363,6 +379,17 @@ public class TagSettingsActivity extends FragmentActivity {
setTitle(getString(R.string.tag_settings_title, tagData.getValue(TagData.NAME)));
}
}
String tagImage = tagData.getValue(TagData.PICTURE);
if(!TextUtils.isEmpty(tagImage) && imageCache.contains(tagImage)) {
try {
picture.setDefaultImageBitmap(imageCache.get(tagImage));
} catch (IOException e) {
e.printStackTrace();
}
}
else {
picture.setUrl(tagImage);
}
picture.setUrl(tagData.getValue(TagData.PICTURE));
String peopleJson = tagData.getValue(TagData.MEMBERS);
@ -421,6 +448,7 @@ public class TagSettingsActivity extends FragmentActivity {
setBitmap = bitmap;
if(tagData.getValue(TagData.REMOTE_ID) > 0)
uploadTagPicture(bitmap);
saveTagPictureLocally(bitmap);
}
};
if (ActFmCameraModule.activityResult(this, requestCode, resultCode, data, callback)) {

@ -428,9 +428,6 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
}
private String getPictureHashForUpdate(Update u) {
return String.format("%s%s", u.getValue(Update.TASK), u.getValue(Update.CREATION_DATE)); //$NON-NLS-1$
}
private void addComment(String message, String actionCode, boolean usePicture) {
// Allow for users to just add picture
if (TextUtils.isEmpty(message) && usePicture) {
@ -448,7 +445,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
if (usePicture && pendingCommentPicture != null) {
update.setValue(Update.PICTURE, Update.PICTURE_LOADING);
try {
String updateString = getPictureHashForUpdate(update);
String updateString = update.getPictureHash();
imageCache.put(updateString, pendingCommentPicture);
update.setValue(Update.PICTURE, updateString);
}

@ -76,6 +76,7 @@
<EditText
android:id="@+id/tag_name"
style="@style/EditRow"
android:maxLines="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tag_label"

Loading…
Cancel
Save