diff --git a/CHANGELOG.md b/CHANGELOG.md
index a5ff4a675..4c6ad17d7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
Change Log
===============================================================================
+Version 2.0.2 *(2015-11-20)*
+----------------------------
+* Fixed: Exporting to external service does not work in some devices
+* Fixed: Bar chart does not display negative amounts
+* Fixed: Crash when saving transaction with invalid amount expression
+* Fixed: Crash when displaying bar chart legend with accounts of same name
+* Fixed: Crashes when importing some GnuCash XML files on some devices
+* Improved: Remember last export destination
+* Improved: Display current imbalance in split editor
+* Improved: Set default commodity to the one used by imported file
+* Improved: Add support for unlimited fractional digits in commodities
+* Improved: Option to select date from which to export transactions
+
Version 2.0.1 *(2015-11-05)*
----------------------------
* Feature: Menu options for moving/duplicating transactions
diff --git a/app/build.gradle b/app/build.gradle
index 402207ba2..3e0644c23 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -5,8 +5,8 @@ apply plugin: 'io.fabric'
def versionMajor = 2
def versionMinor = 0
-def versionPatch = 1
-def versionBuild = 3
+def versionPatch = 2
+def versionBuild = 2
def buildTime() {
def df = new SimpleDateFormat("yyyyMMdd HH:mm 'UTC'")
diff --git a/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java b/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java
index 5b51bdce7..05c9bbedc 100644
--- a/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java
+++ b/app/src/androidTest/java/org/gnucash/android/test/ui/ExportTransactionsTest.java
@@ -61,6 +61,7 @@
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.RootMatchers.withDecorView;
import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.isEnabled;
@@ -69,6 +70,8 @@
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
@RunWith(AndroidJUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -192,6 +195,11 @@ public void testExport(ExportFormat format){
DrawerActions.openDrawer(R.id.drawer_layout);
onView(withText(R.string.nav_menu_export)).perform(click());
+
+ onView(withId(R.id.spinner_export_destination)).perform(click());
+ String[] destinations = getActivity().getResources().getStringArray(R.array.export_destinations);
+
+ onView(withText(destinations[0])).perform(click());
onView(withText(format.name())).perform(click());
onView(withId(R.id.menu_save)).perform(click());
@@ -243,6 +251,26 @@ public void testShouldCreateExportSchedule(){
assertThat(action.getEndTime()).isEqualTo(0);
}
+ @Test
+ public void testCreateBackup(){
+ DrawerActions.openDrawer(R.id.drawer_layout);
+ onView(withText(R.string.title_settings)).perform(click());
+ onView(withText(R.string.header_backup_and_export_settings)).perform(click());
+
+ onView(withText(R.string.title_create_backup_pref)).perform(click());
+ assertToastDisplayed(R.string.toast_backup_successful);
+ }
+
+ /**
+ * Checks that a specific toast message is displayed
+ * @param toastString String that should be displayed
+ */
+ private void assertToastDisplayed(int toastString) {
+ onView(withText(toastString))
+ .inRoot(withDecorView(not(is(getActivity().getWindow().getDecorView()))))
+ .check(matches(isDisplayed()));
+ }
+
//todo: add testing of export flag to unit test
//todo: add test of ignore exported transactions to unit tests
@Override
diff --git a/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java b/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java
index bc0ae2016..8e9985637 100644
--- a/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java
+++ b/app/src/main/java/org/gnucash/android/app/GnuCashApplication.java
@@ -25,6 +25,7 @@
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
@@ -41,6 +42,7 @@
import org.gnucash.android.db.SplitsDbAdapter;
import org.gnucash.android.db.TransactionsDbAdapter;
import org.gnucash.android.model.Commodity;
+import org.gnucash.android.model.Money;
import org.gnucash.android.service.SchedulerService;
import java.util.Currency;
@@ -124,7 +126,7 @@ public void onCreate(){
mCommoditiesDbAdapter = new CommoditiesDbAdapter(mDb);
mPricesDbAdapter = new PricesDbAdapter(mDb);
- Commodity.DEFAULT_COMMODITY = mCommoditiesDbAdapter.getCommodity(getDefaultCurrencyCode());
+ setDefaultCurrencyCode(getDefaultCurrencyCode());
}
public static AccountsDbAdapter getAccountsDbAdapter() {
@@ -216,12 +218,21 @@ public static String getDefaultCurrencyCode(){
}
/**
- * Returns the default commodity
- * @return Default commodity of application
+ * Sets the default currency for the application in all relevant places:
+ *
+ * - Shared preferences
+ * - {@link Money#DEFAULT_CURRENCY_CODE}
+ * - {@link Commodity#DEFAULT_COMMODITY}
+ *
+ * @param currencyCode ISO 4217 currency code
* @see #getDefaultCurrencyCode()
*/
- public static Commodity getDefaultCommodity(){
- return Commodity.DEFAULT_COMMODITY;
+ public static void setDefaultCurrencyCode(@NonNull String currencyCode){
+ PreferenceManager.getDefaultSharedPreferences(getAppContext()).edit()
+ .putString(getAppContext().getString(R.string.key_default_currency), currencyCode)
+ .apply();
+ Money.DEFAULT_CURRENCY_CODE = currencyCode;
+ Commodity.DEFAULT_COMMODITY = mCommoditiesDbAdapter.getCommodity(currencyCode);
}
/**
diff --git a/app/src/main/java/org/gnucash/android/db/AccountsDbAdapter.java b/app/src/main/java/org/gnucash/android/db/AccountsDbAdapter.java
index 7d1acfbb1..63b189a34 100644
--- a/app/src/main/java/org/gnucash/android/db/AccountsDbAdapter.java
+++ b/app/src/main/java/org/gnucash/android/db/AccountsDbAdapter.java
@@ -39,6 +39,7 @@
import org.gnucash.android.model.TransactionType;
import java.math.BigDecimal;
+import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Currency;
import java.util.HashMap;
@@ -503,12 +504,11 @@ public List getSimpleAccountList(String where, String[] whereArgs, Stri
}
/**
* Returns a list of accounts which have transactions that have not been exported yet
+ * @param lastExportTimeStamp Timestamp after which to any transactions created/modified should be exported
* @return List of {@link Account}s with unexported transactions
- * @deprecated This uses the exported flag in the database which is no longer supported.
*/
- @Deprecated
- public List getExportableAccounts(){
- LinkedList accountsList = new LinkedList();
+ public List getExportableAccounts(Timestamp lastExportTimeStamp){
+ LinkedList accountsList = new LinkedList<>();
Cursor cursor = mDb.query(
TransactionEntry.TABLE_NAME + " , " + SplitEntry.TABLE_NAME +
" ON " + TransactionEntry.TABLE_NAME + "." + TransactionEntry.COLUMN_UID + " = " +
@@ -517,8 +517,8 @@ public List getExportableAccounts(){
AccountEntry.COLUMN_UID + " = " + SplitEntry.TABLE_NAME + "." +
SplitEntry.COLUMN_ACCOUNT_UID,
new String[]{AccountEntry.TABLE_NAME + ".*"},
- TransactionEntry.TABLE_NAME + "." + TransactionEntry.COLUMN_EXPORTED + " == 0",
- null,
+ TransactionEntry.TABLE_NAME + "." + TransactionEntry.COLUMN_MODIFIED_AT + " > ?",
+ new String[]{lastExportTimeStamp.toString()},
AccountEntry.TABLE_NAME + "." + AccountEntry.COLUMN_UID,
null,
null
@@ -787,23 +787,24 @@ private Money computeBalance(String accountUID, long startTimestamp, long endTim
}
/**
- * Returns the absolute balance of account list within the specified time range while taking sub-accounts
- * into consideration. The default currency takes as base currency.
+ * Returns the balance of account list within the specified time range. The default currency
+ * takes as base currency.
* @param accountUIDList list of account UIDs
* @param startTimestamp the start timestamp of the time range
* @param endTimestamp the end timestamp of the time range
- * @return the absolute balance of account list
+ * @return Money balance of account list
*/
public Money getAccountsBalance(List accountUIDList, long startTimestamp, long endTimestamp) {
String currencyCode = GnuCashApplication.getDefaultCurrencyCode();
Money balance = Money.createZeroInstance(currencyCode);
+ boolean hasDebitNormalBalance = getAccountType(accountUIDList.get(0)).hasDebitNormalBalance();
SplitsDbAdapter splitsDbAdapter = SplitsDbAdapter.getInstance();
Money splitSum = (startTimestamp == -1 && endTimestamp == -1)
- ? splitsDbAdapter.computeSplitBalance(accountUIDList, currencyCode, true)
- : splitsDbAdapter.computeSplitBalance(accountUIDList, currencyCode, true, startTimestamp, endTimestamp);
+ ? splitsDbAdapter.computeSplitBalance(accountUIDList, currencyCode, hasDebitNormalBalance)
+ : splitsDbAdapter.computeSplitBalance(accountUIDList, currencyCode, hasDebitNormalBalance, startTimestamp, endTimestamp);
- return balance.add(splitSum).absolute();
+ return balance.add(splitSum);
}
/**
diff --git a/app/src/main/java/org/gnucash/android/db/DatabaseHelper.java b/app/src/main/java/org/gnucash/android/db/DatabaseHelper.java
index 5af6e0e97..440e5c7e5 100644
--- a/app/src/main/java/org/gnucash/android/db/DatabaseHelper.java
+++ b/app/src/main/java/org/gnucash/android/db/DatabaseHelper.java
@@ -212,8 +212,8 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
/*
* NOTE: In order to modify the database, create a new static method in the MigrationHelper class
* called upgradeDbToVersion<#>, e.g. int upgradeDbToVersion10(SQLiteDatabase) in order to upgrade to version 10.
- * The upgrade method should return the current database version as the return value.
- * Then all you need to do is incremend the DatabaseSchema.DATABASE_VERSION to the appropriate number.
+ * The upgrade method should return the upgraded database version as the return value.
+ * Then all you need to do is increment the DatabaseSchema.DATABASE_VERSION to the appropriate number.
*/
if (oldVersion > newVersion) {
throw new IllegalArgumentException("Database downgrades are not supported at the moment");
diff --git a/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java b/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java
index c39568a32..15d7870cc 100644
--- a/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java
+++ b/app/src/main/java/org/gnucash/android/db/DatabaseSchema.java
@@ -28,7 +28,7 @@ public class DatabaseSchema {
* Database version.
* With any change to the database schema, this number must increase
*/
- public static final int DATABASE_VERSION = 9;
+ public static final int DATABASE_VERSION = 11;
/**
* Database version where Splits were introduced
diff --git a/app/src/main/java/org/gnucash/android/db/MigrationHelper.java b/app/src/main/java/org/gnucash/android/db/MigrationHelper.java
index b8039c6b0..f8d91f088 100644
--- a/app/src/main/java/org/gnucash/android/db/MigrationHelper.java
+++ b/app/src/main/java/org/gnucash/android/db/MigrationHelper.java
@@ -24,6 +24,7 @@
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
+import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;
@@ -31,12 +32,15 @@
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
+import org.gnucash.android.export.ExportFormat;
+import org.gnucash.android.export.ExportParams;
import org.gnucash.android.export.Exporter;
import org.gnucash.android.importer.CommoditiesXmlHandler;
import org.gnucash.android.model.AccountType;
import org.gnucash.android.model.BaseModel;
import org.gnucash.android.model.Commodity;
import org.gnucash.android.model.Money;
+import org.gnucash.android.model.ScheduledAction;
import org.gnucash.android.model.Transaction;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -52,7 +56,9 @@
import java.nio.channels.FileChannel;
import java.sql.Timestamp;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
@@ -1058,4 +1064,110 @@ static int upgradeDbToVersion9(SQLiteDatabase db){
}
return oldVersion;
}
+
+ /**
+ * Upgrades the database to version 10
+ * This method converts all saved scheduled export parameters to the new format using the
+ * timestamp of last export
+ * @param db SQLite database
+ * @return 10 if upgrade was successful, 9 otherwise
+ */
+ static int upgradeDbToVersion10(SQLiteDatabase db){
+ Log.i(DatabaseHelper.LOG_TAG, "Upgrading database to version 9");
+ int oldVersion = 9;
+
+ db.beginTransaction();
+ try {
+ Cursor cursor = db.query(ScheduledActionEntry.TABLE_NAME,
+ new String[]{ScheduledActionEntry.COLUMN_UID, ScheduledActionEntry.COLUMN_TAG},
+ ScheduledActionEntry.COLUMN_TYPE + " = ?",
+ new String[]{ScheduledAction.ActionType.BACKUP.name()},
+ null, null, null);
+
+ ContentValues contentValues = new ContentValues();
+ while (cursor.moveToNext()){
+ String paramString = cursor.getString(cursor.getColumnIndexOrThrow(ScheduledActionEntry.COLUMN_TAG));
+ String[] tokens = paramString.split(";");
+ ExportParams params = new ExportParams(ExportFormat.valueOf(tokens[0]));
+ params.setExportTarget(ExportParams.ExportTarget.valueOf(tokens[1]));
+ params.setDeleteTransactionsAfterExport(Boolean.parseBoolean(tokens[3]));
+
+ boolean exportAll = Boolean.parseBoolean(tokens[2]);
+ if (exportAll){
+ params.setExportStartTime(Timestamp.valueOf(Exporter.TIMESTAMP_ZERO));
+ } else {
+ String lastExportTimeStamp = PreferenceManager.getDefaultSharedPreferences(GnuCashApplication.getAppContext())
+ .getString(Exporter.PREF_LAST_EXPORT_TIME, Exporter.TIMESTAMP_ZERO);
+ Timestamp timestamp = Timestamp.valueOf(lastExportTimeStamp);
+ params.setExportStartTime(timestamp);
+ }
+
+ String uid = cursor.getString(cursor.getColumnIndexOrThrow(ScheduledActionEntry.COLUMN_UID));
+ contentValues.clear();
+ contentValues.put(ScheduledActionEntry.COLUMN_UID, uid);
+ contentValues.put(ScheduledActionEntry.COLUMN_TAG, params.toCsv());
+ db.insert(ScheduledActionEntry.TABLE_NAME, null, contentValues);
+ }
+
+ cursor.close();
+
+ db.setTransactionSuccessful();
+ oldVersion = 10;
+ } finally {
+ db.endTransaction();
+ }
+ return oldVersion;
+ }
+
+ /**
+ * Upgrade database to version 11
+ *
+ * Migrate scheduled backups and update export parameters to the new format
+ *
+ * @param db SQLite database
+ * @return 11 if upgrade was successful, 10 otherwise
+ */
+ static int upgradeDbToVersion11(SQLiteDatabase db){
+ Log.i(DatabaseHelper.LOG_TAG, "Upgrading database to version 9");
+ int oldVersion = 10;
+
+ db.beginTransaction();
+ try {
+ Cursor cursor = db.query(ScheduledActionEntry.TABLE_NAME, null,
+ ScheduledActionEntry.COLUMN_TYPE + "= ?",
+ new String[]{ScheduledAction.ActionType.BACKUP.name()}, null, null, null);
+
+ Map uidToTagMap = new HashMap<>();
+ while (cursor.moveToNext()) {
+ String uid = cursor.getString(cursor.getColumnIndexOrThrow(ScheduledActionEntry.COLUMN_UID));
+ String tag = cursor.getString(cursor.getColumnIndexOrThrow(ScheduledActionEntry.COLUMN_TAG));
+ String[] tokens = tag.split(";");
+ try {
+ Timestamp timestamp = Timestamp.valueOf(tokens[2]);
+ } catch (IllegalArgumentException ex) {
+ tokens[2] = PreferenceManager.getDefaultSharedPreferences(GnuCashApplication.getAppContext())
+ .getString(Exporter.PREF_LAST_EXPORT_TIME, Exporter.TIMESTAMP_ZERO);
+ } finally {
+ tag = TextUtils.join(";", tokens);
+ }
+ uidToTagMap.put(uid, tag);
+ }
+
+ cursor.close();
+
+ ContentValues contentValues = new ContentValues();
+ for (Map.Entry entry : uidToTagMap.entrySet()) {
+ contentValues.clear();
+ contentValues.put(ScheduledActionEntry.COLUMN_TAG, entry.getValue());
+ db.update(ScheduledActionEntry.TABLE_NAME, contentValues,
+ ScheduledActionEntry.COLUMN_UID + " = ?", new String[]{entry.getKey()});
+ }
+
+ db.setTransactionSuccessful();
+ oldVersion = 11;
+ } finally {
+ db.endTransaction();
+ }
+ return oldVersion;
+ }
}
diff --git a/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java b/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java
index 1f07600eb..0e17ef283 100644
--- a/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java
+++ b/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java
@@ -28,6 +28,7 @@
import android.os.AsyncTask;
import android.os.Build;
import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
import android.util.Log;
import android.widget.Toast;
@@ -59,13 +60,11 @@
import org.gnucash.android.ui.settings.SettingsActivity;
import org.gnucash.android.ui.transaction.TransactionsActivity;
-import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.io.OutputStreamWriter;
import java.nio.channels.FileChannel;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -96,6 +95,11 @@ public class ExportAsyncTask extends AsyncTask {
*/
private ExportParams mExportParams;
+ // File paths generated by the exporter
+ private List mExportedFiles;
+
+ private Exporter mExporter;
+
public ExportAsyncTask(Context context){
this.mContext = context;
}
@@ -126,7 +130,6 @@ protected void onPreExecute() {
protected Boolean doInBackground(ExportParams... params) {
mExportParams = params[0];
- Exporter mExporter;
switch (mExportParams.getExportFormat()) {
case QIF:
mExporter = new QifExporter(mExportParams);
@@ -140,20 +143,11 @@ protected Boolean doInBackground(ExportParams... params) {
default:
mExporter = new GncXmlExporter(mExportParams);
break;
- }
+ }
try {
- File file = new File(mExportParams.getTargetFilepath());
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
- try {
- // FIXME: detect if there aren't transactions to export and inform the user
- mExporter.generateExport(writer);
- writer.flush();
- }
- finally {
- writer.close();
- }
-
+ // FIXME: detect if there aren't transactions to export and inform the user
+ mExportedFiles = mExporter.generateExport();
} catch (final Exception e) {
Log.e(TAG, "Error exporting: " + e.getMessage());
Crashlytics.logException(e);
@@ -174,16 +168,16 @@ public void run() {
switch (mExportParams.getExportTarget()) {
case SHARING:
- File output = moveExportToSDCard();
- shareFile(output.getAbsolutePath());
+ List sdCardExportedFiles = moveExportToSDCard();
+ shareFiles(sdCardExportedFiles);
return true;
case DROPBOX:
- copyExportToDropbox();
+ moveExportToDropbox();
return true;
case GOOGLE_DRIVE:
- copyExportToGoogleDrive();
+ moveExportToGoogleDrive();
return true;
case SD_CARD:
@@ -250,7 +244,7 @@ protected void onPostExecute(Boolean exportResult) {
}
}
- private void copyExportToGoogleDrive(){
+ private void moveExportToGoogleDrive(){
Log.i(TAG, "Moving exported file to Google Drive");
final GoogleApiClient googleApiClient = SettingsActivity.getGoogleApiClient(GnuCashApplication.getAppContext());
googleApiClient.blockingConnect();
@@ -258,11 +252,10 @@ private void copyExportToGoogleDrive(){
ResultCallback() {
@Override
public void onResult(DriveFolder.DriveFileResult result) {
- if (!result.getStatus().isSuccess()) {
+ if (!result.getStatus().isSuccess())
Log.e(TAG, "Error while trying to sync to Google Drive");
- return;
- }
- Log.i(TAG, "Created a file with content: " + result.getDriveFile().getDriveId());
+ else
+ Log.i(TAG, "Created a file with content: " + result.getDriveFile().getDriveId());
}
};
@@ -277,12 +270,11 @@ public void onResult(DriveApi.DriveContentsResult result) {
try {
// write content to DriveContents
OutputStream outputStream = driveContents.getOutputStream();
- List exportedFilePaths = getExportedFiles();
- for (String exportedFilePath : exportedFilePaths) {
+ for (String exportedFilePath : mExportedFiles) {
File exportedFile = new File(exportedFilePath);
FileInputStream fileInputStream = new FileInputStream(exportedFile);
byte[] buffer = new byte[1024];
- int count = 0;
+ int count;
while ((count = fileInputStream.read(buffer)) >= 0) {
outputStream.write(buffer, 0, count);
@@ -293,7 +285,7 @@ public void onResult(DriveApi.DriveContentsResult result) {
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle(exportedFile.getName())
- .setMimeType(getExportMimeType())
+ .setMimeType(mExporter.getExportMimeType())
.build();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
@@ -312,22 +304,7 @@ public void onResult(DriveApi.DriveContentsResult result) {
});
}
- /**
- * Returns the mime type for the configured export format
- * @return MIME type as string
- */
- public String getExportMimeType(){
- switch (mExportParams.getExportFormat()){
- case OFX:
- case XML:
- return "text/xml";
- case QIF:
- default:
- return "text/plain";
- }
- }
-
- private void copyExportToDropbox() {
+ private void moveExportToDropbox() {
Log.i(TAG, "Copying exported file to DropBox");
String dropboxAppKey = mContext.getString(R.string.dropbox_app_key, SettingsActivity.DROPBOX_APP_KEY);
String dropboxAppSecret = mContext.getString(R.string.dropbox_app_secret, SettingsActivity.DROPBOX_APP_SECRET);
@@ -336,8 +313,7 @@ private void copyExportToDropbox() {
DbxFile dbExportFile = null;
try {
DbxFileSystem dbxFileSystem = DbxFileSystem.forAccount(mDbxAcctMgr.getLinkedAccount());
- List exportedFilePaths = getExportedFiles();
- for (String exportedFilePath : exportedFilePaths) {
+ for (String exportedFilePath : mExportedFiles) {
File exportedFile = new File(exportedFilePath);
dbExportFile = dbxFileSystem.create(new DbxPath(exportedFile.getName()));
dbExportFile.writeFromExistingFile(exportedFile, false);
@@ -357,43 +333,35 @@ private void copyExportToDropbox() {
}
}
- /**
- * Returns the list of files generated by one export session.
- * Typically it is one file. But QIF export generate multiple files per currency.
- * @return List of paths to exported files
- * @throws IOException if the exported files could not be created
- */
- private List getExportedFiles() throws IOException {
- List exportedFilePaths;
- if (mExportParams.getExportFormat() == ExportFormat.QIF) {
- String path = mExportParams.getTargetFilepath();
- exportedFilePaths = QifExporter.splitQIF(new File(path));
- } else {
- exportedFilePaths = new ArrayList<>();
- exportedFilePaths.add(mExportParams.getTargetFilepath());
- }
- return exportedFilePaths;
- }
/**
- * Moves the exported file from the internal storage where it is generated to external storage
- * which is accessible to the user.
- * @return File to which the export was moved.
+ * Moves the exported files from the internal storage where they are generated to
+ * external storage, which is accessible to the user.
+ * @return The list of files moved to the SD card.
*/
- private File moveExportToSDCard() {
+ private List moveExportToSDCard() {
Log.i(TAG, "Moving exported file to external storage");
- File src = new File(mExportParams.getTargetFilepath());
- File dst = Exporter.createExportFile(mExportParams.getExportFormat());
+ new File(Exporter.EXPORT_FOLDER_PATH).mkdirs();
+ List dstFiles = new ArrayList<>();
- try {
- copyFile(src, dst);
- src.delete();
- return dst;
- } catch (IOException e) {
- Crashlytics.logException(e);
- Log.e(TAG, e.getMessage());
- throw new Exporter.ExporterException(mExportParams, e);
+ for (String src: mExportedFiles) {
+ String dst = Exporter.EXPORT_FOLDER_PATH + stripPathPart(src);
+ try {
+ moveFile(src, dst);
+ dstFiles.add(dst);
+ } catch (IOException e) {
+ Crashlytics.logException(e);
+ Log.e(TAG, e.getMessage());
+ throw new Exporter.ExporterException(mExportParams, e);
+ }
}
+
+ return dstFiles;
+ }
+
+ // "/some/path/filename.ext" -> "filename.ext"
+ private String stripPathPart(String fullPathName) {
+ return (new File(fullPathName)).getName();
}
/**
@@ -418,37 +386,26 @@ private void backupAndDeleteTransactions(){
/**
* Starts an intent chooser to allow the user to select an activity to receive
- * the exported OFX file
- * @param path String path to the file on disk
+ * the exported files.
+ * @param paths list of full paths of the files to send to the activity.
*/
- private void shareFile(String path) {
- String defaultEmail = PreferenceManager.getDefaultSharedPreferences(mContext)
- .getString(mContext.getString(R.string.key_default_export_email), null);
+ private void shareFiles(List paths) {
Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.setType("text/xml");
- ArrayList exportFiles = new ArrayList<>();
- if (mExportParams.getExportFormat() == ExportFormat.QIF) {
- try {
- List splitFiles = QifExporter.splitQIF(new File(path));
- for (String file : splitFiles) {
- exportFiles.add(Uri.parse("file://" + file));
- }
- } catch (IOException e) {
- Log.e(TAG, "Error split up files in shareFile. " + e.getMessage());
- Crashlytics.logException(e);
- return;
- }
- } else {
- exportFiles.add(Uri.parse("file://" + path));
- }
- shareIntent.putExtra(Intent.EXTRA_STREAM, exportFiles);
+
+ ArrayList exportFiles = convertFilePathsToUris(paths);
+// shareIntent.putExtra(Intent.EXTRA_STREAM, exportFiles);
+ shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, exportFiles);
+
shareIntent.putExtra(Intent.EXTRA_SUBJECT, mContext.getString(R.string.title_export_email,
mExportParams.getExportFormat().name()));
- if (defaultEmail != null && defaultEmail.trim().length() > 0) {
+
+ String defaultEmail = PreferenceManager.getDefaultSharedPreferences(mContext)
+ .getString(mContext.getString(R.string.key_default_export_email), null);
+ if (defaultEmail != null && defaultEmail.trim().length() > 0)
shareIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{defaultEmail});
- }
- SimpleDateFormat formatter = (SimpleDateFormat) SimpleDateFormat.getDateTimeInstance();
+ SimpleDateFormat formatter = (SimpleDateFormat) SimpleDateFormat.getDateTimeInstance();
ArrayList extraText = new ArrayList<>();
extraText.add(mContext.getString(R.string.description_export_email)
+ " " + formatter.format(new Date(System.currentTimeMillis())));
@@ -457,7 +414,8 @@ private void shareFile(String path) {
if (mContext instanceof Activity) {
List activities = mContext.getPackageManager().queryIntentActivities(shareIntent, 0);
if (activities != null && !activities.isEmpty()) {
- mContext.startActivity(Intent.createChooser(shareIntent, mContext.getString(R.string.title_select_export_destination)));
+ mContext.startActivity(Intent.createChooser(shareIntent,
+ mContext.getString(R.string.title_select_export_destination)));
} else {
Toast.makeText(mContext, R.string.toast_no_compatible_apps_to_receive_export,
Toast.LENGTH_LONG).show();
@@ -465,27 +423,47 @@ private void shareFile(String path) {
}
}
+ //
+
+ /**
+ * Convert file paths to URIs by adding the file// prefix
+ * e.g. /some/path/file.ext --> file:///some/path/file.ext
+ * @param paths List of file paths to convert
+ * @return List of file URIs
+ */
+ @NonNull
+ private ArrayList convertFilePathsToUris(List paths) {
+ ArrayList exportFiles = new ArrayList<>();
+
+ for (String path : paths) {
+ File file = new File(path);
+ file.setReadable(true, false);
+ exportFiles.add(Uri.fromFile(file));
+// exportFiles.add(Uri.parse("file://" + file));
+ }
+ return exportFiles;
+ }
+
/**
- * Copies a file from src
to dst
+ * Moves a file from src
to dst
* @param src Absolute path to the source file
* @param dst Absolute path to the destination file
- * @throws IOException if the file could not be copied
+ * @throws IOException if the file could not be moved.
*/
- public void copyFile(File src, File dst) throws IOException {
- //TODO: Make this asynchronous at some time, t in the future
- if (mExportParams.getExportFormat() == ExportFormat.QIF) {
- QifExporter.splitQIF(src, dst);
- } else {
- FileChannel inChannel = new FileInputStream(src).getChannel();
- FileChannel outChannel = new FileOutputStream(dst).getChannel();
- try {
- inChannel.transferTo(0, inChannel.size(), outChannel);
- } finally {
- if (inChannel != null)
- inChannel.close();
- outChannel.close();
- }
+ public void moveFile(String src, String dst) throws IOException {
+ //TODO: Make this asynchronous at some time, t in the future.
+ File srcFile = new File(src);
+ File dstFile = new File(dst);
+ FileChannel inChannel = new FileInputStream(srcFile).getChannel();
+ FileChannel outChannel = new FileOutputStream(dstFile).getChannel();
+ try {
+ inChannel.transferTo(0, inChannel.size(), outChannel);
+ } finally {
+ if (inChannel != null)
+ inChannel.close();
+ outChannel.close();
}
+ srcFile.delete();
}
}
diff --git a/app/src/main/java/org/gnucash/android/export/ExportParams.java b/app/src/main/java/org/gnucash/android/export/ExportParams.java
index 6b23ede19..97232940e 100644
--- a/app/src/main/java/org/gnucash/android/export/ExportParams.java
+++ b/app/src/main/java/org/gnucash/android/export/ExportParams.java
@@ -16,9 +16,15 @@
package org.gnucash.android.export;
+import android.preference.PreferenceManager;
+
+import org.gnucash.android.BuildConfig;
+import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.ui.export.ExportFormFragment;
+import java.sql.Timestamp;
+
/**
* Encapsulation of the parameters used for exporting transactions.
* The parameters are determined by the user in the export dialog and are then transmitted to the asynchronous task which
@@ -42,10 +48,9 @@ public enum ExportTarget {SD_CARD, SHARING, DROPBOX, GOOGLE_DRIVE }
private ExportFormat mExportFormat = ExportFormat.QIF;
/**
- * Flag to determine if all transactions (including previously exported ones) should be exported
- * By default only new transactions since the last export will be exported.
+ * All transactions created after this date will be exported
*/
- private boolean mExportAllTransactions = false;
+ private Timestamp mExportStartTime = Timestamp.valueOf(Exporter.TIMESTAMP_ZERO);
/**
* Flag to determine if all transactions should be deleted after exporting is complete
@@ -58,11 +63,6 @@ public enum ExportTarget {SD_CARD, SHARING, DROPBOX, GOOGLE_DRIVE }
*/
private ExportTarget mExportTarget = ExportTarget.SHARING;
- /**
- * File path for the internal saving of transactions before determining export destination.
- */
- private String mTargetFilepath;
-
/**
* Creates a new set of paramters and specifies the export format
* @param format Format to use when exporting the transactions
@@ -85,24 +85,23 @@ public ExportFormat getExportFormat() {
*/
public void setExportFormat(ExportFormat exportFormat) {
this.mExportFormat = exportFormat;
- this.mTargetFilepath = GnuCashApplication.getAppContext().getFilesDir() + "/"
- + Exporter.buildExportFilename(mExportFormat);
}
/**
- * Returns flag whether all transactions should be exported, or only new ones since last export
- * @return true
if all transactions should be exported, false
otherwise
+ * Return date from which to start exporting transactions
+ * Transactions created or modified after this timestamp will be exported
+ * @return Timestamp from which to export
*/
- public boolean shouldExportAllTransactions() {
- return mExportAllTransactions;
+ public Timestamp getExportStartTime(){
+ return mExportStartTime;
}
/**
- * Sets flag for exporting all transactions or only new transactions since last export
- * @param exportAll Boolean flag
+ * Set the timestamp after which all transactions created/modified will be exported
+ * @param exportStartTime Timestamp
*/
- public void setExportAllTransactions(boolean exportAll) {
- this.mExportAllTransactions = exportAll;
+ public void setExportStartTime(Timestamp exportStartTime){
+ this.mExportStartTime = exportStartTime;
}
/**
@@ -137,19 +136,10 @@ public void setExportTarget(ExportTarget mExportTarget) {
this.mExportTarget = mExportTarget;
}
- /**
- * Returns the internal target file path for the exported transactions.
- * This file path is not accessible outside the context of the application
- * @return String path to exported transactions
- */
- public String getTargetFilepath() {
- return mTargetFilepath;
- }
-
@Override
public String toString() {
- return "Export " + mExportFormat.name() + " to " + mExportTarget.name() + " at "
- + mTargetFilepath;
+ return "Export all transactions created since " + mExportStartTime.toString()
+ + " as "+ mExportFormat.name() + " to " + mExportTarget.name();
}
/**
@@ -159,11 +149,10 @@ public String toString() {
*/
public String toCsv(){
String separator = ";";
- String csv = mExportFormat.name() + separator + mExportTarget.name() + separator
- + Boolean.toString(mExportAllTransactions) + separator
- + Boolean.toString(mDeleteTransactionsAfterExport);
- return csv;
+ return mExportFormat.name() + separator + mExportTarget.name() + separator
+ + mExportStartTime.toString() + separator
+ + Boolean.toString(mDeleteTransactionsAfterExport);
}
/**
@@ -175,7 +164,7 @@ public static ExportParams parseCsv(String csvParams){
String[] tokens = csvParams.split(";");
ExportParams params = new ExportParams(ExportFormat.valueOf(tokens[0]));
params.setExportTarget(ExportTarget.valueOf(tokens[1]));
- params.setExportAllTransactions(Boolean.parseBoolean(tokens[2]));
+ params.setExportStartTime(Timestamp.valueOf(tokens[2]));
params.setDeleteTransactionsAfterExport(Boolean.parseBoolean(tokens[3]));
return params;
diff --git a/app/src/main/java/org/gnucash/android/export/Exporter.java b/app/src/main/java/org/gnucash/android/export/Exporter.java
index 41f041661..9727f1013 100644
--- a/app/src/main/java/org/gnucash/android/export/Exporter.java
+++ b/app/src/main/java/org/gnucash/android/export/Exporter.java
@@ -35,12 +35,11 @@
import org.gnucash.android.db.TransactionsDbAdapter;
import java.io.File;
-import java.io.FileFilter;
-import java.io.Writer;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.List;
import java.util.Locale;
/**
@@ -74,7 +73,16 @@ public abstract class Exporter {
/**
* Export options
*/
- protected ExportParams mParameters;
+ protected ExportParams mExportParams;
+
+ /**
+ * Cache directory to which files will be first exported before moved to final destination.
+ * There is a different cache dir per export format, which has the name of the export format.
+ * The cache dir is cleared every time a new {@link Exporter} is instantiated.
+ * The files created here are only accessible within this application, and should be copied to SD card before they can be shared
+ *
+ */
+ protected File mCacheDir;
private static final SimpleDateFormat EXPORT_FILENAME_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US);
@@ -92,28 +100,32 @@ public abstract class Exporter {
protected TransactionsDbAdapter mTransactionsDbAdapter;
protected SplitsDbAdapter mSplitsDbAdapter;
protected ScheduledActionDbAdapter mScheduledActionDbAdapter;
- protected PricesDbAdapter mPricesDbAdpater;
+ protected PricesDbAdapter mPricesDbAdapter;
protected CommoditiesDbAdapter mCommoditiesDbAdapter;
protected Context mContext;
public Exporter(ExportParams params, SQLiteDatabase db) {
- this.mParameters = params;
+ this.mExportParams = params;
mContext = GnuCashApplication.getAppContext();
if (db == null) {
mAccountsDbAdapter = AccountsDbAdapter.getInstance();
mTransactionsDbAdapter = TransactionsDbAdapter.getInstance();
mSplitsDbAdapter = SplitsDbAdapter.getInstance();
mScheduledActionDbAdapter = ScheduledActionDbAdapter.getInstance();
- mPricesDbAdpater = PricesDbAdapter.getInstance();
+ mPricesDbAdapter = PricesDbAdapter.getInstance();
mCommoditiesDbAdapter = CommoditiesDbAdapter.getInstance();
} else {
mSplitsDbAdapter = new SplitsDbAdapter(db);
mTransactionsDbAdapter = new TransactionsDbAdapter(db, mSplitsDbAdapter);
mAccountsDbAdapter = new AccountsDbAdapter(db, mTransactionsDbAdapter);
mScheduledActionDbAdapter = new ScheduledActionDbAdapter(db);
- mPricesDbAdpater = new PricesDbAdapter(db);
+ mPricesDbAdapter = new PricesDbAdapter(db);
mCommoditiesDbAdapter = new CommoditiesDbAdapter(db);
}
+
+ mCacheDir = new File(mContext.getCacheDir(), params.getExportFormat().name());
+ mCacheDir.mkdir();
+ purgeDirectory(mCacheDir);
}
/**
@@ -121,10 +133,8 @@ public Exporter(ExportParams params, SQLiteDatabase db) {
* @return String containing the file name
*/
public static String buildExportFilename(ExportFormat format) {
- String filename = EXPORT_FILENAME_DATE_FORMAT.format(
- new Date(System.currentTimeMillis()))
+ return EXPORT_FILENAME_DATE_FORMAT.format(new Date(System.currentTimeMillis()))
+ "_gnucash_export" + format.getExtension();
- return filename;
}
/**
@@ -149,59 +159,44 @@ public static long getExportTime(String filename){
}
/**
- * Builds a file (creating folders where necessary) for saving the exported data
- * @param format Export format which determines the file extension
- * @return File for export
- * @see #EXPORT_FOLDER_PATH
+ * Generates the export output
+ * @throws ExporterException if an error occurs during export
*/
- public static File createExportFile(ExportFormat format){
- new File(EXPORT_FOLDER_PATH).mkdirs();
- return new File(EXPORT_FOLDER_PATH + buildExportFilename(format));
- }
+ public abstract List generateExport() throws ExporterException;
/**
- * Builds a file for backups of the database (in XML) format.
- * Backups are usually zipped and have extension ".zip"
- * @return File for saving backups
- * @see #BACKUP_FOLDER_PATH
+ * Recursively delete all files in a directory
+ * @param directory File descriptor for directory
*/
- public static File buildBackupFile(){
- new File(BACKUP_FOLDER_PATH).mkdirs();
- return new File(BACKUP_FOLDER_PATH + buildExportFilename(ExportFormat.XML) + ".zip");
+ private void purgeDirectory(File directory){
+ for (File file : directory.listFiles()) {
+ if (file.isDirectory())
+ purgeDirectory(file);
+ else
+ file.delete();
+ }
}
/**
- * Returns the most recent backup file from the backup folder
- * @return Last modified file from backup folder
- * @see #BACKUP_FOLDER_PATH
+ * Returns the path to the file where the exporter should save the export during generation
+ * This path is a temporary cache file whose file extension matches the export format.
+ * This file is deleted every time a new export is started
+ * @return Absolute path to file
*/
- public static File getMostRecentBackupFile(){
- File backupFolder = new File(BACKUP_FOLDER_PATH);
- if (!backupFolder.exists())
- return null;
-
- File[] files = backupFolder.listFiles(new FileFilter() {
- public boolean accept(File file) {
- return file.isFile();
- }
- });
- long lastMod = Long.MIN_VALUE;
- File backupFile = null;
- for (File file : files) {
- if (file.lastModified() > lastMod) {
- backupFile = file;
- lastMod = file.lastModified();
- }
- }
- return backupFile;
+ protected String getExportCacheFilePath(){
+ String cachePath = mCacheDir.getAbsolutePath();
+ if (!cachePath.endsWith("/"))
+ cachePath += "/";
+ return cachePath + buildExportFilename(mExportParams.getExportFormat());
}
/**
- * Generates the export output
- * @param writer A Writer to export result to
- * @throws ExporterException if an error occurs during export
+ * Returns the MIME type for this exporter.
+ * @return MIME type as string
*/
- public abstract void generateExport(Writer writer) throws ExporterException;
+ public String getExportMimeType(){
+ return "text/plain";
+ }
public static class ExporterException extends RuntimeException{
diff --git a/app/src/main/java/org/gnucash/android/export/ofx/OfxExporter.java b/app/src/main/java/org/gnucash/android/export/ofx/OfxExporter.java
index ff9b144ea..c29e426bd 100644
--- a/app/src/main/java/org/gnucash/android/export/ofx/OfxExporter.java
+++ b/app/src/main/java/org/gnucash/android/export/ofx/OfxExporter.java
@@ -34,10 +34,15 @@
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.sql.Timestamp;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
@@ -99,7 +104,7 @@ private void generateOfx(Document doc, Element parent){
//add account details (transactions) to the XML document
- account.toOfx(doc, statementTransactionResponse, mParameters.shouldExportAllTransactions());
+ account.toOfx(doc, statementTransactionResponse, mExportParams.getExportStartTime());
//mark as exported
accountsDbAdapter.markAsExported(account.getUID());
@@ -107,9 +112,9 @@ private void generateOfx(Document doc, Element parent){
}
}
- public String generateExport() throws ExporterException {
- mAccountsList = mParameters.shouldExportAllTransactions() ?
- mAccountsDbAdapter.getAllRecords() : mAccountsDbAdapter.getExportableAccounts();
+ // FIXME: Move code to generateExport()
+ private String generateOfxExport() throws ExporterException {
+ mAccountsList = mAccountsDbAdapter.getExportableAccounts(mExportParams.getExportStartTime());
DocumentBuilderFactory docFactory = DocumentBuilderFactory
.newInstance();
@@ -117,7 +122,7 @@ public String generateExport() throws ExporterException {
try {
docBuilder = docFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
- throw new ExporterException(mParameters, e);
+ throw new ExporterException(mExportParams, e);
}
Document document = docBuilder.newDocument();
@@ -142,25 +147,36 @@ public String generateExport() throws ExporterException {
return stringWriter.toString();
} else {
Node ofxNode = document.getElementsByTagName("OFX").item(0);
-
write(ofxNode, stringWriter, true);
-
- StringBuffer stringBuffer = new StringBuffer(OfxHelper.OFX_SGML_HEADER);
- stringBuffer.append('\n');
- stringBuffer.append(stringWriter.toString());
PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(Exporter.PREF_LAST_EXPORT_TIME, timeStamp).apply();
- return stringBuffer.toString();
+ return OfxHelper.OFX_SGML_HEADER + '\n' + stringWriter.toString();
}
}
@Override
- public void generateExport(Writer writer) throws ExporterException {
+ public List generateExport() throws ExporterException {
+ BufferedWriter writer = null;
+
try {
- writer.write(generateExport());
- }
- catch (IOException e) {
- throw new ExporterException(mParameters, e);
+ File file = new File(getExportCacheFilePath());
+ writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
+ writer.write(generateOfxExport());
+ } catch (IOException e) {
+ throw new ExporterException(mExportParams, e);
+ } finally {
+ if (writer != null) {
+ try {
+ writer.close();
+ } catch (IOException e) {
+ throw new ExporterException(mExportParams, e);
+ }
+ }
}
+
+ List exportedFiles = new ArrayList<>();
+ exportedFiles.add(getExportCacheFilePath());
+
+ return exportedFiles;
}
/**
@@ -189,4 +205,12 @@ private void write(Node node, Writer outputWriter, boolean omitXmlDeclaration){
Crashlytics.logException(tfException);
}
}
+
+ /**
+ * Returns the MIME type for this exporter.
+ * @return MIME type as string
+ */
+ public String getExportMimeType(){
+ return "text/xml";
+ }
}
diff --git a/app/src/main/java/org/gnucash/android/export/qif/QifExporter.java b/app/src/main/java/org/gnucash/android/export/qif/QifExporter.java
index ac5ca01cc..6c1fcfde6 100644
--- a/app/src/main/java/org/gnucash/android/export/qif/QifExporter.java
+++ b/app/src/main/java/org/gnucash/android/export/qif/QifExporter.java
@@ -21,19 +21,18 @@
import android.preference.PreferenceManager;
import org.gnucash.android.db.AccountsDbAdapter;
-import org.gnucash.android.db.DatabaseSchema;
import org.gnucash.android.db.TransactionsDbAdapter;
import org.gnucash.android.export.ExportParams;
import org.gnucash.android.export.Exporter;
-import org.gnucash.android.model.Transaction;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.Writer;
+import java.io.OutputStreamWriter;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -57,11 +56,11 @@ public QifExporter(ExportParams params){
}
@Override
- public void generateExport(Writer writer) throws ExporterException {
+ public List generateExport() throws ExporterException {
final String newLine = "\n";
TransactionsDbAdapter transactionsDbAdapter = mTransactionsDbAdapter;
try {
- String lastExportTimeStamp = PreferenceManager.getDefaultSharedPreferences(mContext).getString(Exporter.PREF_LAST_EXPORT_TIME, Exporter.TIMESTAMP_ZERO);
+ String lastExportTimeStamp = mExportParams.getExportStartTime().toString();
Cursor cursor = transactionsDbAdapter.fetchTransactionsWithSplitsWithTransactionAccount(
new String[]{
TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_UID + " AS trans_uid",
@@ -88,15 +87,17 @@ public void generateExport(Writer writer) throws ExporterException {
// or if the transaction has only one split (the whole transaction would be lost if it is not selected)
"trans_split_count == 1 )" +
(
- mParameters.shouldExportAllTransactions() ?
- //"" : " AND " + TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_EXPORTED + "== 0"
- "" : " AND " + TransactionEntry.TABLE_NAME + "_" + DatabaseSchema.CommonColumns.COLUMN_MODIFIED_AT + " > \"" + lastExportTimeStamp + "\""
+ " AND " + TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_MODIFIED_AT + " > \"" + lastExportTimeStamp + "\""
),
null,
// trans_time ASC : put transactions in time order
// trans_uid ASC : put splits from the same transaction together
"acct1_currency ASC, trans_time ASC, trans_uid ASC"
);
+
+ File file = new File(getExportCacheFilePath());
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
+
try {
String currentCurrencyCode = "";
String currentAccountUID = "";
@@ -189,7 +190,7 @@ public void generateExport(Writer writer) throws ExporterException {
precision = 3;
break;
default:
- throw new ExporterException(mParameters, "split quantity has illegal denominator: "+ quantity_denom);
+ throw new ExporterException(mExportParams, "split quantity has illegal denominator: "+ quantity_denom);
}
Double quantity = 0.0;
if (quantity_denom != 0) {
@@ -204,22 +205,23 @@ public void generateExport(Writer writer) throws ExporterException {
// end last transaction
writer.append(QifHelper.ENTRY_TERMINATOR).append(newLine);
}
- }
- finally {
+ writer.flush();
+ } finally {
cursor.close();
+ writer.close();
}
+
ContentValues contentValues = new ContentValues();
contentValues.put(TransactionEntry.COLUMN_EXPORTED, 1);
transactionsDbAdapter.updateTransaction(contentValues, null, null);
- }
- catch (IOException e)
- {
- throw new ExporterException(mParameters, e);
- }
- /// export successful
- String timeStamp = new Timestamp(System.currentTimeMillis()).toString();
- PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(Exporter.PREF_LAST_EXPORT_TIME, timeStamp).apply();
+ /// export successful
+ String timeStamp = new Timestamp(System.currentTimeMillis()).toString();
+ PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(Exporter.PREF_LAST_EXPORT_TIME, timeStamp).apply();
+ return splitQIF(file);
+ } catch (IOException e) {
+ throw new ExporterException(mExportParams, e);
+ }
}
/**
@@ -229,16 +231,12 @@ public void generateExport(Writer writer) throws ExporterException {
* @return a list of paths of the newly created Qif files.
* @throws IOException if something went wrong while splitting the file.
*/
- public static List splitQIF(File file) throws IOException {
- return splitQIF(file, file);
- }
-
- public static List splitQIF(File src, File dst) throws IOException {
+ public List splitQIF(File file) throws IOException {
// split only at the last dot
- String[] pathParts = dst.getPath().split("(?=\\.[^\\.]+$)");
+ String[] pathParts = file.getPath().split("(?=\\.[^\\.]+$)");
ArrayList splitFiles = new ArrayList<>();
String line;
- BufferedReader in = new BufferedReader(new FileReader(src));
+ BufferedReader in = new BufferedReader(new FileReader(file));
BufferedWriter out = null;
try {
while ((line = in.readLine()) != null) {
@@ -252,7 +250,7 @@ public static List splitQIF(File src, File dst) throws IOException {
out = new BufferedWriter(new FileWriter(newFileName));
} else {
if (out == null) {
- throw new IllegalArgumentException(src.getPath() + " format is not correct");
+ throw new IllegalArgumentException(file.getPath() + " format is not correct");
}
out.append(line).append('\n');
}
@@ -265,4 +263,12 @@ public static List splitQIF(File src, File dst) throws IOException {
}
return splitFiles;
}
+
+ /**
+ * Returns the mime type for this Exporter.
+ * @return MIME type as string
+ */
+ public String getExportMimeType(){
+ return "text/plain";
+ }
}
diff --git a/app/src/main/java/org/gnucash/android/export/xml/GncXmlExporter.java b/app/src/main/java/org/gnucash/android/export/xml/GncXmlExporter.java
index 6d8179ebd..407d65ad8 100644
--- a/app/src/main/java/org/gnucash/android/export/xml/GncXmlExporter.java
+++ b/app/src/main/java/org/gnucash/android/export/xml/GncXmlExporter.java
@@ -41,6 +41,7 @@
import org.xmlpull.v1.XmlSerializer;
import java.io.BufferedOutputStream;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
@@ -53,7 +54,6 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-import java.util.UUID;
import java.util.zip.GZIPOutputStream;
import static org.gnucash.android.db.DatabaseSchema.ScheduledActionEntry;
@@ -426,7 +426,7 @@ private void exportTransactions(XmlSerializer xmlSerializer, boolean exportTempl
// account guid
xmlSerializer.startTag(null, GncXmlHelper.TAG_SPLIT_ACCOUNT);
xmlSerializer.attribute(null, GncXmlHelper.ATTR_KEY_TYPE, GncXmlHelper.ATTR_VALUE_GUID);
- String splitAccountUID = null;
+ String splitAccountUID;
if (exportTemplates){
//get the UID of the template account
splitAccountUID = mTransactionToTemplateAccountMap.get(curTrxUID).getUID();
@@ -636,7 +636,7 @@ private void exportCommodity(XmlSerializer xmlSerializer, List currenc
private void exportPrices(XmlSerializer xmlSerializer) throws IOException {
xmlSerializer.startTag(null, GncXmlHelper.TAG_PRICEDB);
xmlSerializer.attribute(null, GncXmlHelper.ATTR_KEY_VERSION, "1");
- Cursor cursor = mPricesDbAdpater.fetchAllRecords();
+ Cursor cursor = mPricesDbAdapter.fetchAllRecords();
try {
while(cursor.moveToNext()) {
xmlSerializer.startTag(null, GncXmlHelper.TAG_PRICE);
@@ -650,7 +650,7 @@ private void exportPrices(XmlSerializer xmlSerializer) throws IOException {
xmlSerializer.startTag(null, GncXmlHelper.TAG_COMMODITY_SPACE);
xmlSerializer.text("ISO4217");
xmlSerializer.endTag(null, GncXmlHelper.TAG_COMMODITY_SPACE);
- xmlSerializer.startTag(null, GncXmlHelper.TAG_COMMODITY_ID);;
+ xmlSerializer.startTag(null, GncXmlHelper.TAG_COMMODITY_ID);
xmlSerializer.text(mCommoditiesDbAdapter.getCurrencyCode(cursor.getString(cursor.getColumnIndexOrThrow(DatabaseSchema.PriceEntry.COLUMN_COMMODITY_UID))));
xmlSerializer.endTag(null, GncXmlHelper.TAG_COMMODITY_ID);
xmlSerializer.endTag(null, GncXmlHelper.TAG_PRICE_COMMODITY);
@@ -659,7 +659,7 @@ private void exportPrices(XmlSerializer xmlSerializer) throws IOException {
xmlSerializer.startTag(null, GncXmlHelper.TAG_COMMODITY_SPACE);
xmlSerializer.text("ISO4217");
xmlSerializer.endTag(null, GncXmlHelper.TAG_COMMODITY_SPACE);
- xmlSerializer.startTag(null, GncXmlHelper.TAG_COMMODITY_ID);;
+ xmlSerializer.startTag(null, GncXmlHelper.TAG_COMMODITY_ID);
xmlSerializer.text(mCommoditiesDbAdapter.getCurrencyCode(cursor.getString(cursor.getColumnIndexOrThrow(DatabaseSchema.PriceEntry.COLUMN_CURRENCY_UID))));
xmlSerializer.endTag(null, GncXmlHelper.TAG_COMMODITY_ID);
xmlSerializer.endTag(null, GncXmlHelper.TAG_PRICE_CURRENCY);
@@ -695,16 +695,49 @@ private void exportPrices(XmlSerializer xmlSerializer) throws IOException {
}
@Override
- public void generateExport(Writer writer) throws ExporterException{
+ public List generateExport() throws ExporterException {
+ OutputStreamWriter writer = null;
+ String outputFile = getExportCacheFilePath();
try {
- String[] namespaces = new String[] {"gnc", "act", "book", "cd", "cmdty", "price", "slot",
+ FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
+ BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
+ writer = new OutputStreamWriter(bufferedOutputStream);
+
+ generateExport(writer);
+ } catch (IOException ex){
+ Crashlytics.log("Error exporting XML");
+ Crashlytics.logException(ex);
+ } finally {
+ if (writer != null) {
+ try {
+ writer.close();
+ } catch (IOException e) {
+ throw new ExporterException(mExportParams, e);
+ }
+ }
+ }
+
+ List exportedFiles = new ArrayList<>();
+ exportedFiles.add(outputFile);
+
+ return exportedFiles;
+ }
+
+ /**
+ * Generates an XML export of the database and writes it to the {@code writer} output stream
+ * @param writer Output stream
+ * @throws ExporterException
+ */
+ public void generateExport(Writer writer) throws ExporterException {
+ try {
+ String[] namespaces = new String[]{"gnc", "act", "book", "cd", "cmdty", "price", "slot",
"split", "trn", "ts", "sx", "recurrence"};
XmlSerializer xmlSerializer = XmlPullParserFactory.newInstance().newSerializer();
xmlSerializer.setOutput(writer);
xmlSerializer.startDocument("utf-8", true);
// root tag
xmlSerializer.startTag(null, GncXmlHelper.TAG_ROOT);
- for(String ns : namespaces) {
+ for (String ns : namespaces) {
xmlSerializer.attribute(null, "xmlns:" + ns, "http://www.gnucash.org/XML/" + ns);
}
// book count
@@ -722,7 +755,7 @@ public void generateExport(Writer writer) throws ExporterException{
xmlSerializer.endTag(null, GncXmlHelper.TAG_BOOK_ID);
//commodity count
List currencies = mAccountsDbAdapter.getCurrenciesInUse();
- for (int i = 0; i< currencies.size();i++) {
+ for (int i = 0; i < currencies.size(); i++) {
if (currencies.get(i).getCurrencyCode().equals("XXX")) {
currencies.remove(i);
}
@@ -742,7 +775,7 @@ public void generateExport(Writer writer) throws ExporterException{
xmlSerializer.text(mTransactionsDbAdapter.getRecordsCount() + "");
xmlSerializer.endTag(null, GncXmlHelper.TAG_COUNT_DATA);
//price count
- long priceCount = mPricesDbAdpater.getRecordsCount();
+ long priceCount = mPricesDbAdapter.getRecordsCount();
if (priceCount > 0) {
xmlSerializer.startTag(null, GncXmlHelper.TAG_COUNT_DATA);
xmlSerializer.attribute(null, GncXmlHelper.ATTR_KEY_CD_TYPE, "price");
@@ -772,29 +805,50 @@ public void generateExport(Writer writer) throws ExporterException{
xmlSerializer.endTag(null, GncXmlHelper.TAG_BOOK);
xmlSerializer.endTag(null, GncXmlHelper.TAG_ROOT);
xmlSerializer.endDocument();
+ xmlSerializer.flush();
} catch (Exception e) {
Crashlytics.logException(e);
- throw new ExporterException(mParameters, e);
+ throw new ExporterException(mExportParams, e);
}
}
+
+ /**
+ * Returns the MIME type for this exporter.
+ * @return MIME type as string
+ */
+ public String getExportMimeType(){
+ return "text/xml";
+ }
+
/**
- * Creates a backup of current database contents to the default backup location
+ * Creates a backup of current database contents to the directory {@link Exporter#BACKUP_FOLDER_PATH}
* @return {@code true} if backup was successful, {@code false} otherwise
*/
public static boolean createBackup(){
- ExportParams params = new ExportParams(ExportFormat.XML);
try {
- FileOutputStream fileOutputStream = new FileOutputStream(Exporter.buildBackupFile());
+ new File(BACKUP_FOLDER_PATH).mkdirs();
+ FileOutputStream fileOutputStream = new FileOutputStream(getBackupFilePath());
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(bufferedOutputStream);
- OutputStreamWriter outputStreamWriter = new OutputStreamWriter(gzipOutputStream);
- new GncXmlExporter(params).generateExport(outputStreamWriter);
- outputStreamWriter.close();
+ OutputStreamWriter writer = new OutputStreamWriter(gzipOutputStream);
+
+ ExportParams params = new ExportParams(ExportFormat.XML);
+ new GncXmlExporter(params).generateExport(writer);
return true;
- } catch (IOException e) {
+ } catch (IOException | ExporterException e) {
Crashlytics.logException(e);
- Log.e("GncXmlExporter", "Error creating backup", e);
+ Log.e("GncXmlExporter", "Error creating XML backup", e);
return false;
}
}
+
+ /**
+ * Returns the full path of a file to make database backup.
+ * Backups are done in XML format and are zipped (with ".zip" extension).
+ * @return the file path for backups of the database.
+ * @see #BACKUP_FOLDER_PATH
+ */
+ private static String getBackupFilePath(){
+ return BACKUP_FOLDER_PATH + buildExportFilename(ExportFormat.XML) + ".zip";
+ }
}
diff --git a/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java b/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java
index 40be52aac..b4ac1235f 100644
--- a/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java
+++ b/app/src/main/java/org/gnucash/android/importer/GncXmlHandler.java
@@ -23,6 +23,7 @@
import com.crashlytics.android.Crashlytics;
+import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.AccountsDbAdapter;
import org.gnucash.android.db.CommoditiesDbAdapter;
import org.gnucash.android.db.PricesDbAdapter;
@@ -230,6 +231,8 @@ public class GncXmlHandler extends DefaultHandler {
private PricesDbAdapter mPricesDbAdapter;
+ private Map mCurrencyCount;
+
/**
* Creates a handler for handling XML stream events when parsing the XML backup file
*/
@@ -275,6 +278,7 @@ private void init(@Nullable SQLiteDatabase db) {
mAutoBalanceSplits = new ArrayList<>();
mPriceList = new ArrayList<>();
+ mCurrencyCount = new HashMap<>();
}
@Override
@@ -372,6 +376,11 @@ public void endElement(String uri, String localName, String qualifiedName) throw
String currencyCode = mISO4217Currency ? characterString : NO_CURRENCY_CODE;
if (mAccount != null) {
mAccount.setCurrencyCode(currencyCode);
+ if (mCurrencyCount.containsKey(currencyCode)) {
+ mCurrencyCount.put(currencyCode, mCurrencyCount.get(currencyCode) + 1);
+ } else {
+ mCurrencyCount.put(currencyCode, 1);
+ }
}
if (mTransaction != null) {
mTransaction.setCurrencyCode(currencyCode);
@@ -844,6 +853,18 @@ public void endDocument() throws SAXException {
} finally {
mAccountsDbAdapter.endTransaction();
}
+
+ String mostAppearedCurrency = "";
+ int mostCurrencyAppearance = 0;
+ for (Map.Entry entry : mCurrencyCount.entrySet()) {
+ if (entry.getValue() > mostCurrencyAppearance) {
+ mostCurrencyAppearance = entry.getValue();
+ mostAppearedCurrency = entry.getKey();
+ }
+ }
+ if (mostCurrencyAppearance > 0) {
+ GnuCashApplication.setDefaultCurrencyCode(mostAppearedCurrency);
+ }
}
/**
@@ -857,7 +878,7 @@ private Commodity getCommodityForAccount(String accountUID){
return mAccountMap.get(accountUID).getCommodity();
} catch (Exception e) {
Crashlytics.logException(e);
- return Commodity.getInstance(Money.DEFAULT_CURRENCY_CODE);
+ return Commodity.DEFAULT_COMMODITY;
}
}
diff --git a/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java b/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java
index a0232003a..8619362db 100644
--- a/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java
+++ b/app/src/main/java/org/gnucash/android/importer/ImportAsyncTask.java
@@ -18,6 +18,7 @@
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ProgressDialog;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.util.Log;
@@ -35,17 +36,17 @@
* Imports a GnuCash (desktop) account file and displays a progress dialog.
* The AccountsActivity is opened when importing is done.
*/
-public class ImportAsyncTask extends AsyncTask {
- private final Activity context;
+public class ImportAsyncTask extends AsyncTask {
+ private final Activity mContext;
private TaskDelegate mDelegate;
- private ProgressDialog progressDialog;
+ private ProgressDialog mProgressDialog;
public ImportAsyncTask(Activity context){
- this.context = context;
+ this.mContext = context;
}
public ImportAsyncTask(Activity context, TaskDelegate delegate){
- this.context = context;
+ this.mContext = context;
this.mDelegate = delegate;
}
@@ -53,34 +54,36 @@ public ImportAsyncTask(Activity context, TaskDelegate delegate){
@Override
protected void onPreExecute() {
super.onPreExecute();
- progressDialog = new ProgressDialog(context);
- progressDialog.setTitle(R.string.title_progress_importing_accounts);
- progressDialog.setIndeterminate(true);
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- progressDialog.show();
+ mProgressDialog = new ProgressDialog(mContext);
+ mProgressDialog.setTitle(R.string.title_progress_importing_accounts);
+ mProgressDialog.setIndeterminate(true);
+ mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ mProgressDialog.show();
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB){
//these methods must be called after progressDialog.show()
- progressDialog.setProgressNumberFormat(null);
- progressDialog.setProgressPercentFormat(null);
+ mProgressDialog.setProgressNumberFormat(null);
+ mProgressDialog.setProgressPercentFormat(null);
}
}
@Override
- protected Boolean doInBackground(InputStream... inputStreams) {
+ protected Boolean doInBackground(Uri... uris) {
try {
- GncXmlImporter.parse(inputStreams[0]);
+ InputStream accountInputStream = mContext.getContentResolver().openInputStream(uris[0]);
+ GncXmlImporter.parse(accountInputStream);
} catch (Exception exception){
Log.e(ImportAsyncTask.class.getName(), "" + exception.getMessage());
Crashlytics.logException(exception);
exception.printStackTrace();
final String err_msg = exception.getLocalizedMessage();
- context.runOnUiThread(new Runnable() {
+ Crashlytics.log(err_msg);
+ mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
- Toast.makeText(context,
- context.getString(R.string.toast_error_importing_accounts) + "\n" + err_msg,
+ Toast.makeText(mContext,
+ mContext.getString(R.string.toast_error_importing_accounts) + "\n" + err_msg,
Toast.LENGTH_LONG).show();
}
});
@@ -96,18 +99,18 @@ protected void onPostExecute(Boolean importSuccess) {
mDelegate.onTaskComplete();
try {
- if (progressDialog != null && progressDialog.isShowing())
- progressDialog.dismiss();
+ if (mProgressDialog != null && mProgressDialog.isShowing())
+ mProgressDialog.dismiss();
} catch (IllegalArgumentException ex){
//TODO: This is a hack to catch "View not attached to window" exceptions
//FIXME by moving the creation and display of the progress dialog to the Fragment
} finally {
- progressDialog = null;
+ mProgressDialog = null;
}
int message = importSuccess ? R.string.toast_success_importing_accounts : R.string.toast_error_importing_accounts;
- Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
- AccountsActivity.start(context);
+ AccountsActivity.start(mContext);
}
}
diff --git a/app/src/main/java/org/gnucash/android/model/Account.java b/app/src/main/java/org/gnucash/android/model/Account.java
index 84dc317eb..6df050366 100644
--- a/app/src/main/java/org/gnucash/android/model/Account.java
+++ b/app/src/main/java/org/gnucash/android/model/Account.java
@@ -472,8 +472,9 @@ public static OfxAccountType convertToOfxAccountType(AccountType accountType){
* Converts this account's transactions into XML and adds them to the DOM document
* @param doc XML DOM document for the OFX data
* @param parent Parent node to which to add this account's transactions in XML
+ * @param exportStartTime Time from which to export transactions which are created/modified after
*/
- public void toOfx(Document doc, Element parent, boolean exportAllTransactions){
+ public void toOfx(Document doc, Element parent, Timestamp exportStartTime){
Element currency = doc.createElement(OfxHelper.TAG_CURRENCY_DEF);
currency.appendChild(doc.createTextNode(mCommodity.getCurrencyCode()));
@@ -529,9 +530,8 @@ public void toOfx(Document doc, Element parent, boolean exportAllTransactions){
bankTransactionsList.appendChild(dtstart);
bankTransactionsList.appendChild(dtend);
- Timestamp lastExportedTimestamp = Timestamp.valueOf(PreferenceManager.getDefaultSharedPreferences(GnuCashApplication.getAppContext()).getString(Exporter.PREF_LAST_EXPORT_TIME, Exporter.TIMESTAMP_ZERO));
for (Transaction transaction : mTransactionsList) {
- if (!exportAllTransactions && /*transaction.isExported()*/ transaction.getModifiedTimestamp().before(lastExportedTimestamp))
+ if (transaction.getModifiedTimestamp().before(exportStartTime))
continue;
bankTransactionsList.appendChild(transaction.toOFX(doc, getUID()));
}
diff --git a/app/src/main/java/org/gnucash/android/model/Commodity.java b/app/src/main/java/org/gnucash/android/model/Commodity.java
index 8169f4179..f60b787e3 100644
--- a/app/src/main/java/org/gnucash/android/model/Commodity.java
+++ b/app/src/main/java/org/gnucash/android/model/Commodity.java
@@ -15,6 +15,7 @@
*/
package org.gnucash.android.model;
+import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.CommoditiesDbAdapter;
/**
@@ -29,6 +30,8 @@ public enum Namespace { ISO4217 } //Namespace for commodities
/**
* Default commodity for device locale
+ * This value is set when a new application instance is created in {@link GnuCashApplication#onCreate()}.
+ * The value initialized here is just a placeholder for unit tests
*/
public static Commodity DEFAULT_COMMODITY = new Commodity("US Dollars", "USD", 100); //this value is a stub. Will be overwritten when the app is launched
@@ -161,17 +164,10 @@ public int getSmallestFraction() {
* @see #getSmallestFraction()
*/
public int getSmallestFractionDigits(){
- switch (mSmallestFraction) {
- case 1: return 0;
- case 10: return 1;
- case 100: return 2;
- case 1000: return 3;
- case 10000: return 4;
- case 100000: return 5;
- case 1000000: return 6;
- default:
- return 2;
- //throw new UnsupportedOperationException("Invalid fraction digits in commodity with fraction: " + mSmallestFraction);
+ if (mSmallestFraction == 0){
+ return 0;
+ } else {
+ return Integer.numberOfTrailingZeros(mSmallestFraction);
}
}
@@ -183,12 +179,7 @@ public int getSmallestFractionDigits(){
* @throws IllegalArgumentException if the smallest fraction is not a power of 10
*/
public void setSmallestFraction(int smallestFraction) {
- if (smallestFraction != 1 && smallestFraction != 10 && smallestFraction != 100
- && smallestFraction != 1000 && smallestFraction != 10000
- && smallestFraction != 1000000 ) //make sure we are not getting digits
- this.mSmallestFraction = 100;
- else
- this.mSmallestFraction = smallestFraction;
+ this.mSmallestFraction = smallestFraction;
}
public int getQuoteFlag() {
diff --git a/app/src/main/java/org/gnucash/android/model/Money.java b/app/src/main/java/org/gnucash/android/model/Money.java
index a30b5675b..02c6930ca 100644
--- a/app/src/main/java/org/gnucash/android/model/Money.java
+++ b/app/src/main/java/org/gnucash/android/model/Money.java
@@ -90,19 +90,19 @@ public static Money getZeroInstance(){
return sDefaultZero;
}
+ /**
+ * Returns the {@link BigDecimal} from the {@code numerator} and {@code denominator}
+ * @param numerator Number of the fraction
+ * @param denominator Denominator of the fraction
+ * @return BigDecimal representation of the number
+ */
public static BigDecimal getBigDecimal(long numerator, long denominator) {
int scale;
if (numerator == 0 && denominator == 0) {
denominator = 1;
}
- switch ((int)denominator) {
- case 1: scale = 0; break;
- case 10: scale = 1; break;
- case 100: scale = 2; break;
- case 1000: scale = 3; break;
- default:
- throw new InvalidParameterException("invalid denominator " + denominator);
- }
+
+ scale = Integer.numberOfTrailingZeros((int)denominator);
return new BigDecimal(BigInteger.valueOf(numerator), scale);
}
@@ -112,8 +112,8 @@ public static BigDecimal getBigDecimal(long numerator, long denominator) {
* @param commodity Commodity of the money
*/
public Money(BigDecimal amount, Commodity commodity){
- this.mAmount = amount;
this.mCommodity = commodity;
+ setAmount(amount); //commodity has to be set first. Because we use it's scale
}
/**
@@ -123,8 +123,9 @@ public Money(BigDecimal amount, Commodity commodity){
* @param currencyCode Currency code as specified by ISO 4217
*/
public Money(String amount, String currencyCode){
+ //commodity has to be set first
mCommodity = Commodity.getInstance(currencyCode);
- setAmount(amount);
+ setAmount(new BigDecimal(amount));
}
/**
@@ -226,22 +227,13 @@ public long getNumerator() {
* @return GnuCash format denominator
*/
public long getDenominator() {
- switch (getScale()) {
- case 0: return 1;
- case 1: return 10;
- case 2: return 100;
- case 3: return 1000;
- case 4: return 10000;
- case 5: return 100000;
- case 6: return 1000000; //I think GnuCash XML can have gold and silver with this denom
-
- }
- throw new RuntimeException("Unsupported number of fraction digits " + getScale());
+ int scale = getScale();
+ return BigDecimal.ONE.scaleByPowerOfTen(scale).longValueExact();
}
/**
* Returns the scale (precision) used for the decimal places of this amount.
- * The scale used depends on the currency
+ * The scale used depends on the commodity
* @return Scale of amount as integer
*/
private int getScale() {
@@ -287,15 +279,14 @@ public String asString(){
* @return String containing formatted Money representation
*/
public String formattedString(Locale locale){
-/*
-//todo: enable this code for 2.1 release. Test better too
+
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(locale);
Currency currency = Currency.getInstance(mCommodity.getCurrencyCode());
String symbol;
if (mCommodity.equals(Commodity.USD) && !locale.equals(Locale.US)) {
symbol = "US$";
- } else if (mCommodity.equals(Commodity.EUR) {
+ } else if (mCommodity.equals(Commodity.EUR)) {
symbol = currency.getSymbol(Locale.GERMANY); //euro currency is pretty unique around the world
} else {
symbol = currency.getSymbol(Locale.US); // US locale has the best symbol formatting table.
@@ -307,13 +298,14 @@ public String formattedString(Locale locale){
currencyFormat.setMaximumFractionDigits(mCommodity.getSmallestFractionDigits());
return currencyFormat.format(asDouble());
-*/
-
+/*
+// old currency formatting code
NumberFormat formatter = NumberFormat.getInstance(locale);
formatter.setMinimumFractionDigits(mCommodity.getSmallestFractionDigits());
formatter.setMaximumFractionDigits(mCommodity.getSmallestFractionDigits());
Currency currency = Currency.getInstance(mCommodity.getCurrencyCode());
return formatter.format(asDouble()) + " " + currency.getSymbol(locale);
+*/
}
/**
@@ -340,16 +332,7 @@ public Money negate(){
private void setAmount(@NonNull BigDecimal amount) {
mAmount = amount.setScale(mCommodity.getSmallestFractionDigits(), ROUNDING_MODE);
}
-
- /**
- * Sets the amount value of this Money
object
- * The amount
is parsed by the {@link BigDecimal} constructor
- * @param amount {@link String} amount to be set
- */
- private void setAmount(String amount){
- setAmount(parseToDecimal(amount));
- }
-
+
/**
* Returns a new Money
object whose value is the sum of the values of
* this object and addend
.
@@ -511,27 +494,6 @@ public int compareTo(@NonNull Money another) {
return mAmount.compareTo(another.mAmount);
}
- /**
- * Parses a Locale specific string into a number using format for {@link Locale#US}
- * @param amountString Formatted String amount
- * @return String amount formatted in the default locale
- */
- public static BigDecimal parseToDecimal(String amountString){
- char separator = new DecimalFormatSymbols(Locale.US).getGroupingSeparator();
- amountString = amountString.replace(Character.toString(separator), "");
- NumberFormat formatter = NumberFormat.getInstance(Locale.US);
- if (formatter instanceof DecimalFormat) {
- ((DecimalFormat)formatter).setParseBigDecimal(true);
- }
- BigDecimal result = new BigDecimal(0);
- try {
- result = (BigDecimal) formatter.parse(amountString);
- } catch (ParseException e) {
- Crashlytics.logException(e);
- }
- return result;
- }
-
/**
* Returns a new instance of {@link Money} object with the absolute value of the current object
* @return Money object with absolute value of this instance
diff --git a/app/src/main/java/org/gnucash/android/model/Split.java b/app/src/main/java/org/gnucash/android/model/Split.java
index 39b619064..5e19936c5 100644
--- a/app/src/main/java/org/gnucash/android/model/Split.java
+++ b/app/src/main/java/org/gnucash/android/model/Split.java
@@ -336,11 +336,11 @@ public static Split parseSplit(String splitCsvString) {
}
return split;
} else {
- int valueNum = Integer.parseInt(tokens[1]);
- int valueDenom = Integer.parseInt(tokens[2]);
+ long valueNum = Long.parseLong(tokens[1]);
+ long valueDenom = Long.parseLong(tokens[2]);
String valueCurrencyCode = tokens[3];
- int quantityNum = Integer.parseInt(tokens[4]);
- int quantityDenom = Integer.parseInt(tokens[5]);
+ long quantityNum = Long.parseLong(tokens[4]);
+ long quantityDenom = Long.parseLong(tokens[5]);
String qtyCurrencyCode = tokens[6];
Money value = new Money(valueNum, valueDenom, valueCurrencyCode);
diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java b/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java
index 0108312fc..b83b0288f 100644
--- a/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/account/AccountFormFragment.java
@@ -328,7 +328,6 @@ public void onClick(View view) {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- Cursor cursor = CommoditiesDbAdapter.getInstance().fetchAllRecords();
CommoditiesCursorAdapter commoditiesAdapter = new CommoditiesCursorAdapter(
getActivity(), android.R.layout.simple_spinner_item);
commoditiesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java b/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java
index 6a1915a61..494d817ba 100644
--- a/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java
+++ b/app/src/main/java/org/gnucash/android/ui/account/AccountsActivity.java
@@ -42,7 +42,7 @@
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentStatePagerAdapter;
+import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.Toolbar;
@@ -65,7 +65,6 @@
import org.gnucash.android.db.DatabaseSchema;
import org.gnucash.android.export.xml.GncXmlExporter;
import org.gnucash.android.importer.ImportAsyncTask;
-import org.gnucash.android.model.Money;
import org.gnucash.android.ui.common.BaseDrawerActivity;
import org.gnucash.android.ui.common.FormActivity;
import org.gnucash.android.ui.common.UxArgument;
@@ -77,7 +76,6 @@
import java.io.FileNotFoundException;
import java.io.InputStream;
-import java.util.ArrayList;
import butterknife.Bind;
import butterknife.ButterKnife;
@@ -152,12 +150,12 @@ public class AccountsActivity extends BaseDrawerActivity implements OnAccountCli
/**
* Configuration for rating the app
*/
- public static RateThisApp.Config rateAppConfig = new RateThisApp.Config(14, 100);
+ public static RateThisApp.Config rateAppConfig = new RateThisApp.Config(30, 100);
/**
* Adapter for managing the sub-account and transaction fragment pages in the accounts view
*/
- private class AccountViewPagerAdapter extends FragmentStatePagerAdapter {
+ private class AccountViewPagerAdapter extends FragmentPagerAdapter {
public AccountViewPagerAdapter(FragmentManager fm){
super(fm);
@@ -297,18 +295,9 @@ private void handleOpenFileIntent(Intent intent) {
Uri data = intent.getData();
if (data != null){
GncXmlExporter.createBackup();
-
intent.setData(null);
- InputStream accountInputStream = null;
- try {
- accountInputStream = getContentResolver().openInputStream(data);
- new ImportAsyncTask(this).execute(accountInputStream);
- } catch (FileNotFoundException e) {
- Crashlytics.logException(e);
- Log.e(LOG_TAG, "Error opening file for import - " + e.getMessage());
- } finally {
- removeFirstRunFlag();
- }
+ new ImportAsyncTask(this).execute(data);
+ removeFirstRunFlag();
}
}
@@ -380,8 +369,6 @@ public void setTab(int index){
private void init() {
PreferenceManager.setDefaultValues(this, R.xml.fragment_transaction_preferences, false);
- Money.DEFAULT_CURRENCY_CODE = GnuCashApplication.getDefaultCurrencyCode();
-
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean firstRun = prefs.getBoolean(getString(R.string.key_first_run), true);
@@ -495,12 +482,13 @@ public static void createDefaultAccounts(final String currencyCode, final Activi
@Override
public void onTaskComplete() {
AccountsDbAdapter.getInstance().updateAllAccounts(DatabaseSchema.AccountEntry.COLUMN_CURRENCY, currencyCode);
+ GnuCashApplication.setDefaultCurrencyCode(currencyCode);
}
};
}
- InputStream accountFileInputStream = activity.getResources().openRawResource(R.raw.default_accounts);
- new ImportAsyncTask(activity, delegate).execute(accountFileInputStream);
+ Uri uri = Uri.parse("android.resource://" + BuildConfig.APPLICATION_ID + "/" + R.raw.default_accounts);
+ new ImportAsyncTask(activity, delegate).execute(uri);
}
/**
@@ -539,14 +527,8 @@ public static void startXmlFileChooser(Activity activity) {
* @param data Intent data containing the XML uri
*/
public static void importXmlFileFromIntent(Activity context, Intent data) {
- try {
- GncXmlExporter.createBackup();
- InputStream accountInputStream = context.getContentResolver().openInputStream(data.getData());
- new ImportAsyncTask(context).execute(accountInputStream);
- } catch (FileNotFoundException e) {
- Crashlytics.logException(e);
- Toast.makeText(context, R.string.toast_error_importing_accounts, Toast.LENGTH_SHORT).show();
- }
+ GncXmlExporter.createBackup();
+ new ImportAsyncTask(context).execute(data.getData());
}
/**
diff --git a/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java b/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java
index 74deec211..a1623f233 100644
--- a/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/account/AccountsListFragment.java
@@ -49,6 +49,7 @@
import android.widget.TextView;
import org.gnucash.android.R;
+import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.AccountsDbAdapter;
import org.gnucash.android.db.DatabaseCursorLoader;
import org.gnucash.android.db.DatabaseSchema;
@@ -256,8 +257,9 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
else {
inflater.inflate(R.menu.account_actions, menu);
// Associate searchable configuration with the SearchView
+
SearchManager searchManager =
- (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
+ (SearchManager) GnuCashApplication.getAppContext().getSystemService(Context.SEARCH_SERVICE);
mSearchView = (android.support.v7.widget.SearchView)
MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
if (mSearchView == null)
diff --git a/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java b/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java
index 0303fde47..410b48a76 100644
--- a/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/export/ExportFormFragment.java
@@ -21,6 +21,7 @@
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
@@ -28,6 +29,7 @@
import android.support.v4.app.FragmentManager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.SwitchCompat;
import android.text.format.Time;
import android.util.Log;
import android.view.LayoutInflater;
@@ -39,13 +41,18 @@
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
+import com.codetroopers.betterpickers.calendardatepicker.CalendarDatePickerDialog;
+import com.codetroopers.betterpickers.radialtimepicker.RadialTimePickerDialog;
import com.codetroopers.betterpickers.recurrencepicker.EventRecurrence;
import com.codetroopers.betterpickers.recurrencepicker.EventRecurrenceFormatter;
import com.codetroopers.betterpickers.recurrencepicker.RecurrencePickerDialog;
+import com.crashlytics.android.Crashlytics;
import com.dropbox.sync.android.DbxAccountManager;
import org.gnucash.android.R;
@@ -54,26 +61,37 @@
import org.gnucash.android.export.ExportAsyncTask;
import org.gnucash.android.export.ExportFormat;
import org.gnucash.android.export.ExportParams;
+import org.gnucash.android.export.Exporter;
import org.gnucash.android.model.BaseModel;
import org.gnucash.android.model.ScheduledAction;
import org.gnucash.android.ui.account.AccountsActivity;
import org.gnucash.android.ui.common.UxArgument;
import org.gnucash.android.ui.settings.SettingsActivity;
+import org.gnucash.android.ui.transaction.TransactionFormFragment;
import org.gnucash.android.ui.util.RecurrenceParser;
+import java.sql.Timestamp;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
+
/**
* Dialog fragment for exporting accounts and transactions in various formats
* The dialog is used for collecting information on the export options and then passing them
* to the {@link org.gnucash.android.export.Exporter} responsible for exporting
* @author Ngewi Fet
*/
-public class
- ExportFormFragment extends Fragment implements RecurrencePickerDialog.OnRecurrenceSetListener {
+public class ExportFormFragment extends Fragment implements
+ RecurrencePickerDialog.OnRecurrenceSetListener,
+ CalendarDatePickerDialog.OnDateSetListener,
+ RadialTimePickerDialog.OnTimeSetListener {
/**
* Spinner for selecting destination for the exported file.
@@ -82,12 +100,6 @@
*/
@Bind(R.id.spinner_export_destination) Spinner mDestinationSpinner;
- /**
- * Checkbox indicating that all transactions should be exported,
- * regardless of whether they have been exported previously or not
- */
- @Bind(R.id.checkbox_export_all) CheckBox mExportAllCheckBox;
-
/**
* Checkbox for deleting all transactions after exporting them
*/
@@ -103,6 +115,24 @@
*/
@Bind(R.id.input_recurrence) TextView mRecurrenceTextView;
+ /**
+ * Text view displaying start date to export from
+ */
+ @Bind(R.id.export_start_date) TextView mExportStartDate;
+
+ @Bind(R.id.export_start_time) TextView mExportStartTime;
+
+ /**
+ * Switch toggling whether to export all transactions or not
+ */
+ @Bind(R.id.switch_export_all) SwitchCompat mExportAllSwitch;
+
+ @Bind(R.id.export_date_layout) LinearLayout mExportDateLayout;
+
+ @Bind(R.id.radio_ofx_format) RadioButton mOfxRadioButton;
+ @Bind(R.id.radio_qif_format) RadioButton mQifRadioButton;
+ @Bind(R.id.radio_xml_format) RadioButton mXmlRadioButton;
+
/**
* Event recurrence options
*/
@@ -113,6 +143,8 @@
*/
String mRecurrenceRule;
+ Calendar mExportStartCalendar = Calendar.getInstance();
+
/**
* Tag for logging
*/
@@ -126,7 +158,7 @@
private ExportParams.ExportTarget mExportTarget = ExportParams.ExportTarget.SD_CARD;
- public void onRadioButtonClicked(View view){
+ public void onRadioButtonClicked(View view){
switch (view.getId()){
case R.id.radio_ofx_format:
mExportFormat = ExportFormat.OFX;
@@ -136,6 +168,7 @@ public void onRadioButtonClicked(View view){
} else {
mExportWarningTextView.setVisibility(View.GONE);
}
+ mExportDateLayout.setVisibility(View.VISIBLE);
break;
case R.id.radio_qif_format:
@@ -147,12 +180,13 @@ public void onRadioButtonClicked(View view){
} else {
mExportWarningTextView.setVisibility(View.GONE);
}
+ mExportDateLayout.setVisibility(View.VISIBLE);
break;
case R.id.radio_xml_format:
mExportFormat = ExportFormat.XML;
mExportWarningTextView.setText(R.string.export_warning_xml);
-
+ mExportDateLayout.setVisibility(View.GONE);
break;
}
}
@@ -161,15 +195,13 @@ public void onRadioButtonClicked(View view){
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_export_form, container, false);
+
ButterKnife.bind(this, view);
- return view;
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
+ bindViewListeners();
+ return view;
+ }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.default_save_actions, menu);
@@ -196,7 +228,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- bindViews();
+
ActionBar supportActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
assert supportActionBar != null;
supportActionBar.setTitle(R.string.title_export_dialog);
@@ -233,7 +265,13 @@ private void getSDWritePermission(){
*/
private void startExport(){
ExportParams exportParameters = new ExportParams(mExportFormat);
- exportParameters.setExportAllTransactions(mExportAllCheckBox.isChecked());
+
+ if (mExportAllSwitch.isChecked()){
+ exportParameters.setExportStartTime(Timestamp.valueOf(Exporter.TIMESTAMP_ZERO));
+ } else {
+ exportParameters.setExportStartTime(new Timestamp(mExportStartCalendar.getTimeInMillis()));
+ }
+
exportParameters.setExportTarget(mExportTarget);
exportParameters.setDeleteTransactionsAfterExport(mDeleteAllCheckBox.isChecked());
@@ -248,12 +286,18 @@ private void startExport(){
Log.i(TAG, "Commencing async export of transactions");
new ExportAsyncTask(getActivity()).execute(exportParameters);
+ int position = mDestinationSpinner.getSelectedItemPosition();
+ PreferenceManager.getDefaultSharedPreferences(getActivity())
+ .edit().putInt(getString(R.string.key_last_export_destination), position)
+ .apply();
+
// finish the activity will cause the progress dialog to be leaked
// which would throw an exception
//getActivity().finish();
}
- private void bindViews(){
+ private void bindViewListeners(){
+ // export destination bindings
ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(),
R.array.export_destinations, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
@@ -300,9 +344,80 @@ public void onNothingSelected(AdapterView> parent) {
}
});
+
+ int position = PreferenceManager.getDefaultSharedPreferences(getActivity())
+ .getInt(getString(R.string.key_last_export_destination), 0);
+ mDestinationSpinner.setSelection(position);
+
+ //**************** export start time bindings ******************
+ String lastExportTimeStamp = PreferenceManager.getDefaultSharedPreferences(getActivity())
+ .getString(Exporter.PREF_LAST_EXPORT_TIME, Exporter.TIMESTAMP_ZERO);
+ Timestamp timestamp = Timestamp.valueOf(lastExportTimeStamp);
+ mExportStartCalendar.setTimeInMillis(timestamp.getTime());
+
+ Date date = new Date(timestamp.getTime());
+ mExportStartDate.setText(TransactionFormFragment.DATE_FORMATTER.format(date));
+ mExportStartTime.setText(TransactionFormFragment.TIME_FORMATTER.format(date));
+
+ mExportStartDate.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ long dateMillis = 0;
+ try {
+ Date date = TransactionFormFragment.DATE_FORMATTER.parse(mExportStartDate.getText().toString());
+ dateMillis = date.getTime();
+ } catch (ParseException e) {
+ Log.e(getTag(), "Error converting input time to Date object");
+ }
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(dateMillis);
+
+ int year = calendar.get(Calendar.YEAR);
+ int monthOfYear = calendar.get(Calendar.MONTH);
+ int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
+ CalendarDatePickerDialog datePickerDialog = CalendarDatePickerDialog.newInstance(
+ ExportFormFragment.this,
+ year, monthOfYear, dayOfMonth);
+ datePickerDialog.show(getFragmentManager(), "date_picker_fragment");
+ }
+ });
+
+ mExportStartTime.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ long timeMillis = 0;
+ try {
+ Date date = TransactionFormFragment.TIME_FORMATTER.parse(mExportStartTime.getText().toString());
+ timeMillis = date.getTime();
+ } catch (ParseException e) {
+ Log.e(getTag(), "Error converting input time to Date object");
+ }
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(timeMillis);
+
+ RadialTimePickerDialog timePickerDialog = RadialTimePickerDialog.newInstance(
+ ExportFormFragment.this, calendar.get(Calendar.HOUR_OF_DAY),
+ calendar.get(Calendar.MINUTE), true);
+ timePickerDialog.show(getFragmentManager(), "time_picker_dialog_fragment");
+ }
+ });
+
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
- mExportAllCheckBox.setChecked(sharedPrefs.getBoolean(getString(R.string.key_export_all_transactions), false));
-
+ mExportAllSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ mExportStartDate.setEnabled(!isChecked);
+ mExportStartTime.setEnabled(!isChecked);
+ int color = isChecked ? android.R.color.darker_gray : android.R.color.black;
+ mExportStartDate.setTextColor(getResources().getColor(color));
+ mExportStartTime.setTextColor(getResources().getColor(color));
+ }
+ });
+
+ mExportAllSwitch.setChecked(sharedPrefs.getBoolean(getString(R.string.key_export_all_transactions), false));
mDeleteAllCheckBox.setChecked(sharedPrefs.getBoolean(getString(R.string.key_delete_transactions_after_export), false));
mRecurrenceTextView.setOnClickListener(new View.OnClickListener() {
@@ -334,7 +449,7 @@ public void onClick(View view) {
String defaultExportFormat = sharedPrefs.getString(getString(R.string.key_default_export_format), ExportFormat.QIF.name());
mExportFormat = ExportFormat.valueOf(defaultExportFormat);
- View.OnClickListener clickListener = new View.OnClickListener() {
+ View.OnClickListener radioClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
onRadioButtonClicked(view);
@@ -344,28 +459,21 @@ public void onClick(View view) {
View v = getView();
assert v != null;
- RadioButton ofxRadioButton = (RadioButton) v.findViewById(R.id.radio_ofx_format);
- ofxRadioButton.setOnClickListener(clickListener);
- if (defaultExportFormat.equalsIgnoreCase(ExportFormat.OFX.name())) {
- ofxRadioButton.performClick();
- }
-
- RadioButton qifRadioButton = (RadioButton) v.findViewById(R.id.radio_qif_format);
- qifRadioButton.setOnClickListener(clickListener);
- if (defaultExportFormat.equalsIgnoreCase(ExportFormat.QIF.name())){
- qifRadioButton.performClick();
- }
+ mOfxRadioButton.setOnClickListener(radioClickListener);
+ mQifRadioButton.setOnClickListener(radioClickListener);
+ mXmlRadioButton.setOnClickListener(radioClickListener);
- RadioButton xmlRadioButton = (RadioButton) v.findViewById(R.id.radio_xml_format);
- xmlRadioButton.setOnClickListener(clickListener);
- if (defaultExportFormat.equalsIgnoreCase(ExportFormat.XML.name())){
- xmlRadioButton.performClick();
+ ExportFormat defaultFormat = ExportFormat.valueOf(defaultExportFormat.toUpperCase());
+ switch (defaultFormat){
+ case QIF: mQifRadioButton.performClick(); break;
+ case OFX: mOfxRadioButton.performClick(); break;
+ case XML: mXmlRadioButton.performClick(); break;
}
if (GnuCashApplication.isDoubleEntryEnabled()){
- ofxRadioButton.setVisibility(View.GONE);
+ mOfxRadioButton.setVisibility(View.GONE);
} else {
- xmlRadioButton.setVisibility(View.GONE);
+ mXmlRadioButton.setVisibility(View.GONE);
}
}
@@ -393,5 +501,21 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
}
+ @Override
+ public void onDateSet(CalendarDatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
+ Calendar cal = new GregorianCalendar(year, monthOfYear, dayOfMonth);
+ mExportStartDate.setText(TransactionFormFragment.DATE_FORMATTER.format(cal.getTime()));
+ mExportStartCalendar.set(Calendar.YEAR, year);
+ mExportStartCalendar.set(Calendar.MONTH, monthOfYear);
+ mExportStartCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
+ }
+
+ @Override
+ public void onTimeSet(RadialTimePickerDialog dialog, int hourOfDay, int minute) {
+ Calendar cal = new GregorianCalendar(0, 0, 0, hourOfDay, minute);
+ mExportStartTime.setText(TransactionFormFragment.TIME_FORMATTER.format(cal.getTime()));
+ mExportStartCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
+ mExportStartCalendar.set(Calendar.MINUTE, minute);
+ }
}
diff --git a/app/src/main/java/org/gnucash/android/ui/report/BarChartFragment.java b/app/src/main/java/org/gnucash/android/ui/report/BarChartFragment.java
index 2942a2b52..0cd2f3dd9 100644
--- a/app/src/main/java/org/gnucash/android/ui/report/BarChartFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/report/BarChartFragment.java
@@ -148,6 +148,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
// mChart.setDrawValuesForWholeStack(false);
mChart.getXAxis().setDrawGridLines(false);
mChart.getAxisRight().setEnabled(false);
+ mChart.getAxisLeft().setStartAtZero(false);
mChart.getAxisLeft().enableGridDashedLine(4.0f, 4.0f, 0);
mChart.getAxisLeft().setValueFormatter(new LargeValueFormatter(mCurrency.getSymbol(Locale.getDefault())));
Legend chartLegend = mChart.getLegend();
@@ -209,6 +210,22 @@ private BarData getData() {
double balance = mAccountsDbAdapter.getAccountsBalance(
Collections.singletonList(account.getUID()), start, end).asDouble();
if (balance != 0) {
+ stack.add((float) balance);
+
+ String accountName = account.getName();
+ while (labels.contains(accountName)) {
+ if (!accountToColorMap.containsKey(account.getUID())) {
+ for (String label : labels) {
+ if (label.equals(accountName)) {
+ accountName += " ";
+ }
+ }
+ } else {
+ break;
+ }
+ }
+ labels.add(accountName);
+
if (!accountToColorMap.containsKey(account.getUID())) {
Integer color;
if (mUseAccountColor) {
@@ -220,10 +237,8 @@ private BarData getData() {
}
accountToColorMap.put(account.getUID(), color);
}
-
- stack.add((float) balance);
- labels.add(account.getName());
colors.add(accountToColorMap.get(account.getUID()));
+
Log.d(TAG, mAccountType + tmpDate.toString(" MMMM yyyy ") + account.getName() + " = " + stack.get(stack.size() - 1));
}
}
@@ -438,7 +453,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
Legend legend = mChart.getLegend();
if (!legend.isLegendCustom()) {
Toast.makeText(getActivity(), R.string.toast_legend_too_long, Toast.LENGTH_LONG).show();
+ item.setChecked(false);
} else {
+ item.setChecked(!mChart.getLegend().isEnabled());
legend.setEnabled(!mChart.getLegend().isEnabled());
mChart.invalidate();
}
@@ -464,9 +481,16 @@ public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
String stackLabels = entry.getData().toString();
String label = mChart.getData().getXVals().get(entry.getXIndex()) + ", "
+ stackLabels.substring(1, stackLabels.length() - 1).split(",")[index];
- double value = entry.getVals()[index];
- double sum = mTotalPercentageMode ? mChart.getData().getDataSetByIndex(dataSetIndex).getYValueSum() : entry.getVal();
- selectedValueTextView.setText(String.format(SELECTED_VALUE_PATTERN, label, value, value / sum * 100));
+ double value = Math.abs(entry.getVals()[index]);
+ double sum = 0;
+ if (mTotalPercentageMode) {
+ for (BarEntry barEntry : mChart.getData().getDataSetByIndex(dataSetIndex).getYVals()) {
+ sum += barEntry.getNegativeSum() + barEntry.getPositiveSum();
+ }
+ } else {
+ sum = entry.getNegativeSum() + entry.getPositiveSum();
+ }
+ selectedValueTextView.setText(String.format(SELECTED_VALUE_PATTERN, label.trim(), value, value / sum * 100));
}
@Override
diff --git a/app/src/main/java/org/gnucash/android/ui/report/PieChartFragment.java b/app/src/main/java/org/gnucash/android/ui/report/PieChartFragment.java
index 64334bedd..f4b4ea5e9 100644
--- a/app/src/main/java/org/gnucash/android/ui/report/PieChartFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/report/PieChartFragment.java
@@ -33,8 +33,6 @@
import android.widget.TextView;
import com.github.mikephil.charting.charts.PieChart;
-import com.github.mikephil.charting.components.Legend.LegendForm;
-import com.github.mikephil.charting.components.Legend.LegendPosition;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
@@ -57,6 +55,9 @@
import butterknife.Bind;
import butterknife.ButterKnife;
+import static com.github.mikephil.charting.components.Legend.LegendForm;
+import static com.github.mikephil.charting.components.Legend.LegendPosition;
+
/**
* Activity used for drawing a pie chart
*
@@ -132,8 +133,10 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
mChart.setCenterTextSize(CENTER_TEXT_SIZE);
mChart.setDescription("");
- mChart.getLegend().setWordWrapEnabled(true);
mChart.setOnChartValueSelectedListener(this);
+ mChart.getLegend().setForm(LegendForm.CIRCLE);
+ mChart.getLegend().setWordWrapEnabled(true);
+ mChart.getLegend().setPosition(LegendPosition.BELOW_CHART_CENTER);
ReportsActivity reportsActivity = (ReportsActivity) getActivity();
mReportStartTime = reportsActivity.getReportStartTime();
@@ -193,8 +196,8 @@ private PieData getData() {
&& account.getCurrency() == Currency.getInstance(mCurrencyCode)) {
double balance = mAccountsDbAdapter.getAccountsBalance(Collections.singletonList(account.getUID()),
- mReportStartTime, mReportEndTime).absolute().asDouble();
- if (balance != 0) {
+ mReportStartTime, mReportEndTime).asDouble();
+ if (balance > 0) {
dataSet.addEntry(new Entry((float) balance, dataSet.getEntryCount()));
colors.add(mUseAccountColor && account.getColorHexCode() != null
? Color.parseColor(account.getColorHexCode())
@@ -278,7 +281,6 @@ private void bubbleSort() {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.chart_actions, menu);
- menu.findItem(R.id.menu_toggle_legend).setChecked(false);
}
@Override
@@ -303,8 +305,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
case R.id.menu_toggle_legend: {
mChart.getLegend().setEnabled(!mChart.getLegend().isEnabled());
- mChart.getLegend().setForm(LegendForm.CIRCLE);
- mChart.getLegend().setPosition(LegendPosition.RIGHT_OF_CHART_CENTER);
mChart.notifyDataSetChanged();
mChart.invalidate();
return true;
@@ -366,7 +366,7 @@ public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
if (e == null) return;
String label = mChart.getData().getXVals().get(e.getXIndex());
float value = e.getVal();
- float percent = value / mChart.getYValueSum() * 100;
+ float percent = value / mChart.getData().getYValueSum() * 100;
mSelectedValueTextView.setText(String.format(SELECTED_VALUE_PATTERN, label, value, percent));
}
diff --git a/app/src/main/java/org/gnucash/android/ui/report/ReportSummaryFragment.java b/app/src/main/java/org/gnucash/android/ui/report/ReportSummaryFragment.java
index f41a2ae56..88d2257a7 100644
--- a/app/src/main/java/org/gnucash/android/ui/report/ReportSummaryFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/report/ReportSummaryFragment.java
@@ -34,7 +34,7 @@
import android.widget.TextView;
import com.github.mikephil.charting.charts.PieChart;
-import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.Legend.LegendForm;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
@@ -57,6 +57,8 @@
import butterknife.Bind;
import butterknife.ButterKnife;
+import static com.github.mikephil.charting.components.Legend.LegendPosition;
+
/**
* Shows a summary of reports
* @author Ngewi Fet
@@ -138,8 +140,11 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
mChart.setCenterTextSize(PieChartFragment.CENTER_TEXT_SIZE);
mChart.setDescription("");
+ mChart.setDrawSliceText(false);
mChart.getLegend().setEnabled(true);
- mChart.getLegend().setPosition(Legend.LegendPosition.RIGHT_OF_CHART_CENTER);
+ mChart.getLegend().setWordWrapEnabled(true);
+ mChart.getLegend().setForm(LegendForm.CIRCLE);
+ mChart.getLegend().setPosition(LegendPosition.RIGHT_OF_CHART_CENTER);
mChart.getLegend().setTextSize(LEGEND_TEXT_SIZE);
ColorStateList csl = new ColorStateList(new int[][]{new int[0]}, new int[]{getResources().getColor(R.color.account_green)});
@@ -191,8 +196,9 @@ private PieData getData() {
long start = new LocalDate().minusMonths(2).dayOfMonth().withMinimumValue().toDate().getTime();
long end = new LocalDate().plusDays(1).toDate().getTime();
- double balance = mAccountsDbAdapter.getAccountsBalance(Collections.singletonList(account.getUID()), start, end).absolute().asDouble();
- if (balance != 0) {
+ double balance = mAccountsDbAdapter.getAccountsBalance(
+ Collections.singletonList(account.getUID()), start, end).asDouble();
+ if (balance > 0) {
dataSet.addEntry(new Entry((float) balance, dataSet.getEntryCount()));
colors.add(account.getColorHexCode() != null
? Color.parseColor(account.getColorHexCode())
@@ -224,6 +230,9 @@ private void displayChart() {
mChart.setTouchEnabled(true);
} else {
mChart.setData(getEmptyData());
+ mChart.setCenterText(getResources().getString(R.string.label_chart_no_data));
+ mChart.getLegend().setEnabled(false);
+ mChart.setTouchEnabled(false);
}
mChart.invalidate();
diff --git a/app/src/main/java/org/gnucash/android/ui/settings/AccountPreferencesFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/AccountPreferencesFragment.java
index 81804ccce..5242df81a 100644
--- a/app/src/main/java/org/gnucash/android/ui/settings/AccountPreferencesFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/settings/AccountPreferencesFragment.java
@@ -20,18 +20,24 @@
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
-import android.content.SharedPreferences;
+import android.database.Cursor;
import android.os.Bundle;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
-import android.preference.PreferenceManager;
import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
import org.gnucash.android.R;
+import org.gnucash.android.app.GnuCashApplication;
+import org.gnucash.android.db.CommoditiesDbAdapter;
+import org.gnucash.android.db.DatabaseSchema;
+import org.gnucash.android.model.Commodity;
import org.gnucash.android.model.Money;
import org.gnucash.android.ui.account.AccountsActivity;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Account settings fragment inside the Settings activity
*
@@ -41,7 +47,10 @@
@TargetApi(11)
public class AccountPreferencesFragment extends PreferenceFragment {
- private Activity activity;
+ private Activity mActivity;
+
+ List mCurrencyEntries = new ArrayList<>();
+ List mCurrencyEntryValues = new ArrayList<>();
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -53,17 +62,32 @@ public void onCreate(Bundle savedInstanceState) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(R.string.title_account_preferences);
- activity = getActivity();
+ mActivity = getActivity();
+
+ Cursor cursor = CommoditiesDbAdapter.getInstance().fetchAllRecords(DatabaseSchema.CommodityEntry.COLUMN_MNEMONIC + " ASC");
+ while(cursor.moveToNext()){
+ String code = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseSchema.CommodityEntry.COLUMN_MNEMONIC));
+ String name = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseSchema.CommodityEntry.COLUMN_FULLNAME));
+ mCurrencyEntries.add(code + " - " + name);
+ mCurrencyEntryValues.add(code);
+ }
+ cursor.close();
}
@Override
public void onResume() {
super.onResume();
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
- String defaultCurrency = sharedPreferences.getString(getString(R.string.key_default_currency), Money.DEFAULT_CURRENCY_CODE);
+
+ String defaultCurrency = GnuCashApplication.getDefaultCurrencyCode();
Preference pref = findPreference(getString(R.string.key_default_currency));
- pref.setSummary(defaultCurrency);
- pref.setOnPreferenceChangeListener((SettingsActivity)getActivity());
+ String currencyName = CommoditiesDbAdapter.getInstance().getCommodity(defaultCurrency).getFullname();
+ pref.setSummary(currencyName);
+ pref.setOnPreferenceChangeListener((SettingsActivity) getActivity());
+
+ CharSequence[] entries = new CharSequence[mCurrencyEntries.size()];
+ CharSequence[] entryValues = new CharSequence[mCurrencyEntryValues.size()];
+ ((ListPreference) pref).setEntries(mCurrencyEntries.toArray(entries));
+ ((ListPreference) pref).setEntryValues(mCurrencyEntryValues.toArray(entryValues));
Preference preference = findPreference(getString(R.string.key_import_accounts));
preference.setOnPreferenceClickListener((SettingsActivity)getActivity());
@@ -88,7 +112,7 @@ public boolean onPreferenceClick(Preference preference) {
.setPositiveButton(R.string.btn_create_accounts, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
- AccountsActivity.createDefaultAccounts(Money.DEFAULT_CURRENCY_CODE, activity);
+ AccountsActivity.createDefaultAccounts(Money.DEFAULT_CURRENCY_CODE, mActivity);
}
})
.setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() {
diff --git a/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java
index 0f222e714..32ff184f3 100644
--- a/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java
@@ -24,10 +24,9 @@
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
import org.gnucash.android.R;
-import org.gnucash.android.model.Money;
+import org.gnucash.android.app.GnuCashApplication;
/**
@@ -96,7 +95,7 @@ public void onResume() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(newValue.toString());
if (preference.getKey().equals(getString(R.string.key_default_currency))){
- Money.DEFAULT_CURRENCY_CODE = newValue.toString();
+ GnuCashApplication.setDefaultCurrencyCode(newValue.toString());
}
if (preference.getKey().equals(getString(R.string.key_default_export_email))){
diff --git a/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java b/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java
index 2e1e6247a..250a799c0 100644
--- a/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java
+++ b/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java
@@ -26,9 +26,12 @@
import android.content.Intent;
import android.content.IntentSender;
import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceManager;
@@ -51,12 +54,12 @@
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.AccountsDbAdapter;
+import org.gnucash.android.db.CommoditiesDbAdapter;
import org.gnucash.android.db.DatabaseSchema;
import org.gnucash.android.db.TransactionsDbAdapter;
import org.gnucash.android.export.Exporter;
import org.gnucash.android.export.xml.GncXmlExporter;
import org.gnucash.android.importer.ImportAsyncTask;
-import org.gnucash.android.model.Money;
import org.gnucash.android.model.Transaction;
import org.gnucash.android.ui.account.AccountsActivity;
import org.gnucash.android.ui.common.UxArgument;
@@ -66,7 +69,6 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -249,8 +251,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.getKey().equals(getString(R.string.key_default_currency))){
- Money.DEFAULT_CURRENCY_CODE = newValue.toString();
- preference.setSummary(newValue.toString());
+ GnuCashApplication.setDefaultCurrencyCode(newValue.toString());
+ String fullname = CommoditiesDbAdapter.getInstance().getCommodity(newValue.toString()).getFullname();
+ preference.setSummary(fullname);
} else if (preference.getKey().equals(getString(R.string.key_enable_passcode))) {
if ((Boolean) newValue) {
startActivityForResult(new Intent(this, PasscodePreferenceActivity.class),
@@ -276,6 +279,10 @@ protected boolean isValidFragment(String fragmentName) {
|| AboutPreferenceFragment.class.getName().equals(fragmentName);
}
+ /**
+ * Hide all imbalance accounts when double-entry mode is disabled
+ * @param useDoubleEntry flag if double entry is enabled or not
+ */
public void setImbalanceAccountsHidden(boolean useDoubleEntry) {
String isHidden = useDoubleEntry ? "0" : "1";
AccountsDbAdapter accountsDbAdapter = AccountsDbAdapter.getInstance();
@@ -288,13 +295,34 @@ public void setImbalanceAccountsHidden(boolean useDoubleEntry) {
}
}
+ /**
+ * Load the commodities from the database and set the options on the list preference
+ * Also sets this activity as a listener for preference changes
+ */
private void setDefaultCurrencyListener() {
- SharedPreferences manager = PreferenceManager.getDefaultSharedPreferences(this);
- String defaultCurrency = manager.getString(getString(R.string.key_default_currency), Money.DEFAULT_CURRENCY_CODE);
+ CommoditiesDbAdapter commoditiesDbAdapter = CommoditiesDbAdapter.getInstance();
+ List currencyEntries = new ArrayList<>((int)commoditiesDbAdapter.getRecordsCount());
+ List currencyEntryValues = new ArrayList<>((int)commoditiesDbAdapter.getRecordsCount());
+ Cursor cursor = commoditiesDbAdapter.fetchAllRecords(DatabaseSchema.CommodityEntry.COLUMN_MNEMONIC + " ASC");
+ while(cursor.moveToNext()){
+ String code = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseSchema.CommodityEntry.COLUMN_MNEMONIC));
+ String name = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseSchema.CommodityEntry.COLUMN_FULLNAME));
+
+ currencyEntries.add(code + " - " + name);
+ currencyEntryValues.add(code);
+ }
+ cursor.close();
+
+ CharSequence[] entries = new CharSequence[currencyEntries.size()];
+ CharSequence[] entryValues = new CharSequence[currencyEntryValues.size()];
+
@SuppressWarnings("deprecation")
Preference pref = findPreference(getString(R.string.key_default_currency));
- pref.setSummary(defaultCurrency);
+ pref.setSummary(GnuCashApplication.getDefaultCurrencyCode());
pref.setOnPreferenceChangeListener(this);
+
+ ((ListPreference) pref).setEntries(currencyEntries.toArray(entries));
+ ((ListPreference) pref).setEntryValues(currencyEntryValues.toArray(entryValues));
}
@Override
@@ -538,15 +566,7 @@ public void onClick(DialogInterface dialog, int which) {
@Override
public void onClick(DialogInterface dialog, int which) {
File backupFile = sortedBackupFiles[which];
-
- try {
- FileInputStream inputStream = new FileInputStream(backupFile);
- new ImportAsyncTask(SettingsActivity.this).execute(inputStream);
- } catch (FileNotFoundException e) {
- Crashlytics.logException(e);
- Log.e(LOG_TAG, "Error restoring backup: " + backupFile.getName());
- Toast.makeText(SettingsActivity.this, R.string.toast_error_importing_accounts, Toast.LENGTH_LONG).show();
- }
+ new ImportAsyncTask(SettingsActivity.this).execute(Uri.fromFile(backupFile));
}
});
diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java
index f4500c7f0..0b6416069 100644
--- a/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/transaction/SplitEditorFragment.java
@@ -25,6 +25,8 @@
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
+import android.text.Editable;
+import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -32,6 +34,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -41,6 +44,7 @@
import org.gnucash.android.R;
import org.gnucash.android.db.AccountsDbAdapter;
+import org.gnucash.android.db.CommoditiesDbAdapter;
import org.gnucash.android.db.DatabaseSchema;
import org.gnucash.android.model.AccountType;
import org.gnucash.android.model.BaseModel;
@@ -60,7 +64,6 @@
import java.math.BigDecimal;
import java.util.ArrayList;
-import java.util.Currency;
import java.util.List;
import butterknife.Bind;
@@ -75,12 +78,14 @@ public class SplitEditorFragment extends Fragment {
@Bind(R.id.split_list_layout) LinearLayout mSplitsLinearLayout;
@Bind(R.id.calculator_keyboard) KeyboardView mKeyboardView;
+ @Bind(R.id.imbalance_textview) TextView mImbalanceTextView;
private AccountsDbAdapter mAccountsDbAdapter;
private Cursor mCursor;
private SimpleCursorAdapter mCursorAdapter;
private List mSplitItemViewList;
private String mAccountUID;
+ private Commodity mCommodity;
private BigDecimal mBaseAmount = BigDecimal.ZERO;
@@ -88,6 +93,8 @@ public class SplitEditorFragment extends Fragment {
CalculatorKeyboard mCalculatorKeyboard;
+ BalanceTextWatcher mImbalanceWatcher = new BalanceTextWatcher();
+
/**
* Create and return a new instance of the fragment with the appropriate paramenters
* @param args Arguments to be set to the fragment.
@@ -143,6 +150,8 @@ public void onActivityCreated(Bundle savedInstanceState) {
view.findViewById(R.id.input_accounts_spinner).setEnabled(false);
view.findViewById(R.id.btn_remove_split).setVisibility(View.GONE);
}
+
+ TransactionsActivity.displayBalance(mImbalanceTextView, new Money(mBaseAmount.negate(), mCommodity));
}
@Override
@@ -214,6 +223,7 @@ private void initArgs() {
+ DatabaseSchema.AccountEntry.COLUMN_PLACEHOLDER + " = 0"
+ ")";
mCursor = mAccountsDbAdapter.fetchAccountsOrderedByFullName(conditions, null);
+ mCommodity = CommoditiesDbAdapter.getInstance().getCommodity(mAccountsDbAdapter.getCurrencyCode(mAccountUID));
}
/**
@@ -226,7 +236,7 @@ class SplitViewHolder implements OnTransferFundsListener{
@Bind(R.id.input_accounts_spinner) Spinner accountsSpinner;
@Bind(R.id.split_currency_symbol) TextView splitCurrencyTextView;
@Bind(R.id.split_uid) TextView splitUidTextView;
- @Bind(R.id.btn_split_type) TransactionTypeSwitch splitTypeButton;
+ @Bind(R.id.btn_split_type) TransactionTypeSwitch splitTypeSwitch;
View splitView;
Money quantity;
@@ -253,31 +263,37 @@ public void onClick(View view) {
mRemovedSplitUIDs.add(splitUidTextView.getText().toString());
mSplitsLinearLayout.removeView(splitView);
mSplitItemViewList.remove(splitView);
+ mImbalanceWatcher.afterTextChanged(null);
}
});
updateTransferAccountsList(accountsSpinner);
- Currency accountCurrency = Currency.getInstance(mAccountsDbAdapter.getCurrencyCode(mAccountUID));
- splitCurrencyTextView.setText(accountCurrency.getSymbol());
- splitTypeButton.setAmountFormattingListener(splitAmountEditText, splitCurrencyTextView);
- splitTypeButton.setChecked(mBaseAmount.signum() > 0);
+ splitCurrencyTextView.setText(mCommodity.getSymbol());
+ splitTypeSwitch.setAmountFormattingListener(splitAmountEditText, splitCurrencyTextView);
+ splitTypeSwitch.setChecked(mBaseAmount.signum() > 0);
splitUidTextView.setText(BaseModel.generateUID());
if (split != null) {
- splitAmountEditText.setCurrency(split.getValue().getCurrency());
+ splitAmountEditText.setCommodity(split.getValue().getCommodity());
splitAmountEditText.setValue(split.getFormattedValue().asBigDecimal());
splitCurrencyTextView.setText(split.getValue().getCurrency().getSymbol());
splitMemoEditText.setText(split.getMemo());
splitUidTextView.setText(split.getUID());
String splitAccountUID = split.getAccountUID();
setSelectedTransferAccount(mAccountsDbAdapter.getID(splitAccountUID), accountsSpinner);
- splitTypeButton.setAccountType(mAccountsDbAdapter.getAccountType(splitAccountUID));
- splitTypeButton.setChecked(split.getType());
+ splitTypeSwitch.setAccountType(mAccountsDbAdapter.getAccountType(splitAccountUID));
+ splitTypeSwitch.setChecked(split.getType());
}
- accountsSpinner.setOnItemSelectedListener(new SplitAccountListener(splitTypeButton, this));
-
+ accountsSpinner.setOnItemSelectedListener(new SplitAccountListener(splitTypeSwitch, this));
+ splitTypeSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ mImbalanceWatcher.afterTextChanged(null);
+ }
+ });
+ splitAmountEditText.addTextChangedListener(mImbalanceWatcher);
}
}
@@ -360,7 +376,7 @@ private List extractSplitsFromView(){
String accountUID = mAccountsDbAdapter.getUID(viewHolder.accountsSpinner.getSelectedItemId());
Split split = new Split(valueAmount, accountUID);
split.setMemo(viewHolder.splitMemoEditText.getText().toString());
- split.setType(viewHolder.splitTypeButton.getTransactionType());
+ split.setType(viewHolder.splitTypeSwitch.getTransactionType());
split.setUID(viewHolder.splitUidTextView.getText().toString().trim());
if (viewHolder.quantity != null)
split.setQuantity(viewHolder.quantity.absolute());
@@ -369,6 +385,43 @@ private List extractSplitsFromView(){
return splitList;
}
+ /**
+ * Updates the displayed balance of the accounts when the amount of a split is changed
+ */
+ private class BalanceTextWatcher implements TextWatcher {
+
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
+ //nothing to see here, move along
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
+ //nothing to see here, move along
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ BigDecimal imbalance = BigDecimal.ZERO;
+
+ for (View splitItem : mSplitItemViewList) {
+ SplitViewHolder viewHolder = (SplitViewHolder) splitItem.getTag();
+ viewHolder.splitAmountEditText.removeTextChangedListener(this);
+ BigDecimal amount = viewHolder.splitAmountEditText.getValue();
+ if (amount != null) {
+ if (viewHolder.splitTypeSwitch.isChecked()) {
+ imbalance = imbalance.subtract(amount);
+ } else {
+ imbalance = imbalance.add(amount);
+ }
+ }
+ viewHolder.splitAmountEditText.addTextChangedListener(this);
+ }
+
+ TransactionsActivity.displayBalance(mImbalanceTextView, new Money(imbalance.negate(), mCommodity));
+ }
+ }
+
/**
* Listens to changes in the transfer account and updates the currency symbol, the label of the
* transaction type and if neccessary
diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java
index dd2520453..6cd8d00b3 100644
--- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java
@@ -39,6 +39,7 @@
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView;
@@ -57,6 +58,7 @@
import com.codetroopers.betterpickers.recurrencepicker.RecurrencePickerDialog;
import org.gnucash.android.R;
+import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.AccountsDbAdapter;
import org.gnucash.android.db.CommoditiesDbAdapter;
import org.gnucash.android.db.DatabaseSchema;
@@ -354,6 +356,8 @@ public void onNothingSelected(AdapterView> adapterView) {
initializeViewsWithTransaction();
mEditMode = true;
}
+
+ getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
/**
@@ -533,7 +537,7 @@ private void initalizeViews() {
String typePref = PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(getString(R.string.key_default_transaction_type), "DEBIT");
mTransactionTypeSwitch.setChecked(TransactionType.valueOf(typePref));
- String code = Money.DEFAULT_CURRENCY_CODE;
+ String code = GnuCashApplication.getDefaultCurrencyCode();
if (mAccountUID != null){
code = mTransactionsDbAdapter.getAccountCurrencyCode(mAccountUID);
}
@@ -725,6 +729,12 @@ private void saveNewTransaction() {
String notes = mNotesEditText.getText().toString();
BigDecimal amountBigd = mAmountEditText.getValue();
+ if (amountBigd == null){ //if for whatever reason we cannot process the amount
+ Toast.makeText(getActivity(), R.string.toast_transanction_amount_required,
+ Toast.LENGTH_SHORT).show();
+ return;
+ }
+
Currency currency = Currency.getInstance(mTransactionsDbAdapter.getAccountCurrencyCode(mAccountUID));
Money amount = new Money(amountBigd, Commodity.getInstance(currency.getCurrencyCode())).absolute();
diff --git a/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java b/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java
index d58de4a4a..cad60a0b6 100644
--- a/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java
+++ b/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorEditText.java
@@ -37,14 +37,12 @@
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
-import org.gnucash.android.db.CommoditiesDbAdapter;
import org.gnucash.android.model.Commodity;
import org.gnucash.android.ui.common.FormActivity;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
-import java.util.Currency;
import java.util.Locale;
/**
@@ -55,7 +53,8 @@
*/
public class CalculatorEditText extends EditText {
CalculatorKeyboard mCalculatorKeyboard;
- private Currency mCurrency = Currency.getInstance(GnuCashApplication.getDefaultCurrencyCode());
+
+ private Commodity mCommodity = Commodity.DEFAULT_COMMODITY;
private Context mContext;
/**
@@ -238,17 +237,17 @@ public void setCalculatorKeyboard(CalculatorKeyboard keyboard){
* Returns the currency used for computations
* @return ISO 4217 currency
*/
- public Currency getCurrency() {
- return mCurrency;
+ public Commodity getCommodity() {
+ return mCommodity;
}
/**
- * Sets the currency to use for calculations
- * The currency determines the number of decimal places used
- * @param currency ISO 4217 currency
+ * Sets the commodity to use for calculations
+ * The commodity determines the number of decimal places used
+ * @param commodity ISO 4217 currency
*/
- public void setCurrency(Currency currency) {
- this.mCurrency = currency;
+ public void setCommodity(Commodity commodity) {
+ this.mCommodity = commodity;
}
/**
@@ -321,7 +320,7 @@ public BigDecimal getValue(){
return null;
try { //catch any exceptions in the conversion e.g. if a string with only "-" is entered
return new BigDecimal(amountString);
- } catch (Exception e){
+ } catch (NumberFormatException e){
String msg = "Error parsing amount string " + amountString + " from CalculatorEditText";
Log.i(getClass().getSimpleName(), msg, e);
Crashlytics.log(msg);
@@ -337,12 +336,11 @@ public BigDecimal getValue(){
* @param amount BigDecimal amount
*/
public void setValue(BigDecimal amount){
- Commodity commodity = CommoditiesDbAdapter.getInstance().getCommodity(mCurrency.getCurrencyCode());
- BigDecimal newAmount = amount.setScale(commodity.getSmallestFractionDigits(), BigDecimal.ROUND_HALF_EVEN);
+ BigDecimal newAmount = amount.setScale(mCommodity.getSmallestFractionDigits(), BigDecimal.ROUND_HALF_EVEN);
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
formatter.setMinimumFractionDigits(0);
- formatter.setMaximumFractionDigits(commodity.getSmallestFractionDigits());
+ formatter.setMaximumFractionDigits(mCommodity.getSmallestFractionDigits());
formatter.setGroupingUsed(false);
String resultString = formatter.format(newAmount.doubleValue());
diff --git a/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorKeyboard.java b/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorKeyboard.java
index 64bd15014..563685653 100644
--- a/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorKeyboard.java
+++ b/app/src/main/java/org/gnucash/android/ui/util/widget/CalculatorKeyboard.java
@@ -77,6 +77,10 @@ public void onKey(int primaryCode, int[] keyCodes) {
return;
*/
+ if (!(focusCurrent instanceof CalculatorEditText)){
+ return;
+ }
+
CalculatorEditText calculatorEditText = (CalculatorEditText) focusCurrent;
Editable editable = calculatorEditText.getText();
int start = calculatorEditText.getSelectionStart();
diff --git a/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java b/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java
index 83c274002..850d80329 100644
--- a/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java
+++ b/app/src/main/java/org/gnucash/android/ui/wizard/FirstRunWizardActivity.java
@@ -154,10 +154,9 @@ public void onClick(View view) {
}
}
+ GnuCashApplication.setDefaultCurrencyCode(mCurrencyCode);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(FirstRunWizardActivity.this);
SharedPreferences.Editor preferenceEditor = preferences.edit();
- preferenceEditor.putString(getString(R.string.key_default_currency), mCurrencyCode);
-
if (feedbackOption.equals(getString(R.string.wizard_option_auto_send_crash_reports))){
preferenceEditor.putBoolean(getString(R.string.key_enable_crashlytics), true);
diff --git a/app/src/main/res/layout/activity_transaction_detail.xml b/app/src/main/res/layout/activity_transaction_detail.xml
index 70af78a26..f04f239a8 100644
--- a/app/src/main/res/layout/activity_transaction_detail.xml
+++ b/app/src/main/res/layout/activity_transaction_detail.xml
@@ -64,6 +64,7 @@
android:gravity="bottom"
android:layout_gravity="bottom"
android:maxLines="1"
+ android:singleLine="true"
android:ellipsize="start"
android:textStyle="italic"
android:textColor="@android:color/white"
@@ -132,27 +133,25 @@
style="@style/TransactionInfo" />
-
-
+ android:src="@drawable/ic_action_sort_by_size"/>
-
-
-
+
+ android:src="@drawable/ic_action_rotate_right"/>
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_export_form.xml b/app/src/main/res/layout/fragment_export_form.xml
index 3fafbc43d..0d2944c3f 100644
--- a/app/src/main/res/layout/fragment_export_form.xml
+++ b/app/src/main/res/layout/fragment_export_form.xml
@@ -17,8 +17,10 @@
+ android:layout_height="match_parent"
+ tools:context=".ui.common.FormActivity">
-
+
-
+ android:layout_width="wrap_content"
+ style="@style/TextAppearance.EditTransaction_Small" />
+
+
+
+
+
-
-
diff --git a/app/src/main/res/layout/fragment_split_editor.xml b/app/src/main/res/layout/fragment_split_editor.xml
index 884d8aebe..ebc5337ab 100644
--- a/app/src/main/res/layout/fragment_split_editor.xml
+++ b/app/src/main/res/layout/fragment_split_editor.xml
@@ -21,9 +21,37 @@ limitations under the License.
android:layout_height="match_parent"
tools:context=".ui.FormActivity">
+
+
+
+
+
+
+
+
+ android:textSize="22sp">
+
+
@@ -63,6 +66,7 @@
android:layout_height="wrap_content"
android:hint="@string/label_transaction_amount"
android:inputType="none"
+ android:singleLine="true"
android:nextFocusDown="@+id/input_description"
android:background="@android:color/transparent"
android:textColor="@color/debit_red"
diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml
index c68c7e3c1..54aa639ba 100644
--- a/app/src/main/res/values-af-rZA/strings.xml
+++ b/app/src/main/res/values-af-rZA/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml
index a20a0ecc5..107153ca9 100644
--- a/app/src/main/res/values-ar-rSA/strings.xml
+++ b/app/src/main/res/values-ar-rSA/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml
index 372981249..7b935d0bc 100644
--- a/app/src/main/res/values-ca-rES/strings.xml
+++ b/app/src/main/res/values-ca-rES/strings.xml
@@ -85,183 +85,6 @@
Display account
Crea els comptes
Seleccioneu els comptes a crear
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
Llicència
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index e9bb88a3e..92c01bd4b 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml
deleted file mode 100644
index 7cea47001..000000000
--- a/app/src/main/res/values-da-rDK/strings.xml
+++ /dev/null
@@ -1,579 +0,0 @@
-
-
-
-
- Create Account
- Edit Account
- Info
- Export…
- Add a new transaction to an account
- No accounts to display
- Account name
- Cancel
- Save
- Enter Passcode
- Wrong passcode, please try again
- Passcode set
- Please confirm your passcode
- Invalid passcode confirmation. Please try again
- Description
- Amount
- New transaction
- No transactions to display
- DATE & TIME
- Account
- DEBIT
- CREDIT
- Accounts
- Transactions
- Delete
- Delete
- Cancel
- Account deleted
- Confirm delete
- All transactions in this account will also be deleted
- Edit Transaction
- Add note
- MOVE
- %1$d selected
- Balance:
- Export To:
- Export Transactions
- Export all transactions
- By default, only new transactions since last export will be exported. Check this option to export all transactions
- Error exporting %1$s file
- Export
- Delete after export
- All exported transactions will be deleted when exporting is completed
- Settings
-
- - SD Card
- - DropBox
- - Google Drive
- - Send to…
-
- Move
- Move %1$d transaction(s)
- Destination Account
- Access SD Card
- Cannot move transactions.\nThe destination account uses a different currency from origin account
- General
- About
- Choose default currency
- Default currency
- Default currency to assign to new accounts
- Enables recording transactions in GnuCash for Android
- Enables creation of accounts in GnuCash for Android
- Your GnuCash data
- Read and modify GnuCash data
- Record transactions in GnuCash
- Create accounts in GnuCash
- Display account
- Create Accounts
- Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
- No accounts exist in GnuCash.\nCreate an account before adding a widget
- Build version
- License
- Apache License v2.0. Click for details
- General Preferences
- Select Account
- There are no transactions available to export
- Passcode
- Passcode Preferences
- Passcode Turned On
- Passcode Turned Off
- Change Passcode
- About GnuCash
- A mobile finance management and expense-tracker designed for Android
- About
- %1$s file exported to:\n
- GnuCash Android %1$s export
- GnuCash Android Export from
- Transactions
- Transaction Preferences
- Account Preferences
- Default Transaction Type
- The type of transaction to use by default, CREDIT or DEBIT
-
- - CREDIT
- - DEBIT
-
- Are you sure you want to delete ALL transactions?
- Are you sure you want to delete this transaction?
- Export
- Export all transactions
- Delete exported transactions
- Default export email
- The default email address to send exports to. You can still change this when you export.
- Transfer Account
- All transactions will be a transfer from one account to another
- Activate Double Entry
- Balance
- Enter an account name to create an account
- Currency
- Parent account
- Use XML OFX header
- Enable this option when exporting to third-party application other than GnuCash for desktop
- What\'s New
-
- - New Material app design \n
- - Multi-currency transactions\n
- - Calculator to transaction amounts\n
- - Better reporting options\n
- - New help & feedback section\n
- - Multiple bug fixes and improvements\n
-
- Dismiss
- Enter an amount to save the transaction
- Multi-currency transactions cannot be modified
- Import GnuCash Accounts
- Import Accounts
- An error occurred while importing the GnuCash accounts
- GnuCash Accounts successfully imported
- Import account structure exported from GnuCash desktop
- Import GnuCash XML
- Delete all accounts in the database. All transactions will be deleted as
- well.
-
- Delete all accounts
- Accounts
- All accounts have been successfully deleted
- Are you sure you want to delete all accounts and transactions?\n\nThis
- operation cannot be undone!
-
- Account Type
- All transactions in all accounts will be deleted!
- Delete all transactions
- All transactions successfully deleted!
- Importing accounts
- Tap again to confirm. ALL entries will be deleted!!
- Transactions
- Sub-Accounts
- Search
- Default Export Format
- File format to use by default when exporting transactions
- Export transactions…
- Recurrence
-
- Imbalance
- Exporting transactions
- No recurring transactions to display.
- Successfully deleted recurring transaction
- Placeholder account
- Default Transfer Account
-
- - %d sub-account
- - %d sub-accounts
-
-
- - CASH
- - BANK
- - CREDIT CARD
- - ASSET
- - LIABILITY
- - INCOME
- - EXPENSE
- - PAYABLE
- - RECEIVABLE
- - EQUITY
- - CURRENCY
- - STOCK
- - MUTUAL FUND
- - TRADING
-
-
- - QIF
- - OFX
- - XML
-
-
- Select a Color
-
- Color %1$d
-
- Color %1$d selected
- Account Color & Type
- Delete sub-accounts
- Recent
- Favorites
- All
- Creates default GnuCash commonly-used account structure
- Create default accounts
- All existing accounts and transactions on the device will be deleted.\n\nAre you sure you want to proceed?
- Scheduled Transactions
- Welcome to GnuCash Android! \nYou can either create
- a hierarchy of commonly-used accounts, or import your own GnuCash account structure. \n\nBoth options are also
- available in app Settings so you can decide later.
-
- Transactions
- Select destination for export
- Memo
- Spend
- Receive
- Withdrawal
- Deposit
- Payment
- Charge
- Decrease
- Increase
- Income
- Rebate
- Expense
- Bill
- Invoice
- Buy
- Sell
- Repeats
- No recent backup found
- Opening Balances
- Equity
- Enable to save the current account balance (before deleting transactions) as new opening balance after deleting transactions
-
- Save account opening balances
- OFX does not support double-entry transactions
- Generates separate QIF files per currency
- Transaction splits
- Imbalance:
- Add split
- Favorite
- Navigation drawer opened
- Navigation drawer closed
- Reports
- Pie Chart
- Line Chart
- Bar Chart
- Report Preferences
- Select currency
- Account color in reports
- Use account color in the bar/pie chart
- Reports
- Order by size
- Show legend
- Show labels
- Show percentage
- Show average lines
- Group Smaller Slices
- No chart data available
- Overall
- Total
- Other
- The percentage of selected value calculated from the total amount
- The percentage of selected value calculated from the current stacked bar amount
- Save as template
- This account contains transactions. \nWhat would you like to do with these transactions
- This account contains sub-accounts. \nWhat would you like to do with these sub-accounts
- Delete transactions
- Create and specify a transfer account OR disable double-entry in settings to save the transaction
- Tap to create schedule
- Restore Backup…
- Backup & export
- DropBox Sync
- Backup
- Enable to sync to DropBox
- Select GnuCash XML file
- Backup Preferences
- Create Backup
- By default backups are saved to the SDCARD
- Select a specific backup to restore
- Backup successful
- Backup failed
- Exports all accounts and transactions
- Google Drive Sync
- Enable to sync to Google Drive
- Install a file manager to select files
- Select backup to restore
- Favorites
- Open…
- Reports
- Scheduled Transactions
- Export…
- Settings
-
- - Daily
- - Every %d days
-
-
- - Weekly
- - Every %d weeks
-
-
- - Monthly
- - Every %d months
-
-
- - Yearly
- - Every %d years
-
- Enable Crash Logging
- Automatically send information about app malfunction to the developers.
- Format
- Backup folder cannot be found. Make sure the SD Card is mounted!
- Enter your old passcode
- Enter your new passcode
- Scheduled Exports
- Exports
- No scheduled exports to display
- Create export schedule
- Exported to: %1$s
- The legend is too long
- Account description
- No recent accounts
- No favorite accounts
- Scheduled Actions
- "Ended, last executed on %1$s"
- Select a bar to view details
- Next
- Done
- Default Currency
- Account Setup
- Select Currency
- Feedback Options
- Create default accounts
- Import my accounts
- Let me handle it
- Other…
- Automatically send crash reports
- Disable crash reports
- Back
- Setup GnuCash
- Welcome to GnuCash
- Before you dive in, \nlet\'s setup a few things first\n\nTo continue, press Next
- Split Editor
- Check that all splits have valid amounts before saving!
- Invalid expression!
- Scheduled recurring transaction
- An exchange rate is required
- The converted amount is required
- Transfer Funds
-
- Select a slice to see details
- Period:
- From:
- To:
- Provide either the converted amount or exchange rate in order to transfer funds
- Exchange rate
- Fetch quote
- Converted Amount
- Sheet
- Expenses for last 3 months
- Total Assets
- Total Liabilities
- Net Worth
- Assets
- Liabilities
- Equity
-
- Move to:
- Group By
- Month
- Quarter
- Year
- Balance Sheet
- Total:
- Google+ Community
- Translate GnuCash
- Share ideas, discuss changes or report problems
- Translate or proof-read on CrowdIn
- No compatible apps to receive the exported transactions!
- Move...
- Duplicate
-
- - Current month
- - Last 3 months
- - Last 6 months
- - Last 12 months
- - All time
- - Custom range…
-
-
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 385b3bba5..b16e201b2 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -85,183 +85,6 @@
Konto anzeigen
Konten erstellen
Zu erstellende Konten auswählen
-
- - Afghani
- - Algerischer Dinar
- - Argentinischer Peso
- - Armenischer Dram
- - Aruban Florin
- - Australischer Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brasilianischer Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Kanadische Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Kolumbianischer Peso
- - Comoro Franc
- - Kongolesischer Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Kroatische Kuna
- - Cuban Convertible Peso
- - Kubanischer Peso
- - Tschechische Krone
- - Dalasi
- - Dänische Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indische Rupie
- - Iranischer Rial
- - Irakischer Dinar
- - Jamaican Dollar
- - Jordanischer Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberianischer Dollar
- - Libyscher Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexikanischer Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
Keine Konten vorhanden.\nSie müssen ein Konto erstellen um Widgets anfügen zu können.
Version
Lizenz
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index 1eb4bb06a..9b033a1bd 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -85,183 +85,6 @@
Εμφάνιση λογαριασμού
Δημιουργία Λογαριασμών
Επιλογή λογαριασμών για δημιουργία
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Δοκιμαστικό νόμισμα
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Ευρώ
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - Χωρίς νόμισμα
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - US Dolar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
Δεν υπάρχουν λογαριασμοί στο
GnuCash.\nΔημιουργήστε ενα λογαριασμό πριν προσθέσετε ένα γραφικό στοιχείο
Έκδοση
diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml
index c68c7e3c1..54aa639ba 100644
--- a/app/src/main/res/values-en-rGB/strings.xml
+++ b/app/src/main/res/values-en-rGB/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-es-rMX/strings.xml b/app/src/main/res/values-es-rMX/strings.xml
index dadd5fb70..276b7d0e6 100644
--- a/app/src/main/res/values-es-rMX/strings.xml
+++ b/app/src/main/res/values-es-rMX/strings.xml
@@ -85,183 +85,6 @@
Mostrar cuentas
Crear Cuentas
Seleccionar cuentas a crear
-
- - Afgani
- - Dinar Argelino
- - Peso Argentino
- - Dram Armenio
- - Florin Arubeño
- - Dolar Australiano
- - Manat Azerí
- - Dolar Bahameño
- - Dinar Bareiní
- - Baht Tailandés
- - Balboa Panameño
- - Dolar Barbadense
- - Rublo Bieloruso
- - Dolar Beliceño
- - Dolar Bermudeño
- - Bolivar Fuerte
- - Boliviano
- - Real Brasileño
- - Dolar Bruneano
- - Lev Búlgaro
- - Franco Burundés
- - Dolar Canadiense
- - Escudo caboverdiano
- - Dolar de las Íslas Caimán
- - Franco CFA de África Occidental
- - Franco CFA de África Central
- - Franco CFP
- - Peso Chileno
- - Moneda de prueba
- - Peso Colombiano
- - Franco Comorono
- - Franco Congolés
- - Marco Bosnioherzegovino
- - Córdoba Nicaragüense
- - Colón Costarricense
- - Kuna Croata
- - Peso convertible
- - Peso Cubano
- - Corona Checa
- - Dalasi
- - Corona Danesa
- - Denar Macedonio
- - Franco Yibutiano
- - Dobra santotomense
- - Peso dominicano
- - Dong vietnamita
- - Dólar del Caribe Oriental
- - Libra egipcia
- - Colón salvadoreño
- - Birr etíope
- - Euro
- - Libra malvinense
- - Dólar fiyiano
- - Forinto húngaro
- - Cedi
- - Libra gibraltareña
- - Oro
- - Gourde
- - Guaraní
- - Franco guineano
- - Dólar guyanés
- - Dólar de Hong Kong
- - Grivna
- - Corona islandesa
- - Rupia india
- - Rial iraní
- - Dinar iraquí
- - Dólar jamaiquino
- - Dinar jodano
- - Chelín keniano
- - Kina
- - Kip
- - Dinar kuwaití
- - Kwacha
- - Kwanza angoleño
- - Kyat birmano
- - Lari georgiano
- - Lats letón
- - Libra libanesa
- - Lek albanés
- - Lempira hondureña
- - Leone
- - Dólar liberiano
- - Dinar libio
- - Lilangeni suazi
- - Litas lituana
- - Loti
- - Ariary malgache
- - Ringgit malayo
- - Rupia de Mauricio
- - Peso mexicano
- - Unidad de Inversión Mexicana (UDI)
- - Leu moldavo
- - Dírham marroquí
- - Metical mozambiqueño
- - Mvdol
- - Naira nigeriana
- - Nakfa
- - Dólar namibio
- - Rupia nepalí
- - Florín antillano neerlandés
- - Nuevo shéquel israelí
- - Nuevo leu rumano
- - Nuevo dólar taiwanés
- - Dólar neozelandés
- - Ngultrum butanés
- - Won norcoreano
- - Corona noruega
- - Nuevo Sol
- - Uguiya
- - Dólar tongano
- - Rupia pakistaní
- - Palladium
- - Pataca
- - Peso filipino
- - Platino
- - Libra esterlina
- - Pula
- - Riyal catarí
- - Quetzal
- - Rand sudafricano
- - Rial omaní
- - Riel
- - Rupia de Maldivas
- - Rupia indonesia
- - Rublo ruso
- - Franco ruandés
- - Libra de Santa Elena
- - Riyal saudí
- - Derechos Especiales de Giro (SDR)
- - Dinar serbio
- - Rupia de Seychelles
- - Plata
- - Dólar de Singapur
- - Dólar de las Islas Salomón
- - Som
- - Chelín somalí
- - Somoni tayiko
- - Libra sursudanesa
- - Rupia de Sri Lanka
- - Sucre
- - Libra sudanesa
- - Dólar surinamés
- - Corona sueca
- - Franco suizo
- - Libra siria
- - Taka
- - Tala samoana
- - Chelín tanzano
- - Tenge kazajo
- - Sin moneda
- - Dólar trinitense
- - Tugrik mongol
- - Dinar tunecino
- - Lira turca
- - Manat turkmeno
- - Dírham de los Emiratos Árabes Unidos
- - Chelín ugandés
- - Franco UIC
- - Unidad de Valor Real
- - Unidades de fomento
- - Peso uruguayo en Unidades Indexadas (URUIURUI)
- - Peso uruguayo
- - Dólar Estadounidense
- - Som uzbeko
- - Vatu
- - Euro WIR
- - Franco WIR
- - Won surcoreano
- - Rail yemení
- - Yen japonés
- - Yuan chino
- - Kwacha zambiano
- - Dólar zimbabuense
- - Zloty polaco
-
No hay cuentas en Gnucash.\nCree una cuenta antes de añadir un widget
Versión de compilación
Licencia
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 48e4feae8..d0f5da332 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -85,183 +85,6 @@
Mostrar cuentas
Crear Cuentas
Seleccionar cuentas a crear
-
- - Afgani
- - Dinar Argelino
- - Peso Argentino
- - Dram Armenio
- - Florin Arubeño
- - Dolar Australiano
- - Manat Azerí
- - Dolar Bahameño
- - Dinar Bareiní
- - Baht Tailandés
- - Balboa Panameño
- - Dolar Barbadense
- - Rublo Bieloruso
- - Dolar Beliceño
- - Dolar Bermudeño
- - Bolívar Fuerte
- - Boliviano
- - Real Brasileño
- - Dolar Bruneano
- - Lev Búlgaro
- - Franco Burundés
- - Dolar Canadiense
- - Escudo caboverdiano
- - Dolar de las Íslas Caimán
- - Franco CFA de África Occidental
- - Franco CFA de África Central
- - Franco CFP
- - Peso Chileno
- - Moneda de prueba
- - Peso Colombiano
- - Franco Comorono
- - Franco Congolés
- - Marco Bosnioherzegovino
- - Córdoba Nicaragüense
- - Colón Costarricense
- - Kuna Croata
- - Peso convertible
- - Peso Cubano
- - Corona Checa
- - Dalasi
- - Corona Danesa
- - Denar Macedonio
- - Franco Yibutiano
- - Dobra santotomense
- - Peso dominicano
- - Dong vietnamita
- - Dólar del Caribe Oriental
- - Libra egipcia
- - Colón salvadoreño
- - Birr etíope
- - Euro
- - Libra malvinense
- - Dólar fiyiano
- - Forinto húngaro
- - Cedi
- - Libra gibraltareña
- - Oro
- - Gourde
- - Guaraní
- - Franco guineano
- - Dólar guyanés
- - Dólar de Hong Kong
- - Grivna
- - Corona islandesa
- - Rupia india
- - Rial iraní
- - Dinar iraquí
- - Dólar jamaiquino
- - Dinar jodano
- - Chelín keniano
- - Kina
- - Kip
- - Dinar kuwaití
- - Kwacha
- - Kwanza angoleño
- - Kyat birmano
- - Lari georgiano
- - Lats letón
- - Libra libanesa
- - Lek albanés
- - Lempira hondureña
- - Leone
- - Dólar liberiano
- - Dinar libio
- - Lilangeni suazi
- - Litas lituana
- - Loti
- - Ariary malgache
- - Ringgit malayo
- - Rupia de Mauricio
- - Peso mexicano
- - Unidad de Inversión Mexicana (UDI)
- - Leu moldavo
- - Dírham marroquí
- - Metical mozambiqueño
- - Mvdol
- - Naira nigeriana
- - Nakfa
- - Dólar namibio
- - Rupia nepalí
- - Florín antillano neerlandés
- - Nuevo shéquel israelí
- - Nuevo leu rumano
- - Nuevo dólar taiwanés
- - Dólar neozelandés
- - Ngultrum butanés
- - Won norcoreano
- - Corona noruega
- - Nuevo Sol
- - Uguiya
- - Dólar tongano
- - Rupia pakistaní
- - Palladium
- - Pataca
- - Peso filipino
- - Platino
- - Libra esterlina
- - Pula
- - Riyal catarí
- - Quetzal
- - Rand sudafricano
- - Rial omaní
- - Riel
- - Rupia de Maldivas
- - Rupia indonesia
- - Rublo ruso
- - Franco ruandés
- - Libra de Santa Elena
- - Riyal saudí
- - Derechos Especiales de Giro (SDR)
- - Dinar serbio
- - Rupia de Seychelles
- - Plata
- - Dólar de Singapur
- - Dólar de las Islas Salomón
- - Som
- - Chelín somalí
- - Somoni tayiko
- - Libra sursudanesa
- - Rupia de Sri Lanka
- - Sucre
- - Libra sudanesa
- - Dólar surinamés
- - Corona sueca
- - Franco suizo
- - Libra siria
- - Taka
- - Tala samoana
- - Chelín tanzano
- - Tenge kazajo
- - Sin moneda
- - Dólar trinitense
- - Tugrik mongol
- - Dinar tunecino
- - Lira turca
- - Manat turkmeno
- - Dírham de los Emiratos Árabes Unidos
- - Chelín ugandés
- - Franco UIC
- - Unidad de Valor Real
- - Unidades de fomento
- - Peso uruguayo en Unidades Indexadas (URUIURUI)
- - Peso uruguayo
- - Dólar Estadounidense
- - Som uzbeko
- - Vatu
- - Euro WIR
- - Franco WIR
- - Won surcoreano
- - Rail yemení
- - Yen japonés
- - Yuan chino
- - Kwacha zambiano
- - Dólar zimbabuense
- - Zloty polaco
-
No hay cuentas en Gnucash.\nCree una cuenta antes de añadir un widget
Versión de compilación
Licencia
diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml
index c68c7e3c1..54aa639ba 100644
--- a/app/src/main/res/values-fi-rFI/strings.xml
+++ b/app/src/main/res/values-fi-rFI/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 10ac0756c..547ffb19c 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -85,183 +85,6 @@
Afficher le compte
Créer les comptes
Choisisez les comptes à créés
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
Aucun compte éxistant dans GnuCash.\nCréez un compte avant d\'ajouter un widget
Version logiciel
Licence
diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml
index d16cedb1f..f6e4e0ffa 100644
--- a/app/src/main/res/values-hu-rHU/strings.xml
+++ b/app/src/main/res/values-hu-rHU/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index 93f5e8086..313ddee27 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -85,183 +85,6 @@
Visualizza conto
Crea conti
Selezione dei conti da creare
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
Non esiste alcun conto in GnuCash.\nCreare un conto prima di aggiungere il widget
Versione build
Licenza
diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml
index c68c7e3c1..54aa639ba 100644
--- a/app/src/main/res/values-iw-rIL/strings.xml
+++ b/app/src/main/res/values-iw-rIL/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index f57b1ddae..52fe7ce51 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 462514032..1656ad737 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index e3ac6da33..05ee7407b 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -85,183 +85,6 @@
Vis konto
Opprett konto
Velg kontoer å opprette
-
- - Afghanske
- - Algeriske dinarer
- - Argentinsk Peso
- - Armensk Dram
- - Arubiske gylden
- - Australske Dollar
- - Aserbajdsjanske Manat
- - Bahamian Dollar
- - Bahraini dinarer
- - Baht
- - Balboa
- - Barbados Dollar
- - Hviterussiske rubler
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brasilianske Real
- - Brunei Dollar
- - Bulgarske Lev
- - Burundi Franc
- - Kanadiske Dollar
- - Kapp Verde Escudo
- - Caymanøyene Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilenske pesos
- - Testing valuta
- - Colombianske Peso
- - Comoro Franc
- - Kongolesiske Franc
- - Konvertible Mark
- - Cordoba Oro
- - Costa Rica kolon
- - Kroatiske Kuna
- - Cubansk konvertibel Peso
- - Cubansk Peso
- - Tsjekkiske Koruna
- - Dalasi
- - Dansk Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominikanske pesos
- - Dong
- - Østkaribiske Dollar
- - Egyptisk pund
- - El Salvador kolon
- - Ethiopian Birr
- - Euro
- - Falklandske pund
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltarske pund
- - Gull
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Islandske kroner
- - Indiske rupi
- - Iranske Rial
- - Irakiske dinarer
- - Jamaicanske Dollar
- - Jordanske dinarer
- - Kenyanske Shilling
- - Kina
- - Kip
- - Kuwaitiske dinarer
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latviske Lats
- - Libanesiske pund
- - Lek
- - Lempira
- - Leone
- - Liberiske Dollar
- - Libyske dinarer
- - Lilangeni
- - Litauisk Litas
- - Loti
- - Gassiske Ariary
- - Malaysiske Ringgit
- - Mauritius rupi
- - Meksikansk Peso
- - Meksikansk Unidad de inversjon (UDI)
- - Moldova Leu
- - Marokkanske Dirham
- - Mosambik Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibiske Dollar
- - Nepalske rupi
- - Nederlandske antillegylden
- - Israelske shekel
- - Nye rumenske Leu
- - Nye taiwanske Dollar
- - Newzealandske Dollar
- - Ngultrum
- - Nordkoreanske Won
- - Norske kroner
- - Nuevo Sol
- - Ouguiya
- - Pa\'anga
- - Pakistanske rupi
- - Palladium
- - Pataca
- - Filippinske Peso
- - Platina
- - Pund Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Omansk Rial
- - Riel
- - Rufiyaa
- - Rupiah
- - Russisk rubel
- - Rwanda Franc
- - Sankthelenske pund
- - Saudiarabiske Riyal
- - SDR (spesielle tegning rett)
- - Serbiske dinarer
- - Seychellene rupi
- - Sølv
- - Singapor Dollar
- - Salomonøyene Dollar
- - Som
- - Somaliske Shilling
- - Somoni
- - Sør Sudanske pund
- - Srilankiske rupi
- - Sucre
- - Sudanske pund
- - Surinam Dollar
- - Svenske kroner
- - Sveitsiske Franc
- - Syriske pund
- - Taka
- - Tala
- - Tanzanianske Shilling
- - Tenge
- - Ingen valuta
- - Trinidad og Tobagos Dollar
- - Tugrik
- - Tunisiske dinarer
- - Tyrkiske Lira
- - Turkmensk nye Manat
- - UAE Dirham
- - Ugandiske Shilling
- - UIC Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso no Unidades Indexadas (URUIURUI)
- - Uruguayanske peso
- - US Dollar
- - Usbekiske Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambiske Kwacha
- - Zimbabwiske Dollar
- - Zloty
-
Det finnes ingen kontoer i GnuCash.\nOpprett en konto før du legger til en widget
Byggversjon
Lisens
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index 92b7a0758..6654dae56 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -85,183 +85,6 @@
Rekening tonen
Rekeningen aanmaken
Standaard rekeningen selecteren
-
- - Afghani
- - Algerijnse dinar
- - Argentijnse peso
- - Armeense dram
- - Arubaanse florin
- - Australische dollar
- - Azerbeidzjaanse manat
- - Bahamaanse dollar
- - Bahreinse dinar
- - Baht
- - Balboa
- - Barbadaanse dollar
- - Wit-Russische Roebel
- - Belizaanse Dollar
- - Bermuda Dollar
- - Bolivar Fuerte
- - Boliviano
- - Braziliaanse Real
- - Bruneise Dollar
- - Bulgaarse Lev
- - Burundese Frank
- - Canadese dollar
- - Kaapverdische Escudo
- - Caymaneilandse Dollar
- - CFA-Frank BCEAO
- - CFA-Frank BEAC
- - CFP-Frank
- - Chileense Peso
- - Testen van valuta
- - Colombiaanse Peso
- - Comorese Frank
- - Congolese frank
- - Converteerbare Mark
- - Cordoba Oro
- - Costaricaanse colón
- - Kroatische kuna
- - Cubaanse Convertibele Peso
- - Cubaanse peso
- - Tsjechische kroon
- - Dalasi
- - Deense kroon
- - Denar
- - Djiboutiaanse Frank
- - Dobra
- - Dominicaanse Peso
- - Dong
- - Oost-Caribische Dollar
- - Egyptische pond
- - Salvadoraanse colón
- - Ethiopische Birr
- - Euro
- - Falklandeilands pond
- - Fiji Dollar
- - Forint
- - Ghanese Cedi
- - Gibraltarees pond
- - Goud
- - Gourde
- - Guaraní
- - Guinese Frank
- - Guyaanse Dollar
- - Hongkongse dollar
- - Hryvnia
- - Ijslandse kroon
- - Indiase roepie
- - Iraanse rial
- - Iraakse dinar
- - Jamaicaanse dollar
- - Jordaanse dinar
- - Keniaanse shilling
- - Kina
- - Kip
- - Koeweitse Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Letse Lats
- - Libanees pond
- - Lek
- - Lempira
- - Leone
- - Liberiaanse dollar
- - Libische Dinar
- - Lilangeni
- - Litouwse Litas
- - Loti
- - Malagasi Ariary
- - Maleisische Ringgit
- - Mauritiaanse Rupee
- - Mexicaanse peso
- - Mexicaanse Unidad de Inversion (UDI)
- - Moldavische Leu
- - Marokkaanse Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibische Dollar
- - Nepalese Rupee
- - Antilliaanse gulden
- - Israëlische nieuwe shekel
- - Nieuwe Roemeense Leu
- - Taiwanese nieuwe Dollar
- - Nieuw-Zeelandse dollar
- - Ngultrum
- - Noord-Koreaanse Won
- - Noorse kroon
- - Nuevo Sol
- - Ouguiya
- - Pa\'anga
- - Pakistaanse Rupee
- - Palladium
- - Pataca
- - Filippijnse peso
- - Platina
- - Pond sterling
- - Pula
- - Qatarese Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Roepie
- - Russische roebel
- - Rwanda Frank
- - Sint-Heleense pond
- - Saoedi-Arabische Riyal
- - SDR (bijzonder trekkingsrecht)
- - Servische Dinar
- - Seychelse Roepie
- - Zilver
- - Singaporese Dollar
- - Salomonseilandse Dollar
- - Som
- - Somalische Shilling
- - Somoni
- - Zuid Soedanese pond
- - Srilankaanse Rupee
- - Sucre
- - Soedanese pond
- - Surinaamse Dollar
- - Zweedse kroon
- - Zwitserse Frank
- - Syrisch pond
- - Taka
- - Tala
- - Tanzaniaanse Shilling
- - Tenge
- - Geen valuta
- - Trinidad en Tobago-Dollar
- - Tugrik
- - Tunesische dinar
- - Turkse lire
- - Turkmenistan nieuwe Manat
- - UAE Dirham
- - Oeganda Shilling
- - UIC-Frank
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso nl Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - Amerikaanse Dollar
- - Oezbekistaanse Sum
- - Vatu
- - WIR Euro
- - WIR Frank
- - Won
- - Jemenitische Rial
- - Yen
- - Yuan Renminbi
- - Zambiaanse Kwacha
- - Zimbabwaanse Dollar
- - Zloty
-
Geen rekeningen beschikbaar.\nU moet een rekening aanmaken alvorens een widget toe te voegen
Versie
Licentie
diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml
index e3ac6da33..05ee7407b 100644
--- a/app/src/main/res/values-no-rNO/strings.xml
+++ b/app/src/main/res/values-no-rNO/strings.xml
@@ -85,183 +85,6 @@
Vis konto
Opprett konto
Velg kontoer å opprette
-
- - Afghanske
- - Algeriske dinarer
- - Argentinsk Peso
- - Armensk Dram
- - Arubiske gylden
- - Australske Dollar
- - Aserbajdsjanske Manat
- - Bahamian Dollar
- - Bahraini dinarer
- - Baht
- - Balboa
- - Barbados Dollar
- - Hviterussiske rubler
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brasilianske Real
- - Brunei Dollar
- - Bulgarske Lev
- - Burundi Franc
- - Kanadiske Dollar
- - Kapp Verde Escudo
- - Caymanøyene Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilenske pesos
- - Testing valuta
- - Colombianske Peso
- - Comoro Franc
- - Kongolesiske Franc
- - Konvertible Mark
- - Cordoba Oro
- - Costa Rica kolon
- - Kroatiske Kuna
- - Cubansk konvertibel Peso
- - Cubansk Peso
- - Tsjekkiske Koruna
- - Dalasi
- - Dansk Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominikanske pesos
- - Dong
- - Østkaribiske Dollar
- - Egyptisk pund
- - El Salvador kolon
- - Ethiopian Birr
- - Euro
- - Falklandske pund
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltarske pund
- - Gull
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Islandske kroner
- - Indiske rupi
- - Iranske Rial
- - Irakiske dinarer
- - Jamaicanske Dollar
- - Jordanske dinarer
- - Kenyanske Shilling
- - Kina
- - Kip
- - Kuwaitiske dinarer
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latviske Lats
- - Libanesiske pund
- - Lek
- - Lempira
- - Leone
- - Liberiske Dollar
- - Libyske dinarer
- - Lilangeni
- - Litauisk Litas
- - Loti
- - Gassiske Ariary
- - Malaysiske Ringgit
- - Mauritius rupi
- - Meksikansk Peso
- - Meksikansk Unidad de inversjon (UDI)
- - Moldova Leu
- - Marokkanske Dirham
- - Mosambik Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibiske Dollar
- - Nepalske rupi
- - Nederlandske antillegylden
- - Israelske shekel
- - Nye rumenske Leu
- - Nye taiwanske Dollar
- - Newzealandske Dollar
- - Ngultrum
- - Nordkoreanske Won
- - Norske kroner
- - Nuevo Sol
- - Ouguiya
- - Pa\'anga
- - Pakistanske rupi
- - Palladium
- - Pataca
- - Filippinske Peso
- - Platina
- - Pund Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Omansk Rial
- - Riel
- - Rufiyaa
- - Rupiah
- - Russisk rubel
- - Rwanda Franc
- - Sankthelenske pund
- - Saudiarabiske Riyal
- - SDR (spesielle tegning rett)
- - Serbiske dinarer
- - Seychellene rupi
- - Sølv
- - Singapor Dollar
- - Salomonøyene Dollar
- - Som
- - Somaliske Shilling
- - Somoni
- - Sør Sudanske pund
- - Srilankiske rupi
- - Sucre
- - Sudanske pund
- - Surinam Dollar
- - Svenske kroner
- - Sveitsiske Franc
- - Syriske pund
- - Taka
- - Tala
- - Tanzanianske Shilling
- - Tenge
- - Ingen valuta
- - Trinidad og Tobagos Dollar
- - Tugrik
- - Tunisiske dinarer
- - Tyrkiske Lira
- - Turkmensk nye Manat
- - UAE Dirham
- - Ugandiske Shilling
- - UIC Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso no Unidades Indexadas (URUIURUI)
- - Uruguayanske peso
- - US Dollar
- - Usbekiske Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambiske Kwacha
- - Zimbabwiske Dollar
- - Zloty
-
Det finnes ingen kontoer i GnuCash.\nOpprett en konto før du legger til en widget
Byggversjon
Lisens
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index 037c42413..aa7366017 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -85,183 +85,6 @@
Wyświetl konto
Utwórz konta
Wybierz konta do utworzenia
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
Brak kont w GnuCash.\nUtwórz konto zanim dodasz widżet
Wersja builda
Licencja
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index b65554aea..443b85b81 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -85,183 +85,6 @@
Mostrar conta
Criar Contas
Escolha as contas a criar
-
- - Afegane
- - Dinar Argelino
- - Peso Argentino
- - Dram Armeniano
- - Florim de Aruba
- - Dólar Australiano
- - Manat Azerbaijão
- - Dólar Bahamas
- - Dinar de Bahrein
- - Bath Tailandez
- - Balboa
- - Dólar de Barbados
- - Rublo Belarus
- - Dólar de Belize
- - Dólar de Bermudas
- - Bolivar Forte
- - Boliviano
- - Real Brasileiro
- - Dólar de Brunei
- - Lev Búlgaro
- - Franco de Burundi
- - Dólar Canadense
- - Escudo de Cabo Verde
- - Dólar das Ilhas Cayman
- - Franco CFA BCEAO
- - Franco CFA BEAC
- - Franco CFP
- - Peso Chileno
- - Cotação de teste
- - Peso Colombiano
- - Franco de Comores
- - Franco Congoles
- - Marco Conversível
- - Ouro Cordoba
- - Colon de Costa Rica
- - Kuna Croata
- - Peso conversível Cubano
- - Peso Cubano
- - Coroa Tcheca
- - Dalassi
- - Coroa da Dinamarca
- - Dinar Macedonia
- - Franco de Djibuti
- - Dobra de São Tome e Principe
- - Peso Dominicano
- - Dongue
- - Dólar do Caribe Oriental
- - Libra Egípcia
- - Colon de El Salvador
- - Birr da Etiopia
- - Euro
- - Libra das Ilhas Falkland
- - Dólar Fiji
- - Florim Húngaro
- - Cedi de Gana
- - Libra de Gibraltar
- - Ouro
- - Gourde Haitiano
- - Guarani
- - Franco de Guine
- - Dólar da Guiana
- - Dólar de Hong Kong
- - Grívnia
- - Coroa da Islandia
- - Rupia Indiana
- - Rial Iraniano
- - Dinar Iraquiano
- - Dólar Jamaicano
- - Dinar Jordaniano
- - Xelim do Quenia
- - Kina
- - Quipe
- - Dinar Kwait
- - Quacha
- - Kwanza
- - Quiate
- - Lari
- - Lat da Letonia
- - Libra do Líbano
- - Lek
- - Lempira
- - Leone
- - Dólar Liberiano
- - Dinar Libia
- - Lilangeni
- - Lita da Lituania
- - Loti
- - Ariary de Madagascar
- - Ringgit da Malasia
- - Rupia de Mauricio
- - Peso Mexicano
- - Unidade Mexicana de Inversão
- - Leu da Moldávia
- - Dirham de Marrocos
- - Nova Metical de Moçambique
- - Boliviano
- - Naira
- - Nakfa
- - Dólar da Namíbia
- - Rupia do Nepal
- - Florim das Antilhas Holandesas
- - Shequl Israelense
- - Novo Leu Romeno
- - Novo Dólar Taiwanes
- - Dólar Neozelandês
- - Ngultrume butanes
- - Won Norte Koreano
- - Krone Noruegues
- - Novo Sol
- - Uguia
- - Paanga
- - Rupia do Paquistão
- - Paladio
- - Pataca
- - Peso Filipino
- - Platina
- - Libra Esterlina
- - Pula
- - Rial do Catar
- - Quetzal
- - Rande
- - Rial de Omã
- - Riel
- - Rufia
- - Rupia da Indonesia
- - Rublo Russo
- - Franco de Ruanda
- - Libra de Santa Helena
- - Rial da Arábia Saudita
- - Direito especial
- - Dinar Sérvio
- - Rupia de Seycheles
- - Prata
- - Dólar de Cingapura
- - Dólar das Ilhas Salomão
- - Som Quirguistão
- - Xelim da Somália
- - Somoni
- - Libra Sul Sudanesa
- - Rupia do Sri Lanka
- - Sucre
- - Nova Libra Sudanesa
- - Dólar do Suriname
- - Coroa Sueca
- - Franco Suiço
- - Libra Siria
- - Taca
- - Tala
- - Xelim da Tanzania
- - Tenge
- - Sem moeda
- - Dólar de Trinidad e Tobago
- - Tugrik
- - Dinar Tunisiano
- - Nova Lira Turca
- - Novo Manat Turcomenistão
- - Dirham EAU
- - Xelim de Uganda
- - UIC-Franc
- - Unidade de Valor Real
- - unidades de fomento
- - Uruguai Peso em Unidades Indexadas
- - Peso Uruguaio
- - Dólar dos EUA
- - Som do Uzbequistão
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won Sul Coreano
- - Rial de Iemen
- - Iene
- - Renmimbi de Iuan
- - Quacha do Zambia
- - Dólar do Zimbabue
- - Zloty
-
Não existem contas no GnuCash.\nCrie uma conta antes de adicionar um widget
Versão
Licensa
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 8a053eaf4..ce055634b 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -85,183 +85,6 @@
Mostrar conta
Criar Contas
Escolha as contas a criar
-
- - Afegão
- - Dinar argelino
- - Peso argentino
- - Dram armênio
- - Florin de Aruba
- - Dólar australiano
- - Manat do Arzebeijão
- - Dólar das Bahamas
- - Dinar do Bahrein
- - Baht
- - Balboa
- - Dólar de Barbados
- - Ruble de Bielorrussia
- - Dólar de Belize
- - Dólar das Bermudas
- - Bolivar Fuerte
- - Boliviano
- - Real brasileiro
- - Dólar de Brunei
- - Lev Búlgaro
- - Franco de Burundi
- - Dólar canadiano
- - Escudo de Cabo Verde
- - Dólar das Ilhas Caimão
- - Franco CFA BCEAO
- - Franco CFA BEAC
- - Franco do CFP
- - Peso chileno
- - Moeda de teste
- - Peso colombiano
- - Franco das Comoros
- - Franco congolês
- - Marco conversível
- - Córdoba de ouro
- - Colon da Costa Rica
- - Kuna Croata
- - Peso cubano convertível
- - Peso cubano
- - Coroa Checa
- - Dalasi
- - Coroa dinamarquesa
- - Denar
- - Franco do Djibuti
- - Dobra
- - Peso dominicano
- - Dong
- - Dólar das Caraíbas Orientais
- - Libra egípcia
- - Colon de El Salvador
- - Birr etíope
- - Euro
- - Libra das Malvinas
- - Dólar das Fiji
- - Forint húngaro
- - Cedi Gana
- - Libra de Gibraltar
- - Ouro
- - Gourde
- - Guarani
- - Franco do Guinea
- - Dólar da Guiana
- - Dólar de Hong Kong
- - Hryvnia
- - Coroa islandesa
- - Rupia indiana
- - Rial iraniano
- - Dinar iraquiano
- - Dólar jamaicano
- - Dinar jordaniano
- - Xelim queniano
- - Kina
- - Kip
- - Dinar do Kuwait
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Lats Letão
- - Libra libanesa
- - Lek
- - Lempira
- - Leoa
- - Dólar da Libéria
- - Dinar Líbio
- - Lilangeni
- - Litas lituana
- - Loti
- - Ariary malgaxe
- - Ringgit da Malásia
- - Rupia das Maurícias
- - Peso mexicano
- - Unidade de inversão mexicana (UDI)
- - Leu da Moldávia
- - Dirham marroquino
- - Metical de Moçambique
- - Mvdol
- - Naira
- - Nakfa
- - Dólar de Namíbia
- - Rupia nepalesa
- - Florim das Antilhas Holandesas
- - Novo Shequel israelita
- - Novo Leu romeno
- - Novo Dólar de Taiwan
- - Dólar da Nova Zelândia
- - Ngultrum
- - Won norte-coreano
- - Coroa norueguesa
- - Novo Sol
- - Ouguiya
- - Pa\'anga
- - Rupia paquistanesa
- - Paládio
- - Pataca
- - Peso filipino
- - Platina
- - Libra Esterlina
- - Pula
- - Rial do Qatar
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupia
- - Rublo Russo
- - Franco de Rwanda
- - Libra de Santa Helena
- - Rial saudita
- - SDR (direito especial de saque)
- - Dinar sérvio
- - Rupia das Seychelles
- - Prata
- - Dólar de Singapura
- - Dólar das Ilhas Salomão
- - Som
- - Xelim somali
- - Somoni
- - Libra do Sudão do Sul
- - Rúpia do Sri Lanka
- - Açúcar
- - Libra sudanesa
- - Dólar de Surinam
- - Coroa Sueca
- - Franco suíço
- - Libra Síria
- - Taka
- - Tala
- - Xelim da Tanzânia
- - Tenge
- - Nenhuma moeda
- - Dólar de Trinidad e Tobago
- - Tugrik da Mongólia
- - Dinar tunisino
- - Lira turca
- - Novo Manat do Turcomenistão
- - Dirham dos UAE
- - Xelim de Uganda
- - UIC-Franco
- - Unidade de Valor Real
- - Unidade de fomento
- - Peso do uruguai em unidades indexadas (URUIURUI)
- - Peso uruguaio
- - Dólar dos USA
- - Sum do Usbequistão
- - Vatu
- - Euro WIR
- - Franco WIR
- - Won
- - Rial iemenita
- - Iene
- - Yuan Renminbi
- - Kwacha da Zâmbia
- - Dólar de Zimbabwe
- - Zloty
-
Não existem contas no GnuCash.\nCrie uma conta antes de adicionar um widget
Versão
Licensa
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index e9bb88a3e..92c01bd4b 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 5049bae9d..764b17f0d 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -85,183 +85,6 @@
Показать счёт
Создать счета
Выберите счета для создания
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Белорусский рубль
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Гривна
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Российский рубль
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - Нет валюты
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - Доллар США
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
Нет счетов в Gnucash.\nСначала создайте счета, а потом добавляйте виджет.
Версия сборки
Лицензия
diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml
index 6dfa1c6c3..c92cb1056 100644
--- a/app/src/main/res/values-sr-rSP/strings.xml
+++ b/app/src/main/res/values-sr-rSP/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index c68c7e3c1..54aa639ba 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index a9ade4bde..a9c761986 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml
index 9c123a97a..0f8436621 100644
--- a/app/src/main/res/values-uk-rUA/strings.xml
+++ b/app/src/main/res/values-uk-rUA/strings.xml
@@ -85,183 +85,6 @@
Показати рахунок
Створити рахунки
Оберіть рахунки для створення
-
- - Афгані
- - Алжирський динар
- - Аргентинський песо
- - Вірменський драм
- - Арубанскій флорин
- - Австралійський долар
- - Азербайджанський Манат
- - Багамський долар
- - Бахрейнський динар
- - Бат
- - Бальбоа
- - Барбадос долар
- - Білоруський рубль
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Канадський долар
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Чеська крона
- - Dalasi
- - Данська крона
- - Динар
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Єгипетський фунт
- - El Salvador Colon
- - Ethiopian Birr
- - Євро
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Золото
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Гривня
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Латвійський лат
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Мексиканський песо
- - Mexican Unidad de Inversion (UDI)
- - Молдовський лей
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - Новий ізраїльський шекель
- - Новий румунський лей
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Паладій
- - Pataca
- - Philippine Peso
- - Платина
- - Фунт стерлінгів
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Російський рубль
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Срібло
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Шведська крона
- - Швейцарський франк
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Тенге
- - Немає валюти
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Турецька ліра
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - Долар США
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Єна
- - Юань
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Злотий
-
Немає рахунків в Gnucash.\nСтворіть рахунки перед додаваням віджета.
Версія збірки
Ліцензія
diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml
index 462514032..1656ad737 100644
--- a/app/src/main/res/values-vi-rVN/strings.xml
+++ b/app/src/main/res/values-vi-rVN/strings.xml
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index f5010cc0e..83f48ddfb 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -85,183 +85,6 @@
显示科目
创建科目
选择要创建的科目
-
- - 阿富汗尼
- - 阿尔及利亚第纳尔
- - 阿根廷比索
- - 亚美尼亚德拉姆
- - 阿鲁巴弗罗林
- - 澳元
- - 阿塞拜疆马纳特
- - 巴哈马元
- - 巴林第纳尔
- - 泰铢
- - 巴尔博亚
- - 巴巴多斯元
- - 白俄罗斯卢布
- - 伯利兹元
- - 百慕大元
- - 博利瓦
- - 玻利维亚诺
- - 巴西雷亚尔
- - 文莱元
- - 保加利亚列弗
- - 布隆迪法郎
- - 加拿大元
- - 佛得角埃斯库多
- - 开曼群岛元
- - 西非法郎
- - 中非法郎
- - 太平洋金融共同体法郎
- - 智利比索
- - 测试
- - 哥伦比亚比索
- - 科摩罗法郎
- - 刚果法郎
- - 可兑换马克
- - 科多巴
- - 哥斯达黎加科朗
- - 克罗地亚库纳
- - Cuban Convertible Peso
- - 古巴比索
- - 捷克克朗
- - 达拉斯
- - 丹麦克朗
- - 代纳尔
- - 吉布提法郎
- - 多布拉
- - 多米尼加比索
- - 越南盾
- - 东加勒比元
- - 埃及镑
- - 萨尔瓦多科朗
- - 埃塞俄比亚比尔
- - 欧元
- - 福克兰镑
- - 斐济元
- - 匈牙利福林
- - 加纳塞地
- - 直布罗陀庞德
- - 黄金
- - 海地古德
- - 瓜拉尼
- - 几内亚法郎
- - 圭亚那元
- - 港币
- - 赫夫纳
- - 冰岛克朗
- - 印度卢布
- - 伊朗里亚尔
- - 伊拉克第纳尔
- - 牙买加元
- - 约旦第纳尔
- - 肯尼亚先令
- - 巴布亚新几内亚Kina
- - 老挝基普
- - 科威特第纳尔
- - 赞比亚克瓦查
- - 安哥拉宽扎
- - 缅甸元
- - 格鲁吉亚拉里
- - 拉脱维亚拉特
- - 黎巴嫩镑
- - 阿尔巴尼亚Lek
- - 洪都拉斯伦皮拉
- - 塞拉利昂
- - 利比里亚元
- - 利比亚第纳尔
- - 马兰吉尼
- - 立陶宛立特
- - 洛蒂
- - 阿里亚
- - 马来西亚林吉特
- - 毛里求斯卢比
- - 墨西哥比索
- - Mexican Unidad de Inversion (UDI)
- - 摩尔多瓦列伊
- - 摩洛哥迪拉姆
- - 莫桑比克的梅蒂卡尔
- - Mvdol
- - Naira
- - Nakfa
- - 纳米比亚元
- - 尼泊尔卢比
- - 荷兰安的列斯荷兰盾
- - 以色列新谢克尔
- - 新罗马尼亚列伊
- - 新台币
- - 新西兰元
- - Ngultrum
- - 北韩元
- - 挪威克朗
- - 秘鲁 索尔
- - Ouguiya
- - Pa’anga
- - 巴基斯坦卢比
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - 俄罗斯卢布
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - 白银
- - 新加坡元
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - 瑞典克朗
- - 瑞士法郎
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - 无
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - 美元
- - Uzbekistan Sum
- - Vatu
- - “世界投资报告”欧元
- - “世界投资报告”法郎
- - 韩元
- - Yemeni Rial
- - 日元
- - 人民币
- - Zambian Kwacha
- - 津巴布韦元
- - Zloty
-
GnuCash里还没有科目信息。\n使用小部件前需要添加科目
版本号
授权许可
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index becfd7de5..fc5f6b5d7 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -85,183 +85,6 @@
显示科目
创建科目
选择要创建的科目
-
- - 阿富汗尼
- - 阿尔及利亚第纳尔
- - 阿根廷比索
- - 亚美尼亚德拉姆
- - 阿鲁巴弗罗林
- - 澳元
- - 阿塞拜疆马纳特
- - 巴哈马元
- - 巴林第纳尔
- - 泰铢
- - 巴尔博亚
- - 巴巴多斯元
- - 白俄罗斯卢布
- - 伯利兹元
- - 百慕大元
- - 博利瓦
- - 玻利维亚诺
- - 巴西雷亚尔
- - 文莱元
- - 保加利亚列弗
- - 布隆迪法郎
- - 加拿大元
- - 佛得角埃斯库多
- - 开曼群岛元
- - 西非法郎
- - 中非法郎
- - 太平洋金融共同体法郎
- - 智利比索
- - 测试
- - 哥伦比亚比索
- - 科摩罗法郎
- - 刚果法郎
- - 可兑换马克
- - 科多巴
- - 哥斯达黎加科朗
- - 克罗地亚库纳
- - 古巴可兌換披索
- - 古巴比索
- - 捷克克朗
- - 达拉斯
- - 丹麦克朗
- - 代纳尔
- - 吉布提法郎
- - 多布拉
- - 多米尼加比索
- - 越南盾
- - 东加勒比元
- - 埃及镑
- - 萨尔瓦多科朗
- - 埃塞俄比亚比尔
- - 欧元
- - 福克兰镑
- - 斐济元
- - 匈牙利福林
- - 加纳塞地
- - 直布罗陀庞德
- - 黄金
- - 海地古德
- - 瓜拉尼
- - 几内亚法郎
- - 圭亚那元
- - 港币
- - 赫夫纳
- - 冰岛克朗
- - 印度卢布
- - 伊朗里亚尔
- - 伊拉克第纳尔
- - 牙买加元
- - 约旦第纳尔
- - 肯尼亚先令
- - 巴布亚新几内亚Kina
- - 老挝基普
- - 科威特第纳尔
- - 赞比亚克瓦查
- - 安哥拉宽扎
- - 缅甸元
- - 格鲁吉亚拉里
- - 拉脱维亚拉特
- - 黎巴嫩镑
- - 阿尔巴尼亚Lek
- - 洪都拉斯伦皮拉
- - 塞拉利昂
- - 利比里亚元
- - 利比亚第纳尔
- - 马兰吉尼
- - 立陶宛立特
- - 洛蒂
- - 阿里亚
- - 马来西亚林吉特
- - 毛里求斯卢比
- - 墨西哥比索
- - Mexican Unidad de Inversion (MXV)
- - 摩尔多瓦列伊
- - 摩洛哥迪拉姆
- - 莫桑比克的梅蒂卡尔
- - Mvdol
- - 尼日利亞奈拉
- - 厄立特里亞奈克法
- - 纳米比亚元
- - 尼泊尔卢比
- - 荷兰安的列斯荷兰盾
- - 以色列新谢克尔
- - 新罗马尼亚列伊
- - 新台币
- - 新西兰元
- - 不丹魯姆
- - 北韩元
- - 挪威克朗
- - 秘鲁 索尔
- - 毛里塔尼亞烏吉亞
- - 東加潘加
- - 巴基斯坦卢比
- - 鈀
- - 澳門幣
- - 菲律賓披索
- - 白金
- - 英鎊
- - 波茨華拿普拉
- - 卡塔爾里亞爾
- - 危地馬拉格查爾
- - 南非蘭特
- - 阿曼里亞爾
- - 柬埔寨瑞爾
- - 馬爾代夫拉菲亞
- - 印尼盾
- - 俄罗斯卢布
- - 盧旺達法郎
- - 聖海倫娜鎊
- - 沙地阿拉伯里亞爾
- - SDR(特別提款權)
- - 塞爾維亞第納爾
- - 塞席爾盧比
- - 白银
- - 新加坡元
- - 所羅門群島元
- - 吉爾吉斯索姆
- - 索馬里先令
- - 塔吉克莫尼
- - 南蘇丹鎊
- - 斯里蘭卡盧比
- - 厄瓜多爾蘇克雷
- - 蘇丹鎊
- - 蘇里南元
- - 瑞典克朗
- - 瑞士法郎
- - 敘利亞鎊
- - 孟加拉塔卡
- - 薩摩亞塔拉
- - 坦桑尼亞先令
- - 哈薩克堅戈
- - 无
- - 千里達和多巴哥元
- - 蒙古圖格里克
- - 突尼西亞第納爾
- - 土耳其里拉
- - 土庫曼馬納特
- - 阿聯迪拉姆
- - 烏干達先令
- - 國際鐵路聯盟法郎
- - 哥倫比亞Unidad de Valor Real
- - 智利Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan Peso
- - 美元
- - 烏茲別克索姆
- - 瓦努阿圖瓦圖
- - “世界投资报告”欧元
- - “世界投资报告”法郎
- - 韩元
- - 也門里亞爾
- - 日元
- - 人民币
- - 贊比亞克瓦查
- - 津巴布韦元
- - 波蘭茲羅提
-
GnuCash里还没有科目信息。\n使用小部件前需要添加科目
版本号
授权许可
diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml
index 41b865484..21340b271 100644
--- a/app/src/main/res/values/donottranslate.xml
+++ b/app/src/main/res/values/donottranslate.xml
@@ -29,6 +29,7 @@
report_currency
enable_crashlytics
use_account_color
+ last_export_destination
- CREDIT
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 948ec1b40..3f0394ec5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -57,7 +57,7 @@
By default, only new transactions since last export will be exported. Check this option to export all transactions
Error exporting %1$s file
Export
- Delete after export
+ Delete transactions after export
All exported transactions will be deleted when exporting is completed
Settings
@@ -85,183 +85,6 @@
Display account
Create Accounts
Select accounts to create
-
- - Afghani
- - Algerian Dinar
- - Argentine Peso
- - Armenian Dram
- - Aruban Florin
- - Australian Dollar
- - Azerbaijanian Manat
- - Bahamian Dollar
- - Bahraini Dinar
- - Baht
- - Balboa
- - Barbados Dollar
- - Belarussian Ruble
- - Belize Dollar
- - Bermudian Dollar
- - Bolivar Fuerte
- - Boliviano
- - Brazilian Real
- - Brunei Dollar
- - Bulgarian Lev
- - Burundi Franc
- - Canadian Dollar
- - Cape Verde Escudo
- - Cayman Islands Dollar
- - CFA Franc BCEAO
- - CFA Franc BEAC
- - CFP Franc
- - Chilean Peso
- - Testing currency
- - Colombian Peso
- - Comoro Franc
- - Congolese Franc
- - Convertible Mark
- - Cordoba Oro
- - Costa Rican Colon
- - Croatian Kuna
- - Cuban Convertible Peso
- - Cuban Peso
- - Czech Koruna
- - Dalasi
- - Danish Krone
- - Denar
- - Djibouti Franc
- - Dobra
- - Dominican Peso
- - Dong
- - East Caribbean Dollar
- - Egyptian Pound
- - El Salvador Colon
- - Ethiopian Birr
- - Euro
- - Falkland Islands Pound
- - Fiji Dollar
- - Forint
- - Ghana Cedi
- - Gibraltar Pound
- - Gold
- - Gourde
- - Guarani
- - Guinea Franc
- - Guyana Dollar
- - Hong Kong Dollar
- - Hryvnia
- - Iceland Krona
- - Indian Rupee
- - Iranian Rial
- - Iraqi Dinar
- - Jamaican Dollar
- - Jordanian Dinar
- - Kenyan Shilling
- - Kina
- - Kip
- - Kuwaiti Dinar
- - Kwacha
- - Kwanza
- - Kyat
- - Lari
- - Latvian Lats
- - Lebanese Pound
- - Lek
- - Lempira
- - Leone
- - Liberian Dollar
- - Libyan Dinar
- - Lilangeni
- - Lithuanian Litas
- - Loti
- - Malagasy Ariary
- - Malaysian Ringgit
- - Mauritius Rupee
- - Mexican Peso
- - Mexican Unidad de Inversion (UDI)
- - Moldovan Leu
- - Moroccan Dirham
- - Mozambique Metical
- - Mvdol
- - Naira
- - Nakfa
- - Namibia Dollar
- - Nepalese Rupee
- - Netherlands Antillean Guilder
- - New Israeli Sheqel
- - New Romanian Leu
- - New Taiwan Dollar
- - New Zealand Dollar
- - Ngultrum
- - North Korean Won
- - Norwegian Krone
- - Nuevo Sol
- - Ouguiya
- - Pa’anga
- - Pakistan Rupee
- - Palladium
- - Pataca
- - Philippine Peso
- - Platinum
- - Pound Sterling
- - Pula
- - Qatari Rial
- - Quetzal
- - Rand
- - Rial Omani
- - Riel
- - Rufiyaa
- - Rupiah
- - Russian Ruble
- - Rwanda Franc
- - Saint Helena Pound
- - Saudi Riyal
- - SDR (Special Drawing Right)
- - Serbian Dinar
- - Seychelles Rupee
- - Silver
- - Singapore Dollar
- - Solomon Islands Dollar
- - Som
- - Somali Shilling
- - Somoni
- - South Sudanese Pound
- - Sri Lanka Rupee
- - Sucre
- - Sudanese Pound
- - Surinam Dollar
- - Swedish Krona
- - Swiss Franc
- - Syrian Pound
- - Taka
- - Tala
- - Tanzanian Shilling
- - Tenge
- - No currency
- - Trinidad and Tobago Dollar
- - Tugrik
- - Tunisian Dinar
- - Turkish Lira
- - Turkmenistan New Manat
- - UAE Dirham
- - Uganda Shilling
- - UIC-Franc
- - Unidad de Valor Real
- - Unidades de fomento
- - Uruguay Peso en Unidades Indexadas (URUIURUI)
- - Uruguayan peso
- - US Dollar
- - Uzbekistan Sum
- - Vatu
- - WIR Euro
- - WIR Franc
- - Won
- - Yemeni Rial
- - Yen
- - Yuan Renminbi
- - Zambian Kwacha
- - Zimbabwe Dollar
- - Zloty
-
No accounts exist in GnuCash.\nCreate an account before adding a widget
Build version
License
diff --git a/app/src/main/res/xml-v11/fragment_account_preferences.xml b/app/src/main/res/xml-v11/fragment_account_preferences.xml
index d2f360a99..8c3179e4a 100644
--- a/app/src/main/res/xml-v11/fragment_account_preferences.xml
+++ b/app/src/main/res/xml-v11/fragment_account_preferences.xml
@@ -5,7 +5,7 @@
android:key="@string/key_default_currency"
android:dialogTitle="@string/title_choose_currency"
android:title="@string/title_default_currency"
- android:entries="@array/currency_names"
+ android:entries="@array/key_currency_codes"
android:entryValues="@array/key_currency_codes"/>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.gnucash.android.test.unit.export;
+
+import org.gnucash.android.BuildConfig;
+import org.gnucash.android.export.ExportFormat;
+import org.gnucash.android.export.ExportParams;
+import org.gnucash.android.export.Exporter;
+import org.gnucash.android.export.xml.GncXmlExporter;
+import org.gnucash.android.test.unit.db.AccountsDbAdapterTest;
+import org.gnucash.android.test.unit.util.GnucashTestRunner;
+import org.gnucash.android.test.unit.util.ShadowCrashlytics;
+import org.gnucash.android.test.unit.util.ShadowUserVoice;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+import java.io.File;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Test backup and restore functionality
+ */
+@RunWith(GnucashTestRunner.class)
+@Config(constants = BuildConfig.class, sdk = 21, packageName = "org.gnucash.android", shadows = {ShadowCrashlytics.class, ShadowUserVoice.class})
+public class BackupTest {
+
+ @Before
+ public void setUp(){
+ AccountsDbAdapterTest.loadDefaultAccounts();
+ }
+
+ @Test
+ public void shouldCreateBackup(){
+ boolean backupResult = GncXmlExporter.createBackup();
+ assertThat(backupResult).isTrue();
+ }
+
+ @Test
+ public void shouldCreateBackupFileName(){
+ Exporter exporter = new GncXmlExporter(new ExportParams(ExportFormat.XML));
+ List xmlFiles = exporter.generateExport();
+
+ assertThat(xmlFiles).hasSize(1);
+ assertThat(new File(xmlFiles.get(0)))
+ .exists()
+ .hasExtension(ExportFormat.XML.getExtension().substring(1));
+
+ }
+}
diff --git a/app/src/test/java/org/gnucash/android/test/unit/export/GncXmlHelperTest.java b/app/src/test/java/org/gnucash/android/test/unit/export/GncXmlHelperTest.java
index 0e4c811f1..320b218bd 100644
--- a/app/src/test/java/org/gnucash/android/test/unit/export/GncXmlHelperTest.java
+++ b/app/src/test/java/org/gnucash/android/test/unit/export/GncXmlHelperTest.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (c) 2014 - 2015 Ngewi Fet
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.gnucash.android.test.unit.export;
import org.gnucash.android.export.xml.GncXmlHelper;
diff --git a/app/src/test/java/org/gnucash/android/test/unit/model/CommodityTest.java b/app/src/test/java/org/gnucash/android/test/unit/model/CommodityTest.java
index 14d82b9b5..28195340d 100644
--- a/app/src/test/java/org/gnucash/android/test/unit/model/CommodityTest.java
+++ b/app/src/test/java/org/gnucash/android/test/unit/model/CommodityTest.java
@@ -27,7 +27,7 @@ public class CommodityTest {
@Test
public void setSmallestFraction_shouldNotUseDigits(){
- Commodity commodity = new Commodity("Test", "USD", 4);
+ Commodity commodity = new Commodity("Test", "USD", 100);
assertThat(commodity.getSmallestFraction()).isEqualTo(100);
commodity.setSmallestFraction(1000);
@@ -36,7 +36,7 @@ public void setSmallestFraction_shouldNotUseDigits(){
@Test
public void testSmallestFractionDigits(){
- Commodity commodity = new Commodity("Test", "USD", 4);
+ Commodity commodity = new Commodity("Test", "USD", 100);
assertThat(commodity.getSmallestFractionDigits()).isEqualTo(2);
commodity.setSmallestFraction(10);
diff --git a/app/src/test/java/org/gnucash/android/test/unit/model/MoneyTest.java b/app/src/test/java/org/gnucash/android/test/unit/model/MoneyTest.java
index 1340dc208..fd5eb6a81 100644
--- a/app/src/test/java/org/gnucash/android/test/unit/model/MoneyTest.java
+++ b/app/src/test/java/org/gnucash/android/test/unit/model/MoneyTest.java
@@ -57,18 +57,15 @@ public void testCreation(){
Money temp = new Money(amount, CURRENCY_CODE);
assertThat("12.25").isEqualTo(temp.toPlainString());
+ assertThat(temp.getNumerator()).isEqualTo(1225L);
+ assertThat(temp.getDenominator()).isEqualTo(100L);
Commodity commodity = Commodity.getInstance(CURRENCY_CODE);
temp = new Money(BigDecimal.TEN, commodity);
- assertEquals("10", temp.asBigDecimal().toPlainString());
+ assertEquals("10.00", temp.asBigDecimal().toPlainString()); //decimal places for EUR currency
assertEquals(commodity, temp.getCommodity());
-
- //test only Locale.US parsing even under different locale
- Locale.setDefault(Locale.GERMANY);
- amount = "12,25";
- temp = new Money(amount, CURRENCY_CODE);
- assertEquals("1225.00", temp.toPlainString());
+ assertThat("10").isNotEqualTo(temp.asBigDecimal().toPlainString());
}
@Test
@@ -134,6 +131,24 @@ public void testNegation(){
validateImmutability();
}
+ @Test
+ public void testFractionParts(){
+ Money money = new Money("14.15", "USD");
+ assertThat(money.getNumerator()).isEqualTo(1415L);
+ assertThat(money.getDenominator()).isEqualTo(100L);
+
+ money = new Money("125", "JPY");
+ assertThat(money.getNumerator()).isEqualTo(125L);
+ assertThat(money.getDenominator()).isEqualTo(1L);
+ }
+
+ @Test
+ public void nonMatchingCommodityFraction_shouldThrowException(){
+ Money money = new Money("12.345", "JPY");
+ assertThat(money.getNumerator()).isEqualTo(12L);
+ assertThat(money.getDenominator()).isEqualTo(1);
+ }
+
@Test
public void testPrinting(){
assertEquals(mMoneyInEur.asString(), mMoneyInEur.toPlainString());
@@ -145,9 +160,9 @@ public void testPrinting(){
String actualOuputDE = mMoneyInEur.formattedString(Locale.GERMANY);
assertThat(actualOuputDE).isEqualTo("15,75 " + symbol);
- symbol = Currency.getInstance("EUR").getSymbol(Locale.US);
+ symbol = Currency.getInstance("EUR").getSymbol(Locale.GERMANY);
String actualOuputUS = mMoneyInEur.formattedString(Locale.US);
- assertThat(actualOuputUS).isEqualTo("15.75 " + symbol);
+ assertThat(actualOuputUS).isEqualTo(symbol + "15.75");
//always prints with 2 decimal places only
Money some = new Money("9.7469", CURRENCY_CODE);