From 9918d6e3335e0917f921ad472de5cb34930af034 Mon Sep 17 00:00:00 2001 From: mahdihijazi Date: Mon, 21 Aug 2017 21:55:11 +0200 Subject: [PATCH] [Android] Show the version number on the title for the Android TV UI - Stop reading version number from native code and use the one from BuildConfig - Show the version number on the title for the Android TV UI --- .../dolphinemu/ui/main/CustomTitleView.java | 80 +++++++++++++++++++ .../dolphinemu/ui/main/MainPresenter.java | 7 +- .../dolphinemu/ui/main/TvMainActivity.java | 25 +++--- .../app/src/main/res/layout/titleview.xml | 7 ++ .../app/src/main/res/layout/tv_title.xml | 31 +++++++ .../app/src/main/res/values/styles.xml | 3 +- 6 files changed, 135 insertions(+), 18 deletions(-) create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/CustomTitleView.java create mode 100644 Source/Android/app/src/main/res/layout/titleview.xml create mode 100644 Source/Android/app/src/main/res/layout/tv_title.xml diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/CustomTitleView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/CustomTitleView.java new file mode 100644 index 0000000000..8e1a307c0e --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/CustomTitleView.java @@ -0,0 +1,80 @@ +package org.dolphinemu.dolphinemu.ui.main; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.support.v17.leanback.widget.TitleViewAdapter; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import org.dolphinemu.dolphinemu.R; + +public class CustomTitleView extends LinearLayout implements TitleViewAdapter.Provider { + private final TextView mTitleView; + private final View mBadgeView; + + private final TitleViewAdapter mTitleViewAdapter = new TitleViewAdapter() { + @Override + public View getSearchAffordanceView() + { + return null; + } + + @Override + public void setTitle(CharSequence titleText) + { + CustomTitleView.this.setTitle(titleText); + } + + @Override + public void setBadgeDrawable(Drawable drawable) + { + CustomTitleView.this.setBadgeDrawable(drawable); + } + }; + + public CustomTitleView(Context context) + { + this(context, null); + } + + public CustomTitleView(Context context, AttributeSet attrs) + { + this(context, attrs, 0); + } + + public CustomTitleView(Context context, AttributeSet attrs, int defStyle) + { + super(context, attrs, defStyle); + View root = LayoutInflater.from(context).inflate(R.layout.tv_title, this); + mTitleView = (TextView) root.findViewById(R.id.title); + mBadgeView = root.findViewById(R.id.badge); + } + + public void setTitle(CharSequence title) + { + if (title != null) + { + mTitleView.setText(title); + mTitleView.setVisibility(View.VISIBLE); + mBadgeView.setVisibility(View.VISIBLE); + } + } + + public void setBadgeDrawable(Drawable drawable) + { + if (drawable != null) + { + mTitleView.setVisibility(View.GONE); + mBadgeView.setVisibility(View.VISIBLE); + } + } + + @Override + public TitleViewAdapter getTitleViewAdapter() + { + return mTitleViewAdapter; + } +} \ No newline at end of file diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java index ecffb14ac0..24878ab244 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java @@ -2,9 +2,8 @@ package org.dolphinemu.dolphinemu.ui.main; import android.database.Cursor; - +import org.dolphinemu.dolphinemu.BuildConfig; import org.dolphinemu.dolphinemu.DolphinApplication; -import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.model.GameDatabase; import org.dolphinemu.dolphinemu.utils.SettingsFile; @@ -27,9 +26,7 @@ public final class MainPresenter public void onCreate() { - // TODO Rather than calling into native code, this should use the commented line below. - // String versionName = BuildConfig.VERSION_NAME; - String versionName = NativeLibrary.GetVersionString(); + String versionName = BuildConfig.VERSION_NAME; mView.setVersionString(versionName); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index 17dad7a41e..c579190456 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -17,6 +17,7 @@ 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.support.v4.content.ContextCompat; import android.widget.Toast; import org.dolphinemu.dolphinemu.R; @@ -45,6 +46,16 @@ public final class TvMainActivity extends Activity implements MainView super.onCreate(savedInstanceState); setContentView(R.layout.activity_tv_main); + setupUI(); + + mPresenter.onCreate(); + + // Stuff in this block only happens when this activity is newly created (i.e. not a rotation) + if (savedInstanceState == null) + StartupHandler.HandleInit(this); + } + + void setupUI() { final FragmentManager fragmentManager = getFragmentManager(); mBrowseFragment = new BrowseFragment(); fragmentManager @@ -54,14 +65,9 @@ public final class TvMainActivity extends Activity implements MainView // Set display parameters for the BrowseFragment mBrowseFragment.setHeadersState(BrowseFragment.HEADERS_ENABLED); - mBrowseFragment.setTitle(getString(R.string.app_name)); - mBrowseFragment.setBadgeDrawable(getResources().getDrawable( - R.drawable.ic_launcher, null)); - mBrowseFragment.setBrandColor(getResources().getColor(R.color.dolphin_blue_dark)); + mBrowseFragment.setBrandColor(ContextCompat.getColor(this, R.color.dolphin_blue_dark)); buildRowsAdapter(); - mPresenter.onCreate(); - mBrowseFragment.setOnItemViewClickedListener( new OnItemViewClickedListener() { @@ -88,12 +94,7 @@ public final class TvMainActivity extends Activity implements MainView } } }); - - // Stuff in this block only happens when this activity is newly created (i.e. not a rotation) - if (savedInstanceState == null) - StartupHandler.HandleInit(this); } - /** * MainView */ @@ -101,7 +102,7 @@ public final class TvMainActivity extends Activity implements MainView @Override public void setVersionString(String version) { - // No-op + mBrowseFragment.setTitle(version); } @Override diff --git a/Source/Android/app/src/main/res/layout/titleview.xml b/Source/Android/app/src/main/res/layout/titleview.xml new file mode 100644 index 0000000000..e88e12fecf --- /dev/null +++ b/Source/Android/app/src/main/res/layout/titleview.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/layout/tv_title.xml b/Source/Android/app/src/main/res/layout/tv_title.xml new file mode 100644 index 0000000000..424feafba1 --- /dev/null +++ b/Source/Android/app/src/main/res/layout/tv_title.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/values/styles.xml b/Source/Android/app/src/main/res/values/styles.xml index 1728bb8bcd..eb8cf73dcb 100644 --- a/Source/Android/app/src/main/res/values/styles.xml +++ b/Source/Android/app/src/main/res/values/styles.xml @@ -113,7 +113,7 @@ -