Gifs aren't animated anymore in the file picker.
This commit is contained in:
@@ -60,9 +60,13 @@
|
||||
|
||||
<activity
|
||||
android:name=".filepicker.FilePickerActivity"
|
||||
android:configChanges="orientation|screenSize"/>
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:screenOrientation="portrait"
|
||||
/>
|
||||
<activity android:name=".filepicker.MediaDetailsActivity"
|
||||
android:configChanges="orientation|screenSize"/>
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:screenOrientation="portrait"
|
||||
/>
|
||||
|
||||
<meta-data
|
||||
android:name="io.fabric.ApiKey"
|
||||
|
||||
@@ -11,7 +11,6 @@ import android.app.Application;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.ContextWrapper;
|
||||
import android.os.Build;
|
||||
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
||||
@@ -11,6 +11,11 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
|
||||
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
|
||||
import com.bumptech.glide.load.resource.gif.GifDrawable;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -24,24 +29,38 @@ import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
|
||||
* Created by Lyndon on 26-Oct-2017.
|
||||
*/
|
||||
|
||||
public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.ImageViewHolder, ImageDirectory> {
|
||||
public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.ImageViewHolder, ImageDirectory> implements RequestListener<File, GlideDrawable> {
|
||||
|
||||
private final Context context;
|
||||
private final RequestManager glide;
|
||||
private final boolean showCamera;
|
||||
private int imageSize;
|
||||
|
||||
public final static int ITEM_TYPE_CAMERA = 100;
|
||||
public final static int ITEM_TYPE_PHOTO = 101;
|
||||
private final static int ITEM_TYPE_CAMERA = 100;
|
||||
private final static int ITEM_TYPE_PHOTO = 101;
|
||||
private FolderGridAdapterListener folderGridAdapterListener;
|
||||
|
||||
@Override
|
||||
public boolean onException(Exception e, File model, Target<GlideDrawable> target, boolean isFirstResource) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(GlideDrawable resource, File model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
|
||||
if(resource.isAnimated()) {
|
||||
target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public interface FolderGridAdapterListener{
|
||||
void onCameraClicked();
|
||||
void onFolderClicked(ImageDirectory photoDirectory);
|
||||
}
|
||||
|
||||
public FolderGridAdapter(Context context, RequestManager requestManager, ArrayList<ImageDirectory> photos, ArrayList<String> selectedPaths, boolean showCamera)
|
||||
{
|
||||
public FolderGridAdapter(Context context, RequestManager requestManager, ArrayList<ImageDirectory> photos, ArrayList<String> selectedPaths, boolean showCamera) {
|
||||
super(photos, selectedPaths);
|
||||
this.context = context;
|
||||
this.glide = requestManager;
|
||||
@@ -58,42 +77,37 @@ public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.Image
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if(showCamera)
|
||||
if(showCamera) {
|
||||
return (position == 0) ? ITEM_TYPE_CAMERA : ITEM_TYPE_PHOTO;
|
||||
else
|
||||
} else {
|
||||
return ITEM_TYPE_PHOTO;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final ImageViewHolder holder, int position) {
|
||||
if(getItemViewType(position) == ITEM_TYPE_PHOTO) {
|
||||
|
||||
final ImageDirectory photoDirectory = getItems().get(showCamera?position-1:position);
|
||||
|
||||
if(AndroidLifecycleUtils.canLoadImage(holder.imageView.getContext())) {
|
||||
glide.load(new File(photoDirectory.getCoverPath()))
|
||||
.override(imageSize, imageSize)
|
||||
.fallback(R.drawable.document)
|
||||
.thumbnail(0.5f)
|
||||
.listener(this)
|
||||
.into(holder.imageView);
|
||||
}
|
||||
|
||||
holder.folderTitle.setText(photoDirectory.getName());
|
||||
holder.folderCount.setText(String.valueOf(photoDirectory.getMedias().size()));
|
||||
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if(folderGridAdapterListener!=null) {
|
||||
folderGridAdapterListener.onFolderClicked(photoDirectory);
|
||||
}
|
||||
holder.itemView.setOnClickListener(view -> {
|
||||
if(folderGridAdapterListener!=null) {
|
||||
folderGridAdapterListener.onFolderClicked(photoDirectory);
|
||||
}
|
||||
});
|
||||
|
||||
holder.bottomOverlay.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
holder.imageView.setImageResource(PickerManager.getInstance().getCameraDrawable());
|
||||
holder.itemView.setOnClickListener(view -> {
|
||||
if(folderGridAdapterListener!=null) {
|
||||
@@ -115,13 +129,14 @@ public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.Image
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
if(showCamera)
|
||||
return getItems().size()+1;
|
||||
if(showCamera) {
|
||||
return getItems().size() + 1;
|
||||
}
|
||||
|
||||
return getItems().size();
|
||||
}
|
||||
|
||||
public void setFolderGridAdapterListener(FolderGridAdapterListener onClickListener)
|
||||
{
|
||||
public void setFolderGridAdapterListener(FolderGridAdapterListener onClickListener) {
|
||||
this.folderGridAdapterListener = onClickListener;
|
||||
}
|
||||
|
||||
@@ -134,6 +149,7 @@ public class FolderGridAdapter extends SelectableAdapter<FolderGridAdapter.Image
|
||||
|
||||
ImageViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
imageView = itemView.findViewById(R.id.iv_photo);
|
||||
folderTitle = itemView.findViewById(R.id.folder_title);
|
||||
folderCount = itemView.findViewById(R.id.folder_count);
|
||||
|
||||
@@ -11,6 +11,11 @@ import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.bumptech.glide.RequestManager;
|
||||
import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
|
||||
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
|
||||
import com.bumptech.glide.load.resource.gif.GifDrawable;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -25,7 +30,7 @@ import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
|
||||
* Created by Lyndon on 26-Oct-2017.
|
||||
*/
|
||||
|
||||
public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageViewHolder, Media> {
|
||||
public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageViewHolder, Media> implements RequestListener<File, GlideDrawable> {
|
||||
private final Context context;
|
||||
private final RequestManager glide;
|
||||
private final boolean showCamera;
|
||||
@@ -36,13 +41,7 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
public final static int ITEM_TYPE_PHOTO = 101;
|
||||
private View.OnClickListener cameraOnClickListener;
|
||||
|
||||
public ImageGridAdapter(Context context,
|
||||
RequestManager requestManager,
|
||||
ArrayList<Media> medias,
|
||||
ArrayList<String> selectedPaths,
|
||||
boolean showCamera,
|
||||
FileAdapterListener photoGridAdapterListener)
|
||||
{
|
||||
public ImageGridAdapter(Context context, RequestManager requestManager, ArrayList<Media> medias, ArrayList<String> selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) {
|
||||
super(medias, selectedPaths);
|
||||
this.context = context;
|
||||
this.glide = requestManager;
|
||||
@@ -70,13 +69,13 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
@Override
|
||||
public void onBindViewHolder(final ImageViewHolder holder, int position) {
|
||||
if(getItemViewType(position) == ITEM_TYPE_PHOTO) {
|
||||
final Media media = getItems().get(showCamera?position-1:position);
|
||||
final Media media = getItems().get(showCamera ? position - 1 : position);
|
||||
|
||||
if(AndroidLifecycleUtils.canLoadImage(holder.imageView.getContext())) {
|
||||
glide.load(new File(media.getPath()))
|
||||
.override(imageSize, imageSize)
|
||||
.placeholder(R.drawable.document)
|
||||
.thumbnail(0.5f)
|
||||
.listener(this)
|
||||
.into(holder.imageView);
|
||||
}
|
||||
|
||||
@@ -104,13 +103,10 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
toggleSelection(media);
|
||||
holder.selectBg.setVisibility(isChecked ? View.VISIBLE : View.GONE);
|
||||
|
||||
if (isChecked)
|
||||
{
|
||||
if (isChecked) {
|
||||
holder.checkBox.setVisibility(View.VISIBLE);
|
||||
PickerManager.getInstance().add(media.getPath(), FilePickerConst.FILE_TYPE_MEDIA);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
holder.checkBox.setVisibility(View.GONE);
|
||||
PickerManager.getInstance().remove(media.getPath(),FilePickerConst.FILE_TYPE_MEDIA);
|
||||
}
|
||||
@@ -119,9 +115,7 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
mListener.onItemSelected();
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
holder.imageView.setImageResource(PickerManager.getInstance().getCameraDrawable());
|
||||
holder.checkBox.setVisibility(View.GONE);
|
||||
holder.itemView.setOnClickListener(cameraOnClickListener);
|
||||
@@ -136,8 +130,7 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
if(mListener!=null) {
|
||||
mListener.onItemSelected();
|
||||
}
|
||||
}
|
||||
else if (holder.checkBox.isChecked() || PickerManager.getInstance().shouldAdd()) {
|
||||
} else if (holder.checkBox.isChecked() || PickerManager.getInstance().shouldAdd()) {
|
||||
holder.checkBox.setChecked(!holder.checkBox.isChecked());
|
||||
}
|
||||
}
|
||||
@@ -159,12 +152,26 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
return getItems().size();
|
||||
}
|
||||
|
||||
public void setCameraListener(View.OnClickListener onClickListener)
|
||||
{
|
||||
public void setCameraListener(View.OnClickListener onClickListener) {
|
||||
this.cameraOnClickListener = onClickListener;
|
||||
}
|
||||
|
||||
public static class ImageViewHolder extends RecyclerView.ViewHolder {
|
||||
@Override
|
||||
public boolean onException(Exception e, File model, Target<GlideDrawable> target, boolean isFirstResource) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(GlideDrawable resource, File model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
|
||||
if(resource.isAnimated()) {
|
||||
target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static class ImageViewHolder extends RecyclerView.ViewHolder {
|
||||
CheckBox checkBox;
|
||||
|
||||
ImageView imageView;
|
||||
@@ -173,7 +180,7 @@ public class ImageGridAdapter extends SelectableAdapter<ImageGridAdapter.ImageVi
|
||||
|
||||
View selectBg;
|
||||
|
||||
public ImageViewHolder(View itemView) {
|
||||
ImageViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
checkBox = itemView.findViewById(R.id.checkbox);
|
||||
imageView = itemView.findViewById(R.id.iv_photo);
|
||||
|
||||
@@ -19,7 +19,6 @@ import java.util.List;
|
||||
import de.beyondsoft.ownchat.R;
|
||||
import de.beyondsoft.ownchat.filepicker.PickerManager;
|
||||
import de.beyondsoft.ownchat.filepicker.adapters.SectionsPagerAdapter;
|
||||
import de.beyondsoft.ownchat.filepicker.cursors.loadercallbacks.FileResultCallback;
|
||||
import de.beyondsoft.ownchat.filepicker.models.Document;
|
||||
import de.beyondsoft.ownchat.filepicker.models.FileType;
|
||||
import de.beyondsoft.ownchat.filepicker.utils.MediaStoreHelper;
|
||||
@@ -91,38 +90,38 @@ public class DocPickerFragment extends BaseFragment {
|
||||
}
|
||||
|
||||
private void setViews(View view) {
|
||||
tabLayout = (TabLayout) view.findViewById(R.id.tabs);
|
||||
viewPager = (ViewPager) view.findViewById(R.id.viewPager);
|
||||
progressBar = (ProgressBar) view.findViewById(R.id.progress_bar);
|
||||
tabLayout = view.findViewById(R.id.tabs);
|
||||
viewPager = view.findViewById(R.id.viewPager);
|
||||
progressBar = view.findViewById(R.id.progress_bar);
|
||||
|
||||
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
|
||||
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
|
||||
}
|
||||
|
||||
private void setData() {
|
||||
MediaStoreHelper.getDocs(getActivity(), new FileResultCallback<Document>() {
|
||||
@Override
|
||||
public void onResultCallback(List<Document> files) {
|
||||
if(!isAdded()) return;
|
||||
progressBar.setVisibility(View.GONE);
|
||||
setDataOnFragments(files);
|
||||
MediaStoreHelper.getDocs(getActivity(), files -> {
|
||||
if(!isAdded()) {
|
||||
return;
|
||||
}
|
||||
|
||||
progressBar.setVisibility(View.GONE);
|
||||
setDataOnFragments(files);
|
||||
});
|
||||
}
|
||||
|
||||
private void setDataOnFragments(List<Document> files) {
|
||||
SectionsPagerAdapter sectionsPagerAdapter = (SectionsPagerAdapter) viewPager.getAdapter();
|
||||
if(sectionsPagerAdapter!=null)
|
||||
{
|
||||
|
||||
if(sectionsPagerAdapter != null) {
|
||||
for (int index = 0; index < sectionsPagerAdapter.getCount(); index++) {
|
||||
DocFragment docFragment = (DocFragment) getChildFragmentManager()
|
||||
.findFragmentByTag(
|
||||
"android:switcher:" + R.id.viewPager + ":"+index);
|
||||
if(docFragment!=null)
|
||||
{
|
||||
DocFragment docFragment = (DocFragment) getChildFragmentManager().findFragmentByTag("android:switcher:" + R.id.viewPager + ":"+index);
|
||||
|
||||
if(docFragment != null) {
|
||||
FileType fileType = docFragment.getFileType();
|
||||
if(fileType!=null)
|
||||
|
||||
if(fileType != null) {
|
||||
docFragment.updateList(filterDocuments(fileType.extensions, files));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -131,6 +130,7 @@ public class DocPickerFragment extends BaseFragment {
|
||||
private void setUpViewPager() {
|
||||
SectionsPagerAdapter adapter = new SectionsPagerAdapter(getChildFragmentManager());
|
||||
ArrayList<FileType> supportedTypes = PickerManager.getInstance().getFileTypes();
|
||||
|
||||
for (int index = 0; index < supportedTypes.size(); index++) {
|
||||
adapter.addFragment(DocFragment.newInstance(supportedTypes.get(index)),supportedTypes.get(index).title);
|
||||
}
|
||||
@@ -143,13 +143,8 @@ public class DocPickerFragment extends BaseFragment {
|
||||
mTabLayoutHelper.setAutoAdjustTabModeEnabled(true);
|
||||
}
|
||||
|
||||
private ArrayList<Document> filterDocuments(final String[] type, List<Document> documents)
|
||||
{
|
||||
final Predicate<Document> docType = new Predicate<Document>() {
|
||||
public boolean apply(Document document) {
|
||||
return document.isThisType(type);
|
||||
}
|
||||
};
|
||||
private ArrayList<Document> filterDocuments(final String[] type, List<Document> documents) {
|
||||
final Predicate<Document> docType = document -> document.isThisType(type);
|
||||
|
||||
return new ArrayList<>(Utils.filter(new HashSet<>(documents),docType));
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.bumptech.glide.RequestManager;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import de.beyondsoft.ownchat.R;
|
||||
@@ -30,7 +29,6 @@ import de.beyondsoft.ownchat.filepicker.FilePickerConst;
|
||||
import de.beyondsoft.ownchat.filepicker.PickerManager;
|
||||
import de.beyondsoft.ownchat.filepicker.adapters.FileAdapterListener;
|
||||
import de.beyondsoft.ownchat.filepicker.adapters.ImageGridAdapter;
|
||||
import de.beyondsoft.ownchat.filepicker.cursors.loadercallbacks.FileResultCallback;
|
||||
import de.beyondsoft.ownchat.filepicker.models.ImageDirectory;
|
||||
import de.beyondsoft.ownchat.filepicker.models.Media;
|
||||
import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
|
||||
@@ -60,8 +58,7 @@ public class MediaDetailPickerFragment extends BaseFragment implements FileAdapt
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
return inflater.inflate(R.layout.fragment_image_picker, container, false);
|
||||
}
|
||||
@@ -69,11 +66,11 @@ public class MediaDetailPickerFragment extends BaseFragment implements FileAdapt
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
if (context instanceof ImagePickerFragmentListener) {
|
||||
mListener = (ImagePickerFragmentListener) context;
|
||||
} else {
|
||||
throw new RuntimeException(context.toString()
|
||||
+ " must implement PhotoPickerFragmentListener");
|
||||
throw new RuntimeException(context.toString() + " must implement PhotoPickerFragmentListener");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +123,7 @@ public class MediaDetailPickerFragment extends BaseFragment implements FileAdapt
|
||||
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
// Log.d(">>> Picker >>>", "dy = " + dy);
|
||||
|
||||
if (Math.abs(dy) > SCROLL_THRESHOLD) {
|
||||
mGlideRequestManager.pauseRequests();
|
||||
} else {
|
||||
@@ -149,85 +146,62 @@ public class MediaDetailPickerFragment extends BaseFragment implements FileAdapt
|
||||
mediaStoreArgs.putInt(FilePickerConst.EXTRA_FILE_TYPE, fileType);
|
||||
|
||||
if(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) {
|
||||
MediaStoreHelper.getPhotoDirs(getActivity(), mediaStoreArgs,
|
||||
dirs -> updateList(dirs));
|
||||
}
|
||||
else if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO)
|
||||
{
|
||||
MediaStoreHelper.getVideoDirs(getActivity(), mediaStoreArgs,
|
||||
dirs -> updateList(dirs));
|
||||
MediaStoreHelper.getPhotoDirs(getActivity(), mediaStoreArgs, this::updateList);
|
||||
} else if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO) {
|
||||
MediaStoreHelper.getVideoDirs(getActivity(), mediaStoreArgs, this::updateList);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateList(List<ImageDirectory> dirs) {
|
||||
ArrayList<Media> medias = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < dirs.size(); i++) {
|
||||
medias.addAll(dirs.get(i).getMedias());
|
||||
}
|
||||
|
||||
Collections.sort(medias,new Comparator<Media>() {
|
||||
@Override
|
||||
public int compare(Media a, Media b) {
|
||||
return b.getId() - a.getId();
|
||||
}
|
||||
});
|
||||
Collections.sort(medias, (a, b) -> b.getId() - a.getId());
|
||||
|
||||
if(medias.size()>0) {
|
||||
if(medias.size() > 0) {
|
||||
emptyView.setVisibility(View.GONE);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
emptyView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(photoGridAdapter!=null)
|
||||
{
|
||||
if(photoGridAdapter != null) {
|
||||
photoGridAdapter.setData(medias);
|
||||
photoGridAdapter.notifyDataSetChanged();
|
||||
}
|
||||
else
|
||||
{
|
||||
photoGridAdapter = new ImageGridAdapter(getActivity(), mGlideRequestManager, (ArrayList<Media>) medias, PickerManager.getInstance().getSelectedPhotos(),(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera(), this);
|
||||
} else {
|
||||
photoGridAdapter = new ImageGridAdapter(getActivity(), mGlideRequestManager, medias, PickerManager.getInstance().getSelectedPhotos(),(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera(), this);
|
||||
recyclerView.setAdapter(photoGridAdapter);
|
||||
photoGridAdapter.setCameraListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
try {
|
||||
Intent intent = imageCaptureManager.dispatchTakePictureIntent(getActivity());
|
||||
if(intent!=null)
|
||||
startActivityForResult(intent, ImageCaptureManager.REQUEST_TAKE_PHOTO);
|
||||
else
|
||||
Toast.makeText(getActivity(), R.string.no_camera_exists, Toast.LENGTH_SHORT).show();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
photoGridAdapter.setCameraListener(v -> {
|
||||
try {
|
||||
Intent intent = imageCaptureManager.dispatchTakePictureIntent(getActivity());
|
||||
|
||||
if(intent!=null) {
|
||||
startActivityForResult(intent, ImageCaptureManager.REQUEST_TAKE_PHOTO);
|
||||
} else {
|
||||
Toast.makeText(getActivity(), R.string.no_camera_exists, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
switch (requestCode)
|
||||
{
|
||||
|
||||
switch (requestCode) {
|
||||
case ImageCaptureManager.REQUEST_TAKE_PHOTO:
|
||||
if(resultCode== Activity.RESULT_OK)
|
||||
{
|
||||
if(resultCode== Activity.RESULT_OK) {
|
||||
String imagePath = imageCaptureManager.galleryAddPic();
|
||||
if(imagePath!=null && PickerManager.getInstance().getMaxCount()==1)
|
||||
{
|
||||
if(imagePath!=null && PickerManager.getInstance().getMaxCount() == 1) {
|
||||
PickerManager.getInstance().add(imagePath, FilePickerConst.FILE_TYPE_MEDIA);
|
||||
mListener.onItemSelected();
|
||||
}
|
||||
else {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getDataFromMedia();
|
||||
|
||||
}
|
||||
}, 1000);
|
||||
} else {
|
||||
new Handler().postDelayed(() -> getDataFromMedia(), 1000);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -28,7 +28,6 @@ import de.beyondsoft.ownchat.filepicker.FilePickerConst;
|
||||
import de.beyondsoft.ownchat.filepicker.MediaDetailsActivity;
|
||||
import de.beyondsoft.ownchat.filepicker.PickerManager;
|
||||
import de.beyondsoft.ownchat.filepicker.adapters.FolderGridAdapter;
|
||||
import de.beyondsoft.ownchat.filepicker.cursors.loadercallbacks.FileResultCallback;
|
||||
import de.beyondsoft.ownchat.filepicker.models.ImageDirectory;
|
||||
import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils;
|
||||
import de.beyondsoft.ownchat.filepicker.utils.GridSpacingItemDecoration;
|
||||
@@ -52,14 +51,11 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
private RequestManager mGlideRequestManager;
|
||||
private int fileType;
|
||||
|
||||
public MediaFolderPickerFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
public MediaFolderPickerFragment() {}
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
return inflater.inflate(R.layout.fragment_media_folder_picker, container, false);
|
||||
}
|
||||
@@ -67,11 +63,11 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
if (context instanceof ImagePickerFragmentListener) {
|
||||
mListener = (ImagePickerFragmentListener) context;
|
||||
} else {
|
||||
throw new RuntimeException(context.toString()
|
||||
+ " must implement PhotoPickerFragmentListener");
|
||||
throw new RuntimeException(context.toString() + " must implement PhotoPickerFragmentListener");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,8 +98,8 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
}
|
||||
|
||||
private void initView(View view) {
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
|
||||
emptyView = (TextView) view.findViewById(R.id.empty_view);
|
||||
recyclerView = view.findViewById(R.id.recyclerview);
|
||||
emptyView = view.findViewById(R.id.empty_view);
|
||||
fileType = getArguments().getInt(FILE_TYPE);
|
||||
|
||||
imageCaptureManager = new ImageCaptureManager(getActivity());
|
||||
@@ -111,21 +107,22 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
|
||||
int spanCount = 2; // 2 columns
|
||||
int spacing = 5; // 5px
|
||||
boolean includeEdge = false;
|
||||
recyclerView.addItemDecoration(new GridSpacingItemDecoration(spanCount, spacing, includeEdge));
|
||||
|
||||
recyclerView.addItemDecoration(new GridSpacingItemDecoration(spanCount, spacing, false));
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.setItemAnimator(new DefaultItemAnimator());
|
||||
|
||||
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
// Log.d(">>> Picker >>>", "dy = " + dy);
|
||||
|
||||
if (Math.abs(dy) > SCROLL_THRESHOLD) {
|
||||
mGlideRequestManager.pauseRequests();
|
||||
} else {
|
||||
resumeRequestsIfNotDestroyed();
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||
resumeRequestsIfNotDestroyed();
|
||||
@@ -142,23 +139,19 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
mediaStoreArgs.putInt(FilePickerConst.EXTRA_FILE_TYPE, fileType);
|
||||
|
||||
if(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) {
|
||||
MediaStoreHelper.getPhotoDirs(getActivity(), mediaStoreArgs,
|
||||
dirs -> updateList(dirs));
|
||||
}
|
||||
else if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO)
|
||||
{
|
||||
MediaStoreHelper.getVideoDirs(getActivity(), mediaStoreArgs,
|
||||
dirs -> updateList(dirs));
|
||||
MediaStoreHelper.getPhotoDirs(getActivity(), mediaStoreArgs, this::updateList);
|
||||
} else if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO) {
|
||||
MediaStoreHelper.getVideoDirs(getActivity(), mediaStoreArgs, this::updateList);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateList(List<ImageDirectory> dirs) {
|
||||
Log.i("updateList",""+dirs.size());
|
||||
|
||||
if(dirs.size()>0) {
|
||||
emptyView.setVisibility(View.GONE);
|
||||
recyclerView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
emptyView.setVisibility(View.VISIBLE);
|
||||
recyclerView.setVisibility(View.GONE);
|
||||
return;
|
||||
@@ -167,20 +160,15 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
ImageDirectory photoDirectory = new ImageDirectory();
|
||||
photoDirectory.setBucketId(FilePickerConst.ALL_PHOTOS_BUCKET_ID);
|
||||
|
||||
if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO)
|
||||
{
|
||||
if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO) {
|
||||
photoDirectory.setName(getString(R.string.all_videos));
|
||||
}
|
||||
else if(fileType==FilePickerConst.MEDIA_TYPE_IMAGE)
|
||||
{
|
||||
} else if(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) {
|
||||
photoDirectory.setName(getString(R.string.all_photos));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
photoDirectory.setName(getString(R.string.all_files));
|
||||
}
|
||||
|
||||
if(dirs.size()>0 && dirs.get(0).getMedias().size()>0)
|
||||
{
|
||||
if(dirs.size() > 0 && dirs.get(0).getMedias().size() > 0) {
|
||||
photoDirectory.setDateAdded(dirs.get(0).getDateAdded());
|
||||
photoDirectory.setCoverPath(dirs.get(0).getMedias().get(0).getPath());
|
||||
}
|
||||
@@ -191,29 +179,27 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
|
||||
dirs.add(0,photoDirectory);
|
||||
|
||||
if(photoGridAdapter!=null)
|
||||
{
|
||||
if(photoGridAdapter != null) {
|
||||
photoGridAdapter.setData(dirs);
|
||||
photoGridAdapter.notifyDataSetChanged();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
photoGridAdapter = new FolderGridAdapter(getActivity(), mGlideRequestManager, (ArrayList<ImageDirectory>) dirs, null, (fileType== FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera());
|
||||
recyclerView.setAdapter(photoGridAdapter);
|
||||
|
||||
photoGridAdapter.setFolderGridAdapterListener(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraClicked() {
|
||||
try {
|
||||
Intent intent = imageCaptureManager.dispatchTakePictureIntent(getActivity());
|
||||
if(intent!=null)
|
||||
|
||||
if(intent!=null) {
|
||||
startActivityForResult(intent, ImageCaptureManager.REQUEST_TAKE_PHOTO);
|
||||
else
|
||||
} else {
|
||||
Toast.makeText(getActivity(), R.string.no_camera_exists, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -230,27 +216,21 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
switch (requestCode)
|
||||
{
|
||||
|
||||
switch(requestCode) {
|
||||
case ImageCaptureManager.REQUEST_TAKE_PHOTO:
|
||||
if(resultCode== Activity.RESULT_OK)
|
||||
{
|
||||
if(resultCode== Activity.RESULT_OK) {
|
||||
String imagePath = imageCaptureManager.galleryAddPic();
|
||||
|
||||
if(imagePath!=null && PickerManager.getInstance().getMaxCount()==1)
|
||||
{
|
||||
PickerManager.getInstance().add(imagePath, FilePickerConst.FILE_TYPE_MEDIA);
|
||||
mListener.onItemSelected();
|
||||
}
|
||||
else {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getDataFromMedia();
|
||||
|
||||
}
|
||||
}, 1000);
|
||||
} else {
|
||||
new Handler().postDelayed(this::getDataFromMedia, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -630,9 +630,9 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
boolean test = intent.getBooleanExtra("TEST_EXTRA", false);
|
||||
boolean hasOpenChat = intent.getBooleanExtra(Constants.HAS_OPEN_CHAT, false);
|
||||
|
||||
if(test) {
|
||||
if(hasOpenChat) {
|
||||
Group group = intent.getParcelableExtra(GROUP_ARG);
|
||||
|
||||
if(group != null) {
|
||||
|
||||
@@ -213,6 +213,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
|
||||
|
||||
void setLoading(boolean loading) {
|
||||
mIsLoading = loading;
|
||||
|
||||
if (loading) {
|
||||
notifyItemRangeInserted(getItemCount(), 1);
|
||||
} else {
|
||||
|
||||
@@ -26,20 +26,26 @@ class GroupChatAdapter extends BaseChatAdapter {
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
if (viewType == LEFT_CHAT_TYPE) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_group_chat_left, parent, false);
|
||||
|
||||
return new MessageViewHolder(view);
|
||||
} else if (viewType == RIGHT_CHAT_TYPE) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_group_chat_right, parent, false);
|
||||
|
||||
return new MessageViewHolder(view);
|
||||
} else if (viewType == DATE_TYPE) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_date, parent, false);
|
||||
|
||||
return new DateViewHolder(view);
|
||||
}
|
||||
|
||||
ProgressBar progressBar = new ProgressBar(parent.getContext());
|
||||
|
||||
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
||||
params.gravity = Gravity.CENTER;
|
||||
params.setMargins(0, (int) parent.getContext().getResources().getDimension(R.dimen.messages_progress_top_margin), 0, 0);
|
||||
|
||||
progressBar.setLayoutParams(params);
|
||||
|
||||
ViewUtils.setProgressBarColor(progressBar, R.color.colorWhite);
|
||||
|
||||
return new ProgressViewHolder(progressBar);
|
||||
@@ -55,11 +61,13 @@ class GroupChatAdapter extends BaseChatAdapter {
|
||||
break;
|
||||
case DATE_TYPE:
|
||||
((DateViewHolder) holder).dateTextView.setText(DateUtils.toDayOfYearString(mDateList.get(position)));
|
||||
|
||||
break;
|
||||
case LEFT_CHAT_TYPE:
|
||||
final Message leftMessage = mMessages.get(position - mPositionOffset.get(position));
|
||||
MessageViewHolder leftMessageViewHolder = (MessageViewHolder) holder;
|
||||
setGroupMessage(leftMessageViewHolder, leftMessage, position, true);
|
||||
|
||||
break;
|
||||
case RIGHT_CHAT_TYPE:
|
||||
final Message rightMessage = mMessages.get(position - mPositionOffset.get(position));
|
||||
|
||||
@@ -26,21 +26,27 @@ class SingleChatAdapter extends BaseChatAdapter {
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
if (viewType == LEFT_CHAT_TYPE) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_single_chat_left, parent, false);
|
||||
|
||||
return new MessageViewHolder(view);
|
||||
} else if (viewType == RIGHT_CHAT_TYPE) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_single_chat_right, parent, false);
|
||||
|
||||
return new MessageViewHolder(view);
|
||||
} else if (viewType == DATE_TYPE) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_date, parent, false);
|
||||
|
||||
return new DateViewHolder(view);
|
||||
}
|
||||
|
||||
ProgressBar progressBar = new ProgressBar(parent.getContext());
|
||||
|
||||
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
||||
params.gravity = Gravity.CENTER;
|
||||
params.setMargins(0, (int) parent.getContext().getResources().getDimension(R.dimen.messages_progress_top_margin), 0, 0);
|
||||
progressBar.setLayoutParams(params);
|
||||
|
||||
ViewUtils.setProgressBarColor(progressBar, R.color.colorWhite);
|
||||
|
||||
return new ProgressViewHolder(progressBar);
|
||||
}
|
||||
|
||||
@@ -53,16 +59,21 @@ class SingleChatAdapter extends BaseChatAdapter {
|
||||
break;
|
||||
case DATE_TYPE:
|
||||
((DateViewHolder) holder).dateTextView.setText(DateUtils.toDayOfYearString(mDateList.get(position)));
|
||||
|
||||
break;
|
||||
case LEFT_CHAT_TYPE:
|
||||
MessageViewHolder leftChatHolder = (MessageViewHolder) holder;
|
||||
final Message leftMessage = mMessages.get(position - mPositionOffset.get(position));
|
||||
setSingleMessage(leftChatHolder, leftMessage, position, true);
|
||||
|
||||
break;
|
||||
case RIGHT_CHAT_TYPE:
|
||||
MessageViewHolder rightChatHolder = (MessageViewHolder) holder;
|
||||
|
||||
final Message rightMessage = mMessages.get(position - mPositionOffset.get(position));
|
||||
|
||||
setSingleMessage(rightChatHolder, rightMessage, position, false);
|
||||
|
||||
if (rightMessage.status == Message.Status.DELIVERED) {
|
||||
rightChatHolder.statusProgressBar.setVisibility(View.GONE);
|
||||
rightChatHolder.statusImageView.setVisibility(View.VISIBLE);
|
||||
@@ -79,6 +90,7 @@ class SingleChatAdapter extends BaseChatAdapter {
|
||||
rightChatHolder.sendingFailedTextView.setVisibility(View.GONE);
|
||||
rightChatHolder.statusImageView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,12 +10,16 @@ import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
|
||||
import butterknife.OnClick;
|
||||
import de.beyondsoft.ownchat.R;
|
||||
@@ -34,10 +38,11 @@ import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import de.beyondsoft.ownchat.utils.ui.ViewUtils;
|
||||
import hani.momanii.supernova_emoji_library.Actions.EmojIconActions;
|
||||
import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText;
|
||||
|
||||
public class FileConfirmationActivity extends AppCompatActivity implements FileConfirmationView {
|
||||
public class FileConfirmationActivity extends AppCompatActivity implements FileConfirmationView, RequestListener<String, GlideDrawable> {
|
||||
|
||||
@BindView(R.id.file_message)
|
||||
EmojiconEditText mMessageEmojiconEditText;
|
||||
@@ -69,6 +74,9 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
|
||||
@BindView(R.id.chat_toolbar_extra_image)
|
||||
ImageView mExtraImageView;
|
||||
|
||||
@BindView(R.id.file_preview_progress_bar)
|
||||
ProgressBar statusProgressBar;
|
||||
|
||||
@Inject
|
||||
FileConfirmationPresenter mFileConfirmationPresenter;
|
||||
|
||||
@@ -91,11 +99,16 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
|
||||
|
||||
mSelectedUri = Uri.parse(fileUri);
|
||||
|
||||
ViewUtils.setProgressBarColor(statusProgressBar, R.color.colorDefault);
|
||||
|
||||
showLoading();
|
||||
|
||||
Glide.with(this)
|
||||
.load(fileUri)
|
||||
.dontAnimate()
|
||||
.placeholder(R.drawable.document)
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
||||
.listener(this)
|
||||
.into(new GlideDrawableImageViewTarget(mFileImageView));
|
||||
|
||||
mGroup = getIntent().getParcelableExtra(Constants.EXTRA_GROUP);
|
||||
@@ -159,7 +172,12 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
|
||||
|
||||
@Override
|
||||
public void showLoading() {
|
||||
statusProgressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideLoading() {
|
||||
statusProgressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -176,4 +194,18 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
|
||||
public void showError(String message) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
|
||||
hideLoading();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
|
||||
hideLoading();
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,5 +7,7 @@ import de.beyondsoft.ownchat.page.mvp.MVPLceView;
|
||||
*/
|
||||
|
||||
public interface FileConfirmationView extends MVPLceView {
|
||||
void showLoading();
|
||||
|
||||
void hideLoading();
|
||||
}
|
||||
|
||||
@@ -9,11 +9,9 @@ import android.support.annotation.StringRes;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -27,16 +25,15 @@ import butterknife.OnClick;
|
||||
import de.beyondsoft.ownchat.R;
|
||||
import de.beyondsoft.ownchat.data.AppPrefsConstants;
|
||||
import de.beyondsoft.ownchat.data.prefs.BooleanPreference;
|
||||
import de.beyondsoft.ownchat.data.prefs.LongPreference;
|
||||
import de.beyondsoft.ownchat.data.prefs.StringPreference;
|
||||
import de.beyondsoft.ownchat.di.InjectionHelper;
|
||||
import de.beyondsoft.ownchat.model.Group;
|
||||
import de.beyondsoft.ownchat.page.chat.GroupChatActivity;
|
||||
import de.beyondsoft.ownchat.page.chat.SingleChatActivity;
|
||||
import de.beyondsoft.ownchat.page.common.RuntimePermissionActivity;
|
||||
import de.beyondsoft.ownchat.page.contacts.ContactsFragment;
|
||||
import de.beyondsoft.ownchat.page.login.LoginActivity;
|
||||
import de.beyondsoft.ownchat.page.main.MainActivity;
|
||||
import de.beyondsoft.ownchat.utils.Constants;
|
||||
import de.beyondsoft.ownchat.utils.ui.EmptyLayout;
|
||||
import de.beyondsoft.ownchat.utils.ui.HorizontalDividerItemDecoration;
|
||||
|
||||
@@ -160,7 +157,7 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
|
||||
@Override
|
||||
public void onOpenGroupMessage(Group group) {
|
||||
Intent intent = GroupChatActivity.createIntent(this, group);
|
||||
intent.putExtra("TEST_EXTRA", true);
|
||||
intent.putExtra(Constants.HAS_OPEN_CHAT, true);
|
||||
|
||||
startActivity(intent);
|
||||
finishAffinity();
|
||||
@@ -170,7 +167,7 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
|
||||
public void onOpenPrivateMessage(Group contact) {
|
||||
Intent intent = SingleChatActivity.createIntent(this, contact);
|
||||
|
||||
intent.putExtra("TEST_EXTRA", true);
|
||||
intent.putExtra(Constants.HAS_OPEN_CHAT, true);
|
||||
|
||||
startActivity(intent);
|
||||
finishAffinity();
|
||||
|
||||
@@ -32,4 +32,6 @@ public interface Constants {
|
||||
String MIME_TYPE_GIF = "image/gif";
|
||||
|
||||
String TMP_FILE_DIR = "tmp_files";
|
||||
|
||||
String HAS_OPEN_CHAT = "has_open_chat";
|
||||
}
|
||||
@@ -42,7 +42,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@null"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:src="@drawable/smiley"
|
||||
@@ -55,8 +54,6 @@
|
||||
android:contentDescription="@null"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingEnd="22dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="22dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:src="@drawable/attachment"
|
||||
@@ -71,7 +68,6 @@
|
||||
android:background="@android:color/transparent"
|
||||
android:hint="@string/chat_type_your_message"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:scrollHorizontally="false"
|
||||
@@ -87,7 +83,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@null"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:src="@drawable/send"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
|
||||
|
||||
@@ -11,12 +11,22 @@
|
||||
|
||||
<include layout="@layout/chat_toolbar" />
|
||||
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/media_file"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/document"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
</ImageView>
|
||||
<ProgressBar
|
||||
android:id="@+id/file_preview_progress_bar"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="150dp"
|
||||
android:layout_centerInParent="true"
|
||||
android:visibility="visible"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -29,10 +39,9 @@
|
||||
android:id="@+id/file_emoji_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:contentDescription="@null"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:src="@drawable/smiley"
|
||||
@@ -49,7 +58,6 @@
|
||||
android:maxHeight="100dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingTop="10dp"
|
||||
android:scrollHorizontally="false"
|
||||
android:scrollbars="vertical"
|
||||
@@ -65,7 +73,6 @@
|
||||
android:layout_gravity="center_vertical"
|
||||
android:contentDescription="@null"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:src="@drawable/send"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -26,8 +26,9 @@
|
||||
<View
|
||||
android:id="@+id/bottomOverlay"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="70.0dip"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="visible"
|
||||
android:background="@drawable/gallery_album_overlay" />
|
||||
|
||||
<LinearLayout
|
||||
@@ -50,19 +51,19 @@
|
||||
android:layout_weight="1.0"
|
||||
android:ellipsize="marquee"
|
||||
android:gravity="start"
|
||||
tools:text="All Photos"
|
||||
android:singleLine="true"
|
||||
android:textColor="#ffffffff"
|
||||
android:textSize="13.0sp" />
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="13.0sp"
|
||||
tools:text="All Photos" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/folder_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="marquee"
|
||||
tools:text="123"
|
||||
android:singleLine="true"
|
||||
android:textColor="#ffeeeeee"
|
||||
android:textSize="12sp" />
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp"
|
||||
tools:text="123" />
|
||||
</LinearLayout>
|
||||
</de.beyondsoft.ownchat.filepicker.views.SquareRelativeLayout>
|
||||
@@ -8,13 +8,9 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:paddingLeft="40dp"
|
||||
android:paddingEnd="40dp"
|
||||
android:paddingRight="0dp"
|
||||
android:paddingStart="0dp">
|
||||
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
style="@style/RightChatItemRelativeLayout"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -25,7 +21,6 @@
|
||||
android:id="@+id/chat_item_sending_failed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@+id/chat_item_message_status"
|
||||
android:layout_toEndOf="@+id/chat_item_message_status"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="5dp"
|
||||
@@ -43,10 +38,8 @@
|
||||
android:layout_height="15dp"
|
||||
android:layout_alignBottom="@+id/chat_item_time"
|
||||
android:layout_alignTop="@+id/chat_item_time"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_toEndOf="@+id/chat_item_time"
|
||||
android:layout_toRightOf="@+id/chat_item_time"
|
||||
android:visibility="visible"
|
||||
tools:visibility="visible" />
|
||||
|
||||
@@ -58,8 +51,6 @@
|
||||
android:layout_alignBottom="@+id/chat_item_time"
|
||||
android:layout_alignTop="@+id/chat_item_time"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_toRightOf="@+id/chat_item_time"
|
||||
android:layout_toEndOf="@+id/chat_item_time"
|
||||
android:contentDescription="@null"
|
||||
android:visibility="gone"
|
||||
@@ -70,7 +61,6 @@
|
||||
android:id="@+id/chat_item_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:textColor="@color/colorTimestamp"
|
||||
android:textSize="10sp"
|
||||
@@ -82,7 +72,6 @@
|
||||
android:id="@+id/chat_item_file"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="120dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_below="@id/chat_item_time"
|
||||
android:layout_marginTop="4dp"
|
||||
@@ -97,7 +86,6 @@
|
||||
android:id="@+id/chat_item_progress"
|
||||
android:layout_width="90dp"
|
||||
android:layout_height="90dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_below="@id/chat_item_time"
|
||||
android:layout_marginTop="4dp"
|
||||
@@ -111,7 +99,6 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@+id/chat_item_file"
|
||||
android:textColor="@color/colorBlack"
|
||||
android:visibility="gone"
|
||||
@@ -123,7 +110,6 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@id/chat_item_file_name"
|
||||
android:visibility="gone"
|
||||
emojicon:emojiconSize="20sp"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<color name="colorBackground">#F3F3F3</color>
|
||||
<color name="colorBlack">#000000</color>
|
||||
<color name="colorWhite">#ffffff</color>
|
||||
<color name="colorDefault">#FFFF5E00</color>
|
||||
<color name="colorDefault">#ff5e00</color>
|
||||
<color name="colorDefaultBright">#B3FF5E00</color>
|
||||
<color name="colorDivider">#4D000000</color>
|
||||
<color name="colorHint">#80000000</color>
|
||||
|
||||
Reference in New Issue
Block a user