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){ } } }