package org.openintents.shopping.ui; import android.content.ContentValues; import android.content.Context; import android.net.Uri; import android.view.View; import org.openintents.shopping.R; import org.openintents.shopping.library.provider.ShoppingContract; import org.openintents.shopping.ui.widget.ShoppingItemsView; public class SnackbarUndoSingleItemStatusOperation extends SnackbarUndoOperation { /** * */ private final ShoppingItemsView mShoppingItemsView; private Context mContext; private long mOldStatus; private long mNewStatus; private String mItemName; private String mContainsId; public SnackbarUndoSingleItemStatusOperation(ShoppingItemsView shoppingItemsView, Context context, String containsId, String name, long old_status, long new_status, int type, boolean batch) { super(1, type, batch); mShoppingItemsView = shoppingItemsView; mContext = context; mContainsId = containsId; mItemName = name; mOldStatus = old_status; mNewStatus = new_status; } @Override public String getDescription(Context context) { return getSingularDescription(context); } @Override public String getSingularDescription(Context context) { int resId; if (mShoppingItemsView.mMode == ShoppingActivity.MODE_ADD_ITEMS) { if (mNewStatus == ShoppingContract.Status.WANT_TO_BUY) { resId = R.string.undoable_added_item; } else { resId = R.string.undoable_removed_item; } } else { if (mNewStatus == ShoppingContract.Status.WANT_TO_BUY) { resId = R.string.undoable_unmarked_item; } else { resId = R.string.undoable_marked_item; } } return String.format(context.getResources().getString(resId), mItemName); } @Override public void onClick(View view) { ContentValues values = new ContentValues(); values.put(ShoppingContract.Contains.STATUS, mOldStatus); mContext.getContentResolver().update( Uri.withAppendedPath(ShoppingContract.Contains.CONTENT_URI, mContainsId), values, null, null ); mShoppingItemsView.requery(); mShoppingItemsView.invalidate(); } }