ObjectivesFragment -> jetpack
This commit is contained in:
parent
fcf67cd014
commit
55da01d4a9
3 changed files with 108 additions and 112 deletions
|
@ -9,8 +9,6 @@ import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.Button
|
|
||||||
import android.widget.EditText
|
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
@ -19,11 +17,13 @@ import androidx.recyclerview.widget.LinearSmoothScroller
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import dagger.android.support.DaggerFragment
|
import dagger.android.support.DaggerFragment
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.androidaps.R
|
||||||
|
import info.nightscout.androidaps.databinding.ObjectivesFragmentBinding
|
||||||
|
import info.nightscout.androidaps.databinding.ObjectivesItemBinding
|
||||||
|
import info.nightscout.androidaps.dialogs.NtpProgressDialog
|
||||||
|
import info.nightscout.androidaps.events.EventNtpStatus
|
||||||
import info.nightscout.androidaps.logging.AAPSLogger
|
import info.nightscout.androidaps.logging.AAPSLogger
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||||
import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog
|
import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog
|
||||||
import info.nightscout.androidaps.dialogs.NtpProgressDialog
|
|
||||||
import info.nightscout.androidaps.events.EventNtpStatus
|
|
||||||
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui
|
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui
|
||||||
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.ExamTask
|
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.ExamTask
|
||||||
import info.nightscout.androidaps.receivers.ReceiverStatusStore
|
import info.nightscout.androidaps.receivers.ReceiverStatusStore
|
||||||
|
@ -31,17 +31,17 @@ import info.nightscout.androidaps.setupwizard.events.EventSWUpdate
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||||
import info.nightscout.androidaps.utils.HtmlHelper
|
import info.nightscout.androidaps.utils.HtmlHelper
|
||||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
|
||||||
import info.nightscout.androidaps.utils.SntpClient
|
import info.nightscout.androidaps.utils.SntpClient
|
||||||
|
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||||
import info.nightscout.androidaps.utils.extensions.plusAssign
|
import info.nightscout.androidaps.utils.extensions.plusAssign
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import kotlinx.android.synthetic.main.objectives_fragment.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class ObjectivesFragment : DaggerFragment() {
|
class ObjectivesFragment : DaggerFragment() {
|
||||||
|
|
||||||
@Inject lateinit var rxBus: RxBusWrapper
|
@Inject lateinit var rxBus: RxBusWrapper
|
||||||
@Inject lateinit var aapsLogger: AAPSLogger
|
@Inject lateinit var aapsLogger: AAPSLogger
|
||||||
@Inject lateinit var sp: SP
|
@Inject lateinit var sp: SP
|
||||||
|
@ -64,19 +64,26 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var _binding: ObjectivesFragmentBinding? = null
|
||||||
|
|
||||||
|
// This property is only valid between onCreateView and
|
||||||
|
// onDestroyView.
|
||||||
|
private val binding get() = _binding!!
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?): View? {
|
savedInstanceState: Bundle?): View {
|
||||||
return inflater.inflate(R.layout.objectives_fragment, container, false)
|
_binding = ObjectivesFragmentBinding.inflate(inflater, container, false)
|
||||||
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
objectives_recyclerview.layoutManager = LinearLayoutManager(view.context)
|
binding.recyclerview.layoutManager = LinearLayoutManager(view.context)
|
||||||
objectives_recyclerview.adapter = objectivesAdapter
|
binding.recyclerview.adapter = objectivesAdapter
|
||||||
objectives_fake.setOnClickListener { updateGUI() }
|
binding.fake.setOnClickListener { updateGUI() }
|
||||||
objectives_reset.setOnClickListener {
|
binding.reset.setOnClickListener {
|
||||||
objectivesPlugin.reset()
|
objectivesPlugin.reset()
|
||||||
objectives_recyclerview.adapter?.notifyDataSetChanged()
|
binding.recyclerview.adapter?.notifyDataSetChanged()
|
||||||
scrollToCurrentObjective()
|
scrollToCurrentObjective()
|
||||||
}
|
}
|
||||||
scrollToCurrentObjective()
|
scrollToCurrentObjective()
|
||||||
|
@ -90,7 +97,7 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
.toObservable(EventObjectivesUpdateGui::class.java)
|
.toObservable(EventObjectivesUpdateGui::class.java)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe({
|
.subscribe({
|
||||||
objectives_recyclerview.adapter?.notifyDataSetChanged()
|
binding.recyclerview.adapter?.notifyDataSetChanged()
|
||||||
}, { fabricPrivacy.logException(it) }
|
}, { fabricPrivacy.logException(it) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -105,6 +112,7 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
handler.removeCallbacks(objectiveUpdater)
|
handler.removeCallbacks(objectiveUpdater)
|
||||||
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startUpdateTimer() {
|
private fun startUpdateTimer() {
|
||||||
|
@ -129,7 +137,7 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
override fun calculateTimeForScrolling(dx: Int): Int = super.calculateTimeForScrolling(dx) * 4
|
override fun calculateTimeForScrolling(dx: Int): Int = super.calculateTimeForScrolling(dx) * 4
|
||||||
}
|
}
|
||||||
smoothScroller.targetPosition = i
|
smoothScroller.targetPosition = i
|
||||||
objectives_recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
|
binding.recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -145,67 +153,66 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
val objective = objectivesPlugin.objectives[position]
|
val objective = objectivesPlugin.objectives[position]
|
||||||
holder.title.text = resourceHelper.gs(R.string.nth_objective, position + 1)
|
holder.binding.title.text = resourceHelper.gs(R.string.nth_objective, position + 1)
|
||||||
if (objective.objective != 0) {
|
if (objective.objective != 0) {
|
||||||
holder.objective.visibility = View.VISIBLE
|
holder.binding.objective.visibility = View.VISIBLE
|
||||||
holder.objective.text = resourceHelper.gs(objective.objective)
|
holder.binding.objective.text = resourceHelper.gs(objective.objective)
|
||||||
} else
|
} else
|
||||||
holder.objective.visibility = View.GONE
|
holder.binding.objective.visibility = View.GONE
|
||||||
if (objective.gate != 0) {
|
if (objective.gate != 0) {
|
||||||
holder.gate.visibility = View.VISIBLE
|
holder.binding.gate.visibility = View.VISIBLE
|
||||||
holder.gate.text = resourceHelper.gs(objective.gate)
|
holder.binding.gate.text = resourceHelper.gs(objective.gate)
|
||||||
} else
|
} else
|
||||||
holder.gate.visibility = View.GONE
|
holder.binding.gate.visibility = View.GONE
|
||||||
if (!objective.isStarted) {
|
if (!objective.isStarted) {
|
||||||
holder.gate.setTextColor(-0x1)
|
holder.binding.gate.setTextColor(-0x1)
|
||||||
holder.verify.visibility = View.GONE
|
holder.binding.verify.visibility = View.GONE
|
||||||
holder.progress.visibility = View.GONE
|
holder.binding.progress.visibility = View.GONE
|
||||||
holder.accomplished.visibility = View.GONE
|
holder.binding.accomplished.visibility = View.GONE
|
||||||
holder.unFinish.visibility = View.GONE
|
holder.binding.unfinish.visibility = View.GONE
|
||||||
holder.unStart.visibility = View.GONE
|
holder.binding.unstart.visibility = View.GONE
|
||||||
if (position == 0 || objectivesPlugin.allPriorAccomplished(position))
|
if (position == 0 || objectivesPlugin.allPriorAccomplished(position))
|
||||||
holder.start.visibility = View.VISIBLE
|
holder.binding.start.visibility = View.VISIBLE
|
||||||
else
|
else
|
||||||
holder.start.visibility = View.GONE
|
holder.binding.start.visibility = View.GONE
|
||||||
} else if (objective.isAccomplished) {
|
} else if (objective.isAccomplished) {
|
||||||
holder.gate.setTextColor(-0xb350b0)
|
holder.binding.gate.setTextColor(-0xb350b0)
|
||||||
holder.verify.visibility = View.GONE
|
holder.binding.verify.visibility = View.GONE
|
||||||
holder.progress.visibility = View.GONE
|
holder.binding.progress.visibility = View.GONE
|
||||||
holder.start.visibility = View.GONE
|
holder.binding.start.visibility = View.GONE
|
||||||
holder.accomplished.visibility = View.VISIBLE
|
holder.binding.accomplished.visibility = View.VISIBLE
|
||||||
holder.unFinish.visibility = View.VISIBLE
|
holder.binding.unfinish.visibility = View.VISIBLE
|
||||||
holder.unStart.visibility = View.GONE
|
holder.binding.unstart.visibility = View.GONE
|
||||||
} else if (objective.isStarted) {
|
} else if (objective.isStarted) {
|
||||||
holder.gate.setTextColor(-0x1)
|
holder.binding.gate.setTextColor(-0x1)
|
||||||
holder.verify.visibility = View.VISIBLE
|
holder.binding.verify.visibility = View.VISIBLE
|
||||||
holder.verify.isEnabled = objective.isCompleted || objectives_fake.isChecked
|
holder.binding.verify.isEnabled = objective.isCompleted || binding.fake.isChecked
|
||||||
holder.start.visibility = View.GONE
|
holder.binding.start.visibility = View.GONE
|
||||||
holder.accomplished.visibility = View.GONE
|
holder.binding.accomplished.visibility = View.GONE
|
||||||
holder.unFinish.visibility = View.GONE
|
holder.binding.unfinish.visibility = View.GONE
|
||||||
holder.unStart.visibility = View.VISIBLE
|
holder.binding.unstart.visibility = View.VISIBLE
|
||||||
holder.progress.visibility = View.VISIBLE
|
holder.binding.progress.visibility = View.VISIBLE
|
||||||
holder.progress.removeAllViews()
|
holder.binding.progress.removeAllViews()
|
||||||
for (task in objective.tasks) {
|
for (task in objective.tasks) {
|
||||||
if (task.shouldBeIgnored()) continue
|
if (task.shouldBeIgnored()) continue
|
||||||
// name
|
// name
|
||||||
val name = TextView(holder.progress.context)
|
val name = TextView(holder.binding.progress.context)
|
||||||
@Suppress("SetTextlI8n")
|
|
||||||
name.text = resourceHelper.gs(task.task) + ":"
|
name.text = resourceHelper.gs(task.task) + ":"
|
||||||
name.setTextColor(-0x1)
|
name.setTextColor(-0x1)
|
||||||
holder.progress.addView(name, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
holder.binding.progress.addView(name, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||||
// hint
|
// hint
|
||||||
task.hints.forEach { h ->
|
task.hints.forEach { h ->
|
||||||
if (!task.isCompleted)
|
if (!task.isCompleted)
|
||||||
holder.progress.addView(h.generate(context))
|
holder.binding.progress.addView(h.generate(context))
|
||||||
}
|
}
|
||||||
// state
|
// state
|
||||||
val state = TextView(holder.progress.context)
|
val state = TextView(holder.binding.progress.context)
|
||||||
state.setTextColor(-0x1)
|
state.setTextColor(-0x1)
|
||||||
val basicHTML = "<font color=\"%1\$s\"><b>%2\$s</b></font>"
|
val basicHTML = "<font color=\"%1\$s\"><b>%2\$s</b></font>"
|
||||||
val formattedHTML = String.format(basicHTML, if (task.isCompleted) "#4CAF50" else "#FF9800", task.progress)
|
val formattedHTML = String.format(basicHTML, if (task.isCompleted) "#4CAF50" else "#FF9800", task.progress)
|
||||||
state.text = HtmlHelper.fromHtml(formattedHTML)
|
state.text = HtmlHelper.fromHtml(formattedHTML)
|
||||||
state.gravity = Gravity.END
|
state.gravity = Gravity.END
|
||||||
holder.progress.addView(state, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
holder.binding.progress.addView(state, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||||
if (task is ExamTask) {
|
if (task is ExamTask) {
|
||||||
state.setOnClickListener {
|
state.setOnClickListener {
|
||||||
val dialog = ObjectivesExamDialog()
|
val dialog = ObjectivesExamDialog()
|
||||||
|
@ -218,16 +225,16 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// horizontal line
|
// horizontal line
|
||||||
val separator = View(holder.progress.context)
|
val separator = View(holder.binding.progress.context)
|
||||||
separator.setBackgroundColor(Color.DKGRAY)
|
separator.setBackgroundColor(Color.DKGRAY)
|
||||||
holder.progress.addView(separator, LinearLayout.LayoutParams.MATCH_PARENT, 2)
|
holder.binding.progress.addView(separator, LinearLayout.LayoutParams.MATCH_PARENT, 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
holder.accomplished.text = resourceHelper.gs(R.string.accomplished, dateUtil.dateAndTimeString(objective.accomplishedOn))
|
holder.binding.accomplished.text = resourceHelper.gs(R.string.accomplished, dateUtil.dateAndTimeString(objective.accomplishedOn))
|
||||||
holder.accomplished.setTextColor(-0x3e3e3f)
|
holder.binding.accomplished.setTextColor(-0x3e3e3f)
|
||||||
holder.verify.setOnClickListener {
|
holder.binding.verify.setOnClickListener {
|
||||||
receiverStatusStore.updateNetworkStatus()
|
receiverStatusStore.updateNetworkStatus()
|
||||||
if (objectives_fake.isChecked) {
|
if (binding.fake.isChecked) {
|
||||||
objective.accomplishedOn = DateUtil.now()
|
objective.accomplishedOn = DateUtil.now()
|
||||||
scrollToCurrentObjective()
|
scrollToCurrentObjective()
|
||||||
startUpdateTimer()
|
startUpdateTimer()
|
||||||
|
@ -264,9 +271,9 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
holder.start.setOnClickListener {
|
holder.binding.start.setOnClickListener {
|
||||||
receiverStatusStore.updateNetworkStatus()
|
receiverStatusStore.updateNetworkStatus()
|
||||||
if (objectives_fake.isChecked) {
|
if (binding.fake.isChecked) {
|
||||||
objective.startedOn = DateUtil.now()
|
objective.startedOn = DateUtil.now()
|
||||||
scrollToCurrentObjective()
|
scrollToCurrentObjective()
|
||||||
startUpdateTimer()
|
startUpdateTimer()
|
||||||
|
@ -298,7 +305,7 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
}, receiverStatusStore.isConnected)
|
}, receiverStatusStore.isConnected)
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
holder.unStart.setOnClickListener {
|
holder.binding.unstart.setOnClickListener {
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.doyouwantresetstart), Runnable {
|
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.doyouwantresetstart), Runnable {
|
||||||
objective.startedOn = 0
|
objective.startedOn = 0
|
||||||
|
@ -308,7 +315,7 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
holder.unFinish.setOnClickListener {
|
holder.binding.unfinish.setOnClickListener {
|
||||||
objective.accomplishedOn = 0
|
objective.accomplishedOn = 0
|
||||||
scrollToCurrentObjective()
|
scrollToCurrentObjective()
|
||||||
rxBus.send(EventObjectivesUpdateGui())
|
rxBus.send(EventObjectivesUpdateGui())
|
||||||
|
@ -318,21 +325,21 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
// generate random request code if none exists
|
// generate random request code if none exists
|
||||||
val request = sp.getString(R.string.key_objectives_request_code, String.format("%1$05d", (Math.random() * 99999).toInt()))
|
val request = sp.getString(R.string.key_objectives_request_code, String.format("%1$05d", (Math.random() * 99999).toInt()))
|
||||||
sp.putString(R.string.key_objectives_request_code, request)
|
sp.putString(R.string.key_objectives_request_code, request)
|
||||||
holder.requestCode.text = resourceHelper.gs(R.string.requestcode, request)
|
holder.binding.requestcode.text = resourceHelper.gs(R.string.requestcode, request)
|
||||||
holder.requestCode.visibility = View.VISIBLE
|
holder.binding.requestcode.visibility = View.VISIBLE
|
||||||
holder.enterButton.visibility = View.VISIBLE
|
holder.binding.enterbutton.visibility = View.VISIBLE
|
||||||
holder.input.visibility = View.VISIBLE
|
holder.binding.input.visibility = View.VISIBLE
|
||||||
holder.inputHint.visibility = View.VISIBLE
|
holder.binding.inputhint.visibility = View.VISIBLE
|
||||||
holder.enterButton.setOnClickListener {
|
holder.binding.enterbutton.setOnClickListener {
|
||||||
val input = holder.input.text.toString()
|
val input = holder.binding.input.text.toString()
|
||||||
objective.specialAction(activity, input)
|
objective.specialAction(activity, input)
|
||||||
rxBus.send(EventObjectivesUpdateGui())
|
rxBus.send(EventObjectivesUpdateGui())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
holder.enterButton.visibility = View.GONE
|
holder.binding.enterbutton.visibility = View.GONE
|
||||||
holder.input.visibility = View.GONE
|
holder.binding.input.visibility = View.GONE
|
||||||
holder.inputHint.visibility = View.GONE
|
holder.binding.inputhint.visibility = View.GONE
|
||||||
holder.requestCode.visibility = View.GONE
|
holder.binding.requestcode.visibility = View.GONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,20 +347,9 @@ class ObjectivesFragment : DaggerFragment() {
|
||||||
return objectivesPlugin.objectives.size
|
return objectivesPlugin.objectives.size
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||||
val title: TextView = itemView.findViewById(R.id.objective_title)
|
|
||||||
val objective: TextView = itemView.findViewById(R.id.objective_objective)
|
val binding = ObjectivesItemBinding.bind(itemView)
|
||||||
val gate: TextView = itemView.findViewById(R.id.objective_gate)
|
|
||||||
val accomplished: TextView = itemView.findViewById(R.id.objective_accomplished)
|
|
||||||
val progress: LinearLayout = itemView.findViewById(R.id.objective_progress)
|
|
||||||
val verify: Button = itemView.findViewById(R.id.objective_verify)
|
|
||||||
val start: Button = itemView.findViewById(R.id.objective_start)
|
|
||||||
val unFinish: Button = itemView.findViewById(R.id.objective_unfinish)
|
|
||||||
val unStart: Button = itemView.findViewById(R.id.objective_unstart)
|
|
||||||
val inputHint: TextView = itemView.findViewById(R.id.objective_inputhint)
|
|
||||||
val input: EditText = itemView.findViewById(R.id.objective_input)
|
|
||||||
val enterButton: Button = itemView.findViewById(R.id.objective_enterbutton)
|
|
||||||
val requestCode: TextView = itemView.findViewById(R.id.objective_requestcode)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/objectives_fake"
|
android:id="@+id/fake"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
android:text="Enable fake time and progress" />
|
android:text="Enable fake time and progress" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/objectives_reset"
|
android:id="@+id/reset"
|
||||||
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/objectives_recyclerview"
|
android:id="@+id/recyclerview"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginLeft="16dp"
|
android:layout_marginLeft="16dp"
|
||||||
android:layout_marginRight="16dp"
|
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginRight="16dp"
|
||||||
app:cardBackgroundColor="@color/colorPrimary"
|
app:cardBackgroundColor="@color/colorPrimary"
|
||||||
app:cardCornerRadius="2dp"
|
app:cardCornerRadius="2dp"
|
||||||
app:cardUseCompatPadding="true"
|
app:cardUseCompatPadding="true"
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/objective_title"
|
android:id="@+id/title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="sans-serif-medium"
|
android:fontFamily="sans-serif-medium"
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
tools:text="1. Title" />
|
tools:text="1. Title" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/objective_objective"
|
android:id="@+id/objective"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
tools:text="Objective" />
|
tools:text="Objective" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/objective_gate"
|
android:id="@+id/gate"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
|
@ -45,61 +45,61 @@
|
||||||
tools:text="Gate" />
|
tools:text="Gate" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/objective_progress"
|
android:id="@+id/progress"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:orientation="vertical" >
|
android:orientation="vertical">
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/objective_verify"
|
android:id="@+id/verify"
|
||||||
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/objectives_button_verify" />
|
android:text="@string/objectives_button_verify" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/objective_start"
|
android:id="@+id/start"
|
||||||
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/objectives_button_start" />
|
android:text="@string/objectives_button_start" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/objective_unfinish"
|
android:id="@+id/unfinish"
|
||||||
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/objectives_button_unfinish" />
|
android:text="@string/objectives_button_unfinish" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/objective_unstart"
|
android:id="@+id/unstart"
|
||||||
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/objectives_button_unstart" />
|
android:text="@string/objectives_button_unstart" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/objective_inputhint"
|
android:id="@+id/inputhint"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives" />
|
android:text="@string/enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/objective_requestcode"
|
android:id="@+id/requestcode"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Request code: XXXXX" />
|
android:text="Request code: XXXXX" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="horizontal" >
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/objective_input"
|
android:id="@+id/input"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
@ -108,16 +108,16 @@
|
||||||
android:inputType="text" />
|
android:inputType="text" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/objective_enterbutton"
|
android:id="@+id/enterbutton"
|
||||||
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
style="@style/Widget.AppCompat.Button.Borderless.Colored"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/objectives_button_enter" />
|
android:text="@string/objectives_button_enter" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/objective_accomplished"
|
android:id="@+id/accomplished"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
|
|
Loading…
Reference in a new issue