package com.samsung.spensdk.example.signature;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import com.samsung.spensdk.SCanvasConstants;
import com.samsung.spensdk.SCanvasView;
import com.samsung.spensdk.applistener.SCanvasInitializeListener;
import com.samsung.spensdk.example.R;
public class SPen_Example_SignatureVerification extends Activity {
private final String TAG = "SPenSDK Sample";
public ArrayList<ListItem> mSignatureListItem;
public SCanvasView mSCanvas;
public ListAdapter mSignatureAdapter;
public ListView mSignatureList;
private Toast m_Toast = null;
int mDialogSelect = 1;
int mVerificationLevel = SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_MEDIUM;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example_signature_verification);
mSCanvas = (SCanvasView) findViewById(R.id.canvas_view);
// ====================================================================================
//
// Set Callback Listener(Interface)
//
// ====================================================================================
SCanvasInitializeListener scanvasInitializeListener = new SCanvasInitializeListener() {
@Override
public void onInitialized() {
// --------------------------------------------
// Start SCanvasView/CanvasView Task Here
// --------------------------------------------
// Start Signature Mode
mSCanvas.openSignatureEngine();
mSCanvas.setCanvasZoomEnable(false); // disable Zoom
}
};
mSCanvas.setSCanvasInitializeListener(scanvasInitializeListener);
sToastS(getResources().getString(R.string.signature_verification_draw));
mSignatureListItem = new ArrayList<ListItem>();
mSignatureListItem.add(new ListItem(getResources().getString(R.string.signature_verification_verification_title), getResources().getString(
R.string.signature_verification_verification_sub_title)));
mSignatureListItem.add(new ListItem(getResources().getString(R.string.signature_verification_level_title), getResources().getString(R.string.signature_verification_level_sub_title)));
mSignatureListItem.add(new ListItem(getResources().getString(R.string.signature_retry_title), getResources().getString(R.string.signature_retry_sub_title)));
mSignatureAdapter = new ListAdapter(this);
mSignatureList = (ListView) findViewById(R.id.signature_list);
mSignatureList.setAdapter(mSignatureAdapter);
mSignatureList.setItemsCanFocus(false);
mSignatureList.setTextFilterEnabled(true);
mSignatureList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
if (mSCanvas.verifySignature(mVerificationLevel)) {
// Signature verification success
sToastS(getResources().getString(R.string.signature_verification_verification_success));
} else {
// Signature verification failure
sToastS(getResources().getString(R.string.signature_verification_verification_failure));
}
} else if (position == 1) {
AlertDialog.Builder ab = new AlertDialog.Builder(SPen_Example_SignatureVerification.this);
if (mVerificationLevel == SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_LOW) {
mDialogSelect = 0;
} else if (mVerificationLevel == SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_MEDIUM) {
mDialogSelect = 1;
} else if (mVerificationLevel == SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_HIGH) {
mDialogSelect = 2;
}
ab.setTitle(getResources().getString(R.string.signature_verification_level_sub_title))
.setSingleChoiceItems(R.array.signature_threshold, mDialogSelect, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mDialogSelect = which;
}
}).setPositiveButton(getResources().getString(R.string.signature_verification_level_confirm), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
if (mDialogSelect == 0) {
mVerificationLevel = SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_LOW;
} else if (mDialogSelect == 1) {
mVerificationLevel = SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_MEDIUM;
} else if (mDialogSelect == 2) {
mVerificationLevel = SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_HIGH;
}
mSignatureAdapter.notifyDataSetChanged();
}
}).setNegativeButton(getResources().getString(R.string.signature_verification_level_cancel), null).show();
} else if (position == 2) {
if (mSCanvas.clearSignatureScreen()) {
// Canvas reset success
sToastS(getResources().getString(R.string.signature_verification_draw));
}
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// Release SCanvasView resources
if(!mSCanvas.closeSCanvasView())
Log.e(TAG, "Fail to close SCanvasView");
}
// Items for ListView
class ListItem {
ListItem(String iTitle, String isubTitle) {
Title = iTitle;
subTitle = isubTitle;
}
String Title;
String subTitle;
}
// Adapter class for list Item
class ListAdapter extends BaseAdapter {
LayoutInflater Inflater;
public ListAdapter(Context context) {
Inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mSignatureListItem.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mSignatureListItem.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = Inflater.inflate(R.layout.example_signature_list_item, parent, false);
}
if (position == 0) {
TextView title = (TextView) convertView.findViewById(R.id.signature_list_title);
if (mVerificationLevel == SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_LOW) {
title.setText(mSignatureListItem.get(position).Title + " ( Level = " + getResources().getString(R.string.signature_verification_level_low) + " )");
} else if (mVerificationLevel == SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_MEDIUM) {
title.setText(mSignatureListItem.get(position).Title + " ( Level = " + getResources().getString(R.string.signature_verification_level_medium) + " )");
} else if (mVerificationLevel == SCanvasConstants.SIGNATURE_VERIFICATION_LEVEL_HIGH) {
title.setText(mSignatureListItem.get(position).Title + " ( Level = " + getResources().getString(R.string.signature_verification_level_high) + " )");
}
TextView subtitle = (TextView) convertView.findViewById(R.id.signature_list_subtitle);
subtitle.setText(mSignatureListItem.get(position).subTitle);
} else {
TextView title = (TextView) convertView.findViewById(R.id.signature_list_title);
title.setText(mSignatureListItem.get(position).Title);
TextView subtitle = (TextView) convertView.findViewById(R.id.signature_list_subtitle);
subtitle.setText(mSignatureListItem.get(position).subTitle);
}
return convertView;
}
}
@Override
public void onBackPressed() {
mSCanvas.closeSignatureEngine();
super.onBackPressed();
}
public void sToastS(String i_String) {
if (m_Toast == null) {
m_Toast = Toast.makeText(this, i_String, Toast.LENGTH_SHORT);
} else {
m_Toast.setText(i_String);
}
m_Toast.show();
}
}