first release

This commit is contained in:
Epic Studios 2023-11-11 07:19:43 +02:00
parent 2b653cf650
commit 173a2ef089
25 changed files with 963 additions and 909 deletions

6
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -1,6 +1,7 @@
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
}
android {
@ -43,19 +44,21 @@ android {
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.navigation:navigation-fragment:2.5.3'
implementation 'androidx.navigation:navigation-ui:2.5.3'
implementation 'androidx.navigation:navigation-fragment:2.7.5'
implementation 'androidx.navigation:navigation-ui:2.7.5'
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation platform('com.google.firebase:firebase-bom:32.3.1')
implementation 'com.google.firebase:firebase-analytics'
implementation("com.google.firebase:firebase-auth")
implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.android.gms:play-services-auth:20.7.0")
implementation 'com.google.android.gms:play-services-ads:22.4.0'
implementation 'com.google.android.gms:play-services-ads:22.5.0'
implementation 'com.airbnb.android:lottie:6.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

View file

@ -2,9 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.epicstudios.vectras"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0">
android:installLocation="auto">
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
android:minSdkVersion="30"
@ -85,7 +83,6 @@
<activity
android:name=".PostActivity"
android:exported="true"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:screenOrientation="portrait" />
<activity
@ -98,7 +95,6 @@
android:name="com.epicstudios.vectras.VectrasSDLActivity"
class="com.epicstudios.vectras.VectrasSDLActivityToolbar"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:theme="@style/Theme.FullScreen"

View file

@ -11,9 +11,13 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.Html;
import android.util.Log;
@ -29,6 +33,8 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.epicstudios.vectras.Config;
import com.epicstudios.vectras.MainRoms.AdapterMainRoms;
import com.epicstudios.vectras.MainRoms.DataMainRoms;
import com.epicstudios.vectras.Roms.AdapterRoms;
import com.epicstudios.vectras.Roms.DataRoms;
import com.epicstudios.vectras.logger.VectrasStatus;
@ -303,25 +309,13 @@ public class FirstActivity extends AppCompatActivity {
public static final String CREDENTIAL_SHARED_PREF = "settings_prefs";
private void startIconDownload() {
String url = selectedIcon;
new DownloadIconAsync().execute(url);
new DownloadsImage().execute(selectedIcon);
}
public void onFirstStartup() {
public void onFirstStartup() {
if (selected) {
if (FileUtils.fileValid(activity, Config.maindirpath+selectedPath)) {
SharedPreferences credentials = activity.getSharedPreferences(CREDENTIAL_SHARED_PREF, Context.MODE_PRIVATE);
File path = new File(Config.basefiledir);
File file = new File(path, "config_path.txt");
File file2 = new File(path, "config_extra.txt");
FileUtils.writeToFile(Config.maindirpath + selectedPath, file, activity);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
FileUtils.writeToFile(selectedExtra, file2, activity);
}
}, 500);
ProgressDialog mProgressDialog = new ProgressDialog(this, R.style.MainDialogTheme);
mProgressDialog.setMessage("Data Setup");
mProgressDialog.setMessage("Please Wait...");
@ -333,20 +327,56 @@ public class FirstActivity extends AppCompatActivity {
editor.commit();
RomsJso obj = new RomsJso();
startIconDownload();
obj.makeJSONObject(selectedName, Config.maindirpath+"icons/"+selectedPath.replace(".IMG", ".png"), selectedPath, selectedExtra);
final File jsonFile = new File(Config.maindirpath + "roms-data" + ".json");
try {
Writer output = null;
File jsonFile = new File(Config.maindirpath + selectedPath + ".json");
output = new BufferedWriter(new FileWriter(jsonFile));
output.write(obj.toString());
output.close();
Toast.makeText(getApplicationContext(), "Composition saved", Toast.LENGTH_LONG).show();
if (jsonFile.exists()) {
try {
List<DataMainRoms> data=new ArrayList<>();
JSONArray jArray = new JSONArray(FileUtils.readFromFile(MainActivity.activity, jsonFile));
} catch (Exception e) {
UIUtils.toastLong(activity, e.toString());
try {
// Extract data from json and store into ArrayList as class objects
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
DataMainRoms romsMainData = new DataMainRoms();
romsMainData.itemName= json_data.getString("imgName");
romsMainData.itemIcon= json_data.getString("imgIcon");
romsMainData.itemPath= json_data.getString("imgPath");
romsMainData.itemExtra= json_data.getString("imgExtra");
data.add(romsMainData);
}
} catch (JSONException e) {
Toast.makeText(MainActivity.activity, e.toString(), Toast.LENGTH_LONG).show();
}
JSONObject jsonObject = obj.makeJSONObject(selectedName, Config.maindirpath+"icons/"+selectedPath.replace(".IMG", ".jpg"), Config.maindirpath + selectedPath, selectedExtra);
jArray.put(jsonObject);
try {
Writer output = null;
output = new BufferedWriter(new FileWriter(jsonFile));
output.write(jArray.toString().replace("\\","").replace("//","/"));
output.close();
} catch (Exception e) {
UIUtils.toastLong(activity, e.toString());
}
} catch (JSONException e) {
UIUtils.toastLong(activity, e.toString());
}
} else {
JSONObject jsonObject = obj.makeJSONObject(selectedName, Config.maindirpath+"icons/"+selectedPath.replace(".IMG", ".jpg"), Config.maindirpath + selectedPath, selectedExtra);
JSONArray jsonArray = new JSONArray();
jsonArray.put(jsonObject);
try {
Writer output = null;
output = new BufferedWriter(new FileWriter(jsonFile));
output.write(jsonArray.toString().replace("\\","").replace("//","/"));
output.close();
} catch (Exception e) {
UIUtils.toastLong(activity, e.toString());
}
VectrasStatus.logInfo(String.format("Welcome to Vectras ♡"));
}
VectrasStatus.logInfo(String.format("Welcome to Vectras ♡"));
new Timer().schedule(new TimerTask() {
@Override
public void run() {
@ -405,11 +435,11 @@ public class FirstActivity extends AppCompatActivity {
if (requestCode == 0 && resultCode == RESULT_OK){
Uri content_describer = data.getData();
String selectedFilePath = getPath(content_describer);
if (selectedFilePath.endsWith(".vbi")) {
File selectedFilePath = new File(getPath(content_describer));
if (selectedFilePath.getName().equals(selectedPath.replace(".IMG", ".vbi"))) {
try {
unzip(selectedFilePath, Config.maindirpath);
unzip(selectedFilePath.toString(), Config.maindirpath);
} catch (IOException e) {
progressDialog.dismiss(); // Close Progress Dialog
UIUtils.toastLong(activity, e.toString());
@ -417,7 +447,7 @@ public class FirstActivity extends AppCompatActivity {
}
} else {
MainActivity.UIAlert("File not supported", "please use vailed '.vbi' file to continue.", activity);
MainActivity.UIAlert("File not supported", "please select "+selectedPath.replace(".IMG", ".vbi")+" file to continue.", activity);
}
}
@ -488,54 +518,57 @@ public class FirstActivity extends AppCompatActivity {
}
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
class DownloadIconAsync extends AsyncTask<String, String, String> {
class DownloadsImage extends AsyncTask<String, Void,Void>{
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}
@Override
protected String doInBackground(String... aurl) {
int count;
protected Void doInBackground(String... strings) {
URL url = null;
try {
URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();
url = new URL(strings[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
}
Bitmap bm = null;
try {
bm = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
int lenghtOfFile = conexion.getContentLength();
String fileName = URLUtil.guessFileName(selectedIcon,null,null);
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(Config.maindirpath+"icons/"+selectedPath.replace(".IMG", ".png"));
//Create Path to save Image
File path = new File(Config.maindirpath + "icons"); //Creates app specific folder
byte data[] = new byte[1024];
if(!path.exists()) {
path.mkdirs();
}
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress("" + (int) ((total * 100) / lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
File imageFile = new File(path, selectedPath.replace(".IMG", ".jpg")); // Imagename.png
FileOutputStream out = null;
try {
out = new FileOutputStream(imageFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try{
bm.compress(Bitmap.CompressFormat.PNG, 100, out); // Compress Image
out.flush();
out.close();
// Tell the media scanner about the new file so that it is
// immediately available to the user.
MediaScannerConnection.scanFile(activity,new String[] { imageFile.getAbsolutePath() }, null,new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
// Log.i("ExternalStorage", "Scanned " + path + ":");
// Log.i("ExternalStorage", "-> uri=" + uri);
}
});
} catch(Exception e) {
}
return null;
}
protected void onProgressUpdate(String... progress) {
}
@Override
protected void onPostExecute(String unused) {
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}

View file

@ -188,35 +188,6 @@ public class ControlsFragment extends Fragment {
SDLActivity.onNativeKeyDown(KeyEvent.KEYCODE_SPACE);
}
});
final Toolbar optionsTb = view.findViewById(R.id.toolbar);
optionsTb.setTitle(null);
optionsTb.inflateMenu(R.menu.sdl_menu);
// and finally set click listener
optionsTb.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if(id == R.id.shutdownItem) {
//VectrasSDLActivity.stopVM(VectrasSDLActivity.activity, false);
return true;
} else if (item.getItemId() == R.id.itemFitToScreen) {
//VectrasSDLActivity.setFitToScreen();
} else if (item.getItemId() == R.id.itemStretchToScreen) {
//VectrasSDLActivity.setStretchToScreen();
} else if (item.getItemId() == R.id.itemZoomIn) {
//VectrasSDLActivity.setZoomIn();
} else if (item.getItemId() == R.id.itemZoomOut) {
//VectrasSDLActivity.setZoomOut();
} else if (item.getItemId() == R.id.itemOneToOne) {
//VectrasSDLActivity.setOneToOne();
} else if (item.getItemId() == R.id.itemZoomable) {
//VectrasSDLActivity.setZoomable();
}
return false;
}
});
setHasOptionsMenu(true);
int loop =25;
JoystickView joystick = (JoystickView) view.findViewById(R.id.joyStick);
joystick.setOnMoveListener(new JoystickView.OnMoveListener() {
@ -456,20 +427,4 @@ public class ControlsFragment extends Fragment {
});
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
inflater.inflate(R.menu.sdl_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.shutdownItem) {
VectrasSDLActivity.stop();
}
return super.onOptionsItemSelected(item);
}
}

View file

@ -2,6 +2,7 @@ package com.epicstudios.vectras.Fragment;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
@ -13,19 +14,26 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.epicstudios.vectras.FirstActivity;
import com.epicstudios.vectras.MainRoms.AdapterMainRoms;
import com.epicstudios.vectras.MainRoms.DataMainRoms;
import com.epicstudios.vectras.R;
import com.epicstudios.vectras.Blog.AdapterBlog;
import com.epicstudios.vectras.Blog.DataBlog;
import com.epicstudios.vectras.Config;
import com.epicstudios.vectras.MainActivity;
import com.epicstudios.vectras.utils.FileUtils;
import com.epicstudios.vectras.utils.UIUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.InetAddress;
@ -44,12 +52,18 @@ public class HomeFragment extends Fragment {
View view;
private RecyclerView mRVBlog;
public static RecyclerView mRVBlog;
public static RecyclerView mRVMainRoms;
public static LinearLayout romsLayout;
private AdapterBlog mAdapter;
public static AdapterMainRoms mMainAdapter;
public MainActivity activity;
public String Data;
public static LinearLayout noConnectionLayout;
public SwipeRefreshLayout pullToRefresh;
public ImageView ivRomsManager;
public static JSONArray jArray;
public static List<DataMainRoms> data;
/*private ImageButton mStop;
private ImageButton mRestart;*/
@ -61,9 +75,12 @@ public class HomeFragment extends Fragment {
view = inflater.inflate(R.layout.home_fragment, container, false);
romsLayout = view.findViewById(R.id.romsLayout);
ivRomsManager = view.findViewById(R.id.ivRomsManager);
noConnectionLayout = view.findViewById(R.id.noConnectionLayout);
mRVBlog = view.findViewById(R.id.blogRv);
if (checkConnection(activity)) {
new AsyncLogin().execute();
noConnectionLayout.setVisibility(View.GONE);
@ -85,23 +102,40 @@ public class HomeFragment extends Fragment {
}
}
});
data=new ArrayList<>();
/*mStop = (ImageButton) view.findViewById(R.id.stopvm);
mStop.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
MainActivity.onStopButton(false);
}
});
mRestart = (ImageButton) view.findViewById(R.id.restartvm);
mRestart.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
MainActivity.onRestartButton();
}
});*/
try {
jArray = new JSONArray(FileUtils.readFromFile(MainActivity.activity, new File(Config.maindirpath
+ "roms-data.json")));
// Extract data from json and store into ArrayList as class objects
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
DataMainRoms romsMainData = new DataMainRoms();
romsMainData.itemName= json_data.getString("imgName");
romsMainData.itemIcon= json_data.getString("imgIcon");
romsMainData.itemPath= json_data.getString("imgPath");
romsMainData.itemExtra= json_data.getString("imgExtra");
data.add(romsMainData);
}
// Setup and Handover data to recyclerview
mRVMainRoms = (RecyclerView)view.findViewById(R.id.mRVMainRoms);
mMainAdapter = new AdapterMainRoms(MainActivity.activity, data);
mRVMainRoms.setAdapter(mMainAdapter);
mRVMainRoms.setLayoutManager(new LinearLayoutManager(MainActivity.activity));
} catch (JSONException e) {
Toast.makeText(MainActivity.activity, e.toString(), Toast.LENGTH_LONG).show();
}
ivRomsManager.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.activity, FirstActivity.class));
}
});
return view;
}

View file

@ -30,6 +30,8 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ScrollView;
import android.widget.TextView;
@ -116,9 +118,7 @@ public class MainActivity extends AppCompatActivity {
public ViewPager viewPager;
MenuItem prevMenuItem;
int pager_number = 2;
public static File fileImg = new File(Config.basefiledir+"config_path.txt");
public static String imgPath = FileUtils.readFromFile(activity, fileImg);
//Widgets
private boolean timeQuit = false;
private Object lockTime = new Object();
@ -137,13 +137,34 @@ public class MainActivity extends AppCompatActivity {
}
public void FAB_Click(View v) {
Thread thread = new Thread(new Runnable() {
/*Thread thread = new Thread(new Runnable() {
public void run() {
MainActivity.onStartButton();
}
});
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
thread.start();*/
if (HomeFragment.romsLayout.getVisibility() == View.GONE) {
Animation animation;
animation = AnimationUtils.loadAnimation(MainActivity.activity, R.anim.slide_from_left);
animation.setDuration(300);
HomeFragment.romsLayout.startAnimation(animation);
Animation animation2;
animation2 = AnimationUtils.loadAnimation(MainActivity.activity, R.anim.slide_from_top);
animation2.setDuration(300);
HomeFragment.mRVBlog.startAnimation(animation2);
HomeFragment.romsLayout.setVisibility(View.VISIBLE);
} else if (HomeFragment.romsLayout.getVisibility() == View.VISIBLE) {
Animation animation;
animation = AnimationUtils.loadAnimation(MainActivity.activity, R.anim.slide_to_left);
animation.setDuration(300);
HomeFragment.romsLayout.startAnimation(animation);
Animation animation2;
animation2 = AnimationUtils.loadAnimation(MainActivity.activity, R.anim.slide_from_top);
animation2.setDuration(300);
HomeFragment.mRVBlog.startAnimation(animation2);
HomeFragment.romsLayout.setVisibility(View.GONE);
}
}
public static void quit() {
@ -194,12 +215,6 @@ public class MainActivity extends AppCompatActivity {
NotificationManager notificationManager = (NotificationManager) getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
try {
prepareParams();
} catch (Exception ex) {
//UIUtils.toastLong(this, ex.getMessage());
}
setupStrictMode();
activity = this;
this.setContentView(R.layout.main);
@ -400,7 +415,6 @@ public class MainActivity extends AppCompatActivity {
output = "Starting VM...";
VectrasStatus.logInfo(String.format("Starting VM..."));
VectrasStatus.logInfo(String.format(imgPath));
vmexecutor.paused = 0;
startSDL();
@ -464,7 +478,7 @@ public class MainActivity extends AppCompatActivity {
t.start();
}
public void prepareParams() throws FileNotFoundException {
public static void prepareParams(String hda) throws FileNotFoundException {
String libqemu = null;
libqemu = FileUtils.getDataDir() + "/lib/libqemu-system-x86_64.so";
@ -478,17 +492,26 @@ public class MainActivity extends AppCompatActivity {
paramsList.add("-L");
paramsList.add(Config.basefiledir);
if (FileUtils.fileValid(activity, imgPath)) {
paramsList.add("-hda");
paramsList.add(imgPath);
} else {
UIUtils.toastLong(activity, "please set the correct downloaded os");
startActivity(new Intent(activity, FirstActivity.class));
return;
}
paramsList.add("-hda");
paramsList.add(hda);
paramsList.add("-hdb");
paramsList.add(Config.basefiledir+"harddisk/hdb.qcow2");
paramsList.add("-hdc");
paramsList.add(Config.basefiledir+"harddisk/hdc.qcow2");
paramsList.add("-hdd");
paramsList.add(Config.basefiledir+"harddisk/hdd.qcow2");
/*
paramsList.add("-cdrom");
paramsList.add(Config.basefiledir+"iso/cdrom.iso");
*/
paramsList.add("-boot");
paramsList.add("c");
paramsList.add("-k");
paramsList.add("en-us");
/*
paramsList.add("-drive");
String driveParams = "index=3";
@ -498,8 +521,8 @@ public class MainActivity extends AppCompatActivity {
driveParams += ",file=fat:";
driveParams += "rw:";
driveParams += Config.sharedFolder;
paramsList.add(driveParams);
*/
paramsList.add(driveParams);*/
params = (String[]) paramsList.toArray(new String[paramsList.size()]);
}
@ -531,12 +554,7 @@ public class MainActivity extends AppCompatActivity {
}
});
try {
prepareParams();
} catch (Exception ex) {
//UIUtils.toastLong(this, ex.getMessage());
}
AppBarLayout nnl_appbar = findViewById(R.id.nnl_appbar);
nnl_appbar.setExpanded(false);
mainToolbar = (Toolbar) findViewById(R.id.nnl_toolbar);
@ -609,7 +627,7 @@ public class MainActivity extends AppCompatActivity {
totalRam.setText("Total Memory: " + totalMemory + " MB");
usedRam.setText("Used Memory: " + usedMemory + " MB");
freeRam.setText("Free Memory: " + freeMemory + " MB");
freeRam.setText("Free Memory: " + freeMemory + " MB ("+RamInfo.vectrasMemory()+")");
}
});
}
@ -628,6 +646,9 @@ public class MainActivity extends AppCompatActivity {
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
UIAlert(getString(R.string.app_version), "This is only the first beta version of Vectras. Please note that the application is still in the experimental stage so that it is available in the best condition. Do not be lazy and support the application with your opinion.", activity);
//File extra = new File(Config.basefiledir+"config_extra.txt");
//String extraParams = FileUtils.readFromFile(MainActivity.activity, extra);

View file

@ -7,6 +7,8 @@ import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.webkit.URLUtil;
import android.widget.ImageButton;
import android.widget.ImageView;
@ -70,7 +72,6 @@ public class AdapterRoms extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
myHolder.textAvail.setText("availability: unavailable");
myHolder.textAvail.setTextColor(Color.RED);
myHolder.checkBox.setEnabled(false);
myHolder.cdItem.setEnabled(false);
}
if (current.itemAvail)
myHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@ -86,34 +87,6 @@ public class AdapterRoms extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
FirstActivity.selectedIcon = current.itemIcon;
}
});
//Glide.with(MainActivity.activity).load(current.itemIcon).into(myHolder.ivIcon);
if (current.itemAvail)
myHolder.cdItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (FileUtils.fileValid(FirstActivity.activity, Config.maindirpath + current.itemPath)) {
mSelectedItem = position;
notifyItemRangeChanged(0, data.size());
FirstActivity.selected = true;
FirstActivity.selectedPath = current.itemPath;
FirstActivity.selectedExtra = current.itemExtra;
} else {
AlertDialog ad;
ad = new AlertDialog.Builder(FirstActivity.activity, R.style.MainDialogTheme).create();
ad.setTitle(current.itemName + " Not found");
ad.setMessage(current.itemName + " Rom not found please download from our official website");
ad.setButton(Dialog.BUTTON_POSITIVE, "DOWNLAOD WEBSITE", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String gt = current.itemUrl;
Intent g = new Intent(Intent.ACTION_VIEW);
g.setData(Uri.parse(gt));
FirstActivity.activity.startActivity(g);
FirstActivity.activity.finish();
}
});
}
}
});
}
@ -125,7 +98,6 @@ public class AdapterRoms extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class MyHolder extends RecyclerView.ViewHolder {
CardView cdItem;
TextView textName, textAvail, textSize;
ImageView ivIcon;
@ -134,7 +106,6 @@ public class AdapterRoms extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
// create constructor to get widget reference
public MyHolder(View itemView) {
super(itemView);
cdItem = (CardView) itemView.findViewById(R.id.cdItem);
textName = (TextView) itemView.findViewById(R.id.textName);
ivIcon = (ImageView) itemView.findViewById(R.id.ivIcon);
textSize = (TextView) itemView.findViewById(R.id.textSize);

View file

@ -3,6 +3,7 @@ package com.epicstudios.vectras;
import static android.os.Build.VERSION.SDK_INT;
import android.Manifest;
import android.animation.ValueAnimator;
import android.app.Dialog;
import android.content.*;
import android.content.pm.*;
@ -16,6 +17,8 @@ import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.airbnb.lottie.LottieAnimationView;
import com.epicstudios.vectras.R;
import com.epicstudios.vectras.MainActivity;
import com.epicstudios.vectras.utils.UIUtils;
@ -113,8 +116,11 @@ public class SplashActivity extends AppCompatActivity implements Runnable {
intent.setData(uri);
startActivity(intent);
ad.cancel();
finish();
} else {
new Handler().postDelayed(this, 2000);
}
}
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(SplashActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

View file

@ -162,7 +162,7 @@ public class VectrasApp extends Application {
@Override
public void run() {
VectrasStatus.logError("<font color='red'>[E] "+e.getMessage()+"</font>");
VectrasStatus.logError("<font color='red'>[E] >"+ mContext.getApplicationContext().toString() +e.getMessage()+"</font>");
}
});
} else {

View file

@ -12,6 +12,8 @@ import com.epicstudios.vectras.utils.FileUtils;
import com.epicstudios.vectras.utils.RamInfo;
import com.epicstudios.vectras.utils.UIUtils;
import java.io.File;
import java.util.Arrays;
import android.os.Environment;
public class VMExecutor {
@ -30,7 +32,7 @@ public class VMExecutor {
private int height;
public static final File fileExtra = new File(Config.basefiledir + "config_extra.txt");
public static final String extraParams = FileUtils.readFromFile(MainActivity.activity, fileExtra);
public static String extraParams;
/**
* @throws Exception
@ -81,7 +83,7 @@ public class VMExecutor {
VectrasStatus.logInfo(String.format(" QEMU Params Error: "+extraParams));
return "error";
}
VectrasStatus.logInfo(String.format("QEMU PARAMS: "+extraParams+" -m "+ RamInfo.vectrasMemory()));
VectrasStatus.logInfo(String.format("QEMU PARAMS: "+ Arrays.toString(MainActivity.params) +extraParams+" -m "+ RamInfo.vectrasMemory()));
res = start(this.libqemu, MainActivity.params, extraParams+" -m "+ RamInfo.vectrasMemory(), paused, "VECTRAS");
} catch (Exception ex) {
ex.printStackTrace();

View file

@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"/>
android:duration="300"/>
<alpha
android:fromAlpha="0"
android:toAlpha="100"/>
</set>

View file

@ -2,4 +2,7 @@
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"/>
<alpha
android:fromAlpha="100"
android:toAlpha="0"/>
</set>

View file

@ -8,6 +8,11 @@
android:width="2dp"
android:color="#90000000" />
<corners android:radius="30dp" />
<padding
android:top="10dp"
android:bottom="10dp"
android:right="10dp"
android:left="10dp"/>
</shape>
</item>
@ -19,6 +24,11 @@
android:width="2dp"
android:color="#90000000" />
<corners android:radius="30dp" />
<padding
android:top="10dp"
android:bottom="10dp"
android:right="10dp"
android:left="10dp"/>
</shape>
</item>
<item>
@ -29,6 +39,11 @@
android:width="2dp"
android:color="#90000000" />
<corners android:radius="30dp" />
<padding
android:top="10dp"
android:bottom="10dp"
android:right="10dp"
android:left="10dp"/>
</shape>
</item>
</selector>

View file

@ -1,25 +1,16 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
android:orientation="vertical">
<LinearLayout
android:layout_width="85dp"
android:layout_height="85dp"
android:layout_gravity="center_vertical|center|center_horizontal"
android:background="@mipmap/ic_launcher"
android:orientation="horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center|center_horizontal"
android:fontFamily="sans-serif-smallcaps"
android:text="@string/app_name"
android:layout_margin="5dp"
android:textColor="#ffffffff"
android:textSize="15sp"
android:textStyle="bold" />
<com.airbnb.lottie.LottieAnimationView
android:layout_width="150dp"
android:layout_height="150dp"
android:id="@+id/animation_view"
app:lottie_rawRes="@raw/logo"
app:lottie_autoPlay="true"
app:lottie_loop="false"/>
</LinearLayout>

View file

@ -8,7 +8,8 @@
android:foreground="?android:attr/selectableItemBackground"
app:cardBackgroundColor="@color/main_dark"
app:cardCornerRadius="10dp"
app:cardUseCompatPadding="true" >
app:cardUseCompatPadding="true"
android:focusable="true">
<LinearLayout
android:layout_width="match_parent"

View file

@ -1,73 +1,77 @@
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cdItem"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/main_dark"
app:cardCornerRadius="10dp"
card_view:cardUseCompatPadding="true"
card_view:cardPreventCornerOverlap="false" >
<LinearLayout
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cdItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/ivIcon"
android:layout_width="84dp"
android:layout_height="84dp"
android:scaleType="centerCrop" />
android:layout_margin="10dp"
android:clipToPadding="false"
app:cardBackgroundColor="@color/colorPrimaryDark"
app:cardCornerRadius="10dp"
app:cardPreventCornerOverlap="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:orientation="vertical"
android:padding="10dp" >
android:orientation="horizontal">
<TextView
android:id="@+id/textName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="name"
android:textSize="20sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/ivIcon"
android:layout_width="85dp"
android:layout_height="85dp"
android:scaleType="centerCrop" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal" >
android:layout_weight="1.0"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/textSize"
android:layout_width="wrap_content"
android:id="@+id/textName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="size: "
android:maxLines="1"
android:layout_weight="1.0"
android:textSize="15sp" />
android:maxLines="1"
android:text="@string/name"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textAvail"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="availablity: "
android:maxLines="1"
android:textSize="10sp" />
android:orientation="horizontal">
<TextView
android:id="@+id/textSize"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:maxLines="1"
android:text="@string/size"
android:textSize="15sp" />
<TextView
android:id="@+id/textAvail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="@string/availablity"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
<RadioButton
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:buttonTint="@color/white"
android:clickable="true"
android:theme="@style/MyCheckboxTheme" />
</LinearLayout>
<RadioButton
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:theme="@style/MyCheckboxTheme"
android:layout_margin="10dp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</androidx.cardview.widget.CardView>
</RelativeLayout>

View file

@ -1,45 +1,20 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:alpha="0.5">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/gamepadLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:orientation="horizontal" >
<include layout="@layout/gamepad_mode_layout" />
</LinearLayout>
<LinearLayout
android:id="@+id/desktopLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible"
android:orientation="horizontal" >
<include layout="@layout/desktop_mode_layout" />
</LinearLayout>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_gravity="right"
android:orientation="vertical"
android:padding="10dp" >
android:padding="10dp">
<TextView
android:id="@+id/ramTxt"
@ -62,9 +37,567 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="0dp"
android:layout_weight="1.0"
android:orientation="horizontal" />
android:orientation="horizontal">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/gamepadLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center_horizontal"
android:layout_margin="50dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:id="@+id/leftBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Left" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:id="@+id/upBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Up" />
</LinearLayout>
<LinearLayout
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/downBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Down" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:id="@+id/rightBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Right" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<com.epicstudios.vectras.widgets.JoystickView
android:id="@+id/joyStick"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="bottom|left"
android:layout_marginBottom="48dp"
android:alpha="0.5"
custom:JV_backgroundColor="#44000000"
custom:JV_borderColor="#88000000"
custom:JV_borderWidth="4dp"
custom:JV_buttonColor="#99000000"
custom:JV_buttonSizeRatio="15%"
custom:JV_fixedCenter="false" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="bottom|center_vertical|left"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_margin="50dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:id="@+id/BtnSpace"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Space" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:id="@+id/BtnF"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="F" />
</LinearLayout>
<LinearLayout
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/BtnShift"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Shift" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:id="@+id/Btn0"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="0" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/desktopLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="horizontal"
android:visibility="visible">
<ScrollView
android:layout_width="92dp"
android:layout_height="1056dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/escBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ESC" />
</LinearLayout>
<LinearLayout
android:id="@+id/enterBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ENTER" />
</LinearLayout>
<LinearLayout
android:id="@+id/shiftBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHIFT" />
</LinearLayout>
<LinearLayout
android:id="@+id/delBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DEL" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="bottom|right"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/leftClick"
android:layout_width="85dp"
android:layout_height="50dp"
android:layout_weight="1.0"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="L Click" />
</LinearLayout>
<LinearLayout
android:id="@+id/rightClick"
android:layout_width="85dp"
android:layout_height="50dp"
android:layout_weight="1.0"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="R Click" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/F1"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F1" />
</LinearLayout>
<LinearLayout
android:id="@+id/F2"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F2" />
</LinearLayout>
<LinearLayout
android:id="@+id/F3"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F3" />
</LinearLayout>
<LinearLayout
android:id="@+id/F4"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F4" />
</LinearLayout>
<LinearLayout
android:id="@+id/F5"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F5" />
</LinearLayout>
<LinearLayout
android:id="@+id/F6"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F6" />
</LinearLayout>
<LinearLayout
android:id="@+id/F7"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F7" />
</LinearLayout>
<LinearLayout
android:id="@+id/F8"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F8" />
</LinearLayout>
<LinearLayout
android:id="@+id/F9"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F9" />
</LinearLayout>
<LinearLayout
android:id="@+id/F10"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F10" />
</LinearLayout>
<LinearLayout
android:id="@+id/F11"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F11" />
</LinearLayout>
<LinearLayout
android:id="@+id/F12"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F12" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
@ -72,23 +605,15 @@
android:layout_gravity="left"
android:gravity="center"
android:orientation="horizontal"
android:padding="15dp" >
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:popupTheme="@style/PopupMenuStyle"
android:background="#00000000" />
android:padding="15dp">
<LinearLayout
android:id="@+id/hideBtn"
android:layout_width="100dp"
android:layout_height="48dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal" >
android:orientation="horizontal">
<TextView
android:id="@+id/hideTxt"
@ -101,42 +626,39 @@
android:id="@+id/modeBtn"
android:layout_width="100dp"
android:layout_height="48dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal" >
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mode" />
android:text="@string/mode" />
</LinearLayout>
<LinearLayout
android:id="@+id/kbdBtn"
android:layout_width="100dp"
android:layout_height="48dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal" >
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Keyboard" />
android:text="@string/keyboard" />
</LinearLayout>
<LinearLayout
android:id="@+id/settingsBtn"
android:layout_width="100dp"
android:layout_height="48dp"
android:visibility="gone"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal" >
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"

View file

@ -1,319 +0,0 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="horizontal" >
<ScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginBottom="30dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/escBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ESC" />
</LinearLayout>
<LinearLayout
android:id="@+id/enterBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ENTER" />
</LinearLayout>
<LinearLayout
android:id="@+id/shiftBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHIFT" />
</LinearLayout>
<LinearLayout
android:id="@+id/delBtn"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DEL" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="bottom|right"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/leftClick"
android:layout_width="85dp"
android:layout_height="50dp"
android:layout_weight="1.0"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="L Click" />
</LinearLayout>
<LinearLayout
android:id="@+id/rightClick"
android:layout_width="85dp"
android:layout_height="50dp"
android:layout_weight="1.0"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="R Click" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="100dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/F1"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F1" />
</LinearLayout>
<LinearLayout
android:id="@+id/F2"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F2" />
</LinearLayout>
<LinearLayout
android:id="@+id/F3"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F3" />
</LinearLayout>
<LinearLayout
android:id="@+id/F4"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F4" />
</LinearLayout>
<LinearLayout
android:id="@+id/F5"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F5" />
</LinearLayout>
<LinearLayout
android:id="@+id/F6"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F6" />
</LinearLayout>
<LinearLayout
android:id="@+id/F7"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F7" />
</LinearLayout>
<LinearLayout
android:id="@+id/F8"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F8" />
</LinearLayout>
<LinearLayout
android:id="@+id/F9"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F9" />
</LinearLayout>
<LinearLayout
android:id="@+id/F10"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F10" />
</LinearLayout>
<LinearLayout
android:id="@+id/F11"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F11" />
</LinearLayout>
<LinearLayout
android:id="@+id/F12"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:background="@drawable/controls_button"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="F12" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View file

@ -1,235 +0,0 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="50dp"
android:layout_gravity="top|center_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/leftBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Left" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/upBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Up" />
</LinearLayout>
<LinearLayout
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/downBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Down" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/rightBtn"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Right" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<com.epicstudios.vectras.widgets.JoystickView
android:id="@+id/joyStick"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="bottom|left"
android:layout_marginBottom="48dp"
android:alpha="0.5"
custom:JV_backgroundColor="#44000000"
custom:JV_borderColor="#88000000"
custom:JV_borderWidth="4dp"
custom:JV_buttonColor="#99000000"
custom:JV_buttonSizeRatio="15%"
custom:JV_fixedCenter="false" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="bottom|center_vertical|left"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="50dp"
android:layout_gravity="bottom|center_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/BtnSpace"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Space" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/BtnF"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="F" />
</LinearLayout>
<LinearLayout
android:layout_width="75dp"
android:layout_height="75dp"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/BtnShift"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="Shift" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/Btn0"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/controls_button"
android:clickable="true"
android:gravity="center_vertical|center|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center|center_horizontal"
android:text="0" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View file

@ -1,20 +1,61 @@
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/refreshLayout"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:layout_height="match_parent"
android:padding="8dp"
android:orientation="vertical">
<FrameLayout
<LinearLayout
android:id="@+id/romsLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:gravity="center_vertical|center|center_horizontal" >
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/blogRv"
android:id="@+id/mRVMainRoms"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:orientation="horizontal"
tools:listitem="@layout/container_main_roms"
android:clipToPadding="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<include layout="@layout/no_connection" />
</FrameLayout>
<ImageView
android:id="@+id/ivRomsManager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
android:focusable="true"
android:padding="10dp"
android:src="@drawable/round_browser_updated_24" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/blogRv"
android:layout_width="match_parent"
android:visibility="visible"
android:layout_height="0dp"
android:layout_weight="1.0" />
<include layout="@layout/no_connection" />
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

View file

@ -1,8 +0,0 @@
[
{
"post_thumb":"https://raw.githubusercontent.com/epicstudios856/Vectras-windows-emulator/main/res/images/app_icon.png",
"post_title":"Post Title",
"post_content":"post content",
"post_date":"lol"
}
]

View file

@ -113,4 +113,9 @@
<string name="hide_toolbar">Hide Toolbar</string>
<string name="view_log">View Log</string>
<string name="mode">Mode</string>
<string name="keyboard">Keyboard</string>
<string name="name">name</string>
<string name="size">size:</string>
<string name="availablity">availablity:</string>
</resources>

View file

@ -40,7 +40,6 @@
<style name="MyCheckBoxStyle" parent="Base.Widget.Material3.CompoundButton.CheckBox">
<item name="android:theme">@style/MyCheckboxTheme</item>
</style>
<style name="MyCheckboxTheme">
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
@ -50,4 +49,8 @@
<item name="colorAccent">@color/blue</item>
<item name="android:textColorSecondary">@color/white</item>
</style>
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_in_bottom</item>
<item name="android:windowExitAnimation">@anim/slide_out_bottom</item>
</style>
</resources>

View file

@ -2,4 +2,5 @@
plugins {
id 'com.android.application' version '8.1.2' apply false
id 'com.google.gms.google-services' version '4.4.0' apply false
id 'com.google.firebase.crashlytics' version '2.9.9' apply false
}