diff --git a/app/build.gradle b/app/build.gradle index 173ebf9d2..b6c0a4577 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -158,7 +158,6 @@ android { ext { androidxCameraVersion = "1.1.0" - butterknifeVersion = "10.2.3" coilKtVersion = "2.1.0" daggerVersion = "2.43.2" lifecycleVersion = '2.5.1' @@ -256,8 +255,6 @@ dependencies { implementation "org.parceler:parceler-api:$parcelerVersion" implementation 'net.orange-box.storebox:storebox-lib:1.4.0' - implementation "com.jakewharton:butterknife:${butterknifeVersion}" - kapt "com.jakewharton:butterknife-compiler:${butterknifeVersion}" implementation 'eu.davidea:flexible-adapter:5.1.0' implementation 'eu.davidea:flexible-adapter-ui:1.0.0' implementation fileTree(downloadWebRtc.libFile.path) diff --git a/app/lint.xml b/app/lint.xml index 48787f40d..9015fa6cb 100644 --- a/app/lint.xml +++ b/app/lint.xml @@ -32,7 +32,6 @@ - diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java deleted file mode 100644 index d88b143ec..000000000 --- a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Andy Scherzinger - * @author BlueLine Labs, Inc. - * @author Mario Danic - * Copyright (C) 2021 Andy Scherzinger (info@andy-scherzinger.de) - * Copyright (C) 2020 Mario Danic (mario@lovelyhq.com) - * Copyright (C) 2016 BlueLine Labs, Inc. - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.nextcloud.talk.controllers.base; - -import android.animation.AnimatorInflater; -import android.content.Context; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; - -import androidx.annotation.NonNull; -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.ActionBar; -import androidx.core.content.res.ResourcesCompat; - -import com.bluelinelabs.conductor.Controller; -import com.google.android.material.appbar.AppBarLayout; -import com.nextcloud.talk.R; -import com.nextcloud.talk.activities.MainActivity; -import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.talk.controllers.AccountVerificationController; -import com.nextcloud.talk.controllers.ServerSelectionController; -import com.nextcloud.talk.controllers.SwitchAccountController; -import com.nextcloud.talk.controllers.WebViewLoginController; -import com.nextcloud.talk.controllers.base.providers.ActionBarProvider; -import com.nextcloud.talk.ui.theme.ViewThemeUtils; -import com.nextcloud.talk.utils.DisplayUtils; -import com.nextcloud.talk.utils.preferences.AppPreferences; - -import java.util.ArrayList; -import java.util.List; - -import javax.inject.Inject; - -import autodagger.AutoInjector; - -@AutoInjector(NextcloudTalkApplication.class) -public abstract class BaseController extends ButterKnifeController { - public enum AppBarLayoutType { - TOOLBAR, - SEARCH_BAR, - EMPTY - } - - private static final String TAG = "BaseController"; - @Inject - AppPreferences appPreferences; - - @Inject - Context context; - - @Inject - ViewThemeUtils viewThemeUtils; - - protected BaseController() { - cleanTempCertPreference(); - } - - protected BaseController(Bundle args) { - super(args); - cleanTempCertPreference(); - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if (item.getItemId() == android.R.id.home) { - getRouter().popCurrentController(); - return true; - } - return super.onOptionsItemSelected(item); - } - - private void cleanTempCertPreference() { - NextcloudTalkApplication.Companion.getSharedApplication().getComponentApplication().inject(this); - - List temporaryClassNames = new ArrayList<>(); - temporaryClassNames.add(ServerSelectionController.class.getName()); - temporaryClassNames.add(AccountVerificationController.class.getName()); - temporaryClassNames.add(WebViewLoginController.class.getName()); - temporaryClassNames.add(SwitchAccountController.class.getName()); - - if (!temporaryClassNames.contains(getClass().getName())) { - appPreferences.removeTemporaryClientCertAlias(); - } - - } - - @Override - protected void onViewBound(@NonNull View view) { - super.onViewBound(view); - MainActivity activity = null; - - if (getActivity() != null && getActivity() instanceof MainActivity) { - activity = (MainActivity) getActivity(); - viewThemeUtils.themeCardView(activity.binding.searchToolbar); - viewThemeUtils.themeToolbar(activity.binding.toolbar); - viewThemeUtils.themeSearchBarText(activity.binding.searchText); - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.getIsKeyboardIncognito()) { - disableKeyboardPersonalisedLearning((ViewGroup) view); - - if (activity != null) { - disableKeyboardPersonalisedLearning(activity.binding.appBar); - } - } - } - - // Note: This is just a quick demo of how an ActionBar *can* be accessed, not necessarily how it *should* - // be accessed. In a production app, this would use Dagger instead. - protected ActionBar getActionBar() { - ActionBarProvider actionBarProvider = null; - try { - actionBarProvider = ((ActionBarProvider) getActivity()); - } catch (Exception exception) { - Log.d(TAG, "Failed to fetch the action bar provider"); - } - return actionBarProvider != null ? actionBarProvider.getSupportActionBar() : null; - } - - @Override - protected void onAttach(@NonNull View view) { - showSearchOrToolbar(); - - setTitle(); - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(getParentController() != null || getRouter().getBackstackSize() > 1); - } - - super.onAttach(view); - } - - protected void showSearchOrToolbar() { - if (getActivity() != null && getActivity() instanceof MainActivity) { - boolean showSearchBar = getAppBarLayoutType() == AppBarLayoutType.SEARCH_BAR; - MainActivity activity = (MainActivity) getActivity(); - - if (getAppBarLayoutType() == AppBarLayoutType.EMPTY) { - activity.binding.toolbar.setVisibility(View.GONE); - activity.binding.searchToolbar.setVisibility(View.GONE); - } else { - AppBarLayout.LayoutParams layoutParams = - (AppBarLayout.LayoutParams) activity.binding.searchToolbar.getLayoutParams(); - - if (showSearchBar) { - activity.binding.searchToolbar.setVisibility(View.VISIBLE); - activity.binding.searchText.setHint(getSearchHint()); - activity.binding.toolbar.setVisibility(View.GONE); - //layoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); - layoutParams.setScrollFlags(0); - activity.binding.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator( - activity.binding.appBar.getContext(), - R.animator.appbar_elevation_off) - ); - } else { - hideSearchBar(); - } - - activity.binding.searchToolbar.setLayoutParams(layoutParams); - - if ((getResources() != null)) { - if (showSearchBar) { - viewThemeUtils.resetStatusBar(activity, activity.binding.searchToolbar); - } else { - viewThemeUtils.themeStatusBar(activity, activity.binding.searchToolbar); - } - } - } - - if ((getResources() != null)) { - DisplayUtils.applyColorToNavigationBar( - activity.getWindow(), - ResourcesCompat.getColor(getResources(), R.color.bg_default, null) - ); - } - } - } - - protected void hideSearchBar() { - MainActivity activity = (MainActivity) getActivity(); - AppBarLayout.LayoutParams layoutParams = - (AppBarLayout.LayoutParams) activity.binding.searchToolbar.getLayoutParams(); - - activity.binding.searchToolbar.setVisibility(View.GONE); - activity.binding.toolbar.setVisibility(View.VISIBLE); - layoutParams.setScrollFlags(0); - activity.binding.appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator( - activity.binding.appBar.getContext(), - R.animator.appbar_elevation_on) - ); - } - - @Override - protected void onDetach(@NonNull View view) { - super.onDetach(view); - InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - imm.hideSoftInputFromWindow(view.getWindowToken(), 0); - } - } - - protected void setTitle() { - Controller parentController = getParentController(); - while (parentController != null) { - if (parentController instanceof BaseController && ((BaseController) parentController).getTitle() != null) { - return; - } - parentController = parentController.getParentController(); - } - - String title = getTitle(); - ActionBar actionBar = getActionBar(); - if (title != null && actionBar != null) { - actionBar.setTitle(title); - } - } - - protected String getTitle() { - return null; - } - - @RequiresApi(api = Build.VERSION_CODES.O) - private void disableKeyboardPersonalisedLearning(final ViewGroup viewGroup) { - View view; - EditText editText; - - for (int i = 0; i < viewGroup.getChildCount(); i++) { - view = viewGroup.getChildAt(i); - if (view instanceof EditText) { - editText = (EditText) view; - editText.setImeOptions(editText.getImeOptions() | EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING); - } else if (view instanceof ViewGroup) { - disableKeyboardPersonalisedLearning((ViewGroup) view); - } - } - } - - public AppBarLayoutType getAppBarLayoutType() { - return AppBarLayoutType.TOOLBAR; - } - - public String getSearchHint() { - return context.getString(R.string.appbar_search_in, context.getString(R.string.nc_app_product_name)); - } -} diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.kt b/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.kt deleted file mode 100644 index 1226965ac..000000000 --- a/app/src/main/java/com/nextcloud/talk/controllers/base/ButterKnifeController.kt +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Nextcloud Talk application - * - * @author BlueLine Labs, Inc. - * Copyright (C) 2016 BlueLine Labs, Inc. - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.nextcloud.talk.controllers.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import butterknife.ButterKnife -import butterknife.Unbinder -import com.bluelinelabs.conductor.Controller - -abstract class ButterKnifeController : Controller { - - private var unbinder: Unbinder? = null - - constructor() - - constructor(args: Bundle) : super(args) - - protected abstract fun inflateView(inflater: LayoutInflater, container: ViewGroup): View - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedViewState: Bundle?): View { - val view = inflateView(inflater, container) - unbinder = ButterKnife.bind(this, view) - onViewBound(view) - return view - } - - protected open fun onViewBound(view: View) { - // unused atm - } - - override fun onDestroyView(view: View) { - super.onDestroyView(view) - unbinder!!.unbind() - unbinder = null - } -} diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/NewBaseController.kt b/app/src/main/java/com/nextcloud/talk/controllers/base/NewBaseController.kt index e156a5936..6acfbb993 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/base/NewBaseController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/base/NewBaseController.kt @@ -251,17 +251,10 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? = private fun calculateValidParentController() { var parentController = parentController while (parentController != null) { - if (isValidController(parentController)) { - return - } parentController = parentController.parentController } } - private fun isValidController(parentController: Controller): Boolean { - return parentController is BaseController && parentController.title != null - } - private fun isTitleSetable(): Boolean { return title != null && actionBar != null } @@ -338,6 +331,6 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? = get() = context!!.getString(R.string.appbar_search_in, context!!.getString(R.string.nc_app_product_name)) companion object { - private val TAG = BaseController::class.java.simpleName + private val TAG = NewBaseController::class.java.simpleName } }