diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0193cb596..55b27fbb0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -173,7 +173,7 @@ android:label="@string/app_name" /> \ No newline at end of file diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java index c79078fa8..42d523a30 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java @@ -749,8 +749,14 @@ public abstract class BaseMainActivity extends AppCompatActivity popup.show(); } }); - - + final ImageView optionInfo = headerLayout.findViewById(R.id.header_option_info); + optionInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getApplicationContext(), InstanceHealthActivity.class); + startActivity(intent); + } + }); updateHeaderAccountInfo(BaseMainActivity.this, account, headerLayout, imageLoader, options); //Locked account can see follow request if (account.isLocked()) { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java index b4f0d4c25..ff783a4e1 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java @@ -103,7 +103,6 @@ public class InstanceActivity extends AppCompatActivity implements OnRetrieveIns TextView instance_version = findViewById(R.id.instance_version); TextView instance_uri = findViewById(R.id.instance_uri); FloatingActionButton instance_contact = findViewById(R.id.instance_contact); - FloatingActionButton instance_health = findViewById(R.id.instance_health); instance_title.setText(instance.getTitle()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) @@ -127,12 +126,5 @@ public class InstanceActivity extends AppCompatActivity implements OnRetrieveIns startActivity(Intent.createChooser(emailIntent, getString(R.string.send_email))); } }); - instance_health.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(getApplicationContext(), InstanceHealthActivity.class); - startActivity(intent); - } - }); } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java index b8c95af0f..196b75bb9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java @@ -17,8 +17,7 @@ package fr.gouv.etalab.mastodon.activities; import android.annotation.SuppressLint; -import android.content.Context; -import android.content.SharedPreferences; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -27,13 +26,19 @@ import android.graphics.LightingColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.text.SpannableString; +import android.text.style.UnderlineSpan; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.view.Window; +import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; @@ -57,6 +62,8 @@ import fr.gouv.etalab.mastodon.client.HttpsConnection; import fr.gouv.etalab.mastodon.client.PatchBaseImageDownloader; import fr.gouv.etalab.mastodon.helper.Helper; +import static fr.gouv.etalab.mastodon.helper.Helper.withSuffix; + /** * Created by Thomas on 24/11/2017. @@ -76,26 +83,44 @@ public class InstanceHealthActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); - SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); - if( theme == Helper.THEME_LIGHT){ - setTheme(R.style.AppTheme); - }else { - setTheme(R.style.AppThemeDark); - } + setTheme(R.style.AppThemeDark_NoActionBar); setContentView(R.layout.activity_instance_social); + getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); Bundle b = getIntent().getExtras(); + if( getSupportActionBar() != null) + getSupportActionBar().hide(); instance = Helper.getLiveInstance(getApplicationContext()); if(b != null) instance = b.getString("instance", Helper.getLiveInstance(getApplicationContext())); - + Button close = findViewById(R.id.close); name = findViewById(R.id.name); values = findViewById(R.id.values); checked_at = findViewById(R.id.checked_at); up = findViewById(R.id.up); uptime = findViewById(R.id.uptime); container = findViewById(R.id.container); + + + close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + + TextView ref_instance = findViewById(R.id.ref_instance); + SpannableString content = new SpannableString(ref_instance.getText().toString()); + content.setSpan(new UnderlineSpan(), 0, content.length(), 0); + ref_instance.setText(content); + ref_instance.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://instances.social")); + startActivity(browserIntent); + } + }); + option = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false) .cacheOnDisk(true).resetViewBeforeLoading(true).build(); imageLoader = ImageLoader.getInstance(); @@ -137,7 +162,7 @@ public class InstanceHealthActivity extends AppCompatActivity { if( response != null) instanceSocial = API.parseInstanceSocialResponse(getApplicationContext(), new JSONObject(response)); runOnUiThread(new Runnable() { - @SuppressLint("SetTextI18n") + @SuppressLint({"SetTextI18n", "DefaultLocale"}) public void run() { if( instanceSocial.getThumbnail() != null && !instanceSocial.getThumbnail().equals("null")) imageLoader.loadImage(instanceSocial.getThumbnail(), option, new SimpleImageLoadingListener() { @@ -161,10 +186,16 @@ public class InstanceHealthActivity extends AppCompatActivity { } }); name.setText(instanceSocial.getName()); - up.setText(Boolean.toString(instanceSocial.isUp())); - uptime.setText(Float.toString(instanceSocial.getUptime())); - checked_at.setText(Helper.dateToString(getApplicationContext(), instanceSocial.getUpdated_at())); - values.setText(String.format("version: %s - %s users - %s statuses", instanceSocial.getVersion(), Long.toString(instanceSocial.getUsers()), Long.toString(instanceSocial.getStatuses()))); + if( instanceSocial.isUp()) { + up.setText("Is up!"); + up.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.green)); + }else { + up.setText("Is down!"); + up.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.red)); + } + uptime.setText(String.format("Uptime: %.2f %%", (instanceSocial.getUptime()*100))); + checked_at.setText(String.format("Checked at: %s", Helper.dateToString(getApplicationContext(), instanceSocial.getUpdated_at()))); + values.setText(String.format("version: %s \n %s users - %s statuses", instanceSocial.getVersion(), withSuffix(instanceSocial.getUsers()), withSuffix(instanceSocial.getStatuses()))); } }); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java index 9a958a964..392b74326 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java @@ -94,6 +94,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface; import fr.gouv.etalab.mastodon.client.Entities.Relationship; import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor; +import static fr.gouv.etalab.mastodon.helper.Helper.withSuffix; /** @@ -562,11 +563,11 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi account_note.setMovementMethod(LinkMovementMethod.getInstance()); if (tabLayout.getTabAt(0) != null && tabLayout.getTabAt(1) != null && tabLayout.getTabAt(2) != null) { //noinspection ConstantConditions - tabLayout.getTabAt(0).setText(getString(R.string.status_cnt, account.getStatuses_count())); + tabLayout.getTabAt(0).setText(getString(R.string.status_cnt, withSuffix(account.getStatuses_count()))); //noinspection ConstantConditions - tabLayout.getTabAt(1).setText(getString(R.string.following_cnt, account.getFollowing_count())); + tabLayout.getTabAt(1).setText(getString(R.string.following_cnt, withSuffix(account.getFollowing_count()))); //noinspection ConstantConditions - tabLayout.getTabAt(2).setText(getString(R.string.followers_cnt, account.getFollowers_count())); + tabLayout.getTabAt(2).setText(getString(R.string.followers_cnt, withSuffix(account.getFollowers_count()))); //Allows to filter by long click final LinearLayout tabStrip = (LinearLayout) tabLayout.getChildAt(0); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/AccountsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/AccountsListAdapter.java index c90207606..c0e00aac2 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/AccountsListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/AccountsListAdapter.java @@ -51,6 +51,8 @@ import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface; import fr.gouv.etalab.mastodon.activities.ShowAccountActivity; import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask; +import static fr.gouv.etalab.mastodon.helper.Helper.withSuffix; + /** * Created by Thomas on 27/04/2017. @@ -160,9 +162,9 @@ public class AccountsListAdapter extends RecyclerView.Adapter implements OnPostA //noinspection deprecation holder.account_ds.setText(Html.fromHtml(account.getNote())); holder.account_ds.setAutoLinkMask(Linkify.WEB_URLS); - holder.account_sc.setText(String.valueOf(account.getStatuses_count())); - holder.account_fgc.setText(String.valueOf(account.getFollowing_count())); - holder.account_frc.setText(String.valueOf(account.getFollowers_count())); + holder.account_sc.setText(withSuffix(account.getStatuses_count())); + holder.account_fgc.setText(withSuffix(account.getFollowing_count())); + holder.account_frc.setText(withSuffix(account.getFollowers_count())); //Profile picture imageLoader.displayImage(account.getAvatar(), holder.account_pp, options); 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 f7e980f70..5dbfa4397 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 @@ -17,6 +17,7 @@ package fr.gouv.etalab.mastodon.helper; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.NotificationChannel; import android.app.NotificationManager; @@ -1767,4 +1768,22 @@ public class Helper { return Bitmap.createScaledBitmap(originalPicture, width, height, false); } + @SuppressLint("DefaultLocale") + public static String withSuffix(long count) { + if (count < 1000) return "" + count; + int exp = (int) (Math.log(count) / Math.log(1000)); + Locale locale = null; + try { + locale = Locale.getDefault(); + }catch (Exception ignored){} + if(locale != null) + return String.format(locale, "%.1f %c", + count / Math.pow(1000, exp), + "kMGTPE".charAt(exp-1)); + else + return String.format( "%.1f %c", + count / Math.pow(1000, exp), + "kMGTPE".charAt(exp-1)); + } + } diff --git a/app/src/main/res/drawable-anydpi/ic_info_outline.xml b/app/src/main/res/drawable-anydpi/ic_info_outline.xml new file mode 100644 index 000000000..9567ecd77 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_info_outline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-hdpi/ic_network_check.png b/app/src/main/res/drawable-hdpi/ic_network_check.png deleted file mode 100644 index f31dfd329..000000000 Binary files a/app/src/main/res/drawable-hdpi/ic_network_check.png and /dev/null differ diff --git a/app/src/main/res/drawable-ldpi/ic_network_check.png b/app/src/main/res/drawable-ldpi/ic_network_check.png deleted file mode 100644 index f894f1aff..000000000 Binary files a/app/src/main/res/drawable-ldpi/ic_network_check.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_network_check.png b/app/src/main/res/drawable-mdpi/ic_network_check.png deleted file mode 100644 index 9c580c862..000000000 Binary files a/app/src/main/res/drawable-mdpi/ic_network_check.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_network_check.png b/app/src/main/res/drawable-xhdpi/ic_network_check.png deleted file mode 100644 index 45b6ffa74..000000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_network_check.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_network_check.png b/app/src/main/res/drawable-xxhdpi/ic_network_check.png deleted file mode 100644 index 733955c14..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_network_check.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_network_check.png b/app/src/main/res/drawable-xxxhdpi/ic_network_check.png deleted file mode 100644 index 14e499dc1..000000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_network_check.png and /dev/null differ diff --git a/app/src/main/res/layout/activity_instance.xml b/app/src/main/res/layout/activity_instance.xml index d16061079..d04fb5a9a 100644 --- a/app/src/main/res/layout/activity_instance.xml +++ b/app/src/main/res/layout/activity_instance.xml @@ -77,14 +77,6 @@ android:layout_height="wrap_content" /> - + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="300dp"> - - - - - + + - - - + /> - - - - + /> + + +