From 4705cb68c51cb49e3a0ca88f693ff9e413856957 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 4 Oct 2020 09:43:59 +0200 Subject: [PATCH] Change loader + add about page --- app/build.gradle | 3 +- .../app/fedilab/mobilizon/MainActivity.java | 61 ++++++++++++- .../client/entities/WellKnownNodeinfo.java | 2 +- .../webview/MobilizonWebChromeClient.java | 2 - .../webview/MobilizonWebViewClient.java | 1 - .../main/res/drawable/ic_baseline_info_24.xml | 10 +++ app/src/main/res/layout/content_main.xml | 9 +- app/src/main/res/layout/popup_about.xml | 88 +++++++++++++++++++ app/src/main/res/menu/menu_main.xml | 6 ++ app/src/main/res/values/strings.xml | 6 ++ 10 files changed, 177 insertions(+), 11 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_info_24.xml create mode 100644 app/src/main/res/layout/popup_about.xml diff --git a/app/build.gradle b/app/build.gradle index 17c554e..ee7a10b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,7 +6,7 @@ android { defaultConfig { applicationId "app.fedilab.mobilizon" - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion 30 versionCode 1 versionName "1.0" @@ -49,6 +49,7 @@ dependencies { testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + implementation 'com.github.ybq:Android-SpinKit:1.4.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' diff --git a/app/src/main/java/app/fedilab/mobilizon/MainActivity.java b/app/src/main/java/app/fedilab/mobilizon/MainActivity.java index c35dac6..31fd09c 100644 --- a/app/src/main/java/app/fedilab/mobilizon/MainActivity.java +++ b/app/src/main/java/app/fedilab/mobilizon/MainActivity.java @@ -5,13 +5,19 @@ import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; +import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.text.SpannableString; +import android.text.style.UnderlineSpan; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -21,6 +27,7 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.RelativeLayout; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; @@ -49,7 +56,7 @@ import es.dmoral.toasty.Toasty; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { - public static int PICK_INSTANCE = 5641; + //public static int PICK_INSTANCE = 5641; public static boolean isAuthenticated = false; final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124; private final LocationListener mLocationListener = new LocationListener() { @@ -166,6 +173,58 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On if (id == R.id.action_instance) { showRadioButtonDialogFullInstances(); return true; + } else if (id == R.id.action_about) { + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); + LayoutInflater inflater = getLayoutInflater(); + View dialogView = inflater.inflate(R.layout.popup_about, new LinearLayout(MainActivity.this), false); + TextView about = dialogView.findViewById(R.id.about); + TextView terms = dialogView.findViewById(R.id.terms); + TextView license = dialogView.findViewById(R.id.license); + TextView about_the_app = dialogView.findViewById(R.id.about_the_app); + + SpannableString contentAbout = new SpannableString(about.getText().toString()); + contentAbout.setSpan(new UnderlineSpan(), 0, contentAbout.length(), 0); + about.setText(contentAbout); + about.setOnClickListener(v -> { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://" + Helper.getLiveInstance(MainActivity.this) + "/about")); + startActivity(browserIntent); + }); + + SpannableString contentTerms = new SpannableString(terms.getText().toString()); + contentTerms.setSpan(new UnderlineSpan(), 0, contentTerms.length(), 0); + terms.setText(contentTerms); + terms.setOnClickListener(v -> { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://" + Helper.getLiveInstance(MainActivity.this) + "/terms")); + startActivity(browserIntent); + }); + SpannableString contentLicense = new SpannableString(license.getText().toString()); + contentLicense.setSpan(new UnderlineSpan(), 0, contentTerms.length(), 0); + license.setText(contentLicense); + license.setOnClickListener(v -> { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://framagit.org/framasoft/mobilizon/blob/master/LICENSE")); + startActivity(browserIntent); + }); + + try { + PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); + String version = pInfo.versionName; + about_the_app.setText(getResources().getString(R.string.about_the_app, version)); + } catch (PackageManager.NameNotFoundException ignored) { + } + + SpannableString contentAboutApp = new SpannableString(about_the_app.getText().toString()); + contentAboutApp.setSpan(new UnderlineSpan(), 0, contentAboutApp.length(), 0); + about_the_app.setText(contentAboutApp); + about_the_app.setOnClickListener(v -> { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://framagit.org/tom79/mobilizon-android-app")); + startActivity(browserIntent); + }); + + builder.setView(dialogView); + builder + .setPositiveButton(R.string.close, (dialog, which) -> dialog.dismiss()) + .setIcon(R.drawable.ic_baseline_info_24) + .show(); } return super.onOptionsItemSelected(item); diff --git a/app/src/main/java/app/fedilab/mobilizon/client/entities/WellKnownNodeinfo.java b/app/src/main/java/app/fedilab/mobilizon/client/entities/WellKnownNodeinfo.java index 55e76d7..daa85f8 100644 --- a/app/src/main/java/app/fedilab/mobilizon/client/entities/WellKnownNodeinfo.java +++ b/app/src/main/java/app/fedilab/mobilizon/client/entities/WellKnownNodeinfo.java @@ -19,7 +19,7 @@ import com.google.gson.annotations.SerializedName; import java.util.List; -@SuppressWarnings("unused") +@SuppressWarnings({"unused", "RedundantSuppression"}) public class WellKnownNodeinfo { @SerializedName("links") diff --git a/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebChromeClient.java b/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebChromeClient.java index 3ad7421..a914eb9 100644 --- a/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebChromeClient.java +++ b/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebChromeClient.java @@ -26,8 +26,6 @@ import android.widget.FrameLayout; import androidx.appcompat.app.AppCompatActivity; -import app.fedilab.mobilizon.MainActivity; - /** * Created by Thomas diff --git a/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebViewClient.java b/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebViewClient.java index 0701342..9a2561d 100644 --- a/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebViewClient.java +++ b/app/src/main/java/app/fedilab/mobilizon/webview/MobilizonWebViewClient.java @@ -87,7 +87,6 @@ public class MobilizonWebViewClient extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { - view.setVisibility(View.INVISIBLE); super.onPageStarted(view, url, favicon); if (activity instanceof MainActivity) { ((MainActivity) activity).showProgressDialog(); diff --git a/app/src/main/res/drawable/ic_baseline_info_24.xml b/app/src/main/res/drawable/ic_baseline_info_24.xml new file mode 100644 index 0000000..17255b7 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_info_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 99576a5..953f8dd 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -30,17 +30,16 @@ - + android:layout_gravity="center" + app:SpinKit_Color="@color/colorPrimary" /> diff --git a/app/src/main/res/layout/popup_about.xml b/app/src/main/res/layout/popup_about.xml new file mode 100644 index 0000000..9834c85 --- /dev/null +++ b/app/src/main/res/layout/popup_about.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 118e3fb..1e8fce7 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -13,4 +13,10 @@ android:orderInCategory="100" android:title="@string/change_instance" app:showAsAction="never" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32724cf..28e881c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,4 +31,10 @@ My account Register Account + About + Mobilizon logo + Close + Terms + License + About the app (Release %1$s) \ No newline at end of file