Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for #89 #278

Merged
merged 5 commits into from
Jul 26, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@

<activity android:name=".activity.ImageEditor"/>
<activity android:name=".activity.PreviewActivity"/>
<activity android:name=".activity.RearrangeImages"/>

</application>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1,110 @@
package swati4star.createpdf.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.eftimoff.viewpagertransformers.DepthPageTransformer;

import java.util.ArrayList;
import java.util.Objects;

import butterknife.BindView;
import butterknife.ButterKnife;
import swati4star.createpdf.R;
import swati4star.createpdf.adapter.PreviewAdapter;
import swati4star.createpdf.adapter.PreviewImageOptionsAdapter;
import swati4star.createpdf.model.PreviewImageOptionItem;
import swati4star.createpdf.util.Constants;

import static swati4star.createpdf.util.Constants.PREVIEW_IMAGES;

public class PreviewActivity extends AppCompatActivity {
public class PreviewActivity extends AppCompatActivity implements PreviewImageOptionsAdapter.OnItemClickListener {

@BindView(R.id.recyclerView)
RecyclerView mRecyclerView;

private ArrayList<String> mImagesArrayList;
private static final int INTENT_REQUEST_REARRANGE_IMAGE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preview);

// Extract images uri array from the intent
ButterKnife.bind(this);
// Extract mImagesArrayList uri array from the intent
Intent intent = getIntent();
ArrayList<String> images = intent.getStringArrayListExtra(PREVIEW_IMAGES);
mImagesArrayList = intent.getStringArrayListExtra(PREVIEW_IMAGES);

ViewPager viewPager = findViewById(R.id.viewpager);
viewPager.setAdapter(new PreviewAdapter(this, images ));
viewPager.setAdapter(new PreviewAdapter(this, mImagesArrayList));
viewPager.setPageTransformer(true, new DepthPageTransformer());

Objects.requireNonNull(getSupportActionBar()).hide();
showOptions();
}

private void showOptions() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
mRecyclerView.setLayoutManager(layoutManager);
PreviewImageOptionsAdapter adapter = new PreviewImageOptionsAdapter(this, getOptions(),
getApplicationContext());
mRecyclerView.setAdapter(adapter);
}

private ArrayList<PreviewImageOptionItem> getOptions() {
ArrayList<PreviewImageOptionItem> mOptions = new ArrayList<>();
mOptions.add(new PreviewImageOptionItem(R.drawable.ic_rearrange, getString(R.string.rearrange_text)));
return mOptions;
}

@Override
public void onItemClick(int position) {
switch (position) {
case 0:
reArrangeImages();
break;
}
}

private void reArrangeImages() {
Intent intent = new Intent(this, RearrangeImages.class);
intent.putStringArrayListExtra(PREVIEW_IMAGES, mImagesArrayList);
startActivityForResult(intent, INTENT_REQUEST_REARRANGE_IMAGE);
}

private void passUris() {
Intent returnIntent = new Intent();
returnIntent.putStringArrayListExtra(Constants.RESULT, mImagesArrayList);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case INTENT_REQUEST_REARRANGE_IMAGE:
switch (resultCode) {
case Activity.RESULT_OK:
try {
mImagesArrayList = data.getStringArrayListExtra(Constants.RESULT);

} catch (Exception e) {
e.printStackTrace();
}
}
break;
}
}

@Override
public void onBackPressed() {
passUris();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package swati4star.createpdf.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.Objects;

import butterknife.BindView;
import butterknife.ButterKnife;
import swati4star.createpdf.R;
import swati4star.createpdf.adapter.RearrangeImagesAdapter;
import swati4star.createpdf.util.Constants;

import static swati4star.createpdf.util.Constants.PREVIEW_IMAGES;

public class RearrangeImages extends AppCompatActivity implements RearrangeImagesAdapter.OnClickListener {

@BindView(R.id.recyclerView)
RecyclerView mRecyclerView;

private ArrayList<String> mImages;
private RearrangeImagesAdapter mRearrangeImagesAdapter;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rearrange_images);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
ButterKnife.bind(this);
Intent intent = getIntent();
mImages = intent.getStringArrayListExtra(PREVIEW_IMAGES);
initRecyclerView(mImages);
}

private void initRecyclerView(ArrayList<String> images) {
LinearLayoutManager layoutManager = new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(layoutManager);
mRearrangeImagesAdapter = new RearrangeImagesAdapter(this, images, this);
recyclerView.setAdapter(mRearrangeImagesAdapter);
}

