Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;

Expand All @@ -42,14 +43,15 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager,
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];

String accountUID = PreferenceManager
.getDefaultSharedPreferences(context)
SharedPreferences defaultSharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
String accountUID = defaultSharedPrefs
.getString(UxArgument.SELECTED_ACCOUNT_UID + appWidgetId, null);
boolean shouldDisplayBalance = defaultSharedPrefs
.getBoolean(UxArgument.SHOULD_DISPLAY_BALANCE + appWidgetId, true);
if (accountUID == null)
return;

WidgetConfigurationActivity.updateWidget(context, appWidgetId, accountUID);
WidgetConfigurationActivity.updateWidget(context, appWidgetId, accountUID, shouldDisplayBalance);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ public final class UxArgument {
*/
public static final String SELECTED_ACCOUNT_UID = "account_uid";

/**
* Key for passing whether a widget should display the balance
*/
public static final String SHOULD_DISPLAY_BALANCE = "should_display_balance";

/**
* Key for passing argument for the parent account GUID.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RemoteViews;
import android.widget.Spinner;
import android.widget.Toast;
Expand Down Expand Up @@ -58,6 +59,7 @@ public class WidgetConfigurationActivity extends Activity {
private int mAppWidgetId;

private Spinner mAccountsSpinner;
private CheckBox mShouldDisplayBalance;
private Button mOkButton;
private Button mCancelButton;

Expand All @@ -68,6 +70,7 @@ public void onCreate(Bundle savedInstanceState) {
setResult(RESULT_CANCELED);

mAccountsSpinner = (Spinner) findViewById(R.id.input_accounts_spinner);
mShouldDisplayBalance = (CheckBox) findViewById(R.id.input_should_display_balance);
mOkButton = (Button) findViewById(R.id.btn_save);
mCancelButton = (Button) findViewById(R.id.btn_cancel);

Expand All @@ -83,7 +86,11 @@ public void onCreate(Bundle savedInstanceState) {
//without this line, the app crashes when a user tries to select an account
cursorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mAccountsSpinner.setAdapter(cursorAdapter);


boolean passcodeEnabled = PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
.getBoolean(UxArgument.ENABLED_PASSCODE, false);
mShouldDisplayBalance.setChecked(!passcodeEnabled);

bindListeners();
}

Expand All @@ -109,13 +116,15 @@ public void onClick(View v) {
}

long accountId = mAccountsSpinner.getSelectedItemId();
boolean shouldDisplayBalance = mShouldDisplayBalance.isChecked();
String accountUID = mAccountsDbAdapter.getUID(accountId);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(WidgetConfigurationActivity.this);
Editor editor = prefs.edit();
editor.putString(UxArgument.SELECTED_ACCOUNT_UID + mAppWidgetId, accountUID);
editor.putBoolean(UxArgument.SHOULD_DISPLAY_BALANCE + mAppWidgetId, shouldDisplayBalance);
editor.commit();

updateWidget(WidgetConfigurationActivity.this, mAppWidgetId, accountUID);
updateWidget(WidgetConfigurationActivity.this, mAppWidgetId, accountUID, shouldDisplayBalance);

Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
Expand All @@ -140,7 +149,7 @@ public void onClick(View v) {
* @param appWidgetId ID of the widget to be updated
* @param accountUID GUID of the account tied to the widget
*/
public static void updateWidget(final Context context, int appWidgetId, String accountUID) {
public static void updateWidget(final Context context, int appWidgetId, String accountUID, boolean shouldDisplayBalance) {
Log.i("WidgetConfiguration", "Updating widget: " + appWidgetId);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

Expand Down Expand Up @@ -173,10 +182,14 @@ public static void updateWidget(final Context context, int appWidgetId, String a

Money accountBalance = accountsDbAdapter.getAccountBalance(accountUID, -1, System.currentTimeMillis());

views.setTextViewText(R.id.transactions_summary,
accountBalance.formattedString(Locale.getDefault()));
int color = accountBalance.isNegative() ? R.color.debit_red : R.color.credit_green;
views.setTextColor(R.id.transactions_summary, context.getResources().getColor(color));
if (shouldDisplayBalance) {
views.setTextViewText(R.id.transactions_summary,
accountBalance.formattedString(Locale.getDefault()));
int color = accountBalance.isNegative() ? R.color.debit_red : R.color.credit_green;
views.setTextColor(R.id.transactions_summary, context.getResources().getColor(color));
} else {
views.setViewVisibility(R.id.transactions_summary, View.GONE);
}


Intent accountViewIntent = new Intent(context, TransactionsActivity.class);
Expand Down Expand Up @@ -219,11 +232,13 @@ public void run() {
for (final int widgetId : appWidgetIds) {
final String accountUID = defaultSharedPrefs
.getString(UxArgument.SELECTED_ACCOUNT_UID + widgetId, null);
final boolean shouldDisplayBalance = defaultSharedPrefs
.getBoolean(UxArgument.SHOULD_DISPLAY_BALANCE + widgetId, true);

if (accountUID == null)
continue;

updateWidget(context, widgetId, accountUID);
updateWidget(context, widgetId, accountUID, shouldDisplayBalance);
}
}
}).start();
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/res/layout/widget_configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,12 @@
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight" />

<CheckBox
android:id="@+id/input_should_display_balance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/label_should_display_balance"
android:checked="true"/>

<include layout="@layout/default_buttons"/>
</LinearLayout>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@
<string name="label_permission_record_transaction">Record transactions in GnuCash</string>
<string name="label_permission_create_account">Create accounts in GnuCash</string>
<string name="label_display_account">Display account</string>
<string name="label_should_display_balance">Display balance?</string>
<string name="btn_create_accounts">Create Accounts</string>
<string name="title_default_accounts">Select accounts to create</string>
<string name="error_no_accounts">No accounts exist in GnuCash.\nCreate an account before adding a widget</string>
Expand Down