public static final int account_btn_holds=0x7f090008;
public static final int action_bar=0x7f090018;
public static final int back_button=0x7f090019;
- public static final int cancel_hold=0x7f090029;
+ public static final int cancel_hold=0x7f09002a;
public static final int cancel_hold_button=0x7f09001a;
public static final int checkout_due_date=0x7f090005;
public static final int checkout_items_list=0x7f090001;
public static final int hold_physical_description=0x7f09001f;
public static final int hold_pickup_location=0x7f090023;
public static final int hold_recipient=0x7f09001c;
- public static final int hold_status=0x7f090028;
+ public static final int hold_status=0x7f090029;
public static final int hold_suspend_hold=0x7f090025;
- public static final int hold_thaw_date=0x7f09002b;
+ public static final int hold_thaw_date=0x7f090026;
public static final int hold_title=0x7f09001d;
- public static final int holds_item_list=0x7f090027;
- public static final int holds_number=0x7f090026;
+ public static final int holds_item_list=0x7f090028;
+ public static final int holds_number=0x7f090027;
public static final int main_btn_account=0x7f09000c;
public static final int main_btn_app_settings=0x7f09000d;
public static final int main_btn_search=0x7f09000b;
- public static final int place_hold=0x7f09002a;
+ public static final int place_hold=0x7f09002b;
public static final int record_details_info_author=0x7f09002d;
public static final int record_details_info_publisher=0x7f09002e;
public static final int record_details_info_title=0x7f09002c;
public static final int app_name=0x7f070001;
public static final int author=0x7f07000d;
public static final int back=0x7f070019;
- public static final int balance_owed=0x7f07001f;
+ public static final int balance_owed=0x7f070022;
public static final int cancel=0x7f070017;
public static final int cancel_hold=0x7f070018;
public static final int cancel_hold_dialog_message=0x7f07001b;
public static final int enable_phone_notification=0x7f070010;
public static final int expiration_date=0x7f070014;
public static final int hello=0x7f070000;
- public static final int overdue_materials=0x7f070020;
+ public static final int hold_expire_time_hint=0x7f07001e;
+ public static final int hold_phone_hint=0x7f07001d;
+ public static final int hold_thaw_date_hint=0x7f07001f;
+ public static final int overdue_materials=0x7f070023;
public static final int physical_description=0x7f07000e;
public static final int pickup_location=0x7f070013;
public static final int place_hold=0x7f070016;
public static final int title_search=0x7f070002;
/** Fines Activity
*/
- public static final int total_owned=0x7f07001d;
- public static final int total_paid=0x7f07001e;
+ public static final int total_owned=0x7f070020;
+ public static final int total_paid=0x7f070021;
public static final int update_hold=0x7f07001a;
}
public static final class style {
package org.evergreen.android.accountAccess.holds;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Date;
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
+import org.evergreen.android.globals.GlobalConfigs;
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.app.DatePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
+import android.graphics.Color;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.view.View;
import android.view.View.OnClickListener;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
+import android.widget.Spinner;
import android.widget.TextView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.Toast;
-public class HoldDetails extends Activity{
+public class HoldDetails extends Activity {
-
public static final int RESULT_CODE_DELETE_HOLD = 0;
-
+
public static final int RESULT_CODE_UPDATE_HOLD = 1;
-
+
public static final int RESULT_CODE_CANCEL = 2;
-
+
private TextView recipient;
-
+
private TextView title;
-
+
private TextView author;
-
+
private TextView physical_description;
-
+
private TextView screen_title;
-
+
private AccountAccess accountAccess;
-
+
private EditText expiration_date;
-
+
private Button updateHold;
-
+
private Button cancelHold;
-
+
private Button back;
-
+
+ private EditText phone_number;
+
+ private CheckBox phone_notification;
+
+ private CheckBox email_notification;
+
private DatePickerDialog datePicker = null;
-
+
+ private CheckBox suspendHold;
+
+ private Spinner orgSelector;
+
+ private DatePickerDialog thaw_datePicker = null;
+
+ private EditText thaw_date_edittext;
+
+ private Date expire_date = null;
+
+ private Date thaw_date = null;
+
private Context context;
+
+ private int selectedOrgPos = 0;
+
+ public Runnable updateHoldRunnable;
+ private ProgressDialog progressDialog;
+
+ private GlobalConfigs globalConfigs;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
setContentView(R.layout.hold_details);
-
- final HoldRecord record = (HoldRecord) getIntent().getSerializableExtra("holdRecord");
-
- System.out.println("Record " + record + " " + record.title + " " + record.ahr);
-
+ globalConfigs = GlobalConfigs.getGlobalConfigs(this);
+
+ final HoldRecord record = (HoldRecord) getIntent()
+ .getSerializableExtra("holdRecord");
+
+ System.out.println("Record " + record + " " + record.title + " "
+ + record.ahr);
+
accountAccess = AccountAccess.getAccountAccess();
-
+
recipient = (TextView) findViewById(R.id.hold_recipient);
title = (TextView) findViewById(R.id.hold_title);
author = (TextView) findViewById(R.id.hold_author);
cancelHold = (Button) findViewById(R.id.cancel_hold_button);
updateHold = (Button) findViewById(R.id.update_hold_button);
back = (Button) findViewById(R.id.back_button);
-
+
+ phone_number = (EditText) findViewById(R.id.hold_contact_telephone);
+ phone_notification = (CheckBox) findViewById(R.id.hold_enable_phone_notification);
+ email_notification = (CheckBox) findViewById(R.id.hold_enable_email_notification);
+ suspendHold = (CheckBox) findViewById(R.id.hold_suspend_hold);
+
+ orgSelector = (Spinner) findViewById(R.id.hold_pickup_location);
expiration_date = (EditText) findViewById(R.id.hold_expiration_date);
-
+ thaw_date_edittext = (EditText) findViewById(R.id.hold_thaw_date);
+
screen_title.setText("Place Hold");
-
+
+
+
recipient.setText(accountAccess.userName);
title.setText(record.title);
author.setText(record.author);
- if(record.recordInfo != null)
- physical_description.setText(record.recordInfo.physical_description);
+ if (record.recordInfo != null)
+ physical_description
+ .setText(record.recordInfo.physical_description);
+
+ // set record info
+ phone_notification.setChecked(record.phone_notification);
+ email_notification.setChecked(record.email_notification);
+ suspendHold.setChecked(record.suspended);
- System.out.println(record.title + " " + record.author);
+ if (record.thaw_date != null) {
+ thaw_date = record.thaw_date;
+ thaw_date_edittext.setText(DateFormat.format("MMMM dd, yyyy",
+ thaw_date));
+ }
+ if (record.expire_time != null) {
+ expire_date = record.expire_time;
+ expiration_date.setText(DateFormat.format("MMMM dd, yyyy",
+ expire_date));
+ }
+
+ // hide edit text
+ if( record.thaw_date == null)
+ disableView(thaw_date_edittext);
+ if(!record.phone_notification)
+ disableView(phone_number);
+
+ System.out.println(record.title + " " + record.author);
+
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
});
cancelHold.setOnClickListener(new OnClickListener() {
-
+
@Override
public void onClick(View v) {
-
-
- Builder confirmationDialogBuilder = new AlertDialog.Builder(context);
- confirmationDialogBuilder.setMessage(R.string.cancel_hold_dialog_message);
-
- confirmationDialogBuilder.setNegativeButton(android.R.string.no, null);
- confirmationDialogBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- System.out.println("Remove hold with id" + record.ahr.getInt("id"));
-
- //TODO put into thread
- accountAccess.cancelHold(record.ahr);
-
- setResult(RESULT_CODE_DELETE_HOLD);
-
- finish();
- }
- });
- confirmationDialogBuilder.create().show();
-
+
+ Builder confirmationDialogBuilder = new AlertDialog.Builder(
+ context);
+ confirmationDialogBuilder
+ .setMessage(R.string.cancel_hold_dialog_message);
+
+ confirmationDialogBuilder.setNegativeButton(
+ android.R.string.no, null);
+ confirmationDialogBuilder.setPositiveButton(
+ android.R.string.yes,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog,
+ int which) {
+
+ System.out.println("Remove hold with id"
+ + record.ahr.getInt("id"));
+
+ progressDialog = ProgressDialog.show(context, "Please wait", "Canceling hold");
+ Thread cancelHoldThread = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ accountAccess.cancelHold(record.ahr);
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ progressDialog.dismiss();
+ setResult(RESULT_CODE_DELETE_HOLD);
+
+ finish();
+ }
+ });
+ }
+ });
+ cancelHoldThread.start();
+
+ }
+ });
+ confirmationDialogBuilder.create().show();
+
}
});
+
+ updateHoldRunnable = new Runnable() {
+ @Override
+ public void run() {
+ // update new values
+ String expire_date_s = null;
+ String thaw_date_s = null;
+ if (expire_date != null)
+ expire_date_s = GlobalConfigs.getStringDate(expire_date);
+ if (thaw_date != null)
+ thaw_date_s = GlobalConfigs.getStringDate(thaw_date);
+
+ accountAccess.updateHold(record.ahr, selectedOrgPos,
+ email_notification.isChecked(), phone_notification
+ .isChecked(),
+ phone_number.getText().toString(), suspendHold
+ .isChecked(), expire_date_s, thaw_date_s);
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ progressDialog.dismiss();
+ Toast.makeText(context, "Hold updated", Toast.LENGTH_SHORT);
+ setResult(RESULT_CODE_UPDATE_HOLD);
+ finish();
+ }
+ });
+ }
+ };
updateHold.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
+ progressDialog = ProgressDialog.show(context, "Please wait", "Updating hold");
+ Thread updateHoldThread = new Thread(updateHoldRunnable);
+ updateHoldThread.start();
+ }
+ });
+
+ phone_notification
+ .setOnCheckedChangeListener(new OnCheckedChangeListener() {
+
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView,
+ boolean isChecked) {
+
+ if (isChecked) {
+ enableView(phone_number);
+ } else
+ disableView(phone_number);
+ }
+ });
+
+ suspendHold.setOnCheckedChangeListener(new OnCheckedChangeListener() {
+
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView,
+ boolean isChecked) {
- //update new values
- accountAccess.updateHold(record.ahr);
+ if (isChecked) {
+ enableView(thaw_date_edittext);
+ } else {
+ disableView(thaw_date_edittext);
+ }
}
});
-
Calendar cal = Calendar.getInstance();
+
datePicker = new DatePickerDialog(this,
- new DatePickerDialog.OnDateSetListener() {
-
- public void onDateSet(DatePicker view, int year,
- int monthOfYear, int dayOfMonth)
- {
- Time chosenDate = new Time();
- chosenDate.set(dayOfMonth, monthOfYear, year);
- long dtDob = chosenDate.toMillis(true);
- CharSequence strDate = DateFormat.format("MMMM dd, yyyy", dtDob);
- expiration_date.setText(strDate);
- //set current date
- }}, cal.get(Calendar.YEAR),cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
-
+ new DatePickerDialog.OnDateSetListener() {
+
+ public void onDateSet(DatePicker view, int year,
+ int monthOfYear, int dayOfMonth) {
+
+ Date chosenDate = new Date(year - 1900, monthOfYear,
+ dayOfMonth);
+ expire_date = chosenDate;
+ CharSequence strDate = DateFormat.format(
+ "MMMM dd, yyyy", chosenDate);
+ expiration_date.setText(strDate);
+ // set current date
+ }
+ }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+ cal.get(Calendar.DAY_OF_MONTH));
+
expiration_date.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
datePicker.show();
}
});
-
+
+ thaw_datePicker = new DatePickerDialog(this,
+ new DatePickerDialog.OnDateSetListener() {
+
+ public void onDateSet(DatePicker view, int year,
+ int monthOfYear, int dayOfMonth) {
+
+ Date chosenDate = new Date(year - 1900, monthOfYear,
+ dayOfMonth);
+ thaw_date = chosenDate;
+ CharSequence strDate = DateFormat.format(
+ "MMMM dd, yyyy", chosenDate);
+ thaw_date_edittext.setText(strDate);
+ // set current date
+ }
+ }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+ cal.get(Calendar.DAY_OF_MONTH));
+
+ thaw_date_edittext.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ thaw_datePicker.show();
+ }
+ });
+
+ ArrayList<String> list = new ArrayList<String>();
+ for (int i = 0; i < globalConfigs.organisations.size(); i++) {
+ list.add(globalConfigs.organisations.get(i).padding
+ + globalConfigs.organisations.get(i).name);
+
+ if (globalConfigs.organisations.get(i).id == record.pickup_lib)
+ selectedOrgPos = i;
+ }
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+ android.R.layout.simple_spinner_item, list);
+ orgSelector.setAdapter(adapter);
+
+ orgSelector.setSelection(selectedOrgPos);
+
+ orgSelector.setOnItemSelectedListener(new OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView<?> arg0, View arg1, int ID,
+ long arg3) {
+
+ selectedOrgPos = ID;
+
+ }
+
+ public void onNothingSelected(android.widget.AdapterView<?> arg0) {
+ }
+ });
}
-
+
+ public void disableView(View view) {
+
+ // view.setFocusable(false);
+ view.setFocusable(false);
+
+ view.setBackgroundColor(Color.argb(255, 100, 100, 100));
+ // view.setVisibility(View.INVISIBLE);
+ }
+
+ public void enableView(View view) {
+ // view.setVisibility(View.VISIBLE);
+
+ view.setFocusableInTouchMode(true);
+
+ view.setBackgroundColor(Color.argb(255, 255, 255, 255));
+ }
+
}