diff --git a/app/app.iml b/app/app.iml index ae47470..a4ae69a 100644 --- a/app/app.iml +++ b/app/app.iml @@ -86,19 +86,29 @@ + + + + + + + + + + diff --git a/app/src/main/java/com/slymapp/diverlog/DiverLogApplication.java b/app/src/main/java/com/slymapp/diverlog/DiverLogApplication.java index 1d3bc4a..abc22b2 100644 --- a/app/src/main/java/com/slymapp/diverlog/DiverLogApplication.java +++ b/app/src/main/java/com/slymapp/diverlog/DiverLogApplication.java @@ -2,6 +2,7 @@ import android.app.Application; +import com.beardedhen.androidbootstrap.TypefaceProvider; import com.jakewharton.threetenabp.AndroidThreeTen; import com.slymapp.diverlog.infrastructure.realm.RealmHelper; @@ -12,5 +13,6 @@ public void onCreate() { super.onCreate(); AndroidThreeTen.init(this); RealmHelper.initialize(this); + TypefaceProvider.registerDefaultIconSets(); } } diff --git a/app/src/main/java/com/slymapp/diverlog/view/LogAddActivity.java b/app/src/main/java/com/slymapp/diverlog/view/LogAddActivity.java index b726941..523b1c2 100644 --- a/app/src/main/java/com/slymapp/diverlog/view/LogAddActivity.java +++ b/app/src/main/java/com/slymapp/diverlog/view/LogAddActivity.java @@ -3,7 +3,12 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.constraint.ConstraintLayout; import android.support.v7.app.AppCompatActivity; +import android.view.MotionEvent; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.FrameLayout; import com.slymapp.diverlog.R; import com.slymapp.diverlog.domain.DiverLog; @@ -38,7 +43,6 @@ public static Intent createIntent(Context context, DiverLog diverLog) { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log_add); - getSupportFragmentManager().beginTransaction() .replace(R.id.log_add_activity_fragment_container, LogAddFragment.newInstance()) .commit(); diff --git a/app/src/main/java/com/slymapp/diverlog/view/LogAddFragment.java b/app/src/main/java/com/slymapp/diverlog/view/LogAddFragment.java index a9294ee..db572cd 100644 --- a/app/src/main/java/com/slymapp/diverlog/view/LogAddFragment.java +++ b/app/src/main/java/com/slymapp/diverlog/view/LogAddFragment.java @@ -1,16 +1,24 @@ package com.slymapp.diverlog.view; +import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.DatePickerDialog; +import android.app.TimePickerDialog; +import android.content.Context; import android.content.Intent; import android.databinding.DataBindingUtil; import android.os.Build; import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.constraint.ConstraintLayout; import android.support.v4.app.Fragment; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; import android.widget.DatePicker; +import android.widget.TimePicker; import android.widget.Toast; import com.slymapp.diverlog.R; @@ -47,7 +55,7 @@ public static LogAddFragment newInstance() { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_log_add, container, false); + View mainView = inflater.inflate(R.layout.fragment_log_add, container, false); Intent intent = getActivity().getIntent(); // 破棄された時用の復元処理 @@ -64,11 +72,11 @@ else if (intent != null){ } // DataBindingはViewHolderとしてのみ利用する - final FragmentLogAddBinding binding = DataBindingUtil.bind(view); + final FragmentLogAddBinding binding = DataBindingUtil.bind(mainView); binding.logAddDivingNumberValue.setText(String.valueOf(diverLog.getDivingNumber())); binding.logAddDateValue.setText(DateUtils.toDateString(diverLog.getDate())); binding.logAddPlaceValue.setText(diverLog.getPlace()); - binding.logAddDateImageButton.setOnClickListener(new View.OnClickListener() { + binding.logAddDateValue.setOnClickListener(new View.OnClickListener() { @TargetApi(Build.VERSION_CODES.N) @Override public void onClick(View view) { @@ -85,12 +93,56 @@ public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { .show(); } }); - binding.logAddAddBtn.setOnClickListener(new View.OnClickListener() { + binding.logAddInTimeValue.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Calendar cal = Calendar.getInstance(); + + new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() { + @Override + public void onTimeSet(TimePicker timePicker, int i, int i1) { + Date date = DateUtils.createFromTime(i, i1, 0); + diverLog.setStartTime(date); + binding.logAddInTimeValue.setText(DateUtils.toTimeString(diverLog.getStartTime())); + } + }, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true) + .show(); + } + }); + binding.logAddOutTimeValue.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Calendar cal = Calendar.getInstance(); + + new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() { + @Override + public void onTimeSet(TimePicker timePicker, int i, int i1) { + Date date = DateUtils.createFromTime(i, i1, 0); + diverLog.setStartTime(date); + binding.logAddOutTimeValue.setText(DateUtils.toTimeString(diverLog.getStartTime())); + } + }, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true) + .show(); + } + }); + binding.logAddSubmitBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getContext(), "ログの登録完了!(メッセージのみ)", Toast.LENGTH_SHORT).show(); } }); - return view; + binding.logAddMainLayout.setOnFocusChangeListener(new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View view, boolean b) { + if(b){ + InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + assert inputMethodManager != null; + inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), + InputMethodManager.HIDE_NOT_ALWAYS); + view.requestFocus(); + } + } + }); + return mainView; } } diff --git a/app/src/main/java/com/slymapp/diverlog/view/LogDetailFragment.java b/app/src/main/java/com/slymapp/diverlog/view/LogDetailFragment.java deleted file mode 100644 index 2279ec1..0000000 --- a/app/src/main/java/com/slymapp/diverlog/view/LogDetailFragment.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.slymapp.diverlog.view; - -import android.content.Context; -import android.net.Uri; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.slymapp.diverlog.R; -import com.slymapp.diverlog.domain.DiverLog; -import com.slymapp.diverlog.infrastructure.realm.DiverLogRepositoryImpl; -import com.slymapp.diverlog.utils.DateUtils; - - -/** - * ダイバーログの詳細表示Fragment - */ -public class LogDetailFragment extends Fragment { - - private OnFragmentInteractionListener mListener; - private int divingNo; - - public static LogDetailFragment newInstance() { - return new LogDetailFragment(); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - divingNo = getArguments().getInt("divingNumber"); - } - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - View view = inflater.inflate(R.layout.fragment_log_detail, container, false); - - // ログデータをフェッチ - DiverLogRepositoryImpl rep = new DiverLogRepositoryImpl(); - DiverLog diverLog = rep.fetch(divingNo); - - TextView divingNumber = view.findViewById(R.id.diving_number); - TextView date = view.findViewById(R.id.date); - TextView weather = view.findViewById(R.id.weather); - TextView place = view.findViewById(R.id.place); - TextView entryMethod = view.findViewById(R.id.entry_method); - TextView transparent = view.findViewById(R.id.transparent); - TextView startTime = view.findViewById(R.id.start_time); - TextView endTime = view.findViewById(R.id.end_time); - TextView startPressure = view.findViewById(R.id.start_pressure); - TextView endPressure = view.findViewById(R.id.end_pressure); - TextView suits = view.findViewById(R.id.suits); - TextView weight = view.findViewById(R.id.weight); - TextView averageDepth = view.findViewById(R.id.average_depth); - TextView maxDepth = view.findViewById(R.id.max_depth); - TextView temperature = view.findViewById(R.id.temperature); - - divingNumber.setText(String.valueOf(diverLog.getDivingNumber())); - date.setText(DateUtils.toDateString(diverLog.getDate())); - weather.setText(diverLog.getWeather()); - place.setText(diverLog.getPlace()); - entryMethod.setText(diverLog.getEntryMethod()); - transparent.setText(String.valueOf(diverLog.getTransparent())); - startTime.setText(DateUtils.toTimeString(diverLog.getStartTime())); - endTime.setText(DateUtils.toTimeString(diverLog.getEndTime())); - startPressure.setText(String.valueOf(diverLog.getStartPressure())); - endPressure.setText(String.valueOf(diverLog.getEndPressure())); - suits.setText(diverLog.getSuits()); - weight.setText(String.valueOf(diverLog.getWeight())); - averageDepth.setText(String.valueOf(diverLog.getAverageDepth())); - maxDepth.setText(String.valueOf(diverLog.getMaxDepth())); - temperature.setText(String.valueOf(diverLog.getTemperature())); - - return view; - } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof OnFragmentInteractionListener) { - mListener = (OnFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnFragmentInteractionListener"); - } - } - - @Override - public void onDetach() { - super.onDetach(); - mListener = null; - } - - public interface OnFragmentInteractionListener { - void onFragmentInteraction(Uri uri); - } -} diff --git a/app/src/main/java/com/slymapp/diverlog/view/MainActivity.java b/app/src/main/java/com/slymapp/diverlog/view/MainActivity.java index a449e30..a2760cb 100644 --- a/app/src/main/java/com/slymapp/diverlog/view/MainActivity.java +++ b/app/src/main/java/com/slymapp/diverlog/view/MainActivity.java @@ -1,18 +1,16 @@ package com.slymapp.diverlog.view; -import android.net.Uri; import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import com.beardedhen.androidbootstrap.BootstrapButton; import com.slymapp.diverlog.R; -public class MainActivity extends AppCompatActivity - implements LogDetailFragment.OnFragmentInteractionListener { +public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { @@ -22,7 +20,7 @@ protected void onCreate(Bundle savedInstanceState) { Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - FloatingActionButton fab = findViewById(R.id.fab); + BootstrapButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -45,15 +43,6 @@ public boolean onCreateOptionsMenu(Menu menu) { public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } - - @Override - public void onFragmentInteraction(Uri uri) { - + return id == R.id.action_settings || super.onOptionsItemSelected(item); } } diff --git a/app/src/main/res/drawable/underline.xml b/app/src/main/res/drawable/underline.xml new file mode 100644 index 0000000..3253340 --- /dev/null +++ b/app/src/main/res/drawable/underline.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_log_add.xml b/app/src/main/res/layout/activity_log_add.xml index 54fbe0c..335d2eb 100644 --- a/app/src/main/res/layout/activity_log_add.xml +++ b/app/src/main/res/layout/activity_log_add.xml @@ -3,6 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:focusableInTouchMode="true" + android:id="@+id/log_add_activity_main_layout" tools:context="com.slymapp.diverlog.view.LogAddActivity"> - + app:bootstrapBrand="primary" + app:bootstrapSize="xl" + app:buttonMode="regular" + app:showOutline="false" + app:roundedCorners="true" + app:fontAwesomeIcon="fa_plus"/> diff --git a/app/src/main/res/layout/fragment_log_add.xml b/app/src/main/res/layout/fragment_log_add.xml index 9bb9254..39d4481 100644 --- a/app/src/main/res/layout/fragment_log_add.xml +++ b/app/src/main/res/layout/fragment_log_add.xml @@ -1,102 +1,361 @@ + - + app:layout_constraintTop_toTopOf="parent"> - - - + + + + + + + app:layout_constraintTop_toBottomOf="@id/log_add_diving_number_input"> - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:orientation="horizontal" + app:layout_constraintGuide_end="@dimen/submit_area_size" /> - - -