ppamorim

Untitled

Jul 24th, 2014
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.65 KB | None | 0 0
  1. public class CamerasFragment extends Fragment implements
  2.         VejoAoVivoSyncAdapter.RefreshListener,
  3.         SwipeRefreshLayout.OnRefreshListener {
  4.  
  5.     public static final String TAG = "CamerasFragment";
  6.  
  7.     private Activity mActivity;
  8.     private RelativeLayout mContainerLoading;
  9.     private RelativeLayout mContainerError;
  10.  
  11.     private FreeFlowContainer mCameraList;
  12.     private VGridLayout grid;
  13.     private ListLayout custom;
  14.  
  15.     private CameraGridAdapter mAdapter;
  16.     private TheBestAdapter mTheBestAdapter;
  17.     private String type;
  18.     private OnListviewAction mCallback;
  19.  
  20.     private ArrayList<Camera> camera = new ArrayList<Camera>();
  21.     private ArrayList<TheBest> theBest = new ArrayList<TheBest>();
  22.  
  23.     private final Object mAttachingActivityLock = new Object();
  24.     private boolean syncVariable = false;
  25.  
  26.     private Point mSize;
  27.  
  28.     FreeFlowLayout[] layouts;
  29.     int currLayoutIndex = 0;
  30.  
  31.     private static class LazyHolder {
  32.         private static final CamerasFragment camerasFragment = new CamerasFragment();
  33.     }
  34.  
  35.     public static CamerasFragment getInstance() {
  36.         return LazyHolder.camerasFragment;
  37.     }
  38.  
  39.     @Override
  40.     public void onCreate(Bundle savedInstanceState) {
  41.         super.onCreate(savedInstanceState);
  42.  
  43.         Display display = getActivity().getWindowManager().getDefaultDisplay();
  44.         mSize = new Point();
  45.         display.getSize(mSize);
  46.  
  47.         //Our new layout
  48.         custom = new ListLayout();
  49.  
  50.         //Grid Layout
  51.         grid = new VGridLayout();
  52.         VGridLayout.LayoutParams params = new VGridLayout.LayoutParams(mSize.x/2, mSize.x/2);
  53.         grid.setLayoutParams(params);
  54.  
  55.         //Vertical Layout
  56.         VLayout vlayout = new VLayout();
  57.         VLayout.LayoutParams params2 = new VLayout.LayoutParams(mSize.x);
  58.         vlayout.setLayoutParams(params2);
  59.  
  60.         //HLayout
  61.         HLayout hlayout = new HLayout();
  62.         hlayout.setLayoutParams(new HLayout.LayoutParams(mSize.x));
  63.  
  64.         layouts = new FreeFlowLayout[]{custom, grid, vlayout, hlayout};
  65.  
  66.         try {
  67.             type = getArguments().getString("type");
  68.         } catch (Exception e) {
  69.             type = TagApplication.ERROR;
  70.         }
  71.     }
  72.  
  73.     @SuppressWarnings("ResourceAsColor")
  74.     @Override
  75.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  76.  
  77.         View view = inflater.inflate(R.layout.fragment_cameras, container, false);
  78.  
  79.         if (view != null) {
  80.             mCameraList = (FreeFlowContainer) view.findViewById(R.id.list_cameras);
  81.             mContainerLoading = (RelativeLayout) view.findViewById(R.id.container_loading);
  82.             mContainerError = (RelativeLayout) view.findViewById(R.id.container_error);
  83.  
  84.         }
  85.  
  86.         return view;
  87.     }
  88.  
  89.     @Override
  90.     public void onActivityCreated(Bundle savedInstanceState) {
  91.         super.onActivityCreated(savedInstanceState);
  92.  
  93.         if(type.equals(HomeFragment.TAG)) {
  94.  
  95.             mAdapter = new CameraGridAdapter(
  96.                     getActivity(),
  97.                     camera,
  98.                     onGridOpenDetailsClick);
  99.  
  100.             mCameraList.setLayout(layouts[currLayoutIndex]);
  101.             mCameraList.setAdapter(mAdapter);
  102.  
  103.         } else if(type.equals(TheBestFragment.TAG)) {
  104.  
  105. //            mTheBestAdapter = new TheBestAdapter(
  106. //                    getActivity(),
  107. //                    theBest);
  108. //
  109. //            mCameraList.setAdapter(mTheBestAdapter);
  110.         }
  111.  
  112.  
  113.     }
  114.  
  115.     @Override
  116.     public void onAttach(Activity activity) {
  117.         super.onAttach(activity);
  118.  
  119.         try {
  120.             mCallback = (OnListviewAction) getActivity();
  121.         } catch (ClassCastException e) {
  122.             throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
  123.         }
  124.  
  125.         synchronized (mAttachingActivityLock) {
  126.             syncVariable = true;
  127.             mAttachingActivityLock.notifyAll();
  128.         }
  129.     }
  130.  
  131.     @Override
  132.     public void onResume() {
  133.         super.onResume();
  134.  
  135.         mCallback.onLoad(type);
  136.         mActivity = getActivity();
  137.  
  138.         mCameraList.setVisibility(View.VISIBLE);
  139.         mContainerLoading.setVisibility(View.GONE);
  140.         mContainerError.setVisibility(View.GONE);
  141.  
  142.         if(!type.equals(TagApplication.ERROR)) {
  143.  
  144.             if (type.equals(HomeFragment.TAG)) {
  145.                 loadCameras();
  146.             } else if (type.equals(TheBestFragment.TAG)) {
  147.                 //loadTheBest(); --> não foi feito ainda
  148.             }
  149.  
  150.         }
  151.     }
  152.  
  153.     @Override
  154.     public void onRefresh() {
  155.         if(TagApplication.hasInternetConnection) {
  156.             mCallback.onRefresh();
  157.         } else {
  158.             //mCameraList.hideProgress();
  159.         }
  160.     }
  161.  
  162.     @SuppressWarnings("unchecked")
  163.     private void loadCameras() {
  164.  
  165.         try {
  166.  
  167.             synchronized (mAttachingActivityLock) {
  168.                 while(!syncVariable){
  169.                     try {
  170.                         mAttachingActivityLock.wait();
  171.                     } catch (InterruptedException e) {
  172.                         e.printStackTrace();
  173.                     }
  174.                 }
  175.             }
  176.  
  177.             new CursorLoaderParser(
  178.                     mActivity,
  179.                     getLoaderManager(),
  180.                     Camera.class,
  181.                     new CursorLoaderParser.OnLoaderEnd() {
  182.                         @Override
  183.                         public void onEnd(List<?> items) {
  184.  
  185.                             if(items.size() > 0) {
  186.  
  187.                                 camera.clear();
  188.                                 camera.addAll((List<Camera>) items);
  189.                                 mAdapter.update(camera);
  190.                                 mCameraList.dataInvalidated();
  191.  
  192.                                 mCameraList.setVisibility(View.VISIBLE);
  193.                                 mContainerLoading.setVisibility(View.GONE);
  194.                                 mContainerError.setVisibility(View.GONE);
  195.  
  196.                             } else {
  197.  
  198. //                                mCameraList.setVisibility(View.GONE);
  199. //                                mContainerLoading.setVisibility(View.GONE);
  200. //                                mContainerError.setVisibility(View.VISIBLE);
  201.  
  202.                             }
  203.  
  204.                         }
  205.                     }, getResources().getInteger(R.integer.cameras_loader)
  206.             );
  207.  
  208.         } catch (Exception e) {
  209.             e.printStackTrace();
  210.         }
  211.     }
  212.  
  213.     private void loadTheBest() {
  214.  
  215.         try {
  216.             new CursorLoaderParser(
  217.                     getActivity(),
  218.                     getLoaderManager(),
  219.                     TheBest.class,
  220.                     new CursorLoaderParser.OnLoaderEnd() {
  221.                         @Override
  222.                         public void onEnd(List<?> items) {
  223.  
  224.                             DebugUtil.log("SIZE: " + items.size());
  225.                             theBest.clear();
  226.                             theBest.addAll((List<TheBest>) items);
  227.                             mTheBestAdapter.notifyDataSetChanged();
  228.  
  229.                         }
  230.                     }, getResources().getInteger(R.integer.the_best_loader)
  231.             );
  232.         } catch (Exception e) {
  233.             e.printStackTrace();
  234.         }
  235.     }
  236.  
  237.     CameraGridAdapter.OnGridOpenDetailsClick onGridOpenDetailsClick = new CameraGridAdapter.OnGridOpenDetailsClick() {
  238.         @Override
  239.         public void onItemClick(Camera camera) {
  240.  
  241.         }
  242.     };
  243.  
  244.     private CamerasAdapter.OnOpenDetailsClick onOpenDetailsClick = new CamerasAdapter.OnOpenDetailsClick() {
  245.         @Override
  246.         public void onItemClick(Camera camera) {
  247.  
  248.             Bundle bundle = new Bundle();
  249.             bundle.putInt("remote_id", camera.getRemoteId());
  250.             bundle.putInt("id", Integer.valueOf(camera.getSystemId()));
  251.             bundle.putString("url_video", camera.getWpZoomEmbedHd());
  252.             bundle.putString("image", TagApplication.URL_TEMP_SERVER + camera.getUrlImage());
  253.             bundle.putString("city", camera.getCity());
  254.             bundle.putString("state", camera.getState());
  255.             bundle.putString("local", camera.getTitle());
  256.             bundle.putString("description", camera.getDescription());
  257.             bundle.putString("content", camera.getContent());
  258.             bundle.putString("views", camera.getViews());
  259.             bundle.putString("latitude", camera.getLatitude());
  260.             bundle.putString("longitude", camera.getLongitude());
  261.             bundle.putBoolean("hasSound", camera.getHasSound().equals("1"));
  262.  
  263.             DetailCameraFragment detailCameraFragment = new DetailCameraFragment();
  264.             detailCameraFragment.setArguments(bundle);
  265.             replaceFragments(detailCameraFragment);
  266.         }
  267.     };
  268.  
  269.     private void replaceFragments(Fragment fragment) {
  270.  
  271.         ((BaseActivity)getActivity()).replaceFragment(
  272.                 fragment,
  273.                 FragmentTransaction.TRANSIT_FRAGMENT_OPEN,
  274.                 HomeFragment.newInstance());
  275.     }
  276.  
  277.     public static CamerasFragment newInstance() {
  278.         return new CamerasFragment();
  279.     }
  280.  
  281.     public static interface OnListviewAction {
  282.         void onRefresh();
  283.         void onLoad(String type);
  284.         void onLoadMore(int page);
  285.     }
  286.  
  287.     // Metodo da interface, é chamado no fim do sync do syncAdapter
  288.     @Override
  289.     public void onEndRefresh() {
  290.         Thread refreshList = new Thread(new Runnable() {
  291.  
  292.             @Override
  293.             public void run() {
  294.                 loadCameras();
  295.             }
  296.  
  297.         });
  298.         refreshList.start();
  299.     }
  300.  
  301.     @Override
  302.     public void onLoadMoreEnd() {
  303.  
  304.     }
  305. }
Advertisement
Add Comment
Please, Sign In to add comment