Pull settings row into home page

This commit is contained in:
Eric Reed committed 2014-12-05 09:38:29 -05:00
1 parent 7a9643566f
commit 7fae856b93
2 files changed
+100 -47

No files matched your search

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