From d7400c3f76244cd0ae63ba595cf47c59ff57f718 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Fri, 9 Oct 2020 10:42:23 +0200 Subject: [PATCH] Add branding support for - hide provider - hide auth - multi account support - enforce domain Signed-off-by: tobiasKaminsky --- .../nextcloud/talk/activities/MainActivity.kt | 29 +++++--- .../ServerSelectionController.java | 31 ++++++--- .../talk/controllers/SettingsController.java | 66 ++++++++++++------- app/src/main/res/values/setup.xml | 6 ++ 4 files changed, 91 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 00a7f618d..75197b985 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -25,6 +25,7 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle +import android.text.TextUtils import android.view.ViewGroup import androidx.annotation.RequiresApi import autodagger.AutoInjector @@ -38,10 +39,7 @@ import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler import com.google.android.material.appbar.MaterialToolbar import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication -import com.nextcloud.talk.controllers.CallNotificationController -import com.nextcloud.talk.controllers.ConversationsListController -import com.nextcloud.talk.controllers.LockedController -import com.nextcloud.talk.controllers.ServerSelectionController +import com.nextcloud.talk.controllers.* import com.nextcloud.talk.controllers.base.providers.ActionBarProvider import com.nextcloud.talk.utils.ConductorRemapping import com.nextcloud.talk.utils.SecurityUtils @@ -102,16 +100,29 @@ class MainActivity : BaseActivity(), ActionBarProvider { router!!.setRoot(RouterTransaction.with(ConversationsListController()) .pushChangeHandler(HorizontalChangeHandler()) .popChangeHandler(HorizontalChangeHandler())) + } else { + if (!TextUtils.isEmpty(resources.getString(R.string.weblogin_url))) { + router!!.pushController(RouterTransaction.with( + WebViewLoginController(resources.getString(R.string.weblogin_url), false)) + .pushChangeHandler(HorizontalChangeHandler()) + .popChangeHandler(HorizontalChangeHandler())) + } else { + router!!.setRoot(RouterTransaction.with(ServerSelectionController()) + .pushChangeHandler(HorizontalChangeHandler()) + .popChangeHandler(HorizontalChangeHandler())) + } + } + } else { + if (!TextUtils.isEmpty(resources.getString(R.string.weblogin_url))) { + router!!.pushController(RouterTransaction.with( + WebViewLoginController(resources.getString(R.string.weblogin_url), false)) + .pushChangeHandler(HorizontalChangeHandler()) + .popChangeHandler(HorizontalChangeHandler())) } else { router!!.setRoot(RouterTransaction.with(ServerSelectionController()) .pushChangeHandler(HorizontalChangeHandler()) .popChangeHandler(HorizontalChangeHandler())) } - } else { - router!!.setRoot(RouterTransaction.with(ServerSelectionController()) - .pushChangeHandler(HorizontalChangeHandler()) - .popChangeHandler(HorizontalChangeHandler())) - } } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java index 1f71e4101..900dc809e 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.java @@ -35,10 +35,7 @@ import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.ProgressBar; import android.widget.TextView; -import androidx.annotation.NonNull; -import autodagger.AutoInjector; -import butterknife.BindView; -import butterknife.OnClick; + import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.nextcloud.talk.R; @@ -51,15 +48,21 @@ import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; + +import java.security.cert.CertificateException; + +import javax.inject.Inject; + +import androidx.annotation.NonNull; +import autodagger.AutoInjector; +import butterknife.BindView; +import butterknife.OnClick; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import studio.carbonylgroup.textfieldboxes.ExtendedEditText; import studio.carbonylgroup.textfieldboxes.TextFieldBoxes; -import javax.inject.Inject; -import java.security.cert.CertificateException; - @AutoInjector(NextcloudTalkApplication.class) public class ServerSelectionController extends BaseController { @@ -128,8 +131,13 @@ public class ServerSelectionController extends BaseController { textFieldBoxes.getEndIconImageButton().setVisibility(View.VISIBLE); textFieldBoxes.getEndIconImageButton().setOnClickListener(view1 -> checkServerAndProceed()); - if (TextUtils.isEmpty(getResources().getString(R.string.nc_providers_url)) && (TextUtils.isEmpty(getResources - ().getString(R.string.nc_import_account_type)))) { + if (getResources().getBoolean(R.bool.hide_auth_cert)) { + certTextView.setVisibility(View.GONE); + } + + if (getResources().getBoolean(R.bool.hide_provider) || + TextUtils.isEmpty(getResources().getString(R.string.nc_providers_url)) && + (TextUtils.isEmpty(getResources().getString(R.string.nc_import_account_type)))) { providersTextView.setVisibility(View.INVISIBLE); } else { if ((TextUtils.isEmpty(getResources @@ -178,6 +186,11 @@ public class ServerSelectionController extends BaseController { } serverEntry.requestFocus(); + + if (!TextUtils.isEmpty(getResources().getString(R.string.weblogin_url))) { + serverEntry.setText(getResources().getString(R.string.weblogin_url)); + checkServerAndProceed(); + } serverEntry.addTextChangedListener(new TextWatcher() { @Override diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java index ceaf9cb64..9b2c31509 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java @@ -37,15 +37,7 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Checkable; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.view.ViewCompat; -import androidx.emoji.widget.EmojiTextView; -import androidx.work.OneTimeWorkRequest; -import androidx.work.WorkManager; -import autodagger.AutoInjector; -import butterknife.BindView; -import butterknife.OnClick; + import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler; @@ -61,7 +53,11 @@ import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.jobs.AccountRemovalWorker; import com.nextcloud.talk.models.RingtoneSettings; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.talk.utils.*; +import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.DisplayUtils; +import com.nextcloud.talk.utils.DoNotDisturbUtils; +import com.nextcloud.talk.utils.LoggingUtils; +import com.nextcloud.talk.utils.SecurityUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; @@ -69,18 +65,38 @@ import com.nextcloud.talk.utils.preferences.MagicUserInputModule; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.yarolegovich.lovelydialog.LovelySaveStateHandler; import com.yarolegovich.lovelydialog.LovelyStandardDialog; -import com.yarolegovich.mp.*; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; -import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener; -import org.greenrobot.eventbus.EventBus; +import com.yarolegovich.mp.MaterialChoicePreference; +import com.yarolegovich.mp.MaterialEditTextPreference; +import com.yarolegovich.mp.MaterialPreferenceCategory; +import com.yarolegovich.mp.MaterialPreferenceScreen; +import com.yarolegovich.mp.MaterialStandardPreference; +import com.yarolegovich.mp.MaterialSwitchPreference; + +import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener; -import javax.inject.Inject; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Objects; + +import javax.inject.Inject; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.emoji.widget.EmojiTextView; +import androidx.work.OneTimeWorkRequest; +import androidx.work.WorkManager; +import autodagger.AutoInjector; +import butterknife.BindView; +import butterknife.OnClick; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; @AutoInjector(NextcloudTalkApplication.class) public class SettingsController extends BaseController { @@ -264,11 +280,15 @@ public class SettingsController extends BaseController { .popChangeHandler(new HorizontalChangeHandler())); }); - addAccountButton.addPreferenceClickListener(view15 -> { - getRouter().pushController(RouterTransaction.with(new - ServerSelectionController()).pushChangeHandler(new VerticalChangeHandler()) - .popChangeHandler(new VerticalChangeHandler())); - }); + if (getResources().getBoolean(R.bool.multiaccount_support)) { + addAccountButton.addPreferenceClickListener(view15 -> { + getRouter().pushController(RouterTransaction.with(new + ServerSelectionController()).pushChangeHandler(new VerticalChangeHandler()) + .popChangeHandler(new VerticalChangeHandler())); + }); + } else { + addAccountButton.setVisibility(View.GONE); + } switchAccountButton.addPreferenceClickListener(view16 -> { getRouter().pushController(RouterTransaction.with(new diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index 8bb13c6f3..137ae3611 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -30,6 +30,12 @@ https://push-notifications.nextcloud.com + + false + false + true + + https://nextcloud.com/privacy/ https://www.gnu.org/licenses/gpl-3.0.en.html