/*
* 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 android.text.InputType;
import com.grarak.kerneladiutor.R;
import com.grarak.kerneladiutor.fragments.ApplyOnBootFragment;
import com.grarak.kerneladiutor.fragments.RecyclerViewFragment;
import com.grarak.kerneladiutor.utils.kernel.vm.VM;
import com.grarak.kerneladiutor.utils.kernel.vm.ZRAM;
import com.grarak.kerneladiutor.utils.kernel.vm.ZSwap;
import com.grarak.kerneladiutor.views.recyclerview.CardView;
import com.grarak.kerneladiutor.views.recyclerview.GenericSelectView;
import com.grarak.kerneladiutor.views.recyclerview.RecyclerViewItem;
import com.grarak.kerneladiutor.views.recyclerview.SeekBarView;
import com.grarak.kerneladiutor.views.recyclerview.SwitchView;
import com.grarak.kerneladiutor.views.recyclerview.TitleView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by willi on 29.06.16.
*/
public class VMFragment extends RecyclerViewFragment {
private List<GenericSelectView> mVMs = new ArrayList<>();
@Override
protected void init() {
super.init();
addViewPagerFragment(ApplyOnBootFragment.newInstance(this));
}
@Override
protected void addItems(List<RecyclerViewItem> items) {
mVMs.clear();
for (int i = 0; i < VM.size(); i++) {
if (VM.exists(i)) {
GenericSelectView vm = new GenericSelectView();
vm.setSummary(VM.getName(i));
vm.setValue(VM.getValue(i));
vm.setValueRaw(vm.getValue());
vm.setInputType(InputType.TYPE_CLASS_NUMBER);
final int position = i;
vm.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() {
@Override
public void onGenericValueSelected(GenericSelectView genericSelectView, String value) {
VM.setValue(value, position, getActivity());
genericSelectView.setValue(value);
refreshVMs();
}
});
items.add(vm);
mVMs.add(vm);
}
}
if (ZRAM.supported()) {
zramInit(items);
}
zswapInit(items);
}
private void zramInit(List<RecyclerViewItem> items) {
TitleView zramTitle = new TitleView();
zramTitle.setText(getString(R.string.zram));
items.add(zramTitle);
SeekBarView zram = new SeekBarView();
zram.setTitle(getString(R.string.disksize));
zram.setSummary(getString(R.string.disksize_summary));
zram.setUnit(getString(R.string.mb));
zram.setMax(2048);
zram.setOffset(10);
zram.setProgress(ZRAM.getDisksize() / 10);
zram.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() {
@Override
public void onStop(SeekBarView seekBarView, int position, String value) {
ZRAM.setDisksize(position * 10, getActivity());
}
@Override
public void onMove(SeekBarView seekBarView, int position, String value) {
}
});
items.add(zram);
}
private void zswapInit(List<RecyclerViewItem> items) {
CardView zswapCard = new CardView(getActivity());
zswapCard.setTitle(getString(R.string.zswap));
if (ZSwap.hasEnable()) {
SwitchView zswap = new SwitchView();
zswap.setTitle(getString(R.string.zswap));
zswap.setSummary(getString(R.string.zswap_summary));
zswap.setChecked(ZSwap.isEnabled());
zswap.addOnSwitchListener(new SwitchView.OnSwitchListener() {
@Override
public void onChanged(SwitchView switchView, boolean isChecked) {
ZSwap.enable(isChecked, getActivity());
}
});
zswapCard.addItem(zswap);
}
if (ZSwap.hasMaxPoolPercent()) {
SeekBarView maxPoolPercent = new SeekBarView();
maxPoolPercent.setTitle(getString(R.string.memory_pool));
maxPoolPercent.setSummary(getString(R.string.memory_pool_summary));
maxPoolPercent.setUnit("%");
maxPoolPercent.setMax(50);
maxPoolPercent.setProgress(ZSwap.getMaxPoolPercent());
maxPoolPercent.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() {
@Override
public void onStop(SeekBarView seekBarView, int position, String value) {
ZSwap.setMaxPoolPercent(position, getActivity());
}
@Override
public void onMove(SeekBarView seekBarView, int position, String value) {
}
});
zswapCard.addItem(maxPoolPercent);
}
if (ZSwap.hasMaxCompressionRatio()) {
SeekBarView maxCompressionRatio = new SeekBarView();
maxCompressionRatio.setTitle(getString(R.string.maximum_compression_ratio));
maxCompressionRatio.setSummary(getString(R.string.maximum_compression_ratio_summary));
maxCompressionRatio.setUnit("%");
maxCompressionRatio.setProgress(ZSwap.getMaxCompressionRatio());
maxCompressionRatio.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() {
@Override
public void onStop(SeekBarView seekBarView, int position, String value) {
ZSwap.setMaxCompressionRatio(position, getActivity());
}
@Override
public void onMove(SeekBarView seekBarView, int position, String value) {
}
});
zswapCard.addItem(maxCompressionRatio);
}
if (zswapCard.size() > 0) {
items.add(zswapCard);
}
}
private void refreshVMs() {
getHandler().postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < mVMs.size(); i++) {
mVMs.get(i).setValue(VM.getValue(i));
mVMs.get(i).setValueRaw(mVMs.get(i).getValue());
}
}
}, 250);
}
}