/* * Copyright (C) 2015-2016 Willi Ye <williye97@gmail.com> * * This file is part of Kernel Adiutor. * * Kernel Adiutor is free software: 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. * * Kernel Adiutor 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 Kernel Adiutor. If not, see <http://www.gnu.org/licenses/>. * */ package com.grarak.kerneladiutor.fragments.kernel; import com.grarak.kerneladiutor.R; import com.grarak.kerneladiutor.fragments.ApplyOnBootFragment; import com.grarak.kerneladiutor.fragments.RecyclerViewFragment; import com.grarak.kerneladiutor.utils.kernel.ksm.KSM; import com.grarak.kerneladiutor.views.recyclerview.DescriptionView; import com.grarak.kerneladiutor.views.recyclerview.RecyclerViewItem; import com.grarak.kerneladiutor.views.recyclerview.SeekBarView; import com.grarak.kerneladiutor.views.recyclerview.SwitchView; import java.util.ArrayList; import java.util.List; /** * Created by willi on 28.06.16. */ public class KSMFragment extends RecyclerViewFragment { private List<DescriptionView> mInfos = new ArrayList<>(); @Override protected void init() { super.init(); addViewPagerFragment(ApplyOnBootFragment.newInstance(this)); } @Override protected void addItems(List<RecyclerViewItem> items) { infoInit(items); if (KSM.hasEnable()) { SwitchView enable = new SwitchView(); enable.setTitle(getString(R.string.ksm)); enable.setSummary(getString(R.string.ksm_summary)); enable.setChecked(KSM.isEnabled()); enable.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { KSM.enableKsm(isChecked, getActivity()); } }); items.add(enable); } if (KSM.hasDeferredTimer()) { SwitchView deferredTimer = new SwitchView(); deferredTimer.setTitle(getString(R.string.deferred_timer)); deferredTimer.setSummary(getString(R.string.deferred_timer_summary)); deferredTimer.setChecked(KSM.isDeferredTimerEnabled()); deferredTimer.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { KSM.enableDeferredTimer(isChecked, getActivity()); } }); items.add(deferredTimer); } if (KSM.hasPagesToScan()) { SeekBarView pagesToScan = new SeekBarView(); pagesToScan.setTitle(getString(R.string.pages_to_scan)); pagesToScan.setMax(1024); pagesToScan.setProgress(KSM.getPagesToScan()); pagesToScan.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { KSM.setPagesToScan(position, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(pagesToScan); } if (KSM.hasSleepMilliseconds()) { SeekBarView sleepMilliseconds = new SeekBarView(); sleepMilliseconds.setTitle(getString(R.string.sleep_milliseconds)); sleepMilliseconds.setUnit(getString(R.string.ms)); sleepMilliseconds.setMax(5000); sleepMilliseconds.setOffset(50); sleepMilliseconds.setProgress(KSM.getSleepMilliseconds() / 50); sleepMilliseconds.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { KSM.setSleepMilliseconds(position * 50, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(sleepMilliseconds); } if (KSM.hasMaxCpuPercentage()) { SeekBarView maxCpuPercentage = new SeekBarView(); maxCpuPercentage.setTitle(getString(R.string.max_cpu_usage)); maxCpuPercentage.setSummary(getString(R.string.max_cpu_usage_summary)); maxCpuPercentage.setUnit("%"); maxCpuPercentage.setProgress(KSM.getMaxCpuPercentage()); maxCpuPercentage.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { KSM.setMaxCpuPercentage(position, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(maxCpuPercentage); } } private void infoInit(List<RecyclerViewItem> items) { mInfos.clear(); for (int i = 0; i < KSM.getInfosSize(); i++) { if (KSM.hasInfo(i)) { DescriptionView info = new DescriptionView(); info.setTitle(KSM.getInfoText(i, getActivity())); items.add(info); mInfos.add(info); } } } @Override protected void refresh() { super.refresh(); if (mInfos.size() > 0) { for (int i = 0; i < mInfos.size(); i++) { mInfos.get(i).setSummary(KSM.getInfo(i)); } } } }