Loading core/java/com/tmobile/widget/Carousel.java +10 −10 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ public class Carousel extends TabHost implements OnGestureListener { public class CarouselViewAdapter extends BaseAdapter { public int getCount() { return mTabWidget.getFilmstrip().getFilmstripSize(); return mTabWidget.getCarouselWidget().getCarouselWidgetSize(); } public Object getItem(int position) { Loading @@ -53,10 +53,10 @@ public class Carousel extends TabHost implements OnGestureListener { } public View getView(int position, View convertView, ViewGroup parent) { String name = mTabWidget.getFilmstrip().getFilmstripItem(position) String name = mTabWidget.getCarouselWidget().getCarouselWidgetItem(position) .getName(); Intent intent = mTabWidget.getFilmstrip() .getFilmstripItem(position).getIntent(); Intent intent = mTabWidget.getCarouselWidget() .getCarouselWidgetItem(position).getIntent(); Window window = mLocalActivityManager.startActivity(name, intent); View windowDecor = (window != null) ? window.getDecorView() : null; Loading @@ -65,7 +65,7 @@ public class Carousel extends TabHost implements OnGestureListener { } public View getView(int position) { String name = mTabWidget.getFilmstrip().getFilmstripItem(position) String name = mTabWidget.getCarouselWidget().getCarouselWidgetItem(position) .getName(); Activity activity = mLocalActivityManager.getActivity(name); Loading Loading @@ -109,7 +109,7 @@ public class Carousel extends TabHost implements OnGestureListener { super.addTab(tabSpec); if (mTabWidget != null) { Filmstrip filmstrip = mTabWidget.getFilmstrip(); CarouselWidget filmstrip = mTabWidget.getCarouselWidget(); if (filmstrip != null) { Loading Loading @@ -174,7 +174,7 @@ public class Carousel extends TabHost implements OnGestureListener { newSelectedPosition += 1; } int size = mTabWidget.getFilmstrip().getFilmstripSize(); int size = mTabWidget.getCarouselWidget().getCarouselWidgetSize(); if (newSelectedPosition < 0) { newSelectedPosition = 0; Loading @@ -187,7 +187,7 @@ public class Carousel extends TabHost implements OnGestureListener { } mCarouselTabContentLayout.setSelection(newSelectedPosition, true); mTabWidget.setFilmstripSelection(newSelectedPosition); mTabWidget.setCarouselWidgetSelection(newSelectedPosition); return true; } Loading Loading @@ -231,13 +231,13 @@ public class Carousel extends TabHost implements OnGestureListener { protected void dispatchKeyUpEvent() { mTabWidget.getFilmstrip().requestFocus(); mTabWidget.getCarouselWidget().requestFocus(); } public void setSelection(int index) { setCurrentTab(index); mTabWidget.getFilmstrip().setFilmstripSelection(index); mTabWidget.getCarouselWidget().setCarouselWidgetSelection(index); mCarouselTabContentLayout.setSelection(index, false); } Loading core/java/com/tmobile/widget/CarouselTabWidget.java +13 −13 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ import android.widget.AdapterView.OnItemSelectedListener; public class CarouselTabWidget extends TabWidget { private Filmstrip mFilmstrip; private CarouselWidget mWidget; private TabHost mTabHost; public CarouselTabWidget(Context context) { Loading @@ -24,11 +24,11 @@ public class CarouselTabWidget extends TabWidget { public CarouselTabWidget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mFilmstrip = new Filmstrip(context); mWidget = new CarouselWidget(context); this.addView(mFilmstrip, -1); this.addView(mWidget, -1); mFilmstrip mWidget .setOnItemSelectedListener(new CarouselTabWidgetOnItemSelectedListener()); } Loading @@ -41,10 +41,10 @@ public class CarouselTabWidget extends TabWidget { public class CarouselTabWidgetOnItemSelectedListener extends Filmstrip.FilmstripOnItemSelectedListener { CarouselWidget.CarouselWidgetOnItemSelectedListener { CarouselTabWidgetOnItemSelectedListener() { mFilmstrip.super(); mWidget.super(); } public void onItemSelected(AdapterView<?> parent, View view, Loading @@ -67,16 +67,16 @@ public class CarouselTabWidget extends TabWidget { mTabHost = aTabHost; } public Filmstrip getFilmstrip() { return mFilmstrip; public CarouselWidget getCarouselWidget() { return mWidget; } public int getFilmstripSelection() { return mFilmstrip.getFilmstripSelection(); return mWidget.getCarouselWidgetSelection(); } public void setOnItemSelectedListener(OnItemSelectedListener l){ mFilmstrip.setOnItemSelectedListener(l); mWidget.setOnItemSelectedListener(l); } @Override Loading @@ -90,7 +90,7 @@ public class CarouselTabWidget extends TabWidget { View aChild = getChildAt(i); if (aChild == v) { mFilmstrip.requestFocus(); mWidget.requestFocus(); return; } } Loading @@ -99,8 +99,8 @@ public class CarouselTabWidget extends TabWidget { super.onFocusChange(v, hasFocus); } public void setFilmstripSelection(int position) { mFilmstrip.setFilmstripSelection(position); public void setCarouselWidgetSelection(int position) { mWidget.setCarouselWidgetSelection(position); } } core/java/com/tmobile/widget/Filmstrip.java→core/java/com/tmobile/widget/CarouselWidget.java +67 −67 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ import android.widget.AdapterView.OnItemSelectedListener; import com.android.internal.R; public class Filmstrip extends RelativeLayout { class CarouselWidget extends RelativeLayout { // The max label length is defined in the style guide private static final int MAX_LABEL_LENGTH = 16; Loading @@ -52,7 +52,7 @@ public class Filmstrip extends RelativeLayout { Gallery.LayoutParams.WRAP_CONTENT, Gallery.LayoutParams.FILL_PARENT); class FilmstripItem extends Object { class CarouselWidgetItem extends Object { private Context mContext; private String mName; Loading @@ -62,7 +62,7 @@ public class Filmstrip extends RelativeLayout { private Drawable mImageDrawable; private ImageView mImageView; private FilmstripItem(Context context, String name, Intent intent) { private CarouselWidgetItem(Context context, String name, Intent intent) { mContext = context; mIntent = intent; mTitleView = null; Loading @@ -79,7 +79,7 @@ public class Filmstrip extends RelativeLayout { } private FilmstripItem(Context context, Drawable imageResource) { private CarouselWidgetItem(Context context, Drawable imageResource) { mContext = context; Loading Loading @@ -133,10 +133,10 @@ public class Filmstrip extends RelativeLayout { } } private class FilmstripTitleAdapter extends BaseAdapter { private class CarouselWidgetTitleAdapter extends BaseAdapter { public int getCount() { return getFilmstripSize(); return getCarouselWidgetSize(); } public Object getItem(int position) { Loading @@ -148,12 +148,12 @@ public class Filmstrip extends RelativeLayout { } public View getView(int position, View convertView, ViewGroup parent) { View view = mFilmstripItems.get(position).getView(position); View view = mCarouselWidgetItems.get(position).getView(position); if (view instanceof TextView) { TextView textView = (TextView) view; textView .setTextSize((position != mFilmstripSelection) ? .setTextSize((position != mCarouselWidgetSelection) ? TITLE_TEXT_SIZE_UNSELECTED : TITLE_TEXT_SIZE_SELECTED); Loading @@ -166,20 +166,20 @@ public class Filmstrip extends RelativeLayout { } } public class FilmstripOnItemSelectedListener implements public class CarouselWidgetOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if ((position < 0) || (mFilmstripItems.size() <= position)) if ((position < 0) || (mCarouselWidgetItems.size() <= position)) return; if ((position < 0) || (mFilmstripItems.size() <= position)) if ((position < 0) || (mCarouselWidgetItems.size() <= position)) return; if (mFilmstripSelection != -1) { if (mCarouselWidgetSelection != -1) { View oldView = parent .findViewById(mFilmstripSelection); .findViewById(mCarouselWidgetSelection); if (oldView instanceof TextView) { TextView oldTextView = (TextView) oldView; Loading Loading @@ -207,7 +207,7 @@ public class Filmstrip extends RelativeLayout { } } mFilmstripSelection = position; mCarouselWidgetSelection = position; if (view instanceof TextView) { TextView newTextView = (TextView) view; Loading Loading @@ -239,26 +239,26 @@ public class Filmstrip extends RelativeLayout { } private ArrayList<FilmstripItem> mFilmstripItems; private FilmstripTitleAdapter mFilmstripTitleAdapter; private FilmstripOnItemSelectedListener mFilmstripOnItemSelectedListener; private int mFilmstripSelection = -1; private ArrayList<CarouselWidgetItem> mCarouselWidgetItems; private CarouselWidgetTitleAdapter mCarouselWidgetTitleAdapter; private CarouselWidgetOnItemSelectedListener mCarouselWidgetOnItemSelectedListener; private int mCarouselWidgetSelection = -1; private Drawable mFrameBackground; private Drawable mFrameSelectedBackground; private Gallery mFilmstripSelector; private Gallery mCarouselWidgetSelector; private ImageView mLeftArrow; private ImageView mRightArrow; private boolean isPortrait; public Filmstrip(Context context) { public CarouselWidget(Context context) { this(context, null); } public Filmstrip(Context context, AttributeSet attrs) { this(context, attrs, R.attr.filmstripStyle); public CarouselWidget(Context context, AttributeSet attrs) { this(context, attrs, R.attr.carouselWidgetStyle); } public Filmstrip(Context context, AttributeSet attrs, int defStyle) { public CarouselWidget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFocusable(true); setFocusableInTouchMode(true); Loading @@ -268,17 +268,17 @@ public class Filmstrip extends RelativeLayout { isPortrait = mOrientation == Configuration.ORIENTATION_PORTRAIT? true : false; //Fix End TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Filmstrip, defStyle, 0); context.obtainStyledAttributes(attrs, R.styleable.CarouselWidget, defStyle, 0); mFilmstripSelector = new Gallery(context); mCarouselWidgetSelector = new Gallery(context); mLeftArrow = new ImageView(context); mRightArrow = new ImageView(context); mFilmstripItems = new ArrayList<FilmstripItem>(); mFilmstripTitleAdapter = new FilmstripTitleAdapter(); mFilmstripOnItemSelectedListener = new FilmstripOnItemSelectedListener(); mCarouselWidgetItems = new ArrayList<CarouselWidgetItem>(); mCarouselWidgetTitleAdapter = new CarouselWidgetTitleAdapter(); mCarouselWidgetOnItemSelectedListener = new CarouselWidgetOnItemSelectedListener(); mFrameBackground = a.getDrawable(R.styleable.Filmstrip_frameBackground); mFrameSelectedBackground = a.getDrawable(R.styleable.Filmstrip_frameSelectedBackground); mFrameBackground = a.getDrawable(R.styleable.CarouselWidget_frameBackground); mFrameSelectedBackground = a.getDrawable(R.styleable.CarouselWidget_frameSelectedBackground); initWidget(a); Loading @@ -286,7 +286,7 @@ public class Filmstrip extends RelativeLayout { } public void setOnItemSelectedListener(OnItemSelectedListener l){ mFilmstripSelector.setOnItemSelectedListener(l); mCarouselWidgetSelector.setOnItemSelectedListener(l); } Loading @@ -294,7 +294,7 @@ public class Filmstrip extends RelativeLayout { private void initWidget(TypedArray a) { setOnItemSelectedListener(new FilmstripOnItemSelectedListener()); setOnItemSelectedListener(new CarouselWidgetOnItemSelectedListener()); RelativeLayout.LayoutParams rowLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 50); rowLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); Loading @@ -302,16 +302,16 @@ public class Filmstrip extends RelativeLayout { this.setLayoutParams(rowLayoutParams); if (mFilmstripSelector != null) { mFilmstripSelector.setAdapter(getFilmstripTitleAdapter()); if (mCarouselWidgetSelector != null) { mCarouselWidgetSelector.setAdapter(getCarouselWidgetTitleAdapter()); mFilmstripSelector.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT, Gallery.LayoutParams.FILL_PARENT)); mCarouselWidgetSelector.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT, Gallery.LayoutParams.FILL_PARENT)); } mLeftArrow.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int index = mFilmstripSelector.getSelectedItemPosition(); int index = mCarouselWidgetSelector.getSelectedItemPosition(); index --; Loading @@ -319,7 +319,7 @@ public class Filmstrip extends RelativeLayout { index = 0; } mFilmstripSelector.setSelection(index); mCarouselWidgetSelector.setSelection(index); } Loading @@ -328,38 +328,38 @@ public class Filmstrip extends RelativeLayout { mRightArrow.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int index = mFilmstripSelector.getSelectedItemPosition(); int index = mCarouselWidgetSelector.getSelectedItemPosition(); index ++; int size = mFilmstripSelector.getCount(); int size = mCarouselWidgetSelector.getCount(); if (index >= size) { index = size -1 ; } mFilmstripSelector.setSelection(index); mCarouselWidgetSelector.setSelection(index); } }); //According to Red Line document there should be margin of 21px from the edge mFilmstripSelector.setPadding(21, 0, 21, 0); mCarouselWidgetSelector.setPadding(21, 0, 21, 0); //Space between the two filmstrip elements should be 6px if (isPortrait) { mFilmstripSelector.setSpacing(6); mCarouselWidgetSelector.setSpacing(6); } else { mFilmstripSelector.setSpacing(8); mCarouselWidgetSelector.setSpacing(8); } mFilmstripSelector.setAnimationDuration(500); mCarouselWidgetSelector.setAnimationDuration(500); this.addView(mFilmstripSelector, -1); this.addView(mCarouselWidgetSelector, -1); RelativeLayout.LayoutParams leftLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.FILL_PARENT); leftLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); leftLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL); Drawable leftImageDrawable = a.getDrawable(R.styleable.Filmstrip_previousButton); Drawable leftImageDrawable = a.getDrawable(R.styleable.CarouselWidget_previousButton); mLeftArrow.setLayoutParams(leftLayoutParams); mLeftArrow.setImageDrawable(leftImageDrawable); Loading @@ -369,25 +369,25 @@ public class Filmstrip extends RelativeLayout { rightLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); rightLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL); Drawable rightImageDrawable = a.getDrawable(R.styleable.Filmstrip_nextButton); Drawable rightImageDrawable = a.getDrawable(R.styleable.CarouselWidget_nextButton); mRightArrow.setLayoutParams(rightLayoutParams); mRightArrow.setImageDrawable(rightImageDrawable); this.addView(mRightArrow, -1); } public FilmstripTitleAdapter getFilmstripTitleAdapter() { return mFilmstripTitleAdapter; public CarouselWidgetTitleAdapter getCarouselWidgetTitleAdapter() { return mCarouselWidgetTitleAdapter; } public FilmstripOnItemSelectedListener getFilmstripOnItemSelectedListener() { return mFilmstripOnItemSelectedListener; public CarouselWidgetOnItemSelectedListener getCarouselWidgetOnItemSelectedListener() { return mCarouselWidgetOnItemSelectedListener; } public void add(Context context, String name, Intent intent) { mFilmstripItems.add(new FilmstripItem(context, name, intent)); mFilmstripTitleAdapter.notifyDataSetChanged(); mCarouselWidgetItems.add(new CarouselWidgetItem(context, name, intent)); mCarouselWidgetTitleAdapter.notifyDataSetChanged(); updateArrowStates(); Loading @@ -395,8 +395,8 @@ public class Filmstrip extends RelativeLayout { public void add(Context context, Drawable imageResource) { mFilmstripItems.add(new FilmstripItem(context, imageResource)); mFilmstripTitleAdapter.notifyDataSetChanged(); mCarouselWidgetItems.add(new CarouselWidgetItem(context, imageResource)); mCarouselWidgetTitleAdapter.notifyDataSetChanged(); updateArrowStates(); } Loading @@ -406,7 +406,7 @@ public class Filmstrip extends RelativeLayout { private void setBackgroundResource(int position, View view) { Drawable drawable = mFrameBackground; if (position == mFilmstripSelection) { if (position == mCarouselWidgetSelection) { drawable = mFrameSelectedBackground; } Loading @@ -414,37 +414,37 @@ public class Filmstrip extends RelativeLayout { } public void setFilmstripSelection(int itemIndex) { mFilmstripSelector.setSelection(itemIndex); public void setCarouselWidgetSelection(int itemIndex) { mCarouselWidgetSelector.setSelection(itemIndex); updateArrowStates(); } private void updateArrowStates() { mLeftArrow .setVisibility((mFilmstripSelector.getSelectedItemPosition() > 0) ? View.VISIBLE .setVisibility((mCarouselWidgetSelector.getSelectedItemPosition() > 0) ? View.VISIBLE : View.INVISIBLE); mRightArrow .setVisibility((mFilmstripSelector.getSelectedItemPosition() < (mFilmstripSelector .setVisibility((mCarouselWidgetSelector.getSelectedItemPosition() < (mCarouselWidgetSelector .getCount() - 1)) ? View.VISIBLE : View.INVISIBLE); } public int getFilmstripSize() { return mFilmstripItems.size(); public int getCarouselWidgetSize() { return mCarouselWidgetItems.size(); } public int getFilmstripSelection() { return mFilmstripSelection; public int getCarouselWidgetSelection() { return mCarouselWidgetSelection; } public FilmstripItem getFilmstripItem(int position) { return mFilmstripItems.get(position); public CarouselWidgetItem getCarouselWidgetItem(int position) { return mCarouselWidgetItems.get(position); } // Dispatch LEFT/RIGTH key to gallery to move gallery items @Override public boolean dispatchKeyEvent(KeyEvent event) { return mFilmstripSelector.dispatchKeyEvent(event); return mCarouselWidgetSelector.dispatchKeyEvent(event); } Loading core/res/res/values/attrs.xml +3 −3 Original line number Diff line number Diff line Loading @@ -358,8 +358,8 @@ <attr name="horizontalScrollViewStyle" format="reference" /> <!-- Default Spinner style. --> <attr name="spinnerStyle" format="reference" /> <!-- Default Filmstrip style. --> <attr name="filmstripStyle" format="reference" /> <!-- Default carouselWidget style. --> <attr name="carouselWidgetStyle" format="reference" /> <!-- Default Star style. --> <attr name="starStyle" format="reference" /> <!-- Default TabWidget style. --> Loading Loading @@ -2093,7 +2093,7 @@ <!-- The prompt to display when the spinner's dialog is shown. --> <attr name="prompt" format="reference" /> </declare-styleable> <declare-styleable name="Filmstrip"> <declare-styleable name="CarouselWidget"> <attr name="previousButton" format="reference|color" /> <attr name="nextButton" format="reference|color" /> <attr name="frameBackground" format="reference|color" /> Loading core/res/res/values/styles.xml +1 −1 Original line number Diff line number Diff line Loading @@ -376,7 +376,7 @@ <item name="android:clickable">true</item> </style> <style name="Widget.Filmstrip"> <style name="Widget.CarouselWidget"> <item name="android:background">@color/black</item> <item name="android:gravity">center_vertical</item> <item name="android:previousButton">@drawable/ic_media_play_reverse</item> Loading Loading
core/java/com/tmobile/widget/Carousel.java +10 −10 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ public class Carousel extends TabHost implements OnGestureListener { public class CarouselViewAdapter extends BaseAdapter { public int getCount() { return mTabWidget.getFilmstrip().getFilmstripSize(); return mTabWidget.getCarouselWidget().getCarouselWidgetSize(); } public Object getItem(int position) { Loading @@ -53,10 +53,10 @@ public class Carousel extends TabHost implements OnGestureListener { } public View getView(int position, View convertView, ViewGroup parent) { String name = mTabWidget.getFilmstrip().getFilmstripItem(position) String name = mTabWidget.getCarouselWidget().getCarouselWidgetItem(position) .getName(); Intent intent = mTabWidget.getFilmstrip() .getFilmstripItem(position).getIntent(); Intent intent = mTabWidget.getCarouselWidget() .getCarouselWidgetItem(position).getIntent(); Window window = mLocalActivityManager.startActivity(name, intent); View windowDecor = (window != null) ? window.getDecorView() : null; Loading @@ -65,7 +65,7 @@ public class Carousel extends TabHost implements OnGestureListener { } public View getView(int position) { String name = mTabWidget.getFilmstrip().getFilmstripItem(position) String name = mTabWidget.getCarouselWidget().getCarouselWidgetItem(position) .getName(); Activity activity = mLocalActivityManager.getActivity(name); Loading Loading @@ -109,7 +109,7 @@ public class Carousel extends TabHost implements OnGestureListener { super.addTab(tabSpec); if (mTabWidget != null) { Filmstrip filmstrip = mTabWidget.getFilmstrip(); CarouselWidget filmstrip = mTabWidget.getCarouselWidget(); if (filmstrip != null) { Loading Loading @@ -174,7 +174,7 @@ public class Carousel extends TabHost implements OnGestureListener { newSelectedPosition += 1; } int size = mTabWidget.getFilmstrip().getFilmstripSize(); int size = mTabWidget.getCarouselWidget().getCarouselWidgetSize(); if (newSelectedPosition < 0) { newSelectedPosition = 0; Loading @@ -187,7 +187,7 @@ public class Carousel extends TabHost implements OnGestureListener { } mCarouselTabContentLayout.setSelection(newSelectedPosition, true); mTabWidget.setFilmstripSelection(newSelectedPosition); mTabWidget.setCarouselWidgetSelection(newSelectedPosition); return true; } Loading Loading @@ -231,13 +231,13 @@ public class Carousel extends TabHost implements OnGestureListener { protected void dispatchKeyUpEvent() { mTabWidget.getFilmstrip().requestFocus(); mTabWidget.getCarouselWidget().requestFocus(); } public void setSelection(int index) { setCurrentTab(index); mTabWidget.getFilmstrip().setFilmstripSelection(index); mTabWidget.getCarouselWidget().setCarouselWidgetSelection(index); mCarouselTabContentLayout.setSelection(index, false); } Loading
core/java/com/tmobile/widget/CarouselTabWidget.java +13 −13 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ import android.widget.AdapterView.OnItemSelectedListener; public class CarouselTabWidget extends TabWidget { private Filmstrip mFilmstrip; private CarouselWidget mWidget; private TabHost mTabHost; public CarouselTabWidget(Context context) { Loading @@ -24,11 +24,11 @@ public class CarouselTabWidget extends TabWidget { public CarouselTabWidget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mFilmstrip = new Filmstrip(context); mWidget = new CarouselWidget(context); this.addView(mFilmstrip, -1); this.addView(mWidget, -1); mFilmstrip mWidget .setOnItemSelectedListener(new CarouselTabWidgetOnItemSelectedListener()); } Loading @@ -41,10 +41,10 @@ public class CarouselTabWidget extends TabWidget { public class CarouselTabWidgetOnItemSelectedListener extends Filmstrip.FilmstripOnItemSelectedListener { CarouselWidget.CarouselWidgetOnItemSelectedListener { CarouselTabWidgetOnItemSelectedListener() { mFilmstrip.super(); mWidget.super(); } public void onItemSelected(AdapterView<?> parent, View view, Loading @@ -67,16 +67,16 @@ public class CarouselTabWidget extends TabWidget { mTabHost = aTabHost; } public Filmstrip getFilmstrip() { return mFilmstrip; public CarouselWidget getCarouselWidget() { return mWidget; } public int getFilmstripSelection() { return mFilmstrip.getFilmstripSelection(); return mWidget.getCarouselWidgetSelection(); } public void setOnItemSelectedListener(OnItemSelectedListener l){ mFilmstrip.setOnItemSelectedListener(l); mWidget.setOnItemSelectedListener(l); } @Override Loading @@ -90,7 +90,7 @@ public class CarouselTabWidget extends TabWidget { View aChild = getChildAt(i); if (aChild == v) { mFilmstrip.requestFocus(); mWidget.requestFocus(); return; } } Loading @@ -99,8 +99,8 @@ public class CarouselTabWidget extends TabWidget { super.onFocusChange(v, hasFocus); } public void setFilmstripSelection(int position) { mFilmstrip.setFilmstripSelection(position); public void setCarouselWidgetSelection(int position) { mWidget.setCarouselWidgetSelection(position); } }
core/java/com/tmobile/widget/Filmstrip.java→core/java/com/tmobile/widget/CarouselWidget.java +67 −67 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ import android.widget.AdapterView.OnItemSelectedListener; import com.android.internal.R; public class Filmstrip extends RelativeLayout { class CarouselWidget extends RelativeLayout { // The max label length is defined in the style guide private static final int MAX_LABEL_LENGTH = 16; Loading @@ -52,7 +52,7 @@ public class Filmstrip extends RelativeLayout { Gallery.LayoutParams.WRAP_CONTENT, Gallery.LayoutParams.FILL_PARENT); class FilmstripItem extends Object { class CarouselWidgetItem extends Object { private Context mContext; private String mName; Loading @@ -62,7 +62,7 @@ public class Filmstrip extends RelativeLayout { private Drawable mImageDrawable; private ImageView mImageView; private FilmstripItem(Context context, String name, Intent intent) { private CarouselWidgetItem(Context context, String name, Intent intent) { mContext = context; mIntent = intent; mTitleView = null; Loading @@ -79,7 +79,7 @@ public class Filmstrip extends RelativeLayout { } private FilmstripItem(Context context, Drawable imageResource) { private CarouselWidgetItem(Context context, Drawable imageResource) { mContext = context; Loading Loading @@ -133,10 +133,10 @@ public class Filmstrip extends RelativeLayout { } } private class FilmstripTitleAdapter extends BaseAdapter { private class CarouselWidgetTitleAdapter extends BaseAdapter { public int getCount() { return getFilmstripSize(); return getCarouselWidgetSize(); } public Object getItem(int position) { Loading @@ -148,12 +148,12 @@ public class Filmstrip extends RelativeLayout { } public View getView(int position, View convertView, ViewGroup parent) { View view = mFilmstripItems.get(position).getView(position); View view = mCarouselWidgetItems.get(position).getView(position); if (view instanceof TextView) { TextView textView = (TextView) view; textView .setTextSize((position != mFilmstripSelection) ? .setTextSize((position != mCarouselWidgetSelection) ? TITLE_TEXT_SIZE_UNSELECTED : TITLE_TEXT_SIZE_SELECTED); Loading @@ -166,20 +166,20 @@ public class Filmstrip extends RelativeLayout { } } public class FilmstripOnItemSelectedListener implements public class CarouselWidgetOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if ((position < 0) || (mFilmstripItems.size() <= position)) if ((position < 0) || (mCarouselWidgetItems.size() <= position)) return; if ((position < 0) || (mFilmstripItems.size() <= position)) if ((position < 0) || (mCarouselWidgetItems.size() <= position)) return; if (mFilmstripSelection != -1) { if (mCarouselWidgetSelection != -1) { View oldView = parent .findViewById(mFilmstripSelection); .findViewById(mCarouselWidgetSelection); if (oldView instanceof TextView) { TextView oldTextView = (TextView) oldView; Loading Loading @@ -207,7 +207,7 @@ public class Filmstrip extends RelativeLayout { } } mFilmstripSelection = position; mCarouselWidgetSelection = position; if (view instanceof TextView) { TextView newTextView = (TextView) view; Loading Loading @@ -239,26 +239,26 @@ public class Filmstrip extends RelativeLayout { } private ArrayList<FilmstripItem> mFilmstripItems; private FilmstripTitleAdapter mFilmstripTitleAdapter; private FilmstripOnItemSelectedListener mFilmstripOnItemSelectedListener; private int mFilmstripSelection = -1; private ArrayList<CarouselWidgetItem> mCarouselWidgetItems; private CarouselWidgetTitleAdapter mCarouselWidgetTitleAdapter; private CarouselWidgetOnItemSelectedListener mCarouselWidgetOnItemSelectedListener; private int mCarouselWidgetSelection = -1; private Drawable mFrameBackground; private Drawable mFrameSelectedBackground; private Gallery mFilmstripSelector; private Gallery mCarouselWidgetSelector; private ImageView mLeftArrow; private ImageView mRightArrow; private boolean isPortrait; public Filmstrip(Context context) { public CarouselWidget(Context context) { this(context, null); } public Filmstrip(Context context, AttributeSet attrs) { this(context, attrs, R.attr.filmstripStyle); public CarouselWidget(Context context, AttributeSet attrs) { this(context, attrs, R.attr.carouselWidgetStyle); } public Filmstrip(Context context, AttributeSet attrs, int defStyle) { public CarouselWidget(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFocusable(true); setFocusableInTouchMode(true); Loading @@ -268,17 +268,17 @@ public class Filmstrip extends RelativeLayout { isPortrait = mOrientation == Configuration.ORIENTATION_PORTRAIT? true : false; //Fix End TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Filmstrip, defStyle, 0); context.obtainStyledAttributes(attrs, R.styleable.CarouselWidget, defStyle, 0); mFilmstripSelector = new Gallery(context); mCarouselWidgetSelector = new Gallery(context); mLeftArrow = new ImageView(context); mRightArrow = new ImageView(context); mFilmstripItems = new ArrayList<FilmstripItem>(); mFilmstripTitleAdapter = new FilmstripTitleAdapter(); mFilmstripOnItemSelectedListener = new FilmstripOnItemSelectedListener(); mCarouselWidgetItems = new ArrayList<CarouselWidgetItem>(); mCarouselWidgetTitleAdapter = new CarouselWidgetTitleAdapter(); mCarouselWidgetOnItemSelectedListener = new CarouselWidgetOnItemSelectedListener(); mFrameBackground = a.getDrawable(R.styleable.Filmstrip_frameBackground); mFrameSelectedBackground = a.getDrawable(R.styleable.Filmstrip_frameSelectedBackground); mFrameBackground = a.getDrawable(R.styleable.CarouselWidget_frameBackground); mFrameSelectedBackground = a.getDrawable(R.styleable.CarouselWidget_frameSelectedBackground); initWidget(a); Loading @@ -286,7 +286,7 @@ public class Filmstrip extends RelativeLayout { } public void setOnItemSelectedListener(OnItemSelectedListener l){ mFilmstripSelector.setOnItemSelectedListener(l); mCarouselWidgetSelector.setOnItemSelectedListener(l); } Loading @@ -294,7 +294,7 @@ public class Filmstrip extends RelativeLayout { private void initWidget(TypedArray a) { setOnItemSelectedListener(new FilmstripOnItemSelectedListener()); setOnItemSelectedListener(new CarouselWidgetOnItemSelectedListener()); RelativeLayout.LayoutParams rowLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 50); rowLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); Loading @@ -302,16 +302,16 @@ public class Filmstrip extends RelativeLayout { this.setLayoutParams(rowLayoutParams); if (mFilmstripSelector != null) { mFilmstripSelector.setAdapter(getFilmstripTitleAdapter()); if (mCarouselWidgetSelector != null) { mCarouselWidgetSelector.setAdapter(getCarouselWidgetTitleAdapter()); mFilmstripSelector.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT, Gallery.LayoutParams.FILL_PARENT)); mCarouselWidgetSelector.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT, Gallery.LayoutParams.FILL_PARENT)); } mLeftArrow.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int index = mFilmstripSelector.getSelectedItemPosition(); int index = mCarouselWidgetSelector.getSelectedItemPosition(); index --; Loading @@ -319,7 +319,7 @@ public class Filmstrip extends RelativeLayout { index = 0; } mFilmstripSelector.setSelection(index); mCarouselWidgetSelector.setSelection(index); } Loading @@ -328,38 +328,38 @@ public class Filmstrip extends RelativeLayout { mRightArrow.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int index = mFilmstripSelector.getSelectedItemPosition(); int index = mCarouselWidgetSelector.getSelectedItemPosition(); index ++; int size = mFilmstripSelector.getCount(); int size = mCarouselWidgetSelector.getCount(); if (index >= size) { index = size -1 ; } mFilmstripSelector.setSelection(index); mCarouselWidgetSelector.setSelection(index); } }); //According to Red Line document there should be margin of 21px from the edge mFilmstripSelector.setPadding(21, 0, 21, 0); mCarouselWidgetSelector.setPadding(21, 0, 21, 0); //Space between the two filmstrip elements should be 6px if (isPortrait) { mFilmstripSelector.setSpacing(6); mCarouselWidgetSelector.setSpacing(6); } else { mFilmstripSelector.setSpacing(8); mCarouselWidgetSelector.setSpacing(8); } mFilmstripSelector.setAnimationDuration(500); mCarouselWidgetSelector.setAnimationDuration(500); this.addView(mFilmstripSelector, -1); this.addView(mCarouselWidgetSelector, -1); RelativeLayout.LayoutParams leftLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.FILL_PARENT); leftLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); leftLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL); Drawable leftImageDrawable = a.getDrawable(R.styleable.Filmstrip_previousButton); Drawable leftImageDrawable = a.getDrawable(R.styleable.CarouselWidget_previousButton); mLeftArrow.setLayoutParams(leftLayoutParams); mLeftArrow.setImageDrawable(leftImageDrawable); Loading @@ -369,25 +369,25 @@ public class Filmstrip extends RelativeLayout { rightLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); rightLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL); Drawable rightImageDrawable = a.getDrawable(R.styleable.Filmstrip_nextButton); Drawable rightImageDrawable = a.getDrawable(R.styleable.CarouselWidget_nextButton); mRightArrow.setLayoutParams(rightLayoutParams); mRightArrow.setImageDrawable(rightImageDrawable); this.addView(mRightArrow, -1); } public FilmstripTitleAdapter getFilmstripTitleAdapter() { return mFilmstripTitleAdapter; public CarouselWidgetTitleAdapter getCarouselWidgetTitleAdapter() { return mCarouselWidgetTitleAdapter; } public FilmstripOnItemSelectedListener getFilmstripOnItemSelectedListener() { return mFilmstripOnItemSelectedListener; public CarouselWidgetOnItemSelectedListener getCarouselWidgetOnItemSelectedListener() { return mCarouselWidgetOnItemSelectedListener; } public void add(Context context, String name, Intent intent) { mFilmstripItems.add(new FilmstripItem(context, name, intent)); mFilmstripTitleAdapter.notifyDataSetChanged(); mCarouselWidgetItems.add(new CarouselWidgetItem(context, name, intent)); mCarouselWidgetTitleAdapter.notifyDataSetChanged(); updateArrowStates(); Loading @@ -395,8 +395,8 @@ public class Filmstrip extends RelativeLayout { public void add(Context context, Drawable imageResource) { mFilmstripItems.add(new FilmstripItem(context, imageResource)); mFilmstripTitleAdapter.notifyDataSetChanged(); mCarouselWidgetItems.add(new CarouselWidgetItem(context, imageResource)); mCarouselWidgetTitleAdapter.notifyDataSetChanged(); updateArrowStates(); } Loading @@ -406,7 +406,7 @@ public class Filmstrip extends RelativeLayout { private void setBackgroundResource(int position, View view) { Drawable drawable = mFrameBackground; if (position == mFilmstripSelection) { if (position == mCarouselWidgetSelection) { drawable = mFrameSelectedBackground; } Loading @@ -414,37 +414,37 @@ public class Filmstrip extends RelativeLayout { } public void setFilmstripSelection(int itemIndex) { mFilmstripSelector.setSelection(itemIndex); public void setCarouselWidgetSelection(int itemIndex) { mCarouselWidgetSelector.setSelection(itemIndex); updateArrowStates(); } private void updateArrowStates() { mLeftArrow .setVisibility((mFilmstripSelector.getSelectedItemPosition() > 0) ? View.VISIBLE .setVisibility((mCarouselWidgetSelector.getSelectedItemPosition() > 0) ? View.VISIBLE : View.INVISIBLE); mRightArrow .setVisibility((mFilmstripSelector.getSelectedItemPosition() < (mFilmstripSelector .setVisibility((mCarouselWidgetSelector.getSelectedItemPosition() < (mCarouselWidgetSelector .getCount() - 1)) ? View.VISIBLE : View.INVISIBLE); } public int getFilmstripSize() { return mFilmstripItems.size(); public int getCarouselWidgetSize() { return mCarouselWidgetItems.size(); } public int getFilmstripSelection() { return mFilmstripSelection; public int getCarouselWidgetSelection() { return mCarouselWidgetSelection; } public FilmstripItem getFilmstripItem(int position) { return mFilmstripItems.get(position); public CarouselWidgetItem getCarouselWidgetItem(int position) { return mCarouselWidgetItems.get(position); } // Dispatch LEFT/RIGTH key to gallery to move gallery items @Override public boolean dispatchKeyEvent(KeyEvent event) { return mFilmstripSelector.dispatchKeyEvent(event); return mCarouselWidgetSelector.dispatchKeyEvent(event); } Loading
core/res/res/values/attrs.xml +3 −3 Original line number Diff line number Diff line Loading @@ -358,8 +358,8 @@ <attr name="horizontalScrollViewStyle" format="reference" /> <!-- Default Spinner style. --> <attr name="spinnerStyle" format="reference" /> <!-- Default Filmstrip style. --> <attr name="filmstripStyle" format="reference" /> <!-- Default carouselWidget style. --> <attr name="carouselWidgetStyle" format="reference" /> <!-- Default Star style. --> <attr name="starStyle" format="reference" /> <!-- Default TabWidget style. --> Loading Loading @@ -2093,7 +2093,7 @@ <!-- The prompt to display when the spinner's dialog is shown. --> <attr name="prompt" format="reference" /> </declare-styleable> <declare-styleable name="Filmstrip"> <declare-styleable name="CarouselWidget"> <attr name="previousButton" format="reference|color" /> <attr name="nextButton" format="reference|color" /> <attr name="frameBackground" format="reference|color" /> Loading
core/res/res/values/styles.xml +1 −1 Original line number Diff line number Diff line Loading @@ -376,7 +376,7 @@ <item name="android:clickable">true</item> </style> <style name="Widget.Filmstrip"> <style name="Widget.CarouselWidget"> <item name="android:background">@color/black</item> <item name="android:gravity">center_vertical</item> <item name="android:previousButton">@drawable/ic_media_play_reverse</item> Loading