package org.wordpress.android.ui.posts; import java.util.Map; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import com.justsystems.hpb.pad.R; import org.wordpress.android.WordPress; import org.wordpress.android.models.Blog; import org.wordpress.android.models.PostType; import org.wordpress.android.models.Postable; import org.wordpress.android.task.AbsDeleteTask; import org.wordpress.android.task.AbsShareUrlTask; import org.wordpress.android.ui.posts.EditCustomTypePostActivity; public final class CustomPostTypePostsActivity extends AbsListActivity { // Exists to distinguish pages from posts in menu drawer private String typeName; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); String typeLabel; if (intent != null) { this.typeName = intent.getStringExtra("type_name"); typeLabel = intent.getStringExtra("type_label"); if (typeLabel == null) { PostType postType = new PostType(WordPress.currentBlog.getId(), typeName); typeLabel = postType.getLabel(); } } else { throw new IllegalArgumentException(); } super.postType = POST_TYPE_CUSTOM; setTitle(typeLabel); } @Override protected Dialog onCreateDialog(int id) { loadingDialog = new ProgressDialog(this); if (id == ID_DIALOG_DELETING) { loadingDialog .setTitle(getResources().getText(R.string.delete_post)); loadingDialog.setMessage(getResources().getText( R.string.attempt_delete_post)); loadingDialog.setCancelable(false); return loadingDialog; } else if (id == ID_DIALOG_SHARE) { loadingDialog.setTitle(getString(R.string.share_url)); loadingDialog.setMessage(getResources().getText( R.string.attempting_fetch_url)); loadingDialog.setCancelable(false); return loadingDialog; } return super.onCreateDialog(id); } @Override void startActivity() { Intent i = new Intent(this, EditCustomTypePostActivity.class); i.putExtra("id", WordPress.currentBlog.getId()); i.putExtra("isNew", true); i.putExtra("type_name", typeName); startActivityForResult(i, ACTIVITY_EDIT_POST); } @Override AbsShareUrlTask getShareUrlTask() { return new ShareURLTask(this); } @Override AbsDeleteTask getDeleteTask() { return new DeletePostTask(this); } public String getPostType() { return typeName; } private static class ShareURLTask extends AbsShareUrlTask { public ShareURLTask(AbsListActivity activity) { super(activity); } @Override protected boolean isStatusPublish(Map<?, ?> contentHash) { return "publish".equals(contentHash.get("post_status").toString()); } @Override protected int getNotPublishedMessageId() { return R.string.post_not_published; } @Override protected String getMethod() { return "wp.getPost"; } @Override protected Object[] getParams(Postable post) { Object[] o = new Object[1]; o[0] = "post"; Object[] params = { WordPress.currentBlog.getId(), WordPress.currentBlog.getUsername(), WordPress.currentBlog.getPassword(), post.getPostId(), o }; return params; } } private static class DeletePostTask extends AbsDeleteTask { public DeletePostTask(AbsListActivity activity) { super(activity); } @Override protected int getDeletedMessageId() { return R.string.post_deleted; } @Override protected int getMessageWhatId() { return R.string.post; } @Override protected String getMethod() { return "wp.deletePost"; } @Override protected Object[] getParams(Postable post) { Blog blog = WordPress.currentBlog; Object[] postParams = { blog.getId(), blog.getUsername(), blog.getPassword(), post.getPostId() }; return postParams; } } }