diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java index 613e63b24..ea2d96703 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java @@ -46,6 +46,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; +import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; @@ -552,6 +553,67 @@ public class MainActivity extends AppCompatActivity }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); + }else if( id == R.id.action_size){ + final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + int textSize = sharedpreferences.getInt(Helper.SET_TEXT_SIZE,100); + int iconSize = sharedpreferences.getInt(Helper.SET_ICON_SIZE,100); + + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); + builder.setTitle(R.string.text_size); + + View popup_quick_settings = getLayoutInflater().inflate( R.layout.popup_text_size, null ); + builder.setView(popup_quick_settings); + + SeekBar set_text_size = (SeekBar) popup_quick_settings.findViewById(R.id.set_text_size); + SeekBar set_icon_size = (SeekBar) popup_quick_settings.findViewById(R.id.set_icon_size); + final TextView set_text_size_value = (TextView) popup_quick_settings.findViewById(R.id.set_text_size_value); + final TextView set_icon_size_value = (TextView) popup_quick_settings.findViewById(R.id.set_icon_size_value); + set_text_size_value.setText(String.format("%s%%",String.valueOf(textSize))); + set_icon_size_value.setText(String.format("%s%%",String.valueOf(iconSize))); + + set_text_size.setMax(20); + set_icon_size.setMax(20); + + set_text_size.setProgress(((textSize-50)/5)); + set_icon_size.setProgress(((iconSize-50)/5)); + + set_text_size.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onStopTrackingTouch(SeekBar seekBar) {} + @Override + public void onStartTrackingTouch(SeekBar seekBar) {} + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + + int value = 50 + progress*5; + set_text_size_value.setText(String.format("%s%%",String.valueOf(value))); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putInt(Helper.SET_TEXT_SIZE, value); + editor.apply(); + } + }); + set_icon_size.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onStopTrackingTouch(SeekBar seekBar) {} + @Override + public void onStartTrackingTouch(SeekBar seekBar) {} + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + int value = 50 + progress*5; + set_icon_size_value.setText(String.format("%s%%",String.valueOf(value))); + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putInt(Helper.SET_ICON_SIZE, value); + editor.apply(); + } + }); + builder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + MainActivity.this.recreate(); + dialog.dismiss(); + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); } return super.onOptionsItemSelected(item); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java index 5b214f70d..be85e08bc 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java @@ -28,6 +28,7 @@ import android.support.v7.widget.CardView; import android.text.Html; import android.text.SpannableString; import android.text.method.LinkMovementMethod; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -152,6 +153,13 @@ public class NotificationsListAdapter extends BaseAdapter implements OnPostActio } else { holder = (ViewHolder) convertView.getTag(); } + + final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + + int iconSizePercent = sharedpreferences.getInt(Helper.SET_ICON_SIZE, 100); + int textSizePercent = sharedpreferences.getInt(Helper.SET_TEXT_SIZE, 100); + + final float scale = context.getResources().getDisplayMetrics().density; String type = notification.getType(); String typeString = ""; @@ -182,8 +190,16 @@ public class NotificationsListAdapter extends BaseAdapter implements OnPostActio break; } holder.notification_type.setText(typeString); + holder.status_privacy.getLayoutParams().height = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_privacy.getLayoutParams().width = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_reply.getLayoutParams().height = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_reply.getLayoutParams().width = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + + holder.notification_status_content.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.notification_type.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.notification_account_username.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.status_date.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12*textSizePercent/100); - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); //Manages theme for icon colors int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); @@ -223,11 +239,11 @@ public class NotificationsListAdapter extends BaseAdapter implements OnPostActio holder.status_document_container.setVisibility(View.VISIBLE); if( (status.getIn_reply_to_account_id() != null && !status.getIn_reply_to_account_id().equals("null")) || (status.getIn_reply_to_id() != null && !status.getIn_reply_to_id().equals("null")) ){ Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_reply); - img.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (15 * scale + 0.5f)); + img.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (15 * iconSizePercent/100 * scale + 0.5f)); holder.notification_account_username.setCompoundDrawables( img, null, null, null); }else if( status.isReblogged()){ Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_retweet); - img.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (15 * scale + 0.5f)); + img.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (15 * iconSizePercent/100 * scale + 0.5f)); holder.notification_account_username.setCompoundDrawables( img, null, null, null); }else{ holder.notification_account_username.setCompoundDrawables( null, null, null, null); @@ -302,8 +318,8 @@ public class NotificationsListAdapter extends BaseAdapter implements OnPostActio else imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_retweet_black); - imgFav.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (20 * scale + 0.5f)); - imgReblog.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (20 * scale + 0.5f)); + imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f)); + imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f)); holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null); holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index f5b4c1902..aa12626dd 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -34,6 +34,7 @@ import android.text.Selection; import android.text.SpannableString; import android.text.method.LinkMovementMethod; import android.util.Log; +import android.util.TypedValue; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -200,6 +201,29 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf } else { holder = (ViewHolder) convertView.getTag(); } + + + final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + + int iconSizePercent = sharedpreferences.getInt(Helper.SET_ICON_SIZE, 100); + int textSizePercent = sharedpreferences.getInt(Helper.SET_TEXT_SIZE, 100); + + holder.status_more.getLayoutParams().height = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_more.getLayoutParams().width = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_privacy.getLayoutParams().height = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_privacy.getLayoutParams().width = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_reply.getLayoutParams().height = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + holder.status_reply.getLayoutParams().width = (int) Helper.convertDpToPixel((20*iconSizePercent/100), context); + + holder.status_content.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.status_account_displayname.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.status_account_username.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12*textSizePercent/100); + holder.status_reblog_user.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.status_toot_date.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12*textSizePercent/100); + holder.status_spoiler.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + holder.status_content_translated.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14*textSizePercent/100); + + if( status.getSpoiler_text() != null && status.getSpoiler_text().trim().length() > 0 && !status.isSpoilerShown()){ holder.status_content_container.setVisibility(View.GONE); holder.status_spoiler_container.setVisibility(View.VISIBLE); @@ -267,7 +291,6 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf holder.status_action_container.setVisibility(View.GONE); } //Manages theme for icon colors - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); if( theme == Helper.THEME_DARK){ changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_text); @@ -301,11 +324,11 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf final float scale = context.getResources().getDisplayMetrics().density; if( !status.getIn_reply_to_account_id().equals("null") || !status.getIn_reply_to_id().equals("null") ){ Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_reply); - img.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (15 * scale + 0.5f)); + img.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (15 * iconSizePercent/100 * scale + 0.5f)); holder.status_account_displayname.setCompoundDrawables( img, null, null, null); }else if( status.getReblog() != null){ Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_retweet_black); - img.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (15 * scale + 0.5f)); + img.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (15 * iconSizePercent/100 * scale + 0.5f)); holder.status_account_displayname.setCompoundDrawables( img, null, null, null); }else{ holder.status_account_displayname.setCompoundDrawables( null, null, null, null); @@ -539,8 +562,8 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf else imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_retweet_black); - imgFav.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (20 * scale + 0.5f)); - imgReblog.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (20 * scale + 0.5f)); + imgFav.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f)); + imgReblog.setBounds(0,0,(int) (20 * iconSizePercent/100 * scale + 0.5f),(int) (20 * iconSizePercent/100 * scale + 0.5f)); holder.status_favorite_count.setCompoundDrawables(imgFav, null, null, null); holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null); @@ -1079,4 +1102,5 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf builderSingle.create().requestWindowFeature(Window.FEATURE_NO_TITLE); builderSingle.show(); } + } \ No newline at end of file diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index d1eb627c9..c6c240468 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -194,6 +194,8 @@ public class Helper { public static final String SET_NSFW_TIMEOUT = "set_nsfw_timeout"; public static final String SET_TABS = "set_tabs"; public static final String SET_MEDIA_URLS = "set_media_urls"; + public static final String SET_TEXT_SIZE = "set_text_size"; + public static final String SET_ICON_SIZE = "set_icon_size"; public static final int ATTACHMENT_ALWAYS = 1; public static final int ATTACHMENT_WIFI = 2; public static final int ATTACHMENT_ASK = 3; diff --git a/app/src/main/res/drawable-hdpi/ic_action_decrease_menu.png b/app/src/main/res/drawable-hdpi/ic_action_decrease_menu.png new file mode 100644 index 000000000..751443c36 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_decrease_menu.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_increase_menu.png b/app/src/main/res/drawable-hdpi/ic_action_increase_menu.png new file mode 100644 index 000000000..7800ba33d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_increase_menu.png differ diff --git a/app/src/main/res/drawable-ldpi/ic_action_decrease_menu.png b/app/src/main/res/drawable-ldpi/ic_action_decrease_menu.png new file mode 100644 index 000000000..4d6458890 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_action_decrease_menu.png differ diff --git a/app/src/main/res/drawable-ldpi/ic_action_increase_menu.png b/app/src/main/res/drawable-ldpi/ic_action_increase_menu.png new file mode 100644 index 000000000..1a39b71f8 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_action_increase_menu.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_decrease_menu.png b/app/src/main/res/drawable-mdpi/ic_action_decrease_menu.png new file mode 100644 index 000000000..88b3982fd Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_decrease_menu.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_increase_menu.png b/app/src/main/res/drawable-mdpi/ic_action_increase_menu.png new file mode 100644 index 000000000..ed40b2b21 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_increase_menu.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_decrease_menu.png b/app/src/main/res/drawable-xhdpi/ic_action_decrease_menu.png new file mode 100644 index 000000000..5265f6d39 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_decrease_menu.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_increase_menu.png b/app/src/main/res/drawable-xhdpi/ic_action_increase_menu.png new file mode 100644 index 000000000..185be8a76 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_increase_menu.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_decrease_menu.png b/app/src/main/res/drawable-xxhdpi/ic_action_decrease_menu.png new file mode 100644 index 000000000..b515e06e3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_decrease_menu.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_increase_menu.png b/app/src/main/res/drawable-xxhdpi/ic_action_increase_menu.png new file mode 100644 index 000000000..2ab780a89 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_increase_menu.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_decrease_menu.png b/app/src/main/res/drawable-xxxhdpi/ic_action_decrease_menu.png new file mode 100644 index 000000000..4a0b46bc0 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_decrease_menu.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_increase_menu.png b/app/src/main/res/drawable-xxxhdpi/ic_action_increase_menu.png new file mode 100644 index 000000000..e6ca376b3 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_increase_menu.png differ diff --git a/app/src/main/res/layout/popup_text_size.xml b/app/src/main/res/layout/popup_text_size.xml new file mode 100644 index 000000000..7a314f002 --- /dev/null +++ b/app/src/main/res/layout/popup_text_size.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml index a1408a377..dec1cfe65 100644 --- a/app/src/main/res/menu/main.xml +++ b/app/src/main/res/menu/main.xml @@ -13,6 +13,10 @@ android:id="@+id/action_about_instance" android:title="@string/action_about_instance" app:showAsAction="never" /> + Désolé ! Votre appareil ne supporte pas la commande vocale ! Tout effacer Programmer + Taille du texte et des icônes + Modifier la taille du texte : + Modifier la taille des icônes : Suivant Précédent Ouvrir avec diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 36bb549c9..c1a91f286 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -47,7 +47,9 @@ Delete all Schedule - + Text and icon sizes + Change the current text size: + Change the current icon size: Next Previous Open with