diff --git a/skunkworks_crow/src/main/java/org/odk/share/injection/config/AppModule.java b/skunkworks_crow/src/main/java/org/odk/share/injection/config/AppModule.java index 7e46fdb9..90b5ddb0 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/injection/config/AppModule.java +++ b/skunkworks_crow/src/main/java/org/odk/share/injection/config/AppModule.java @@ -15,6 +15,7 @@ import org.odk.share.rx.schedulers.SchedulerProvider; import org.odk.share.services.ReceiverService; import org.odk.share.services.SenderService; +import org.odk.share.views.customui.LaunchCollect; import dagger.Module; import dagger.Provides; @@ -67,6 +68,11 @@ TransferDao provideTransferDao(Context context) { return new TransferDao(context); } + @Provides + LaunchCollect provideLaunchCollect(Context context) { + return new LaunchCollect(context); + } + @Provides FormsDao provideFormsDao(Context context) { return new FormsDao(context); diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/customui/LaunchCollect.java b/skunkworks_crow/src/main/java/org/odk/share/views/customui/LaunchCollect.java new file mode 100644 index 00000000..64f70166 --- /dev/null +++ b/skunkworks_crow/src/main/java/org/odk/share/views/customui/LaunchCollect.java @@ -0,0 +1,35 @@ +package org.odk.share.views.customui; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.widget.Toast; + +import org.odk.share.R; + +/** + * @author by Chromicle (ajayprabhakar369@gmail.com) + * @since 1/21/2020 + */ + + +public class LaunchCollect { + private Context context; + + public LaunchCollect(Context context) { + this.context = context; + } + + public void openFormInCollect(long instanceId) { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse("content://org.odk.collect.android.provider.odk.instances/instances/" + instanceId)); + intent.putExtra("formMode", "viewSent"); + if (intent.resolveActivity(context.getPackageManager()) == null) { + Toast.makeText(context, context.getString(R.string.collect_not_installed), Toast.LENGTH_LONG).show(); + } else { + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } + } + +} diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/instance/adapter/InstanceAdapter.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/instance/adapter/InstanceAdapter.java index 9ac3d10e..3e74d0a3 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/instance/adapter/InstanceAdapter.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/instance/adapter/InstanceAdapter.java @@ -8,16 +8,18 @@ import android.widget.CheckBox; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + import org.odk.collect.android.provider.InstanceProviderAPI; import org.odk.share.R; +import org.odk.share.views.customui.LaunchCollect; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedHashSet; import java.util.Locale; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; import timber.log.Timber; @@ -33,6 +35,7 @@ public class InstanceAdapter extends RecyclerView.Adapter selectedInstances; + public InstanceAdapter(Context context, Cursor cursor, OnItemClickListener listener, LinkedHashSet selectedInstances) { this.context = context; @@ -69,8 +72,14 @@ public void onClick(View v) { holder.reviewedForms.setVisibility(View.GONE); holder.unReviewedForms.setVisibility(View.GONE); + holder.itemView.setOnLongClickListener(view -> { + LaunchCollect launchCollect = new LaunchCollect(context); + launchCollect.openFormInCollect(id); + return true; + }); } + public static String getDisplaySubtext(Context context, String state, Date date) { try { if (state == null) { @@ -105,7 +114,6 @@ public int getItemCount() { } - public Cursor getCursor() { return cursor; } @@ -116,9 +124,12 @@ public interface OnItemClickListener { static class InstanceHolder extends RecyclerView.ViewHolder { - @BindView(R.id.tvTitle) public TextView title; - @BindView(R.id.tvSubtitle) public TextView subtitle; - @BindView(R.id.checkbox) public CheckBox checkBox; + @BindView(R.id.tvTitle) + public TextView title; + @BindView(R.id.tvSubtitle) + public TextView subtitle; + @BindView(R.id.checkbox) + public CheckBox checkBox; @BindView(R.id.tvReviewForm) TextView reviewedForms; @BindView(R.id.tvUnReviewForm) diff --git a/skunkworks_crow/src/main/java/org/odk/share/views/ui/review/ReviewFormActivity.java b/skunkworks_crow/src/main/java/org/odk/share/views/ui/review/ReviewFormActivity.java index 97b4fc21..d49fe71a 100644 --- a/skunkworks_crow/src/main/java/org/odk/share/views/ui/review/ReviewFormActivity.java +++ b/skunkworks_crow/src/main/java/org/odk/share/views/ui/review/ReviewFormActivity.java @@ -1,9 +1,7 @@ package org.odk.share.views.ui.review; import android.content.ContentValues; -import android.content.Intent; import android.database.Cursor; -import android.net.Uri; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; @@ -17,6 +15,7 @@ import org.odk.share.R; import org.odk.share.dao.TransferDao; import org.odk.share.dto.TransferInstance; +import org.odk.share.views.customui.LaunchCollect; import org.odk.share.views.ui.common.injectable.InjectableActivity; import javax.inject.Inject; @@ -50,6 +49,9 @@ public class ReviewFormActivity extends InjectableActivity { @Inject TransferDao transferDao; + @Inject + LaunchCollect launchCollect; + public static final String TRANSFER_ID = "transfer_id"; public static final String INSTANCE_ID = "instance_id"; @@ -70,7 +72,7 @@ protected void onCreate(Bundle savedInstanceState) { instanceID = getIntent().getLongExtra(INSTANCE_ID, -1); if (transferID == -1 || instanceID == -1) { - finish(); + finish(); } Cursor cursor = transferDao.getInstanceCursorFromId(transferID); @@ -110,16 +112,6 @@ protected void onResume() { super.onResume(); } - private void launchCollect() { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse("content://org.odk.collect.android.provider.odk.instances/instances/" + instanceID)); - intent.putExtra("formMode", "viewSent"); - if (intent.resolveActivity(getPackageManager()) == null) { - Toast.makeText(this, getString(R.string.collect_not_installed), Toast.LENGTH_LONG).show(); - } else { - startActivity(intent); - } - } @OnClick(R.id.bApprove) public void acceptForm() { @@ -185,6 +177,7 @@ public void viewFormInCollect() { String.valueOf(transferID) }; transferDao.updateInstance(values, where, whereArgs); - launchCollect(); + launchCollect.openFormInCollect(instanceID); } + }