package info.guardianproject.pixelknot;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import info.guardianproject.pixelknot.adapters.AlbumAdapter;
import info.guardianproject.pixelknot.adapters.PhotoAdapter;
public class AlbumsActivity extends ActivityBase implements AlbumAdapter.AlbumAdapterListener, PhotoAdapter.PhotoAdapterListener {
private static final boolean LOGGING = false;
private static final String LOGTAG = "AlbumsActivity";
private static final int PICK_EXTERNAL_REQUEST = 5;
private View mRootView;
private RecyclerView mRecyclerView;
private AlbumLayoutManager mLayoutManager;
private View mLayoutGalleryInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_albums);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mRootView = findViewById(R.id.main_content);
mLayoutGalleryInfo = mRootView.findViewById(R.id.gallery_info);
Button btnOk = (Button) mLayoutGalleryInfo.findViewById(R.id.btnGalleryInfoOk);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
App.getInstance().getSettings().setSkipGalleryInfo(true);
mLayoutGalleryInfo.setVisibility(View.GONE);
}
});
mLayoutGalleryInfo.setVisibility(View.GONE);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view_albums);
int colWidth = getResources().getDimensionPixelSize(R.dimen.photo_column_size);
mLayoutManager = new AlbumLayoutManager(this, colWidth);
mRecyclerView.setLayoutManager(mLayoutManager);
setAlbumAdapter();
}
@Override
protected void onResume() {
super.onResume();
if (mRecyclerView != null && mRecyclerView.getAdapter() instanceof PhotoAdapter) {
((PhotoAdapter) mRecyclerView.getAdapter()).update();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
if (mRecyclerView.getAdapter() instanceof PhotoAdapter) {
setAlbumAdapter();
return true;
}
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onAlbumSelected(String id, String albumName) {
getSupportActionBar().setTitle(albumName);
setPhotosAdapter(id, false, false);
}
@Override
public void onPickExternalSelected() {
Intent intent = new Intent(Build.VERSION.SDK_INT >= 19 ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, PICK_EXTERNAL_REQUEST);
}
@Override
public void onPhotoSelected(String photo, final View thumbView) {
Intent data = new Intent();
data.putExtra("uri", photo);
setResult(RESULT_OK, data);
finish();
}
@Override
public void onCameraSelected() {
}
@Override
public void onAlbumsSelected() {
}
@Override
public void onBackPressed() {
if (mRecyclerView.getAdapter() instanceof PhotoAdapter) {
setAlbumAdapter();
return;
}
super.onBackPressed();
}
private void setAlbumAdapter() {
getSupportActionBar().setTitle(R.string.title_albums);
mRecyclerView.setLayoutManager(mLayoutManager);
AlbumAdapter adapter = new AlbumAdapter(this, true);
adapter.setListener(this);
int colWidth = getResources().getDimensionPixelSize(R.dimen.album_column_size);
mLayoutManager.setColumnWidth(colWidth);
mRecyclerView.setAdapter(adapter);
}
private void setPhotosAdapter(String album, boolean showCamera, boolean showAlbums) {
mRecyclerView.setLayoutManager(mLayoutManager);
PhotoAdapter adapter = new PhotoAdapter(this, album, showCamera, showAlbums);
adapter.setListener(this);
int colWidth = getResources().getDimensionPixelSize(R.dimen.photo_column_size);
mLayoutManager.setColumnWidth(colWidth);
mRecyclerView.setAdapter(adapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_EXTERNAL_REQUEST) {
if (resultCode == RESULT_OK && data != null && data.getData() != null) {
onPhotoSelected(data.getData().toString(), null);
}
}
}
}