diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-03-25 12:31:56 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-03-25 12:31:56 +0300 |
commit | 71a32529122030ec62f23b0c32a8e1f70ceab32f (patch) | |
tree | 009a971d92a33eebcb42dd4f7b744ee028fdbccf | |
parent | ca933104ea970c6ec8795b3e70111dbb23d0c161 (diff) |
- Fix exception when opening the "about"-section
- Uses AndroidX preference library
Signed-off-by: Stefan Niedermann <info@niedermann.it>
6 files changed, 52 insertions, 14 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java index e5f6504fa..b30e28c68 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/AboutActivity.java @@ -3,6 +3,7 @@ package it.niedermann.nextcloud.deck.ui; import android.os.Bundle; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -14,11 +15,14 @@ import com.google.android.material.tabs.TabLayoutMediator; import it.niedermann.nextcloud.deck.Application; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.databinding.ActivityAboutBinding; +import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.ui.about.AboutFragmentContributingTab; import it.niedermann.nextcloud.deck.ui.about.AboutFragmentCreditsTab; import it.niedermann.nextcloud.deck.ui.about.AboutFragmentLicenseTab; import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler; +import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT; + public class AboutActivity extends AppCompatActivity { private final static int[] tabTitles = new int[]{ @@ -37,14 +41,20 @@ public class AboutActivity extends AppCompatActivity { setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); - binding.viewPager.setAdapter(new TabsPagerAdapter(getSupportFragmentManager(), getLifecycle())); + binding.viewPager.setAdapter(new TabsPagerAdapter(getSupportFragmentManager(), getLifecycle(), (Account) getIntent().getSerializableExtra(BUNDLE_KEY_ACCOUNT))); new TabLayoutMediator(binding.tabLayout, binding.viewPager, (tab, position) -> tab.setText(tabTitles[position])).attach(); + + setResult(RESULT_OK); } private static class TabsPagerAdapter extends FragmentStateAdapter { - TabsPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) { + @Nullable + private final Account account; + + TabsPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, @Nullable Account account) { super(fragmentManager, lifecycle); + this.account = account; } @NonNull @@ -52,7 +62,7 @@ public class AboutActivity extends AppCompatActivity { public Fragment createFragment(int position) { switch (position) { case 0: - return new AboutFragmentCreditsTab(); + return AboutFragmentCreditsTab.newInstance(account); case 1: return new AboutFragmentContributingTab(); case 2: diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java index 61a9ca44e..436d11001 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java @@ -65,6 +65,7 @@ import it.niedermann.nextcloud.deck.util.ExceptionUtil; import it.niedermann.nextcloud.deck.util.ViewUtil; import static androidx.lifecycle.Transformations.switchMap; +import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT; public abstract class DrawerActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { protected static final int MENU_ID_ABOUT = -1; @@ -332,7 +333,8 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga } else { switch (item.getItemId()) { case MENU_ID_ABOUT: - Intent aboutIntent = new Intent(getApplicationContext(), AboutActivity.class); + Intent aboutIntent = new Intent(getApplicationContext(), AboutActivity.class) + .putExtra(BUNDLE_KEY_ACCOUNT, account); startActivityForResult(aboutIntent, ACTIVITY_ABOUT); break; case MENU_ID_SETTINGS: diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java index 5bf79e869..d7aab83d5 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/about/AboutFragmentCreditsTab.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.preference.PreferenceManager; @@ -16,10 +17,12 @@ import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.api.IResponseCallback; import it.niedermann.nextcloud.deck.databinding.FragmentAboutCreditsTabBinding; import it.niedermann.nextcloud.deck.exceptions.OfflineException; +import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.ocs.Capabilities; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.util.DateUtil; +import static it.niedermann.nextcloud.deck.ui.card.CardAdapter.BUNDLE_KEY_ACCOUNT; import static it.niedermann.nextcloud.deck.util.SpannableUtil.disabled; import static it.niedermann.nextcloud.deck.util.SpannableUtil.setTextWithURL; import static it.niedermann.nextcloud.deck.util.SpannableUtil.strong; @@ -39,15 +42,19 @@ public class AboutFragmentCreditsTab extends Fragment { binding.aboutVersion.setText(getString(R.string.about_version, strong(BuildConfig.VERSION_NAME))); SyncManager syncManager = new SyncManager(requireActivity()); - try { - syncManager.getServerVersion(new IResponseCallback<Capabilities>(null) { - @Override - public void onResponse(Capabilities response) { - requireActivity().runOnUiThread(() -> binding.aboutServerAppVersion.setText(strong(response.getDeckVersion().getOriginalVersion()))); - } - }); - } catch (OfflineException e) { - binding.aboutServerAppVersion.setText(disabled(getString(R.string.you_are_currently_offline), requireContext())); + if (getArguments() != null && getArguments().containsKey(BUNDLE_KEY_ACCOUNT)) { + try { + syncManager.getServerVersion(new IResponseCallback<Capabilities>((Account) getArguments().getSerializable(BUNDLE_KEY_ACCOUNT)) { + @Override + public void onResponse(Capabilities response) { + requireActivity().runOnUiThread(() -> binding.aboutServerAppVersion.setText(strong(response.getDeckVersion().getOriginalVersion()))); + } + }); + } catch (OfflineException e) { + binding.aboutServerAppVersion.setText(disabled(getString(R.string.you_are_currently_offline), requireContext())); + } + } else { + binding.aboutServerAppVersionContainer.setVisibility(View.GONE); } String backgroundSyncOffValue = getString(R.string.pref_value_background_sync_off); @@ -67,4 +74,19 @@ public class AboutFragmentCreditsTab extends Fragment { setTextWithURL(binding.aboutTranslators, getResources(), R.string.about_translators_transifex, R.string.about_translators_transifex_label, R.string.url_translations); return binding.getRoot(); } + + public static AboutFragmentCreditsTab newInstance() { + return new AboutFragmentCreditsTab(); + } + + public static AboutFragmentCreditsTab newInstance(@Nullable Account account) { + if (account == null) { + return newInstance(); + } + AboutFragmentCreditsTab fragment = new AboutFragmentCreditsTab(); + Bundle args = new Bundle(); + args.putSerializable(BUNDLE_KEY_ACCOUNT, account); + fragment.setArguments(args); + return fragment; + } }
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about_credits_tab.xml b/app/src/main/res/layout/fragment_about_credits_tab.xml index c505d559a..7f3b8537e 100644 --- a/app/src/main/res/layout/fragment_about_credits_tab.xml +++ b/app/src/main/res/layout/fragment_about_credits_tab.xml @@ -17,6 +17,7 @@ android:layout_marginTop="30dp" android:layout_marginBottom="30dp" android:drawableTop="@mipmap/ic_launcher" + android:drawablePadding="@dimen/standard_padding" android:text="@string/app_name" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="26sp" /> @@ -62,6 +63,7 @@ android:text="@string/about_version" /> <LinearLayout + android:id="@+id/about_server_app_version_container" android:layout_width="match_parent" android:layout_height="wrap_content"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3bdda93bb..6d1ad9c25 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,7 +28,7 @@ <string name="about_maintainer_title">Maintainer</string> <string name="about_maintainer" translatable="false">Niedermann IT-Dienstleistungen</string> <string name="about_developers_title">Developers</string> - <string name="about_developers" translatable="false">Stefan Niedermann, Artur Dawtjan, Andy Scherzinger</string> + <string name="about_developers" translatable="false">Stefan Niedermann, Artur Dawtjan</string> <string name="about_translators_title">Translators</string> <string name="about_translators_transifex">Nextcloud community on %1$s</string> <string name="about_translators_transifex_label">Transifex</string> diff --git a/fastlane/metadata/android/en-US/changelogs/5002.txt b/fastlane/metadata/android/en-US/changelogs/5002.txt new file mode 100644 index 000000000..d84461697 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5002.txt @@ -0,0 +1,2 @@ +- Fix exception when opening the "about"-section +- Uses AndroidX preference library
\ No newline at end of file |