package com.geel9.facepunch.activities;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Html;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import com.geel9.facepunch.APISession.FPPM;
import com.geel9.facepunch.APISession.FPThread;
import com.geel9.facepunch.APISession.GetPMCallback;
import com.geel9.facepunch.R.id;
import com.geel9.facepunch.R.layout;
import com.geel9.facepunch.APISession;
import com.geel9.facepunch.R;
public class PMsActivity extends FPActivity {
private class State{
FPPM[] pms;
int page;
int scrollY;
}
private int currentPage = -1;
private FPPM[] pms;
@Override
public void OnLogout(){
finish();
super.OnLogout();
}
@Override
public void OnLogin(){
loadPage(1);
super.OnLogin();
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.pmsview);
final State data = (State)getLastCustomNonConfigurationInstance();
if ( data != null )
{
populateList( data.pms );
currentPage = data.page;
final ScrollView scroller = (ScrollView)findViewById( R.id.scrollViewPMs );
scroller.post( new Runnable()
{
public void run()
{
scroller.scrollTo( 0, data.scrollY );
}
} );
return;
}
CheckLoginState();
loadPage(1);
}
@Override
public Object onRetainCustomNonConfigurationInstance()
{
State data = new State();
data.pms = pms;
data.scrollY = ( (ScrollView)findViewById( R.id.scrollViewPMs ) ).getScrollY();
data.page = currentPage;
return data;
}
private void loadPage(int page){
// Show loading spinner
LayoutInflater inflater = (LayoutInflater)getSystemService( Context.LAYOUT_INFLATER_SERVICE );
currentPage = page;
final LinearLayout pmList = (LinearLayout)findViewById( R.id.pmList );
pmList.removeAllViews();
final ImageView loaderImage = (ImageView)inflater.inflate( R.layout.loadingspinner, pmList, false );
pmList.removeAllViews();
applyLoadingIcon( loaderImage );
pmList.addView( loaderImage );
pmList.setGravity( Gravity.CENTER_VERTICAL );
api.listPMs(this, page, new GetPMCallback(){
public void onResult(boolean success, FPPM[] pms) {
pmList.removeView(loaderImage);
pmList.setGravity(Gravity.NO_GRAVITY);
if(success && pms != null && pms.length > 0){
populateList(pms);
}
else{
Toast.makeText(PMsActivity.this, "Could not load PMs.", Toast.LENGTH_SHORT).show();
}
}
});
}
private void populateList(FPPM[] pms){
this.pms = pms;
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout pmList = (LinearLayout)findViewById(R.id.pmList);
final ScrollView scroller = (ScrollView)findViewById(R.id.scrollViewPMs);
//Populate list with results
boolean switchColor = false;
try{
for(final FPPM pm : pms){
switchColor = !switchColor;
//Create the thread view
final LinearLayout pmItem = (LinearLayout)inflater.inflate(R.layout.listpm, pmList, false);
((TextView)pmItem.findViewById(R.id.pmTitle)).setText(Html.fromHtml(pm.getTitle()));
((TextView)pmItem.findViewById(R.id.pmAuthor)).setText(Html.fromHtml(pm.getAuthor()));
((TextView)pmItem.findViewById(R.id.pmDate)).setText(Html.fromHtml(pm.getDate()));
((TextView)pmItem.findViewById(R.id.pmTime)).setText(Html.fromHtml(pm.getTime()));
pmItem.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
Intent i = new Intent().setClass(PMsActivity.this, PMActivity.class);
i.putExtra("title", pm.getTitle());
i.putExtra("id", pm.getId());
startActivity(i);
}
});
//Android color format: (alpha << 24) | (r << 16) | (g << 8) | b
int backColor = Color.WHITE;
if(switchColor) backColor = (255 << 24) | (240 << 16) | (240 << 8) | 240;
pmItem.setBackgroundColor(backColor);
int readColor = (255 << 24) | (156 << 16) | (156 << 8) | 156;
if(pm.getRead()){
((TextView)pmItem.findViewById(R.id.pmTitle)).setTextColor(readColor);
}
/*int resId = getResources().getIdentifier( "drawable/" + pm.getIcon().replace(".png", ""), "drawable", getPackageName() );
ImageView iconView = (ImageView)pmItem.findViewById( R.id.pmIcon );
if ( resId != 0 )
iconView.setImageResource( resId );
else
iconView.setVisibility( View.INVISIBLE );*/
pmList.addView(pmItem);
}
}catch(Exception e){
}
}
}