//Please don't replace listeners with lambda!
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].Base64;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import static [Link].WRAP_CONTENT;
import static [Link].MATCH_PARENT;
import static [Link].ALIGN_PARENT_LEFT;
import static [Link].ALIGN_PARENT_RIGHT;
import [Link];
public class Menu {
//********** Here you can easly change the menu appearance **********//
//region Variable
public static final String TAG = "Mod_Menu"; //Tag for logcat
int TEXT_COLOR = [Link]("#FFFFFF");
int TEXT_COLOR_2 = [Link]("#FFFFFF");
int BTN_COLOR = [Link]("#1C262D");
int MENU_BG_COLOR = [Link]("#00000000"); //#AARRGGBB
int MENU_FEATURE_BG_COLOR = [Link]("#00000000"); //#AARRGGBB
int MENU_WIDTH = 240;
int MENU_HEIGHT = 270;
int POS_X = 0;
int POS_Y = 100;
float MENU_CORNER = 24f;
int ICON_SIZE = 75; //Change both width and height of image
float ICON_ALPHA = 0.7f; //Transparent
int ToggleON = [Link];
int ToggleOFF = [Link];
int BtnON = [Link]("#1b5e20");
int BtnOFF = [Link]("#7f0000");
int CategoryBG = [Link]("#2F3D4C");
int SeekBarColor = [Link]("#80CBC4");
int SeekBarProgressColor = [Link]("#80CBC4");
int CheckBoxColor = [Link]("#80CBC4");
int RadioColor = [Link]("#FFFFFF");
String NumberTxtColor = "#41c300";
//********************************************************************//
RelativeLayout mCollapsed, mRootContainer;
LinearLayout mExpanded, mods, mSettings, mCollapse;
[Link] scrlLLExpanded, scrlLL;
WindowManager mWindowManager;
[Link] vmParams;
ImageView startimage;
FrameLayout rootFrame;
ScrollView scrollView;
boolean stopChecking, overlayRequired;
Context getContext;
//initialize methods from the native library
native void Init(Context context, TextView title, TextView subTitle);
native String Icon();
native String IconWebViewData();
native String[] GetFeatureList();
native String[] SettingsList();
native boolean IsGameLibLoaded();
//Here we write the code for our Menu
// Reference: [Link]
like-facebook-chat-head/
public Menu(Context context) {
getContext = context;
[Link] = context;
rootFrame = new FrameLayout(context); // Global markup
[Link](onTouchListener());
mRootContainer = new RelativeLayout(context); // Markup on which two
markups of the icon and the menu itself will be placed
mCollapsed = new RelativeLayout(context); // Markup of the icon (when the
menu is minimized)
[Link]([Link]);
[Link](ICON_ALPHA);
//********** The box of the mod menu **********
mExpanded = new LinearLayout(context); // Menu markup (when the menu is
expanded)
[Link]([Link]);
[Link](MENU_BG_COLOR);
[Link]([Link]);
// [Link](1, 1, 1, 1); //So borders would be visible
[Link](new [Link](dp(MENU_WIDTH),
WRAP_CONTENT));
GradientDrawable gdMenuBody = new GradientDrawable();
[Link](MENU_CORNER); //Set corner
[Link](MENU_BG_COLOR); //Set background color
[Link](8, [Link]("#000000")); //Set border
//[Link](gdMenuBody); //Apply GradientDrawable to it
try {
InputStream ims = [Link]().open("[Link]");
Drawable d = [Link](ims, null);
[Link](d);
} catch(IOException ex) {
//********** The icon to open mod menu **********
startimage = new ImageView(context);
[Link](new [Link](WRAP_CONTENT,
WRAP_CONTENT));
int applyDimension = (int) [Link](1, ICON_SIZE,
[Link]().getDisplayMetrics()); //Icon size
[Link]().height = applyDimension;
[Link]().width = applyDimension;
//[Link]();
[Link]([Link].FIT_XY);
byte[] decode = [Link](Icon(), 0);
[Link]([Link](decode, 0,
[Link]));
(([Link]) [Link]()).topMargin =
convertDipToPixels(10);
//Initialize event handlers for buttons, etc.
[Link](onTouchListener());
[Link](new [Link]() {
public void onClick(View view) {
[Link]([Link]);
[Link]([Link]);
}
});
//********** The icon in Webview to open mod menu **********
WebView wView = new WebView(context); //Icon size width=\"50\"
height=\"50\"
[Link](new [Link](WRAP_CONTENT,
WRAP_CONTENT));
int applyDimension2 = (int) [Link](1, ICON_SIZE,
[Link]().getDisplayMetrics()); //Icon size
[Link]().height = applyDimension2;
[Link]().width = applyDimension2;
[Link]("<html>" +
"<head></head>" +
"<body style=\"margin: 0; padding: 0\">" +
"<img src=\"" + IconWebViewData() + "\" width=\"" + ICON_SIZE + "\"
height=\"" + ICON_SIZE + "\" >" +
"</body>" +
"</html>", "text/html", "utf-8");
[Link](0x00000000); //Transparent
[Link](ICON_ALPHA);
[Link]().setAppCacheEnabled(true);
[Link](onTouchListener());
//********** Settings icon **********
TextView settings = new TextView(context); //Android 5 can't show ⚙,
instead show other icon instead
[Link]([Link].SDK_INT >=
[Link].VERSION_CODES.M ? "⚙" : "\uD83D\uDD27");
[Link](TEXT_COLOR);
[Link](Typeface.DEFAULT_BOLD);
[Link](20.0f);
[Link] rlsettings = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](ALIGN_PARENT_RIGHT);
[Link](rlsettings);
[Link](new [Link]() {
boolean settingsOpen;
@Override
public void onClick(View v) {
try {
settingsOpen = !settingsOpen;
if (settingsOpen) {
[Link](mods);
[Link](mSettings);
[Link](0, 0);
} else {
[Link](mSettings);
[Link](mods);
}
} catch (IllegalStateException e) {
}
}
});
//********** Settings **********
mSettings = new LinearLayout(context);
[Link]([Link]);
featureList(SettingsList(), mSettings);
//********** Title **********
RelativeLayout titleText = new RelativeLayout(context);
[Link](10, 5, 10, 5);
[Link](16);
TextView title = new TextView(context);
[Link](TEXT_COLOR);
[Link](18.0f);
[Link]([Link]);
[Link] rl = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](RelativeLayout.CENTER_HORIZONTAL);
[Link](rl);
//********** Sub title **********
TextView subTitle = new TextView(context);
[Link]([Link]);
[Link](-1);
[Link](true);
[Link](true);
[Link](TEXT_COLOR);
[Link](10.0f);
[Link]([Link]);
[Link](0, 0, 0, 5);
//********** Mod menu feature list **********
scrollView = new ScrollView(context);
//Auto size. To set size manually, change the width and height example 500,
500
scrlLL = new [Link](MATCH_PARENT, dp(MENU_HEIGHT));
scrlLLExpanded = new
[Link]([Link]());
[Link] = 1.0f;
[Link]([Link] ? scrlLLExpanded :
scrlLL);
[Link](MENU_FEATURE_BG_COLOR);
mods = new LinearLayout(context);
[Link]([Link]);
//********** RelativeLayout for buttons **********
RelativeLayout relativeLayout = new RelativeLayout(context);
[Link](10, 3, 10, 3);
[Link]([Link]);
//********** Hide/Kill button **********
[Link] lParamsHideBtn = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](ALIGN_PARENT_LEFT);
Button hideBtn = new Button(context);
[Link](lParamsHideBtn);
[Link]([Link]);
[Link]("HIDE/KILL");
[Link](TEXT_COLOR);
[Link](new [Link]() {
public void onClick(View view) {
[Link]([Link]);
[Link](0);
[Link]([Link]);
[Link]([Link](), "Icon hidden. Remember the hidden
icon position", Toast.LENGTH_LONG).show();
}
});
[Link](new [Link]() {
public boolean onLongClick(View view) {
[Link]([Link](), "Menu killed",
Toast.LENGTH_LONG).show();
[Link](mRootContainer);
[Link](rootFrame);
return false;
}
});
//********** Close button **********
[Link] lParamsCloseBtn = new
[Link](WRAP_CONTENT, WRAP_CONTENT);
[Link](ALIGN_PARENT_RIGHT);
Button closeBtn = new Button(context);
[Link](lParamsCloseBtn);
[Link]([Link]);
[Link]("MINIMIZE");
[Link](TEXT_COLOR);
[Link](new [Link]() {
public void onClick(View view) {
[Link]([Link]);
[Link](ICON_ALPHA);
[Link]([Link]);
}
});
//********** Adding view components **********
[Link](mCollapsed);
[Link](mExpanded);
if (IconWebViewData() != null) {
[Link](wView);
} else {
[Link](startimage);
}
[Link](title);
[Link](settings);
[Link](titleText);
[Link](subTitle);
[Link](mods);
[Link](scrollView);
[Link](hideBtn);
[Link](closeBtn);
[Link](relativeLayout);
Init(context, title, subTitle);
}
public void ShowMenu() {
[Link](mRootContainer);
final Handler handler = new Handler();
[Link](new Runnable() {
boolean viewLoaded = false;
@Override
public void run() {
//If the save preferences is enabled, it will check if game lib is
loaded before starting menu
//Comment the if-else code out except startService if you want to
run the app and test preferences
if ([Link] && !IsGameLibLoaded() && !stopChecking) {
if (!viewLoaded) {
Category(mods, "Save preferences was been enabled. Waiting
for game lib to be loaded...\n\nForce load menu may not apply mods instantly. You
would need to reactivate them again");
Button(mods, -100, "Force load menu");
viewLoaded = true;
}
[Link](this, 600);
} else {
[Link]();
featureList(GetFeatureList(), mods);
}
}
}, 500);
}
@SuppressLint("WrongConstant")
public void SetWindowManagerWindowService() {
//Variable to check later if the phone supports Draw over other apps
permission
int iparams = [Link].SDK_INT >= [Link].VERSION_CODES.O ?
2038 : 2002;
vmParams = new [Link](WRAP_CONTENT, WRAP_CONTENT,
iparams, 8, -3);
//params = new
[Link]([Link].LAST_APPLICATION_WINDOW, 8, -
3);
[Link] = 51;
vmParams.x = POS_X;
vmParams.y = POS_Y;
mWindowManager = (WindowManager)
[Link](getContext.WINDOW_SERVICE);
[Link](rootFrame, vmParams);
overlayRequired = true;
}
@SuppressLint("WrongConstant")
public void SetWindowManagerActivity() {
vmParams = new [Link](
[Link].WRAP_CONTENT,
[Link].WRAP_CONTENT,
POS_X,//initialX
POS_Y,//initialy
[Link].TYPE_APPLICATION,
[Link].FLAG_NOT_FOCUSABLE |
[Link].FLAG_LAYOUT_IN_OVERSCAN |
[Link].FLAG_LAYOUT_IN_SCREEN |
[Link].FLAG_SPLIT_TOUCH,
[Link]
);
[Link] = 51;
vmParams.x = POS_X;
vmParams.y = POS_Y;
mWindowManager = ((Activity) getContext).getWindowManager();
[Link](rootFrame, vmParams);
}
private [Link] onTouchListener() {
return new [Link]() {
final View collapsedView = mCollapsed;
final View expandedView = mExpanded;
private float initialTouchX, initialTouchY;
private int initialX, initialY;
public boolean onTouch(View view, MotionEvent motionEvent) {
switch ([Link]()) {
case MotionEvent.ACTION_DOWN:
initialX = vmParams.x;
initialY = vmParams.y;
initialTouchX = [Link]();
initialTouchY = [Link]();
return true;
case MotionEvent.ACTION_UP:
int rawX = (int) ([Link]() - initialTouchX);
int rawY = (int) ([Link]() - initialTouchY);
[Link](1f);
[Link](1f);
//The check for Xdiff <10 && YDiff< 10 because sometime
elements moves a little while clicking.
//So that is click event.
if (rawX < 10 && rawY < 10 && isViewCollapsed()) {
//When user clicks on the image view of the collapsed
layout,
//visibility of the collapsed layout will be changed to
"[Link]"
//and expanded view will become visible.
try {
[Link]([Link]);
[Link]([Link]);
} catch (NullPointerException e) {
}
}
return true;
case MotionEvent.ACTION_MOVE:
[Link](0.5f);
[Link](0.5f);
//Calculate the X and Y coordinates of the view.
vmParams.x = initialX + ((int) ([Link]() -
initialTouchX));
vmParams.y = initialY + ((int) ([Link]() -
initialTouchY));
//Update the layout with new X & Y coordinate
[Link](rootFrame, vmParams);
return true;
default:
return false;
}
}
};
}
private void featureList(String[] listFT, LinearLayout linearLayout) {
//Currently looks messy right now. Let me know if you have improvements
int featNum, subFeat = 0;
LinearLayout llBak = linearLayout;
for (int i = 0; i < [Link]; i++) {
boolean switchedOn = false;
//Log.i("featureList", listFT[i]);
String feature = listFT[i];
if ([Link]("_True")) {
switchedOn = true;
feature = [Link]("_True", "");
}
linearLayout = llBak;
if ([Link]("CollapseAdd_")) {
//if (collapse != null)
linearLayout = mCollapse;
feature = [Link]("CollapseAdd_", "");
}
String[] str = [Link]("_");
//Assign feature number
if ([Link](str[0]) || str[0].matches("-[0-9]*")) {
featNum = [Link](str[0]);
feature = [Link](str[0] + "_", "");
subFeat++;
} else {
//Subtract feature number. We don't want to count ButtonLink,
Category, RichTextView and RichWebView
featNum = i - subFeat;
}
String[] strSplit = [Link]("_");
switch (strSplit[0]) {
case "Toggle":
Switch(linearLayout, featNum, strSplit[1], switchedOn);
break;
case "SeekBar":
SeekBar(linearLayout, featNum, strSplit[1],
[Link](strSplit[2]), [Link](strSplit[3]));
break;
case "Button":
Button(linearLayout, featNum, strSplit[1]);
break;
case "ButtonOnOff":
ButtonOnOff(linearLayout, featNum, strSplit[1], switchedOn);
break;
case "Spinner":
TextView(linearLayout, strSplit[1]);
Spinner(linearLayout, featNum, strSplit[1], strSplit[2]);
break;
case "InputText":
InputText(linearLayout, featNum, strSplit[1]);
break;
case "InputValue":
if ([Link] == 3)
InputNum(linearLayout, featNum, strSplit[2],
[Link](strSplit[1]));
if ([Link] == 2)
InputNum(linearLayout, featNum, strSplit[1], 0);
break;
case "CheckBox":
CheckBox(linearLayout, featNum, strSplit[1], switchedOn);
break;
case "RadioButton":
RadioButton(linearLayout, featNum, strSplit[1], strSplit[2]);
break;
case "Collapse":
Collapse(linearLayout, strSplit[1], switchedOn);
subFeat++;
break;
case "ButtonLink":
subFeat++;
ButtonLink(linearLayout, strSplit[1], strSplit[2]);
break;
case "Category":
subFeat++;
Category(linearLayout, strSplit[1]);
break;
case "RichTextView":
subFeat++;
TextView(linearLayout, strSplit[1]);
break;
case "RichWebView":
subFeat++;
WebTextView(linearLayout, strSplit[1]);
break;
}
}
}
private void Switch(LinearLayout linLayout, final int featNum, final String
featName, boolean swiOn) {
final Switch switchR = new Switch(getContext);
final GradientDrawable THUMB = new GradientDrawable();
[Link](1);
[Link](40,40);
final GradientDrawable TRACK = new GradientDrawable();
[Link](100);
[Link](20,20);
boolean isOn = [Link](featName, featNum, swiOn);
if(isOn){
[Link](BTN_COLOR);
[Link](2,BTN_COLOR);
[Link]([Link]("#AB143568"));
[Link](2, BTN_COLOR);
}
else{
[Link]([Link]);
[Link](2,BTN_COLOR);
[Link]([Link](200,255,255,255));
[Link](2, BTN_COLOR);
}
[Link](featName);
[Link](TEXT_COLOR_2);
[Link](THUMB);
[Link](TRACK);
[Link](10, 5, 0, 5);
[Link]([Link](featName, featNum, swiOn));
[Link](new
[Link]() {
public void onCheckedChanged(CompoundButton compoundButton, boolean
bool) {
[Link](featName, featNum, bool);
if(bool){
[Link](BTN_COLOR);
[Link](2,BTN_COLOR);
[Link]([Link]("#AB143568"));
[Link](2, BTN_COLOR);
}
else{
[Link]([Link]);
[Link](2,BTN_COLOR);
[Link]([Link](200,255,255,255));
[Link](2, BTN_COLOR);
}
switch (featNum) {
case -1: //Save perferences
[Link]([Link]()).writeBoolean(-1,
bool);
if (bool == false)
[Link]([Link]()).clear(); //Clear
perferences if switched off
break;
case -3:
[Link] = bool;
[Link](bool ? scrlLLExpanded : scrlLL);
break;
}
}
});
[Link](switchR);
}
private void SeekBar(LinearLayout linLayout, final int featNum, final String
featName, final int min, int max) {
int loadedProg = [Link](featName, featNum);
LinearLayout linearLayout = new LinearLayout(getContext);
[Link](10, 5, 0, 5);
[Link]([Link]);
[Link]([Link]);
final TextView textView = new TextView(getContext);
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + ((loadedProg == 0) ? min : loadedProg)));
[Link](TEXT_COLOR_2);
SeekBar seekBar = new SeekBar(getContext);
[Link](25, 10, 35, 10);
[Link](max);
if ([Link].SDK_INT >= Build.VERSION_CODES.O)
[Link](min); //setMin for Oreo and above
[Link]((loadedProg == 0) ? min : loadedProg);
[Link]().setColorFilter(SeekBarColor, [Link].SRC_ATOP);
[Link]().setColorFilter(SeekBarProgressColor,
[Link].SRC_ATOP);
[Link](new [Link]() {
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onStopTrackingTouch(SeekBar seekBar) {
}
public void onProgressChanged(SeekBar seekBar, int i, boolean z) {
//if progress is greater than minimum, don't go below. Else, set
progress
[Link](i < min ? min : i);
[Link](featName, featNum, i < min ? min : i);
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + (i < min ? min : i)));
}
});
[Link](textView);
[Link](seekBar);
[Link](linearLayout);
}
private void Button(LinearLayout linLayout, final int featNum, final String
featName) {
final Button button = new Button(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
[Link](layoutParams);
[Link](TEXT_COLOR_2);
[Link](false); //Disable caps to support html
[Link]([Link](featName));
[Link](BTN_COLOR);
[Link](new [Link]() {
public void onClick(View v) {
switch (featNum) {
case -6:
[Link](mSettings);
[Link](mods);
break;
case -100:
stopChecking = true;
break;
}
[Link](featName, featNum, 0);
}
});
[Link](button);
}
private void ButtonLink(LinearLayout linLayout, final String featName, final
String url) {
final Button button = new Button(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
[Link](layoutParams);
[Link](false); //Disable caps to support html
[Link](TEXT_COLOR_2);
[Link]([Link](featName));
[Link](BTN_COLOR);
[Link](new [Link]() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
[Link](Intent.FLAG_ACTIVITY_NEW_TASK);
[Link]([Link](url));
[Link](intent);
}
});
[Link](button);
}
private void ButtonOnOff(LinearLayout linLayout, final int featNum, String
featName, boolean switchedOn) {
final Button button = new Button(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
[Link](layoutParams);
[Link](TEXT_COLOR_2);
[Link](false); //Disable caps to support html
final String finalfeatName = [Link]("OnOff_", "");
boolean isOn = [Link](featName, featNum, switchedOn);
if (isOn) {
[Link]([Link](finalfeatName + ": ON"));
[Link](BtnON);
isOn = false;
} else {
[Link]([Link](finalfeatName + ": OFF"));
[Link](BtnOFF);
isOn = true;
}
final boolean finalIsOn = isOn;
[Link](new [Link]() {
boolean isOn = finalIsOn;
public void onClick(View v) {
[Link](finalfeatName, featNum, isOn);
//Log.d(TAG, finalfeatName + " " + featNum + " " + isActive2);
if (isOn) {
[Link]([Link](finalfeatName + ": ON"));
[Link](BtnON);
isOn = false;
} else {
[Link]([Link](finalfeatName + ": OFF"));
[Link](BtnOFF);
isOn = true;
}
}
});
[Link](button);
}
private void Spinner(LinearLayout linLayout, final int featNum, final String
featName, final String list) {
Log.d(TAG, "spinner " + featNum + " " + featName + " " + list);
final List<String> lists = new
LinkedList<>([Link]([Link](",")));
// Create another LinearLayout as a workaround to use it as a background
// to keep the down arrow symbol. No arrow symbol if setBackgroundColor set
LinearLayout linearLayout2 = new LinearLayout(getContext);
[Link] layoutParams2 = new
[Link](MATCH_PARENT, WRAP_CONTENT);
[Link](7, 2, 7, 2);
[Link]([Link]);
[Link](BTN_COLOR);
[Link](layoutParams2);
final Spinner spinner = new Spinner(getContext, Spinner.MODE_DROPDOWN);
[Link](layoutParams2);
[Link]().setColorFilter(1, [Link].SRC_ATOP);
//trick to show white down arrow color
//Creating the ArrayAdapter instance having the list
ArrayAdapter aa = new ArrayAdapter(getContext,
[Link].simple_spinner_dropdown_item, lists);
[Link]([Link].simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner'
[Link](aa);
[Link]([Link](featName, featNum));
[Link](new [Link]()
{
@Override
public void onItemSelected(AdapterView<?> parentView, View
selectedItemView, int position, long id) {
[Link]([Link]().toString(),
featNum, position);
((TextView) [Link](0)).setTextColor(TEXT_COLOR_2);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
[Link](spinner);
[Link](linearLayout2);
}
private void InputNum(LinearLayout linLayout, final int featNum, final String
featName, final int maxValue) {
LinearLayout linearLayout = new LinearLayout(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
final Button button = new Button(getContext);
int num = [Link](featName, featNum);
[Link]([Link](featName + ": <font color='" + NumberTxtColor
+ "'>" + ((num == 0) ? 1 : num) + "</font>"));
[Link](false);
[Link](layoutParams);
[Link](BTN_COLOR);
[Link](TEXT_COLOR_2);
[Link](new [Link]() {
@Override
public void onClick(View view) {
[Link] alertName = new
[Link](getContext);
final EditText editText = new EditText(getContext);
if (maxValue != 0)
[Link]("Max value: " + maxValue);
[Link](InputType.TYPE_CLASS_NUMBER);
[Link]([Link]("0123456789-"));
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new [Link](10);
[Link](FilterArray);
[Link](new [Link]()
{
@Override
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
if (hasFocus) {
[Link](InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
} else {
[Link](InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
[Link]();
[Link]("Input number");
[Link](editText);
LinearLayout layoutName = new LinearLayout(getContext);
[Link]([Link]);
[Link](editText); // displays the user input bar
[Link](layoutName);
[Link]("OK", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
int num;
try {
num =
[Link]([Link]([Link]().toString()) ? "0" :
[Link]().toString());
if (maxValue != 0 && num >= maxValue)
num = maxValue;
} catch (NumberFormatException ex) {
if (maxValue != 0)
num = maxValue;
else
num = 2147483640;
}
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + num + "</font>"));
[Link](featName, featNum, num);
[Link](false);
}
});
[Link]("Cancel", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
// [Link](); // closes dialog
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
[Link](InputMethodManager.HIDE_IMPLICIT_ONLY,
0);
}
});
if (overlayRequired) {
AlertDialog dialog = [Link](); // display the dialog
[Link]().setType([Link].SDK_INT >= 26 ? 2038 :
2002);
[Link]();
} else {
[Link]();
}
}
});
[Link](button);
[Link](linearLayout);
}
private void InputText(LinearLayout linLayout, final int featNum, final String
featName) {
LinearLayout linearLayout = new LinearLayout(getContext);
[Link] layoutParams = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](7, 5, 7, 5);
final Button button = new Button(getContext);
String string = [Link](featName, featNum);
[Link]([Link](featName + ": <font color='" + NumberTxtColor
+ "'>" + string + "</font>"));
[Link](false);
[Link](layoutParams);
[Link](BTN_COLOR);
[Link](TEXT_COLOR_2);
[Link](new [Link]() {
@Override
public void onClick(View view) {
[Link] alertName = new
[Link](getContext);
final EditText editText = new EditText(getContext);
[Link](new [Link]()
{
@Override
public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
if (hasFocus) {
[Link](InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
} else {
[Link](InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
[Link]();
[Link]("Input text");
[Link](editText);
LinearLayout layoutName = new LinearLayout(getContext);
[Link]([Link]);
[Link](editText); // displays the user input bar
[Link](layoutName);
[Link]("OK", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
String str = [Link]().toString();
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + str + "</font>"));
[Link](featName, featNum, str);
[Link](false);
}
});
[Link]("Cancel", new
[Link]() {
public void onClick(DialogInterface dialog, int whichButton) {
//[Link](); // closes dialog
InputMethodManager imm = (InputMethodManager)
[Link](getContext.INPUT_METHOD_SERVICE);
[Link](InputMethodManager.HIDE_IMPLICIT_ONLY,
0);
}
});
if (overlayRequired) {
AlertDialog dialog = [Link](); // display the dialog
[Link]().setType([Link].SDK_INT >= 26 ? 2038 :
2002);
[Link]();
} else {
[Link]();
}
}
});
[Link](button);
[Link](linearLayout);
}
private void CheckBox(LinearLayout linLayout, final int featNum, final String
featName, boolean switchedOn) {
final CheckBox checkBox = new CheckBox(getContext);
[Link](featName);
[Link](TEXT_COLOR_2);
if ([Link].SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
[Link]([Link](CheckBoxColor));
[Link]([Link](featName, featNum,
switchedOn));
[Link](new
[Link]() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if ([Link]()) {
[Link](featName, featNum, isChecked);
} else {
[Link](featName, featNum, isChecked);
}
}
});
[Link](checkBox);
}
private void RadioButton(LinearLayout linLayout, final int featNum, String
featName, final String list) {
//Credit: LoraZalora
final List<String> lists = new
LinkedList<>([Link]([Link](",")));
final TextView textView = new TextView(getContext);
[Link](featName + ":");
[Link](TEXT_COLOR_2);
final RadioGroup radioGroup = new RadioGroup(getContext);
[Link](10, 5, 10, 5);
[Link]([Link]);
[Link](textView);
for (int i = 0; i < [Link](); i++) {
final RadioButton Radioo = new RadioButton(getContext);
final String finalfeatName = featName, radioName = [Link](i);
[Link] first_radio_listener = new [Link]()
{
public void onClick(View v) {
[Link]([Link](finalfeatName + ": <font
color='" + NumberTxtColor + "'>" + radioName));
[Link](finalfeatName, featNum,
[Link](Radioo));
}
};
[Link]([Link](i));
[Link]([Link](i));
[Link]([Link]);
if ([Link].SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
[Link]([Link](RadioColor));
[Link](first_radio_listener);
[Link](Radioo);
}
int index = [Link](featName, featNum);
if (index > 0) { //Preventing it to get an index less than 1. below 1 =
null = crash
[Link]([Link](featName + ": <font color='" +
NumberTxtColor + "'>" + [Link](index - 1)));
((RadioButton) [Link](index)).setChecked(true);
}
[Link](radioGroup);
}
private void Collapse(LinearLayout linLayout, final String text, final boolean
expanded) {
[Link] layoutParamsLL = new
[Link](MATCH_PARENT, MATCH_PARENT);
[Link](0, 5, 0, 0);
LinearLayout collapse = new LinearLayout(getContext);
[Link](layoutParamsLL);
[Link](16);
[Link]([Link]);
final LinearLayout collapseSub = new LinearLayout(getContext);
[Link](16);
[Link](0, 5, 0, 5);
[Link]([Link]);
[Link]([Link]("#222D38"));
[Link]([Link]);
mCollapse = collapseSub;
final TextView textView = new TextView(getContext);
[Link](CategoryBG);
[Link]("▽ " + text + " ▽");
[Link]([Link]);
[Link](TEXT_COLOR_2);
[Link](null, [Link]);
[Link](0, 20, 0, 20);
if (expanded) {
[Link]([Link]);
[Link]("△ " + text + " △");
}
[Link](new [Link]() {
boolean isChecked = expanded;
@Override
public void onClick(View v) {
boolean z = !isChecked;
isChecked = z;
if (z) {
[Link]([Link]);
[Link]("△ " + text + " △");
return;
}
[Link]([Link]);
[Link]("▽ " + text + " ▽");
}
});
[Link](textView);
[Link](collapseSub);
[Link](collapse);
}
private void Category(LinearLayout linLayout, String text) {
TextView textView = new TextView(getContext);
[Link](CategoryBG);
[Link]([Link](text));
[Link]([Link]);
[Link](TEXT_COLOR_2);
[Link](null, [Link]);
[Link](0, 5, 0, 5);
[Link](textView);
}
private void TextView(LinearLayout linLayout, String text) {
TextView textView = new TextView(getContext);
[Link]([Link](text));
[Link](TEXT_COLOR_2);
[Link](10, 5, 10, 5);
[Link](textView);
}
private void WebTextView(LinearLayout linLayout, String text) {
WebView wView = new WebView(getContext);
[Link](text, "text/html", "utf-8");
[Link](0x00000000); //Transparent
[Link](0, 5, 0, 5);
[Link]().setAppCacheEnabled(false);
[Link](wView);
}
private boolean isViewCollapsed() {
return rootFrame == null || [Link]() == [Link];
}
//For our image a little converter
private int convertDipToPixels(int i) {
return (int) ((((float) i) *
[Link]().getDisplayMetrics().density) + 0.5f);
}
private int dp(int i) {
return (int) [Link](TypedValue.COMPLEX_UNIT_DIP, (float)
i, [Link]().getDisplayMetrics());
}
public void setVisibility(int view) {
if (rootFrame != null) {
[Link](view);
}
}
public void onDestroy() {
if (rootFrame != null) {
[Link](rootFrame);
}
}
}