1717import com .termux .shared .file .FileUtils ;
1818import com .termux .shared .file .TermuxFileUtils ;
1919import com .termux .shared .logger .Logger ;
20+ import com .termux .shared .markdown .MarkdownUtils ;
2021import com .termux .shared .models .errors .Error ;
2122import com .termux .shared .packages .PackageUtils ;
2223import com .termux .shared .termux .TermuxConstants ;
3031import java .util .List ;
3132import java .util .regex .Pattern ;
3233
33- public class TermuxWidgetActivity extends AppCompatActivity {
34+ public class TermuxWidgetMainActivity extends AppCompatActivity {
3435
35- private static final String LOG_TAG = "TermuxWidgetActivity " ;
36+ public static final String LOG_TAG = "TermuxWidgetMainActivity " ;
3637
3738 /** Termux:Widget app data home directory path. */
3839 public static final String TERMUX_WIDGET_DATA_HOME_DIR_PATH = TermuxConstants .TERMUX_DATA_HOME_DIR_PATH + "/widget" ; // Default: "/data/data/com.termux/files/home/.termux/widget"
@@ -48,13 +49,12 @@ protected void onCreate(Bundle savedInstanceState) {
4849
4950 Logger .logDebug (LOG_TAG , "onCreate" );
5051
51- setContentView (R .layout .activity_termux_widget );
52+ setContentView (R .layout .activity_termux_widget_main );
5253
5354 TextView pluginInfo = findViewById (R .id .textview_plugin_info );
5455 pluginInfo .setText (getString (R .string .plugin_info , TermuxConstants .TERMUX_GITHUB_REPO_URL ,
5556 TermuxConstants .TERMUX_WIDGET_GITHUB_REPO_URL ));
5657
57- setDisableLauncherIconViews ();
5858 setDynamicShortcutsViews ();
5959 setRefreshAllWidgetsViews ();
6060 }
@@ -65,6 +65,7 @@ protected void onResume() {
6565
6666 Logger .logVerbose (LOG_TAG , "onResume" );
6767
68+ setChangeLauncherActivityStateViews ();
6869 setMaxShortcutsLimitView ();
6970 }
7071
@@ -82,14 +83,49 @@ private void setMaxShortcutsLimitView() {
8283 }
8384 }
8485
85- private void setDisableLauncherIconViews () {
86- Button disableLauncherIconButton = findViewById (R .id .btn_disable_launcher_icon );
87- disableLauncherIconButton .setOnClickListener (v -> {
88- String message = getString (R .string .msg_disabling_launcher_icon , TermuxConstants .TERMUX_WIDGET_APP_NAME );
89- Logger .logInfo (LOG_TAG , message );
90- PackageUtils .setComponentState (TermuxWidgetActivity .this ,
91- TermuxConstants .TERMUX_WIDGET_PACKAGE_NAME , TermuxConstants .TERMUX_WIDGET .TERMUX_WIDGET_ACTIVITY_NAME ,
92- false , message , true );
86+ private void setChangeLauncherActivityStateViews () {
87+ String packageName = TermuxConstants .TERMUX_WIDGET_PACKAGE_NAME ;
88+ String className = TermuxConstants .TERMUX_WIDGET_APP .TERMUX_WIDGET_LAUNCHER_ACTIVITY_NAME ;
89+
90+ TextView changeLauncherActivityStateTextView = findViewById (R .id .textview_change_launcher_activity_state_details );
91+ changeLauncherActivityStateTextView .setText (MarkdownUtils .getSpannedMarkdownText (this ,
92+ getString (R .string .msg_change_launcher_activity_state_info , packageName , getClass ().getName ())));
93+
94+ Button changeLauncherActivityStateButton = findViewById (R .id .button_change_launcher_activity_state );
95+ String stateChangeMessage ;
96+ boolean newState ;
97+
98+ Boolean currentlyDisabled = PackageUtils .isComponentDisabled (this ,
99+ packageName , className , false );
100+ if (currentlyDisabled == null ) {
101+ Logger .logError (LOG_TAG , "Failed to check if \" " + packageName + "/" + className + "\" launcher activity is disabled" );
102+ changeLauncherActivityStateButton .setEnabled (false );
103+ changeLauncherActivityStateButton .setAlpha (.5f );
104+ changeLauncherActivityStateButton .setText (com .termux .shared .R .string .action_disable_launcher_icon );
105+ changeLauncherActivityStateButton .setOnClickListener (null );
106+ return ;
107+ }
108+
109+ changeLauncherActivityStateButton .setEnabled (true );
110+ changeLauncherActivityStateButton .setAlpha (1f );
111+ if (currentlyDisabled ) {
112+ changeLauncherActivityStateButton .setText (com .termux .shared .R .string .action_enable_launcher_icon );
113+ stateChangeMessage = getString (com .termux .shared .R .string .msg_enabling_launcher_icon , TermuxConstants .TERMUX_WIDGET_APP_NAME );
114+ newState = true ;
115+ } else {
116+ changeLauncherActivityStateButton .setText (com .termux .shared .R .string .action_disable_launcher_icon );
117+ stateChangeMessage = getString (com .termux .shared .R .string .msg_disabling_launcher_icon , TermuxConstants .TERMUX_WIDGET_APP_NAME );
118+ newState = false ;
119+ }
120+
121+ changeLauncherActivityStateButton .setOnClickListener (v -> {
122+ Logger .logInfo (LOG_TAG , stateChangeMessage );
123+ String errmsg = PackageUtils .setComponentState (this ,
124+ packageName , className , newState , stateChangeMessage , true );
125+ if (errmsg == null )
126+ setChangeLauncherActivityStateViews ();
127+ else
128+ Logger .logError (LOG_TAG , errmsg );
93129 });
94130 }
95131
@@ -100,22 +136,28 @@ private void setDynamicShortcutsViews() {
100136 dynamicShortcutsLinearLayout .setVisibility (View .VISIBLE );
101137
102138 TextView dynamicShortcutsInfoTextView = findViewById (R .id .textview_dynamic_shortcuts_info );
103- dynamicShortcutsInfoTextView .setText (getString (R .string .msg_dynamic_shortcuts_info ,
104- TermuxFileUtils .getUnExpandedTermuxPath (TERMUX_WIDGET_DYNAMIC_SHORTCUTS_DIR_PATH )));
105-
106- Button createDynamicShortcutsButton = findViewById (R .id .btn_create_dynamic_shortcuts );
107- createDynamicShortcutsButton .setOnClickListener (v -> createDynamicShortcuts (TermuxWidgetActivity .this ));
108-
109- Button removeDynamicShortcutsButton = findViewById (R .id .btn_remove_dynamic_shortcuts );
110- removeDynamicShortcutsButton .setOnClickListener (v -> removeDynamicShortcuts (TermuxWidgetActivity .this ));
139+ dynamicShortcutsInfoTextView .setText (MarkdownUtils .getSpannedMarkdownText (this ,
140+ getString (R .string .msg_dynamic_shortcuts_info ,
141+ TermuxFileUtils .getUnExpandedTermuxPath (TERMUX_WIDGET_DYNAMIC_SHORTCUTS_DIR_PATH ))));
142+
143+ Button createDynamicShortcutsButton = findViewById (R .id .button_create_dynamic_shortcuts );
144+ createDynamicShortcutsButton .setOnClickListener (v -> createDynamicShortcuts (this ));
145+
146+ Button removeDynamicShortcutsButton = findViewById (R .id .button_remove_dynamic_shortcuts );
147+ removeDynamicShortcutsButton .setOnClickListener (v -> removeDynamicShortcuts (this ));
111148 } else {
112149 dynamicShortcutsLinearLayout .setVisibility (View .GONE );
113150 }
114151 }
115152
116153 private void setRefreshAllWidgetsViews () {
117- Button refreshAllWidgetsIconButton = findViewById (R .id .btn_refresh_all_widgets );
118- refreshAllWidgetsIconButton .setOnClickListener (v -> TermuxWidgetProvider .sendIntentToRefreshAllWidgets (TermuxWidgetActivity .this , LOG_TAG ));
154+ Button refreshAllWidgetsIconButton = findViewById (R .id .button_refresh_all_widgets );
155+ refreshAllWidgetsIconButton .setOnClickListener (
156+ v -> sendIntentToRefreshAllWidgets ());
157+ }
158+
159+ public void sendIntentToRefreshAllWidgets () {
160+ TermuxWidgetProvider .sendIntentToRefreshAllWidgets (this , LOG_TAG );
119161 }
120162
121163 @ RequiresApi (Build .VERSION_CODES .N_MR1 )
0 commit comments