diff --git a/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransfer.kt b/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransfer.kt index 5167b8985c3590bc644b9bb3cc5fa2b7fe5e7b35..413fdc68ddd64fff4621ed2b84762f7141dc9daa 100644 --- a/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransfer.kt +++ b/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransfer.kt @@ -34,7 +34,8 @@ private const val TAG = "FileTransfer" class FileTransfer( private val service: LowEffortService, private val reader: ChunkedReader, - private var listener: FileTransferListener + private var listener: FileTransferListener, + private val destinationPath: String ) : OnPacketReceivedListener { private var currentState = TransferState.IDLE @@ -100,7 +101,7 @@ class FileTransfer( service.sendPacket( Packet( PacketType.START, - "/foo.py".toByteArray(Charset.forName("ASCII")) + destinationPath.toByteArray(Charset.forName("ASCII")) ) ) currentState = TransferState.START_SENT diff --git a/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt b/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt index de8f68642367f0caa5fc0015f09e07fde84c0bb7..acc94330a9f8959ff025f0fd89a5cec0cc8dda5f 100644 --- a/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt +++ b/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt @@ -30,6 +30,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.EditText import android.widget.ProgressBar import android.widget.TextView import androidx.annotation.UiThread @@ -53,6 +54,7 @@ class FileTransferFragment : Fragment(), GattListener, FileTransferListener{ private lateinit var tvSelected: TextView private lateinit var tvStatus: TextView private lateinit var progressBar: ProgressBar + private lateinit var inputDestination: EditText override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.file_transfer_fragment, container, false) @@ -62,6 +64,7 @@ class FileTransferFragment : Fragment(), GattListener, FileTransferListener{ tvSelected = view.findViewById(R.id.label_selected) tvStatus = view.findViewById(R.id.label_status) progressBar = view.findViewById(R.id.progress) + inputDestination = view.findViewById(R.id.input_destination) buttonPickFile = view.findViewById(R.id.button_pick_file) buttonPickFile.setOnClickListener { @@ -95,7 +98,7 @@ class FileTransferFragment : Fragment(), GattListener, FileTransferListener{ val reader = ChunkedReader(ctx, uri, ConnectionService.mtu) val service = ConnectionService.leService ?: throw IllegalStateException() - transfer = FileTransfer(service, reader, this) + transfer = FileTransfer(service, reader, this, inputDestination.text.toString()) } catch (e: Exception) { Log.e(TAG, "Failed to initialize transfer") return diff --git a/app/src/main/res/layout/file_transfer_fragment.xml b/app/src/main/res/layout/file_transfer_fragment.xml index 45825c7646361c34bf10baaf750c885750e62480..d4bbbae146f49fb9a235510c55a87068c58df224 100644 --- a/app/src/main/res/layout/file_transfer_fragment.xml +++ b/app/src/main/res/layout/file_transfer_fragment.xml @@ -12,7 +12,7 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" - android:text="@string/file_transfer_button_pick_file" /> + android:text="@string/file_transfer_button_pick_file"/> <TextView android:id="@+id/label_selected" @@ -23,7 +23,24 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/button_pick_file" - android:text="@string/file_transfer_label_no_file_selected" /> + android:text="@string/file_transfer_label_no_file_selected"/> + + <EditText android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/input_destination" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@id/label_selected" + android:importantForAutofill="no" + android:hint="@string/file_transfer_hint_destination"/> + + <TextView android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/label_destination_help" + android:text="@string/file_transfer_label_destination_help" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@id/input_destination"/> <Button android:id="@+id/button_start_stop_transfer" @@ -32,8 +49,8 @@ android:layout_marginTop="@dimen/send_label_margin" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="@id/label_selected" - android:text="@string/file_transfer_button_start_transfer" /> + app:layout_constraintTop_toBottomOf="@id/label_destination_help" + android:text="@string/file_transfer_button_start_transfer"/> <TextView android:id="@+id/label_status" @@ -42,7 +59,7 @@ android:layout_marginTop="@dimen/send_label_margin" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="@id/button_start_stop_transfer" /> + app:layout_constraintTop_toBottomOf="@id/button_start_stop_transfer"/> <ProgressBar android:id="@+id/progress" @@ -53,6 +70,6 @@ android:layout_marginTop="@dimen/send_label_margin" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="@id/label_status" /> + app:layout_constraintTop_toBottomOf="@id/label_status"/> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91fa3fa62364f500210c0d10d4b6c368157fa4b8..fbc5ec97ccb0bf51c6e38b9498d5adc7857631c0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,11 +11,13 @@ <string name="main_button_mood">Change Mood</string> <string name="main_button_beautiful">Beautiful</string> - <string name="file_transfer_button_pick_file">Select</string> + <string name="file_transfer_button_pick_file">Select file</string> <string name="file_transfer_button_start_transfer">Start</string> <string name="file_transfer_button_stop_transfer">Cancel</string> <string name="file_transfer_label_no_file_selected">No file selected</string> <string name="file_transfer_label_selected_file">Selected file:</string> + <string name="file_transfer_hint_destination">Destination path</string> + <string name="file_transfer_label_destination_help">(e.g. /test.py)</string> <string name="loading_dialog_loading">Loading</string> <string name="dialog_action_ok">OK</string>