<commit_before>/**
 *
 */
package net.formula97.andorid.car_kei_bo;

import java.math.BigDecimal;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

/**
 * @author kazutoshi
 *
 */
/**
 * @author kazutoshi
 *
 */
public class MileageList extends Activity implements OnClickListener {

	private int CAR_ID;
	private String CAR_NAME;

	// ウィジェット類の定義
	TextView tv_element_CarName2;		// クルマの名前
	TextView tv_value_FuelMileage2;		// クルマのトータル燃費
	TextView tv_unit_fuelMileage2;		// クルマの燃費単位
	TextView tv_value_RunningCosts2;		// クルマのトータルランニングコスト
	TextView tv_unit_runningCosts2;		// クルマのランニングコスト単位
	Button btn_add_mileage;				// 燃費記録追加ボタン
	Button btn_show_stats;
	ListView lv_mileagelist;			// 燃費記録を表示するListView
	TextView tv_element_totalAmountOfOil;
	TextView tv_value_totalAmountOfOil;
	TextView tv_unit_totalAmountOfOil;

	private DbManager dbman = new DbManager(this);
	//private DateManager dmngr = new DateManager();
	public static SQLiteDatabase db;

	Cursor cMileageList;
	Cursor cLvRow;
	Cursor selectedRow = null;

	int currentRecordId = 0;

	AlertDialog.Builder adbuilder;

	String priceUnit;
	String distanceUnit;
	String volumeUnit;

	boolean hasRecord;

