That fuck shit the fascists are using
at master 89 lines 3.7 kB view raw
1package org.tm.archive.wallpaper; 2 3import android.Manifest; 4import android.app.Activity; 5import android.content.Intent; 6import android.os.Bundle; 7import android.view.LayoutInflater; 8import android.view.View; 9import android.view.ViewGroup; 10import android.widget.Toast; 11 12import androidx.annotation.NonNull; 13import androidx.annotation.Nullable; 14import androidx.appcompat.widget.Toolbar; 15import androidx.fragment.app.Fragment; 16import androidx.lifecycle.ViewModelProvider; 17import androidx.navigation.Navigation; 18import androidx.recyclerview.widget.RecyclerView; 19 20import org.tm.archive.R; 21import org.tm.archive.permissions.PermissionCompat; 22import org.tm.archive.permissions.Permissions; 23import org.tm.archive.wallpaper.crop.WallpaperImageSelectionActivity; 24 25public class ChatWallpaperSelectionFragment extends Fragment { 26 27 private static final short CHOOSE_WALLPAPER = 1; 28 29 private ChatWallpaperViewModel viewModel; 30 31 @Override 32 public @Nullable View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 33 return inflater.inflate(R.layout.chat_wallpaper_selection_fragment, container, false); 34 } 35 36 @Override 37 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 38 Toolbar toolbar = view.findViewById(R.id.toolbar); 39 View chooseFromPhotos = view.findViewById(R.id.chat_wallpaper_choose_from_photos); 40 RecyclerView recyclerView = view.findViewById(R.id.chat_wallpaper_recycler); 41 42 chooseFromPhotos.setOnClickListener(unused -> { 43 askForPermissionIfNeededAndLaunchPhotoSelection(); 44 }); 45 46 toolbar.setTitle(R.string.preferences__chat_color_and_wallpaper); 47 toolbar.setNavigationOnClickListener(nav -> Navigation.findNavController(nav).popBackStack()); 48 49 @SuppressWarnings("CodeBlock2Expr") 50 ChatWallpaperSelectionAdapter adapter = new ChatWallpaperSelectionAdapter(chatWallpaper -> { 51 startActivityForResult(ChatWallpaperPreviewActivity.create(requireActivity(), chatWallpaper, viewModel.getRecipientId(), viewModel.getDimInDarkTheme().getValue()), CHOOSE_WALLPAPER); 52 }); 53 54 recyclerView.setAdapter(adapter); 55 56 viewModel = new ViewModelProvider(requireActivity()).get(ChatWallpaperViewModel.class); 57 viewModel.getWallpapers().observe(getViewLifecycleOwner(), adapter::submitList); 58 } 59 60 @Override 61 public void onResume() { 62 super.onResume(); 63 viewModel.refreshWallpaper(); 64 } 65 66 @Override 67 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 68 if (requestCode == CHOOSE_WALLPAPER && resultCode == Activity.RESULT_OK && data != null) { 69 ChatWallpaper chatWallpaper = data.getParcelableExtra(ChatWallpaperPreviewActivity.EXTRA_CHAT_WALLPAPER); 70 viewModel.setWallpaper(chatWallpaper); 71 viewModel.saveWallpaperSelection(); 72 Navigation.findNavController(requireView()).popBackStack(); 73 } else { 74 super.onActivityResult(requestCode, resultCode, data); 75 } 76 } 77 78 private void askForPermissionIfNeededAndLaunchPhotoSelection() { 79 Permissions.with(this) 80 .request(PermissionCompat.forImages()) 81 .ifNecessary() 82 .onAllGranted(() -> { 83 startActivityForResult(WallpaperImageSelectionActivity.getIntent(requireContext(), viewModel.getRecipientId()), CHOOSE_WALLPAPER); 84 }) 85 .onAnyDenied(() -> Toast.makeText(requireContext(), R.string.ChatWallpaperPreviewActivity__viewing_your_gallery_requires_the_storage_permission, Toast.LENGTH_SHORT) 86 .show()) 87 .execute(); 88 } 89}