Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>

<uses-feature android:name="android.hardware.bluetooth" android:required="false"/>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import org.phenoapps.intercross.util.BluetoothUtil
import org.phenoapps.intercross.util.Dialogs
import org.phenoapps.intercross.util.FileUtil
import org.phenoapps.intercross.util.KeyUtil
import org.phenoapps.intercross.util.VibrateUtil
import org.phenoapps.intercross.util.observeOnce
import javax.inject.Inject

Expand All @@ -55,14 +56,14 @@ class EventDetailFragment:
IntercrossBaseFragment<FragmentEventDetailBinding>(R.layout.fragment_event_detail),
MetadataManager {

private val requestBluetoothPermissions = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { granted ->
@Inject
lateinit var vibrateUtil: VibrateUtil

granted?.let { grant ->
private val requestBluetoothPermissions = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { granted ->

if (grant.filter { it.value == false }.isNotEmpty()) {
if (granted.filter { !it.value }.isNotEmpty()) {

Toast.makeText(context, R.string.error_no_bluetooth_permission, Toast.LENGTH_SHORT).show()
}
Toast.makeText(context, R.string.error_no_bluetooth_permission, Toast.LENGTH_SHORT).show()
}
}

Expand Down Expand Up @@ -401,7 +402,7 @@ class EventDetailFragment:
private fun startPrintProcess() {
context?.let { ctx ->

var permit = true
var permit = false
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (ctx.checkSelfPermission(android.Manifest.permission.BLUETOOTH_SCAN) == PackageManager.PERMISSION_GRANTED
&& ctx.checkSelfPermission(android.Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED) {
Expand All @@ -412,7 +413,7 @@ class EventDetailFragment:
android.Manifest.permission.BLUETOOTH_CONNECT
))
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
} else
if (ctx.checkSelfPermission(android.Manifest.permission.BLUETOOTH) == PackageManager.PERMISSION_GRANTED
&& ctx.checkSelfPermission(android.Manifest.permission.BLUETOOTH_ADMIN) == PackageManager.PERMISSION_GRANTED) {
permit = true
Expand All @@ -422,12 +423,12 @@ class EventDetailFragment:
android.Manifest.permission.BLUETOOTH_ADMIN
))
}
}

if (permit) {

BluetoothUtil().print(requireContext(), arrayOf(mEvent))
BluetoothUtil().print(ctx, arrayOf(mEvent))

vibrateUtil.vibrate()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package org.phenoapps.intercross.fragments

import android.content.SharedPreferences
import android.widget.ArrayAdapter
import androidx.activity.result.contract.ActivityResultContracts
import dagger.hilt.android.AndroidEntryPoint
import org.phenoapps.intercross.R
import org.phenoapps.intercross.activities.MainActivity
import org.phenoapps.intercross.databinding.FragmentImportZplBinding
import org.phenoapps.intercross.util.KeyUtil
import org.phenoapps.intercross.util.ZplTemplate
import java.io.InputStreamReader
import javax.inject.Inject
import androidx.core.content.edit

@AndroidEntryPoint
class ImportZPLFragment : IntercrossBaseFragment<FragmentImportZplBinding>(R.layout.fragment_import_zpl) {
Expand All @@ -29,7 +32,10 @@ class ImportZPLFragment : IntercrossBaseFragment<FragmentImportZplBinding>(R.lay

mBinding.codeTextView.text = text

mPref.edit().putString(mKeyUtil.zplCodeKey, text).apply()
mPref.edit {
putString(mKeyUtil.zplTemplateKey, context?.getString(R.string.none) ?: "None")
putString(mKeyUtil.zplCodeKey, text)
}

}
}
Expand All @@ -42,6 +48,9 @@ class ImportZPLFragment : IntercrossBaseFragment<FragmentImportZplBinding>(R.lay
show()
}

// Setup template spinner
setupTemplateSpinner()

//import a file when button is pressed
importButton.setOnClickListener {

Expand All @@ -54,4 +63,60 @@ class ImportZPLFragment : IntercrossBaseFragment<FragmentImportZplBinding>(R.lay

if (code.isNotBlank()) codeTextView.text = code
}

private fun FragmentImportZplBinding.setupTemplateSpinner() {

val templates = ZplTemplate.getDefaultTemplates(requireContext())
val templateNames = templates.map { it.displayName }.toMutableList()
val defaultTemplate = templates.firstOrNull { it.name == "template_2x1" } ?: templates.first()

// Add "None" option at the beginning for custom imported templates
val spinnerItems = mutableListOf(context?.getString(R.string.none) ?: "None")
spinnerItems.addAll(templateNames)

val adapter = ArrayAdapter(
requireContext(),
android.R.layout.simple_spinner_item,
spinnerItems
)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
templateSpinner.adapter = adapter

val savedTemplateName = mPref.getString(mKeyUtil.zplTemplateKey, "")?.trim().orEmpty()
val resolvedTemplateName = when {
savedTemplateName.isBlank() -> defaultTemplate.displayName
spinnerItems.contains(savedTemplateName) -> savedTemplateName
else -> defaultTemplate.displayName
}

val selectedPosition = spinnerItems.indexOf(resolvedTemplateName)
if (selectedPosition >= 0) {
templateSpinner.setSelection(selectedPosition)
}

// Show the default template code in preview if nothing is saved yet
if (savedTemplateName.isBlank()) {
codeTextView.text = defaultTemplate.zplCode
}

// Handle template selection
templateSpinner.onItemSelectedListener = object : android.widget.AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: android.widget.AdapterView<*>?, view: android.view.View?, position: Int, id: Long) {
if (position > 0) {
val selectedTemplate = templates[position - 1]
codeTextView.text = selectedTemplate.zplCode
mPref.edit {
putString(mKeyUtil.zplTemplateKey, selectedTemplate.displayName)
putString(mKeyUtil.zplCodeKey, selectedTemplate.zplCode)
}
} else {
mPref.edit { putString(mKeyUtil.zplTemplateKey, context?.getString(R.string.none) ?: "None") }
}
}

override fun onNothingSelected(parent: android.widget.AdapterView<*>?) {
// Do nothing
}
}
}
}
Loading