package org.commcare.activities;
import android.app.ListActivity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import org.commcare.CommCareApplication;
import org.commcare.dalvik.R;
import org.commcare.views.notifications.NotificationMessage;
import java.text.DateFormat;
import java.util.ArrayList;
/**
* An activity to display messages for the user about something that
* happened which might not be easy to explain.
*
* @author ctsims
*/
public class MessageActivity extends ListActivity {
private ArrayList<NotificationMessage> messages;
private static final String KEY_MESSAGES = "ma_key_messages";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.containsKey(KEY_MESSAGES)) {
messages = savedInstanceState.getParcelableArrayList(KEY_MESSAGES);
} else {
messages = CommCareApplication.notificationManager().purgeNotifications();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList(KEY_MESSAGES, messages);
}
@Override
protected void onResume() {
super.onResume();
this.setContentView(R.layout.screen_messages);
this.setListAdapter(new ArrayAdapter<NotificationMessage>(this, R.layout.layout_note_msg, messages) {
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
View messageView = convertView;
if (convertView == null) {
messageView = LayoutInflater.from(MessageActivity.this).inflate(R.layout.layout_note_msg, parent, false);
}
NotificationMessage msg = this.getItem(position);
TextView title = (TextView)messageView.findViewById(R.id.layout_note_msg_title);
TextView body = (TextView)messageView.findViewById(R.id.layout_note_msg_body);
TextView date = (TextView)messageView.findViewById(R.id.layout_note_msg_date);
TextView action = (TextView)messageView.findViewById(R.id.layout_note_msg_action);
title.setText(msg.getTitle());
body.setText(msg.getDetails());
date.setText(DateUtils.formatSameDayTime(msg.getDate().getTime(), System.currentTimeMillis(), DateFormat.DEFAULT, DateFormat.DEFAULT));
String actionText = msg.getAction();
if (actionText == null) {
action.setVisibility(View.GONE);
} else {
action.setText(actionText);
}
return messageView;
}
@Override
public boolean isEnabled(int position) {
return false;
}
});
}
}