Skip to content

Commit

Permalink
Implement multi-copy and multi-share
Browse files Browse the repository at this point in the history
  • Loading branch information
TheLastProject committed Apr 18, 2021
1 parent 4566306 commit 6421f09
Show file tree
Hide file tree
Showing 29 changed files with 149 additions and 185 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
Expand All @@ -28,6 +25,10 @@
import java.util.LinkedList;
import java.util.Map;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

/**
* This activity is callable and will allow a user to enter
* barcode data and generate all barcodes possible for
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package protect.card_locker;

import android.database.Cursor;

import androidx.recyclerview.widget.RecyclerView;

public abstract class BaseCursorAdapter<V extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<V>
Expand Down
12 changes: 4 additions & 8 deletions app/src/main/java/protect/card_locker/CardShortcutConfigure.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,18 @@

import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;

import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;

/**
* The configuration screen for creating a shortcut.
*/
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/java/protect/card_locker/DBHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Color;

import com.google.zxing.BarcodeFormat;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Currency;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;

public class DBHelper extends SQLiteOpenHelper
Expand Down
17 changes: 7 additions & 10 deletions app/src/main/java/protect/card_locker/ImportExportActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,6 @@
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;

import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.provider.ContactsContract;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
Expand All @@ -29,7 +20,13 @@
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class ImportExportActivity extends AppCompatActivity
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
Expand Down
31 changes: 25 additions & 6 deletions app/src/main/java/protect/card_locker/ImportURIHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Date;
import java.util.List;

public class ImportURIHelper {
private static final String STORE = DBHelper.LoyaltyCardDbIds.STORE;
Expand All @@ -29,6 +30,7 @@ public class ImportURIHelper {
private final String oldHost;
private final String oldPath;
private final String shareText;
private final String shareMultipleText;

public ImportURIHelper(Context context) {
this.context = context;
Expand All @@ -37,6 +39,7 @@ public ImportURIHelper(Context context) {
oldHost = "brarcher.github.io";
oldPath = "/loyalty-card-locker/share";
shareText = context.getResources().getString(R.string.intent_import_card_from_url_share_text);
shareMultipleText = context.getResources().getString(R.string.intent_import_card_from_url_share_multiple_text);
}

private boolean isImportUri(Uri uri) {
Expand Down Expand Up @@ -126,17 +129,33 @@ protected Uri toUri(LoyaltyCard loyaltyCard) {
return uriBuilder.build();
}

private void startShareIntent(Uri uri) {
public void startShareIntent(List<LoyaltyCard> loyaltyCards) {
int loyaltyCardCount = loyaltyCards.size();

StringBuilder text = new StringBuilder();
if (loyaltyCardCount == 1) {
text.append(shareText);
} else {
text.append(shareMultipleText);
}
text.append("\n\n");

for (int i = 0; i < loyaltyCardCount; i++) {
LoyaltyCard loyaltyCard = loyaltyCards.get(i);

text.append(loyaltyCard.store + ": " + toUri(loyaltyCard));

if (i < (loyaltyCardCount - 1)) {
text.append("\n");
}
}

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareText + "\n" + uri.toString());
sendIntent.putExtra(Intent.EXTRA_TEXT, text.toString());
sendIntent.setType("text/plain");

Intent shareIntent = Intent.createChooser(sendIntent, null);
context.startActivity(shareIntent);
}

public void startShareIntent(LoyaltyCard loyaltyCard) {
startShareIntent(toUri(loyaltyCard));
}
}
24 changes: 10 additions & 14 deletions app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,17 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;

import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.DialogFragment;

import android.os.LocaleList;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
Expand All @@ -42,6 +29,10 @@
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayout;
import com.google.zxing.BarcodeFormat;
import com.jaredrummler.android.colorpicker.ColorPickerDialog;
Expand All @@ -50,7 +41,6 @@
import java.io.InvalidObjectException;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
Expand All @@ -60,6 +50,12 @@
import java.util.List;
import java.util.Locale;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.DialogFragment;

public class LoyaltyCardEditActivity extends AppCompatActivity
{
private static final String TAG = "Catima";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package protect.card_locker;

import android.app.Application;
import androidx.appcompat.app.AppCompatDelegate;

import androidx.appcompat.app.AppCompatDelegate;
import protect.card_locker.preferences.Settings;

public class LoyaltyCardLockerApplication extends Application {
Expand Down
23 changes: 10 additions & 13 deletions app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,12 @@
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Guideline;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.widget.TextViewCompat;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.Toolbar;

import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
Expand All @@ -41,8 +29,17 @@

import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.List;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.Guideline;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.widget.TextViewCompat;
import protect.card_locker.preferences.Settings;

public class LoyaltyCardViewActivity extends AppCompatActivity
Expand Down Expand Up @@ -491,7 +488,7 @@ public boolean onOptionsItemSelected(MenuItem item)
break;

case R.id.action_share:
importURIHelper.startShareIntent(loyaltyCard);
importURIHelper.startShareIntent(Arrays.asList(loyaltyCard));
return true;

case R.id.action_lock_unlock:
Expand Down
42 changes: 22 additions & 20 deletions app/src/main/java/protect/card_locker/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,27 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;

import java.util.List;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import java.util.List;

import protect.card_locker.preferences.SettingsActivity;

public class MainActivity extends AppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener, GestureDetector.OnGestureListener
Expand Down Expand Up @@ -80,12 +76,11 @@ public boolean onActionItemClicked(ActionMode inputMode, MenuItem inputItem)
} else {
StringBuilder cardIds = new StringBuilder();


for (int i = 0; i < cardCount - 1; i++) {
for (int i = 0; i < cardCount; i++) {
LoyaltyCard loyaltyCard = mAdapter.getSelectedItems().get(i);

cardIds.append(loyaltyCard.store + ": " + loyaltyCard.cardId);
if (i != (cardCount - 1)) {
if (i < (cardCount - 1)) {
cardIds.append("\n");
}
}
Expand All @@ -101,8 +96,8 @@ public boolean onActionItemClicked(ActionMode inputMode, MenuItem inputItem)
}
else if (inputItem.getItemId() == R.id.action_share)
{
// final ImportURIHelper importURIHelper = new ImportURIHelper(MainActivity.this);
// importURIHelper.startShareIntent(mCard);
final ImportURIHelper importURIHelper = new ImportURIHelper(MainActivity.this);
importURIHelper.startShareIntent(mAdapter.getSelectedItems());
inputMode.finish();
return true;
}
Expand Down Expand Up @@ -618,13 +613,20 @@ private void toggleSelection(int inputPosition)
mAdapter.toggleSelection(inputPosition);
int count = mAdapter.getSelectedItemCount();

if (count == 0)
{
if (count == 0) {
mCurrentActionMode.finish();
} else
{
} else {
mCurrentActionMode.setTitle("Selected: " + count + " Cards");

MenuItem editItem = mCurrentActionMode.getMenu().findItem(R.id.action_edit);
if (count == 1) {
editItem.setVisible(true);
editItem.setEnabled(true);
} else {
editItem.setVisible(false);
editItem.setEnabled(false);
}

mCurrentActionMode.invalidate();
}
}
Expand Down
Loading

0 comments on commit 6421f09

Please sign in to comment.