package org.wordpress.android.ui.prefs; import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.wordpress.android.R; import org.wordpress.android.WordPress; import org.wordpress.android.fluxc.Dispatcher; import org.wordpress.android.fluxc.model.SiteModel; import org.wordpress.android.fluxc.store.AccountStore; import org.wordpress.android.fluxc.store.SiteStore; import org.wordpress.android.fluxc.store.SiteStore.OnSiteDeleted; import org.wordpress.android.networking.ConnectionChangeReceiver; import org.wordpress.android.util.SiteUtils; import org.wordpress.android.util.StringUtils; import org.wordpress.android.util.ToastUtils; import javax.inject.Inject; import de.greenrobot.event.EventBus; /** * Activity for configuring blog specific settings. */ public class BlogPreferencesActivity extends AppCompatActivity { public static final int RESULT_BLOG_REMOVED = RESULT_FIRST_USER; private static final String KEY_SETTINGS_FRAGMENT = "settings-fragment"; @Inject AccountStore mAccountStore; @Inject SiteStore mSiteStore; @Inject Dispatcher mDispatcher; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((WordPress) getApplication()).component().inject(this); final SiteModel site; if (savedInstanceState == null) { site = (SiteModel) getIntent().getSerializableExtra(WordPress.SITE); } else { site = (SiteModel) savedInstanceState.getSerializable(WordPress.SITE); } if (site == null) { ToastUtils.showToast(this, R.string.blog_not_found, ToastUtils.Duration.SHORT); finish(); return; } ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setTitle(StringUtils.unescapeHTML(SiteUtils.getSiteNameOrHomeURL(site))); } FragmentManager fragmentManager = getFragmentManager(); Fragment siteSettingsFragment = fragmentManager.findFragmentByTag(KEY_SETTINGS_FRAGMENT); if (siteSettingsFragment == null) { siteSettingsFragment = new SiteSettingsFragment(); siteSettingsFragment.setArguments(getIntent().getExtras()); fragmentManager.beginTransaction() .replace(android.R.id.content, siteSettingsFragment, KEY_SETTINGS_FRAGMENT) .commit(); } } @Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); mDispatcher.register(this); } @Override protected void onStop() { mDispatcher.unregister(this); EventBus.getDefault().unregister(this); super.onStop(); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemID = item.getItemId(); if (itemID == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("unused") public void onEventMainThread(ConnectionChangeReceiver.ConnectionChangeEvent event) { SiteSettingsFragment siteSettingsFragment = getSettingsFragment(); if (siteSettingsFragment != null) { if (!event.isConnected()) { ToastUtils.showToast(this, getString(R.string.site_settings_disconnected_toast)); } siteSettingsFragment.setEditingEnabled(event.isConnected()); // TODO: add this back when delete blog is back //https://github.com/wordpress-mobile/WordPress-Android/commit/6a90e3fe46e24ee40abdc4a7f8f0db06f157900c // Checks for stats widgets that were synched with a blog that could be gone now. // StatsWidgetProvider.updateWidgetsOnLogout(this); } } @SuppressWarnings("unused") @Subscribe(threadMode = ThreadMode.MAIN) public void onSiteDeleted(OnSiteDeleted event) { SiteSettingsFragment siteSettingsFragment = getSettingsFragment(); if (siteSettingsFragment != null) { if (event.isError()) { siteSettingsFragment.handleDeleteSiteError(event.error); return; } siteSettingsFragment.handleSiteDeleted(); setResult(RESULT_BLOG_REMOVED); finish(); } } private SiteSettingsFragment getSettingsFragment() { FragmentManager fragmentManager = getFragmentManager(); return (SiteSettingsFragment) fragmentManager.findFragmentByTag(KEY_SETTINGS_FRAGMENT); } }