/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; import com.galaxy.meetup.client.android.R; import com.galaxy.meetup.client.android.service.EsService; /** * * @author sihai * */ public abstract class EsFragment extends Fragment { protected Integer mNewerReqId; protected Integer mOlderReqId; private boolean mPaused; private boolean mRestoredFragment; private final Handler mHandler = new Handler() { public final void handleMessage(Message message) { if(message.what == 0) doShowEmptyViewProgressDelayed(); } }; public EsFragment() { } private void doShowEmptyViewProgress(View view) { if(isEmpty()) { View view1 = view.findViewById(0x1020004); view1.setVisibility(0); view1.findViewById(R.id.list_empty_text).setVisibility(8); view1.findViewById(R.id.list_empty_progress).setVisibility(0); } } private void removeProgressViewMessages() { mHandler.removeMessages(0); } protected static void setupEmptyView(View view, int i) { ((TextView)view.findViewById(R.id.list_empty_text)).setText(i); } protected final void doShowEmptyViewProgressDelayed() { if(isAdded() && !mPaused) { View view = getView(); if(view != null) doShowEmptyViewProgress(view); } } protected abstract boolean isEmpty(); public void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) { mRestoredFragment = true; if(bundle.containsKey("n_pending_req")) mNewerReqId = Integer.valueOf(bundle.getInt("n_pending_req")); if(bundle.containsKey("o_pending_req")) mOlderReqId = Integer.valueOf(bundle.getInt("o_pending_req")); } } public View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle, int i) { return layoutinflater.inflate(i, viewgroup, false); } public void onPause() { super.onPause(); mPaused = true; } public void onResume() { super.onResume(); Integer integer = mNewerReqId; boolean flag = false; if(integer != null) if(EsService.isRequestPending(mNewerReqId.intValue())) { boolean flag1 = isEmpty(); flag = false; if(flag1) showEmptyViewProgress(getView()); } else { mNewerReqId = null; flag = true; } if(mOlderReqId != null) if(EsService.isRequestPending(mOlderReqId.intValue())) { if(isEmpty()) showEmptyViewProgress(getView()); } else { mOlderReqId = null; flag = true; } if(flag && mNewerReqId == null && mOlderReqId == null) { getView(); if(isEmpty()) showEmptyView(getView()); } mPaused = false; } public void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); if(mNewerReqId != null) bundle.putInt("n_pending_req", mNewerReqId.intValue()); if(mOlderReqId != null) bundle.putInt("o_pending_req", mOlderReqId.intValue()); } protected final void showContent(View view) { removeProgressViewMessages(); view.findViewById(0x1020004).setVisibility(8); } protected final void showEmptyView(View view) { removeProgressViewMessages(); if(isEmpty()) { View view1 = view.findViewById(0x1020004); view1.setVisibility(0); view1.findViewById(R.id.list_empty_text).setVisibility(0); view1.findViewById(R.id.list_empty_progress).setVisibility(8); } } protected final void showEmptyViewProgress(View view) { if(mRestoredFragment) { if(!mHandler.hasMessages(0) && isEmpty()) mHandler.sendEmptyMessageDelayed(0, 800L); } else { doShowEmptyViewProgress(view); } } protected final void showEmptyViewProgress(View view, String s) { if(isEmpty()) { ((TextView)view.findViewById(R.id.list_empty_progress_text)).setText(s); showEmptyViewProgress(view); } } protected void updateSpinner(ProgressBar progressbar) { if(progressbar != null) { byte byte0; if(mNewerReqId == null && mOlderReqId == null) byte0 = 8; else byte0 = 0; progressbar.setVisibility(byte0); } } }