import android.widget.Toast;
import net.osdn.gokigen.joggingtimer.R;
-import net.osdn.gokigen.joggingtimer.utilities.CreateModelData;
import net.osdn.gokigen.joggingtimer.utilities.CreateModelDataDialog;
import net.osdn.gokigen.joggingtimer.utilities.DataEditDialog;
break;
case R.id.menu_create_model:
CreateModelDataDialog dialog2 = new CreateModelDataDialog(this);
- dialog2.show(R.drawable.ic_android_black_24dp, getString(R.string.information_time_picker), new CreateModelData());
+ dialog2.show(true, getString(R.string.information_time_picker), setupper.getCreateModelDataCallback(), 0);
break;
case R.id.menu_set_reference:
package net.osdn.gokigen.joggingtimer.recorddetail;
+import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
-import android.widget.ImageView;
import android.widget.TextView;
import net.osdn.gokigen.joggingtimer.R;
class DetailHolder extends RecyclerView.ViewHolder
{
private final View itemView;
- private TextView lapView = null;
- private TextView mainText = null;
- private TextView subText = null;
+ private TextView lapView;
+ private TextView mainText;
+ private TextView subText;
- DetailHolder(View itemView)
+ DetailHolder(@NonNull View itemView)
{
super(itemView);
lapView = itemView.findViewById(R.id.detail_lap_count);
*
*
*/
-public class DetailRecord implements View.OnClickListener
+public class DetailRecord implements View.OnClickListener, View.OnLongClickListener
{
private final String TAG = toString();
private final long dataId;
- private String lapCount = "";
- private String title = "";
- private String detail = "";
+ private final int recordType;
+ private String lapCount;
+ private String title;
+ private String detail;
/**
*
*/
- DetailRecord(long dataId, String lapCount, String title, String detail)
+ DetailRecord(long dataId, int recordType, String lapCount, String title, String detail)
{
this.dataId = dataId;
+ this.recordType = recordType;
this.lapCount = lapCount;
this.title = title;
this.detail = detail;
Log.v(TAG, "Clicked : [" + dataId + "] (" + lapCount + ") " + title + " " + detail);
}
+
+ @Override
+ public boolean onLongClick(View v)
+ {
+ Log.v(TAG, "LONG Clicked : [" + dataId + "] (" + lapCount + ") " + title + " " + detail + " TYPE : " + recordType);
+
+ return (false);
+ }
}
*/
public class RecordDetailAdapter extends RecyclerView.Adapter<DetailHolder> implements IRecordOperation
{
- private List<DetailRecord> list = null;
+ private List<DetailRecord> list;
/**
*
import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabaseCallback;
import net.osdn.gokigen.joggingtimer.storage.TimeEntryDatabaseFactory;
import net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryData;
-import net.osdn.gokigen.joggingtimer.utilities.IconIdProvider;
+import net.osdn.gokigen.joggingtimer.utilities.CreateModelData;
+import net.osdn.gokigen.joggingtimer.utilities.CreateModelDataDialog;
import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
import static android.provider.BaseColumns._ID;
-import static net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryData.EntryData.COLUMN_NAME_ICON_ID;
/**
*
{
long dataId = cursor.getLong(cursor.getColumnIndex(_ID));
long entryTime = cursor.getLong(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_TIME_ENTRY));
+ int recordType = cursor.getInt(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_RECORD_TYPE));
if (index == 0)
{
String lapCount = " " + index;
String lapTimeString = TimeStringConvert.getTimeString(lapTime).toString();
String overallTimeString = TimeStringConvert.getTimeString(overallTime).toString() + " (" + TimeStringConvert.getDiffTimeString(differenceTime).toString() +") ";
- operation.addRecord(new DetailRecord(dataId, lapCount, lapTimeString, overallTimeString));
+ operation.addRecord(new DetailRecord(dataId, recordType, lapCount, lapTimeString, overallTimeString));
morePreviousTime = previousLapTime;
previousLapTime = entryTime;
}
//
}
+ @Override
+ public void modelDataEntryFinished(OperationType operationType, boolean result, long indexId, String title)
+ {
+ //
+ Log.v(TAG, "modelDataEntryFinished : " + result + " " + title + " " + indexId);
+ }
+
/**
*
*/
/**
*
*/
+ CreateModelDataDialog.Callback getCreateModelDataCallback()
+ {
+ return (new CreateModelData(database));
+ }
+
+ /**
+ *
+ */
interface IDatabaseReadyNotify
{
void databaseSetupFinished(boolean result);
//
}
+ @Override
+ public void modelDataEntryFinished(OperationType operationType, boolean result, long indexId, String title)
+ {
+ //
+ }
+
/**
*
*/
}
@Override
+ public void modelDataEntryFinished(OperationType operationType, boolean result, long indexId, String title)
+ {
+ //
+ }
+
+ @Override
public void dataEntryFinished(OperationType operationType, boolean result, long id, String title)
{
Log.v(TAG, "database dataEntryFinished() : " + result + " [" + id + "] " + title);
void createIndexData(String title, String memo, int icon, long startTime);
void appendTimeData(long indexId, long lapTime);
void finishTimeData(long indexId, long startTime, long endTime);
+
+ void createTimeEntryModelData(int lap, int hour, int minute, int second, String memo);
+
}
*/
public interface ITimeEntryDatabaseCallback
{
- enum OperationType {
+ enum OperationType
+ {
CREATED,
APPENDED,
FINISHED,
void dataEntryFinished(OperationType operationType, boolean result, long id, String title);
void timeEntryFinished(OperationType operationType, boolean result, long indexId, long dataId);
+ void modelDataEntryFinished(OperationType operationType, boolean result, long indexId, String title);
+
}
import net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryData;
import net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryIndex;
+import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
import static android.provider.BaseColumns._ID;
private final TimeEntryDataOpenHelper dbHelper;
private final ITimeEntryDatabaseCallback callback;
private static final int REFERENCE_ICON_ID = 2;
+ private static final int MODEL_DATA_ICON_ID = 4;
private static final int DEFAULT_ICON_ID = 0;
+ private static final long DEFAULT_RECORD_TYPE = 0;
+ private static final long EDITABLE_RECORD_TYPE = 1;
private SQLiteDatabase db = null;
//private SQLiteDatabase writeDb = null;
//private SQLiteDatabase readDb = null;
@Override
public void createIndexData(String title, String memo, int icon, long startTime)
{
- Log.v(TAG, "createIndexData() [" + title +"] " + memo + " " + icon + " " + startTime);
+ long indexId = createIndexDataImpl(true, title, memo, icon, startTime, 0);
+ Log.v(TAG, "createIndexData() [" + title +"] " + memo + " " + icon + " " + startTime + " idx: " + indexId);
+ }
+
+ private long createIndexDataImpl(boolean isCallback, String title, String memo, int icon, long startTime, long duration)
+ {
+ long indexId = -1;
try
{
boolean ret = false;
valuesIndex.put(TimeEntryIndex.EntryIndex.COLUMN_NAME_MEMO, memo);
valuesIndex.put(TimeEntryIndex.EntryIndex.COLUMN_NAME_ICON_ID, icon);
valuesIndex.put(TimeEntryIndex.EntryIndex.COLUMN_NAME_START_TIME, startTime);
- valuesIndex.put(TimeEntryIndex.EntryIndex.COLUMN_NAME_TIME_DURATION, 0);
- long indexId = db.insert(TimeEntryIndex.EntryIndex.TABLE_NAME, null, valuesIndex);
+ valuesIndex.put(TimeEntryIndex.EntryIndex.COLUMN_NAME_TIME_DURATION, duration);
+ indexId = db.insert(TimeEntryIndex.EntryIndex.TABLE_NAME, null, valuesIndex);
if (indexId != -1)
{
ret = true;
}
- callback.dataEntryFinished(ITimeEntryDatabaseCallback.OperationType.CREATED, ret, indexId, title);
-
- ContentValues valuesData = new ContentValues();
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_INDEX_ID, indexId);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_TIME_ENTRY, startTime);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_OTHER_ID, 0);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_GPS_ID, 0);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_MEMO_ID, 0);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_ICON_ID, 0);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_RECORD_TYPE, 0);
- long dataId = db.insert(TimeEntryData.EntryData.TABLE_NAME, null, valuesData);
- if (dataId != -1)
+ if (isCallback)
{
- ret = true;
+ callback.dataEntryFinished(ITimeEntryDatabaseCallback.OperationType.CREATED, ret, indexId, title);
}
- callback.timeEntryFinished(ITimeEntryDatabaseCallback.OperationType.APPENDED, ret, indexId, dataId);
}
catch (Exception e)
{
e.printStackTrace();
}
+ appendTimeDataImpl(true, indexId, startTime, DEFAULT_RECORD_TYPE);
+ return (indexId);
}
@Override
public void appendTimeData(long indexId, long lapTime)
{
Log.v(TAG, "appendTimeData() " + lapTime);
+ appendTimeDataImpl(true, indexId, lapTime, DEFAULT_RECORD_TYPE);
+ }
+
+ /**
+ *
+ *
+ */
+ private void appendTimeDataImpl(boolean isCallback, long indexId, long lapTime, long recordType)
+ {
try
{
boolean ret = false;
valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_GPS_ID, 0);
valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_MEMO_ID, 0);
valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_ICON_ID, 0);
- valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_RECORD_TYPE, 0);
+ valuesData.put(TimeEntryData.EntryData.COLUMN_NAME_RECORD_TYPE, recordType);
long dataId = db.insert(TimeEntryData.EntryData.TABLE_NAME, null, valuesData);
if (dataId != -1)
{
ret = true;
}
- callback.timeEntryFinished(ITimeEntryDatabaseCallback.OperationType.APPENDED, ret, indexId, dataId);
+ if (isCallback)
+ {
+ callback.timeEntryFinished(ITimeEntryDatabaseCallback.OperationType.APPENDED, ret, indexId, dataId);
+ }
}
catch (Exception e)
{
e.printStackTrace();
}
+
}
+ /**
+ *
+ *
+ */
@Override
public void finishTimeData(long indexId, long startTime, long endTime)
{
}
}
+ /**
+ *
+ *
+ */
+ @Override
+ public void createTimeEntryModelData(int lap, int hour, int minute, int second, @NonNull String memo)
+ {
+ long totalTime = (hour * (1000 * 60 * 60)) + (minute * (1000 * 60)) + second;
+ long diffTime = totalTime / (long) lap;
+ String title = " " + lap + " LAPs Model";
+ Log.v(TAG, "ENTRY : '" + lap + " " + title + "' mills : " + "(" + diffTime + ") " + memo);
+
+ try
+ {
+ long lapTime = 0;
+ long indexId = createIndexDataImpl(false, title, memo, MODEL_DATA_ICON_ID, lapTime, totalTime);
+ for (int index = 0; index < lap; index++)
+ {
+ lapTime = lapTime + diffTime;
+ appendTimeDataImpl(false, indexId, lapTime, EDITABLE_RECORD_TYPE);
+ }
+ callback.modelDataEntryFinished(ITimeEntryDatabaseCallback.OperationType.FINISHED, true, indexId, title);
+ return;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ callback.modelDataEntryFinished(ITimeEntryDatabaseCallback.OperationType.FINISHED, false, -1, title);
+ }
+
/*
public boolean prepareToRead()
{
import android.util.Log;
+import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabase;
+
public class CreateModelData implements CreateModelDataDialog.Callback
{
private final String TAG = toString();
+ private final ITimeEntryDatabase database;
-
- public CreateModelData()
+ public CreateModelData(ITimeEntryDatabase database)
{
+ this.database = database;
}
@Override
- public void dataCrated(int lap, int hour, int minute, int second)
+ public void dataCreated(final int lap, final int hour, final int minute, final int second)
{
- Log.v(TAG, "dataCrated()");
-
+ try
+ {
+ Thread thread = new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ database.createTimeEntryModelData(lap, hour, minute, second, "");
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ });
+ thread.start();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
@Override
public void dataCreateCancelled()
{
+ Log.v(TAG, "dataCreateCancelled()");
}
}
package net.osdn.gokigen.joggingtimer.utilities;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.DialogInterface;
-import android.content.res.TypedArray;
-import android.support.annotation.NonNull;
import android.support.wearable.activity.WearableActivity;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.EditText;
import android.widget.NumberPicker;
-import android.widget.Spinner;
import android.widget.TextView;
/**
*
- * @param iconResId アイコンリソース
* @param callback 結果をコールバック
*/
- public void show(int iconResId, String title, final Callback callback)
+ public void show(boolean isLap, String title, final Callback callback, long defaultValue)
{
+ Log.v(TAG, "show " + "def. : " + defaultValue);
+
// 確認ダイアログの生成
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.wear2_dialog_theme));
alertDialog.setView(alertView);
final TextView titleText = alertView.findViewById(R.id.information_picker);
+ final TextView lapStartText = alertView.findViewById(R.id.lap_start);
+ final TextView lapEndText = alertView.findViewById(R.id.lap_end);
final NumberPicker lap = alertView.findViewById(R.id.number_picker_lap_count);
final NumberPicker hour = alertView.findViewById(R.id.number_picker_hours);
final NumberPicker minute = alertView.findViewById(R.id.number_picker_minutes);
final NumberPicker second = alertView.findViewById(R.id.number_picker_seconds);
try
{
- //titleText.setText(title);
- lap.setMinValue(1);
- lap.setMaxValue(99);
+ if (title != null)
+ {
+ titleText.setText(title);
+ }
+ if (isLap)
+ {
+ lap.setVisibility(View.VISIBLE);
+ lapStartText.setVisibility(View.VISIBLE);
+ lapEndText.setVisibility(View.VISIBLE);
+ lap.setMinValue(1);
+ lap.setMaxValue(99);
+ }
+ else
+ {
+ lap.setVisibility(View.GONE);
+ lapStartText.setVisibility(View.GONE);
+ lapEndText.setVisibility(View.GONE);
+ }
hour.setMinValue(0);
hour.setMaxValue(72);
minute.setMinValue(0);
e.printStackTrace();
}
- //alertDialog.setIcon(iconResId);
- //alertDialog.setMessage(activity.getString(R.string.information_time_picker));
alertDialog.setCancelable(true);
// ボタンを設定する(実行ボタン)
try
{
Log.v(TAG, "ENTRY [" + lap.getValue() + "] " + hour.getValue() + ":" + minute.getValue() + ":" + second.getValue());
- callback.dataCrated(lap.getValue(), hour.getValue(), minute.getValue(), second.getValue());
+ callback.dataCreated(lap.getValue(), hour.getValue(), minute.getValue(), second.getValue());
//callback.dataCreateCancelled();
}
catch (Exception e)
// コールバックインタフェース
public interface Callback
{
- void dataCrated(int lap, int hour, int minute, int second); // OKを選択したとき
+ void dataCreated(int lap, int hour, int minute, int second); // OKを選択したとき
void dataCreateCancelled(); // キャンセルしたとき
}
}