use of us.koller.cameraroll.data.models.Album in project Camera-Roll-Android-App by kollerlukas.
the class ItemActivity method onCreate.
@Override
protected void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item);
MediaProvider.checkPermission(this);
view_only = getIntent().getBooleanExtra(VIEW_ONLY, false);
if (!view_only && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && showAnimations()) {
if (savedInstanceState == null) {
postponeEnterTransition();
}
setEnterSharedElementCallback(sharedElementCallback);
getWindow().getSharedElementEnterTransition().addListener(transitionListener);
}
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
bottomBar = findViewById(R.id.bottom_bar);
if (view_only) {
ImageView delete = findViewById(R.id.delete_button);
((View) delete.getParent()).setVisibility(View.GONE);
ImageView edit = findViewById(R.id.edit_button);
((View) edit.getParent()).setVisibility(View.GONE);
}
final ViewGroup rootView = findViewById(R.id.root_view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
rootView.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
@Override
@RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
public WindowInsets onApplyWindowInsets(View view, WindowInsets insets) {
toolbar.setPadding(toolbar.getPaddingStart() + insets.getSystemWindowInsetLeft(), toolbar.getPaddingTop() + insets.getSystemWindowInsetTop(), toolbar.getPaddingEnd() + insets.getSystemWindowInsetRight(), toolbar.getPaddingBottom());
bottomBar.setPadding(bottomBar.getPaddingStart() + insets.getSystemWindowInsetLeft(), bottomBar.getPaddingTop(), bottomBar.getPaddingEnd() + insets.getSystemWindowInsetRight(), bottomBar.getPaddingBottom() + insets.getSystemWindowInsetBottom());
// clear this listener so insets aren't re-applied
rootView.setOnApplyWindowInsetsListener(null);
return insets.consumeSystemWindowInsets();
}
});
} else {
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// hacky way of getting window insets on pre-Lollipop
int[] screenSize = Util.getScreenSize(ItemActivity.this);
int[] windowInsets = new int[] { Math.abs(screenSize[0] - rootView.getLeft()), Math.abs(screenSize[1] - rootView.getTop()), Math.abs(screenSize[2] - rootView.getRight()), Math.abs(screenSize[3] - rootView.getBottom()) };
toolbar.setPadding(toolbar.getPaddingStart() + windowInsets[0], toolbar.getPaddingTop() + windowInsets[1], toolbar.getPaddingEnd() + windowInsets[2], toolbar.getPaddingBottom());
bottomBar.setPadding(bottomBar.getPaddingStart() + windowInsets[0], bottomBar.getPaddingTop(), bottomBar.getPaddingEnd() + windowInsets[2], bottomBar.getPaddingBottom() + windowInsets[3]);
rootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
// needed to achieve transparent navBar
setSystemUiFlags();
if (!view_only) {
String path;
if (savedInstanceState != null && savedInstanceState.containsKey(ALBUM_PATH)) {
path = savedInstanceState.getString(ALBUM_PATH);
} else {
path = getIntent().getStringExtra(ALBUM_PATH);
}
Log.d("ItemActivity", "loadAlbum() " + path);
MediaProvider.loadAlbum(this, path, new MediaProvider.OnAlbumLoadedCallback() {
@Override
public void onAlbumLoaded(Album album) {
Log.d("ItemActivity", "onAlbumLoaded()");
ItemActivity.this.album = album;
ItemActivity.this.onAlbumLoaded(savedInstanceState);
}
});
} else {
album = getIntent().getExtras().getParcelable(ALBUM);
onAlbumLoaded(savedInstanceState);
}
}
use of us.koller.cameraroll.data.models.Album in project Camera-Roll-Android-App by kollerlukas.
the class ItemActivity method getDefaultLocalBroadcastReceiver.
@Override
public BroadcastReceiver getDefaultLocalBroadcastReceiver() {
return new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch(intent.getAction()) {
case FileOperation.RESULT_DONE:
int type = intent.getIntExtra(FileOperation.TYPE, FileOperation.EMPTY);
if (type == FileOperation.MOVE) {
ArrayList<String> movedFilesPaths = intent.getStringArrayListExtra(Move.MOVED_FILES_PATHS);
for (int i = 0; i < movedFilesPaths.size(); i++) {
String path = movedFilesPaths.get(i);
// notify AlbumActivity
LocalBroadcastManager.getInstance(ItemActivity.this).sendBroadcast(new Intent(AlbumActivity.ALBUM_ITEM_REMOVED).putExtra(ALBUM_ITEM_PATH, path));
ItemActivity.this.setResult(RESULT_OK);
finish();
}
}
break;
case DATA_CHANGED:
final int albumItemIndex = album.getAlbumItems().indexOf(albumItem);
String albumPath = getIntent().getStringExtra(ALBUM_PATH);
MediaProvider.loadAlbum(ItemActivity.this, albumPath, new MediaProvider.OnAlbumLoadedCallback() {
@Override
public void onAlbumLoaded(Album album) {
if (album == null) {
Toast.makeText(ItemActivity.this, "Error: Album null", Toast.LENGTH_SHORT).show();
finish();
return;
}
int index = albumItemIndex;
ItemActivity.this.album = album;
if (index >= album.getAlbumItems().size()) {
index = album.getAlbumItems().size() - 1;
}
if (index >= 0) {
((ItemAdapter) viewPager.getAdapter()).setAlbum(album);
albumItem = album.getAlbumItems().get(index);
viewPager.getAdapter().notifyDataSetChanged();
viewPager.setCurrentItem(index);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setTitle(albumItem.getName());
}
ItemAdapter adapter = (ItemAdapter) viewPager.getAdapter();
ViewHolder viewHolder = adapter.findViewHolderByTag(albumItem.getPath());
if (viewHolder != null) {
onShowViewHolder(viewHolder);
} else {
((ItemAdapter) viewPager.getAdapter()).addOnInstantiateItemCallback(new ViewPagerOnInstantiateItemCallback() {
@Override
public boolean onInstantiateItem(ViewHolder viewHolder) {
if (viewHolder.albumItem.getPath().equals(albumItem.getPath())) {
onShowViewHolder(viewHolder);
return false;
}
return true;
}
});
}
} else {
finish();
}
}
});
break;
default:
break;
}
}
};
}
use of us.koller.cameraroll.data.models.Album in project Camera-Roll-Android-App by kollerlukas.
the class MainActivity method refreshPhotos.
public void refreshPhotos() {
if (mediaProvider != null) {
mediaProvider.onDestroy();
mediaProvider = null;
}
snackbar = Snackbar.make(findViewById(R.id.root_view), R.string.loading, Snackbar.LENGTH_INDEFINITE);
Util.showSnackbar(snackbar);
final MediaProvider.OnMediaLoadedCallback callback = new MediaProvider.OnMediaLoadedCallback() {
@Override
public void onMediaLoaded(final ArrayList<Album> albums) {
final ArrayList<Album> albumsWithVirtualDirs = MediaProvider.getAlbumsWithVirtualDirectories(MainActivity.this);
if (albums != null) {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
MainActivity.this.albums = albumsWithVirtualDirs;
recyclerViewAdapter.setData(albumsWithVirtualDirs);
snackbar.dismiss();
if (mediaProvider != null) {
mediaProvider.onDestroy();
}
mediaProvider = null;
}
});
}
}
@Override
public void timeout() {
// handle timeout
snackbar.dismiss();
snackbar = Snackbar.make(findViewById(R.id.root_view), R.string.loading_failed, Snackbar.LENGTH_INDEFINITE);
snackbar.setAction(getString(R.string.retry), new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mediaProvider != null) {
mediaProvider.onDestroy();
}
refreshPhotos();
snackbar.dismiss();
}
});
Util.showSnackbar(snackbar);
if (mediaProvider != null) {
mediaProvider.onDestroy();
}
mediaProvider = null;
}
@Override
public void needPermission() {
snackbar.dismiss();
}
};
mediaProvider = new MediaProvider(this);
mediaProvider.loadAlbums(MainActivity.this, hiddenFolders, callback);
}
use of us.koller.cameraroll.data.models.Album in project Camera-Roll-Android-App by kollerlukas.
the class AlbumActivity method onCreate.
@Override
protected void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album);
pick_photos = getIntent().getAction() != null && getIntent().getAction().equals(MainActivity.PICK_PHOTOS);
allowMultiple = getIntent().getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
MediaProvider.checkPermission(this);
setExitSharedElementCallback(mCallback);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setEnterTransition(new TransitionSet().setOrdering(TransitionSet.ORDERING_TOGETHER).addTransition(new Slide(Gravity.BOTTOM)).addTransition(new Fade()).setInterpolator(new AccelerateDecelerateInterpolator()));
getWindow().setReturnTransition(new TransitionSet().setOrdering(TransitionSet.ORDERING_TOGETHER).addTransition(new Slide(Gravity.BOTTOM)).addTransition(new Fade()).setInterpolator(new AccelerateDecelerateInterpolator()));
}
final ViewGroup swipeBackView = findViewById(R.id.swipeBackView);
if (swipeBackView instanceof SwipeBackCoordinatorLayout) {
((SwipeBackCoordinatorLayout) swipeBackView).setOnSwipeListener(this);
}
final Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (!pick_photos) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AnimatedVectorDrawable drawable = (AnimatedVectorDrawable) ContextCompat.getDrawable(AlbumActivity.this, R.drawable.back_to_cancel_avd);
// mutating avd to reset it
drawable.mutate();
toolbar.setNavigationIcon(drawable);
} else {
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white);
}
Drawable navIcon = toolbar.getNavigationIcon();
if (navIcon != null) {
navIcon = DrawableCompat.wrap(navIcon);
DrawableCompat.setTint(navIcon.mutate(), textColorSecondary);
toolbar.setNavigationIcon(navIcon);
}
} else {
if (actionBar != null) {
actionBar.setTitle(allowMultiple ? getString(R.string.pick_photos) : getString(R.string.pick_photo));
}
toolbar.setNavigationIcon(R.drawable.ic_clear_white);
Drawable navIcon = toolbar.getNavigationIcon();
if (navIcon != null) {
navIcon = DrawableCompat.wrap(navIcon);
DrawableCompat.setTint(navIcon.mutate(), accentTextColor);
toolbar.setNavigationIcon(navIcon);
}
Util.setDarkStatusBarIcons(findViewById(R.id.root_view));
Util.colorToolbarOverflowMenuIcon(toolbar, accentTextColor);
}
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (recyclerViewAdapter != null && recyclerViewAdapter.isSelectorModeActive()) {
recyclerViewAdapter.cancelSelectorMode(null);
} else {
onBackPressed();
}
}
});
recyclerView = findViewById(R.id.recyclerView);
final int columnCount = Settings.getInstance(this).getColumnCount(this);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, columnCount);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerViewAdapter = new AlbumAdapter(this, recyclerView, album, pick_photos);
recyclerView.setAdapter(recyclerViewAdapter);
float albumGridSpacing = getResources().getDimension(R.dimen.album_grid_spacing);
((FastScrollerRecyclerView) recyclerView).addOuterGridSpacing((int) (albumGridSpacing / 2));
recyclerView.addItemDecoration(new GridMarginDecoration((int) albumGridSpacing));
if (savedInstanceState != null && savedInstanceState.containsKey(RECYCLER_VIEW_SCROLL_STATE)) {
recyclerView.getLayoutManager().onRestoreInstanceState(savedInstanceState.getParcelable(RECYCLER_VIEW_SCROLL_STATE));
}
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
// private float scrollY = 0.0f;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (recyclerViewAdapter.isSelectorModeActive() || pick_photos) {
return;
}
float translationY = toolbar.getTranslationY() - dy;
if (-translationY > toolbar.getHeight()) {
translationY = -toolbar.getHeight();
if (theme.elevatedToolbar()) {
toolbar.setActivated(true);
}
} else if (translationY > 0) {
translationY = 0;
if (theme.elevatedToolbar() && !recyclerView.canScrollVertically(-1)) {
toolbar.setActivated(false);
}
}
toolbar.setTranslationY(translationY);
// animate statusBarIcon color
if (theme.darkStatusBarIcons()) {
float animatedValue = (-translationY) / toolbar.getHeight();
if (animatedValue > 0.9f) {
Util.setLightStatusBarIcons(findViewById(R.id.root_view));
} else {
Util.setDarkStatusBarIcons(findViewById(R.id.root_view));
}
}
}
});
final FloatingActionButton fab = findViewById(R.id.fab);
if (!pick_photos) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Drawable d = ContextCompat.getDrawable(this, R.drawable.ic_delete_avd);
fab.setImageDrawable(d);
} else {
fab.setImageResource(R.drawable.ic_delete_white);
}
} else {
fab.setImageResource(R.drawable.ic_send_white);
}
Drawable d = fab.getDrawable();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
d.setTint(accentTextColor);
} else {
d = DrawableCompat.wrap(d);
DrawableCompat.setTint(d.mutate(), accentTextColor);
}
fab.setImageDrawable(d);
fab.setScaleX(0.0f);
fab.setScaleY(0.0f);
final ViewGroup rootView = findViewById(R.id.root_view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
rootView.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
@Override
@RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
public WindowInsets onApplyWindowInsets(View view, WindowInsets insets) {
toolbar.setPadding(toolbar.getPaddingStart(), toolbar.getPaddingTop() + insets.getSystemWindowInsetTop(), toolbar.getPaddingEnd(), toolbar.getPaddingBottom());
ViewGroup.MarginLayoutParams toolbarParams = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
toolbarParams.leftMargin += insets.getSystemWindowInsetLeft();
toolbarParams.rightMargin += insets.getSystemWindowInsetRight();
toolbar.setLayoutParams(toolbarParams);
recyclerView.setPadding(recyclerView.getPaddingStart() + insets.getSystemWindowInsetLeft(), recyclerView.getPaddingTop() + insets.getSystemWindowInsetTop(), recyclerView.getPaddingEnd() + insets.getSystemWindowInsetRight(), recyclerView.getPaddingBottom() + insets.getSystemWindowInsetBottom());
fab.setTranslationY(-insets.getSystemWindowInsetBottom());
fab.setTranslationX(-insets.getSystemWindowInsetRight());
rootView.setOnApplyWindowInsetsListener(null);
return insets.consumeSystemWindowInsets();
}
});
} else {
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// hacky way of getting window insets on pre-Lollipop
// somewhat works...
int[] screenSize = Util.getScreenSize(AlbumActivity.this);
int[] windowInsets = new int[] { Math.abs(screenSize[0] - rootView.getLeft()), Math.abs(screenSize[1] - rootView.getTop()), Math.abs(screenSize[2] - rootView.getRight()), Math.abs(screenSize[3] - rootView.getBottom()) };
toolbar.setPadding(toolbar.getPaddingStart(), toolbar.getPaddingTop() + windowInsets[1], toolbar.getPaddingEnd(), toolbar.getPaddingBottom());
ViewGroup.MarginLayoutParams toolbarParams = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
toolbarParams.leftMargin += windowInsets[0];
toolbarParams.rightMargin += windowInsets[2];
toolbar.setLayoutParams(toolbarParams);
recyclerView.setPadding(recyclerView.getPaddingStart() + windowInsets[0], recyclerView.getPaddingTop() + windowInsets[1], recyclerView.getPaddingEnd() + windowInsets[2], recyclerView.getPaddingBottom() + windowInsets[3]);
recyclerView.scrollToPosition(0);
fab.setTranslationX(-windowInsets[2]);
fab.setTranslationY(-windowInsets[3]);
rootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
// onNewIntent(getIntent());
// needed for transparent statusBar
setSystemUiFlags();
// load album
String path;
if (savedInstanceState != null && savedInstanceState.containsKey(ALBUM_PATH)) {
path = savedInstanceState.getString(ALBUM_PATH);
} else {
path = getIntent().getStringExtra(ALBUM_PATH);
}
MediaProvider.loadAlbum(this, path, new MediaProvider.OnAlbumLoadedCallback() {
@Override
public void onAlbumLoaded(Album album) {
AlbumActivity.this.album = album;
AlbumActivity.this.onAlbumLoaded(savedInstanceState);
}
});
}
use of us.koller.cameraroll.data.models.Album in project Camera-Roll-Android-App by kollerlukas.
the class BaseActivity method onResume.
@Override
protected void onResume() {
super.onResume();
// registering RemovableStorage...Receiver here so only the visible activity receives the broadcast
removableStoragePermissionRequestBroadcastReceiver = getRemovableStoragePermissionRequestBroadcastReceiver();
if (removableStoragePermissionRequestBroadcastReceiver != null) {
IntentFilter filter = new IntentFilter();
filter.addAction(FileOperation.NEED_REMOVABLE_STORAGE_PERMISSION);
broadcastReceivers.add(removableStoragePermissionRequestBroadcastReceiver);
LocalBroadcastManager.getInstance(this).registerReceiver(removableStoragePermissionRequestBroadcastReceiver, filter);
}
if (MediaProvider.dataChanged) {
MediaProvider.dataChanged = false;
Settings s = Settings.getInstance(this);
boolean hiddenFolders = s.getHiddenFolders();
MediaProvider provider = new MediaProvider(this);
provider.loadAlbums(this, hiddenFolders, new MediaProvider.OnMediaLoadedCallback() {
@Override
public void onMediaLoaded(ArrayList<Album> albums) {
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(BaseActivity.this);
manager.sendBroadcast(new Intent().setAction(DATA_CHANGED));
}
@Override
public void timeout() {
}
@Override
public void needPermission() {
MediaProvider.checkPermission(BaseActivity.this);
}
});
}
}
Aggregations