diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 611e5bc82..f55a3bfed 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,6 +38,12 @@
android:configChanges="orientation|screenSize"
android:windowSoftInputMode="stateHidden"
android:parentActivityName="protect.card_locker.MainActivity"/>
+
diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java
new file mode 100644
index 000000000..09e618049
--- /dev/null
+++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java
@@ -0,0 +1,63 @@
+package protect.card_locker;
+
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.View;
+import android.widget.Button;
+
+public class ImportExportActivity extends AppCompatActivity
+{
+
+ ImportExportTask importExporter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.import_export_activity);
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+ ActionBar actionBar = getSupportActionBar();
+ if(actionBar != null)
+ {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+
+ Button importButton = (Button)findViewById(R.id.importButton);
+ importButton.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ importExporter = new ImportExportTask(ImportExportActivity.this,
+ true, DataFormat.CSV);
+ importExporter.execute();
+ }
+ });
+
+ Button exportButton = (Button)findViewById(R.id.exportButton);
+ exportButton.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ importExporter = new ImportExportTask(ImportExportActivity.this,
+ false, DataFormat.CSV);
+ importExporter.execute();
+ }
+ });
+ }
+
+ @Override
+ protected void onDestroy()
+ {
+ if(importExporter != null && importExporter.getStatus() != AsyncTask.Status.RUNNING)
+ {
+ importExporter.cancel(true);
+ }
+ super.onDestroy();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java
index b7819033e..3661b7303 100644
--- a/app/src/main/java/protect/card_locker/MainActivity.java
+++ b/app/src/main/java/protect/card_locker/MainActivity.java
@@ -92,6 +92,13 @@ public class MainActivity extends AppCompatActivity
return true;
}
+ if(id == R.id.action_import_export)
+ {
+ Intent i = new Intent(getApplicationContext(), ImportExportActivity.class);
+ startActivity(i);
+ return true;
+ }
+
return super.onOptionsItemSelected(item);
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/ic_import_export_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_import_export_white_24dp.png
new file mode 100644
index 000000000..5b6c02010
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_import_export_white_24dp.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_import_export_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_import_export_white_24dp.png
new file mode 100644
index 000000000..151188cf8
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_import_export_white_24dp.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_import_export_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_import_export_white_24dp.png
new file mode 100644
index 000000000..e22e18866
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_import_export_white_24dp.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_import_export_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_import_export_white_24dp.png
new file mode 100644
index 000000000..33c21c5c4
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_import_export_white_24dp.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_import_export_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_import_export_white_24dp.png
new file mode 100644
index 000000000..a5e55a470
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_import_export_white_24dp.png differ
diff --git a/app/src/main/res/layout/import_export_activity.xml b/app/src/main/res/layout/import_export_activity.xml
new file mode 100644
index 000000000..3291f87f3
--- /dev/null
+++ b/app/src/main/res/layout/import_export_activity.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml
index 406ff41a0..b21c0ace0 100644
--- a/app/src/main/res/menu/main_menu.xml
+++ b/app/src/main/res/menu/main_menu.xml
@@ -7,4 +7,9 @@
android:icon="@drawable/ic_add_white_24dp"
android:title="@string/action_add"
app:showAsAction="always"/>
+
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 896c835a8..85a71355a 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -1,4 +1,6 @@
-
+
+
Carte fedeltà
Aggiungi
@@ -26,4 +28,17 @@
%1$s: %2$s
Note
+
+ Importa/Esporta
+ Importa
+ Esporta
+ I dati sono stati importati in o esportati dal file LoyaltyCardLocker.csv sulla memoria esterna
+ Importato da: %1$s
+ Esportato in: %1$s
+ File mancante: %1$s
+ Impossibile importare: %1$s
+ Impossibile esportare: %1$s
+ Importazione in corso…
+ Esportazione in corso…
+ Impossibile importare o esportare i dati senza il permesso per l\'uso della memoria esterna.
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 659985c44..653057819 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -1,4 +1,6 @@
-
+
+
Klantenkaartenkluis
Voeg toe
@@ -26,4 +28,17 @@
%1$s: %2$s
Notitie
+
+ Importeer/Exporteer
+ Importeer
+ Exporteer
+ Data is geïmporteerd van of geëxporteerd naar LoyaltyCardLocker.csv op externe opslag
+ Geïmporteerd van: %1$s
+ Geëxporteerd naar: %1$s
+ Bestand niet gevonden: %1$s
+ Importeren mislukte: %1$s
+ Exporteren mislukte: %1$s
+ Importerende…
+ Exporterende…
+ Niet mogelijk te importeren of exporteren zonder rechten op externe opslag
diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java
index d345ba669..8783970a5 100644
--- a/app/src/test/java/protect/card_locker/MainActivityTest.java
+++ b/app/src/test/java/protect/card_locker/MainActivityTest.java
@@ -50,9 +50,10 @@ public class MainActivityTest
assertTrue(menu != null);
// The settings and add button should be present
- assertEquals(menu.size(), 1);
+ assertEquals(menu.size(), 2);
assertEquals("Add", menu.findItem(R.id.action_add).getTitle().toString());
+ assertEquals("Import/Export", menu.findItem(R.id.action_import_export).getTitle().toString());
}
@Test