Skip to content

Commit

Permalink
I/O: Added a seperate page to control all the I/O blocks
Browse files Browse the repository at this point in the history
Linkied to main I/O page
Issue #100

Signed-off-by: sunilpaulmathew <sunil.kde@gmail.com>
  • Loading branch information
sunilpaulmathew committed Apr 15, 2021
1 parent c8230c5 commit cc8addd
Show file tree
Hide file tree
Showing 8 changed files with 530 additions and 4 deletions.
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,9 @@
<activity
android:name=".views.NavHeaderView$MainHeaderActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name=".activities.CPUBoostActivity" />
<activity android:name=".activities.AdvancedIOActivity" />
<activity android:name=".activities.ApplyScriptActivity" />
<activity android:name=".activities.CPUBoostActivity" />
<activity android:name=".activities.EditorActivity" />
<activity android:name=".activities.FlashingActivity" />
<activity android:name=".activities.ForegroundActivity" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Copyright (C) 2021-2022 sunilpaulmathew <sunil.kde@gmail.com>
*
* This file is part of SmartPack Kernel Manager, which is a heavily modified version of Kernel Adiutor,
* originally developed by Willi Ye <williye97@gmail.com>
*
* Both SmartPack Kernel Manager & Kernel Adiutor are free softwares: you can redistribute it
* and/or modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SmartPack Kernel Manager is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SmartPack Kernel Manager. If not, see <http://www.gnu.org/licenses/>.
*
*/

package com.smartpack.kernelmanager.activities;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.smartpack.kernelmanager.R;
import com.smartpack.kernelmanager.fragments.kernel.IOAdvancedFragment;

/*
* Created by sunilpaulmathew <sunil.kde@gmail.com> on April 14, 2021
*/
public class AdvancedIOActivity extends BaseActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launchfragment);

getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new IOAdvancedFragment()).commit();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,9 @@ public class NavigationActivity extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener {

private ArrayList<NavigationFragment> mFragments = new ArrayList<>();
private Map<Integer, Class<? extends Fragment>> mActualFragments = new LinkedHashMap<>();
private final Map<Integer, Class<? extends Fragment>> mActualFragments = new LinkedHashMap<>();

private Handler mHandler = new Handler();
private final Handler mHandler = new Handler();
private DrawerLayout mDrawer;
private NavigationView mNavigationView;
private boolean mExit;
Expand All @@ -146,7 +146,7 @@ protected void onCreate(Bundle savedInstanceState) {

private static class FragmentLoader extends AsyncTask<Void, Void, Void> {

private WeakReference<NavigationActivity> mRefActivity;
private final WeakReference<NavigationActivity> mRefActivity;

private FragmentLoader(NavigationActivity activity) {
mRefActivity = new WeakReference<>(activity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import com.smartpack.kernelmanager.fragments.kernel.DisplayLEDFragment;
import com.smartpack.kernelmanager.fragments.kernel.EntropyFragment;
import com.smartpack.kernelmanager.fragments.kernel.GPUFragment;
import com.smartpack.kernelmanager.fragments.kernel.IOAdvancedFragment;
import com.smartpack.kernelmanager.fragments.kernel.IOFragment;
import com.smartpack.kernelmanager.fragments.kernel.KLapseFragment;
import com.smartpack.kernelmanager.fragments.kernel.KSMFragment;
Expand All @@ -55,6 +56,7 @@
import com.smartpack.kernelmanager.fragments.tools.CustomControlsFragment;
import com.smartpack.kernelmanager.utils.Prefs;
import com.smartpack.kernelmanager.utils.Utils;
import com.smartpack.kernelmanager.utils.kernel.io.IOAdvanced;

import java.util.HashMap;

Expand All @@ -78,6 +80,7 @@ public class ApplyOnBootFragment extends BaseFragment {
public static final String BATTERY = "battery_onboot";
public static final String LED = "led_onboot";
public static final String IO = "io_onboot";
public static final String IO_ADVANCED = "ioadv_onboot";
public static final String KSM = "ksm_onboot";
public static final String LMK = "lmk_onboot";
public static final String WAKELOCKS = "wakelocks_onboot";
Expand All @@ -104,6 +107,7 @@ public class ApplyOnBootFragment extends BaseFragment {
sAssignments.put(BatteryFragment.class, BATTERY);
sAssignments.put(DisplayLEDFragment.class, LED);
sAssignments.put(IOFragment.class, IO);
sAssignments.put(IOAdvancedFragment.class, IO_ADVANCED);
sAssignments.put(KSMFragment.class, KSM);
sAssignments.put(LMKFragment.class, LMK);
sAssignments.put(WakelockFragment.class, WAKELOCKS);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
/*
* Copyright (C) 2021-2022 sunilpaulmathew <sunil.kde@gmail.com>
*
* This file is part of SmartPack Kernel Manager, which is a heavily modified version of Kernel Adiutor,
* originally developed by Willi Ye <williye97@gmail.com>
*
* Both SmartPack Kernel Manager & Kernel Adiutor are free softwares: you can redistribute it
* and/or modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SmartPack Kernel Manager is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SmartPack Kernel Manager. If not, see <http://www.gnu.org/licenses/>.
*
*/

package com.smartpack.kernelmanager.fragments.kernel;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.text.InputType;

import com.smartpack.kernelmanager.R;
import com.smartpack.kernelmanager.fragments.ApplyOnBootFragment;
import com.smartpack.kernelmanager.fragments.RecyclerViewFragment;
import com.smartpack.kernelmanager.utils.kernel.io.IOAdvanced;
import com.smartpack.kernelmanager.views.recyclerview.CardView;
import com.smartpack.kernelmanager.views.recyclerview.GenericSelectView;
import com.smartpack.kernelmanager.views.recyclerview.RecyclerViewItem;
import com.smartpack.kernelmanager.views.recyclerview.SeekBarView;
import com.smartpack.kernelmanager.views.recyclerview.SelectView;
import com.smartpack.kernelmanager.views.recyclerview.SwitchView;

import java.util.ArrayList;
import java.util.List;

/*
* Created by sunilpaulmathew <sunil.kde@gmail.com> on April 14, 2021
*/
public class IOAdvancedFragment extends RecyclerViewFragment {

private IOAdvanced mIOAdvanced;

private AsyncTask<Void, Void, List<RecyclerViewItem>> mLoader;

@Override
protected void init() {
super.init();

mIOAdvanced = IOAdvanced.getInstance();
addViewPagerFragment(ApplyOnBootFragment.newInstance(this));
}

@Override
protected void addItems(List<RecyclerViewItem> items) {
reload();
}

private void reload() {
if (mLoader == null) {
getHandler().postDelayed(new Runnable() {
@SuppressLint("StaticFieldLeak")
@Override
public void run() {
clearItems();
mLoader = new AsyncTask<Void, Void, List<RecyclerViewItem>>() {

@Override
protected void onPreExecute() {
super.onPreExecute();
showProgress();
}

@Override
protected List<RecyclerViewItem> doInBackground(Void... voids) {
List<RecyclerViewItem> items = new ArrayList<>();
if (IOAdvanced.getIOBlockList().size() > 0) {
IOBlocksInit(items);
}
return items;
}

@Override
protected void onPostExecute(List<RecyclerViewItem> recyclerViewItems) {
super.onPostExecute(recyclerViewItems);
for (RecyclerViewItem item : recyclerViewItems) {
addItem(item);
}
hideProgress();
mLoader = null;
}
};
mLoader.execute();
}
}, 250);
}
}

private void IOBlocksInit(List<RecyclerViewItem> items) {
CardView blocksCard = new CardView(getActivity());
blocksCard.setTitle(getString(R.string.io_blocks, IOAdvanced.getCurrentBlock(requireActivity())));

SelectView ioBlocks = new SelectView();
ioBlocks.setTitle(getString(R.string.io_blocks_select));
ioBlocks.setSummary(getString(R.string.io_blocks_select_summary));
ioBlocks.setItems(IOAdvanced.getIOBlockList());
ioBlocks.setItem(IOAdvanced.getCurrentBlock(requireActivity()));
ioBlocks.setOnItemSelected((selectView, position, item) -> {
if (!IOAdvanced.getCurrentBlock(requireActivity()).equals(IOAdvanced.getIOBlockList().get(position))) {
IOAdvanced.setCurrentBlock(position, requireActivity());
reload();
}
});

blocksCard.addItem(ioBlocks);

if (IOAdvanced.hasScheduler(requireActivity()) && !IOAdvanced.getScheduler(requireActivity()).equals("")) {
SelectView scheduler = new SelectView();
scheduler.setSummary(getString(R.string.scheduler));
scheduler.setItems(IOAdvanced.getSchedulers(requireActivity()));
scheduler.setItem(IOAdvanced.getScheduler(requireActivity()));
scheduler.setOnItemSelected((selectView, position, item) -> {
mIOAdvanced.setScheduler(item, getActivity());
getHandler().postDelayed(() -> scheduler.setItem(IOAdvanced.getScheduler(requireActivity())),500);
});

blocksCard.addItem(scheduler);
}

if (IOAdvanced.hasReadAhead(requireActivity())) {
SeekBarView readahead = new SeekBarView();
readahead.setSummary(getString(R.string.read_ahead));
readahead.setUnit(getString(R.string.kb));
readahead.setMax(8192);
readahead.setMin(64);
readahead.setOffset(64);
readahead.setProgress(IOAdvanced.getReadAhead(requireActivity()) / 64 - 1);
readahead.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() {
@Override
public void onStop(SeekBarView seekBarView, int position, String value) {
mIOAdvanced.setReadAhead((position + 1) * 64, getActivity());
getHandler().postDelayed(() -> readahead.setProgress(IOAdvanced.getReadAhead(requireActivity()) / 64 - 1),
500);
}

@Override
public void onMove(SeekBarView seekBarView, int position, String value) {
}
});

blocksCard.addItem(readahead);
}

if (IOAdvanced.hasRotational(requireActivity())) {
SwitchView rotational = new SwitchView();
rotational.setSummary(getString(R.string.rotational));
rotational.setChecked(IOAdvanced.isRotationalEnabled(requireActivity()));
rotational.addOnSwitchListener((switchView, isChecked) -> {
mIOAdvanced.enableRotational(isChecked, getActivity());
getHandler().postDelayed(() -> rotational.setChecked(IOAdvanced.isRotationalEnabled(requireActivity())),500);
});

blocksCard.addItem(rotational);
}

if (IOAdvanced.hasIOStats(requireActivity())) {
SwitchView iostats = new SwitchView();
iostats.setSummary(getString(R.string.iostats));
iostats.setChecked(IOAdvanced.isIOStatsEnabled(requireActivity()));
iostats.addOnSwitchListener((switchView, isChecked) -> {
mIOAdvanced.enableIOStats(isChecked, getActivity());
getHandler().postDelayed(() -> iostats.setChecked(IOAdvanced.isIOStatsEnabled(requireActivity())),500);
});

blocksCard.addItem(iostats);
}

if (IOAdvanced.hasRandom(requireActivity())) {
SwitchView addRandom = new SwitchView();
addRandom.setSummary(getString(R.string.add_random));
addRandom.setChecked(IOAdvanced.isRandomEnabled(requireActivity()));
addRandom.addOnSwitchListener((switchView, isChecked) -> {
mIOAdvanced.enableRandom(isChecked, getActivity());
getHandler().postDelayed(() -> addRandom.setChecked(IOAdvanced.isRandomEnabled(requireActivity())),500);
});

blocksCard.addItem(addRandom);
}

if (IOAdvanced.hasAffinity(requireActivity())) {
SeekBarView rqAffinity = new SeekBarView();
rqAffinity.setSummary(getString(R.string.rq_affitiny));
rqAffinity.setMax(2);
rqAffinity.setProgress(IOAdvanced.getAffinity(requireActivity()));
rqAffinity.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() {
@Override
public void onStop(SeekBarView seekBarView, int position, String value) {
mIOAdvanced.setAffinity(position, getActivity());
getHandler().postDelayed(() -> rqAffinity.setProgress(IOAdvanced.getAffinity(requireActivity())),500);
}

@Override
public void onMove(SeekBarView seekBarView, int position, String value) {
}
});

blocksCard.addItem(rqAffinity);
}

if (IOAdvanced.hasNoMerges(requireActivity())) {
SeekBarView Nomerges = new SeekBarView();
Nomerges.setSummary(getString(R.string.nomerges));
Nomerges.setMax(2);
Nomerges.setProgress(IOAdvanced.getNoMerges(requireActivity()));
Nomerges.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() {
@Override
public void onStop(SeekBarView seekBarView, int position, String value) {
mIOAdvanced.setNoMerges(position, getActivity());
getHandler().postDelayed(() -> Nomerges.setProgress(IOAdvanced.getNoMerges(requireActivity())),500);
}

@Override
public void onMove(SeekBarView seekBarView, int position, String value) {
}
});

blocksCard.addItem(Nomerges);
}

if (IOAdvanced.hasNRRequests(requireActivity())) {
GenericSelectView NrRequests = new GenericSelectView();
NrRequests.setSummary(getString(R.string.nr_requests));
NrRequests.setValue(IOAdvanced.getNRRequests(requireActivity()));
NrRequests.setValueRaw(NrRequests.getValue());
NrRequests.setInputType(InputType.TYPE_CLASS_NUMBER);
NrRequests.setOnGenericValueListener((genericSelectView, value) -> {
mIOAdvanced.setNRRequests(value, getActivity());
genericSelectView.setValue(value);
getHandler().postDelayed(() -> NrRequests.setValueRaw(NrRequests.getValue()),500);
});

blocksCard.addItem(NrRequests);
}

items.add(blocksCard);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
*/
package com.smartpack.kernelmanager.fragments.kernel;

import android.content.Intent;
import android.text.InputType;

import com.smartpack.kernelmanager.R;
import com.smartpack.kernelmanager.activities.AdvancedIOActivity;
import com.smartpack.kernelmanager.fragments.ApplyOnBootFragment;
import com.smartpack.kernelmanager.fragments.BaseFragment;
import com.smartpack.kernelmanager.fragments.RecyclerViewFragment;
Expand Down Expand Up @@ -59,6 +61,19 @@ protected void init() {

@Override
protected void addItems(List<RecyclerViewItem> items) {
CardView advCard = new CardView(getActivity());
advCard.setTitle(getString(R.string.adv_sett));

DescriptionView advancedIO = new DescriptionView();
advancedIO.setSummary(getString(R.string.io_blocks_summary));
advancedIO.setOnItemClickListener(item -> {
Intent intent = new Intent(getActivity(), AdvancedIOActivity.class);
startActivity(intent);
});

advCard.addItem(advancedIO);
items.add(advCard);

storageInit(IO.Storage.Internal, items);
if (mIO.hasExternal()) {
storageInit(IO.Storage.External, items);
Expand Down
Loading

0 comments on commit cc8addd

Please sign in to comment.