package it.demo.twitterlike.android.ui;
import it.demo.twitterlike.android.domain.InternalMessage;
import it.demo.twitterlike.android.domain.InternalUserProfile;
import it.demo.twitterlike.android.tasks.MessageListTask;
import it.demo.twitterlike.android.ui.adapters.MessageListAdapter;
import it.demo.twitterlike.android.utils.UserUtils;
import java.util.ArrayList;
import java.util.Collection;
import org.springframework.hateoas.Link;
import android.app.ActionBar;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import com.telly.groundy.Groundy;
import com.telly.groundy.annotations.OnSuccess;
import com.telly.groundy.annotations.Param;
public class UserDetailsActivity extends AbstractAsyncActivity {
private static final String EXTRA_USERPROFILE_PARAMETER = "userprofile";
private MessageListAdapter adapter;
private View noMessagePresentsView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_userdetails);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Intent intent = getIntent();
InternalUserProfile userProfile = (InternalUserProfile) intent
.getSerializableExtra(EXTRA_USERPROFILE_PARAMETER);
actionBar.setTitle(UserUtils.getUserFullName(userProfile.getUser()));
if (adapter == null) {
adapter = new MessageListAdapter(this,
new ArrayList<InternalMessage>());
}
noMessagePresentsView = findViewById(R.id.noMessagesPresentTextView);
ListView listView = (ListView) findViewById(android.R.id.list);
listView.setAdapter(adapter);
requestUpdate(userProfile.getMessages(), true);
}
public void requestUpdate(Link link, boolean showProgressBar) {
if (showProgressBar) {
showProgressDialog("Message Loading");
}
Groundy.create(MessageListTask.class).callback(this)
.arg(MessageListTask.ARGS_LINK, link.getHref())
.callbackManager(callbacksManager).queueUsing(this);
}
@OnSuccess({ MessageListTask.class })
public void updateResultList(
@Param(MessageListTask.MESSAGE_LIST) Collection<InternalMessage> result) {
dismissProgressDialog();
adapter.clear();
if (result != null) {
adapter.addAll(result);
}
adapter.notifyDataSetChanged();
noMessagePresentsView.setVisibility(result == null
|| result.size() <= 0 ? View.VISIBLE : View.GONE);
}
public static void show(Context context, InternalUserProfile userProfile) {
final Intent intent = new Intent(context, UserDetailsActivity.class);
intent.putExtra(EXTRA_USERPROFILE_PARAMETER, userProfile);
context.startActivity(intent);
}
}