package org.wordpress.android.ui.posts; import android.app.AlertDialog; import android.app.FragmentManager; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.MenuItem; import org.wordpress.android.R; import org.wordpress.android.WordPress; import org.wordpress.android.fluxc.model.SiteModel; import org.wordpress.android.fluxc.store.SiteStore; import org.wordpress.android.ui.ActivityId; import org.wordpress.android.ui.RequestCodes; import org.wordpress.android.util.ToastUtils; import javax.inject.Inject; public class PostsListActivity extends AppCompatActivity { public static final String EXTRA_VIEW_PAGES = "viewPages"; public static final String EXTRA_ERROR_MSG = "errorMessage"; private boolean mIsPage = false; private PostsListFragment mPostList; private SiteModel mSite; @Inject SiteStore mSiteStore; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((WordPress) getApplication()).component().inject(this); setContentView(R.layout.post_list_activity); mIsPage = getIntent().getBooleanExtra(EXTRA_VIEW_PAGES, false); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setTitle(getString(mIsPage ? R.string.pages : R.string.posts)); actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } FragmentManager fm = getFragmentManager(); if (savedInstanceState == null) { mSite = (SiteModel) getIntent().getSerializableExtra(WordPress.SITE); } else { mSite = (SiteModel) savedInstanceState.getSerializable(WordPress.SITE); } if (mSite == null) { ToastUtils.showToast(this, R.string.blog_not_found, ToastUtils.Duration.SHORT); finish(); return; } mPostList = (PostsListFragment) fm.findFragmentById(R.id.postList); showErrorDialogIfNeeded(getIntent().getExtras()); } @Override public void onResume() { super.onResume(); ActivityId.trackLastActivity(mIsPage ? ActivityId.PAGES : ActivityId.POSTS); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RequestCodes.EDIT_POST) { mPostList.handleEditPostResult(resultCode, data); } } /** * intent extras will contain error info if this activity was started from an * upload error notification */ private void showErrorDialogIfNeeded(Bundle extras) { if (extras == null || !extras.containsKey(EXTRA_ERROR_MSG) || isFinishing()) { return; } final String errorMessage = extras.getString(EXTRA_ERROR_MSG); if (TextUtils.isEmpty(errorMessage)) { return; } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getResources().getText(R.string.error)) .setMessage(errorMessage) .setPositiveButton(android.R.string.ok, null) .setCancelable(true); builder.create().show(); } public boolean isRefreshing() { return mPostList.isRefreshing(); } @Override public boolean onOptionsItemSelected(final MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable(WordPress.SITE, mSite); } }