package com.telerik.app.activities;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.telerik.app.utils.PostAdapter;
import com.telerik.app.R;
import com.telerik.everlive.sdk.core.result.RequestResult;
import com.telerik.everlive.sdk.core.result.RequestResultCallbackAction;
import java.util.ArrayList;
import com.telerik.app.model.BaseViewModel;
import com.telerik.app.model.Post;
public class ListActivity extends Activity {
private ArrayList<Post> posts;
private PostAdapter postsAdapter;
public ArrayList<Post> getPosts() {
return posts;
}
public ArrayAdapter<Post> getPostsAdapter() {
return postsAdapter;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
ListView listView = (ListView) findViewById(R.id.li_listView);
this.posts = new ArrayList<Post>();
this.postsAdapter = new PostAdapter(this, R.layout.listview_item_row, posts);
listView.setAdapter(postsAdapter);
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setBackgroundDrawable(new ColorDrawable(Color.argb(255, 52, 73, 94)));
this.loadPosts(listView, this);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Post selectedPost = (Post) parent.getAdapter().getItem(position);
if (selectedPost != null) {
BaseViewModel.getInstance().setSelectedPost(selectedPost);
Intent i = new Intent(getBaseContext(), DetailViewActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
}
}
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent(this, LoginActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
private void loadPosts(final ListView target, final ListActivity listActivity) {
BaseViewModel.EverliveAPP.workWith().
data(Post.class).
getAll().
executeAsync(new RequestResultCallbackAction<ArrayList<Post>>() {
@Override
public void invoke(RequestResult<ArrayList<Post>> requestResult) {
if (requestResult.getSuccess()) {
listActivity.getPosts().clear();
for (Post post : requestResult.getValue()) {
listActivity.getPosts().add(post);
}
target.post(new Runnable() {
@Override
public void run() {
listActivity.getPostsAdapter().notifyDataSetChanged();
}
});
} else {
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
if (isFinishing()) {
BaseViewModel.EverliveAPP.workWith().authentication().logout().executeAsync(null);
BaseViewModel.getInstance().setLoggedUser(null);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.list, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add : {
Intent i = new Intent(this, CreateNewPostActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
}
default : return super.onOptionsItemSelected(item);
}
}
}