diff --git a/app/build.gradle b/app/build.gradle
index 4a5447f..e9899c5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,7 +11,7 @@ android {
minSdkVersion 16
targetSdkVersion 34
versionCode 2
- versionName "1.1"
+ versionName "2"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
multiDexEnabled = true
vectorDrawables.useSupportLibrary = true
@@ -58,7 +58,10 @@ dependencies {
implementation files('libs/poi-3.12-android-a.jar')
implementation files('libs/poi-ooxml-schemas-3.12-20150511-a.jar')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation 'com.google.android.material:material:1.9.0'
+ implementation 'com.github.daniel-stoneuk:material-about-library:3.1.2'
}
repositories {
mavenCentral()
+ maven { url 'https://jitpack.io' }
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b290ec8..444bbcc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,31 +12,38 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
+ android:exported="true"
+ android:windowSoftInputMode="adjustPan">
+
-
-
-
-
-
-
-
-
-
+ android:name=".CompareActivity"
+ android:exported="true" />
+
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/java/org/phenoapps/verify/AboutActivity.java b/app/src/main/java/org/phenoapps/verify/AboutActivity.java
new file mode 100644
index 0000000..6f05bba
--- /dev/null
+++ b/app/src/main/java/org/phenoapps/verify/AboutActivity.java
@@ -0,0 +1,83 @@
+package org.phenoapps.verify;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.swiperefreshlayout.widget.CircularProgressDrawable;
+
+import android.content.Context;
+import android.net.Uri;
+import android.os.Bundle;
+
+import com.danielstone.materialaboutlibrary.ConvenienceBuilder;
+import com.danielstone.materialaboutlibrary.MaterialAboutActivity;
+import com.danielstone.materialaboutlibrary.items.MaterialAboutActionItem;
+import com.danielstone.materialaboutlibrary.items.MaterialAboutTitleItem;
+import com.danielstone.materialaboutlibrary.model.MaterialAboutCard;
+import com.danielstone.materialaboutlibrary.model.MaterialAboutList;
+
+public class AboutActivity extends MaterialAboutActivity {
+
+
+ private CircularProgressDrawable progress;
+ private MaterialAboutActionItem updateCheckItem;
+
+
+
+
+ @NonNull
+ @Override
+ protected MaterialAboutList getMaterialAboutList(@NonNull Context context) {
+
+ MaterialAboutCard.Builder appCardBuilder = new MaterialAboutCard.Builder();
+
+ appCardBuilder.addItem(new MaterialAboutTitleItem.Builder().text("CheckList").icon(R.mipmap.ic_launcher).build());
+
+ appCardBuilder.addItem(ConvenienceBuilder.createVersionActionItem(this,
+ getResources().getDrawable(R.drawable.ic_about),
+ "Version",
+ false));
+
+ MaterialAboutCard.Builder authorCardBuilder = new MaterialAboutCard.Builder();
+ authorCardBuilder.title("Developers");
+
+ authorCardBuilder.addItem(new MaterialAboutActionItem.Builder()
+ .text(getString(R.string.dev_chaney))
+ .subText("\t\t"+getString(R.string.ksu))
+ .icon(R.drawable.ic_person_profile)
+ .build());
+ authorCardBuilder.addItem(new MaterialAboutActionItem.Builder()
+ .text(getString(R.string.dev_trevor))
+ .subText("\t\t"+getString(R.string.ksu)+"\n\t\t"+getString(R.string.dev_trevor_email))
+ .icon(R.drawable.ic_person_profile)
+ .build());
+ authorCardBuilder.addItem(new MaterialAboutActionItem.Builder()
+ .text(getString(R.string.dev_jesse))
+ .subText("\t\t"+getString(R.string.ksu)+"\n\t\t"+getString(R.string.dev_jesse_email)+
+ "\n\t\t"+"http://wheatgenetics.org")
+ .icon(R.drawable.ic_person_profile)
+ .build());
+
+ MaterialAboutCard.Builder descriptionCard = new MaterialAboutCard.Builder();
+ descriptionCard.title("Description");
+ descriptionCard.addItem(new MaterialAboutActionItem.Builder()
+ .text("Verify is an Android application that imports a list of entries, scans barcodes, and " +
+ "identifies whether it exists in the list of entries along with audio/visual notifications.").build());
+
+ return new MaterialAboutList(appCardBuilder.build(),authorCardBuilder.build(), descriptionCard.build());
+ }
+
+ @Nullable
+ @Override
+ protected CharSequence getActivityTitle() {
+ return "About";
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ progress = new CircularProgressDrawable(this);
+ progress.setStyle(CircularProgressDrawable.DEFAULT);
+ progress.start();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/phenoapps/verify/CompareActivity.kt b/app/src/main/java/org/phenoapps/verify/CompareActivity.kt
index 1a066d8..219f5e8 100644
--- a/app/src/main/java/org/phenoapps/verify/CompareActivity.kt
+++ b/app/src/main/java/org/phenoapps/verify/CompareActivity.kt
@@ -76,7 +76,7 @@ class CompareActivity : AppCompatActivity() {
setView(view)
- setTitle("Choose compare mode:")
+ setTitle(getString(R.string.compare_activity_title))
setPositiveButton("OK") { _, _ ->
when (radioGroup.checkedRadioButtonId) {
@@ -145,7 +145,7 @@ class CompareActivity : AppCompatActivity() {
barcodeScannerView.decodeContinuous(callback)
if (supportActionBar != null) {
- supportActionBar?.title = "Compare Barcodes"
+ title = getString(R.string.compare_barcodes)
supportActionBar?.themedContext
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setHomeButtonEnabled(true)
@@ -192,6 +192,8 @@ class CompareActivity : AppCompatActivity() {
barcodeScannerView.pause()
}
+
+
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event)
diff --git a/app/src/main/java/org/phenoapps/verify/IntroActivity.java b/app/src/main/java/org/phenoapps/verify/IntroActivity.java
index e2be2a5..612caab 100644
--- a/app/src/main/java/org/phenoapps/verify/IntroActivity.java
+++ b/app/src/main/java/org/phenoapps/verify/IntroActivity.java
@@ -18,9 +18,23 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
showStatusBar(false);
// Add slides
- addSlide(AppIntroFragment.newInstance(getString(org.phenoapps.verify.R.string.intro_title_1), getString(org.phenoapps.verify.R.string.intro_body_1), org.phenoapps.verify.R.drawable.intro_launcher, Color.parseColor("#A84937")));
- addSlide(AppIntroFragment.newInstance(getString(org.phenoapps.verify.R.string.intro_title_2), getString(org.phenoapps.verify.R.string.intro_body_2), org.phenoapps.verify.R.drawable.intro_folder, Color.parseColor("#285E3D")));
- addSlide(AppIntroFragment.newInstance(getString(org.phenoapps.verify.R.string.intro_title_3), getString(org.phenoapps.verify.R.string.intro_body_3), org.phenoapps.verify.R.drawable.intro_list, Color.parseColor("#0C6291")));
+ addSlide(AppIntroFragment.newInstance(
+ getString(R.string.intro_title_1),
+ getString(R.string.intro_body_1),
+ R.drawable.intro_launcher,
+ getResources().getColor(R.color.intro_slide_color_1)));
+
+ addSlide(AppIntroFragment.newInstance(
+ getString(R.string.intro_title_2),
+ getString(R.string.intro_body_2),
+ R.drawable.intro_folder,
+ getResources().getColor(R.color.intro_slide_color_2)));
+
+ addSlide(AppIntroFragment.newInstance(
+ getString(R.string.intro_title_3),
+ getString(R.string.intro_body_3),
+ R.drawable.intro_list,
+ getResources().getColor(R.color.intro_slide_color_3)));
// Hide Skip/Done button.
showSkipButton(false);
diff --git a/app/src/main/java/org/phenoapps/verify/LoaderDBActivity.java b/app/src/main/java/org/phenoapps/verify/LoaderDBActivity.java
index 249f417..4256957 100644
--- a/app/src/main/java/org/phenoapps/verify/LoaderDBActivity.java
+++ b/app/src/main/java/org/phenoapps/verify/LoaderDBActivity.java
@@ -6,9 +6,13 @@
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.Bundle;
+
+import androidx.appcompat.widget.ActionMenuView;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
@@ -63,6 +67,19 @@ public class LoaderDBActivity extends AppCompatActivity {
private HashSet mDefaultCols;
private IdEntryDbHelper mDbHelper;
+ final String fileExtXlsx = getString(R.string.file_extension_xlsx);
+ final String fileExtXls = getString(R.string.file_extension_xls);
+ final String fileExtCsv = getString(R.string.file_extension_csv);
+ final String fileExtTsv = getString(R.string.file_extension_tsv);
+ final String fileExtTxt = getString(R.string.file_extension_txt);
+ final String tableName = getString(R.string.db_table_verify);
+ final String createTableCommand = getString(R.string.db_create_table_verify);
+ final String colDate = getString(R.string.db_column_date);
+ final String colUser = getString(R.string.db_column_user);
+ final String colNote = getString(R.string.db_column_note);
+ final String colScanCount = getString(R.string.db_column_scan_count);
+ final String colColor = getString(R.string.db_column_color);
+ final String rowErrorLog = getString(R.string.row_error_log);
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -86,17 +103,17 @@ protected void onCreate(Bundle savedInstanceState) {
//default column names
mDefaultCols = new HashSet<>(5);
mDefaultCols.add("date");
- mDefaultCols.add("color");
- mDefaultCols.add("scan_count");
- mDefaultCols.add("user");
- mDefaultCols.add("note");
+ mDefaultCols.add(getString(R.string.col_color));
+ mDefaultCols.add(getString(R.string.col_scan_count));
+ mDefaultCols.add(getString(R.string.col_user));
+ mDefaultCols.add(getString(R.string.col_note));
initializeUI();
mFileUri = getIntent().getData();
- if (mFileUri == null ){
- Toast.makeText(this, "There was a problem reading this file", Toast.LENGTH_LONG).show();
+ if (mFileUri == null ) {
+ Toast.makeText(this, getString(R.string.problem_reading_file), Toast.LENGTH_LONG).show();
return;
}
@@ -109,7 +126,7 @@ protected void onCreate(Bundle savedInstanceState) {
//if unsupported file type, start delimiter tutorial
if (mDelimiter == null || mHeader == null) {
- Toast.makeText(this, "There was a problem reading this file.", Toast.LENGTH_LONG).show();
+ Toast.makeText(this, getString(R.string.problem_reading_file_general), Toast.LENGTH_LONG).show();
finish();
/* if (mHeader == null) {
tutorialText.setText("Error reading file.");
@@ -135,7 +152,7 @@ private void parseHeaders(Uri data) {
int lastDot = mFilePath.lastIndexOf("."); // changed from mFileUri to mFilePath due to the files in download folder have URI without extension
if (lastDot == -1) {
- Toast.makeText(this, "Imported file must have an extension. (e.g: .csv, .tsv)", Toast.LENGTH_LONG).show();
+ Toast.makeText(this, getString(R.string.must_have_extension), Toast.LENGTH_LONG).show();
finish();
}
@@ -146,7 +163,7 @@ private void parseHeaders(Uri data) {
//xls library support
if (mCurrentWorkbook != null) mCurrentWorkbook.close();
- if (mFileExtension.equals("xlsx") || mFileExtension.equals("xls")) {
+ if (mFileExtension.equals(fileExtXlsx) || mFileExtension.equals(fileExtXls)) {
mCurrentWorkbook = WorkbookFactory.create(new File(mFilePath));
final int numSheets = mCurrentWorkbook.getNumberOfSheets();
@@ -166,9 +183,9 @@ private void parseHeaders(Uri data) {
}
} else {
//plain text file support
- if (mFileExtension.equals("csv")) { //files ending in .csv
+ if (mFileExtension.equals(fileExtCsv)) { //files ending in .csv
mDelimiter = ",";
- } else if (mFileExtension.equals("tsv") || mFileExtension.equals("txt")) { //files ending in .txt
+ } else if (mFileExtension.equals(fileExtTsv) || mFileExtension.equals(fileExtTxt)) { //files ending in .txt
mDelimiter = "\t";
} else
mDelimiter = null; //non-supported file type, display header for user to choose delimiter
@@ -298,11 +315,11 @@ private synchronized void insertColumns() {
final SQLiteDatabase db = mDbHelper.getWritableDatabase();
- db.execSQL("DROP TABLE IF EXISTS VERIFY");
+ db.execSQL("DROP TABLE IF EXISTS " + tableName);
final StringBuilder dbExecCreate = new StringBuilder(32);
- dbExecCreate.append("CREATE TABLE VERIFY(");
+ dbExecCreate.append(createTableCommand);
dbExecCreate.append(mIdHeader);
dbExecCreate.append(" TEXT PRIMARY KEY");
@@ -311,11 +328,11 @@ private synchronized void insertColumns() {
dbExecCreate.append(mPairCol);
dbExecCreate.append(" TEXT");
}
- dbExecCreate.append(", date DATE");
- dbExecCreate.append(", user TEXT");
- dbExecCreate.append(", note TEXT");
- dbExecCreate.append(", scan_count INT DEFAULT 0");
- dbExecCreate.append(", color INT");
+ dbExecCreate.append(", ").append(colDate);
+ dbExecCreate.append(", ").append(colUser);
+ dbExecCreate.append(", ").append(colNote);
+ dbExecCreate.append(", ").append(colScanCount);
+ dbExecCreate.append(", ").append(colColor);
final String[] cols = displayCols.toArray(new String[] {});
final int colSize = cols.length;
@@ -336,9 +353,9 @@ private synchronized void insertColumns() {
}
db.close();
- if (mFileExtension.equals("xls")) {
+ if (mFileExtension.equals(getString(R.string.file_extension_xls))) {
parseAndInsertXLS();
- } else if (mFileExtension.equals("xlsx")) {
+ } else if (mFileExtension.equals(getString(R.string.file_extension_xlsx))) {
parseAndInsertXLS();
} else {
parseAndInsertCSV();
@@ -375,7 +392,7 @@ private void parseAndInsertCSV() {
}
long newRowId = db.insert("VERIFY", null, entry);
entry.clear();
- } else Log.d("ROW ERROR", temp);
+ } else Log.d(getString(R.string.log_row_error), temp);
}
db.setTransactionSuccessful();
db.endTransaction();
@@ -489,7 +506,7 @@ private void displayHeaderList() {
if (mHeader == null) {
headerList.setAdapter(new ArrayAdapter(this, org.phenoapps.verify.R.layout.row));
- tutorialText.setText("Error reading file.");
+ tutorialText.setText(getString(R.string.error_reading_file));
return;
}
@@ -503,7 +520,7 @@ private void displayHeaderList() {
headerList.setAdapter(idAdapter);
} else {
headerList.setAdapter(new ArrayAdapter(this, org.phenoapps.verify.R.layout.row));
- tutorialText.setText("Error reading file.");
+ tutorialText.setText(getString(R.string.error_reading_file));
}
}
@@ -514,6 +531,26 @@ protected void onSaveInstanceState(Bundle outState) {
if (mFileUri != null)
outState.putString(VerifyConstants.CSV_URI, mFileUri.toString());
}
+ @Override
+ final public boolean onCreateOptionsMenu(Menu m) {
+
+ final MenuInflater inflater = getMenuInflater();
+ inflater.inflate(org.phenoapps.verify.R.menu.activity_main_toolbar, m);
+
+ ActionMenuView bottomToolBar = (ActionMenuView) findViewById(R.id.bottom_toolbar);
+ Menu bottomMenu = bottomToolBar.getMenu();
+ inflater.inflate(R.menu.activity_main_bottom_toolbar, bottomMenu);
+
+ for (int i = 0; i < bottomMenu.size(); i++) {
+ bottomMenu.getItem(i).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ return onOptionsItemSelected(item);
+ }
+ });
+ }
+ return true;
+ }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
diff --git a/app/src/main/java/org/phenoapps/verify/MainActivity.java b/app/src/main/java/org/phenoapps/verify/MainActivity.java
index c9d424b..c63ede2 100644
--- a/app/src/main/java/org/phenoapps/verify/MainActivity.java
+++ b/app/src/main/java/org/phenoapps/verify/MainActivity.java
@@ -19,6 +19,9 @@
import androidx.annotation.NonNull;
import com.google.android.material.navigation.NavigationView;
+
+import androidx.appcompat.widget.ActionMenuView;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
@@ -34,6 +37,7 @@
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView;
import android.widget.AdapterView;
@@ -72,9 +76,6 @@ public class MainActivity extends AppCompatActivity {
private SparseArray mIds;
- //Verify UI variables
- private ActionBarDrawerToggle mDrawerToggle;
-
//global variable to track matching order
private int mMatchingOrder;
@@ -86,6 +87,8 @@ public class MainActivity extends AppCompatActivity {
private String mFileName = "";
+ private Toolbar navigationToolBar;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -97,29 +100,29 @@ protected void onCreate(Bundle savedInstanceState) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
- final View auxInfo = findViewById(R.id.auxScrollView);
- final View auxValue = findViewById(R.id.auxValueView);
+final View auxInfo = findViewById(R.id.auxScrollView);
+final View auxValue = findViewById(R.id.auxValueView);
if (sharedPref.getBoolean(SettingsActivity.AUX_INFO, false)) {
- auxInfo.setVisibility(View.VISIBLE);
- auxValue.setVisibility(View.VISIBLE);
+auxInfo.setVisibility(View.VISIBLE);
+auxValue.setVisibility(View.VISIBLE);
} else {
- auxInfo.setVisibility(View.GONE);
- auxValue.setVisibility(View.GONE);
- }
+auxInfo.setVisibility(View.GONE);
+auxValue.setVisibility(View.GONE);
+}
mPrefListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
- if (sharedPreferences.getBoolean(SettingsActivity.AUX_INFO, false)) {
- auxInfo.setVisibility(View.VISIBLE);
- auxValue.setVisibility(View.VISIBLE);
- } else {
- auxInfo.setVisibility(View.GONE);
- auxValue.setVisibility(View.GONE);
- }
+if (sharedPreferences.getBoolean(SettingsActivity.AUX_INFO, false)) {
+auxInfo.setVisibility(View.VISIBLE);
+auxValue.setVisibility(View.VISIBLE);
+} else {
+auxInfo.setVisibility(View.GONE);
+auxValue.setVisibility(View.GONE);
+}
}
};
@@ -208,18 +211,11 @@ private void prepareStatements() {
private void initializeUIVariables() {
if (getSupportActionBar() != null){
- getSupportActionBar().setTitle(null);
+ getSupportActionBar().setTitle("CheckList");
getSupportActionBar().getThemedContext();
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
- final NavigationView nvDrawer = (NavigationView) findViewById(R.id.nvView);
-
- // Setup drawer view
- setupDrawerContent(nvDrawer);
- setupDrawer();
-
final EditText scannerTextView = ((EditText) findViewById(R.id.scannerTextView));
scannerTextView.setSelectAllOnFocus(true);
scannerTextView.setOnKeyListener(new View.OnKeyListener() {
@@ -237,25 +233,25 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
ListView idTable = ((ListView) findViewById(R.id.idTable));
idTable.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
- idTable.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+idTable.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
- scannerTextView.setText(((TextView) view).getText().toString());
+scannerTextView.setText(((TextView) view).getText().toString());
scannerTextView.setSelection(scannerTextView.getText().length());
scannerTextView.requestFocus();
scannerTextView.selectAll();
checkScannedItem();
- }
+ }
});
- idTable.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
- //get app settings
- insertNoteIntoDb(((TextView) view).getText().toString());
- return true;
- }
+idTable.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
+@Override
+public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
+//get app settings
+insertNoteIntoDb(((TextView) view).getText().toString());
+return true;
+}
});
TextView valueView = (TextView) findViewById(R.id.valueView);
@@ -273,7 +269,7 @@ private synchronized void checkScannedItem() {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
int scanMode = Integer.valueOf(sharedPref.getString(SettingsActivity.SCAN_MODE_LIST, "-1"));
- boolean displayAux = sharedPref.getBoolean(SettingsActivity.AUX_INFO, true);
+boolean displayAux = sharedPref.getBoolean(SettingsActivity.AUX_INFO, true);
String scannedId = ((EditText) findViewById(org.phenoapps.verify.R.id.scannerTextView))
.getText().toString();
@@ -318,10 +314,10 @@ private synchronized void checkScannedItem() {
}
}
}
- cursor.close();
- ((TextView) findViewById(org.phenoapps.verify.R.id.valueView)).setText(values.toString());
- ((TextView) findViewById(R.id.auxValueView)).setText(auxValues.toString());
- ((EditText) findViewById(R.id.scannerTextView)).setText("");
+ cursor.close();
+((TextView) findViewById(org.phenoapps.verify.R.id.valueView)).setText(values.toString());
+((TextView) findViewById(R.id.auxValueView)).setText(auxValues.toString());
+((EditText) findViewById(R.id.scannerTextView)).setText("");
} else {
if (scanMode != 2) {
ringNotification(false);
@@ -349,7 +345,7 @@ private Boolean checkIdExists(String id) {
private synchronized void insertNoteIntoDb(@NonNull final String id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Enter a note for the given item.");
+ builder.setTitle(getString(R.string.enter_note));
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
@@ -449,10 +445,9 @@ private synchronized void exertModeFunction(@NonNull String id) {
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault());
if (sqlUpdateUserAndDate != null) { //no db yet
- String firstName = sharedPref.getString(SettingsActivity.FIRST_NAME, "");
- String lastName = sharedPref.getString(SettingsActivity.LAST_NAME, "");
+ String name = sharedPref.getString(SettingsActivity.NAME, "");
sqlUpdateUserAndDate.bindAllArgsAsStrings(new String[]{
- firstName + " " + lastName,
+ name,
sdf.format(c.getTime()),
id
});
@@ -548,7 +543,7 @@ private void loadBarcodes() {
private synchronized void askUserExportFileName() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Choose name for exported file.");
+ builder.setTitle(getString(R.string.choose_export_file_name));
final EditText input = new EditText(this);
final Calendar c = Calendar.getInstance();
@@ -808,6 +803,19 @@ final public boolean onCreateOptionsMenu(Menu m) {
final MenuInflater inflater = getMenuInflater();
inflater.inflate(org.phenoapps.verify.R.menu.activity_main_toolbar, m);
+
+ ActionMenuView bottomToolBar = (ActionMenuView) findViewById(R.id.bottom_toolbar);
+ Menu bottomMenu = bottomToolBar.getMenu();
+ inflater.inflate(R.menu.activity_main_bottom_toolbar, bottomMenu);
+
+ for (int i = 0; i < bottomMenu.size(); i++) {
+ bottomMenu.getItem(i).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ return onOptionsItemSelected(item);
+ }
+ });
+ }
return true;
}
@@ -815,25 +823,81 @@ final public boolean onCreateOptionsMenu(Menu m) {
final public boolean onOptionsItemSelected(MenuItem item) {
DrawerLayout dl = (DrawerLayout) findViewById(R.id.drawer_layout);
int actionCamera = R.id.action_camera;
- int actionCompare = R.id.action_compare;
- if (mDrawerToggle.onOptionsItemSelected(item)) {
- return true;
- }
+ int actionImport = R.id.action_import;
+ int actionHome = R.id.Home;
+ int actionCompare = R.id.Compare;
+ int actionSettings = R.id.Settings;
+
+ if (item.getItemId() == actionImport){
+ final SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
+ final int scanMode = Integer.valueOf(sharedPref.getString(SettingsActivity.SCAN_MODE_LIST, "-1"));
+ final Intent i;
+ File verifyDirectory = new File(getExternalFilesDir(null), "/Verify");
+
+ File[] files = verifyDirectory.listFiles();
+
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(getString(R.string.select_files_from));
+ builder.setPositiveButton("Storage",
+ new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog, int id)
+ {
+ Intent i;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
+ i = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+ }else{
+ i = new Intent(Intent.ACTION_GET_CONTENT);
+ }
+ i.setType("*/*");
+ startActivityForResult(Intent.createChooser(i, "Choose file to import."), VerifyConstants.DEFAULT_CONTENT_REQ);
+ }
+ });
+
+ builder.setNegativeButton(getString(R.string.verify_directory),
+ new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog, int id)
+ {
- if (item.getItemId() == android.R.id.home){
+ AlertDialog.Builder fileBuilder = new AlertDialog.Builder(MainActivity.this);
+ fileBuilder.setTitle("Select the sample file");
+ final int[] checkedItem = {-1};
+ String[] listItems = verifyDirectory.list();
+ fileBuilder.setSingleChoiceItems(listItems, checkedItem[0],(fileDialog, which) -> {
+ checkedItem[0] = which;
+
+ Intent i = new Intent(MainActivity.this, LoaderDBActivity.class);
+ i.setData(Uri.fromFile(files[which]));
+ startActivityForResult(i, VerifyConstants.LOADER_INTENT_REQ);
+ fileDialog.dismiss();
+ });
+
+ fileBuilder.show();
+
+ }
+ });
+ builder.show();
+ } else if (item.getItemId() == android.R.id.home){
dl.openDrawer(GravityCompat.START);
}
- else if(item.getItemId() == actionCamera){
- final Intent cameraIntent = new Intent(this, ScanActivity.class);
- startActivityForResult(cameraIntent, VerifyConstants.CAMERA_INTENT_REQ);
+ else if (item.getItemId() == actionHome){
+
}
- else if(item.getItemId() == actionCompare){
+ else if ( item.getItemId() == actionCompare) {
final Intent compareIntent = new Intent(MainActivity.this, CompareActivity.class);
runOnUiThread(new Runnable() {
@Override public void run() {
startActivity(compareIntent);
}
});
+ } else if (item.getItemId() == actionSettings) {
+ final Intent settingsIntent = new Intent(this, SettingsActivity.class);
+ startActivityForResult(settingsIntent, VerifyConstants.SETTINGS_INTENT_REQ);
+ } else if(item.getItemId() == actionCamera){
+ final Intent cameraIntent = new Intent(this, ScanActivity.class);
+ startActivityForResult(cameraIntent, VerifyConstants.CAMERA_INTENT_REQ);
}
else{
return super.onOptionsItemSelected(item);
@@ -912,139 +976,31 @@ final protected void onActivityResult(int requestCode, int resultCode, Intent in
private void buildListView() {
ListView idTable = (ListView) findViewById(org.phenoapps.verify.R.id.idTable);
- ArrayAdapter idAdapter =
- new ArrayAdapter<>(this, org.phenoapps.verify.R.layout.row);
+ArrayAdapter idAdapter =
+new ArrayAdapter<>(this, org.phenoapps.verify.R.layout.row);
int size = mIds.size();
for (int i = 0; i < size; i++) {
- idAdapter.add(this.mIds.get(this.mIds.keyAt(i)));
+idAdapter.add(this.mIds.get(this.mIds.keyAt(i)));
}
- idTable.setAdapter(idAdapter);
+idTable.setAdapter(idAdapter);
}
private void clearListView() {
ListView idTable = (ListView) findViewById(org.phenoapps.verify.R.id.idTable);
- final ArrayAdapter adapter =
- new ArrayAdapter<>(this, org.phenoapps.verify.R.layout.row);
+final ArrayAdapter adapter =
+new ArrayAdapter<>(this, org.phenoapps.verify.R.layout.row);
idTable.setAdapter(adapter);
- adapter.notifyDataSetChanged();
- }
-
- private void setupDrawer() {
-
- DrawerLayout dl = (DrawerLayout) findViewById(org.phenoapps.verify.R.id.drawer_layout);
- mDrawerToggle = new ActionBarDrawerToggle(this, dl,
- org.phenoapps.verify.R.string.drawer_open, org.phenoapps.verify.R.string.drawer_close) {
-
- public void onDrawerOpened(View drawerView) {
- View view = MainActivity.this.getCurrentFocus();
- if (view != null) {
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- }
- }
-
- public void onDrawerClosed(View view) {
- }
-
- };
-
- mDrawerToggle.setDrawerIndicatorEnabled(true);
- dl.addDrawerListener(mDrawerToggle);
- }
-
- private void setupDrawerContent(NavigationView navigationView) {
- navigationView.setNavigationItemSelectedListener(
- new NavigationView.OnNavigationItemSelectedListener() {
- @Override
- public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
- selectDrawerItem(menuItem);
- return true;
- }
- });
- }
-
- private void selectDrawerItem(MenuItem menuItem) {
- int itemId = menuItem.getItemId();
- // constants like id in R class are no longer final, thus can't use switch here
-
- if (itemId == R.id.nav_import){
- final SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
- final int scanMode = Integer.valueOf(sharedPref.getString(SettingsActivity.SCAN_MODE_LIST, "-1"));
- final Intent i;
- File verifyDirectory = new File(getExternalFilesDir(null), "/Verify");
-
- File[] files = verifyDirectory.listFiles();
-
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Select files from?");
- builder.setPositiveButton("Storage",
- new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog, int id)
- {
- Intent i;
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
- i = new Intent(Intent.ACTION_OPEN_DOCUMENT);
- }else{
- i = new Intent(Intent.ACTION_GET_CONTENT);
- }
- i.setType("*/*");
- startActivityForResult(Intent.createChooser(i, "Choose file to import."), VerifyConstants.DEFAULT_CONTENT_REQ);
- }
- });
-
- builder.setNegativeButton("Verify Directory",
- new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog, int id)
- {
-
- AlertDialog.Builder fileBuilder = new AlertDialog.Builder(MainActivity.this);
- fileBuilder.setTitle("Select the sample file");
- final int[] checkedItem = {-1};
- String[] listItems = verifyDirectory.list();
- fileBuilder.setSingleChoiceItems(listItems, checkedItem[0],(fileDialog, which) -> {
- checkedItem[0] = which;
-
- Intent i = new Intent(MainActivity.this, LoaderDBActivity.class);
- i.setData(Uri.fromFile(files[which]));
- startActivityForResult(i, VerifyConstants.LOADER_INTENT_REQ);
- fileDialog.dismiss();
- });
-
- fileBuilder.show();
-
- }
- });
- builder.show();
- } else if (itemId == R.id.nav_settings) {
- final Intent settingsIntent = new Intent(this, SettingsActivity.class);
- startActivityForResult(settingsIntent, VerifyConstants.SETTINGS_INTENT_REQ);
- } else if (itemId == R.id.nav_export) {
- askUserExportFileName();
- } else if (itemId == R.id.nav_about) {
- showAboutDialog();
- } else if (itemId == R.id.nav_intro) {
- final Intent intro_intent = new Intent(MainActivity.this, IntroActivity.class);
- runOnUiThread(new Runnable() {
- @Override public void run() {
- startActivity(intro_intent);
- }
- });
- }
- DrawerLayout dl = (DrawerLayout) findViewById(org.phenoapps.verify.R.id.drawer_layout);
- dl.closeDrawers();
+adapter.notifyDataSetChanged();
}
private void showPairDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Pair column selected, would you like to switch to Pair mode?");
+ builder.setTitle(getString(R.string.pair_mode_prompt));
- builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
+ builder.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
@@ -1055,7 +1011,7 @@ public void onClick(DialogInterface dialog, int which) {
}
});
- builder.setNegativeButton("No thanks", new DialogInterface.OnClickListener() {
+ builder.setNegativeButton(getString(R.string.no_thanks), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
@@ -1065,73 +1021,14 @@ public void onClick(DialogInterface dialogInterface, int i) {
builder.show();
}
- private void showAboutDialog()
- {
- android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
- {
- android.view.View personView = this.getLayoutInflater().inflate(
- org.phenoapps.verify.R.layout.about, new android.widget.LinearLayout(this),
- false);
-
- {
- assert personView != null;
- android.widget.TextView versionTextView = (android.widget.TextView)
- personView.findViewById(org.phenoapps.verify.R.id.tvVersion);
- try
- {
- android.content.pm.PackageInfo packageInfo =
- this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
- assert packageInfo != null;
- assert versionTextView != null;
- versionTextView.setText(this.getResources().getString(
- org.phenoapps.verify.R.string.versiontitle) +
- ' ' + packageInfo.versionName);
- }
- catch (android.content.pm.PackageManager.NameNotFoundException e)
- { e.printStackTrace(); }
- versionTextView.setOnClickListener(new android.view.View.OnClickListener()
- {
- @java.lang.Override
- public void onClick(android.view.View v)
- { MainActivity.this.showChangeLog(); }
- });
- }
-
- builder.setCancelable(true);
- builder.setTitle (this.getResources().getString(
- org.phenoapps.verify.R.string.about));
- builder.setView(personView);
- }
-
- builder.setNegativeButton(
- this.getResources().getString(org.phenoapps.verify.R.string.ok),
- new android.content.DialogInterface.OnClickListener()
- {
- @java.lang.Override
- public void onClick(android.content.DialogInterface dialog, int which)
- {
- assert dialog != null;
- dialog.dismiss();
- }
- });
-
- builder.show();
- }
-
- private void showChangeLog() {
-
- }
-
@Override
final protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
- mDrawerToggle.syncState();
}
@Override
final public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- mDrawerToggle.onConfigurationChanged(newConfig);
}
private void launchIntro() {
diff --git a/app/src/main/java/org/phenoapps/verify/SettingsActivity.java b/app/src/main/java/org/phenoapps/verify/SettingsActivity.java
index fb5a18f..d35764d 100644
--- a/app/src/main/java/org/phenoapps/verify/SettingsActivity.java
+++ b/app/src/main/java/org/phenoapps/verify/SettingsActivity.java
@@ -8,11 +8,15 @@
public class SettingsActivity extends AppCompatActivity {
public static String FILE_NAME = "org.phenoapps.verify.FILE_NAME";
+ public static String INTRO_BUTTON = "org.phenoapps.verify.INTRO";
+
+ public static String ABOUT_BUTTON = "org.phenoapps.verify.ABOUT";
+
public static String SCAN_MODE_LIST = "org.phenoapps.verify.SCAN_MODE";
public static String AUDIO_ENABLED = "org.phenoapps.verify.AUDIO_ENABLED";
public static String TUTORIAL_MODE = "org.phenoapps.verify.TUTORIAL_MODE";
- public static String FIRST_NAME = "org.phenoapps.verify.FIRST_NAME";
- public static String LAST_NAME = "org.phenoapps.verify.LAST_NAME";
+ public static String NAME = "org.phenoapps.verify.NAME";
+
public static String LIST_KEY_NAME = "org.phenoapps.verify.LIST_KEY_NAME";
public static String PAIR_NAME = "org.phenoapps.verify.PAIR_NAME";
public static String DISABLE_PAIR = "org.phenoapps.verify.DISABLE_PAIR";
diff --git a/app/src/main/java/org/phenoapps/verify/SettingsFragment.java b/app/src/main/java/org/phenoapps/verify/SettingsFragment.java
index 577aa32..7565b1e 100644
--- a/app/src/main/java/org/phenoapps/verify/SettingsFragment.java
+++ b/app/src/main/java/org/phenoapps/verify/SettingsFragment.java
@@ -1,14 +1,31 @@
package org.phenoapps.verify;
+import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.widget.Toast;
+import java.util.prefs.Preferences;
+
public class SettingsFragment extends PreferenceFragment {
+
+ private void showChangeLog() {
+
+ }
+ private void showAboutDialog(Context ctx)
+ {
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
+ Intent i = new Intent(getContext(), AboutActivity.class);
+ startActivity(i);
+ }
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -17,7 +34,34 @@ public void onCreate(Bundle savedInstanceState) {
final SharedPreferences sharedPrefs = super.getPreferenceManager().getSharedPreferences();
ListPreference mode = (ListPreference) findPreference(SettingsActivity.SCAN_MODE_LIST);
+ Preference introButton = (Preference) findPreference(SettingsActivity.INTRO_BUTTON);
+ Preference aboutButton = (Preference) findPreference(SettingsActivity.ABOUT_BUTTON);
+ aboutButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ showAboutDialog(getContext());
+ }
+ return true;
+ }
+ });
+
+ introButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
+ final Intent intro_intent = new Intent(getContext(), IntroActivity.class);
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ startActivity(intro_intent);
+ }
+ });
+ }
+ return true;
+ }
+ });
mode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
//check if Pair mode is chosen, if it's disabled then show a message and switch
//back to default mode.
@@ -27,7 +71,7 @@ public boolean onPreferenceChange(Preference preference, Object o) {
sharedPrefs.getBoolean(SettingsActivity.DISABLE_PAIR, false)) {
((ListPreference) preference).setValue("0");
Toast.makeText(getActivity(),
- "Pair mode cannot be used without setting a pair ID.",
+ getString(R.string.choose_pair_button_tutorial),
Toast.LENGTH_SHORT).show();
return false;
}
diff --git a/app/src/main/java/org/phenoapps/verify/UriHandler.java b/app/src/main/java/org/phenoapps/verify/UriHandler.java
index 51c7d5f..851c11c 100644
--- a/app/src/main/java/org/phenoapps/verify/UriHandler.java
+++ b/app/src/main/java/org/phenoapps/verify/UriHandler.java
@@ -55,7 +55,7 @@ public static String getFileName(@NonNull Context context, Uri uri) {
return fileName;
}
-//test
+
/**
* Returns the effective file name from the provided Uri.
* @param fileName
diff --git a/app/src/main/res/drawable-anydpi/ic_home.xml b/app/src/main/res/drawable-anydpi/ic_home.xml
new file mode 100644
index 0000000..3eb8fe0
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_home.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable-hdpi/ic_home.png b/app/src/main/res/drawable-hdpi/ic_home.png
new file mode 100644
index 0000000..bfbbd81
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_home.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_import_white.png b/app/src/main/res/drawable-hdpi/ic_import_white.png
new file mode 100644
index 0000000..f90b07a
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_import_white.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_settings.png b/app/src/main/res/drawable-hdpi/ic_settings.png
index 4cb8e41..bda5e85 100644
Binary files a/app/src/main/res/drawable-hdpi/ic_settings.png and b/app/src/main/res/drawable-hdpi/ic_settings.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_home.png b/app/src/main/res/drawable-mdpi/ic_home.png
new file mode 100644
index 0000000..5c6b248
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_home.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_import_white.png b/app/src/main/res/drawable-mdpi/ic_import_white.png
new file mode 100644
index 0000000..f90b07a
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_import_white.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_settings.png b/app/src/main/res/drawable-mdpi/ic_settings.png
index cf6c63e..bda5e85 100644
Binary files a/app/src/main/res/drawable-mdpi/ic_settings.png and b/app/src/main/res/drawable-mdpi/ic_settings.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_home.png b/app/src/main/res/drawable-xhdpi/ic_home.png
new file mode 100644
index 0000000..00ba157
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_home.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_import_white.png b/app/src/main/res/drawable-xhdpi/ic_import_white.png
new file mode 100644
index 0000000..f90b07a
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_import_white.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_settings.png b/app/src/main/res/drawable-xhdpi/ic_settings.png
index 3170916..bda5e85 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_settings.png and b/app/src/main/res/drawable-xhdpi/ic_settings.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_home.png b/app/src/main/res/drawable-xxhdpi/ic_home.png
new file mode 100644
index 0000000..35d7634
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_home.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_import_white.png b/app/src/main/res/drawable-xxhdpi/ic_import_white.png
new file mode 100644
index 0000000..f90b07a
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_import_white.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_settings.png b/app/src/main/res/drawable-xxhdpi/ic_settings.png
index 55d0279..bda5e85 100644
Binary files a/app/src/main/res/drawable-xxhdpi/ic_settings.png and b/app/src/main/res/drawable-xxhdpi/ic_settings.png differ
diff --git a/app/src/main/res/drawable/ic_person_profile.xml b/app/src/main/res/drawable/ic_person_profile.xml
new file mode 100644
index 0000000..d21debf
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person_profile.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml
index 08a56bf..c483435 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/activity_main.xml
@@ -95,14 +95,24 @@
+
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-xlarge/activity_main.xml b/app/src/main/res/layout-xlarge/activity_main.xml
index bf2bde7..cd45fdd 100644
--- a/app/src/main/res/layout-xlarge/activity_main.xml
+++ b/app/src/main/res/layout-xlarge/activity_main.xml
@@ -94,15 +94,25 @@
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 6ed3db9..81e3cdf 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -15,7 +15,7 @@
android:id="@+id/idTable"
android:layout_width="0dp"
android:layout_height="200dp"
- android:visibility="visible"
+ android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -88,36 +88,46 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
+
-
+
-
+
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/activity_main_bottom_toolbar.xml b/app/src/main/res/menu/activity_main_bottom_toolbar.xml
new file mode 100644
index 0000000..6c2fa92
--- /dev/null
+++ b/app/src/main/res/menu/activity_main_bottom_toolbar.xml
@@ -0,0 +1,23 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/activity_main_toolbar.xml b/app/src/main/res/menu/activity_main_toolbar.xml
index 4d217d2..53a2b3d 100644
--- a/app/src/main/res/menu/activity_main_toolbar.xml
+++ b/app/src/main/res/menu/activity_main_toolbar.xml
@@ -1,14 +1,16 @@
\ No newline at end of file
diff --git a/app/src/main/res/menu/nav_drawer_view.xml b/app/src/main/res/menu/nav_drawer_view.xml
deleted file mode 100644
index 0ace8bc..0000000
--- a/app/src/main/res/menu/nav_drawer_view.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/about_styles.xml b/app/src/main/res/values/about_styles.xml
new file mode 100644
index 0000000..55344e5
--- /dev/null
+++ b/app/src/main/res/values/about_styles.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 767e79d..0cc85e1 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -2,5 +2,8 @@
#E4624C
#A84937
- #EEC657
+ #EEC657\
+ #A84937
+ #285E3D
+ #0C6291
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bd1c624..a02de0a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,6 +6,24 @@
Open
Close
Barcode Scanner
+ Enter a note for the given item.
+ Choose name for exported file.
+ Select files from?
+ Storage
+ Verify Directory
+ Pair column selected, would you like to switch to Pair mode?
+ Yes
+ No thanks
+ There was a problem reading this file
+ Imported file must have an extension. (e.g: .csv, .tsv)
+ There was a problem reading this file.
+ Error reading file.
+ Enter a note for the given item.
+ Save
+
+
+ Compare Barcodes
+ Choose compare mode:
Input a separator character.\nThis character should separate the headers and columns in the uploaded file.\nThen press Done.
@@ -15,6 +33,7 @@
Choose your pair ID column.
Choose display columns.
+
Scan Mode
Audio
@@ -24,12 +43,57 @@
Color - Paint scanned items
Order - Verify order of items
Pair - Track pairings of items
+ Pair mode cannot be used without setting a pair ID
+
+
+ color
+ scan_count
+ user
+ note
+ xlsx
+ xls
+ csv
+ tsv
+ txt
+ VERIFY
+ CREATE TABLE VERIFY(
+ VERIFY
+ CREATE TABLE VERIFY(
+ date DATE
+ user TEXT
+ note TEXT
+ scan_count INT DEFAULT 0
+ color INT
+ ROW ERROR
+ VERIFY
+ ROW ERROR
+
+
+ documents
+
+
+ com.android.externalstorage.documents
+ primary
+ com.android.providers.media.documents
+ com.google.android.apps.docs.storage
+ com.microsoft.skydrive.content.StorageAccessProvider
+ com.android.providers.downloads.documents
+ raw:
+ content://downloads/public_downloads
+ content://downloads/my_downloads
+ content://downloads/all_downloads
+ file
+ com.estrongs.files
+
+
+ _data
Welcome to Verify!
Import a File
Many modes
+
Verify lets you import a list of entries to visualize details or manipulate your list.
After you give Verify permission to access files, open the navigation drawer, choose import, select your file, and choose the column that matches your external barcodes.
Once a list has been imported, entries can be scanned to A) show accompanying data, B) paint scanned entries, C) remove scanned entries, or D) ensure the scanned order matches the imported order.
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index dfd0a57..855819f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -15,4 +15,11 @@
- @color/colorAccent
+
+
+
+
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 60d2fe0..9fb29ae 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -10,14 +10,9 @@
android:title="@string/prefs_mode" />
-
+ android:key="org.phenoapps.verify.NAME"
+ android:summary="Name of person scanning items"
+ android:title="Name" />
+
+
\ No newline at end of file