@Override
public void onUpClick(int position) {
mImages.add(position - 1, mImages.remove(position));
mRearrangeImagesAdapter.positionChanged(mImages);
}

@Override
public void onDownClick(int position) {
mImages.add(position + 1, mImages.remove(position));
mRearrangeImagesAdapter.positionChanged(mImages);

}

private void passUris() {
Intent returnIntent = new Intent();
returnIntent.putStringArrayListExtra(Constants.RESULT, mImages);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}

@Override
public void onBackPressed() {
passUris();
super.onBackPressed();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
passUris();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package swati4star.createpdf.adapter;

import android.annotation.SuppressLint;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

import swati4star.createpdf.R;
import swati4star.createpdf.model.PreviewImageOptionItem;


public class PreviewImageOptionsAdapter extends RecyclerView.Adapter<PreviewImageOptionsAdapter.ViewHolder> {
private final ArrayList<PreviewImageOptionItem> mOptions;
private final Context mContext;
private final OnItemClickListener mOnItemClickListener;


public PreviewImageOptionsAdapter(OnItemClickListener onItemClickListener,
ArrayList<PreviewImageOptionItem> optionItems, Context context) {
mOnItemClickListener = onItemClickListener;
mOptions = optionItems;
mContext = context;
}

@NonNull
@Override
public PreviewImageOptionsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_preview_image_options,
parent, false);
return new PreviewImageOptionsAdapter.ViewHolder(view);
}

@SuppressLint("NewApi")
@Override
public void onBindViewHolder(@NonNull PreviewImageOptionsAdapter.ViewHolder holder, int position) {
int imageId = mOptions.get(position).getOptionImageId();
holder.imageView.setImageDrawable(mContext.getDrawable(imageId));
holder.textView.setText(mOptions.get(position).getOptionName());
}

@Override
public int getItemCount() {
return mOptions.size();
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
final ImageView imageView;
final TextView textView;

ViewHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.option_image);
textView = itemView.findViewById(R.id.option_name);
imageView.setOnClickListener(this);
}

@Override
public void onClick(View view) {
mOnItemClickListener.onItemClick(getAdapterPosition());
}
}

public interface OnItemClickListener {
void onItemClick(int position);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package swati4star.createpdf.adapter;

import android.annotation.SuppressLint;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

import java.io.File;
import java.util.ArrayList;

import butterknife.BindView;
import butterknife.ButterKnife;
import swati4star.createpdf.R;


public class RearrangeImagesAdapter extends RecyclerView.Adapter<RearrangeImagesAdapter.ViewHolder> {
private ArrayList<String> mImagesUri;
private final Context mContext;
private final OnClickListener mOnClickListener;


public RearrangeImagesAdapter(OnClickListener onClickListener,
ArrayList<String> uris, Context context) {
mOnClickListener = onClickListener;
mImagesUri = uris;
mContext = context;
}

@NonNull
@Override
public RearrangeImagesAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_rearrange_images, parent, false);
return new RearrangeImagesAdapter.ViewHolder(view);

}

@SuppressLint("NewApi")
@Override
public void onBindViewHolder(@NonNull RearrangeImagesAdapter.ViewHolder holder, int position) {
File imageFile = new File(mImagesUri.get(position));
if (position == 0) {
holder.buttonUp.setVisibility(View.GONE);
} else {
holder.buttonUp.setVisibility(View.VISIBLE);
}
if (position == getItemCount() - 1) {
holder.buttonDown.setVisibility(View.GONE);
} else {
holder.buttonDown.setVisibility(View.VISIBLE);
}
Picasso.with(mContext).load(imageFile).into(holder.imageView);
}

@Override
public int getItemCount() {
return mImagesUri.size();
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.image)
ImageView imageView;
@BindView(R.id.buttonUp)
ImageButton buttonUp;
@BindView(R.id.buttonDown)
ImageButton buttonDown;

ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
buttonDown.setOnClickListener(this);
buttonUp.setOnClickListener(this);
}

@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.buttonUp:
mOnClickListener.onUpClick(getAdapterPosition());
break;
case R.id.buttonDown:
mOnClickListener.onDownClick(getAdapterPosition());
break;
}
}
}

public void positionChanged(ArrayList<String> images) {
mImagesUri = images;
notifyDataSetChanged();
}

public interface OnClickListener {
void onUpClick(int position);

void onDownClick(int position);
}
}
Loading