package com.athena.asm; import android.content.res.Configuration; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import com.actionbarsherlock.app.SherlockActivity; import com.athena.asm.Adapter.ReadMailAdapter; import com.athena.asm.data.Mail; import com.athena.asm.util.SmthSupport; import com.athena.asm.util.StringUtility; import com.athena.asm.util.task.LoadMailContentTask; import com.athena.asm.viewmodel.BaseViewModel; import com.athena.asm.viewmodel.MailViewModel; public class ReadMailActivity extends SherlockActivity implements BaseViewModel.OnViewModelChangObserver { public SmthSupport m_smthSupport; private LayoutInflater m_inflater; private MailViewModel m_viewModel; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(aSMApplication.THEME); super.onCreate(savedInstanceState); setContentView(R.layout.post_list); m_inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); m_smthSupport = SmthSupport.getInstance(); aSMApplication application = (aSMApplication) getApplication(); m_viewModel = application.getMailViewModel(); m_viewModel.registerViewModelChangeObserver(this); boolean isNewMail = m_viewModel.tryUpdateCurrentMail((Mail) getIntent().getSerializableExtra( StringUtility.MAIL)); setTitle(m_viewModel.getCurrentMailTitle()); EditText pageNoEditText = (EditText) findViewById(R.id.edittext_page_no); pageNoEditText.setVisibility(View.GONE); Button firstButton = (Button) findViewById(R.id.btn_first_page); firstButton.setVisibility(View.GONE); Button lastButton = (Button) findViewById(R.id.btn_last_page); lastButton.setVisibility(View.GONE); Button preButton = (Button) findViewById(R.id.btn_pre_page); preButton.setVisibility(View.GONE); Button goButton = (Button) findViewById(R.id.btn_go_page); goButton.setVisibility(View.GONE); Button nextButton = (Button) findViewById(R.id.btn_next_page); nextButton.setVisibility(View.GONE); if (isNewMail) { LoadMailContentTask loadMailContentTask = new LoadMailContentTask(this, m_viewModel); loadMailContentTask.execute(); } else { loadMailContent(); } } @Override public void onConfigurationChanged(Configuration newConfig) { // do nothing to stop onCreated super.onConfigurationChanged(newConfig); } @Override public void onDestroy() { m_viewModel.unregisterViewModelChangeObserver(this); super.onDestroy(); } public void loadMailContent() { ListView listView = (ListView) findViewById(R.id.post_list); listView.setAdapter(new ReadMailAdapter(this, m_viewModel.getCurrentMail(), m_inflater)); } @Override public void onViewModelChange(BaseViewModel viewModel, String changedPropertyName, Object... params) { if (changedPropertyName.equals(MailViewModel.CURRENT_MAIL_CONTENT_PROPERTY_NAME)) { loadMailContent(); } } }