mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-07 03:05:18 +08:00
Rename termux terminal view and session client classes
- com.termux.app.terminal.TermuxViewClient has been renamed to TermuxTerminalViewClient - com.termux.app.terminal.TermuxSessionClient has been renamed to TermuxTerminalSessionClient - com.termux.shared.shell.TermuxSessionClientBase has been renamed to TermuxTerminalSessionClientBase This was required because com.termux.app.terminal.TermuxSessionClient was in conflict with com.termux.shared.shell.TermuxSessionClient interface of com.termux.shared.shell.TermuxSession.
This commit is contained in:
@@ -38,8 +38,8 @@ import com.termux.app.activities.SettingsActivity;
|
|||||||
import com.termux.shared.settings.preferences.TermuxAppSharedPreferences;
|
import com.termux.shared.settings.preferences.TermuxAppSharedPreferences;
|
||||||
import com.termux.app.terminal.TermuxSessionsListViewController;
|
import com.termux.app.terminal.TermuxSessionsListViewController;
|
||||||
import com.termux.app.terminal.io.TerminalToolbarViewPager;
|
import com.termux.app.terminal.io.TerminalToolbarViewPager;
|
||||||
import com.termux.app.terminal.TermuxSessionClient;
|
import com.termux.app.terminal.TermuxTerminalSessionClient;
|
||||||
import com.termux.app.terminal.TermuxViewClient;
|
import com.termux.app.terminal.TermuxTerminalViewClient;
|
||||||
import com.termux.app.terminal.io.extrakeys.ExtraKeysView;
|
import com.termux.app.terminal.io.extrakeys.ExtraKeysView;
|
||||||
import com.termux.app.settings.properties.TermuxAppSharedProperties;
|
import com.termux.app.settings.properties.TermuxAppSharedProperties;
|
||||||
import com.termux.shared.interact.DialogUtils;
|
import com.termux.shared.interact.DialogUtils;
|
||||||
@@ -86,13 +86,13 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
* The {@link TerminalViewClient} interface implementation to allow for communication between
|
* The {@link TerminalViewClient} interface implementation to allow for communication between
|
||||||
* {@link TerminalView} and {@link TermuxActivity}.
|
* {@link TerminalView} and {@link TermuxActivity}.
|
||||||
*/
|
*/
|
||||||
TermuxViewClient mTermuxViewClient;
|
TermuxTerminalViewClient mTermuxTerminalViewClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link TerminalSessionClient} interface implementation to allow for communication between
|
* The {@link TerminalSessionClient} interface implementation to allow for communication between
|
||||||
* {@link TerminalSession} and {@link TermuxActivity}.
|
* {@link TerminalSession} and {@link TermuxActivity}.
|
||||||
*/
|
*/
|
||||||
TermuxSessionClient mTermuxSessionClient;
|
TermuxTerminalSessionClient mTermuxTerminalSessionClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Termux app shared preferences manager.
|
* Termux app shared preferences manager.
|
||||||
@@ -218,7 +218,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
// The service has connected, but data may have changed since we were last in the foreground.
|
// The service has connected, but data may have changed since we were last in the foreground.
|
||||||
// Get the session stored in shared preferences stored by {@link #onStop} if its valid,
|
// Get the session stored in shared preferences stored by {@link #onStop} if its valid,
|
||||||
// otherwise get the last session currently running.
|
// otherwise get the last session currently running.
|
||||||
mTermuxSessionClient.setCurrentSession(mTermuxSessionClient.getCurrentStoredSessionOrLast());
|
mTermuxTerminalSessionClient.setCurrentSession(mTermuxTerminalSessionClient.getCurrentStoredSessionOrLast());
|
||||||
termuxSessionListNotifyUpdated();
|
termuxSessionListNotifyUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
if (bundle != null) {
|
if (bundle != null) {
|
||||||
launchFailsafe = bundle.getBoolean(TERMUX_ACTIVITY.ACTION_FAILSAFE_SESSION, false);
|
launchFailsafe = bundle.getBoolean(TERMUX_ACTIVITY.ACTION_FAILSAFE_SESSION, false);
|
||||||
}
|
}
|
||||||
mTermuxSessionClient.addNewSession(launchFailsafe, null);
|
mTermuxTerminalSessionClient.addNewSession(launchFailsafe, null);
|
||||||
} catch (WindowManager.BadTokenException e) {
|
} catch (WindowManager.BadTokenException e) {
|
||||||
// Activity finished - ignore.
|
// Activity finished - ignore.
|
||||||
}
|
}
|
||||||
@@ -278,14 +278,14 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
if (i != null && Intent.ACTION_RUN.equals(i.getAction())) {
|
if (i != null && Intent.ACTION_RUN.equals(i.getAction())) {
|
||||||
// Android 7.1 app shortcut from res/xml/shortcuts.xml.
|
// Android 7.1 app shortcut from res/xml/shortcuts.xml.
|
||||||
boolean isFailSafe = i.getBooleanExtra(TERMUX_ACTIVITY.ACTION_FAILSAFE_SESSION, false);
|
boolean isFailSafe = i.getBooleanExtra(TERMUX_ACTIVITY.ACTION_FAILSAFE_SESSION, false);
|
||||||
mTermuxSessionClient.addNewSession(isFailSafe, null);
|
mTermuxTerminalSessionClient.addNewSession(isFailSafe, null);
|
||||||
} else {
|
} else {
|
||||||
mTermuxSessionClient.setCurrentSession(mTermuxSessionClient.getCurrentStoredSessionOrLast());
|
mTermuxTerminalSessionClient.setCurrentSession(mTermuxTerminalSessionClient.getCurrentStoredSessionOrLast());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the {@link TerminalSession} and {@link TerminalEmulator} clients.
|
// Update the {@link TerminalSession} and {@link TerminalEmulator} clients.
|
||||||
mTermuxService.setTermuxSessionClient(mTermuxSessionClient);
|
mTermuxService.setTermuxTerminalSessionClient(mTermuxTerminalSessionClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -307,7 +307,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
|
|
||||||
// Store current session in shared preferences so that it can be restored later in
|
// Store current session in shared preferences so that it can be restored later in
|
||||||
// {@link #onStart} if needed.
|
// {@link #onStart} if needed.
|
||||||
mTermuxSessionClient.setCurrentStoredSession();
|
mTermuxTerminalSessionClient.setCurrentStoredSession();
|
||||||
|
|
||||||
unregisterReceiver(mTermuxActivityBroadcastReceiever);
|
unregisterReceiver(mTermuxActivityBroadcastReceiever);
|
||||||
getDrawer().closeDrawers();
|
getDrawer().closeDrawers();
|
||||||
@@ -321,7 +321,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
|
|
||||||
if (mTermuxService != null) {
|
if (mTermuxService != null) {
|
||||||
// Do not leave service and session clients with references to activity.
|
// Do not leave service and session clients with references to activity.
|
||||||
mTermuxService.unsetTermuxSessionClient();
|
mTermuxService.unsetTermuxTerminalSessionClient();
|
||||||
mTermuxService = null;
|
mTermuxService = null;
|
||||||
}
|
}
|
||||||
unbindService(this);
|
unbindService(this);
|
||||||
@@ -406,11 +406,11 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
|
|
||||||
private void setNewSessionButtonView() {
|
private void setNewSessionButtonView() {
|
||||||
View newSessionButton = findViewById(R.id.new_session_button);
|
View newSessionButton = findViewById(R.id.new_session_button);
|
||||||
newSessionButton.setOnClickListener(v -> mTermuxSessionClient.addNewSession(false, null));
|
newSessionButton.setOnClickListener(v -> mTermuxTerminalSessionClient.addNewSession(false, null));
|
||||||
newSessionButton.setOnLongClickListener(v -> {
|
newSessionButton.setOnLongClickListener(v -> {
|
||||||
DialogUtils.textInput(TermuxActivity.this, R.string.title_create_named_session, null,
|
DialogUtils.textInput(TermuxActivity.this, R.string.title_create_named_session, null,
|
||||||
R.string.action_create_named_session_confirm, text -> mTermuxSessionClient.addNewSession(false, text),
|
R.string.action_create_named_session_confirm, text -> mTermuxTerminalSessionClient.addNewSession(false, text),
|
||||||
R.string.action_new_session_failsafe, text -> mTermuxSessionClient.addNewSession(true, text),
|
R.string.action_new_session_failsafe, text -> mTermuxTerminalSessionClient.addNewSession(true, text),
|
||||||
-1, null, null);
|
-1, null, null);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
@@ -447,12 +447,12 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
|
|
||||||
private void setTermuxTerminalViewAndClients() {
|
private void setTermuxTerminalViewAndClients() {
|
||||||
// Set termux terminal view and session clients
|
// Set termux terminal view and session clients
|
||||||
mTermuxSessionClient = new TermuxSessionClient(this);
|
mTermuxTerminalSessionClient = new TermuxTerminalSessionClient(this);
|
||||||
mTermuxViewClient = new TermuxViewClient(this, mTermuxSessionClient);
|
mTermuxTerminalViewClient = new TermuxTerminalViewClient(this, mTermuxTerminalSessionClient);
|
||||||
|
|
||||||
// Set termux terminal view
|
// Set termux terminal view
|
||||||
mTerminalView = findViewById(R.id.terminal_view);
|
mTerminalView = findViewById(R.id.terminal_view);
|
||||||
mTerminalView.setTerminalViewClient(mTermuxViewClient);
|
mTerminalView.setTerminalViewClient(mTermuxTerminalViewClient);
|
||||||
|
|
||||||
mTerminalView.setTextSize(mPreferences.getFontSize());
|
mTerminalView.setTextSize(mPreferences.getFontSize());
|
||||||
mTerminalView.setKeepScreenOn(mPreferences.getKeepScreenOn());
|
mTerminalView.setKeepScreenOn(mPreferences.getKeepScreenOn());
|
||||||
@@ -462,7 +462,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
|
|
||||||
mTerminalView.requestFocus();
|
mTerminalView.requestFocus();
|
||||||
|
|
||||||
mTermuxSessionClient.checkForFontAndColors();
|
mTermuxTerminalSessionClient.checkForFontAndColors();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTermuxSessionsListView() {
|
private void setTermuxSessionsListView() {
|
||||||
@@ -543,10 +543,10 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
|
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case CONTEXT_MENU_SELECT_URL_ID:
|
case CONTEXT_MENU_SELECT_URL_ID:
|
||||||
mTermuxViewClient.showUrlSelection();
|
mTermuxTerminalViewClient.showUrlSelection();
|
||||||
return true;
|
return true;
|
||||||
case CONTEXT_MENU_SHARE_TRANSCRIPT_ID:
|
case CONTEXT_MENU_SHARE_TRANSCRIPT_ID:
|
||||||
mTermuxViewClient.shareSessionTranscript();
|
mTermuxTerminalViewClient.shareSessionTranscript();
|
||||||
return true;
|
return true;
|
||||||
case CONTEXT_MENU_AUTOFILL_ID:
|
case CONTEXT_MENU_AUTOFILL_ID:
|
||||||
requestAutoFill();
|
requestAutoFill();
|
||||||
@@ -570,7 +570,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
startActivity(new Intent(this, SettingsActivity.class));
|
startActivity(new Intent(this, SettingsActivity.class));
|
||||||
return true;
|
return true;
|
||||||
case CONTEXT_MENU_REPORT_ID:
|
case CONTEXT_MENU_REPORT_ID:
|
||||||
mTermuxViewClient.reportIssueFromTranscript();
|
mTermuxTerminalViewClient.reportIssueFromTranscript();
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return super.onContextItemSelected(item);
|
return super.onContextItemSelected(item);
|
||||||
@@ -690,8 +690,8 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
return mTerminalView;
|
return mTerminalView;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TermuxSessionClient getTermuxSessionClient() {
|
public TermuxTerminalSessionClient getTermuxTerminalSessionClient() {
|
||||||
return mTermuxSessionClient;
|
return mTermuxTerminalSessionClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -732,8 +732,8 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mTermuxSessionClient!= null) {
|
if(mTermuxTerminalSessionClient != null) {
|
||||||
mTermuxSessionClient.checkForFontAndColors();
|
mTermuxTerminalSessionClient.checkForFontAndColors();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mProperties!= null) {
|
if(mProperties!= null) {
|
||||||
|
@@ -20,14 +20,14 @@ import android.provider.Settings;
|
|||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
|
||||||
import com.termux.R;
|
import com.termux.R;
|
||||||
import com.termux.app.terminal.TermuxSessionClient;
|
import com.termux.app.terminal.TermuxTerminalSessionClient;
|
||||||
import com.termux.app.utils.PluginUtils;
|
import com.termux.app.utils.PluginUtils;
|
||||||
import com.termux.shared.termux.TermuxConstants;
|
import com.termux.shared.termux.TermuxConstants;
|
||||||
import com.termux.shared.termux.TermuxConstants.TERMUX_APP.TERMUX_ACTIVITY;
|
import com.termux.shared.termux.TermuxConstants.TERMUX_APP.TERMUX_ACTIVITY;
|
||||||
import com.termux.shared.termux.TermuxConstants.TERMUX_APP.TERMUX_SERVICE;
|
import com.termux.shared.termux.TermuxConstants.TERMUX_APP.TERMUX_SERVICE;
|
||||||
import com.termux.shared.settings.preferences.TermuxAppSharedPreferences;
|
import com.termux.shared.settings.preferences.TermuxAppSharedPreferences;
|
||||||
import com.termux.shared.shell.TermuxSession;
|
import com.termux.shared.shell.TermuxSession;
|
||||||
import com.termux.shared.shell.TermuxSessionClientBase;
|
import com.termux.shared.shell.TermuxTerminalSessionClientBase;
|
||||||
import com.termux.shared.logger.Logger;
|
import com.termux.shared.logger.Logger;
|
||||||
import com.termux.shared.notification.NotificationUtils;
|
import com.termux.shared.notification.NotificationUtils;
|
||||||
import com.termux.shared.packages.PermissionUtils;
|
import com.termux.shared.packages.PermissionUtils;
|
||||||
@@ -92,12 +92,12 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
* that holds activity references for activity related functions.
|
* that holds activity references for activity related functions.
|
||||||
* Note that the service may often outlive the activity, so need to clear this reference.
|
* Note that the service may often outlive the activity, so need to clear this reference.
|
||||||
*/
|
*/
|
||||||
com.termux.app.terminal.TermuxSessionClient mTermuxSessionClient;
|
TermuxTerminalSessionClient mTermuxTerminalSessionClient;
|
||||||
|
|
||||||
/** The basic implementation of the {@link TerminalSessionClient} interface to be used by {@link TerminalSession}
|
/** The basic implementation of the {@link TerminalSessionClient} interface to be used by {@link TerminalSession}
|
||||||
* that does not hold activity references.
|
* that does not hold activity references.
|
||||||
*/
|
*/
|
||||||
final TermuxSessionClientBase mTermuxSessionClientBase = new TermuxSessionClientBase();
|
final TermuxTerminalSessionClientBase mTermuxTerminalSessionClientBase = new TermuxTerminalSessionClientBase();
|
||||||
|
|
||||||
/** The wake lock and wifi lock are always acquired and released together. */
|
/** The wake lock and wifi lock are always acquired and released together. */
|
||||||
private PowerManager.WakeLock mWakeLock;
|
private PowerManager.WakeLock mWakeLock;
|
||||||
@@ -178,8 +178,8 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
// Since we cannot rely on {@link TermuxActivity.onDestroy()} to always complete,
|
// Since we cannot rely on {@link TermuxActivity.onDestroy()} to always complete,
|
||||||
// we unset clients here as well if it failed, so that we do not leave service and session
|
// we unset clients here as well if it failed, so that we do not leave service and session
|
||||||
// clients with references to the activity.
|
// clients with references to the activity.
|
||||||
if (mTermuxSessionClient != null)
|
if (mTermuxTerminalSessionClient != null)
|
||||||
unsetTermuxSessionClient();
|
unsetTermuxTerminalSessionClient();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,7 +476,7 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a {@link TermuxSession}.
|
* Create a {@link TermuxSession}.
|
||||||
* Currently called by {@link TermuxSessionClient#addNewSession(boolean, String)} to add a new {@link TermuxSession}.
|
* Currently called by {@link TermuxTerminalSessionClient#addNewSession(boolean, String)} to add a new {@link TermuxSession}.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public TermuxSession createTermuxSession(String executablePath, String[] arguments, String workingDirectory, boolean isFailSafe, String sessionName) {
|
public TermuxSession createTermuxSession(String executablePath, String[] arguments, String workingDirectory, boolean isFailSafe, String sessionName) {
|
||||||
@@ -501,7 +501,7 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
// If the execution command was started for a plugin, only then will the stdout be set
|
// If the execution command was started for a plugin, only then will the stdout be set
|
||||||
// Otherwise if command was manually started by the user like by adding a new terminal session,
|
// Otherwise if command was manually started by the user like by adding a new terminal session,
|
||||||
// then no need to set stdout
|
// then no need to set stdout
|
||||||
TermuxSession newTermuxSession = TermuxSession.execute(this, executionCommand, getTermuxSessionClient(), this, sessionName, executionCommand.isPluginExecutionCommand);
|
TermuxSession newTermuxSession = TermuxSession.execute(this, executionCommand, getTermuxTerminalSessionClient(), this, sessionName, executionCommand.isPluginExecutionCommand);
|
||||||
if (newTermuxSession == null) {
|
if (newTermuxSession == null) {
|
||||||
Logger.logError(LOG_TAG, "Failed to execute new TermuxSession command for:\n" + executionCommand.getCommandIdAndLabelLogString());
|
Logger.logError(LOG_TAG, "Failed to execute new TermuxSession command for:\n" + executionCommand.getCommandIdAndLabelLogString());
|
||||||
return null;
|
return null;
|
||||||
@@ -516,8 +516,8 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
|
|
||||||
// Notify {@link TermuxSessionsListViewController} that sessions list has been updated if
|
// Notify {@link TermuxSessionsListViewController} that sessions list has been updated if
|
||||||
// activity in is foreground
|
// activity in is foreground
|
||||||
if (mTermuxSessionClient != null)
|
if (mTermuxTerminalSessionClient != null)
|
||||||
mTermuxSessionClient.termuxSessionListNotifyUpdated();
|
mTermuxTerminalSessionClient.termuxSessionListNotifyUpdated();
|
||||||
|
|
||||||
updateNotification();
|
updateNotification();
|
||||||
TermuxActivity.updateTermuxActivityStyling(this);
|
TermuxActivity.updateTermuxActivityStyling(this);
|
||||||
@@ -551,8 +551,8 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
|
|
||||||
// Notify {@link TermuxSessionsListViewController} that sessions list has been updated if
|
// Notify {@link TermuxSessionsListViewController} that sessions list has been updated if
|
||||||
// activity in is foreground
|
// activity in is foreground
|
||||||
if (mTermuxSessionClient != null)
|
if (mTermuxTerminalSessionClient != null)
|
||||||
mTermuxSessionClient.termuxSessionListNotifyUpdated();
|
mTermuxTerminalSessionClient.termuxSessionListNotifyUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateNotification();
|
updateNotification();
|
||||||
@@ -569,8 +569,8 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
switch (sessionAction) {
|
switch (sessionAction) {
|
||||||
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_SWITCH_TO_NEW_SESSION_AND_OPEN_ACTIVITY:
|
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_SWITCH_TO_NEW_SESSION_AND_OPEN_ACTIVITY:
|
||||||
setCurrentStoredTerminalSession(newTerminalSession);
|
setCurrentStoredTerminalSession(newTerminalSession);
|
||||||
if (mTermuxSessionClient != null)
|
if (mTermuxTerminalSessionClient != null)
|
||||||
mTermuxSessionClient.setCurrentSession(newTerminalSession);
|
mTermuxTerminalSessionClient.setCurrentSession(newTerminalSession);
|
||||||
startTermuxActivity();
|
startTermuxActivity();
|
||||||
break;
|
break;
|
||||||
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_KEEP_CURRENT_SESSION_AND_OPEN_ACTIVITY:
|
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_KEEP_CURRENT_SESSION_AND_OPEN_ACTIVITY:
|
||||||
@@ -580,8 +580,8 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
break;
|
break;
|
||||||
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_SWITCH_TO_NEW_SESSION_AND_DONT_OPEN_ACTIVITY:
|
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_SWITCH_TO_NEW_SESSION_AND_DONT_OPEN_ACTIVITY:
|
||||||
setCurrentStoredTerminalSession(newTerminalSession);
|
setCurrentStoredTerminalSession(newTerminalSession);
|
||||||
if (mTermuxSessionClient != null)
|
if (mTermuxTerminalSessionClient != null)
|
||||||
mTermuxSessionClient.setCurrentSession(newTerminalSession);
|
mTermuxTerminalSessionClient.setCurrentSession(newTerminalSession);
|
||||||
break;
|
break;
|
||||||
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_KEEP_CURRENT_SESSION_AND_DONT_OPEN_ACTIVITY:
|
case TERMUX_SERVICE.VALUE_EXTRA_SESSION_ACTION_KEEP_CURRENT_SESSION_AND_DONT_OPEN_ACTIVITY:
|
||||||
if (getTermuxSessionsSize() == 1)
|
if (getTermuxSessionsSize() == 1)
|
||||||
@@ -610,46 +610,46 @@ public final class TermuxService extends Service implements TermuxTask.TermuxTas
|
|||||||
|
|
||||||
/** If {@link TermuxActivity} has not bound to the {@link TermuxService} yet or is destroyed, then
|
/** If {@link TermuxActivity} has not bound to the {@link TermuxService} yet or is destroyed, then
|
||||||
* interface functions requiring the activity should not be available to the terminal sessions,
|
* interface functions requiring the activity should not be available to the terminal sessions,
|
||||||
* so we just return the {@link #mTermuxSessionClientBase}. Once {@link TermuxActivity} bind
|
* so we just return the {@link #mTermuxTerminalSessionClientBase}. Once {@link TermuxActivity} bind
|
||||||
* callback is received, it should call {@link #setTermuxSessionClient} to set the
|
* callback is received, it should call {@link #setTermuxTerminalSessionClient} to set the
|
||||||
* {@link TermuxService#mTermuxSessionClient} so that further terminal sessions are directly
|
* {@link TermuxService#mTermuxTerminalSessionClient} so that further terminal sessions are directly
|
||||||
* passed the {@link TermuxSessionClient} object which fully implements the
|
* passed the {@link TermuxTerminalSessionClient} object which fully implements the
|
||||||
* {@link TerminalSessionClient} interface.
|
* {@link TerminalSessionClient} interface.
|
||||||
*
|
*
|
||||||
* @return Returns the {@link TermuxSessionClient} if {@link TermuxActivity} has bound with
|
* @return Returns the {@link TermuxTerminalSessionClient} if {@link TermuxActivity} has bound with
|
||||||
* {@link TermuxService}, otherwise {@link TermuxSessionClientBase}.
|
* {@link TermuxService}, otherwise {@link TermuxTerminalSessionClientBase}.
|
||||||
*/
|
*/
|
||||||
public synchronized TermuxSessionClientBase getTermuxSessionClient() {
|
public synchronized TermuxTerminalSessionClientBase getTermuxTerminalSessionClient() {
|
||||||
if (mTermuxSessionClient != null)
|
if (mTermuxTerminalSessionClient != null)
|
||||||
return mTermuxSessionClient;
|
return mTermuxTerminalSessionClient;
|
||||||
else
|
else
|
||||||
return mTermuxSessionClientBase;
|
return mTermuxTerminalSessionClientBase;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This should be called when {@link TermuxActivity#onServiceConnected} is called to set the
|
/** This should be called when {@link TermuxActivity#onServiceConnected} is called to set the
|
||||||
* {@link TermuxService#mTermuxSessionClient} variable and update the {@link TerminalSession}
|
* {@link TermuxService#mTermuxTerminalSessionClient} variable and update the {@link TerminalSession}
|
||||||
* and {@link TerminalEmulator} clients in case they were passed {@link TermuxSessionClientBase}
|
* and {@link TerminalEmulator} clients in case they were passed {@link TermuxTerminalSessionClientBase}
|
||||||
* earlier.
|
* earlier.
|
||||||
*
|
*
|
||||||
* @param termuxSessionClient The {@link TermuxSessionClient} object that fully
|
* @param termuxTerminalSessionClient The {@link TermuxTerminalSessionClient} object that fully
|
||||||
* implements the {@link TerminalSessionClient} interface.
|
* implements the {@link TerminalSessionClient} interface.
|
||||||
*/
|
*/
|
||||||
public synchronized void setTermuxSessionClient(TermuxSessionClient termuxSessionClient) {
|
public synchronized void setTermuxTerminalSessionClient(TermuxTerminalSessionClient termuxTerminalSessionClient) {
|
||||||
mTermuxSessionClient = termuxSessionClient;
|
mTermuxTerminalSessionClient = termuxTerminalSessionClient;
|
||||||
|
|
||||||
for (int i = 0; i < mTermuxSessions.size(); i++)
|
for (int i = 0; i < mTermuxSessions.size(); i++)
|
||||||
mTermuxSessions.get(i).getTerminalSession().updateTerminalSessionClient(mTermuxSessionClient);
|
mTermuxSessions.get(i).getTerminalSession().updateTerminalSessionClient(mTermuxTerminalSessionClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This should be called when {@link TermuxActivity} has been destroyed and in {@link #onUnbind(Intent)}
|
/** This should be called when {@link TermuxActivity} has been destroyed and in {@link #onUnbind(Intent)}
|
||||||
* so that the {@link TermuxService} and {@link TerminalSession} and {@link TerminalEmulator}
|
* so that the {@link TermuxService} and {@link TerminalSession} and {@link TerminalEmulator}
|
||||||
* clients do not hold an activity references.
|
* clients do not hold an activity references.
|
||||||
*/
|
*/
|
||||||
public synchronized void unsetTermuxSessionClient() {
|
public synchronized void unsetTermuxTerminalSessionClient() {
|
||||||
for (int i = 0; i < mTermuxSessions.size(); i++)
|
for (int i = 0; i < mTermuxSessions.size(); i++)
|
||||||
mTermuxSessions.get(i).getTerminalSession().updateTerminalSessionClient(mTermuxSessionClientBase);
|
mTermuxSessions.get(i).getTerminalSession().updateTerminalSessionClient(mTermuxTerminalSessionClientBase);
|
||||||
|
|
||||||
mTermuxSessionClient = null;
|
mTermuxTerminalSessionClient = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -93,14 +93,14 @@ public class TermuxSessionsListViewController extends ArrayAdapter<TermuxSession
|
|||||||
@Override
|
@Override
|
||||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
TermuxSession clickedSession = getItem(position);
|
TermuxSession clickedSession = getItem(position);
|
||||||
mActivity.getTermuxSessionClient().setCurrentSession(clickedSession.getTerminalSession());
|
mActivity.getTermuxTerminalSessionClient().setCurrentSession(clickedSession.getTerminalSession());
|
||||||
mActivity.getDrawer().closeDrawers();
|
mActivity.getDrawer().closeDrawers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
|
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
final TermuxSession selectedSession = getItem(position);
|
final TermuxSession selectedSession = getItem(position);
|
||||||
mActivity.getTermuxSessionClient().renameSession(selectedSession.getTerminalSession());
|
mActivity.getTermuxTerminalSessionClient().renameSession(selectedSession.getTerminalSession());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@ import com.termux.R;
|
|||||||
import com.termux.shared.shell.TermuxSession;
|
import com.termux.shared.shell.TermuxSession;
|
||||||
import com.termux.shared.interact.DialogUtils;
|
import com.termux.shared.interact.DialogUtils;
|
||||||
import com.termux.app.TermuxActivity;
|
import com.termux.app.TermuxActivity;
|
||||||
import com.termux.shared.shell.TermuxSessionClientBase;
|
import com.termux.shared.shell.TermuxTerminalSessionClientBase;
|
||||||
import com.termux.shared.termux.TermuxConstants;
|
import com.termux.shared.termux.TermuxConstants;
|
||||||
import com.termux.app.TermuxService;
|
import com.termux.app.TermuxService;
|
||||||
import com.termux.shared.settings.properties.TermuxPropertyConstants;
|
import com.termux.shared.settings.properties.TermuxPropertyConstants;
|
||||||
@@ -31,7 +31,7 @@ import java.io.FileInputStream;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public class TermuxSessionClient extends TermuxSessionClientBase {
|
public class TermuxTerminalSessionClient extends TermuxTerminalSessionClientBase {
|
||||||
|
|
||||||
private final TermuxActivity mActivity;
|
private final TermuxActivity mActivity;
|
||||||
|
|
||||||
@@ -43,9 +43,9 @@ public class TermuxSessionClient extends TermuxSessionClientBase {
|
|||||||
|
|
||||||
private final int mBellSoundId;
|
private final int mBellSoundId;
|
||||||
|
|
||||||
private static final String LOG_TAG = "TermuxSessionClient";
|
private static final String LOG_TAG = "TermuxTerminalSessionClient";
|
||||||
|
|
||||||
public TermuxSessionClient(TermuxActivity activity) {
|
public TermuxTerminalSessionClient(TermuxActivity activity) {
|
||||||
this.mActivity = activity;
|
this.mActivity = activity;
|
||||||
|
|
||||||
mBellSoundId = mBellSoundPool.load(activity, R.raw.bell, 1);
|
mBellSoundId = mBellSoundPool.load(activity, R.raw.bell, 1);
|
@@ -44,18 +44,18 @@ import java.util.List;
|
|||||||
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout;
|
import androidx.drawerlayout.widget.DrawerLayout;
|
||||||
|
|
||||||
public class TermuxViewClient implements TerminalViewClient {
|
public class TermuxTerminalViewClient implements TerminalViewClient {
|
||||||
|
|
||||||
final TermuxActivity mActivity;
|
final TermuxActivity mActivity;
|
||||||
|
|
||||||
final TermuxSessionClient mTermuxSessionClient;
|
final TermuxTerminalSessionClient mTermuxTerminalSessionClient;
|
||||||
|
|
||||||
/** Keeping track of the special keys acting as Ctrl and Fn for the soft keyboard and other hardware keys. */
|
/** Keeping track of the special keys acting as Ctrl and Fn for the soft keyboard and other hardware keys. */
|
||||||
boolean mVirtualControlKeyDown, mVirtualFnKeyDown;
|
boolean mVirtualControlKeyDown, mVirtualFnKeyDown;
|
||||||
|
|
||||||
public TermuxViewClient(TermuxActivity activity, TermuxSessionClient termuxSessionClient) {
|
public TermuxTerminalViewClient(TermuxActivity activity, TermuxTerminalSessionClient termuxTerminalSessionClient) {
|
||||||
this.mActivity = activity;
|
this.mActivity = activity;
|
||||||
this.mTermuxSessionClient = termuxSessionClient;
|
this.mTermuxTerminalSessionClient = termuxTerminalSessionClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -107,16 +107,16 @@ public class TermuxViewClient implements TerminalViewClient {
|
|||||||
if (handleVirtualKeys(keyCode, e, true)) return true;
|
if (handleVirtualKeys(keyCode, e, true)) return true;
|
||||||
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_ENTER && !currentSession.isRunning()) {
|
if (keyCode == KeyEvent.KEYCODE_ENTER && !currentSession.isRunning()) {
|
||||||
mTermuxSessionClient.removeFinishedSession(currentSession);
|
mTermuxTerminalSessionClient.removeFinishedSession(currentSession);
|
||||||
return true;
|
return true;
|
||||||
} else if (e.isCtrlPressed() && e.isAltPressed()) {
|
} else if (e.isCtrlPressed() && e.isAltPressed()) {
|
||||||
// Get the unmodified code point:
|
// Get the unmodified code point:
|
||||||
int unicodeChar = e.getUnicodeChar(0);
|
int unicodeChar = e.getUnicodeChar(0);
|
||||||
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN || unicodeChar == 'n'/* next */) {
|
if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN || unicodeChar == 'n'/* next */) {
|
||||||
mTermuxSessionClient.switchToSession(true);
|
mTermuxTerminalSessionClient.switchToSession(true);
|
||||||
} else if (keyCode == KeyEvent.KEYCODE_DPAD_UP || unicodeChar == 'p' /* previous */) {
|
} else if (keyCode == KeyEvent.KEYCODE_DPAD_UP || unicodeChar == 'p' /* previous */) {
|
||||||
mTermuxSessionClient.switchToSession(false);
|
mTermuxTerminalSessionClient.switchToSession(false);
|
||||||
} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
|
} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
|
||||||
mActivity.getDrawer().openDrawer(Gravity.LEFT);
|
mActivity.getDrawer().openDrawer(Gravity.LEFT);
|
||||||
} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
|
} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
|
||||||
@@ -127,9 +127,9 @@ public class TermuxViewClient implements TerminalViewClient {
|
|||||||
} else if (unicodeChar == 'm'/* menu */) {
|
} else if (unicodeChar == 'm'/* menu */) {
|
||||||
mActivity.getTerminalView().showContextMenu();
|
mActivity.getTerminalView().showContextMenu();
|
||||||
} else if (unicodeChar == 'r'/* rename */) {
|
} else if (unicodeChar == 'r'/* rename */) {
|
||||||
mTermuxSessionClient.renameSession(currentSession);
|
mTermuxTerminalSessionClient.renameSession(currentSession);
|
||||||
} else if (unicodeChar == 'c'/* create */) {
|
} else if (unicodeChar == 'c'/* create */) {
|
||||||
mTermuxSessionClient.addNewSession(false, null);
|
mTermuxTerminalSessionClient.addNewSession(false, null);
|
||||||
} else if (unicodeChar == 'u' /* urls */) {
|
} else if (unicodeChar == 'u' /* urls */) {
|
||||||
showUrlSelection();
|
showUrlSelection();
|
||||||
} else if (unicodeChar == 'v') {
|
} else if (unicodeChar == 'v') {
|
||||||
@@ -142,7 +142,7 @@ public class TermuxViewClient implements TerminalViewClient {
|
|||||||
changeFontSize(false);
|
changeFontSize(false);
|
||||||
} else if (unicodeChar >= '1' && unicodeChar <= '9') {
|
} else if (unicodeChar >= '1' && unicodeChar <= '9') {
|
||||||
int index = unicodeChar - '1';
|
int index = unicodeChar - '1';
|
||||||
mTermuxSessionClient.switchToSession(index);
|
mTermuxTerminalSessionClient.switchToSession(index);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -297,7 +297,7 @@ public class TermuxViewClient implements TerminalViewClient {
|
|||||||
return true;
|
return true;
|
||||||
} else if (ctrlDown) {
|
} else if (ctrlDown) {
|
||||||
if (codePoint == 106 /* Ctrl+j or \n */ && !session.isRunning()) {
|
if (codePoint == 106 /* Ctrl+j or \n */ && !session.isRunning()) {
|
||||||
mTermuxSessionClient.removeFinishedSession(session);
|
mTermuxTerminalSessionClient.removeFinishedSession(session);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,16 +309,16 @@ public class TermuxViewClient implements TerminalViewClient {
|
|||||||
if (codePointLowerCase == shortcut.codePoint) {
|
if (codePointLowerCase == shortcut.codePoint) {
|
||||||
switch (shortcut.shortcutAction) {
|
switch (shortcut.shortcutAction) {
|
||||||
case TermuxPropertyConstants.ACTION_SHORTCUT_CREATE_SESSION:
|
case TermuxPropertyConstants.ACTION_SHORTCUT_CREATE_SESSION:
|
||||||
mTermuxSessionClient.addNewSession(false, null);
|
mTermuxTerminalSessionClient.addNewSession(false, null);
|
||||||
return true;
|
return true;
|
||||||
case TermuxPropertyConstants.ACTION_SHORTCUT_NEXT_SESSION:
|
case TermuxPropertyConstants.ACTION_SHORTCUT_NEXT_SESSION:
|
||||||
mTermuxSessionClient.switchToSession(true);
|
mTermuxTerminalSessionClient.switchToSession(true);
|
||||||
return true;
|
return true;
|
||||||
case TermuxPropertyConstants.ACTION_SHORTCUT_PREVIOUS_SESSION:
|
case TermuxPropertyConstants.ACTION_SHORTCUT_PREVIOUS_SESSION:
|
||||||
mTermuxSessionClient.switchToSession(false);
|
mTermuxTerminalSessionClient.switchToSession(false);
|
||||||
return true;
|
return true;
|
||||||
case TermuxPropertyConstants.ACTION_SHORTCUT_RENAME_SESSION:
|
case TermuxPropertyConstants.ACTION_SHORTCUT_RENAME_SESSION:
|
||||||
mTermuxSessionClient.renameSession(mActivity.getCurrentSession());
|
mTermuxTerminalSessionClient.renameSession(mActivity.getCurrentSession());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -69,7 +69,7 @@ public class TerminalToolbarViewPager {
|
|||||||
if (textToSend.length() == 0) textToSend = "\r";
|
if (textToSend.length() == 0) textToSend = "\r";
|
||||||
session.write(textToSend);
|
session.write(textToSend);
|
||||||
} else {
|
} else {
|
||||||
mActivity.getTermuxSessionClient().removeFinishedSession(session);
|
mActivity.getTermuxTerminalSessionClient().removeFinishedSession(session);
|
||||||
}
|
}
|
||||||
editText.setText("");
|
editText.setText("");
|
||||||
}
|
}
|
||||||
|
@@ -4,9 +4,9 @@ import com.termux.shared.logger.Logger;
|
|||||||
import com.termux.terminal.TerminalSession;
|
import com.termux.terminal.TerminalSession;
|
||||||
import com.termux.terminal.TerminalSessionClient;
|
import com.termux.terminal.TerminalSessionClient;
|
||||||
|
|
||||||
public class TermuxSessionClientBase implements TerminalSessionClient {
|
public class TermuxTerminalSessionClientBase implements TerminalSessionClient {
|
||||||
|
|
||||||
public TermuxSessionClientBase() {
|
public TermuxTerminalSessionClientBase() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
Reference in New Issue
Block a user