package com.bennyguitar.onions_android.Fragments; import android.accounts.Account; import android.animation.ObjectAnimator; import android.app.FragmentManager; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.bennyguitar.onions_android.MainActivity; import com.bennyguitar.onions_android.Session.OCSession; import com.bennyguitar.onions_android.Objects.Onion; import com.bennyguitar.onions_android.Adapters.OnionsListAdapter; import com.bennyguitar.onions_android.R; import com.bennyguitar.onions_android.Utilities.UIHelpers; /** * Created by BenG on 6/1/14. */ public class ShowOnionsFragment extends OnionFragment { // Properties TextView usernameTextView; Button logoutButton; Button createButton; ListView onionsListView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Create the View View V = newOnionFragment(R.layout.fragment_show_onions, inflater, container); // Build UI buildUI(V); // Set Adapter setOnionsAdapter(); // Load Onions loadOnions(); // Return the View return V; } // UI public void buildUI(View V) { // TextView usernameTextView = (TextView)V.findViewById(R.id.usernameTextView); if (usernameTextView != null) { usernameTextView.setText(OCSession.mainSession.Username); } usernameTextView.setOnClickListener(didClickAccount); // List View onionsListView = (ListView)V.findViewById(R.id.onionsListView); onionsListView.setBackgroundColor(Color.WHITE); onionsListView.setOnItemClickListener(selectOnionListener); // Buttons logoutButton = (Button)V.findViewById(R.id.logoutButton); createButton = (Button)V.findViewById(R.id.createOnionButton); logoutButton.setOnClickListener(didClickLogout); createButton.setOnClickListener(didClickCreate); setUIEnabled(false); } private void setUIEnabled(boolean enabled) { onionsListView.setAlpha(enabled ? 1.0f : 0.5f); UIHelpers.styleOnionButton(logoutButton, enabled); UIHelpers.styleOnionButton(createButton, enabled); } private void createList() { setOnionsAdapter(); setUIEnabled(true); } private void animateList() { ObjectAnimator animator = new ObjectAnimator(); animator.ofFloat(onionsListView, "alpha", 1f); animator.setDuration(200); animator.start(); } // Load Onions Handler.Callback loadOnionsCallback = new Handler.Callback() { @Override public boolean handleMessage(Message message) { boolean didLoadOnions = message.arg1 != 0; if (didLoadOnions) { decryptOnions(); } return true; } }; private void loadOnions() { if (OCSession.mainSession.Onions != null) { createList(); } else { OCSession.mainSession.loadOnionsFromParse(loadOnionsCallback); } } // Decrypt Onions Handler.Callback decryptOnionsCallback = new Handler.Callback() { @Override public boolean handleMessage(Message message) { boolean didDecryptOnions = message.arg1 != 0; if (didDecryptOnions) { createList(); } return true; } }; private void decryptOnions() { OCSession.mainSession.decryptOnions(decryptOnionsCallback); } // Button Click Handlers View.OnClickListener didClickLogout = new View.OnClickListener() { @Override public void onClick(View view) { // Pop back to Root, clear session MainActivity activity = (MainActivity)getActivity(); activity.goBack(); } }; View.OnClickListener didClickCreate = new View.OnClickListener() { @Override public void onClick(View view) { launchToOnionDetail(null); } }; View.OnClickListener didClickAccount = new View.OnClickListener() { @Override public void onClick(View view) { AccountInfoFragment fragment = new AccountInfoFragment(); MainActivity activity = (MainActivity)getActivity(); activity.animateToFragment(fragment, "AccountInfo"); } }; // ListView ListView.OnItemClickListener selectOnionListener = new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (OCSession.mainSession.Onions != null) { // Go to OnionDetail fragment Onion onion = (OCSession.mainSession.Onions.size() == 0) ? null : (Onion)OCSession.mainSession.Onions.get(position); launchToOnionDetail(onion); } } }; public void setOnionsAdapter() { OnionsListAdapter adapter = new OnionsListAdapter(getActivity(), R.layout.cell_onion, OCSession.mainSession.Onions); onionsListView.setAdapter(adapter); adapter.notifyDataSetChanged(); } // Launch to Onion Detail private void launchToOnionDetail(Onion onion) { OnionDetailFragment fragment = OnionDetailFragment.fragmentWithOnion(onion); MainActivity activity = (MainActivity)getActivity(); activity.animateToFragment(fragment, "Detail"); } }