Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ object NextcloudExoPlayer {
.setMediaSourceFactory(mediaSourceFactory)
.setAudioAttributes(AudioAttributes.DEFAULT, true)
.setHandleAudioBecomingNoisy(true)
.setSeekForwardIncrementMs(FIVE_SECONDS_IN_MILLIS)
// NMC-3192 Fix
.setSeekBackIncrementMs(2 * FIVE_SECONDS_IN_MILLIS)
.setSeekForwardIncrementMs(2 * FIVE_SECONDS_IN_MILLIS)
.build()
}
}
8 changes: 6 additions & 2 deletions app/src/main/java/com/nextcloud/utils/ShortcutUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import androidx.core.content.ContextCompat
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.drawable.IconCompat
Expand Down Expand Up @@ -59,10 +60,13 @@ class ShortcutUtil @Inject constructor(private val mContext: Context) {
icon = IconCompat.createWithAdaptiveBitmap(thumbnail)
} else if (file.isFolder) {
val isAutoUploadFolder = SyncedFolderProvider.isAutoUploadFolder(syncedFolderProvider, file, user)
val isDarkModeActive = syncedFolderProvider.preferences.isDarkModeEnabled

val overlayIconId = file.getFileOverlayIconId(isAutoUploadFolder)
val drawable = MimeTypeUtil.getFolderIcon(isDarkModeActive, overlayIconId, mContext, viewThemeUtils)
// NMC Customization: No overlay icon will be used. Directly using folder icons
val drawable = ContextCompat.getDrawable(mContext, overlayIconId) ?: MimeTypeUtil.getDefaultFolderIcon(
mContext,
viewThemeUtils
)
val bitmapIcon = drawable.toBitmap()
icon = IconCompat.createWithBitmap(bitmapIcon)
} else {
Expand Down
21 changes: 21 additions & 0 deletions app/src/main/java/com/nmc/android/utils/KeyboardUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.nmc.android.utils;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

public class KeyboardUtils {

public static void showSoftKeyboard(Context context, View view) {
view.requestFocus();
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}

public static void hideKeyboardFrom(Context context, View view) {
view.clearFocus();
InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -351,5 +351,7 @@ class MediaControlView(context: Context, attrs: AttributeSet?) :
companion object {
private val TAG = MediaControlView::class.java.getSimpleName()
private const val SHOW_PROGRESS = 1
// NMC-3192 Fix
private const val FIVE_SECONDS_IN_MILLIS = 5000
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@

import javax.inject.Inject;

import androidx.core.content.ContextCompat;

public abstract class EditorWebView extends ExternalSiteWebView {
public static final int REQUEST_LOCAL_FILE = 101;
public ValueCallback<Uri[]> uploadMessage;
Expand Down Expand Up @@ -253,8 +255,8 @@ protected void setThumbnailView(final User user) {
boolean isAutoUploadFolder = SyncedFolderProvider.isAutoUploadFolder(syncedFolderProvider, file, user);

Integer overlayIconId = file.getFileOverlayIconId(isAutoUploadFolder);
LayerDrawable drawable = MimeTypeUtil.getFolderIcon(preferences.isDarkModeEnabled(), overlayIconId, this, viewThemeUtils);
binding.thumbnail.setImageDrawable(drawable);
// NMC Customization: No overlay icon will be used. Directly using folder icons
binding.thumbnail.setImageDrawable(ContextCompat.getDrawable(this, overlayIconId));
} else {
if ((MimeTypeUtil.isImage(file) || MimeTypeUtil.isVideo(file)) && file.getRemoteId() != null) {
// Thumbnail in cache?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@
import com.owncloud.android.utils.MimeTypeUtil;
import com.owncloud.android.utils.PermissionUtil;
import com.owncloud.android.utils.PushUtils;
import com.nmc.android.utils.KeyboardUtils;
import com.owncloud.android.utils.StringUtils;
import com.owncloud.android.utils.theme.CapabilityUtils;

Expand Down Expand Up @@ -1194,6 +1195,8 @@ private void resetSearchAction() {
private void popBack() {
binding.fabMain.setImageResource(R.drawable.ic_plus);
resetScrolling(true);
// hide the keyboard on back press if showing
KeyboardUtils.hideKeyboardFrom(this, binding.getRoot());
showSortListGroup(false);
super.onBackPressed();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
import java.util.Calendar;
import java.util.List;
import java.util.Stack;
import java.util.stream.Collectors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

Expand Down Expand Up @@ -771,6 +772,10 @@ private void populateDirectoryList(OCFile file) {

List<OCFile> files = getStorageManager().getFolderContent(mFile, false);

// NMC-2893 Task
// Filtering and showing only files which are folder
files = files.stream().filter(OCFile::isFolder).collect(Collectors.toList());

if (files.isEmpty()) {
setMessageForEmptyList(R.string.file_list_empty_headline, R.string.empty,
R.drawable.uploads);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@

import javax.inject.Inject;

import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

Expand Down Expand Up @@ -73,8 +74,8 @@ protected void onCreate(Bundle savedInstanceState) {
boolean isAutoUploadFolder = SyncedFolderProvider.isAutoUploadFolder(syncedFolderProvider, file, optionalUser.get());

Integer overlayIconId = file.getFileOverlayIconId(isAutoUploadFolder);
LayerDrawable drawable = MimeTypeUtil.getFolderIcon(preferences.isDarkModeEnabled(), overlayIconId, this, viewThemeUtils);
binding.shareFileIcon.setImageDrawable(drawable);
// NMC Customization: No overlay icon will be used. Directly using folder icons
binding.shareFileIcon.setImageDrawable(ContextCompat.getDrawable(this, overlayIconId));
} else {
binding.shareFileIcon.setImageDrawable(MimeTypeUtil.getFileTypeIcon(file.getMimeType(),
file.getFileName(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.nextcloud.client.account.User
import com.owncloud.android.databinding.UploaderListItemLayoutBinding
Expand Down Expand Up @@ -113,10 +114,9 @@ class ReceiveExternalFilesAdapter(

private fun setupThumbnailForFolder(thumbnailImageView: ImageView, file: OCFile) {
val isAutoUploadFolder = SyncedFolderProvider.isAutoUploadFolder(syncedFolderProvider, file, user)
val isDarkModeActive = syncedFolderProvider.preferences.isDarkModeEnabled
val overlayIconId = file.getFileOverlayIconId(isAutoUploadFolder)
val icon = MimeTypeUtil.getFolderIcon(isDarkModeActive, overlayIconId, context, viewThemeUtils)
thumbnailImageView.setImageDrawable(icon)
// NMC Customization: No overlay icon will be used. Directly using folder icons
thumbnailImageView.setImageDrawable(ContextCompat.getDrawable(context, overlayIconId))
}

@Suppress("NestedBlockDepth")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import com.nextcloud.client.account.UserAccountManager
import com.nextcloud.client.core.AsyncRunner
import com.nextcloud.client.di.Injectable
import com.nextcloud.client.di.ViewModelFactory
import com.nmc.android.utils.KeyboardUtils
import com.nextcloud.client.network.ClientFactory
import com.owncloud.android.R
import com.owncloud.android.databinding.ListFragmentBinding
Expand Down Expand Up @@ -238,6 +239,8 @@ class UnifiedSearchFragment :
private fun showFile(file: OCFile, showFileActions: Boolean) {
activity.let {
if (activity is FileDisplayActivity) {
// NMC: hide keyboard when user taps on any file to view
KeyboardUtils.hideKeyboardFrom(requireContext(), binding.root)
val fda = activity as FileDisplayActivity
fda.file = file

Expand Down Expand Up @@ -298,6 +301,7 @@ class UnifiedSearchFragment :
}

override fun onQueryTextSubmit(query: String): Boolean {
KeyboardUtils.hideKeyboardFrom(requireContext(), binding.root)
vm.setQuery(query)
vm.initialQuery()
return true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -952,11 +952,10 @@ private static void setThumbnailForFolder(OCFile file, ImageView thumbnailView,
stopShimmer(shimmerThumbnail, thumbnailView);

boolean isAutoUploadFolder = SyncedFolderProvider.isAutoUploadFolder(syncedFolderProvider, file, user);
boolean isDarkModeActive = preferences.isDarkModeEnabled();

final var overlayIconId = file.getFileOverlayIconId(isAutoUploadFolder);
final var fileIcon = MimeTypeUtil.getFolderIcon(isDarkModeActive, overlayIconId, context, viewThemeUtils);
thumbnailView.setImageDrawable(fileIcon);
// NMC Customization: No overlay icon will be used. Directly using folder icons
thumbnailView.setImageDrawable(ContextCompat.getDrawable(context, overlayIconId));
}

private static void setThumbnailFromCache(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List<ThumbnailsCacheManager.ThumbnailGenerationTask> asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils) {
Expand Down
22 changes: 5 additions & 17 deletions app/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import android.net.Uri;
import android.webkit.MimeTypeMap;

import com.nextcloud.android.common.ui.theme.utils.ColorRole;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.lib.resources.files.model.ServerFileInterface;
Expand Down Expand Up @@ -94,16 +93,8 @@ public static Drawable getFileTypeIcon(String mimetype,
ViewThemeUtils viewThemeUtils) {
if (context != null) {
int iconId = MimeTypeUtil.getFileTypeIconId(mimetype, filename);
Drawable icon = ContextCompat.getDrawable(context, iconId);
if (icon == null) {
return null;
}

if (R.drawable.file_zip == iconId) {
viewThemeUtils.platform.tintDrawable(context, icon, ColorRole.PRIMARY);
}

return icon;
//NMC Customization
return ContextCompat.getDrawable(context, iconId);
} else {
return null;
}
Expand All @@ -117,11 +108,6 @@ public static Drawable getIcon(String localPath, Context context, ViewThemeUtils
int iconId = determineIconIdByMimeTypeList(possibleMimeTypes);

Drawable result = ContextCompat.getDrawable(context, iconId);
if (result == null) return null;

if (R.drawable.file_zip == iconId) {
viewThemeUtils.platform.tintDrawable(context, result, ColorRole.PRIMARY);
}

return result;
}
Expand All @@ -148,10 +134,12 @@ public static Drawable getDefaultFolderIcon(Context context, ViewThemeUtils view
Drawable drawable = ContextCompat.getDrawable(context, R.drawable.folder);
assert(drawable != null);

viewThemeUtils.platform.tintDrawable(context, drawable, ColorRole.PRIMARY);
return drawable;
}

// NMC Note: This funtion won't be used in NMC as we are using different folder icons with inbuilt overlay. So this function is of no use for us.
// changed access to PRIVATE, in case if NC will use this function in more areas then we will get compile error which can be fixed by us
// so that UI won't be impacted.
public static LayerDrawable getFolderIcon(boolean isDarkModeActive, Integer overlayIconId, Context context, ViewThemeUtils viewThemeUtils) {
Drawable folderDrawable = getDefaultFolderIcon(context, viewThemeUtils);
assert(folderDrawable != null);
Expand Down