	/**
	 *
	 */
	public MileageList() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fuelmileagelist);

		// ウィジェット類の取得
		tv_element_CarName2 = (TextView)findViewById(R.id.tv_element_CarName2);
		tv_value_FuelMileage2 = (TextView)findViewById(R.id.tv_value_FuelMileage2);
		tv_unit_fuelMileage2 = (TextView)findViewById(R.id.tv_unit_fuelMileage2);
		tv_value_RunningCosts2 = (TextView)findViewById(R.id.tv_value_RunningCosts2);
		tv_unit_runningCosts2 = (TextView)findViewById(R.id.tv_unit_runningCosts2);
		btn_add_mileage = (Button)findViewById(R.id.btn_add_mileage);
		btn_show_stats = (Button)findViewById(R.id.btn_show_stats);
		lv_mileagelist = (ListView)findViewById(R.id.lv_mileagelist);
		tv_element_totalAmountOfOil = (TextView)findViewById(R.id.tv_element_totalAmountOfOil);
		tv_value_totalAmountOfOil = (TextView)findViewById(R.id.tv_value_totalAmountOfOil);
		tv_unit_totalAmountOfOil = (TextView)findViewById(R.id.tv_unit_totalAmountOfOil);

		// 渡された引数を解析してグローバル変数に格納
		Intent i = getIntent();
		setCAR_ID(i.getIntExtra("CAR_ID", 0));
		setCAR_NAME(i.getStringExtra("CAR_NAME"));

		Log.d(getResources().toString(), "CAR_ID : " + String.valueOf(getCAR_ID()));
		Log.d(getResources().toString(), "CAR_NAME : " + getCAR_NAME());

		tv_element_CarName2.setText(getCAR_NAME());

		// AlertDialog周りの処理
		// ・ダイアログのタイトルは「Detail of refuel record（＝給油記録の詳細）」
		// ・端末のキャンセルキーでダイアログが消せるようにセット
		// ・ボタンはOKボタンのみ
		adbuilder = new AlertDialog.Builder(this);
		adbuilder.setTitle(R.string.adtitle_detail_of_refuel);
		adbuilder.setCancelable(true);
		adbuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// AlertDialogでは、表示を消す以外のことをさせる予定はないため、
				// 何もせずそのまま抜ける。
			}
		});

	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onDestroy()
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();

		if (hasRecord) {
			closeCursor(cMileageList);
			//closeCursor(cLvRow);
		}
		closeDb(db);
	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onPause()
	 */
	@Override
	protected void onPause() {
		super.onPause();

		if (hasRecord) {
			closeCursor(cMileageList);
			//closeCursor(cLvRow);
		}
		closeDb(db);
	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onResume()
	 */
	@Override
	protected void onResume() {
		super.onResume();

		db = dbman.getReadableDatabase();

		hasRecord = dbman.hasLubRecords(db, getCAR_ID());

		// プリファレンスのSortOrderの値を読み出し、invertOrderに反映する。
		boolean invertOrder = getMileageOrder();

		// 各種単位の取得
		priceUnit = dbman.getPriceUnitById(db, getCAR_ID());
		distanceUnit = dbman.getDistanceUnitById(db, getCAR_ID());
		volumeUnit = dbman.getVolumeUnitById(db, getCAR_ID());

		cMileageList = dbman.getRefuelRecordsById(db, getCAR_ID(), invertOrder);

		// Cursorのレコード数に応じ、「統計を表示」ボタンをロックする処理
		if (cMileageList.getCount() == 0) {
			btn_show_stats.setEnabled(false);
		} else {
			btn_show_stats.setEnabled(true);
		}

		String[] from = {
				//"_id",
				"DATE_OF_REFUEL",
				"LUB_AMOUNT",
				"VOLUMEUNIT"
				};
		int[] to = {
				//R.id.tv_value_number_refuel,
				R.id.tv_value_dateOfRefuel,
				R.id.tv_value_amountOfOil,
				R.id.tv_unit_amountOfOil
				};

		SimpleCursorAdapter sca = new SimpleCursorAdapter(getApplicationContext(), R.layout.listviewelemnt_mileagelist, cMileageList, from, to);
		lv_mileagelist.setAdapter(sca);
<commit_msg>リビジョン 258-259 を android/branches/Car-Kei-Bo/rev0_7-stable からマージ: refs #34, #36 統計画面に入るためのボタン幅を、画面幅の1/2になるよう修正。<commit_after>/**
 *
 */
package net.formula97.andorid.car_kei_bo;

import java.math.BigDecimal;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

/**
 * @author kazutoshi
 *
 */
/**
 * @author kazutoshi
 *
 */
public class MileageList extends Activity implements OnClickListener {

	private int CAR_ID;
	private String CAR_NAME;

	// ウィジェット類の定義
	TextView tv_element_CarName2;		// クルマの名前
	TextView tv_value_FuelMileage2;		// クルマのトータル燃費
	TextView tv_unit_fuelMileage2;		// クルマの燃費単位
	TextView tv_value_RunningCosts2;		// クルマのトータルランニングコスト
	TextView tv_unit_runningCosts2;		// クルマのランニングコスト単位
	Button btn_add_mileage;				// 燃費記録追加ボタン
	Button btn_show_stats;
	ListView lv_mileagelist;			// 燃費記録を表示するListView
	TextView tv_element_totalAmountOfOil;
	TextView tv_value_totalAmountOfOil;
	TextView tv_unit_totalAmountOfOil;

	private DbManager dbman = new DbManager(this);
	//private DateManager dmngr = new DateManager();
	public static SQLiteDatabase db;

	Cursor cMileageList;
	Cursor cLvRow;
	Cursor selectedRow = null;

	int currentRecordId = 0;

	AlertDialog.Builder adbuilder;

	String priceUnit;
	String distanceUnit;
	String volumeUnit;

	boolean hasRecord;

	/**
	 *
	 */
	public MileageList() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fuelmileagelist);

		// ウィジェット類の取得
		tv_element_CarName2 = (TextView)findViewById(R.id.tv_element_CarName2);
		tv_value_FuelMileage2 = (TextView)findViewById(R.id.tv_value_FuelMileage2);
		tv_unit_fuelMileage2 = (TextView)findViewById(R.id.tv_unit_fuelMileage2);
		tv_value_RunningCosts2 = (TextView)findViewById(R.id.tv_value_RunningCosts2);
		tv_unit_runningCosts2 = (TextView)findViewById(R.id.tv_unit_runningCosts2);
		btn_add_mileage = (Button)findViewById(R.id.btn_add_mileage);
		btn_show_stats = (Button)findViewById(R.id.btn_show_stats);
		lv_mileagelist = (ListView)findViewById(R.id.lv_mileagelist);
		tv_element_totalAmountOfOil = (TextView)findViewById(R.id.tv_element_totalAmountOfOil);
		tv_value_totalAmountOfOil = (TextView)findViewById(R.id.tv_value_totalAmountOfOil);
		tv_unit_totalAmountOfOil = (TextView)findViewById(R.id.tv_unit_totalAmountOfOil);

		// 渡された引数を解析してグローバル変数に格納
		Intent i = getIntent();
		setCAR_ID(i.getIntExtra("CAR_ID", 0));
		setCAR_NAME(i.getStringExtra("CAR_NAME"));

		Log.d(getResources().toString(), "CAR_ID : " + String.valueOf(getCAR_ID()));
		Log.d(getResources().toString(), "CAR_NAME : " + getCAR_NAME());

		tv_element_CarName2.setText(getCAR_NAME());

		// AlertDialog周りの処理
		// ・ダイアログのタイトルは「Detail of refuel record（＝給油記録の詳細）」
		// ・端末のキャンセルキーでダイアログが消せるようにセット
		// ・ボタンはOKボタンのみ
		adbuilder = new AlertDialog.Builder(this);
		adbuilder.setTitle(R.string.adtitle_detail_of_refuel);
		adbuilder.setCancelable(true);
		adbuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				// AlertDialogでは、表示を消す以外のことをさせる予定はないため、
				// 何もせずそのまま抜ける。
			}
		});

	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onDestroy()
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();

		if (hasRecord) {
			closeCursor(cMileageList);
			//closeCursor(cLvRow);
		}
		closeDb(db);
	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onPause()
	 */
	@Override
	protected void onPause() {
		super.onPause();

		if (hasRecord) {
			closeCursor(cMileageList);
			//closeCursor(cLvRow);
		}
		closeDb(db);
	}

	/* (非 Javadoc)
	 * @see android.app.Activity#onResume()
	 */
	@Override
	protected void onResume() {
		super.onResume();

		db = dbman.getReadableDatabase();

		hasRecord = dbman.hasLubRecords(db, getCAR_ID());

		// プリファレンスのSortOrderの値を読み出し、invertOrderに反映する。
		boolean invertOrder = getMileageOrder();

		// 画面幅を取得
		int displayWidth = getWindowManager().getDefaultDisplay().getWidth();
		// ボタン幅の修正
		btn_add_mileage.setWidth(displayWidth / 2);
		btn_show_stats.setWidth(displayWidth / 2);

		// 各種単位の取得
		priceUnit = dbman.getPriceUnitById(db, getCAR_ID());
		distanceUnit = dbman.getDistanceUnitById(db, getCAR_ID());
		volumeUnit = dbman.getVolumeUnitById(db, getCAR_ID());

		cMileageList = dbman.getRefuelRecordsById(db, getCAR_ID(), invertOrder);

		// Cursorのレコード数に応じ、「統計を表示」ボタンをロックする処理
		if (cMileageList.getCount() == 0) {
			btn_show_stats.setEnabled(false);
		} else {
			btn_show_stats.setEnabled(true);
		}

		String[] from = {
				//"_id",
				"DATE_OF_REFUEL",
				"LUB_AMOUNT",
				"VOLUMEUNIT"
				};
		int[] to = {
				//R.id.tv_value_number_refuel,
				R.id.tv_value_dateOfRefuel,
				R.id.tv_value_amountOfOil,
				R.id.tv_unit_amountOfOil
				};

		SimpleCursorAdapter sca = new SimpleCursorAdapter(getApplicationContext(), R.layout.listviewelemnt_mileagelist, cMileageList, from, to);
		lv_mileagelist.setAdapter(sca);

{'fraction_non_alphanumeric': 0.11593947923997185, 'fraction_numerical': 0.00510204081632653, 'mean_word_length': 5.132146709816613, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3014499', 'n_tokens_mistral': 4887, 'n_tokens_neox': 4446, 'n_words': 609}