2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-09-05 08:35:10 +00:00
Files
kdeconnect-android/src/org/kde/kdeconnect/Plugins/MousePadPlugin/ComposeSendActivity.java

115 lines
3.2 KiB
Java
Raw Normal View History

/*
* SPDX-FileCopyrightText: 2021 Forrest Hilton <forrestmhilton@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
package org.kde.kdeconnect.Plugins.MousePadPlugin;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
2023-03-05 22:03:58 +01:00
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import org.kde.kdeconnect.BackgroundService;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.UserInterface.ThemeUtil;
import org.kde.kdeconnect_tp.R;
import java.util.Objects;
public class ComposeSendActivity extends AppCompatActivity {
private String deviceId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_compose_send);
setSupportActionBar(findViewById(R.id.toolbar));
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
Intent intent = getIntent();
deviceId = intent.getStringExtra("org.kde.kdeconnect.Plugins.MousePadPlugin.deviceId");
EditText editText = findViewById(R.id.compose);
editText.requestFocus();
2023-03-06 00:02:39 +01:00
// this is almost never used
editText.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendComposed();
return true;
}
2023-03-06 00:02:39 +01:00
if (actionId == EditorInfo.IME_ACTION_DONE) {
clear();
return true;
}
return false;
});
}
public void sendChars(CharSequence chars) {
final NetworkPacket np = new NetworkPacket(MousePadPlugin.PACKET_TYPE_MOUSEPAD_REQUEST);
np.set("key", chars.toString());
sendKeyPressPacket(np);
}
private void sendKeyPressPacket(final NetworkPacket np) {
try {
Log.d("packed", np.serialize());
} catch (Exception e) {
Log.e("KDE/ComposeSend", "Exception", e);
}
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> plugin.sendKeyboardPacket(np));
}
public void sendComposed() {
EditText editText = findViewById(R.id.compose);
String editTextStr = editText.getText().toString();
sendChars(editTextStr);
2022-01-22 11:48:01 +01:00
clear();
}
public void clear() {
EditText editText = findViewById(R.id.compose);
editText.setText("");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_compose_send, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.menu_clear_compose) {
clear();
return true;
} else if (id == R.id.menu_send_compose) {
sendComposed();
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
}