> = ArrayList(entries.size + 1)
+ for (i in entries.indices) {
+ val showHeader = i == 0
+ adapterItems.add(
+ MessageResultItem(
+ context,
+ currentUser!!,
+ entries[i],
+ showHeader,
+ viewThemeUtils
+ )
+ )
+ }
+ if (results.hasMore) {
+ adapterItems.add(LoadMoreResultsItem)
+ }
+ adapter!!.addItems(0, adapterItems)
+ binding.recyclerView.scrollToPosition(0)
+ }
+ }
+ withNullableControllerViewBinding {
+ binding.swipeRefreshLayoutView.isRefreshing = false
+ }
+ }
+
+ private fun onMessageSearchError(throwable: Throwable) {
+ handleHttpExceptions(throwable)
+ withNullableControllerViewBinding {
+ binding.swipeRefreshLayoutView.isRefreshing = false
+ }
+ }
+
+ companion object {
+ const val TAG = "ConvListController"
+ const val UNREAD_BUBBLE_DELAY = 2500
+ const val BOTTOM_SHEET_DELAY: Long = 2500
+ private const val KEY_SEARCH_QUERY = "ContactsController.searchQuery"
+ const val SEARCH_DEBOUNCE_INTERVAL_MS = 300
+ const val SEARCH_MIN_CHARS = 2
+ const val HTTP_UNAUTHORIZED = 401
+ }
+
+ init {
+ setHasOptionsMenu(true)
+ forwardMessage = bundle.getBoolean(KEY_FORWARD_MSG_FLAG)
+ this.bundle = bundle
+ }
+}
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/GeocodingController.kt b/app/src/main/java/com/nextcloud/talk/controllers/GeocodingController.kt
index 7d29ae162..592b729e0 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/GeocodingController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/GeocodingController.kt
@@ -41,7 +41,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.GeocodingAdapter
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerGeocodingBinding
import com.nextcloud.talk.utils.bundle.BundleKeys
@@ -58,7 +58,7 @@ import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
class GeocodingController(args: Bundle) :
- NewBaseController(
+ BaseController(
R.layout.controller_geocoding,
args
),
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt b/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt
index 3efcbe349..714e2fa4b 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt
@@ -49,7 +49,7 @@ import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerLocationBinding
import com.nextcloud.talk.models.json.generic.GenericOverall
@@ -83,7 +83,7 @@ import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
class LocationPickerController(args: Bundle) :
- NewBaseController(
+ BaseController(
R.layout.controller_location,
args
),
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/LockedController.kt b/app/src/main/java/com/nextcloud/talk/controllers/LockedController.kt
index 7744da6fa..9b9276ed5 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/LockedController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/LockedController.kt
@@ -39,7 +39,7 @@ import autodagger.AutoInjector
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerLockedBinding
import com.nextcloud.talk.utils.DisplayUtils
@@ -48,7 +48,7 @@ import java.util.concurrent.Executor
import java.util.concurrent.Executors
@AutoInjector(NextcloudTalkApplication::class)
-class LockedController : NewBaseController(R.layout.controller_locked) {
+class LockedController : BaseController(R.layout.controller_locked) {
private val binding: ControllerLockedBinding by viewBinding(ControllerLockedBinding::bind)
override val appBarLayoutType: AppBarLayoutType
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt
index caa597562..71e01ca3d 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ProfileController.kt
@@ -52,7 +52,7 @@ import com.nextcloud.talk.activities.TakePhotoActivity
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ControllerProfileBinding
@@ -94,7 +94,7 @@ import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
@Suppress("Detekt.TooManyFunctions")
-class ProfileController : NewBaseController(R.layout.controller_profile) {
+class ProfileController : BaseController(R.layout.controller_profile) {
private val binding: ControllerProfileBinding by viewBinding(ControllerProfileBinding::bind)
@Inject
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.kt b/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.kt
index 3bf99a0dc..a41834f27 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.kt
@@ -38,7 +38,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.items.NotificationSoundItem
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerGenericRvBinding
import com.nextcloud.talk.models.RingtoneSettings
@@ -52,7 +52,7 @@ import java.io.IOException
@AutoInjector(NextcloudTalkApplication::class)
class RingtoneSelectionController(args: Bundle) :
- NewBaseController(
+ BaseController(
R.layout.controller_generic_rv,
args
),
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt
index 14ca85082..e8f643260 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt
@@ -41,7 +41,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerServerSelectionBinding
import com.nextcloud.talk.models.json.generic.Status
@@ -61,7 +61,7 @@ import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
class ServerSelectionController :
- NewBaseController(R.layout.controller_server_selection) {
+ BaseController(R.layout.controller_server_selection) {
private val binding: ControllerServerSelectionBinding by viewBinding(ControllerServerSelectionBinding::bind)
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.kt b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.kt
index 2ba2cebbc..34d0804db 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.kt
@@ -68,7 +68,7 @@ import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.setAppTheme
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ControllerSettingsBinding
@@ -105,7 +105,7 @@ import java.util.Locale
import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
-class SettingsController : NewBaseController(R.layout.controller_settings) {
+class SettingsController : BaseController(R.layout.controller_settings) {
private val binding: ControllerSettingsBinding by viewBinding(ControllerSettingsBinding::bind)
@Inject
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt
index 0c16840a0..d1bb10b8e 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt
@@ -37,7 +37,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.items.AdvancedUserItem
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ControllerGenericRvBinding
@@ -59,7 +59,7 @@ import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
class SwitchAccountController(args: Bundle? = null) :
- NewBaseController(
+ BaseController(
R.layout.controller_generic_rv,
args
) {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt
index e7c28718f..466653833 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt
@@ -51,7 +51,7 @@ import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerWebViewLoginBinding
import com.nextcloud.talk.events.CertificateEvent
@@ -78,7 +78,7 @@ import java.util.Locale
import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
-class WebViewLoginController(args: Bundle? = null) : NewBaseController(
+class WebViewLoginController(args: Bundle? = null) : BaseController(
R.layout.controller_web_view_login,
args
) {
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/NewBaseController.kt b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt
similarity index 92%
rename from app/src/main/java/com/nextcloud/talk/controllers/base/NewBaseController.kt
rename to app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt
index 065c3b078..f9ae3b379 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/base/NewBaseController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt
@@ -63,7 +63,7 @@ import javax.inject.Inject
import kotlin.jvm.internal.Intrinsics
@AutoInjector(NextcloudTalkApplication::class)
-abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? = null) : Controller(args) {
+abstract class BaseController(@LayoutRes var layoutRes: Int, args: Bundle? = null) : Controller(args) {
enum class AppBarLayoutType {
TOOLBAR, SEARCH_BAR, EMPTY
}
@@ -145,7 +145,7 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? =
super.onAttach(view)
}
- protected fun showSearchOrToolbar() {
+ open fun showSearchOrToolbar() {
if (isValidActivity(activity)) {
val showSearchBar = appBarLayoutType == AppBarLayoutType.SEARCH_BAR
val activity = activity as MainActivity
@@ -202,6 +202,18 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? =
binding.searchToolbar.visibility = View.GONE
}
+ fun hideSearchBar() {
+ val activity = activity as MainActivity?
+ val layoutParams = activity!!.binding.searchToolbar.layoutParams as AppBarLayout.LayoutParams
+ activity.binding.searchToolbar.visibility = View.GONE
+ activity.binding.toolbar.visibility = View.VISIBLE
+ layoutParams.scrollFlags = 0
+ activity.binding.appBar.stateListAnimator = AnimatorInflater.loadStateListAnimator(
+ activity.binding.appBar.context,
+ R.animator.appbar_elevation_on
+ )
+ }
+
private fun colorizeStatusBar(showSearchBar: Boolean, activity: Activity?, resources: Resources?) {
if (activity != null && resources != null) {
if (showSearchBar) {
@@ -223,7 +235,7 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? =
override fun onDetach(view: View) {
super.onDetach(view)
- val imm = context!!.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
}
@@ -239,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
}
@@ -280,7 +285,7 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? =
temporaryClassNames.add(WebViewLoginController::class.java.name)
temporaryClassNames.add(SwitchAccountController::class.java.name)
if (!temporaryClassNames.contains(javaClass.name)) {
- appPreferences!!.removeTemporaryClientCertAlias()
+ appPreferences.removeTemporaryClientCertAlias()
}
}
@@ -323,7 +328,7 @@ abstract class NewBaseController(@LayoutRes var layoutRes: Int, args: Bundle? =
open val appBarLayoutType: AppBarLayoutType
get() = AppBarLayoutType.TOOLBAR
val searchHint: String
- get() = context!!.getString(R.string.appbar_search_in, context!!.getString(R.string.nc_app_product_name))
+ 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
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/bottomsheet/EntryMenuController.kt b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt
index 79b6a15f2..c169b7d05 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt
@@ -42,7 +42,7 @@ import com.google.android.material.textfield.TextInputLayout
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.databinding.ControllerEntryMenuBinding
import com.nextcloud.talk.models.json.conversations.Conversation
@@ -60,7 +60,7 @@ import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
class EntryMenuController(args: Bundle) :
- NewBaseController(
+ BaseController(
R.layout.controller_entry_menu,
args
) {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.kt b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.kt
index 89f9402af..5ed400524 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.kt
@@ -34,7 +34,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
-import com.nextcloud.talk.controllers.base.NewBaseController
+import com.nextcloud.talk.controllers.base.BaseController
import com.nextcloud.talk.controllers.util.viewBinding
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ControllerOperationsMenuBinding
@@ -79,7 +79,7 @@ import java.util.Collections
import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
-class OperationsMenuController(args: Bundle) : NewBaseController(
+class OperationsMenuController(args: Bundle) : BaseController(
R.layout.controller_operations_menu,
args
) {
diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt
index 1e77a7b38..c3e8bd1b7 100644
--- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt
+++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt
@@ -310,8 +310,4 @@ class ConversationsListBottomDialog(
val behavior = BottomSheetBehavior.from(bottomSheet as View)
behavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
-
- companion object {
- private const val TAG = "ConversationOperationDialog"
- }
}
diff --git a/detekt.yml b/detekt.yml
index 6cc523fa7..e8e167c4b 100644
--- a/detekt.yml
+++ b/detekt.yml
@@ -1,5 +1,5 @@
build:
- maxIssues: 77
+ maxIssues: 94
weights:
# complexity: 2
# LongParameterList: 1