diff --git a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java index cb0a2b84e..3e21bffa2 100644 --- a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java +++ b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java @@ -1,11 +1,28 @@ package tv.mediabrowser.mediabrowsertv; +import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; +import android.support.v17.leanback.widget.ArrayObjectAdapter; +import android.support.v17.leanback.widget.HeaderItem; +import android.support.v17.leanback.widget.ListRow; +import android.support.v17.leanback.widget.OnItemViewClickedListener; +import android.support.v17.leanback.widget.Presenter; +import android.support.v17.leanback.widget.Row; +import android.support.v17.leanback.widget.RowPresenter; +import android.view.Gravity; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import mediabrowser.apiinteraction.EmptyResponse; /** * Created by Eric on 12/4/2014. */ public class HomeFragment extends StdBrowseFragment { + private static final int GRID_ITEM_WIDTH = 200; + private static final int GRID_ITEM_HEIGHT = 200; @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -13,4 +30,76 @@ public class HomeFragment extends StdBrowseFragment { super.onActivityCreated(savedInstanceState); } + + @Override + protected void addAdditionalRows(ArrayObjectAdapter rowAdapter) { + super.addAdditionalRows(rowAdapter); + HeaderItem gridHeader = new HeaderItem(rowAdapter.size(), "SETTINGS", null); + + GridItemPresenter mGridPresenter = new GridItemPresenter(); + ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(mGridPresenter); + gridRowAdapter.add(getResources().getString(R.string.grid_view)); + gridRowAdapter.add(getResources().getString(R.string.error_fragment)); + gridRowAdapter.add(getResources().getString(R.string.personal_settings)); + gridRowAdapter.add("Logout " + TvApp.getApplication().getCurrentUser().getName()); + rowAdapter.add(new ListRow(gridHeader, gridRowAdapter)); + } + + @Override + protected void setupEventListeners() { + super.setupEventListeners(); + setOnItemViewClickedListener(new ItemViewClickedListener()); + } + + private final class ItemViewClickedListener implements OnItemViewClickedListener { + @Override + public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, + RowPresenter.ViewHolder rowViewHolder, Row row) { + + if (item instanceof String) { + if (((String) item).indexOf(getString(R.string.error_fragment)) >= 0) { + Intent intent = new Intent(getActivity(), BrowseErrorActivity.class); + startActivity(intent); + } else if (((String) item).indexOf("Logout ") >= 0) { + apiClient = TvApp.getApplication().getConnectionManager().GetApiClient(TvApp.getApplication().getCurrentUser()); + apiClient.Logout(new EmptyResponse() { + @Override + public void onResponse() { + super.onResponse(); + Intent intent = new Intent(getActivity(), StartupActivity.class); + startActivity(intent); + } + }); + } else + { + Toast.makeText(getActivity(), ((String) item), Toast.LENGTH_SHORT) + .show(); + } + } + } + } + + private class GridItemPresenter extends Presenter { + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent) { + TextView view = new TextView(parent.getContext()); + view.setLayoutParams(new ViewGroup.LayoutParams(GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT)); + view.setFocusable(true); + view.setFocusableInTouchMode(true); + view.setBackgroundColor(getResources().getColor(R.color.default_background)); + view.setTextColor(Color.WHITE); + view.setGravity(Gravity.CENTER); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder viewHolder, Object item) { + ((TextView) viewHolder.view).setText((String) item); + } + + @Override + public void onUnbindViewHolder(ViewHolder viewHolder) { + } + } + } diff --git a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java index ba198d334..fd8bef79f 100644 --- a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java +++ b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java @@ -38,6 +38,7 @@ import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.widget.Adapter; import android.widget.TextView; import android.widget.Toast; @@ -52,6 +53,7 @@ import java.util.Timer; import java.util.TimerTask; import mediabrowser.apiinteraction.ApiClient; +import mediabrowser.apiinteraction.EmptyResponse; import mediabrowser.model.dto.BaseItemDto; @@ -59,10 +61,6 @@ public class StdBrowseFragment extends BrowseFragment { private static final String TAG = "StdBrowseFragment"; private static final int BACKGROUND_UPDATE_DELAY = 300; - private static final int GRID_ITEM_WIDTH = 200; - private static final int GRID_ITEM_HEIGHT = 200; - private static final int NUM_ROWS = 6; - private static final int NUM_COLS = 15; protected String MainTitle; protected ApiClient apiClient; @@ -105,7 +103,7 @@ public class StdBrowseFragment extends BrowseFragment { } } - private void loadRows() { + protected void loadRows() { mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter()); mCardPresenter = new CardPresenter(); @@ -126,20 +124,16 @@ public class StdBrowseFragment extends BrowseFragment { // mRowsAdapter.add(new ListRow(header, listRowAdapter)); // } - HeaderItem gridHeader = new HeaderItem(i, "SETTINGS", null); - - GridItemPresenter mGridPresenter = new GridItemPresenter(); - ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(mGridPresenter); - gridRowAdapter.add(getResources().getString(R.string.grid_view)); - gridRowAdapter.add(getResources().getString(R.string.error_fragment)); - gridRowAdapter.add(getResources().getString(R.string.personal_settings)); - gridRowAdapter.add("Logout " + TvApp.getApplication().getCurrentUser().getName()); - mRowsAdapter.add(new ListRow(gridHeader, gridRowAdapter)); - + addAdditionalRows(mRowsAdapter); + setAdapter(mRowsAdapter); } + protected void addAdditionalRows(ArrayObjectAdapter rowAdapter) { + + } + private void prepareBackgroundManager() { BackgroundManager backgroundManager = BackgroundManager.getInstance(getActivity()); @@ -152,7 +146,7 @@ public class StdBrowseFragment extends BrowseFragment { getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics); } - private void setupUIElements() { + protected void setupUIElements() { setBadgeDrawable(getActivity().getResources().getDrawable( R.drawable.mblogo)); setTitle(MainTitle); // Badge, when set, takes precedent @@ -166,7 +160,7 @@ public class StdBrowseFragment extends BrowseFragment { setSearchAffordanceColor(getResources().getColor(R.color.search_opaque)); } - private void setupEventListeners() { + protected void setupEventListeners() { setOnSearchClickedListener(new View.OnClickListener() { @Override @@ -196,14 +190,6 @@ public class StdBrowseFragment extends BrowseFragment { ((ImageCardView) itemViewHolder.view).getMainImageView(), DetailsActivity.SHARED_ELEMENT_NAME).toBundle(); getActivity().startActivity(intent, bundle); - } else if (item instanceof String) { - if (((String) item).indexOf(getString(R.string.error_fragment)) >= 0) { - Intent intent = new Intent(getActivity(), BrowseErrorActivity.class); - startActivity(intent); - } else { - Toast.makeText(getActivity(), ((String) item), Toast.LENGTH_SHORT) - .show(); - } } } } @@ -271,27 +257,5 @@ public class StdBrowseFragment extends BrowseFragment { } } - private class GridItemPresenter extends Presenter { - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent) { - TextView view = new TextView(parent.getContext()); - view.setLayoutParams(new ViewGroup.LayoutParams(GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT)); - view.setFocusable(true); - view.setFocusableInTouchMode(true); - view.setBackgroundColor(getResources().getColor(R.color.default_background)); - view.setTextColor(Color.WHITE); - view.setGravity(Gravity.CENTER); - return new ViewHolder(view); - } - - @Override - public void onBindViewHolder(ViewHolder viewHolder, Object item) { - ((TextView) viewHolder.view).setText((String) item); - } - - @Override - public void onUnbindViewHolder(ViewHolder viewHolder) { - } - } }