diff options
author | Alex Ning <chineseperson5@gmail.com> | 2020-04-02 14:15:47 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2020-04-02 14:15:47 +0000 |
commit | 9690c5eeaca4bf1317af2c792c48ee859060eefe (patch) | |
tree | f8cfbcdd150ceb9734a03c55d725a40728dc4c04 | |
parent | 5f7ac4349f1e0c0b7e44d49f3edb9469a428dc7c (diff) | |
download | infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.tar infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.tar.gz infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.tar.bz2 infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.tar.lz infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.tar.xz infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.tar.zst infinity-for-reddit-9690c5eeaca4bf1317af2c792c48ee859060eefe.zip |
Add an activity for theme preview.
14 files changed, 1485 insertions, 6 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c18183cc..d2738240 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,12 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:replace="android:label"> - <activity android:name=".Activity.CustomThemeListingActivity" + <activity android:name=".Activity.ThemePreviewActivity" + android:label="@string/theme_preview_activity_label" + android:parentActivityName=".Activity.MainActivity" + android:theme="@style/AppTheme.NoActionBar" /> + <activity + android:name=".Activity.CustomThemeListingActivity" android:label="@string/custom_theme_listing_activity_label" android:parentActivityName=".Activity.MainActivity" android:theme="@style/AppTheme.NoActionBar" /> @@ -266,9 +271,9 @@ android:theme="@style/AppTheme.ActionBar.Transparent" /> <activity android:name=".Activity.ViewVideoActivity" + android:configChanges="orientation|screenSize|layoutDirection" android:parentActivityName=".Activity.MainActivity" - android:theme="@style/AppTheme.ActionBar.Transparent" - android:configChanges="orientation|screenSize|layoutDirection" /> + android:theme="@style/AppTheme.ActionBar.Transparent" /> <activity android:name=".Activity.ViewPostDetailActivity" android:parentActivityName=".Activity.MainActivity" diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java index 07730b0c..0853700b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java @@ -1,5 +1,6 @@ package ml.docilealligator.infinityforreddit.Activity; +import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; @@ -189,6 +190,12 @@ public class CustomizeThemeActivity extends BaseActivity { case android.R.id.home: finish(); return true; + case R.id.action_preview_customize_theme_activity: + Intent intent = new Intent(this, ThemePreviewActivity.class); + intent.putParcelableArrayListExtra(ThemePreviewActivity.EXTRA_CUSTOM_THEME_SETTINGS_ITEMS, customThemeSettingsItems); + startActivity(intent); + + return true; case R.id.action_save_customize_theme_activity: if (adapter != null) { themeName = adapter.getThemeName(); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ThemePreviewActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ThemePreviewActivity.java new file mode 100644 index 00000000..d701cfa6 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ThemePreviewActivity.java @@ -0,0 +1,448 @@ +package ml.docilealligator.infinityforreddit.Activity; + +import android.content.SharedPreferences; +import android.content.res.ColorStateList; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.os.Bundle; +import android.util.TypedValue; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.widget.Toolbar; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.appbar.CollapsingToolbarLayout; +import com.google.android.material.bottomappbar.BottomAppBar; +import com.google.android.material.chip.Chip; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.tabs.TabLayout; + +import java.util.ArrayList; + +import javax.inject.Inject; +import javax.inject.Named; + +import butterknife.BindView; +import butterknife.ButterKnife; +import ml.docilealligator.infinityforreddit.AppBarStateChangeListener; +import ml.docilealligator.infinityforreddit.ContentFontStyle; +import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme; +import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeSettingsItem; +import ml.docilealligator.infinityforreddit.FontStyle; +import ml.docilealligator.infinityforreddit.Fragment.ThemePreviewCommentsFragment; +import ml.docilealligator.infinityforreddit.Fragment.ThemePreviewPostsFragment; +import ml.docilealligator.infinityforreddit.Infinity; +import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.TitleFontStyle; +import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; + +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY; +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM; +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO; +import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES; + +public class ThemePreviewActivity extends AppCompatActivity { + + public static final String EXTRA_CUSTOM_THEME_SETTINGS_ITEMS = "ECTSI"; + + @BindView(R.id.coordinator_layout_theme_preview_activity) + CoordinatorLayout coordinatorLayout; + @BindView(R.id.view_pager_theme_preview_activity) + ViewPager viewPager; + @BindView(R.id.appbar_layout_theme_preview_activity) + AppBarLayout appBarLayout; + @BindView(R.id.collapsing_toolbar_layout_theme_preview_activity) + CollapsingToolbarLayout collapsingToolbarLayout; + @BindView(R.id.toolbar_linear_layout_theme_preview_activity) + LinearLayout linearLayout; + @BindView(R.id.subreddit_name_text_view_theme_preview_activity) + TextView subredditNameTextView; + @BindView(R.id.user_name_text_view_theme_preview_activity) + TextView usernameTextView; + @BindView(R.id.subscribe_subreddit_chip_theme_preview_activity) + Chip subscribeSubredditChip; + @BindView(R.id.primary_text_text_view_theme_preview_activity) + TextView primaryTextView; + @BindView(R.id.secondary_text_text_view_theme_preview_activity) + TextView secondaryTextView; + @BindView(R.id.toolbar) + Toolbar toolbar; + @BindView(R.id.tab_layout_theme_preview_activity) + TabLayout tabLayout; + @BindView(R.id.bottom_navigation_theme_preview_activity) + BottomAppBar bottomNavigationView; + @BindView(R.id.linear_layout_bottom_app_bar_theme_preview_activity) + LinearLayout linearLayoutBottomAppBar; + @BindView(R.id.subscriptions_bottom_app_bar_theme_preview_activity) + ImageView subscriptionsBottomAppBar; + @BindView(R.id.multi_reddit_bottom_app_bar_theme_preview_activity) + ImageView multiRedditBottomAppBar; + @BindView(R.id.message_bottom_app_bar_theme_preview_activity) + ImageView messageBottomAppBar; + @BindView(R.id.profile_bottom_app_bar_theme_preview_activity) + ImageView profileBottomAppBar; + @BindView(R.id.fab_theme_preview_activity) + FloatingActionButton fab; + @Inject + @Named("default") + SharedPreferences mSharedPreferences; + private ArrayList<CustomThemeSettingsItem> customThemeSettingsItems; + private CustomTheme customTheme; + private int expandedTabTextColor; + private int expandedTabBackgroundColor; + private int expandedTabIndicatorColor; + private int collapsedTabTextColor; + private int collapsedTabBackgroundColor; + private int collapsedTabIndicatorColor; + private int unsubscribedColor; + private int subscribedColor; + private int systemVisibilityToolbarExpanded = 0; + private int systemVisibilityToolbarCollapsed = 0; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + ((Infinity) getApplication()).getAppComponent().inject(this); + + customThemeSettingsItems = getIntent().getParcelableArrayListExtra(EXTRA_CUSTOM_THEME_SETTINGS_ITEMS); + customTheme = CustomTheme.convertSettingsItemsToCustomTheme(customThemeSettingsItems, "ThemePreview"); + + boolean systemDefault = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; + int systemThemeType = Integer.parseInt(mSharedPreferences.getString(SharedPreferencesUtils.THEME_KEY, "2")); + switch (systemThemeType) { + case 0: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO); + getTheme().applyStyle(R.style.Theme_Normal, true); + break; + case 1: + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES); + if(mSharedPreferences.getBoolean(SharedPreferencesUtils.AMOLED_DARK_KEY, false)) { + getTheme().applyStyle(R.style.Theme_Normal_AmoledDark, true); + } else { + getTheme().applyStyle(R.style.Theme_Normal_NormalDark, true); + } + break; + case 2: + if (systemDefault) { + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM); + } else { + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY); + } + if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO) { + getTheme().applyStyle(R.style.Theme_Normal, true); + } else { + if(mSharedPreferences.getBoolean(SharedPreferencesUtils.AMOLED_DARK_KEY, false)) { + getTheme().applyStyle(R.style.Theme_Normal_AmoledDark, true); + } else { + getTheme().applyStyle(R.style.Theme_Normal_NormalDark, true); + } + } + } + + boolean immersiveInterface = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + mSharedPreferences.getBoolean(SharedPreferencesUtils.IMMERSIVE_INTERFACE_KEY, true); + boolean changeStatusBarIconColor = false; + if (immersiveInterface) { + changeStatusBarIconColor = customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface; + } + boolean isLightStatusbar = customTheme.isLightStatusBar; + Window window = getWindow(); + View decorView = window.getDecorView(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + boolean isLightNavBar = customTheme.isLightNavBar; + if (isLightStatusbar) { + if (isLightNavBar) { + systemVisibilityToolbarExpanded = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + if (changeStatusBarIconColor) { + systemVisibilityToolbarCollapsed = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + } else { + systemVisibilityToolbarCollapsed = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + } + } else { + systemVisibilityToolbarExpanded = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + if (!changeStatusBarIconColor) { + systemVisibilityToolbarCollapsed = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } + } + } else { + if (isLightNavBar) { + systemVisibilityToolbarExpanded = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + if (changeStatusBarIconColor) { + systemVisibilityToolbarCollapsed = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + } + } else { + if (changeStatusBarIconColor) { + systemVisibilityToolbarCollapsed = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } + } + } + decorView.setSystemUiVisibility(systemVisibilityToolbarExpanded); + window.setNavigationBarColor(customTheme.navBarColor); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (isLightStatusbar) { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + systemVisibilityToolbarExpanded = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + systemVisibilityToolbarCollapsed = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } + } + + getTheme().applyStyle(FontStyle.valueOf(mSharedPreferences + .getString(SharedPreferencesUtils.FONT_SIZE_KEY, FontStyle.Normal.name())).getResId(), true); + + getTheme().applyStyle(TitleFontStyle.valueOf(mSharedPreferences + .getString(SharedPreferencesUtils.TITLE_FONT_SIZE_KEY, TitleFontStyle.Normal.name())).getResId(), true); + + getTheme().applyStyle(ContentFontStyle.valueOf(mSharedPreferences + .getString(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY, ContentFontStyle.Normal.name())).getResId(), true); + + setContentView(R.layout.activity_theme_preview); + + ButterKnife.bind(this); + applyCustomTheme(); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (immersiveInterface) { + window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + + Resources resources = getResources(); + int navBarResourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); + if (navBarResourceId > 0) { + int navBarHeight = resources.getDimensionPixelSize(navBarResourceId); + if (navBarHeight > 0) { + CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); + params.bottomMargin = navBarHeight; + fab.setLayoutParams(params); + linearLayoutBottomAppBar.setPadding(0, + (int) (6 * getResources().getDisplayMetrics().density), 0, navBarHeight); + } + } + } + + if (changeStatusBarIconColor) { + appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + @Override + public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) { + if (state == State.COLLAPSED) { + decorView.setSystemUiVisibility(systemVisibilityToolbarCollapsed); + tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + } else if (state == State.EXPANDED) { + decorView.setSystemUiVisibility(systemVisibilityToolbarExpanded); + tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + tabLayout.setBackgroundColor(expandedTabBackgroundColor); + } + } + }); + } else { + appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + @Override + public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) { + if (state == State.COLLAPSED) { + tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + } else if (state == State.EXPANDED) { + tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + tabLayout.setBackgroundColor(expandedTabBackgroundColor); + } + } + }); + } + } else { + appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + @Override + public void onStateChanged(AppBarLayout appBarLayout, State state) { + if (state == State.EXPANDED) { + tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + tabLayout.setBackgroundColor(expandedTabBackgroundColor); + } else if (state == State.COLLAPSED) { + tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + } + } + }); + } + + adjustToolbar(toolbar); + setSupportActionBar(toolbar); + + subscribeSubredditChip.setOnClickListener(view -> { + if (subscribeSubredditChip.getText().equals(getResources().getString(R.string.subscribe))) { + subscribeSubredditChip.setText(R.string.unsubscribe); + subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + } else { + subscribeSubredditChip.setText(R.string.subscribe); + subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + } + }); + + SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); + viewPager.setAdapter(sectionsPagerAdapter); + viewPager.setOffscreenPageLimit(2); + tabLayout.setupWithViewPager(viewPager); + } + + private void applyCustomTheme() { + coordinatorLayout.setBackgroundColor(customTheme.backgroundColor); + collapsingToolbarLayout.setContentScrimColor(customTheme.colorPrimary); + subscribeSubredditChip.setTextColor(customTheme.chipTextColor); + subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(customTheme.unsubscribed)); + applyAppBarLayoutAndToolbarTheme(appBarLayout, toolbar); + expandedTabTextColor = customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor; + expandedTabIndicatorColor = customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator; + expandedTabBackgroundColor = customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground; + collapsedTabTextColor = customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor; + collapsedTabIndicatorColor = customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator; + collapsedTabBackgroundColor = customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground; + linearLayout.setBackgroundColor(customTheme.backgroundColor); + subredditNameTextView.setTextColor(customTheme.subreddit); + usernameTextView.setTextColor(customTheme.username); + subscribeSubredditChip.setTextColor(customTheme.chipTextColor); + primaryTextView.setTextColor(customTheme.primaryTextColor); + secondaryTextView.setTextColor(customTheme.secondaryTextColor); + bottomNavigationView.setBackgroundTint(ColorStateList.valueOf(customTheme.backgroundColor)); + int primaryIconColor = customTheme.primaryIconColor; + subscriptionsBottomAppBar.setColorFilter(primaryIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + multiRedditBottomAppBar.setColorFilter(primaryIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + messageBottomAppBar.setColorFilter(primaryIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + profileBottomAppBar.setColorFilter(primaryIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + applyTabLayoutTheme(tabLayout); + applyFABTheme(fab); + unsubscribedColor = customTheme.unsubscribed; + subscribedColor = customTheme.subscribed; + } + + protected void applyAppBarLayoutAndToolbarTheme(AppBarLayout appBarLayout, Toolbar toolbar) { + appBarLayout.setBackgroundColor(customTheme.colorPrimary); + toolbar.setTitleTextColor(customTheme.toolbarPrimaryTextAndIconColor); + if (toolbar.getNavigationIcon() != null) { + toolbar.getNavigationIcon().setColorFilter(customTheme.toolbarPrimaryTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + } + if (toolbar.getOverflowIcon() != null) { + toolbar.getOverflowIcon().setColorFilter(customTheme.toolbarPrimaryTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + } + } + + private void adjustToolbar(Toolbar toolbar) { + int statusBarResourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (statusBarResourceId > 0) { + ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams(); + int statusBarHeight = getResources().getDimensionPixelSize(statusBarResourceId); + params.topMargin = statusBarHeight; + toolbar.setLayoutParams(params); + TypedValue tv = new TypedValue(); + if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) + { + int dp16 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics()); + linearLayout.setPadding(dp16, + TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()) + statusBarHeight, + dp16, 0); + } + } + } + + protected void applyTabLayoutTheme(TabLayout tabLayout) { + int toolbarAndTabBackgroundColor = customTheme.colorPrimary; + tabLayout.setBackgroundColor(toolbarAndTabBackgroundColor); + tabLayout.setSelectedTabIndicatorColor(customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator); + tabLayout.setTabTextColors(customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor, + customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor); + } + + protected void applyFABTheme(FloatingActionButton fab) { + fab.setBackgroundTintList(ColorStateList.valueOf(customTheme.colorPrimaryLightTheme)); + fab.setImageTintList(ColorStateList.valueOf(customTheme.fabIconColor)); + Drawable myFabSrc = getResources().getDrawable(R.drawable.ic_add_day_night_24dp); + if (myFabSrc.getConstantState() != null) { + Drawable willBeWhite = myFabSrc.getConstantState().newDrawable(); + willBeWhite.mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN); + fab.setImageDrawable(willBeWhite); + } + } + + public CustomTheme getCustomTheme() { + return customTheme; + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == android.R.id.home) { + finish(); + return true; + } + return false; + } + + private class SectionsPagerAdapter extends FragmentPagerAdapter { + private ThemePreviewPostsFragment themePreviewPostsFragment; + private ThemePreviewCommentsFragment themePreviewCommentsFragment; + + SectionsPagerAdapter(FragmentManager fm) { + super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); + } + + @NonNull + @Override + public Fragment getItem(int position) { + if (position == 0) { + return new ThemePreviewPostsFragment(); + } + return new ThemePreviewCommentsFragment(); + } + + @Override + public int getCount() { + return 2; + } + + @Override + public CharSequence getPageTitle(int position) { + switch (position) { + case 0: + return "Posts"; + case 1: + return "Comments"; + } + return null; + } + + @NonNull + @Override + public Object instantiateItem(@NonNull ViewGroup container, int position) { + Fragment fragment = (Fragment) super.instantiateItem(container, position); + switch (position) { + case 0: + themePreviewPostsFragment = (ThemePreviewPostsFragment) fragment; + break; + case 1: + themePreviewCommentsFragment = (ThemePreviewCommentsFragment) fragment; + } + return fragment; + } + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java index b34ce856..34f38542 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java @@ -97,7 +97,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp CoordinatorLayout coordinatorLayout; @BindView(R.id.view_pager_view_subreddit_detail_activity) ViewPager viewPager; - @BindView(R.id.appbar_layout_view_subreddit_detail) + @BindView(R.id.appbar_layout_view_subreddit_detail_activity) AppBarLayout appBarLayout; @BindView(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity) CollapsingToolbarLayout collapsingToolbarLayout; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java index bdc69bcd..3a8fd8bb 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java @@ -28,6 +28,7 @@ import ml.docilealligator.infinityforreddit.Activity.SettingsActivity; import ml.docilealligator.infinityforreddit.Activity.SubredditMultiselectionActivity; import ml.docilealligator.infinityforreddit.Activity.SubredditSelectionActivity; import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity; +import ml.docilealligator.infinityforreddit.Activity.ThemePreviewActivity; import ml.docilealligator.infinityforreddit.Activity.ViewGIFActivity; import ml.docilealligator.infinityforreddit.Activity.ViewImageActivity; import ml.docilealligator.infinityforreddit.Activity.ViewMessageActivity; @@ -152,4 +153,6 @@ public interface AppComponent { void inject(SidebarFragment sidebarFragment); void inject(AdvancedPreferenceFragment advancedPreferenceFragment); + + void inject(ThemePreviewActivity themePreviewActivity); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ThemePreviewCommentsFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ThemePreviewCommentsFragment.java new file mode 100644 index 00000000..4a194579 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ThemePreviewCommentsFragment.java @@ -0,0 +1,93 @@ +package ml.docilealligator.infinityforreddit.Fragment; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.widget.NestedScrollView; +import androidx.fragment.app.Fragment; + +import butterknife.BindView; +import butterknife.ButterKnife; +import ml.docilealligator.infinityforreddit.Activity.ThemePreviewActivity; +import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme; +import ml.docilealligator.infinityforreddit.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class ThemePreviewCommentsFragment extends Fragment { + + @BindView(R.id.linear_layout_theme_preview_comments_fragment) + LinearLayout linearLayout; + @BindView(R.id.vertical_block_theme_preview_comments_fragment) + View verticalBlock; + @BindView(R.id.author_type_image_view_theme_preview_comments_fragment) + ImageView authorTypeImageView; + @BindView(R.id.author_text_view_theme_preview_comments_fragment) + TextView authorTextView; + @BindView(R.id.author_flair_text_view_theme_preview_comments_fragment) + TextView flairTextView; + @BindView(R.id.comment_time_text_view_theme_preview_comments_fragment) + TextView commentTimeTextView; + @BindView(R.id.comment_markdown_view_theme_preview_comments_fragment) + TextView contentTextView; + @BindView(R.id.up_vote_button_theme_preview_comments_fragment) + ImageView upvoteButton; + @BindView(R.id.score_text_view_theme_preview_comments_fragment) + TextView scoreTextView; + @BindView(R.id.down_vote_button_theme_preview_comments_fragment) + ImageView downvoteButton; + @BindView(R.id.more_button_theme_preview_comments_fragment) + ImageView moreButton; + @BindView(R.id.expand_button_theme_preview_comments_fragment) + ImageView expandButton; + @BindView(R.id.save_button_theme_preview_comments_fragment) + ImageView saveButton; + @BindView(R.id.reply_button_theme_preview_comments_fragment) + ImageView replyButton; + @BindView(R.id.divider_theme_preview_comments_fragment) + View divider; + private ThemePreviewActivity activity; + + public ThemePreviewCommentsFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_theme_preview_comments, container, false); + ButterKnife.bind(this, rootView); + + CustomTheme customTheme = activity.getCustomTheme(); + linearLayout.setBackgroundColor(customTheme.commentBackgroundColor); + authorTypeImageView.setColorFilter(customTheme.moderator, android.graphics.PorterDuff.Mode.SRC_IN); + authorTextView.setTextColor(customTheme.moderator); + commentTimeTextView.setTextColor(customTheme.secondaryTextColor); + contentTextView.setTextColor(customTheme.commentColor); + flairTextView.setTextColor(customTheme.authorFlairTextColor); + divider.setBackgroundColor(customTheme.dividerColor); + upvoteButton.setColorFilter(customTheme.commentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + scoreTextView.setTextColor(customTheme.commentIconAndInfoColor); + downvoteButton.setColorFilter(customTheme.commentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + moreButton.setColorFilter(customTheme.commentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + expandButton.setColorFilter(customTheme.commentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + saveButton.setColorFilter(customTheme.commentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + replyButton.setColorFilter(customTheme.commentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + return rootView; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (ThemePreviewActivity) context; + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ThemePreviewPostsFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ThemePreviewPostsFragment.java new file mode 100644 index 00000000..e8963f92 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/ThemePreviewPostsFragment.java @@ -0,0 +1,149 @@ +package ml.docilealligator.infinityforreddit.Fragment; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.widget.NestedScrollView; +import androidx.fragment.app.Fragment; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.libRG.CustomTextView; + +import butterknife.BindView; +import butterknife.ButterKnife; +import jp.wasabeef.glide.transformations.RoundedCornersTransformation; +import ml.docilealligator.infinityforreddit.Activity.ThemePreviewActivity; +import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme; +import ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView; +import ml.docilealligator.infinityforreddit.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class ThemePreviewPostsFragment extends Fragment { + + @BindView(R.id.card_view_theme_preview_posts_fragment) + CardView cardView; + @BindView(R.id.icon_gif_image_view_theme_preview_posts_fragment) + AspectRatioGifImageView iconImageView; + @BindView(R.id.subreddit_name_text_view_theme_preview_posts_fragment) + TextView subredditNameTextView; + @BindView(R.id.user_text_view_theme_preview_posts_fragment) + TextView usernameTextView; + @BindView(R.id.stickied_post_image_view_theme_preview_posts_fragment) + ImageView stickiedPostImageView; + @BindView(R.id.post_time_text_view_best_theme_preview_posts_fragment) + TextView postTimeTextView; + @BindView(R.id.title_text_view_best_theme_preview_posts_fragment) + TextView titleTextView; + @BindView(R.id.content_text_view_theme_preview_posts_fragment) + TextView contentTextView; + @BindView(R.id.type_text_view_theme_preview_posts_fragment) + CustomTextView typeTextView; + @BindView(R.id.spoiler_custom_text_view_theme_preview_posts_fragment) + CustomTextView spoilerTextView; + @BindView(R.id.nsfw_text_view_theme_preview_posts_fragment) + CustomTextView nsfwTextView; + @BindView(R.id.flair_custom_text_view_theme_preview_posts_fragment) + CustomTextView flairTextView; + @BindView(R.id.archived_image_view_theme_preview_posts_fragment) + ImageView archivedImageView; + @BindView(R.id.locked_image_view_theme_preview_posts_fragment) + ImageView lockedImageView; + @BindView(R.id.crosspost_image_view_theme_preview_posts_fragment) + ImageView crosspostImageView; + @BindView(R.id.link_text_view_theme_preview_posts_fragment) + TextView linkTextView; + @BindView(R.id.progress_bar_theme_preview_posts_fragment) + ProgressBar progressBar; + @BindView(R.id.image_view_no_preview_link_theme_preview_posts_fragment) + ImageView noPreviewLinkImageView; + @BindView(R.id.plus_button_theme_preview_posts_fragment) + ImageView upvoteButton; + @BindView(R.id.score_text_view_theme_preview_posts_fragment) + TextView scoreTextView; + @BindView(R.id.minus_button_theme_preview_posts_fragment) + ImageView downvoteButton; + @BindView(R.id.comments_count_theme_preview_posts_fragment) + TextView commentsCountTextView; + @BindView(R.id.save_button_theme_preview_posts_fragment) + ImageView saveButton; + @BindView(R.id.share_button_theme_preview_posts_fragment) + ImageView shareButton; + private ThemePreviewActivity activity; + + public ThemePreviewPostsFragment() { + // Required empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View rootView = inflater.inflate(R.layout.fragment_theme_preview_posts, container, false); + ButterKnife.bind(this, rootView); + + CustomTheme customTheme = activity.getCustomTheme(); + + cardView.setBackgroundTintList(ColorStateList.valueOf(customTheme.cardViewBackgroundColor)); + Glide.with(this).load(R.drawable.subreddit_default_icon) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) + .into(iconImageView); + subredditNameTextView.setTextColor(customTheme.subreddit); + usernameTextView.setTextColor(customTheme.username); + postTimeTextView.setTextColor(customTheme.secondaryTextColor); + titleTextView.setTextColor(customTheme.postTitleColor); + contentTextView.setTextColor(customTheme.postContentColor); + stickiedPostImageView.setColorFilter(customTheme.stickiedPostIconTint, PorterDuff.Mode.SRC_IN); + typeTextView.setBackgroundColor(customTheme.postTypeBackgroundColor); + typeTextView.setBorderColor(customTheme.postTypeBackgroundColor); + typeTextView.setTextColor(customTheme.postTypeTextColor); + spoilerTextView.setBackgroundColor(customTheme.spoilerBackgroundColor); + spoilerTextView.setBorderColor(customTheme.spoilerBackgroundColor); + spoilerTextView.setTextColor(customTheme.spoilerTextColor); + nsfwTextView.setBackgroundColor(customTheme.nsfwBackgroundColor); + nsfwTextView.setBorderColor(customTheme.nsfwBackgroundColor); + nsfwTextView.setTextColor(customTheme.nsfwTextColor); + flairTextView.setBackgroundColor(customTheme.flairBackgroundColor); + flairTextView.setBorderColor(customTheme.flairBackgroundColor); + flairTextView.setTextColor(customTheme.flairTextColor); + archivedImageView.setColorFilter(customTheme.archivedTint, PorterDuff.Mode.SRC_IN); + lockedImageView.setColorFilter(customTheme.lockedIconTint, PorterDuff.Mode.SRC_IN); + crosspostImageView.setColorFilter(customTheme.crosspostIconTint, PorterDuff.Mode.SRC_IN); + linkTextView.setTextColor(customTheme.secondaryTextColor); + progressBar.setIndeterminateTintList(ColorStateList.valueOf(customTheme.colorAccent)); + noPreviewLinkImageView.setBackgroundColor(customTheme.noPreviewLinkBackgroundColor); + upvoteButton.setColorFilter(customTheme.postIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + scoreTextView.setTextColor(customTheme.postIconAndInfoColor); + downvoteButton.setColorFilter(customTheme.postIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + commentsCountTextView.setTextColor(customTheme.postIconAndInfoColor); + Drawable commentIcon = activity.getDrawable(R.drawable.ic_comment_grey_24dp); + if (commentIcon != null) { + DrawableCompat.setTint(commentIcon, customTheme.postIconAndInfoColor); + } + commentsCountTextView.setCompoundDrawablesWithIntrinsicBounds(commentIcon, null, null, null); + saveButton.setColorFilter(customTheme.postIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + shareButton.setColorFilter(customTheme.postIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + + return rootView; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (ThemePreviewActivity) context; + } +} diff --git a/app/src/main/res/drawable/ic_preview_24dp.xml b/app/src/main/res/drawable/ic_preview_24dp.xml new file mode 100644 index 00000000..4153950d --- /dev/null +++ b/app/src/main/res/drawable/ic_preview_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M12,6.5c3.79,0 7.17,2.13 8.82,5.5 -1.65,3.37 -5.02,5.5 -8.82,5.5S4.83,15.37 3.18,12C4.83,8.63 8.21,6.5 12,6.5m0,-2C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,9.5c1.38,0 2.5,1.12 2.5,2.5s-1.12,2.5 -2.5,2.5 -2.5,-1.12 -2.5,-2.5 1.12,-2.5 2.5,-2.5m0,-2c-2.48,0 -4.5,2.02 -4.5,4.5s2.02,4.5 4.5,4.5 4.5,-2.02 4.5,-4.5 -2.02,-4.5 -4.5,-4.5z" + android:fillColor="#000000"/> +</vector> diff --git a/app/src/main/res/layout/activity_theme_preview.xml b/app/src/main/res/layout/activity_theme_preview.xml new file mode 100644 index 00000000..0fbc028b --- /dev/null +++ b/app/src/main/res/layout/activity_theme_preview.xml @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/coordinator_layout_theme_preview_activity" + tools:context=".Activity.ThemePreviewActivity"> + + <androidx.viewpager.widget.ViewPager + android:id="@+id/view_pager_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/appbar_layout_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:theme="@style/AppTheme.AppBarOverlay"> + + <com.google.android.material.appbar.CollapsingToolbarLayout + android:id="@+id/collapsing_toolbar_layout_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:titleEnabled="false" + app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" + app:toolbarId="@+id/toolbar"> + + <LinearLayout + android:id="@+id/toolbar_linear_layout_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingTop="180dp" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical"> + + <TextView + android:id="@+id/subreddit_name_text_view_theme_preview_activity" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" + android:text="@string/subreddit_preview" + android:textSize="?attr/font_18"/> + + <TextView + android:id="@+id/user_name_text_view_theme_preview_activity" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/username_preview" + android:textSize="?attr/font_18"/> + + </LinearLayout> + + <com.google.android.material.chip.Chip + android:id="@+id/subscribe_subreddit_chip_theme_preview_activity" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/subscribe" + android:textColor="@android:color/white" + android:layout_gravity="center_horizontal"/> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginBottom="16dp"> + + <TextView + android:id="@+id/primary_text_text_view_theme_preview_activity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/primary_text_preview" + android:textSize="?attr/font_default" /> + + <TextView + android:id="@+id/secondary_text_text_view_theme_preview_activity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="end" + android:text="@string/secondary_text_preview" + android:textSize="?attr/font_default" /> + + </LinearLayout> + + </LinearLayout> + + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + app:layout_collapseMode="pin" + app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" + app:popupTheme="@style/AppTheme.PopupOverlay" + app:navigationIcon="?attr/homeAsUpIndicator" /> + + </com.google.android.material.appbar.CollapsingToolbarLayout> + + <com.google.android.material.tabs.TabLayout + android:id="@+id/tab_layout_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + app:layout_scrollFlags="scroll|enterAlways" + app:tabGravity="fill" + app:tabMode="fixed" + app:tabIndicatorHeight="3dp" + app:tabRippleColor="?attr/colorControlHighlight" + app:tabUnboundedRipple="false" /> + + </com.google.android.material.appbar.AppBarLayout> + + <com.google.android.material.bottomappbar.BottomAppBar + android:id="@+id/bottom_navigation_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + app:fabAlignmentMode="center"> + + <LinearLayout + android:id="@+id/linear_layout_bottom_app_bar_theme_preview_activity" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:weightSum="5"> + + <ImageView + android:id="@+id/subscriptions_bottom_app_bar_theme_preview_activity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:src="@drawable/ic_subscritptions_bottom_app_bar_24dp" + android:background="?attr/selectableItemBackgroundBorderless" /> + + <ImageView + android:id="@+id/multi_reddit_bottom_app_bar_theme_preview_activity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:src="@drawable/ic_multi_reddit_24dp" + android:background="?attr/selectableItemBackgroundBorderless" /> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:background="@android:color/transparent"/> + + <ImageView + android:id="@+id/message_bottom_app_bar_theme_preview_activity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:src="@drawable/ic_inbox_24dp" + android:background="?attr/selectableItemBackgroundBorderless" /> + + <ImageView + android:id="@+id/profile_bottom_app_bar_theme_preview_activity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginEnd="16dp" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:gravity="center" + android:src="@drawable/ic_account_circle_24dp" + android:background="?attr/selectableItemBackgroundBorderless" /> + + </LinearLayout> + </com.google.android.material.bottomappbar.BottomAppBar> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/fab_theme_preview_activity" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="@dimen/fab_margin" + app:srcCompat="@drawable/ic_add_day_night_24dp" + app:tint="@android:color/white" + app:layout_anchor="@id/bottom_navigation_theme_preview_activity" /> + +</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/activity_view_subreddit_detail.xml b/app/src/main/res/layout/activity_view_subreddit_detail.xml index 837df600..f7b2ee50 100644 --- a/app/src/main/res/layout/activity_view_subreddit_detail.xml +++ b/app/src/main/res/layout/activity_view_subreddit_detail.xml @@ -15,7 +15,7 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <com.google.android.material.appbar.AppBarLayout - android:id="@+id/appbar_layout_view_subreddit_detail" + android:id="@+id/appbar_layout_view_subreddit_detail_activity" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/toolbarAndTabBackgroundColor" diff --git a/app/src/main/res/layout/fragment_theme_preview_comments.xml b/app/src/main/res/layout/fragment_theme_preview_comments.xml new file mode 100644 index 00000000..89447a51 --- /dev/null +++ b/app/src/main/res/layout/fragment_theme_preview_comments.xml @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:context=".Fragment.ThemePreviewCommentsFragment"> + + <LinearLayout + android:id="@+id/linear_layout_theme_preview_comments_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <View + android:id="@+id/vertical_block_theme_preview_comments_fragment" + android:layout_width="4dp" + android:layout_height="match_parent" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + + <ImageView + android:id="@+id/author_type_image_view_theme_preview_comments_fragment" + android:layout_width="?attr/font_default" + android:layout_height="?attr/font_default" + android:layout_marginEnd="4dp" + android:src="@drawable/ic_mic_14dp" + app:layout_constraintBottom_toTopOf="@id/author_flair_text_view_theme_preview_comments_fragment" + app:layout_constraintEnd_toStartOf="@id/author_text_view_theme_preview_comments_fragment" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/author_text_view_theme_preview_comments_fragment" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:ellipsize="end" + android:maxLines="2" + android:text="@string/username_preview" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toTopOf="@id/author_flair_text_view_theme_preview_comments_fragment" + app:layout_constraintEnd_toStartOf="@+id/comment_time_text_view_theme_preview_comments_fragment" + app:layout_constraintStart_toEndOf="@id/author_type_image_view_theme_preview_comments_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/author_flair_text_view_theme_preview_comments_fragment" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:ellipsize="end" + android:maxLines="2" + android:text="@string/author_flair_preview" + android:textSize="?attr/font_12" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/comment_time_text_view_theme_preview_comments_fragment" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/author_text_view_theme_preview_comments_fragment" /> + + <TextView + android:id="@+id/comment_time_text_view_theme_preview_comments_fragment" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:gravity="end" + android:text="2 Hours" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <TextView + android:id="@+id/comment_markdown_view_theme_preview_comments_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:text="@string/comment_content_preview" + android:textSize="?attr/content_font_default" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/bottom_constraint_layout_theme_preview_comments_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingBottom="12dp" + android:paddingStart="4dp" + android:paddingEnd="4dp"> + + <ImageView + android:id="@+id/up_vote_button_theme_preview_comments_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:src="@drawable/ic_arrow_upward_grey_24dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" /> + + <TextView + android:id="@+id/score_text_view_theme_preview_comments_fragment" + android:layout_width="64dp" + android:layout_height="wrap_content" + android:gravity="center" + android:text="1234" + android:textSize="?attr/font_12" + android:textStyle="bold" + app:layout_constraintStart_toEndOf="@+id/up_vote_button_theme_preview_comments_fragment" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + + <ImageView + android:id="@+id/down_vote_button_theme_preview_comments_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:src="@drawable/ic_arrow_downward_grey_24dp" + android:tint="@android:color/tab_indicator_text" + app:layout_constraintStart_toEndOf="@+id/score_text_view_theme_preview_comments_fragment" + app:layout_constraintEnd_toStartOf="@id/more_button_theme_preview_comments_fragment" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintHorizontal_bias="0" /> + + <ImageView + android:id="@+id/more_button_theme_preview_comments_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:src="@drawable/ic_more_vert_grey_24dp" + app:layout_constraintEnd_toStartOf="@+id/expand_button_theme_preview_comments_fragment" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + + <ImageView + android:id="@+id/expand_button_theme_preview_comments_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:src="@drawable/ic_expand_less_grey_24dp" + android:tint="@android:color/tab_indicator_text" + app:layout_constraintEnd_toStartOf="@+id/save_button_theme_preview_comments_fragment" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + + <ImageView + android:id="@+id/save_button_theme_preview_comments_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:src="@drawable/ic_bookmark_border_grey_24dp" + app:layout_constraintEnd_toStartOf="@+id/reply_button_theme_preview_comments_fragment" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + + <ImageView + android:id="@+id/reply_button_theme_preview_comments_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingStart="8dp" + android:paddingEnd="8dp" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:src="@drawable/ic_reply_grey_24dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + + </androidx.constraintlayout.widget.ConstraintLayout> + + </LinearLayout> + + </LinearLayout> + + <View + android:id="@+id/divider_theme_preview_comments_fragment" + android:layout_width="match_parent" + android:layout_height="1dp" /> + + </LinearLayout> + +</androidx.core.widget.NestedScrollView>
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_theme_preview_posts.xml b/app/src/main/res/layout/fragment_theme_preview_posts.xml new file mode 100644 index 00000000..4b4f7cb0 --- /dev/null +++ b/app/src/main/res/layout/fragment_theme_preview_posts.xml @@ -0,0 +1,321 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <com.google.android.material.card.MaterialCardView + android:id="@+id/card_view_theme_preview_posts_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" + app:cardCornerRadius="16dp" + app:cardElevation="2dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="16dp"> + + <ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView + android:id="@+id/icon_gif_image_view_theme_preview_posts_fragment" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/subreddit_name_text_view_theme_preview_posts_fragment" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginStart="16dp" + android:layout_marginEnd="8dp" + android:text="@string/subreddit_preview" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toTopOf="@id/user_text_view_theme_preview_posts_fragment" + app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_theme_preview_posts_fragment" + app:layout_constraintStart_toEndOf="@id/icon_gif_image_view_theme_preview_posts_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/user_text_view_theme_preview_posts_fragment" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginEnd="8dp" + android:ellipsize="end" + android:maxLines="2" + android:text="@string/username_preview" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_theme_preview_posts_fragment" + app:layout_constraintHorizontal_bias="0" + app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_theme_preview_posts_fragment" + app:layout_constraintTop_toBottomOf="@+id/subreddit_name_text_view_theme_preview_posts_fragment" /> + + <ImageView + android:id="@+id/stickied_post_image_view_theme_preview_posts_fragment" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginEnd="8dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/guideline2" + app:layout_constraintStart_toEndOf="@id/subreddit_name_text_view_theme_preview_posts_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/post_time_text_view_best_theme_preview_posts_fragment" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:gravity="end" + android:text="2 Hours" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/guideline2" + app:layout_constraintTop_toTopOf="parent" /> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/guideline2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.6" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <TextView + android:id="@+id/title_text_view_best_theme_preview_posts_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="@string/post_title_preview" + android:textSize="?attr/title_font_18" /> + + <TextView + android:id="@+id/content_text_view_theme_preview_posts_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:maxLines="4" + android:text="@string/post_content_preview" + android:textSize="?attr/content_font_default" + android:ellipsize="end" /> + + <com.nex3z.flowlayout.FlowLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="16dp" + app:flChildSpacing="16dp" + app:flChildSpacingForLastRow="align" + app:flRowSpacing="8dp"> + + <com.libRG.CustomTextView + android:id="@+id/type_text_view_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="4dp" + android:text="@string/post_type_preview" + android:textColor="@android:color/white" + android:textSize="?attr/font_12" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/spoiler_custom_text_view_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:padding="4dp" + android:text="@string/spoiler" + android:textColor="@android:color/white" + android:textSize="?attr/font_12" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/nsfw_text_view_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="4dp" + android:text="@string/nsfw" + android:textColor="@android:color/white" + android:textSize="?attr/font_12" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/flair_custom_text_view_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:padding="4dp" + android:text="@string/flair_preview" + android:textColor="@android:color/white" + android:textSize="?attr/font_12" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawableStart="@drawable/gold" + android:drawablePadding="4dp" + android:text="@string/gilded_preview" + android:textColor="@color/gold" + android:textSize="?attr/font_default" /> + + <ImageView + android:id="@+id/archived_image_view_theme_preview_posts_fragment" + android:layout_width="24dp" + android:layout_height="24dp" + android:src="@drawable/ic_archive_outline" /> + + <ImageView + android:id="@+id/locked_image_view_theme_preview_posts_fragment" + android:layout_width="24dp" + android:layout_height="24dp" + android:src="@drawable/ic_outline_lock_24dp" /> + + <ImageView + android:id="@+id/crosspost_image_view_theme_preview_posts_fragment" + android:layout_width="24dp" + android:layout_height="24dp" + android:src="@drawable/crosspost" /> + + </com.nex3z.flowlayout.FlowLayout> + + <TextView + android:id="@+id/link_text_view_theme_preview_posts_fragment" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:text="abcd.efg" + android:textSize="?attr/font_12" /> + + <ProgressBar + android:id="@+id/progress_bar_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginBottom="16dp" /> + + <ImageView + android:id="@+id/image_view_no_preview_link_theme_preview_posts_fragment" + android:layout_width="match_parent" + android:layout_height="150dp" + android:scaleType="center" + android:src="@drawable/ic_link" + android:tint="@android:color/tab_indicator_text" + android:background="?attr/noPreviewLinkBackgroundColor" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/plus_button_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:padding="12dp" + android:src="@drawable/ic_arrow_upward_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/score_text_view_theme_preview_posts_fragment" + android:layout_width="64dp" + android:layout_height="wrap_content" + android:gravity="center" + android:text="1234" + android:textSize="?attr/font_12" + android:textStyle="bold" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/plus_button_theme_preview_posts_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/minus_button_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:padding="12dp" + android:src="@drawable/ic_arrow_downward_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/score_text_view_theme_preview_posts_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/comments_count_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawableStart="@drawable/ic_comment_grey_24dp" + android:drawablePadding="12dp" + android:gravity="center_vertical" + android:padding="12dp" + android:text="567" + android:textSize="?attr/font_12" + android:textStyle="bold" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/minus_button_theme_preview_posts_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/save_button_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:padding="12dp" + android:src="@drawable/ic_bookmark_border_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/share_button_theme_preview_posts_fragment" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintStart_toEndOf="@id/comments_count_theme_preview_posts_fragment" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/share_button_theme_preview_posts_fragment" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:padding="12dp" + android:src="@drawable/ic_share_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + </LinearLayout> + + </com.google.android.material.card.MaterialCardView> + +</androidx.core.widget.NestedScrollView>
\ No newline at end of file diff --git a/app/src/main/res/menu/customize_theme_activity.xml b/app/src/main/res/menu/customize_theme_activity.xml index 0e363e0f..b48416ae 100644 --- a/app/src/main/res/menu/customize_theme_activity.xml +++ b/app/src/main/res/menu/customize_theme_activity.xml @@ -2,9 +2,16 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item - android:id="@+id/action_save_customize_theme_activity" + android:id="@+id/action_preview_customize_theme_activity" android:orderInCategory="1" android:title="@string/action_save" + android:icon="@drawable/ic_preview_24dp" + app:showAsAction="ifRoom" /> + + <item + android:id="@+id/action_save_customize_theme_activity" + android:orderInCategory="2" + android:title="@string/action_save" android:icon="@drawable/ic_check_circle_toolbar_24dp" app:showAsAction="ifRoom" /> </menu>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc00e0f6..e87d9a60 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,6 +22,7 @@ <string name="custom_theme_listing_activity_label">Custom Themes</string> <string name="customize_theme_activity_label">Customize Theme</string> <string name="customize_theme_activity_create_theme_label">Create Theme</string> + <string name="theme_preview_activity_label">Theme Preview</string> <string name="navigation_drawer_open">Open navigation drawer</string> <string name="navigation_drawer_close">Close navigation drawer</string> @@ -658,5 +659,17 @@ <string name="delete_all_themes_success">Delete all themes successful</string> <string name="reset_all_settings_success">Reset all settings successful</string> + <string name="theme_preview">Theme Preview</string> + <string name="username_preview">u/Hostilenemy</string> + <string name="subreddit_preview">r/Infinity_For_Reddit</string> + <string name="primary_text_preview">Primary Text</string> + <string name="secondary_text_preview">Secondary Text</string> + <string name="post_title_preview">This is a post</string> + <string name="post_content_preview">This gravity joke is getting a bit old, but I fall for it every time.</string> + <string name="post_type_preview">POST</string> + <string name="flair_preview">Flair</string> + <string name="gilded_preview">x4</string> + <string name="author_flair_preview">Author Flair</string> + <string name="comment_content_preview">I got my girlfriend a “Get better soon” card.\nShe\'s not ill or anything, but she could definitely get better.</string> </resources> |