diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bd0d1645..77796892 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,7 +25,7 @@ android:name=".activities.SettingsActivity" android:exported="false" /> @@ -33,10 +33,6 @@ - - diff --git a/app/src/main/java/in/hridayan/ashell/activities/aShellActivity.java b/app/src/main/java/in/hridayan/ashell/activities/MainActivity.java similarity index 91% rename from app/src/main/java/in/hridayan/ashell/activities/aShellActivity.java rename to app/src/main/java/in/hridayan/ashell/activities/MainActivity.java index b938b9e1..cfe443ef 100644 --- a/app/src/main/java/in/hridayan/ashell/activities/aShellActivity.java +++ b/app/src/main/java/in/hridayan/ashell/activities/MainActivity.java @@ -13,10 +13,11 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; import in.hridayan.ashell.R; import in.hridayan.ashell.UI.KeyboardVisibilityChecker; +import in.hridayan.ashell.fragments.StartFragment; import in.hridayan.ashell.fragments.aShellFragment; import in.hridayan.ashell.fragments.otgFragment; -public class aShellActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity { private boolean isKeyboardVisible; public BottomNavigationView mNav; @@ -77,8 +78,8 @@ private void setupNavigation() { return false; } }); - // Set initial fragment - replaceFragment(new aShellFragment(mNav)); + + initialFragment(); } private void replaceFragment(Fragment fragment) { @@ -143,4 +144,13 @@ private void setBadge(int id, String text) { badge.setText(text); badge.setHorizontalOffset(0); } + + private void initialFragment() { + if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) { + mNav.setVisibility(View.GONE); + replaceFragment(new StartFragment()); + } else { + replaceFragment(new aShellFragment(mNav)); + } + } } diff --git a/app/src/main/java/in/hridayan/ashell/activities/StartActivity.java b/app/src/main/java/in/hridayan/ashell/activities/StartActivity.java deleted file mode 100644 index b52dd070..00000000 --- a/app/src/main/java/in/hridayan/ashell/activities/StartActivity.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2021-2022 sunilpaulmathew - * - * This file is part of Package Manager, a simple, yet powerful application - * to manage other application installed on an android device. - * - */ - -package in.hridayan.ashell.activities; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.view.View; -import com.google.android.material.button.MaterialButton; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.LinearLayoutCompat; -import androidx.preference.PreferenceManager; -import com.google.android.material.textview.MaterialTextView; -import in.hridayan.ashell.R; - -import in.hridayan.ashell.utils.Commands; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import rikka.shizuku.Shizuku; - -/* - * Created by sunilpaulmathew on October 28, 2022 - */ -public class StartActivity extends AppCompatActivity { - - @SuppressLint("SetTextI18n") - @Override - protected void onCreate(Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - - setContentView(in.hridayan.ashell.R.layout.activity_start); - - int statusBarColor = getColor(R.color.StatusBar); - double brightness = Color.luminance(statusBarColor); - boolean isLightStatusBar = brightness > 0.5; - - View decorView = getWindow().getDecorView(); - if (isLightStatusBar) { - decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); - } - - LinearLayoutCompat mMainLayout = findViewById(R.id.layout_main); - MaterialButton mStartButton = findViewById(R.id.start_button); - MaterialTextView mAboutText = findViewById(R.id.about_text); - - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) { - if (Shizuku.pingBinder()) { - Shizuku.requestPermission(0); - } - mMainLayout.setVisibility(View.VISIBLE); - mAboutText.setText(getString(R.string.app_summary)); - } else { - loadUI(this); - } - - mStartButton.setOnClickListener( - v -> { - PreferenceManager.getDefaultSharedPreferences(this) - .edit() - .putBoolean("firstLaunch", false) - .apply(); - loadUI(this); - }); - } - - private static void loadUI(Activity activity) { - ExecutorService mExecutors = Executors.newSingleThreadExecutor(); - mExecutors.execute( - () -> { - Commands.loadPackageInfo(); - new Handler(Looper.getMainLooper()) - .post( - () -> { - Intent aShellActivity = new Intent(activity, aShellActivity.class); - activity.startActivity(aShellActivity); - activity.finish(); - }); - if (!mExecutors.isShutdown()) mExecutors.shutdown(); - }); - } -} diff --git a/app/src/main/java/in/hridayan/ashell/fragments/StartFragment.java b/app/src/main/java/in/hridayan/ashell/fragments/StartFragment.java new file mode 100644 index 00000000..b3acd171 --- /dev/null +++ b/app/src/main/java/in/hridayan/ashell/fragments/StartFragment.java @@ -0,0 +1,51 @@ +package in.hridayan.ashell.fragments; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.appcompat.widget.LinearLayoutCompat; +import androidx.fragment.app.Fragment; +import androidx.preference.PreferenceManager; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.button.MaterialButton; +import com.google.android.material.textview.MaterialTextView; +import in.hridayan.ashell.R; +import rikka.shizuku.Shizuku; + +public class StartFragment extends Fragment { + + public StartFragment() {} + + @Override + public View onCreateView( + LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_start, container, false); + initViews(view); + return view; + } + + private void initViews(View view) { + LinearLayoutCompat mStartLayout = view.findViewById(R.id.fragment_start); + MaterialButton mStartButton = view.findViewById(R.id.start_button); + MaterialTextView mAboutText = view.findViewById(R.id.about_text); + + if (Shizuku.pingBinder()) { + Shizuku.requestPermission(0); + } + mStartLayout.setVisibility(View.VISIBLE); + mAboutText.setText(getString(R.string.app_summary)); + + mStartButton.setOnClickListener( + v -> { + PreferenceManager.getDefaultSharedPreferences(requireContext()) + .edit() + .putBoolean("firstLaunch", false) + .apply(); + getParentFragmentManager() + .beginTransaction() + .replace(R.id.fragment_container, new aShellFragment()) + .commit(); + }); + } +} diff --git a/app/src/main/java/in/hridayan/ashell/fragments/aShellFragment.java b/app/src/main/java/in/hridayan/ashell/fragments/aShellFragment.java index f468078c..32235ab1 100644 --- a/app/src/main/java/in/hridayan/ashell/fragments/aShellFragment.java +++ b/app/src/main/java/in/hridayan/ashell/fragments/aShellFragment.java @@ -53,7 +53,7 @@ import in.hridayan.ashell.activities.FabOnScrollDownListener; import in.hridayan.ashell.activities.FabOnScrollUpListener; import in.hridayan.ashell.activities.SettingsActivity; -import in.hridayan.ashell.activities.aShellActivity; +import in.hridayan.ashell.activities.MainActivity; import in.hridayan.ashell.adapters.CommandsAdapter; import in.hridayan.ashell.adapters.SettingsAdapter; import in.hridayan.ashell.adapters.ShellOutputAdapter; @@ -191,6 +191,8 @@ public void onKeyboardVisibilityChanged(boolean visible) { mRecyclerViewOutput.setAdapter(mShellOutputAdapter); + mNav.setVisibility(View.VISIBLE); + /*------------------------------------------------------*/ mPasteButton.setOnClickListener( @@ -1026,8 +1028,8 @@ public double getBrightness(int color) { /*------------------------------------------------------*/ private void showBottomNav() { - if (getActivity() != null && getActivity() instanceof aShellActivity) { - ((aShellActivity) getActivity()).mNav.animate().translationY(0); + if (getActivity() != null && getActivity() instanceof MainActivity) { + ((MainActivity) getActivity()).mNav.animate().translationY(0); } } diff --git a/app/src/main/res/layout/activity_ashell.xml b/app/src/main/res/layout/activity_ashell.xml index 04414c24..2bd6e69c 100644 --- a/app/src/main/res/layout/activity_ashell.xml +++ b/app/src/main/res/layout/activity_ashell.xml @@ -7,7 +7,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:layout_width="match_parent" - tools:context=".aShellActivity"> + tools:context=".MainActivity"> + tools:context=".MainActivity">