From 652014960663a2079f873b3fd1ff71f3e76c4df7 Mon Sep 17 00:00:00 2001 From: Dani Mahardhika Date: Sun, 11 Jun 2017 15:08:02 +0700 Subject: [PATCH] Update to release 1.2.8 - Fixed https://github.com/danimahardhika/wallpaperboard/issues/26 - Added more translation (French and Russian) - Added share app and rate & review to navigation drawer - Redesigned about, iconized social buttons - Removed default font to reduce library size --- .../activities/WallpaperBoardActivity.java | 30 ++++ .../WallpaperBoardPreviewActivity.java | 3 +- .../board/adapters/AboutAdapter.java | 112 +++++---------- .../board/adapters/AboutSocialAdapter.java | 118 +++++++++++++++ .../board/adapters/SettingsAdapter.java | 3 +- .../board/adapters/WallpapersAdapter.java | 3 +- .../board/fragments/WallpapersFragment.java | 20 ++- .../fragments/dialogs/CreditsFragment.java | 3 +- .../fragments/dialogs/FilterFragment.java | 3 +- .../dialogs/InAppBillingFragment.java | 3 +- .../fragments/dialogs/LanguagesFragment.java | 3 +- .../fragments/dialogs/LicensesFragment.java | 3 +- .../dialogs/RefreshDurationFragment.java | 3 +- .../dialogs/WallpaperOptionsFragment.java | 5 +- .../dialogs/WallpaperSettingsFragment.java | 3 +- .../board/helpers/LicenseCallbackHelper.java | 6 +- .../board/helpers/PreferencesHelper.java | 2 +- .../board/helpers/TapIntroHelper.java | 132 +++++++++++------ .../board/helpers/TypefaceHelper.java | 54 +++++++ .../dm/wallpaper/board/helpers/UrlHelper.java | 105 ++++++++++++++ .../board/helpers/WallpaperHelper.java | 43 ++++-- .../dm/wallpaper/board/items/Wallpaper.java | 3 +- .../ic_default_image_failed.png | Bin 2564 -> 4604 bytes .../ic_default_image_loading.png | Bin 2425 -> 4172 bytes .../ic_drawer_rate_review.png | Bin 0 -> 1448 bytes .../res/drawable-xxxhdpi/ic_drawer_share.png | Bin 0 -> 1587 bytes .../main/res/drawable/ic_toolbar_behance.xml | 32 +++++ .../main/res/drawable/ic_toolbar_dribbble.xml | 22 +++ .../main/res/drawable/ic_toolbar_email.xml | 9 ++ .../main/res/drawable/ic_toolbar_facebook.xml | 21 +++ .../main/res/drawable/ic_toolbar_github.xml | 26 ++++ .../res/drawable/ic_toolbar_google_plus.xml | 17 +++ .../res/drawable/ic_toolbar_instagram.xml | 25 ++++ .../res/drawable/ic_toolbar_pinterest.xml | 25 ++++ .../main/res/drawable/ic_toolbar_twitter.xml | 19 +++ .../main/res/drawable/ic_toolbar_website.xml | 9 ++ .../fragment_about_item_footer.xml | 46 +++--- .../fragment_about_item_header.xml | 57 +------- .../res/layout/fragment_about_item_footer.xml | 40 +++--- .../res/layout/fragment_about_item_header.xml | 46 +----- .../res/layout/fragment_about_item_social.xml | 9 ++ .../main/res/layout/fragment_wallpapers.xml | 3 +- .../main/res/menu/menu_navigation_view.xml | 20 ++- .../main/res/values-es/dashboard_strings.xml | 8 ++ .../main/res/values-fr/dashboard_strings.xml | 134 ++++++++++++++++++ .../main/res/values-hi/dashboard_strings.xml | 9 ++ .../main/res/values-it/dashboard_strings.xml | 58 +++++++- .../main/res/values-pl/dashboard_strings.xml | 9 +- library/src/main/res/values/attrs.xml | 1 - library/src/main/res/values/colors.xml | 6 - .../res/values/dashboard_configurations.xml | 40 +++--- .../main/res/values/dashboard_languages.xml | 4 + .../src/main/res/values/dashboard_strings.xml | 3 +- library/src/main/res/values/styles.xml | 7 - .../src/main/res/xml/dashboard_translator.xml | 31 +++- 55 files changed, 1049 insertions(+), 347 deletions(-) create mode 100644 library/src/main/java/com/dm/wallpaper/board/adapters/AboutSocialAdapter.java create mode 100644 library/src/main/java/com/dm/wallpaper/board/helpers/TypefaceHelper.java create mode 100644 library/src/main/java/com/dm/wallpaper/board/helpers/UrlHelper.java create mode 100644 library/src/main/res/drawable-xxxhdpi/ic_drawer_rate_review.png create mode 100644 library/src/main/res/drawable-xxxhdpi/ic_drawer_share.png create mode 100644 library/src/main/res/drawable/ic_toolbar_behance.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_dribbble.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_email.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_facebook.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_github.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_google_plus.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_instagram.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_pinterest.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_twitter.xml create mode 100644 library/src/main/res/drawable/ic_toolbar_website.xml create mode 100644 library/src/main/res/layout/fragment_about_item_social.xml create mode 100644 library/src/main/res/values-fr/dashboard_strings.xml diff --git a/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardActivity.java b/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardActivity.java index 52b3c0f9..e6ba7392 100644 --- a/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardActivity.java +++ b/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardActivity.java @@ -9,6 +9,7 @@ import android.graphics.Color; import android.graphics.Point; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -156,6 +157,7 @@ public void initMainActivity(@Nullable Bundle savedInstanceState, boolean isLice mPosition = mLastPosition = 0; if (savedInstanceState != null) { mPosition = mLastPosition = savedInstanceState.getInt(Extras.EXTRA_POSITION, 0); + onSearchExpanded(false); } setFragment(getFragment(mPosition)); @@ -231,6 +233,16 @@ public void onBackPressed() { setFragment(getFragment(mPosition)); return; } + + if (mFragmentTag.equals(Extras.TAG_WALLPAPERS)) { + Fragment fragment = mFragManager.findFragmentByTag(Extras.TAG_WALLPAPERS); + if (fragment != null) { + if (fragment instanceof WallpapersFragment) { + WallpapersFragment wallpapersFragment = (WallpapersFragment) fragment; + if (wallpapersFragment.scrollWallpapersToTop()) return; + } + } + } super.onBackPressed(); } @@ -396,6 +408,24 @@ public void onDrawerClosed(View drawerView) { else if (id == R.id.navigation_view_settings) mPosition = 2; else if (id == R.id.navigation_view_about) mPosition = 3; else if (id == R.id.navigation_view_donate) mPosition = 4; + else if (id == R.id.navigation_view_share) { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_SUBJECT, getResources().getString(R.string.share_app_subject, + getResources().getString(R.string.app_name))); + intent.putExtra(Intent.EXTRA_TEXT, getResources().getString(R.string.share_app_body, + getResources().getString(R.string.app_name), + "https://play.google.com/store/apps/details?id=" +getPackageName())); + startActivity(Intent.createChooser(intent, getResources().getString(R.string.email_client))); + return false; + + } else if (id == R.id.navigation_view_rate) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse( + "https://play.google.com/store/apps/details?id=" +getPackageName())); + intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); + startActivity(intent); + return false; + } item.setChecked(true); mDrawerLayout.closeDrawers(); diff --git a/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardPreviewActivity.java b/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardPreviewActivity.java index 7fff374d..0394dc72 100644 --- a/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardPreviewActivity.java +++ b/library/src/main/java/com/dm/wallpaper/board/activities/WallpaperBoardPreviewActivity.java @@ -42,6 +42,7 @@ import com.dm.wallpaper.board.fragments.dialogs.WallpaperSettingsFragment; import com.dm.wallpaper.board.helpers.LocaleHelper; import com.dm.wallpaper.board.helpers.TapIntroHelper; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.helpers.ViewHelper; import com.dm.wallpaper.board.helpers.WallpaperHelper; import com.dm.wallpaper.board.preferences.Preferences; @@ -274,7 +275,7 @@ public boolean onOptionsItemSelected(MenuItem item) { .autoDismiss(false) .maxLines(4) .fitSystemWindow() - .typeface("Font-Regular.ttf", "Font-Bold.ttf") + .typeface(TypefaceHelper.getRegular(this), TypefaceHelper.getBold(this)) .content(String.format(getResources().getString(R.string.wallpaper_download_exist), ("\"" +mName + WallpaperHelper.IMAGE_EXTENSION+ "\""))) .icon(R.drawable.ic_toolbar_download) diff --git a/library/src/main/java/com/dm/wallpaper/board/adapters/AboutAdapter.java b/library/src/main/java/com/dm/wallpaper/board/adapters/AboutAdapter.java index c6cc0388..a4d54f3d 100644 --- a/library/src/main/java/com/dm/wallpaper/board/adapters/AboutAdapter.java +++ b/library/src/main/java/com/dm/wallpaper/board/adapters/AboutAdapter.java @@ -7,8 +7,9 @@ import android.net.Uri; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.CardView; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; @@ -60,7 +61,6 @@ public class AboutAdapter extends RecyclerView.Adapter private int mItemCount; - private final boolean mCardMode; private final boolean mShowContributors; private static final int TYPE_HEADER = 0; @@ -72,8 +72,8 @@ public AboutAdapter(@NonNull Context context, int spanCount) { mContext = context; mItemCount = 2; - mCardMode = (spanCount > 1); - if (!mCardMode) { + boolean cardMode = (spanCount > 1); + if (!cardMode) { mItemCount += 1; } @@ -148,7 +148,7 @@ public int getItemViewType(int position) { return TYPE_BOTTOM_SHADOW; } - class HeaderViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + class HeaderViewHolder extends RecyclerView.ViewHolder { @BindView(R2.id.image) ImageView image; @@ -156,16 +156,28 @@ class HeaderViewHolder extends RecyclerView.ViewHolder implements View.OnClickLi CircularImageView profile; @BindView(R2.id.subtitle) HtmlTextView subtitle; - @BindView(R2.id.email) - AppCompatButton email; - @BindView(R2.id.link1) - AppCompatButton link1; - @BindView(R2.id.link2) - AppCompatButton link2; HeaderViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); + RecyclerView recyclerView = ButterKnife.findById(itemView, R.id.recyclerview); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, true)); + recyclerView.setHasFixedSize(true); + + String[] urls = mContext.getResources().getStringArray(R.array.about_social_links); + if (urls.length == 0) { + recyclerView.setVisibility(View.GONE); + + subtitle.setPadding( + subtitle.getPaddingLeft(), + subtitle.getPaddingTop(), + subtitle.getPaddingRight(), + subtitle.getPaddingBottom() + mContext.getResources().getDimensionPixelSize(R.dimen.content_margin)); + } else { + recyclerView.setAdapter(new AboutSocialAdapter(mContext, urls)); + } + subtitle.setHtml(mContext.getResources().getString(R.string.about_desc)); CardView card = ButterKnife.findById(itemView, R.id.card); @@ -175,59 +187,6 @@ class HeaderViewHolder extends RecyclerView.ViewHolder implements View.OnClickLi profile.setShadowRadius(0f); profile.setShadowColor(Color.TRANSPARENT); } - - if (!mCardMode) { - int accent = ColorHelper.getAttributeColor(mContext, R.attr.colorAccent); - int cardColor = ColorHelper.getAttributeColor(mContext, R.attr.card_background); - email.setTextColor(ColorHelper.getTitleTextColor(accent)); - link1.setTextColor(ColorHelper.getTitleTextColor(cardColor)); - link2.setTextColor(ColorHelper.getTitleTextColor(cardColor)); - } - - String emailText = mContext.getResources().getString(R.string.about_email); - if (emailText.length() == 0) email.setVisibility(View.GONE); - String link2Text = mContext.getResources().getString(R.string.about_link_2_url); - if (link2Text.length() == 0) link2.setVisibility(View.GONE); - - email.setOnClickListener(this); - link1.setOnClickListener(this); - link2.setOnClickListener(this); - } - - @Override - public void onClick(View view) { - int id = view.getId(); - if (id == R.id.email) { - try { - final Intent email = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( - "mailto", mContext.getResources().getString( - R.string.about_email), null)); - email.putExtra(Intent.EXTRA_SUBJECT, (mContext.getResources().getString( - R.string.app_name))); - mContext.startActivity(Intent.createChooser(email, - mContext.getResources().getString(R.string.email_client))); - return; - } - catch (ActivityNotFoundException e) { - LogUtil.e(Log.getStackTraceString(e)); - } - return; - } - - Intent intent = null; - if (id == R.id.link1) { - intent = new Intent(Intent.ACTION_VIEW, Uri.parse( - mContext.getResources().getString(R.string.about_link_1_url))); - } else if (id == R.id.link2) { - intent = new Intent(Intent.ACTION_VIEW, Uri.parse( - mContext.getResources().getString(R.string.about_link_2_url))); - } - - try { - mContext.startActivity(intent); - } catch (NullPointerException | ActivityNotFoundException e) { - LogUtil.e(Log.getStackTraceString(e)); - } } } @@ -260,9 +219,11 @@ public void onClick(View view) { class FooterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { @BindView(R2.id.about_dev_github) - AppCompatButton link1; + ImageView github; @BindView(R2.id.about_dev_google_plus) - AppCompatButton link2; + ImageView googlePlus; + @BindView(R2.id.about_dev_instagram) + ImageView instagram; @BindView(R2.id.about_dashboard_licenses) TextView licenses; @BindView(R2.id.about_dashboard_contributors) @@ -280,19 +241,17 @@ class FooterViewHolder extends RecyclerView.ViewHolder implements View.OnClickLi } int color = ColorHelper.getAttributeColor(mContext, android.R.attr.textColorPrimary); - TextView title = (TextView) itemView.findViewById(R.id.about_dashboard_title); + TextView title = ButterKnife.findById(itemView, R.id.about_dashboard_title); title.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable( mContext, R.drawable.ic_toolbar_dashboard, color), null, null, null); - if (!mCardMode) { - int accent = ColorHelper.getAttributeColor(mContext, R.attr.colorAccent); - int cardColor = ColorHelper.getAttributeColor(mContext, R.attr.card_background); - link1.setTextColor(ColorHelper.getTitleTextColor(accent)); - link2.setTextColor(ColorHelper.getTitleTextColor(cardColor)); - } + instagram.setImageDrawable(DrawableHelper.getTintedDrawable(mContext, R.drawable.ic_toolbar_instagram, color)); + googlePlus.setImageDrawable(DrawableHelper.getTintedDrawable(mContext, R.drawable.ic_toolbar_google_plus, color)); + github.setImageDrawable(DrawableHelper.getTintedDrawable(mContext, R.drawable.ic_toolbar_github, color)); - link1.setOnClickListener(this); - link2.setOnClickListener(this); + instagram.setOnClickListener(this); + googlePlus.setOnClickListener(this); + github.setOnClickListener(this); licenses.setOnClickListener(this); contributors.setOnClickListener(this); translator.setOnClickListener(this); @@ -325,6 +284,9 @@ public void onClick(View view) { } else if (id == R.id.about_dev_github) { intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mContext .getResources().getString(R.string.about_dashboard_dev_github_url))); + } else if (id == R.id.about_dev_instagram) { + intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mContext + .getResources().getString(R.string.about_dashboard_dev_instagram_url))); } try { diff --git a/library/src/main/java/com/dm/wallpaper/board/adapters/AboutSocialAdapter.java b/library/src/main/java/com/dm/wallpaper/board/adapters/AboutSocialAdapter.java new file mode 100644 index 00000000..6bc2552d --- /dev/null +++ b/library/src/main/java/com/dm/wallpaper/board/adapters/AboutSocialAdapter.java @@ -0,0 +1,118 @@ +package com.dm.wallpaper.board.adapters; + +import android.content.ActivityNotFoundException; +import android.content.Context; +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.dm.wallpaper.board.R; +import com.dm.wallpaper.board.helpers.UrlHelper; +import com.dm.wallpaper.board.utils.LogUtil; + +/* + * Wallpaper Board + * + * Copyright (c) 2017 Dani Mahardhika + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class AboutSocialAdapter extends RecyclerView.Adapter { + + private final Context mContext; + private final String[] mUrls; + + public AboutSocialAdapter(@NonNull Context context, @NonNull String[] urls) { + mContext = context; + mUrls = urls; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate( + R.layout.fragment_about_item_social, parent, false); + return new SocialViewHolder(view); + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + SocialViewHolder socialViewHolder = (SocialViewHolder) holder; + UrlHelper.Type type = UrlHelper.getType(mUrls[position]); + Drawable drawable = UrlHelper.getSocialIcon(mContext, type); + + if (drawable != null && type != UrlHelper.Type.INVALID) { + socialViewHolder.image.setImageDrawable(drawable); + socialViewHolder.image.setVisibility(View.VISIBLE); + } else { + socialViewHolder.image.setVisibility(View.GONE); + } + } + + @Override + public int getItemCount() { + return mUrls.length; + } + + private class SocialViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + + private final ImageView image; + + SocialViewHolder(View itemView) { + super(itemView); + image = (ImageView) itemView.findViewById(R.id.image); + + image.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + int id = view.getId(); + int position = getAdapterPosition(); + if (position < 0 || position > mUrls.length) return; + + if (id == R.id.image) { + UrlHelper.Type type = UrlHelper.getType(mUrls[position]); + if (type == UrlHelper.Type.INVALID) return; + + if (type == UrlHelper.Type.EMAIL) { + try { + final Intent email = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto", mUrls[position], null)); + email.putExtra(Intent.EXTRA_SUBJECT, (mContext.getResources().getString( + R.string.app_name))); + mContext.startActivity(Intent.createChooser(email, + mContext.getResources().getString(R.string.email_client))); + } + catch (ActivityNotFoundException e) { + LogUtil.e(Log.getStackTraceString(e)); + } + return; + } + + try { + mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(mUrls[position]))); + } catch (ActivityNotFoundException e) { + LogUtil.e(Log.getStackTraceString(e)); + } + } + } + } +} diff --git a/library/src/main/java/com/dm/wallpaper/board/adapters/SettingsAdapter.java b/library/src/main/java/com/dm/wallpaper/board/adapters/SettingsAdapter.java index 0a0736da..b1a4ae7f 100644 --- a/library/src/main/java/com/dm/wallpaper/board/adapters/SettingsAdapter.java +++ b/library/src/main/java/com/dm/wallpaper/board/adapters/SettingsAdapter.java @@ -20,6 +20,7 @@ import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; import com.dm.wallpaper.board.fragments.dialogs.LanguagesFragment; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.items.Setting; import com.dm.wallpaper.board.preferences.Preferences; import com.dm.wallpaper.board.utils.LogUtil; @@ -174,7 +175,7 @@ public void onClick(View view) { switch (setting.getType()) { case CACHE: new MaterialDialog.Builder(mContext) - .typeface("Font-Medium.ttf", "Font-Regular.ttf") + .typeface(TypefaceHelper.getMedium(mContext), TypefaceHelper.getRegular(mContext)) .content(R.string.pref_data_cache_clear_dialog) .positiveText(R.string.clear) .negativeText(android.R.string.cancel) diff --git a/library/src/main/java/com/dm/wallpaper/board/adapters/WallpapersAdapter.java b/library/src/main/java/com/dm/wallpaper/board/adapters/WallpapersAdapter.java index 84e33509..2210ee01 100644 --- a/library/src/main/java/com/dm/wallpaper/board/adapters/WallpapersAdapter.java +++ b/library/src/main/java/com/dm/wallpaper/board/adapters/WallpapersAdapter.java @@ -35,6 +35,7 @@ import com.dm.wallpaper.board.fragments.WallpaperSearchFragment; import com.dm.wallpaper.board.fragments.WallpapersFragment; import com.dm.wallpaper.board.fragments.dialogs.WallpaperOptionsFragment; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.helpers.WallpaperHelper; import com.dm.wallpaper.board.items.Wallpaper; import com.dm.wallpaper.board.preferences.Preferences; @@ -261,7 +262,7 @@ public void onClick(View view) { .theme(new CafeBarTheme.Custom(ColorHelper.getAttributeColor( mContext, R.attr.card_background))) .fitSystemWindow() - .typeface("Font-Regular.ttf", "Font-Bold.ttf") + .typeface(TypefaceHelper.getRegular(mContext), TypefaceHelper.getBold(mContext)) .content(String.format( mContext.getResources().getString(mWallpapers.get(position).isFavorite() ? R.string.wallpaper_favorite_added : R.string.wallpaper_favorite_removed), diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/WallpapersFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/WallpapersFragment.java index 3800348e..a2a23ad2 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/WallpapersFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/WallpapersFragment.java @@ -8,7 +8,6 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.ContextCompat; import android.support.v4.view.MenuItemCompat; import android.support.v4.view.animation.LinearOutSlowInInterpolator; import android.support.v4.widget.SwipeRefreshLayout; @@ -197,10 +196,24 @@ public void onWallpaperSelected(int position) { mRecyclerView.scrollToPosition(position); } + public boolean scrollWallpapersToTop() { + if (mRecyclerView != null) { + if (!(mRecyclerView.getLayoutManager() instanceof GridLayoutManager)) return false; + + GridLayoutManager manager = (GridLayoutManager) mRecyclerView.getLayoutManager(); + int position = manager.findFirstVisibleItemPosition(); + if (position > 0) { + mRecyclerView.smoothScrollToPosition(0); + return true; + } + } + return false; + } + public void initPopupBubble() { - int color = ContextCompat.getColor(getActivity(), R.color.popupBubbleText); + int color = ColorHelper.getAttributeColor(getActivity(), R.attr.colorAccent); mPopupBubble.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable( - getActivity(), R.drawable.ic_toolbar_arrow_up, color), null, null, null); + getActivity(), R.drawable.ic_toolbar_arrow_up, ColorHelper.getTitleTextColor(color)), null, null, null); mPopupBubble.setOnClickListener(view -> { WallpaperBoardListener listener = (WallpaperBoardListener) getActivity(); listener.onWallpapersChecked(null); @@ -299,6 +312,7 @@ protected Boolean doInBackground(Void... voids) { database.deleteCategories(); database.addCategories(wallpapersJson.getCategories); + database.deleteWallpapers(deleted); database.addWallpapers(newlyAdded); diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/CreditsFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/CreditsFragment.java index 0e3b5a2a..1874b112 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/CreditsFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/CreditsFragment.java @@ -16,6 +16,7 @@ import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; import com.dm.wallpaper.board.adapters.CreditsAdapter; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.items.Credit; import com.dm.wallpaper.board.utils.Extras; import com.dm.wallpaper.board.utils.LogUtil; @@ -89,7 +90,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_credits, false); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); builder.title(getTitle(mType)); builder.positiveText(R.string.close); diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/FilterFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/FilterFragment.java index 2c601032..11c976b2 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/FilterFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/FilterFragment.java @@ -19,6 +19,7 @@ import com.dm.wallpaper.board.adapters.FilterAdapter; import com.dm.wallpaper.board.databases.Database; import com.dm.wallpaper.board.fragments.WallpapersFragment; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.items.Category; import com.dm.wallpaper.board.utils.Extras; import com.dm.wallpaper.board.utils.LogUtil; @@ -82,7 +83,7 @@ public static void showFilterDialog(FragmentManager fm, boolean isMuzei) { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); builder.title(mIsMuzei ? R.string.muzei_category : R.string.wallpaper_filter); builder.customView(R.layout.fragment_filter, false); MaterialDialog dialog = builder.build(); diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/InAppBillingFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/InAppBillingFragment.java index eb217a69..a560567b 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/InAppBillingFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/InAppBillingFragment.java @@ -22,6 +22,7 @@ import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; import com.dm.wallpaper.board.adapters.InAppBillingAdapter; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.items.InAppBilling; import com.dm.wallpaper.board.utils.Extras; import com.dm.wallpaper.board.utils.LogUtil; @@ -101,7 +102,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_inappbilling, false) - .typeface("Font-Medium.ttf", "Font-Regular.ttf") + .typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())) .title(R.string.navigation_view_donate) .positiveText(R.string.donate) .negativeText(R.string.close) diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LanguagesFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LanguagesFragment.java index 88d7597b..7996c62e 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LanguagesFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LanguagesFragment.java @@ -17,6 +17,7 @@ import com.dm.wallpaper.board.R2; import com.dm.wallpaper.board.adapters.LanguagesAdapter; import com.dm.wallpaper.board.helpers.LocaleHelper; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.items.Language; import com.dm.wallpaper.board.preferences.Preferences; import com.dm.wallpaper.board.utils.LogUtil; @@ -78,7 +79,7 @@ public static void showLanguageChooser(@NonNull FragmentManager fm) { public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_languages, false); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); builder.title(R.string.pref_language_header); MaterialDialog dialog = builder.build(); dialog.show(); diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LicensesFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LicensesFragment.java index ad93d04e..993d8a91 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LicensesFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/LicensesFragment.java @@ -17,6 +17,7 @@ import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; import com.dm.wallpaper.board.helpers.LocaleHelper; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.utils.LogUtil; import java.io.BufferedReader; @@ -75,7 +76,7 @@ public static void showLicensesDialog(FragmentManager fm) { public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_licenses, false); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); builder.title(R.string.about_open_source_licenses); MaterialDialog dialog = builder.build(); dialog.show(); diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/RefreshDurationFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/RefreshDurationFragment.java index 684ef587..bfd6b989 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/RefreshDurationFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/RefreshDurationFragment.java @@ -19,6 +19,7 @@ import com.danimahardhika.android.helpers.core.DrawableHelper; import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.utils.LogUtil; import com.dm.wallpaper.board.utils.listeners.RefreshDurationListener; @@ -86,7 +87,7 @@ public static void showRefreshDurationDialog(FragmentManager fm, int rotateTime, public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_refresh_duration, true); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); builder.title(R.string.muzei_refresh_duration); builder.positiveText(R.string.close); diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperOptionsFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperOptionsFragment.java index 27af06c2..595513c1 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperOptionsFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperOptionsFragment.java @@ -21,6 +21,7 @@ import com.danimahardhika.cafebar.CafeBarTheme; import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.helpers.WallpaperHelper; import com.dm.wallpaper.board.utils.Extras; @@ -90,7 +91,7 @@ public static void showWallpaperOptionsDialog(FragmentManager fm, String url, St public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); builder.customView(R.layout.fragment_wallpaper_options, false); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); MaterialDialog dialog = builder.build(); dialog.show(); @@ -154,7 +155,7 @@ public void onClick(View view) { .autoDismiss(false) .fitSystemWindow() .maxLines(4) - .typeface("Font-Regular.ttf", "Font-Bold.ttf") + .typeface(TypefaceHelper.getRegular(context), TypefaceHelper.getBold(context)) .content(String.format(getResources().getString(R.string.wallpaper_download_exist), ("\"" +mName + WallpaperHelper.IMAGE_EXTENSION+ "\""))) .icon(R.drawable.ic_toolbar_download) diff --git a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperSettingsFragment.java b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperSettingsFragment.java index 146ac303..3dc8bf39 100644 --- a/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperSettingsFragment.java +++ b/library/src/main/java/com/dm/wallpaper/board/fragments/dialogs/WallpaperSettingsFragment.java @@ -18,6 +18,7 @@ import com.afollestad.materialdialogs.MaterialDialog; import com.dm.wallpaper.board.R; import com.dm.wallpaper.board.R2; +import com.dm.wallpaper.board.helpers.TypefaceHelper; import com.dm.wallpaper.board.preferences.Preferences; import butterknife.BindView; @@ -82,7 +83,7 @@ public static void showWallpaperSettings(FragmentManager fm) { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(getActivity()), TypefaceHelper.getRegular(getActivity())); builder.title(R.string.menu_wallpaper_settings); builder.customView(R.layout.fragment_wallpaper_settings, false); builder.positiveText(R.string.close); diff --git a/library/src/main/java/com/dm/wallpaper/board/helpers/LicenseCallbackHelper.java b/library/src/main/java/com/dm/wallpaper/board/helpers/LicenseCallbackHelper.java index 6075b2dd..cc6804c9 100644 --- a/library/src/main/java/com/dm/wallpaper/board/helpers/LicenseCallbackHelper.java +++ b/library/src/main/java/com/dm/wallpaper/board/helpers/LicenseCallbackHelper.java @@ -37,7 +37,7 @@ public LicenseCallbackHelper(@NonNull Context context) { mContext = context; MaterialDialog.Builder builder = new MaterialDialog.Builder(mContext); - builder.typeface("Font-Medium.ttf", "Font-Regular.ttf"); + builder.typeface(TypefaceHelper.getMedium(mContext), TypefaceHelper.getRegular(mContext)); builder.content(R.string.license_checking) .progress(true, 0); @@ -66,7 +66,7 @@ private void showLicenseDialog(LicenseHelper.Status status) { int message = status == LicenseHelper.Status.SUCCESS ? R.string.license_check_success : R.string.license_check_failed; new MaterialDialog.Builder(mContext) - .typeface("Font-Medium.ttf", "Font-Regular.ttf") + .typeface(TypefaceHelper.getMedium(mContext), TypefaceHelper.getRegular(mContext)) .title(R.string.license_check) .content(message) .positiveText(R.string.close) @@ -81,7 +81,7 @@ private void showLicenseDialog(LicenseHelper.Status status) { private void showRetryDialog() { new MaterialDialog.Builder(mContext) - .typeface("Font-Medium.ttf", "Font-Regular.ttf") + .typeface(TypefaceHelper.getMedium(mContext), TypefaceHelper.getRegular(mContext)) .title(R.string.license_check) .content(R.string.license_check_retry) .positiveText(R.string.close) diff --git a/library/src/main/java/com/dm/wallpaper/board/helpers/PreferencesHelper.java b/library/src/main/java/com/dm/wallpaper/board/helpers/PreferencesHelper.java index 0da0d9cd..d780434f 100644 --- a/library/src/main/java/com/dm/wallpaper/board/helpers/PreferencesHelper.java +++ b/library/src/main/java/com/dm/wallpaper/board/helpers/PreferencesHelper.java @@ -42,7 +42,7 @@ public class PreferencesHelper { private static final String KEY_ROTATE_TIME = "rotate_time"; private static final String KEY_ROTATE_MINUTE = "rotate_minute"; private static final String KEY_WIFI_ONLY = "wifi_only"; - private static final String KEY_WALLS_DIRECTORY = "wallpaper_directory"; + private static final String KEY_WALLS_DIRECTORY = "wallpaper_download_directory"; private static final String KEY_AVAILABLE_WALLPAPERS_COUNT = "available_wallpapers_count"; private static final String KEY_WALLPAPER_CROP = "wallpaper_crop"; private static final String KEY_APPLY_LOCKSCREEN = "apply_lockscreen"; diff --git a/library/src/main/java/com/dm/wallpaper/board/helpers/TapIntroHelper.java b/library/src/main/java/com/dm/wallpaper/board/helpers/TapIntroHelper.java index 1ae7acd7..c1cd9160 100644 --- a/library/src/main/java/com/dm/wallpaper/board/helpers/TapIntroHelper.java +++ b/library/src/main/java/com/dm/wallpaper/board/helpers/TapIntroHelper.java @@ -54,39 +54,49 @@ public static void showWallpapersIntro(@NonNull Context context, @Nullable Recyc TapTargetSequence tapTargetSequence = new TapTargetSequence(activity); tapTargetSequence.continueOnCancel(true); - Typeface title = Typeface.createFromAsset(context.getAssets(), "fonts/Font-Medium.ttf"); - Typeface description = Typeface.createFromAsset(context.getAssets(), "fonts/Font-Regular.ttf"); + Typeface title = TypefaceHelper.getMedium(context); + Typeface description = TypefaceHelper.getRegular(context); if (toolbar != null) { - tapTargetSequence.target(TapTarget.forToolbarNavigationIcon(toolbar, + TapTarget tapTarget = TapTarget.forToolbarNavigationIcon(toolbar, context.getResources().getString(R.string.tap_intro_wallpapers_navigation), context.getResources().getString(R.string.tap_intro_wallpapers_navigation_desc)) .titleTextColorInt(primary) .descriptionTextColorInt(secondary) .targetCircleColorInt(primary) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); - tapTargetSequence.target(TapTarget.forToolbarMenuItem(toolbar, R.id.menu_search, + TapTarget tapTarget1 = TapTarget.forToolbarMenuItem(toolbar, R.id.menu_search, context.getResources().getString(R.string.tap_intro_wallpapers_search), context.getResources().getString(R.string.tap_intro_wallpapers_search_desc)) .titleTextColorInt(primary) .descriptionTextColorInt(secondary) .targetCircleColorInt(primary) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); - tapTargetSequence.target(TapTarget.forToolbarMenuItem(toolbar, R.id.menu_filter, + TapTarget tapTarget2 = TapTarget.forToolbarMenuItem(toolbar, R.id.menu_filter, context.getResources().getString(R.string.tap_intro_wallpapers_filter), context.getResources().getString(R.string.tap_intro_wallpapers_filter_desc)) .titleTextColorInt(primary) .descriptionTextColorInt(secondary) .targetCircleColorInt(primary) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); + + if (title != null) { + tapTarget.titleTypeface(title); + tapTarget1.titleTypeface(title); + tapTarget2.titleTypeface(title); + } + + if (description != null) { + tapTarget.descriptionTypeface(description); + tapTarget1.descriptionTypeface(description); + tapTarget2.descriptionTypeface(description); + } + + tapTargetSequence.target(tapTarget); + tapTargetSequence.target(tapTarget1); + tapTargetSequence.target(tapTarget2); } if (recyclerView != null) { @@ -103,7 +113,8 @@ public static void showWallpapersIntro(@NonNull Context context, @Nullable Recyc String desc = String.format(context.getResources().getString(R.string.tap_intro_wallpapers_option_desc), context.getResources().getBoolean(R.bool.enable_wallpaper_download) ? context.getResources().getString(R.string.tap_intro_wallpapers_option_desc_download) : ""); - tapTargetSequence.target(TapTarget.forView(view, + + TapTarget tapTarget = TapTarget.forView(view, context.getResources().getString(R.string.tap_intro_wallpapers_option), desc) .titleTextColorInt(primary) @@ -111,11 +122,9 @@ public static void showWallpapersIntro(@NonNull Context context, @Nullable Recyc .targetCircleColorInt(primary) .targetRadius((int) targetRadius) .tintTarget(false) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); - tapTargetSequence.target(TapTarget.forView(view, + TapTarget tapTarget1 = TapTarget.forView(view, context.getResources().getString(R.string.tap_intro_wallpapers_preview), context.getResources().getString(R.string.tap_intro_wallpapers_preview_desc)) .titleTextColorInt(primary) @@ -123,22 +132,41 @@ public static void showWallpapersIntro(@NonNull Context context, @Nullable Recyc .targetCircleColorInt(primary) .targetRadius((int) targetRadius) .tintTarget(false) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); + + if (title != null) { + tapTarget.titleTypeface(title); + tapTarget1.titleTypeface(title); + } + + if (description != null) { + tapTarget.descriptionTypeface(description); + tapTarget1.descriptionTypeface(description); + } + + tapTargetSequence.target(tapTarget); + tapTargetSequence.target(tapTarget1); } View favorite = holder.itemView.findViewById(R.id.favorite); if (favorite != null) { - tapTargetSequence.target(TapTarget.forView(favorite, + TapTarget tapTarget = TapTarget.forView(favorite, context.getResources().getString(R.string.tap_intro_wallpapers_favorite), context.getResources().getString(R.string.tap_intro_wallpapers_favorite_desc)) .titleTextColorInt(primary) .descriptionTextColorInt(secondary) .targetCircleColorInt(primary) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); + + if (title != null) { + tapTarget.titleTypeface(title); + } + + if (description != null) { + tapTarget.descriptionTypeface(description); + } + + tapTargetSequence.target(tapTarget); } } } @@ -179,38 +207,54 @@ public static void showWallpaperPreviewIntro(@NonNull Context context, @ColorInt TapTargetSequence tapTargetSequence = new TapTargetSequence(activity); tapTargetSequence.continueOnCancel(true); - Typeface title = Typeface.createFromAsset(context.getAssets(), "fonts/Font-Medium.ttf"); - Typeface description = Typeface.createFromAsset(context.getAssets(), "fonts/Font-Regular.ttf"); + Typeface title = TypefaceHelper.getMedium(context); + Typeface description = TypefaceHelper.getRegular(context); if (toolbar != null) { - tapTargetSequence.target(TapTarget.forToolbarMenuItem(toolbar, R.id.menu_wallpaper_settings, + TapTarget tapTarget = TapTarget.forToolbarMenuItem(toolbar, R.id.menu_wallpaper_settings, context.getResources().getString(R.string.tap_intro_wallpaper_preview_settings), context.getResources().getString(R.string.tap_intro_wallpaper_preview_settings_desc)) .titleTextColorInt(primary) .descriptionTextColorInt(secondary) .targetCircleColorInt(primary) .outerCircleColorInt(color) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); + + if (title != null) { + tapTarget.titleTypeface(title); + } + + if (description != null) { + tapTarget.descriptionTypeface(description); + } + + tapTargetSequence.target(tapTarget); if (context.getResources().getBoolean(R.bool.enable_wallpaper_download)) { - tapTargetSequence.target(TapTarget.forToolbarMenuItem(toolbar, R.id.menu_save, + TapTarget tapTarget1 = TapTarget.forToolbarMenuItem(toolbar, R.id.menu_save, context.getResources().getString(R.string.tap_intro_wallpaper_preview_save), context.getResources().getString(R.string.tap_intro_wallpaper_preview_save_desc)) .titleTextColorInt(primary) .descriptionTextColorInt(secondary) .targetCircleColorInt(primary) .outerCircleColorInt(color) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); + + if (title != null) { + tapTarget1.titleTypeface(title); + } + + if (description != null) { + tapTarget1.descriptionTypeface(description); + } + + tapTargetSequence.target(tapTarget1); } } View fab = activity.findViewById(R.id.fab); if (fab != null) { - tapTargetSequence.target(TapTarget.forView(fab, + TapTarget tapTarget = TapTarget.forView(fab, context.getResources().getString(R.string.tap_intro_wallpaper_preview_apply), context.getResources().getString(R.string.tap_intro_wallpaper_preview_apply_desc)) .titleTextColorInt(primary) @@ -218,9 +262,17 @@ public static void showWallpaperPreviewIntro(@NonNull Context context, @ColorInt .targetCircleColorInt(primary) .outerCircleColorInt(color) .tintTarget(false) - .drawShadow(Preferences.get(context).isShadowEnabled()) - .titleTypeface(title) - .descriptionTypeface(description)); + .drawShadow(Preferences.get(context).isShadowEnabled()); + + if (title != null) { + tapTarget.titleTypeface(title); + } + + if (description != null) { + tapTarget.descriptionTypeface(description); + } + + tapTargetSequence.target(tapTarget); } tapTargetSequence.listener(new TapTargetSequence.Listener() { diff --git a/library/src/main/java/com/dm/wallpaper/board/helpers/TypefaceHelper.java b/library/src/main/java/com/dm/wallpaper/board/helpers/TypefaceHelper.java new file mode 100644 index 00000000..88bea993 --- /dev/null +++ b/library/src/main/java/com/dm/wallpaper/board/helpers/TypefaceHelper.java @@ -0,0 +1,54 @@ +package com.dm.wallpaper.board.helpers; + +import android.content.Context; +import android.graphics.Typeface; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + +/* + * Wallpaper Board + * + * Copyright (c) 2017 Dani Mahardhika + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class TypefaceHelper { + + @Nullable + public static Typeface getRegular(@NonNull Context context) { + try { + return Typeface.createFromAsset(context.getAssets(), "fonts/Font-Regular.ttf"); + } catch (Exception e) { + return null; + } + } + + @Nullable + public static Typeface getMedium(@NonNull Context context) { + try { + return Typeface.createFromAsset(context.getAssets(), "fonts/Font-Medium.ttf"); + } catch (Exception e) { + return null; + } + } + + @Nullable + public static Typeface getBold(@NonNull Context context) { + try { + return Typeface.createFromAsset(context.getAssets(), "fonts/Font-Bold.ttf"); + } catch (Exception e) { + return null; + } + } +} diff --git a/library/src/main/java/com/dm/wallpaper/board/helpers/UrlHelper.java b/library/src/main/java/com/dm/wallpaper/board/helpers/UrlHelper.java new file mode 100644 index 00000000..a307651a --- /dev/null +++ b/library/src/main/java/com/dm/wallpaper/board/helpers/UrlHelper.java @@ -0,0 +1,105 @@ +package com.dm.wallpaper.board.helpers; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.util.Patterns; +import android.webkit.URLUtil; + +import com.danimahardhika.android.helpers.core.ColorHelper; +import com.dm.wallpaper.board.R; + +import static com.danimahardhika.android.helpers.core.DrawableHelper.getTintedDrawable; + +/* + * Wallpaper Board + * + * Copyright (c) 2017 Dani Mahardhika + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +public class UrlHelper { + + @Nullable + public static Drawable getSocialIcon(@NonNull Context context, @NonNull Type type) { + int color = ColorHelper.getAttributeColor(context, android.R.attr.textColorPrimary); + switch (type) { + case EMAIL: + return getTintedDrawable(context, R.drawable.ic_toolbar_email, color); + case BEHANCE: + return getTintedDrawable(context, R.drawable.ic_toolbar_behance, color); + case DRIBBBLE: + return getTintedDrawable(context, R.drawable.ic_toolbar_dribbble, color); + case FACEBOOK: + return getTintedDrawable(context, R.drawable.ic_toolbar_facebook, color); + case GITHUB: + return getTintedDrawable(context, R.drawable.ic_toolbar_github, color); + case GOOGLE_PLUS: + return getTintedDrawable(context, R.drawable.ic_toolbar_google_plus, color); + case INSTAGRAM: + return getTintedDrawable(context, R.drawable.ic_toolbar_instagram, color); + case PINTEREST: + return getTintedDrawable(context, R.drawable.ic_toolbar_pinterest, color); + case TWITTER: + return getTintedDrawable(context, R.drawable.ic_toolbar_twitter, color); + default: + return getTintedDrawable(context, R.drawable.ic_toolbar_website, color); + } + } + + public static Type getType(String url) { + if (url == null) return Type.INVALID; + if (!URLUtil.isValidUrl(url)) { + if (Patterns.EMAIL_ADDRESS.matcher(url).matches()) { + return Type.EMAIL; + } + return Type.INVALID; + } + + if (url.contains("behance.")) { + return Type.BEHANCE; + } else if (url.contains("dribbble.")) { + return Type.DRIBBBLE; + } else if (url.contains("facebook.")) { + return Type.FACEBOOK; + } else if (url.contains("github.")) { + return Type.GITHUB; + } else if (url.contains("plus.google.")) { + return Type.GOOGLE_PLUS; + } else if (url.contains("instagram.")) { + return Type.INSTAGRAM; + } else if (url.contains("pinterest.")) { + return Type.PINTEREST; + } else if (url.contains("twitter.")) { + return Type.TWITTER; + } else { + return Type.UNKNOWN; + } + } + + public enum Type { + EMAIL, + BEHANCE, + DRIBBBLE, + FACEBOOK, + GITHUB, + GOOGLE_PLUS, + INSTAGRAM, + PINTEREST, + TWITTER, + UNKNOWN, + INVALID + } +} diff --git a/library/src/main/java/com/dm/wallpaper/board/helpers/WallpaperHelper.java b/library/src/main/java/com/dm/wallpaper/board/helpers/WallpaperHelper.java index 6c8740a6..e177fd58 100644 --- a/library/src/main/java/com/dm/wallpaper/board/helpers/WallpaperHelper.java +++ b/library/src/main/java/com/dm/wallpaper/board/helpers/WallpaperHelper.java @@ -144,7 +144,7 @@ protected void onPreExecute() { MaterialDialog.Builder builder = new MaterialDialog.Builder(context); builder.content(R.string.wallpaper_downloading) - .typeface("Font-Medium.ttf", "Font-Regular.ttf") + .typeface(TypefaceHelper.getMedium(context), TypefaceHelper.getRegular(context)) .widgetColor(color) .progress(true, 0); dialog = builder.build(); @@ -248,15 +248,14 @@ private static void wallpaperSaved(@Nullable Context context, @ColorInt int colo String downloaded = context.getResources().getString( R.string.wallpaper_downloaded); - if (Preferences.get(context).getWallsDirectory().length() == 0) - Preferences.get(context).setWallsDirectory(file.getParent()); + Preferences.get(context).setWallsDirectory(file.getParent()); CafeBar.builder(context) .theme(new CafeBarTheme.Custom(ColorHelper.getAttributeColor(context, R.attr.card_background))) .duration(CafeBarDuration.MEDIUM.getDuration()) .fitSystemWindow() .maxLines(4) - .typeface("Font-Regular.ttf", "Font-Bold.ttf") + .typeface(TypefaceHelper.getRegular(context), TypefaceHelper.getBold(context)) .content(downloaded + " " + file.toString()) .icon(R.drawable.ic_toolbar_download) .neutralText(R.string.open) @@ -309,7 +308,7 @@ public static void applyWallpaper(@NonNull Context context, @Nullable RectF rect @ColorInt int color, String url, String name) { final MaterialDialog.Builder builder = new MaterialDialog.Builder(context); builder.widgetColor(color) - .typeface("Font-Medium.ttf", "Font-Regular.ttf") + .typeface(TypefaceHelper.getMedium(context), TypefaceHelper.getRegular(context)) .progress(true, 0) .progressIndeterminateStyle(true) .content(R.string.wallpaper_applying); @@ -445,9 +444,34 @@ public void onLoadingFailed(String imageUri, View view, FailReason failReason) { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { - LogUtil.d("loaded bitmap: " +loadedImage.getWidth() +" x "+ loadedImage.getHeight()); - dialog.setContent(R.string.wallpaper_applying); - setWallpaper.execute(loadedImage); + try { + Bitmap bitmap = Bitmap.createBitmap( + loadedImage.getWidth(), + loadedImage.getHeight(), + loadedImage.getConfig()); + bitmap.recycle(); + + LogUtil.d("loaded bitmap: " +loadedImage.getWidth() +" x "+ loadedImage.getHeight()); + + dialog.setContent(R.string.wallpaper_applying); + setWallpaper.execute(loadedImage); + } catch (OutOfMemoryError e) { + LogUtil.e("loaded bitmap is too big, resizing it ..."); + + if (call <= 5) { + double scaleFactor = 1 - (0.1 * call); + int scaledWidth = Double.valueOf(imageSize.getWidth() * scaleFactor).intValue(); + int scaledHeight = Double.valueOf(imageSize.getHeight() * scaleFactor).intValue(); + + RectF scaledRecF = getScaledRectF(rectF, (float) scaleFactor, (float) scaleFactor); + loadBitmap(context, dialog, (call + 1), imageUri, scaledRecF, + new ImageSize(scaledWidth, scaledHeight)); + return; + } + + dialog.dismiss(); + Toast.makeText(context, R.string.wallpaper_apply_failed, Toast.LENGTH_LONG).show(); + } } @Override @@ -526,9 +550,10 @@ protected void onPostExecute(Boolean aBoolean) { CafeBar.builder(context) .theme(new CafeBarTheme.Custom(ColorHelper.getAttributeColor( context, R.attr.card_background))) + .contentTypeface(TypefaceHelper.getRegular(context)) .fitSystemWindow() .content(R.string.wallpaper_applied) - .build().show(); + .show(); } else { Toast.makeText(context, R.string.wallpaper_apply_failed, Toast.LENGTH_LONG).show(); diff --git a/library/src/main/java/com/dm/wallpaper/board/items/Wallpaper.java b/library/src/main/java/com/dm/wallpaper/board/items/Wallpaper.java index 3fcaf1bf..826188a6 100644 --- a/library/src/main/java/com/dm/wallpaper/board/items/Wallpaper.java +++ b/library/src/main/java/com/dm/wallpaper/board/items/Wallpaper.java @@ -81,7 +81,8 @@ public void setFavorite(boolean isFavorite) { public boolean equals(Object object) { boolean equals = false; if (object != null && object instanceof Wallpaper) { - equals = mUrl.equals(((Wallpaper) object).getUrl()); + equals = mUrl.equals(((Wallpaper) object).getUrl()) && + mCategory.equals(((Wallpaper) object).getCategory()); } return equals; } diff --git a/library/src/main/res/drawable-xxxhdpi/ic_default_image_failed.png b/library/src/main/res/drawable-xxxhdpi/ic_default_image_failed.png index 4ddb08f038739884493eaa3c1762ab4ebe0f9588..9ce5958c4f0d032c524d6e7ca32481b08c41f252 100644 GIT binary patch literal 4604 zcmd55|dhf6K*827z_w2LJJ-@xrxx3waw$|nXe3E&tG5XrDOe&lR8b+-47zzrn-E$nrzla6z6nHRKd1rK;tswILqId`&IeoJNIE#%`V z>32F14)Qh?Br%bls;*`#t-wmU`qZ3(FSda6y>lJE20|!Ltop3Kog=Y@9|U!XeY)lE!Ry^cCu z8~ae76!@y|v*f43O$8^?+0}|yeL`iJluuI)FYW-Rsy(e(D549hH_aD*cT4pTyGB$r zAbmA;V%%6cKq{-DR3Pr3~a5=Qv{^n?CN_bGI-N22xcA(x7v!4wTz}D zH%PD-8@p$IP!&X8Z*Th-3CfLH;5$9cdc)>=C!)$zwF=ke`AU#iXrhQ=OK4#*DeXn!|V{%fhtge!8^!J*|Nq zIp59KahkhNaEJ4Q(deO=fhtbsP84(1tDc46Q}E_#o0Q6zl2 z{X7IWW3l>*iv(=J_Eo`*xz-N2-496|s;Mhu_d!_~9({K@{^Z(UuKQ0G`g0etzE0Cu z>NXT?e9%PI9_b?njEK;=u`oUFM{)`s0w1_zg!Q}+A*5_)4jMp}?v*6C8?YLVwJwG> z3?^R z0GCm`{@!Dihc9~w5=G(^SqpGbyqC^9Lg6f<0Ivdk0^&fy~$)$r;Q5nYx&H)KPwQ1jK zyID5b=GMJqMq)u}^-&M;^|WGg>T191zV-}=A}~=6mOzU!GMmXYJ8Sqfrh|Ab%@{{prn+wRX(fXX7||f|Gv&c9!_5#%HnT5{JQyqv#MHBAu zph?%8#87v2CmXk8qxfF=|Lq5VSv@;d!pWbEU@B6Y8yMIcwFxi;Eb>`h*XDw zx5`PwBeh4$Abu!468)iTjgIn0g8%!dj6(7XU$v=oi4t}P;V*!H6Z>1(GdRzlz^eV8 z@2I|YY+G*o-(sWO_xnE8_x}Ox`&FZtYuijz-wXwqdOrCj8l3E8=UHVYqqfUKm-5|*#cX9@0PTf(oT@% z^MD?C?XVnBwJo@P*wGS#x^m!^I-r-@LDs{?G9>)iqd~l&in z;1RXNpuXo6f0GO;X7F6NJebz(^T9YcU-Jm>8!=Ir)_|jyb2S`)RysmMUJC=`$#9wX zigE~Gh}_Eq={OUt6_CY`AV%qJdOuSk0($DYV{Fv#iX6#Z^k%0NA+SdZ(h+>)CE*s0 zN9icQ5eD5R@&x2M4LyUR7_sk)2Ur#=ACE?brO+6&jR(pjV)3i~eO)HiVh=uZ zQ;_5JNH0NMQD9zs_WG|yN2xzn><_)Jx~(QFqZbNr&R@$nVat%+&~eXd?f3_yg>UV` z37QX-zr*+;!l1;8xnY{Ct6N<;tpw`C5>%XPQq3I-4DdL756-SQh7&P>Vn`h1WFMmom)&9 zP$pc#?|tHoWvaaFmopy&25^H?!g8g*}E6*==0Pmcx@5;YJhk9Em4o>?JB+-{fiE< zy0{F-1>KP=jtXLDsK_pym=3vBh;-#W*D(OPPoTEv~ zKF@S&j4mcD{RE)^N_qr>JS_>Xd_;xEaKAhI$t;gIS)@<*3m1&k8jmb1gnhsuI=;$- zxCHtCbo4)bKkaQJ>ihC}jX&d|cEXAGw-r0yf(xqO^cPb@Ws{!ew`^tegTI|{eXlIlkT&9?hAM2ZO!ok?-rT7#4Zoexvs18rN%uJ}9qbEVd{$$zOnhmCnWC9P5al#Y;to*9165+idud3c6zKDl#R1DjN3#JG1%e%|+aPlkj^HEpkw~}j$oL6b`nhRjO}zMQljbz*?vxm4d2w>4-Eg>pK7Gj4e~{3dx_6$JoG2$IJ! z?DCf(o-MCN-@3Dk^*TIaTOg3B_O!FG5h{x8kS+b20$I=LISr>k~E9)o#U_N6I>k{jV1wCN9 zifosZ%+dZIam8G4kl%EmNFws|){m=qra*cbLio0rHgP;#wL2o^pe+5i8L`8kXO+5-tU7;FqN<|)v|G9hvoXs@ zVv1R~^JatE4$6XQnhf_!W!p+aW|t~nymEly>h07!n{$a?oMoub&npaq(CqHdZ~!5) zYq-ETa+-h`(1?rCR$DzuG`;{w{J@n3k4ww`BJHI&Jv<@OYGGCm0T@d zDNI+H#6N474xe!)4B%rf!3Lq6svD(wI(>r%F>Lpd@3ry21cL)ZF99&_^U$!u^k@|i ztohTuQTB?^v-MWtfuWheHY(s;P&01nJ}h=zsB`i$T3ffB`w;}di3;@b?>^b}Y9#hB z#H=ocmB}5Up;W?gPkLG&z!1i|-)p!{-5h1JeB>FP+NTM3&92`^&dQ(2*a_%9+@usV zBjr}iC5BPPvQT>Pj_1%aIkezPhne~@&;C5iebHrc#CwlE2Qi|gkmtVe%uk7VR09)k!4WtyOv)NVpPN*ERkQio(;>vi6 zFW?6k{}uj!WP$%SkW@ZH<#_fh0VHhOX*s@&nh!_@5n(0pipyDW+(@p^8BZdoADVO7 zgM^_3O|oTAwp&8d?`@H-FK<4A$a#(FC?L=A^_@za-cokqfc*cbmHER)aM_;nS7Vyn O##)$JA1^+Nx&9A&YU*nM delta 2402 zcmV-o37z)*BZL$oiBL{Q4GJ0x0000DNk~Le0003j0003j2nGNE0SZmnM0q}yqJ9rXmVO`{EJ!RBm9);&b!TdO#uYYQ^H>xoPAMyGtw(D8kwj)fY$|TAF02uHJz`h+^Aqc|&02LntIGQ84nIkenyx;}se~p+@|9^0$ zG-(?i1qT2C09mi5W5mAA7fnV8Ytr`byr_PTn+gN;NbEz(2+W*@ts9Pnc7Brd`Hx2PC4%L{ z9{>OVhVc=Ay*s)=5Qd@ve~N^Ga3kG7CvgNvVFcI+;lo6Yh7tm`^qk1IdUGGCnpO`0 z000000Du|xx|4O4_hobD9~hg}M0nn&u= z)W&eRYmwUl-3xS@_1>2AM0;*)t+lFzS`#{6_1>G6#BSFzv7k=5e}{Dl9I>6$B75pLPdxvjIg_Yh|?C!Ti%>n=b00000nBgG+dv|z~Fc5|TxEcq*4IF_H zT)_<-K{sFn*nklne*rgu4eAEEL8VC>OcdMNYq|5DCtSjh0^$1d_3qjf4*&oF00000 z00000001CX^gS{ruP>c-8@}IhRek0R=mMl1sbG}ZCzFBTq|=3R!XOIt^$QKWY9NF z6?z<48SB^He-_>AUR=Oxz#(y4#Cgea-|D4e&2&g?z0O>vrWn`#%j%WG)eWu_zW@uQ z2o{1x=29GgSRhPbzg;KVsfSDhbubwL0000000000000000Alkg0DE_Tn>G-}0r*m7 z0C$71fx8LafNnrH$Oh>KWrKEuj*xCZH}DA5mOueS6Nx`npWo+E?w=?|$o}Pc?>#Vn zlVJxOe^{J#Jq|&~+U1`{88}p@QRZ~PK4dgonXv_n=pHkD-VZ^p&mq?*ZpK2e5G(`> z1Pj4Juo%-OU3SdB3l>A&3eqWPrC`xFRQJ3J7JXj++NcDJF51>ngA7n9vJK8bszP_MsGJfOc>b4Q$4mR;FgaXtDS9!qW*dT zfAA7KLS^Hd^-x$i258?*%K?itzl?G)0SJ ze!Wvy-J1os{(tA?IlXPd4qe9Y)9{<1ZEn<6ZIA6!Z=E0iEDrPYn#Q}sUU61ebv<_R z!HV=!xJlzSEvpuFRoHqfO0cdw>|^PBRb#Zp*IT&;tL!*a%yGHD=>Ar2!Rk}Q&-r$X zm0;yttk2zEuwobMQ(0uawd76cUCQj!!)7cHECdU|0>MJCSccr&4F{Ldj0Lmhn^uE= zUU5pk8yb`G1{+M^Klm#^dv|x7L==Vr_(UxLJHQGgcix#)V5}fmfyteBSu4N}q7}qc zKsrb|NUR`sfaeU$2uLu%9@t%;XZ$A4I2z`x`{p}8EPer#VFx&WY|$XrNbPM6+yeQ$ zGz66@Vtp|Td+lAUgIG6)qIxe30nik$48hhs#QI?vTH`cU*DwgIHV0N=7+T}Kz%nHS z5Lke~0uWdL0t;v?yM#1NFIK1g{avizhD3)2b#M~vKFq%Lp=}Sl zgw!dpnkMZ~-o&~tzdpE(0*n1Hx#6o0uIo&%_t+&fC1k%<9RfdNeKV{A3vx&u*6T1n z5W1=JSRW0kz=E98y3pYU!IgsQV27Pm+Bmojvj<)am$e#y*0891a82~eFnAlr=d4ng zO%}WBAf3EFa@hnHgfgJ+41*~l%gW_LhTV9{c!Q)<#%R#I0re4?W|DZ8!1U~|Bf5SB<` zk&ZviKgPJqMf%iLJ?9CcsoT18Npx83x1(4e%CEf@{?4eJa(>UyRV@op-4;AkG1qD2 z>N={{D_{HVlGnd(O`q#prK{TX`)<428ZLP)giktm&-$$=(n3__(P~`1hl*c3I2TqWT%X?>4$E9TsfhvPMC*YoLt69%${c5v+=Q!#yK`F&W0x?m zvL-Tk1wj2bGwFv<{HJeAom0V>rQcoUEe5*Jnv{Iv_hqkH7sl!?tUvKF?Vwf< z>%Ol^JvoK-P1wCAz*cjE#?D8OQP)ty&TmCRHJ@ z9@-+XV)yQJi}bcQfS2BsM+C@k{C91gqa1+tZH*4Cm#{86SfNxrkB!AUUcEY)=z%pE zUu}DBqK*%fOGV13$#or%8=!Rg@ct&oKJ|^lBzwz^&jA?)iFj*Y4b2OtOj{Pe(ihjM zwx#CAs>;uwwFm+4pS_Jqp%k4bJ-G7A@we^W>cpzR9X45*pX*eAl!_Zwr+Q2GX%by} zRMlWJtw|wh(<<#A4*Tgi55cH#fKUfOER*X&-yx3yxi}^lV}Ns>^;+p*j(u0KQkZaA zMmtUNs?4S@zY_^#6#7*&dRf~H7S+gkm6a@%iA?|@IXac*;}ulH1%gWa#ctNkr92Bq z25eG+%_>@Z0VjIBWp@v2dL(I?C$%u?0@v^LkKV%;l$keU6yye9gv5Qqm=HQ|1@EW0 z3pDz`_4~XQIoic-j1kdx$Rc0tPOSH1{^Cdva*(;s_NJTEY}kz*Uw6z#=HbD21pTe{ zzc>zgKRucHAdc;fL&(^{HI3b9Eexp zb7vKRadBi~wrnFLONk&@!+!So&hTUsuA}C@1k=qaZcFk;Y0>TvmeRq%djHD&+d@^N0~O8cB18S1cNf4cJhNv?&RaB7^C!Fp^p=2?s1Y1Pp1SgJ{b)l4vr-(|MGLLTIu)Wrxd48n6{rHWo~1LZ;TFNj z-R-r>3Xqsfj$b~&{@dRO20YQP0!KZnn~Yd{*f;8y{>pP7=Fh<8S(2^4(f)Li{ej_}H3jh_IuhPD+#`*ySt$090 zn;M!Jy>zEltG;o^+ecw!rq*1uWL&p~)GY@oy4@FkUbF{0)HRcns162b%Px=|D-q4M z>v%jM9=RyQ1)58F*%CjD&4J*(;mNY|vpk@A{#a)1;LeWHP1JJ+gTEZ&IgHD6xcv)Ut%@FS$Qa7OVUtrA-~CNoB{-)q%ltf)+|`KA#N#b7Z? zMsg03owrbM%6cr(Wj$=yuQ5@DqC1j2NT6}{PTB(d+09)-$t=xG@%=n9ius_wb6h*0 zBL*_nGJ*WS?WfYU+e)hpJ3cY=dVo4&loAuNo0ov_6HlB{ntdb0cn(1ciJIe{*Ol@w zG^%JoO1^I#>F&vCr=no{*P2^!mVmVRWC(7?c%^?AGpM^+9|vBK+TbOA4VdVW*Y}$! z2mh3iJL_D`F9f?Cd>0*nnHE1HIl}1;ck%hb-k1u=tkHv_T3|-mUm*FKubGeP^G?7_ zF)=DVA$>Y1ZgI}wVq^Tb4=-c{*ZvNe|I~!Pm#h7fCgk_XBBJi3CnroyOLtaCs;Me6 zoXJrAY9>C>%PnHr6MJz_NA*^@d;{5Hdc!A4Srlx{I9aB#W8U5y^f+bAp9uUtR{y~x z2{1hh2R0T5tlqS693!68=6%xJb4$WK{=2ZIK`Nxo4iEV9lblDA2~f_8tS)RorH*d_ zXSFA%X(!6w<^m#(#Tcf^ihyr*B6dKq!{^LmBp~XaP9mXsL69Fi!vT@eYeWRK4NkeM z%Xx_~vSyq9g9n^h_5L=gBbNh+rwg4m=PD;J&f>xBB14?6{$j9hOBJjEO8^<~=%Ka3nXs^y{bt!8=Y!8GN<)kcii+fU)+KT4`{ z7X5#wd1?V?88CPqM<2`Yt72L50AtYn@UdlqL7?Ue1S8>XpDnq<^`+y(5I_v4BCDE1 zyrIDnCwQVJAgQi7;~tTTmdgd^OH#U}5QRU4z39rl(DU{hD8^=|m*h8`za05MX&r5b zES1hwJDzY67cZ1!LidH;d{0{zcW2bFGTceE(#%HFYHib+)~+(~8MO#EI9qe3X2Zg= zSo)k~9;(a!Chgk=T2FQAa<9ZKCC;>u3XVo&XO?)PpLDUW={ke{W5OXOG1p7`zr!%` zNof0AjQxo~IvTwDJu}tvk*Mv(Uk!%WA($wlbYv9Ag=FuPZ4?j$yNj-NnCiUGjh@j) zyhEvPZNwL-N(W}i;#j8CDLE+lFCB0b82>I4nGN?x0^~GkwUCqbC7UGxQ~*aTL>Klw=c7z zc@c73%fak^FH%*^-s*A^G2BHkdkAkGcz7w zgMmRpHMu}%pus(ad)}o$vMB0n83%|R+}Y|lzkFk|)J5UPwV(pi`N12rZJj)*bh7%c zX1bMm{9;A%+D>a!xpHn$_lzg!n#Q)>T&hjNf&(N zqecSYQdj8R+~q9JlwEi(K-#F-2s#r#`pyZ0z=#gGGvt!OfdwcSfx3T6pW{m3BLsjs z889UrY(g(rK)qS7FdHdZ6QU0Pwz)HHSs){PV$IW*AHByxpZP#y*q^zJQ!qw{3os4C zuI_6UtNJ`&9Svd8{VhE#^0KLU#q6rs9%uh`RN3g~H-r_1q9D4=T^s;m07zi-w@_2RNP`2Q_EqmD91ha7L zrc4nJ>XmVdcmL@s_G)R4_Hhp$G(=~oTgmGk#b`E25o2SOB|m(h@t}$f8{03hS*$#^ z;6C(}z8wU0WLX#Ltv>N+Dzv0t_x9v>7-GLj^lx+cG;kpj5B|raV0EEfTFCbJMs=q5 zNSZ4^@TBBYt?8AlLMeXykAU_K+azT^Wr&Fd+jALj3GeTQ8F~f1{HnqSl%dpmhJS6R zNr8@KCTA+Jhk>~9`F5>^y}2J4y?X%@OANY9cFoegRuVZy+qoyt6~Tk;AR(>W?2Ev< zS;VP{6;li_0lyt_dGvL|Za%2u%*bQGa&rv&3PH$g)6t&Al@+^{?)h|1G%bwvQe3@7&>oG{+th? z5h^6OPstSf#yNTf+<7vt%7-HT~=K{|i~Ff5T;0L;i}e7I5I@ zMNwuo&#Sg6Hn}T0MCQZZzGsway-C~SCLp_;{NY?#eWQy6dKU-PZpm2t8!N>X0asAg zt5%=|1)E%~epo7M3n^TqGVi#(1b~6lA6vD@1`}lRA-2LahIzE-(oI(k8kx3I zXMe4_|K(zt!FeqgUx*^@o+hX$w2A7}+)PnqSPBM%qsaeEyyymUMc(5|GPt(5MnH0$TAo+RHRZ8k!7+E#!iG8 zTM@EvWh<0HxD-Nns{4H3({rEuJ@I!<1fosmXZjEl3SGsfw<&r4@b0N@lc z($}#L99`(AaW*1(NK>ayd#f&-6`NWgjWnmUf?HveIvhfdu?GNP<7wgXi}$-9#}D`L zFGLjg*x2)#o-2?ZER$~h{4O7nyz97^9IPuVb85FwBcsp5>AE?Bv+2rb|Nl|914y72 z_h1j4M<1fp9P#GS%;)gufj03heu`pj3xONkXB)TMZa!TPO& zF6!rR+qRe%5z@XP>fABm4RbKbpEE*vq%3Zhx2s*TTzJs0WRpB{L;2uqxeg^wZ?nK! z`Dm!#vp?#JTB&%{<7p2LX5~3mAj7p}5f%)Rr_oik5oQ-*AxhgTN`r~s+bar5GY$zK zma)Tjd}%S1TJ{}+A57t6E@GN?RBqT>7fSqb^vRPc!i8@dtSj32A5ygxRMv6)m3WzD zb&A<;%s9>$qj1|O=(CPOYLnscRqE`mop0r2eXcewZbBW z`3H-$kGd;*^I#HY>`!UbFp!jFgQ_V?>CZd?+`Ix191wV42_6O6Fctz-8)52D@&`6g zf`}5Ar@6{&*gTs}e7umra*;yNQ1Fx2M2V~jMn{`{jUDPQil1G0N`<87y`3y9)<`z5 zJfS6cqM-CbWVaePw`l&-MT@xcwZW-LeU<}3AUPZ_dz*02{=#`F%KJ$(!$Jlot>w;w zHD%L7z%Ynl@L-4-nzk(%KdrcpHyn{u^yV7eUQ&)oqo*ZLdP&iq(QXv&d=AMmVsXE< zLy}w9%m_-oQ&Uu7;r_{S{odEQFf5-`+=z6&ZHt^;B6wS+X}9x6dsSXZ(12}8vJ#eV z7d#cOBXMB%YW@Wi+PsU_V23$L+|atdPx>a`+p#+OJ@pk)wgkhU2R}Cw;@YDW8wC-9 zsN{;AhDs?BOfyAZ$i$|L^uyG3u>wYS9X>7|Ui_lDvK=qfTd%fLeN*CBqF+Z>+|Y$5 zK8&jGxH(0T)r&mjWEuF&wFzQqP`@%|IkbWMT3q{)aW@SFT^HowCX%RdgyWb3UdwS; zMn3A9VDIsAV{q+u{>xhG2j5M1G8|!Fo=Uc*Lot$+>p}h;#00u;#~6wurl`oEta#9n zxTmC_o;&Y4uZo-<_&sgM)2guhFuN}3=J5(dQr^!eI^lRDsjYq?V#Rp2&>3$Icb;`c z|E;b_y5!zL^MaO{q0Ok~1kRXD$?B%?j;o54;ijPbZQ@Pa$NT*&o)Gs1fDPFlN@4i1 z#9Tg>%%}>+Y4(bws?tliDqXN7dOgEOc`>|(I?c<#5;WJgA5YB|x?*5E-3p0Oo0TWQ z-0MdzLB~+t*;7v`@5rq`mQ+Tp-BjLhyMRFrI4d{T?USUS>$YFv$CHD>tVxo8K~vDV z8tP>}M&2vjcrqh+{L2J4vsldY%M)4Y)7>VUAESCdmO0WoS78NO#gAe?5t)DRKiY=u zC1`m7dzA?b2KbGg1T|(~3is}S|;1nAMaWv5!TrQS6X4JQwK)zcN$t{tq`J&RXlI(pT}Xz4mzF#`u^j~!94Ru9+x#(xv!1j zGK0DdQ2vtO-F_u2JFVg0X#`Okl$I$li&8~IAK4B^l*5Ku1KWfXw`J4e6(O%Xub6KHhi7B+@&SCk8EO=HaYXryN~GbkEx|cs*~^JTx_h_Qgkq%w6I@EWDTL z$vUXWdF0jUjcPe#P_%m9l7X9vFW?%=d&wq%h`xeAcnOPBSUs)>u)yU%7pcFhFV4x! ziB;LqK!Q&G_Qlw2>e%ZgRL(=I@lfv$AzEf)D-5bcIVP5)fa)3uM%zq1TYV=WzlAYp zcX&7%oEjaX+Kx80xr6FD+4s=FqP~rHz=|Y2ld&Dx1W&GHiGgCT<&O6srZucIBCzL?Tn5 ze~D82{si-ZBP9R; diff --git a/library/src/main/res/drawable-xxxhdpi/ic_drawer_rate_review.png b/library/src/main/res/drawable-xxxhdpi/ic_drawer_rate_review.png new file mode 100644 index 0000000000000000000000000000000000000000..8b3dd19e227694a8721efb72065d9ad525d14f06 GIT binary patch literal 1448 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 literal 0 HcmV?d00001 diff --git a/library/src/main/res/drawable/ic_toolbar_behance.xml b/library/src/main/res/drawable/ic_toolbar_behance.xml new file mode 100644 index 00000000..8b92e6ac --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_behance.xml @@ -0,0 +1,32 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_dribbble.xml b/library/src/main/res/drawable/ic_toolbar_dribbble.xml new file mode 100644 index 00000000..00f28764 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_dribbble.xml @@ -0,0 +1,22 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_email.xml b/library/src/main/res/drawable/ic_toolbar_email.xml new file mode 100644 index 00000000..ce97ab85 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_email.xml @@ -0,0 +1,9 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_facebook.xml b/library/src/main/res/drawable/ic_toolbar_facebook.xml new file mode 100644 index 00000000..0ddd508a --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_facebook.xml @@ -0,0 +1,21 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_github.xml b/library/src/main/res/drawable/ic_toolbar_github.xml new file mode 100644 index 00000000..01ddb3d0 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_github.xml @@ -0,0 +1,26 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_google_plus.xml b/library/src/main/res/drawable/ic_toolbar_google_plus.xml new file mode 100644 index 00000000..79f944a6 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_google_plus.xml @@ -0,0 +1,17 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_instagram.xml b/library/src/main/res/drawable/ic_toolbar_instagram.xml new file mode 100644 index 00000000..814d61b9 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_instagram.xml @@ -0,0 +1,25 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_pinterest.xml b/library/src/main/res/drawable/ic_toolbar_pinterest.xml new file mode 100644 index 00000000..281f3a46 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_pinterest.xml @@ -0,0 +1,25 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_twitter.xml b/library/src/main/res/drawable/ic_toolbar_twitter.xml new file mode 100644 index 00000000..ca37a009 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_twitter.xml @@ -0,0 +1,19 @@ + + + diff --git a/library/src/main/res/drawable/ic_toolbar_website.xml b/library/src/main/res/drawable/ic_toolbar_website.xml new file mode 100644 index 00000000..d07324c8 --- /dev/null +++ b/library/src/main/res/drawable/ic_toolbar_website.xml @@ -0,0 +1,9 @@ + + + diff --git a/library/src/main/res/layout-land/fragment_about_item_footer.xml b/library/src/main/res/layout-land/fragment_about_item_footer.xml index a7d034f8..7db1bda1 100644 --- a/library/src/main/res/layout-land/fragment_about_item_footer.xml +++ b/library/src/main/res/layout-land/fragment_about_item_footer.xml @@ -121,38 +121,32 @@ android:paddingLeft="@dimen/content_margin" android:paddingStart="@dimen/content_margin"> - + android:padding="@dimen/content_padding" + android:scaleType="fitCenter" + android:background="?attr/selectableItemBackgroundBorderless" + android:theme="@style/RippleStyle"/> - + android:padding="@dimen/content_padding" + android:scaleType="fitCenter" + android:background="?attr/selectableItemBackgroundBorderless" + android:theme="@style/RippleStyle"/> + - - \ No newline at end of file diff --git a/library/src/main/res/layout-land/fragment_about_item_header.xml b/library/src/main/res/layout-land/fragment_about_item_header.xml index 735e6ef7..c98acd5d 100644 --- a/library/src/main/res/layout-land/fragment_about_item_header.xml +++ b/library/src/main/res/layout-land/fragment_about_item_header.xml @@ -70,60 +70,11 @@ android:textSize="@dimen/text_content" fontPath="fonts/Font-Regular.ttf"/> - - - - - - - - - - + android:clipToPadding="false"/> - \ No newline at end of file diff --git a/library/src/main/res/layout/fragment_about_item_footer.xml b/library/src/main/res/layout/fragment_about_item_footer.xml index dbb71f58..10e0290a 100644 --- a/library/src/main/res/layout/fragment_about_item_footer.xml +++ b/library/src/main/res/layout/fragment_about_item_footer.xml @@ -1,7 +1,6 @@ - + android:padding="@dimen/content_padding" + android:scaleType="fitCenter" + android:background="?attr/selectableItemBackgroundBorderless" + android:theme="@style/RippleStyle"/> - + android:padding="@dimen/content_padding" + android:scaleType="fitCenter" + android:background="?attr/selectableItemBackgroundBorderless" + android:theme="@style/RippleStyle"/> + - \ No newline at end of file diff --git a/library/src/main/res/layout/fragment_about_item_header.xml b/library/src/main/res/layout/fragment_about_item_header.xml index ee6a8991..ff3a6e79 100644 --- a/library/src/main/res/layout/fragment_about_item_header.xml +++ b/library/src/main/res/layout/fragment_about_item_header.xml @@ -58,50 +58,12 @@ android:textSize="@dimen/text_content" fontPath="fonts/Font-Regular.ttf"/> - - - - - - - - - + android:clipToPadding="false"/> + \ No newline at end of file diff --git a/library/src/main/res/layout/fragment_wallpapers.xml b/library/src/main/res/layout/fragment_wallpapers.xml index f529802e..0c9678da 100644 --- a/library/src/main/res/layout/fragment_wallpapers.xml +++ b/library/src/main/res/layout/fragment_wallpapers.xml @@ -58,8 +58,7 @@ android:textSize="@dimen/text_content" android:textAllCaps="false" android:visibility="gone" - app:dm_backColor="@color/popupBubble" - app:dm_textColor="@color/popupBubbleText" + app:dm_backColor="?attr/colorAccent" app:dm_shapeRadiusHalfHeight="true" fontPath="fonts/Font-Medium.ttf"/> diff --git a/library/src/main/res/menu/menu_navigation_view.xml b/library/src/main/res/menu/menu_navigation_view.xml index e77f38f5..bbb1a3f5 100644 --- a/library/src/main/res/menu/menu_navigation_view.xml +++ b/library/src/main/res/menu/menu_navigation_view.xml @@ -16,11 +16,6 @@ android:icon="@drawable/ic_drawer_favorites" android:title="@string/navigation_view_favorites"/> - - - - + + + + + + + + diff --git a/library/src/main/res/values-es/dashboard_strings.xml b/library/src/main/res/values-es/dashboard_strings.xml index f9fbe01a..e2fa02a2 100644 --- a/library/src/main/res/values-es/dashboard_strings.xml +++ b/library/src/main/res/values-es/dashboard_strings.xml @@ -6,6 +6,11 @@ Ajustes Acerca de Apoyar al Desarrollo + Compartir la aplicación + Valorar y comentar + + Hey! Checa esto %s + Mira %1$s, esta aplicación de fondos de pantalla es realmente genial! %2$s Buscar Filtro @@ -31,6 +36,8 @@ Fondos de Pantalla Favoritos Toque aquí para marcar el papel tapiz como Favorito Ajustes de wallpaper + Presiona aquí para abrir la configuración del fondo de pantalla. +Active el papel tapiz de conjunto como fondo de pantalla de bloqueo en Android Nougat o habilite el recorte de papel tapiz. Guardar papel tapiz %s agregado a Favoritos @@ -92,6 +99,7 @@ No podras usar esta aplicación. Wallpaper Board Wallpaper Board es de código abierto bajo licencia Apache 2.0, para Android, disponible en GitHub para uso gratuito, desarrollado por Dani Mahardhika. Contribuidores de Wallpaper Board + Abrir Cerrar diff --git a/library/src/main/res/values-fr/dashboard_strings.xml b/library/src/main/res/values-fr/dashboard_strings.xml new file mode 100644 index 00000000..7762a251 --- /dev/null +++ b/library/src/main/res/values-fr/dashboard_strings.xml @@ -0,0 +1,134 @@ + + + + Fonds d\'écrans + Favoris + Paramètres + A propos + Soutenir le développement + Partager + Evaluer + + Salut! Regarde %s + Regarde %1$s, les fonds d\'écrans de cette application sont vraiment sympas! %2$s + + Rechercher + Filtres + Enregistrer sur l\'appareil + Paramètres du fond d\'écran + + Ouvrir + Fermer + Effacer + Donation + + Menu de navigation + Appuyer ici ou balayer vers la gauche de l\'écran pour ouvrir le menu de navigation. + Rechercher + Appuyer ici pour rechercher un fond d\'écran + Filtrer les fonds d\'écrans + Appuyer ici pour filtrer les fonds d\'écrans par catégories + Options des fonds d\'écrans + Appuyer et maintenir ici pour voir les options des fonds d\'écrans, %s applique le fond d\'écran. + télécharger ou + Prévisualiser le fond d\'écran + Appuyer ici pour prévisualiser le fond d\'écran en entier + Fonds d\'écrans favoris + Appuyer ici pour marquer un fond d\'écran comme favori + Paramètres des fonds d\'écrans + Appuyer ici pour ouvrir les paramètres des fonds d\'écrans. +Activer l\'option qui permet de régler le fond d\'écran pour l\'écran de verrouillage sur Android Nougat ou activer la découpe du fond d\'écran . + Enregistrer le fond d\'écran + Appuyer ici pour télécharger et enregistrer le fond d\'écran sur votre appareil ainsi vous pouvez l\'utiliser plus tard. + Appliquer le fond d\'écran + Appuyer ici pour régler le fond d\'écran pour l\'écran d\'accueil + + Nouveaux fonds d\'écrans + Filtrer par catégories + Téléchargement du fond d\'écran … + Le fond d\'écran nommé %s existe déjà, voulez vous le remplacer? + Remplacer + Créer un nouveau + Impossible de télécharger le fond d\'écran + Téléchargement du fond d\'écran annulé + Fond d\'écran téléchargé pour + Chargement du fond d\'écran … + Application du fond d\'écran … + Fond d\'écran appliqué + Impossible d\'appliquer le fond d\'écran + Application du fond d\'écran annulé + Impossible d\'accéder aux données du serveur + Régler comme fond d\'écran + Découper le fond d\'écran sera désactivé si vous appliquez à partir de cette option. + Découper le fond d\'écran + Activer la découpe du fond d\'écran. Le fond d\'écran sera découpé d\'après la prévisualisation actuel. +Pincer ou appuyer 2 fois pour zoomer sur le fond d\'écran. + Arrière-plan de l\'écran de verrouillage + Appliquer réglera le fond d\'écran à l\'écran d\'accueil ainsi qu\'à l\'écran de verrouillage. + L\'écran de verrouillage est seulement disponible pour Android Nougat + %s ajouté aux favoris + %s supprimé des favoris + + Minutes + Heures + Paramètres de Muzei + Enregistrer + Paramètres enregistrés + Rafraîchir la durée + Chaque + Rafraîchir en Wifi uniquement + Charger le fond d\'écran seulement si l\'appareil est connecté en wifi + Sélectionner les catégories + Charger les fonds d\'écrans seulement pour les catégories sélectionnées + + Contributeurs + Licences Open Source + + Impossible de charger les achats intégrés + + Données et Cache + Supprimer le cache + Supprime les images en cache de votre mémoire créées après le chargement des miniatures des fonds d\'écrans + Taille du cache: %s + Cache supprimé + Voulez vous vraiment supprimer le cache? + Thème + Thème sombre + Changer entre le thème sombre et clair + Fonds d\'écrans + Adresse de sauvegarde des fonds d\'écrans + Premièrement essayer de télécharger au moins un fond d\'écran + Langue + Autres + Carte des fonds d\'écrans colorés + Réinitialiser le tutoriel + Le tutoriel est réinitialisé + + La permission de stocker est nécessaire pour sauvegarder le fond d\'écran + + Merci pour votre donation. Elle améliorera le développement. + + Vérification de la licence … + Licence vérifié + Licence vérifié avec succès, merci d\'avoir téléchargé l\'application depuis le Play Store. + La vérification de la licence a échoué, vous n\'avez pas téléchargé l\'application depuis le Play Store. +Vous ne serez pas en mesure d\'utiliser l\'application. + Impossible de vérifié la licence, merci d\'essayer à nouveau dans un petit moment + + Aucuns résultats trouvé pour \"%s\" + + Rapport de crash + Malheureusement %s a cesser de fonctionner. Choisissez d\'envoyer un rapport ci-dessous pour aider le développeur a corriger ce problème. + Envoyer le rapport + Choisir le client email + + Wallpaper Board + Wallpaper Board est un tableau de bord pour fonds d\'écrans open source licencié sous Apache Licence 2.0 pour + Android disponible sur GitHub et libre d\'utilisation, développer par Dani Mahardhika. + Contributeurs de Wallpaper Board + Traducteurs de Wallpaper Board + + + Ouvrir + Fermer + diff --git a/library/src/main/res/values-hi/dashboard_strings.xml b/library/src/main/res/values-hi/dashboard_strings.xml index 920cf842..57cd7e7d 100644 --- a/library/src/main/res/values-hi/dashboard_strings.xml +++ b/library/src/main/res/values-hi/dashboard_strings.xml @@ -6,6 +6,11 @@ सेटिंग्स ऐप के बारे में ऐप विकास मे सहयोग करें + ऐप शेयर करें + रेट एवम रिव्यू + + यो! चेक आउट %s + चेक आउट %1$s, यह वॉलपेपर ऐप वास्तव में अच्छा है! %2$s खोज फिल्टर @@ -120,6 +125,10 @@ "वॉलपेपर बोर्ड एक ओपन सोर्स वॉलपेपर डैशबोअर्ड है जो की एंड्रॉयड के लिए अपाचे लाइसेन्स 2.0 के अंतर्गत लाइसेन्स्ड है. ये गिटहब पर उपयोग के लिए मुफ़्त मे उपलब्ध है जो की दानी महरधिका द्वारा विकसित किया गया है. " वॉलपेपर बोर्ड योगदानकर्ता वॉलपेपर बोर्ड अनुवादक + https://plus.google.com/u/1/+DaniMahardhika + https://github.com/danimahardhika + + वॉलपेपर बोर्ड खोलें बंद करें diff --git a/library/src/main/res/values-it/dashboard_strings.xml b/library/src/main/res/values-it/dashboard_strings.xml index bdf54285..89f1e07f 100644 --- a/library/src/main/res/values-it/dashboard_strings.xml +++ b/library/src/main/res/values-it/dashboard_strings.xml @@ -6,6 +6,11 @@ Impostazioni Informazioni Supporta lo sviluppo + Condividi App + Valuta e Recensisci + + Yo! Dai un\'occhiata a %s + Controlla %1$s, questa app di sfondi è fantastica! %2$s Cerca Filtra @@ -24,11 +29,48 @@ Filtra sfondi Tappa qui per filtrare gli sfondi secondo la categoria Opzioni sfondi + Tappa e tieni premuto qui per mostrare le opzioni, %s applicare gli sfondi. + scaricare o + Anteprima sfondi + Tappa qui per vedere l\'anteprima degli sfondi ad alta risoluzione + Sfondi preferiti + Tappa qui per salvare uno sfondo come preferito + Impostazioni sfondo + Tappa qui per aprire le impostazioni degli sfondi. +Puoi abilitare Imposta sfondo nella lockscreen su Android Nougat o abilitare il ritaglio dello sfondo. + Salva sfondo + Tappa qui per scaricare e salvare lo sfondo sul tuo dispositivo, per usarlo più tardi + Applica sfondo + Tappa qui per impostarlo come sfondo della homescreen + Nuovi Sfondi + Filtra per Categoria + Download sfondo … + Lo sfondo con nome %s esiste già, vuoi sostituirlo? + Sostituisci + Crea Nuovo + Impossibile scaricare lo sfondo + Download sfondo cancellato + Sfondo scaricato in + Caricamento sfondo … + Impostando lo sfondo … + Sfondo applicato + Impossibile applicare lo sfondo + Applicazione sfondo cancellata + Impossibile ottenere i dati dal server + Imposta come sfondo + Il ritaglio dello sfondo sarà disabilitato se lo applichi da questa opzione + Ritaglio Sfondo + Abilita Ritaglio Sfondo. Lo sfondo sarà ritagliato in base alla posizione dell\'anteprima sfondi. +Esegui un pinch o un doppio tocco per zoommare lo sfondo. + Sfondo Lockscreen + Applica Sfondo imposterà lo sfondo nella homescreen e nella lockscreen + Sfondo lockscreen è disponibile solo per Android Nougat + %s aggiunto ai preferiti %s rimosso dai preferiti Minuti - Ora + Ore Impostazioni Muzei Salva Impostazioni Salvate @@ -42,7 +84,7 @@ Contributori Licenze Open Source - Impossibile caricare i prodotti acquistare InApp + Impossibile caricare gli acquisti InApp Dati & Cache Cancella Cache @@ -56,7 +98,8 @@ Sfondo Percorso di salvataggio sfondi Prova a scaricare almeno uno sfondo - Altri + Lingua + Altro Scheda sfondi colorata Resetta Tutorial Resetta Tutorial @@ -70,7 +113,7 @@ Controllo della licenza riuscito, grazie per aver scaricato l\'applicazione dal Play Store. Controllo della licenza fallito, non hai scaricato l\'applicazione dal Play Store. Non puoi usare l\'applicazione. - Impossibile controllare la licenza, per favore riprova tra qualche istant + Impossibile controllare la licenza, per favore riprova tra qualche istante Nessun risultato trovato per \"%s\" @@ -79,9 +122,16 @@ Non puoi usare l\'applicazione. Invia Segnalazione Scegli Email Client + Wallpaper Board Wallpaper Board è una dashboard di sfondi open source, con licenza Apache License 2.0 per Android disponibile su Github e gratis, sviluppata da Dani Mahardhika. Contributori Wallpaper Board + Traduttori Wallpaper Board + https://plus.google.com/u/1/+DaniMahardhika + https://github.com/danimahardhika + + WallpaperBoard Apri + Chiudi diff --git a/library/src/main/res/values-pl/dashboard_strings.xml b/library/src/main/res/values-pl/dashboard_strings.xml index 8796340e..48435ab2 100644 --- a/library/src/main/res/values-pl/dashboard_strings.xml +++ b/library/src/main/res/values-pl/dashboard_strings.xml @@ -44,15 +44,15 @@ Nowa tapeta Sortuj według kategorii - Pobieranie tapety … + Pobieranie tapety… Tapeta o podanej nazwie %s już istnieje, chcesz ją zastąpić? Zastąp Utwórz nowy Nie można pobrać tapety Pobieranie tapety anulowane Tapeta pobrana do - Ładowanie tła … - Ustawianie tapety … + Ładowanie tła… + Ustawianie tapety… Tapeta ustawiona Nie można ustawić tapety Ustawianie tapety anulowane @@ -106,7 +106,7 @@ Dziękuję za dotację. Wykorzystam ją dobrze. - Sprawdzanie licencji … + Sprawdzanie licencji… Sprawdzanie licencji Licencja poprawna, dziękuję za pobranie aplikacji z Google Play. Sprawdzenie licencji się nie powiodło. Aplikacja nie została pobrana z Google Play. Nie będziesz mógł z niej korzystać. @@ -123,6 +123,7 @@ Wallpaper Board jest projektem typu open source, na licencji Apache 2.0 dla Android. Projekt dostępny na GitHub do darmowego użytku. Opracowane przez Dani Mahardhika. Autorzy Wallpaper Board Tłumacze Wallpaper Board + https://plus.google.com/u/1/+DaniMahardhika Otwórz diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index fe9c9faf..9c48e963 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -4,7 +4,6 @@ - diff --git a/library/src/main/res/values/colors.xml b/library/src/main/res/values/colors.xml index 2dab3084..c3f62a8e 100644 --- a/library/src/main/res/values/colors.xml +++ b/library/src/main/res/values/colors.xml @@ -27,10 +27,6 @@ #00000000 #00000000 - - #F25A16 - #FFFFFF - #FFFFFF #222222 @@ -38,8 +34,6 @@ #4D000000 #4DFFFFFF - #44DC4316 - #44DC4316 #EAEAEA diff --git a/library/src/main/res/values/dashboard_configurations.xml b/library/src/main/res/values/dashboard_configurations.xml index 1976d098..b50a214c 100644 --- a/library/src/main/res/values/dashboard_configurations.xml +++ b/library/src/main/res/values/dashboard_configurations.xml @@ -110,31 +110,23 @@ link inside description. ]]> - - Email - your@email.com - - - Google+ - http://plus.google.com/xxxx - - - Website - http://yourwebsite.com + * --> + + https://www.instagram.com/_u/yourusername + https://twitter.com/ + https://www.behance.net/ + https://plus.google.com/u/1/+yourusername + http://github.com/yourusername + http://www.yourwebsite.com + your@email.com + diff --git a/library/src/main/res/values/dashboard_languages.xml b/library/src/main/res/values/dashboard_languages.xml index ca83f1cc..c20ce850 100644 --- a/library/src/main/res/values/dashboard_languages.xml +++ b/library/src/main/res/values/dashboard_languages.xml @@ -6,11 +6,13 @@ English (United Kingdom) Bahasa Indonesia Dutch + French Hindi Italian Korean Malayalam Polish + Russian Spanish Turkish @@ -20,11 +22,13 @@ en_GB in_ID nl_NL + fr_FR hi_IN it_IT ko_KR ml_IN pl_PL + ru_RU es_ES tr_TR diff --git a/library/src/main/res/values/dashboard_strings.xml b/library/src/main/res/values/dashboard_strings.xml index d8a7635b..225b5b77 100644 --- a/library/src/main/res/values/dashboard_strings.xml +++ b/library/src/main/res/values/dashboard_strings.xml @@ -155,10 +155,9 @@ Android available at GitHub and free to use, developed by Dani Mahardhika. Wallpaper Board Contributors Wallpaper Board Translator - Google+ https://plus.google.com/u/1/+DaniMahardhika - GitHub https://github.com/danimahardhika + https://www.instagram.com/_u/danimahardhika112/ Wallpaper Board diff --git a/library/src/main/res/values/styles.xml b/library/src/main/res/values/styles.xml index 069ae3dd..9037cd79 100644 --- a/library/src/main/res/values/styles.xml +++ b/library/src/main/res/values/styles.xml @@ -30,7 +30,6 @@ @color/mainBackground @color/cardBackground @color/rippleColor - @color/rippleAccent @color/toolbarIcon @@ -63,7 +62,6 @@ @color/mainBackgroundDark @color/cardBackgroundDark @color/rippleColorDark - @color/rippleAccentDark @color/toolbarIconDark @@ -128,9 +126,4 @@ - - - diff --git a/library/src/main/res/xml/dashboard_translator.xml b/library/src/main/res/xml/dashboard_translator.xml index 5324d32e..a1eabd99 100644 --- a/library/src/main/res/xml/dashboard_translator.xml +++ b/library/src/main/res/xml/dashboard_translator.xml @@ -5,7 +5,7 @@ name="Dani Mahardhika" contribution="English, Bahasa Indonesia" image="https://avatars1.githubusercontent.com/u/23138905?v=3&s=300" - link="" /> + link="https://plus.google.com/u/1/+DaniMahardhika" /> + link="https://plus.google.com/u/1/+SaurabhGupta02" /> + link="https://plus.google.com/u/1/+LucaCassani1997" /> + link="https://plus.google.com/u/1/+SreeragAg7" /> + link="https://plus.google.com/u/1/+DamianPatkowski" /> + link="https://plus.google.com/u/1/117744221948279502909" /> + + + link="https://plus.google.com/u/1/+GoktugUlasEEE" /> + + + + \ No newline at end of file