private RecyclerView getRecyclerView() { if (videoList==null) { videoList=findViewById(R.id.video_list); } return(videoList); }
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { isInPermission=false; if (requestCode==REQUEST_PERMS) { if (hasFilesPermission()) { loadVideos(); } else { finish(); // denied permission, so we're done } } }
private RecyclerView.Adapter getAdapter() { return(getRecyclerView().getAdapter()); }
@Override public void onCreate(Bundle state) { super.onCreate(state); setContentView(R.layout.main); player=findViewById(R.id.player); if (player!=null) { player.setOnDragListener(this); } thumbnailLarge=findViewById(R.id.thumbnail_large); if (thumbnailLarge!=null) { thumbnailLarge.setOnDragListener(this); } setLayoutManager(new LinearLayoutManager(this)); adapter=new VideoAdapter(getRecyclerView()); setAdapter(adapter); getRecyclerView().requestFocus(); if (state!=null) { isInPermission= state.getBoolean(STATE_IN_PERMISSION, false); } if (hasFilesPermission()) { loadVideos(); } else if (!isInPermission) { isInPermission=true; ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMS); } }
@Override public boolean onDrag(View v, DragEvent event) { boolean result=true; switch (event.getAction()) { case DragEvent.ACTION_DRAG_STARTED: applyDropHint(v, R.drawable.droppable); break; case DragEvent.ACTION_DRAG_ENTERED: applyDropHint(v, R.drawable.drop); break; case DragEvent.ACTION_DRAG_EXITED: applyDropHint(v, R.drawable.droppable); break; case DragEvent.ACTION_DRAG_ENDED: applyDropHint(v, -1); break; case DragEvent.ACTION_DROP: ClipData.Item clip=event.getClipData().getItemAt(0); Uri videoUri=clip.getUri(); if (v==player) { playVideo(videoUri); } else { showLargeThumbnail(videoUri); } break; } return(result); }
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position==0) { ((MainActivity)itemView.getContext()) .playVideo(videoUri); } else { ((MainActivity)itemView.getContext()) .showLargeThumbnail(videoUri); } popup.dismiss(); } });
@Override public void onLoadFinished(Loader<Cursor> loader, Cursor c) { ((VideoAdapter)getAdapter()).setVideos(c); }
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getRepeatCount()==0) { if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) { int position=adapter.getCheckedPosition(); if (position>=0) { Uri videoUri=adapter.getVideoUri(position); if (event.isAltPressed()) { playVideo(videoUri); } else if (event.isCtrlPressed()) { showLargeThumbnail(videoUri); } return(true); } } else if (keyCode==KeyEvent.KEYCODE_SLASH && event.isMetaPressed() && Build.VERSION.SDK_INT<Build.VERSION_CODES.N) { new ShortcutDialogFragment().show(getSupportFragmentManager(), "shortcuts"); return(true); } } return(super.onKeyDown(keyCode, event)); }
@Override public RowController onCreateViewHolder(ViewGroup parent, int viewType) { return(new RowController(getLayoutInflater() .inflate(R.layout.row, parent, false))); }
private void loadVideos() { getSupportLoaderManager().initLoader(0, null, this); }
@Override public void onCreate(Bundle state) { super.onCreate(state); setContentView(R.layout.main); player=findViewById(R.id.player); if (player!=null) { player.setOnDragListener(this); } thumbnailLarge=findViewById(R.id.thumbnail_large); if (thumbnailLarge!=null) { thumbnailLarge.setOnDragListener(this); } setLayoutManager(new LinearLayoutManager(this)); adapter=new VideoAdapter(getRecyclerView()); setAdapter(adapter); getRecyclerView().requestFocus(); if (state!=null) { isInPermission= state.getBoolean(STATE_IN_PERMISSION, false); } if (hasFilesPermission()) { loadVideos(); } else if (!isInPermission) { isInPermission=true; ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMS); } }
@Override public boolean onDrag(View v, DragEvent event) { boolean result=true; switch (event.getAction()) { case DragEvent.ACTION_DRAG_STARTED: applyDropHint(v, R.drawable.droppable); break; case DragEvent.ACTION_DRAG_ENTERED: applyDropHint(v, R.drawable.drop); break; case DragEvent.ACTION_DRAG_EXITED: applyDropHint(v, R.drawable.droppable); break; case DragEvent.ACTION_DRAG_ENDED: applyDropHint(v, -1); break; case DragEvent.ACTION_DROP: ClipData.Item clip=event.getClipData().getItemAt(0); Uri videoUri=clip.getUri(); if (v==player) { playVideo(videoUri); } else { showLargeThumbnail(videoUri); } break; } return(result); }
@Override public boolean onOptionsItemSelected(MenuItem item) { int position=adapter.getCheckedPosition(); if (item.getItemId()==R.id.play_video) { if (position>=0) { playVideo(adapter.getVideoUri(position)); } else { Toast.makeText(this, R.string.msg_choose, Toast.LENGTH_LONG).show(); } return(true); } else if (item.getItemId()==R.id.show_thumbnail) { if (position>=0) { showLargeThumbnail(adapter.getVideoUri(position)); } else { Toast.makeText(this, R.string.msg_choose, Toast.LENGTH_LONG).show(); } return(true); } return(super.onOptionsItemSelected(item)); }
@Override public void onLoadFinished(Loader<Cursor> loader, Cursor c) { ((VideoAdapter)getAdapter()).setVideos(c); }
@Override public RowController onCreateViewHolder(ViewGroup parent, int viewType) { return(new RowController(getLayoutInflater() .inflate(R.layout.row, parent, false))); }
private void loadVideos() { getSupportLoaderManager().initLoader(0, null, this); }
@Override public void onCreate(Bundle state) { super.onCreate(state); setContentView(R.layout.main); player=findViewById(R.id.player); if (player!=null) { player.setOnDragListener(this); } thumbnailLarge=findViewById(R.id.thumbnail_large); if (thumbnailLarge!=null) { thumbnailLarge.setOnDragListener(this); } setLayoutManager(new LinearLayoutManager(this)); adapter=new VideoAdapter(getRecyclerView()); setAdapter(adapter); getRecyclerView().requestFocus(); if (state!=null) { isInPermission= state.getBoolean(STATE_IN_PERMISSION, false); } if (hasFilesPermission()) { loadVideos(); } else if (!isInPermission) { isInPermission=true; ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMS); } }
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { isInPermission=false; if (requestCode==REQUEST_PERMS) { if (hasFilesPermission()) { loadVideos(); } else { finish(); // denied permission, so we're done } } }
@Override public boolean onDrag(View v, DragEvent event) { boolean result=true; switch (event.getAction()) { case DragEvent.ACTION_DRAG_STARTED: applyDropHint(v, R.drawable.droppable); break; case DragEvent.ACTION_DRAG_ENTERED: applyDropHint(v, R.drawable.drop); break; case DragEvent.ACTION_DRAG_EXITED: applyDropHint(v, R.drawable.droppable); break; case DragEvent.ACTION_DRAG_ENDED: applyDropHint(v, -1); break; case DragEvent.ACTION_DROP: ClipData.Item clip=event.getClipData().getItemAt(0); Uri videoUri=clip.getUri(); if (v==player) { playVideo(videoUri); } else { showLargeThumbnail(videoUri); } break; } return(result); }
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT && event.getRepeatCount()==0) { int position=adapter.getCheckedPosition(); if (position>=0) { Uri videoUri=adapter.getVideoUri(position); if (event.isAltPressed()) { playVideo(videoUri); } else if (event.isCtrlPressed()) { showLargeThumbnail(videoUri); } return(true); } } return(super.onKeyDown(keyCode, event)); }