From c225007d712cb946e873dd59c1fb0776e5a85e68 Mon Sep 17 00:00:00 2001 From: Lyndon Date: Tue, 14 Nov 2017 10:48:19 +0100 Subject: [PATCH] Gifs aren't animated anymore in the file picker. --- .../app/src/main/AndroidManifest.xml | 8 +- .../ownchat/BewoplanerApplication.java | 1 - .../adapters/FolderGridAdapter.java | 60 ++++++++----- .../filepicker/adapters/ImageGridAdapter.java | 55 ++++++------ .../fragments/DocPickerFragment.java | 45 +++++----- .../fragments/MediaDetailPickerFragment.java | 86 +++++++------------ .../fragments/MediaFolderPickerFragment.java | 84 +++++++----------- .../ownchat/page/chat/BaseChatActivity.java | 4 +- .../ownchat/page/chat/BaseChatAdapter.java | 1 + .../ownchat/page/chat/GroupChatAdapter.java | 8 ++ .../ownchat/page/chat/SingleChatAdapter.java | 12 +++ .../FileConfirmationActivity.java | 34 +++++++- .../FileConfirmationView.java | 2 + .../ownchat/page/sharing/SharingActivity.java | 9 +- .../beyondsoft/ownchat/utils/Constants.java | 2 + .../app/src/main/res/layout/activity_chat.xml | 5 -- .../res/layout/activity_file_confirmation.xml | 19 ++-- .../main/res/layout/item_folder_layout.xml | 15 ++-- .../res/layout/item_single_chat_right.xml | 14 --- .../app/src/main/res/values/colors.xml | 2 +- 20 files changed, 242 insertions(+), 224 deletions(-) diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml index cf15c0b..ad07d71 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml @@ -60,9 +60,13 @@ + android:theme="@style/AppTheme.NoActionBar" + android:screenOrientation="portrait" + /> + android:theme="@style/AppTheme.NoActionBar" + android:screenOrientation="portrait" + /> { +public class FolderGridAdapter extends SelectableAdapter implements RequestListener { 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 target, boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(GlideDrawable resource, File model, Target 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 photos, ArrayList selectedPaths, boolean showCamera) - { + public FolderGridAdapter(Context context, RequestManager requestManager, ArrayList photos, ArrayList selectedPaths, boolean showCamera) { super(photos, selectedPaths); this.context = context; this.glide = requestManager; @@ -58,42 +77,37 @@ public class FolderGridAdapter extends SelectableAdapter { + 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 { +public class ImageGridAdapter extends SelectableAdapter implements RequestListener { private final Context context; private final RequestManager glide; private final boolean showCamera; @@ -36,13 +41,7 @@ public class ImageGridAdapter extends SelectableAdapter medias, - ArrayList selectedPaths, - boolean showCamera, - FileAdapterListener photoGridAdapterListener) - { + public ImageGridAdapter(Context context, RequestManager requestManager, ArrayList medias, ArrayList selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) { super(medias, selectedPaths); this.context = context; this.glide = requestManager; @@ -70,13 +69,13 @@ public class ImageGridAdapter extends SelectableAdapter target, boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(GlideDrawable resource, File model, Target 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() { - @Override - public void onResultCallback(List 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 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 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 filterDocuments(final String[] type, List documents) - { - final Predicate docType = new Predicate() { - public boolean apply(Document document) { - return document.isThisType(type); - } - }; + private ArrayList filterDocuments(final String[] type, List documents) { + final Predicate docType = document -> document.isThisType(type); return new ArrayList<>(Utils.filter(new HashSet<>(documents),docType)); } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java index 3964627..09b0fd1 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java @@ -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 dirs) { ArrayList medias = new ArrayList<>(); + for (int i = 0; i < dirs.size(); i++) { medias.addAll(dirs.get(i).getMedias()); } - Collections.sort(medias,new Comparator() { - @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) 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; diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java index 7e51101..c572dbd 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java @@ -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 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) 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; } } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java index 10a340b..00ce2f2 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java @@ -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) { diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java index f578244..6f681d7 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java @@ -213,6 +213,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter { @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 target, boolean isFirstResource) { + hideLoading(); + + return false; + } + + @Override + public boolean onResourceReady(GlideDrawable resource, String model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { + hideLoading(); + + return false; + } } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationView.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationView.java index 499c1c2..20b2d94 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationView.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationView.java @@ -7,5 +7,7 @@ import de.beyondsoft.ownchat.page.mvp.MVPLceView; */ public interface FileConfirmationView extends MVPLceView { + void showLoading(); + void hideLoading(); } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java index e74f58e..4ce18a1 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java @@ -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(); diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java index f2ae2f1..2f6c56f 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java @@ -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"; } \ No newline at end of file diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_chat.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_chat.xml index c8a72fc..469f19e 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_chat.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_chat.xml @@ -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" /> diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_file_confirmation.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_file_confirmation.xml index fc769e5..c052c1a 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_file_confirmation.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/activity_file_confirmation.xml @@ -11,12 +11,22 @@ + + + android:layout_height="match_parent" + android:src="@drawable/document" + android:contentDescription="@null" /> - + diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_folder_layout.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_folder_layout.xml index 742ba81..0ee2442 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_folder_layout.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_folder_layout.xml @@ -26,8 +26,9 @@ + android:textColor="@color/colorAccent" + android:textSize="13.0sp" + tools:text="All Photos" /> + android:textColor="@color/colorAccent" + android:textSize="12sp" + tools:text="123" /> \ No newline at end of file diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml index 88bb35c..b7e1cf0 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml @@ -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"> - - @@ -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" diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml index a3a0fba..04842b9 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml @@ -6,7 +6,7 @@ #F3F3F3 #000000 #ffffff - #FFFF5E00 + #ff5e00 #B3FF5E00 #4D000000 #80000000