Compare commits

...

6 Commits
v2.12 ... v2.15

Author SHA1 Message Date
pmow
22ecbee791 Merge pull request #124 from SytheZN/master
RSL 2.15
2022-10-28 08:33:40 -10:00
Chax
e07ffa54ee RSL 2.15
- Massive UI Changes:
- Rounded buttons
- Added version Number at Bottom Left
- Changed fonts to some extend
- Added background pattern to category buttons and MainForm background
- Added an animation when opening/closing category
- Overall darker theme
- New splash

~Chax
2022-10-23 21:07:43 +02:00
pmow
be560875da Merge pull request #123 from SytheZN/master
RSL 2.14
2022-10-11 11:51:47 -10:00
SytheZN
fdf7e409bf RSL 2.14 2022-10-11 23:42:34 +02:00
pmow
d9255bf02d Merge pull request #122 from SytheZN/master
Add public-config
2022-10-03 21:34:51 -10:00
SytheZN
40b88a2d4c RSL 2.13
- Added new config mode for use with http mirror
- Removed previous http mirror workarounds
- Added Offline Mode launcher to package fetch.
- Add splash screen on startup
2022-10-01 12:59:12 +02:00
54 changed files with 2596 additions and 1723 deletions

View File

@@ -1,7 +0,0 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\Sideloader.cs",
"PreviewInSolutionExplorer": false
}

Binary file not shown.

View File

@@ -30,6 +30,7 @@
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup>
<UseShortFileNames>True</UseShortFileNames>
@@ -146,6 +147,7 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Management" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
@@ -160,6 +162,9 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ADB.cs" />
<Compile Include="RoundButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ColumnSort.cs" />
<Compile Include="Donors.cs" />
<Compile Include="DonorsListView.cs">
@@ -169,12 +174,21 @@
<DependentUpon>DonorsListView.cs</DependentUpon>
</Compile>
<Compile Include="FlexibleMessageBox.cs" />
<Compile Include="RoundedRectangleF.cs" />
<Compile Include="Splash.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Splash.Designer.cs">
<DependentUpon>Splash.cs</DependentUpon>
</Compile>
<Compile Include="Models\PublicConfig.cs" />
<Compile Include="NewApps.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="NewApps.Designer.cs">
<DependentUpon>NewApps.cs</DependentUpon>
</Compile>
<Compile Include="Transparenter.cs" />
<Compile Include="UpdateForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -212,12 +226,6 @@
<Compile Include="SpoofForm.Designer.cs">
<DependentUpon>SpoofForm.cs</DependentUpon>
</Compile>
<Compile Include="ThemeForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ThemeForm.Designer.cs">
<DependentUpon>ThemeForm.cs</DependentUpon>
</Compile>
<Compile Include="Updater.cs" />
<Compile Include="UsernameForm.cs">
<SubType>Form</SubType>
@@ -232,9 +240,13 @@
<Compile Include="Utilities\GeneralUtilities.cs" />
<Compile Include="Utilities\UpdateGameData.cs" />
<Compile Include="Utilities\UploadGame.cs" />
<Compile Include="Utilities\Zip.cs" />
<EmbeddedResource Include="DonorsListView.resx">
<DependentUpon>DonorsListView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Splash.resx">
<DependentUpon>Splash.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="NewApps.resx">
<DependentUpon>NewApps.cs</DependentUpon>
</EmbeddedResource>
@@ -266,9 +278,6 @@
<EmbeddedResource Include="SpoofForm.resx">
<DependentUpon>SpoofForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ThemeForm.resx">
<DependentUpon>ThemeForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UsernameForm.resx">
<DependentUpon>UsernameForm.cs</DependentUpon>
<SubType>Designer</SubType>
@@ -285,6 +294,9 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Rookie Offline.cmd">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="version" />
</ItemGroup>
<ItemGroup>
@@ -294,16 +306,13 @@
<Content Include="changelog.txt" />
<Content Include="icon.ico" />
<Content Include="ChangelogHistory.txt" />
<None Include="Resources\UpdatesKey.png" />
<Content Include="Resources\pattern_cubes-1_1_1_0-0_0_1__000000_212121.png" />
<Content Include="Resources\pattern_herringbone-2_1_3_0-0_90_1__000000_1c1c1c.png" />
<Content Include="Resources\splash.jpg" />
<None Include="Resources\battery11.png" />
<None Include="Resources\battery.png" />
<None Include="Resources\battery1.png" />
<None Include="Resources\ajax-loader.gif" />
<Content Include="Resources\bluekey.png" />
<None Include="Resources\gametoupload.png" />
<Content Include="Resources\redkey.png" />
<None Include="Resources\greenkey.png" />
<None Include="Resources\orangekey.png" />
<None Include="Resources\SearchGlass.PNG" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>en-US</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
</Project>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AndroidSideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="AndroidADB.Sideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="AndroidSideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
<section name="AndroidADB.Sideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
<userSettings>
<AndroidSideloader.Properties.Settings>
@@ -36,13 +36,13 @@
<value>Microsoft Sans Serif, 11.25pt</value>
</setting>
<setting name="BackPicturePath" serializeAs="String">
<value />
<value/>
</setting>
<setting name="SpoofGames" serializeAs="String">
<value>False</value>
</setting>
<setting name="BandwithLimit" serializeAs="String">
<value />
<value/>
</setting>
<setting name="BigFontStyle" serializeAs="String">
<value>Microsoft Sans Serif, 14pt</value>
@@ -51,19 +51,19 @@
<value>False</value>
</setting>
<setting name="IPAddress" serializeAs="String">
<value />
<value/>
</setting>
<setting name="InstalledApps" serializeAs="String">
<value />
<value/>
</setting>
<setting name="ADBPath" serializeAs="String">
<value />
<value/>
</setting>
<setting name="QUsett" serializeAs="String">
<value>False</value>
</setting>
<setting name="QuChecked" serializeAs="String">
<value />
<value/>
</setting>
<setting name="QUhz" serializeAs="String">
<value>0</value>
@@ -81,28 +81,28 @@
<value>Change Me</value>
</setting>
<setting name="QUString" serializeAs="String">
<value />
<value/>
</setting>
<setting name="MainDir" serializeAs="String">
<value />
<value/>
</setting>
<setting name="QUStringF" serializeAs="String">
<value />
<value/>
</setting>
<setting name="delsh" serializeAs="String">
<value>False</value>
</setting>
<setting name="CurrPckg" serializeAs="String">
<value />
<value/>
</setting>
<setting name="ADBFolder" serializeAs="String">
<value />
<value/>
</setting>
<setting name="WirelessADB" serializeAs="String">
<value>False</value>
</setting>
<setting name="CurrentGamename" serializeAs="String">
<value />
<value/>
</setting>
<setting name="PackageNameToCB" serializeAs="String">
<value>False</value>
@@ -114,23 +114,20 @@
<value>False</value>
</setting>
<setting name="CurrentLogPath" serializeAs="String">
<value />
<value/>
</setting>
<setting name="CurrentLogName" serializeAs="String">
<value />
<value/>
</setting>
<setting name="CurrentCrashPath" serializeAs="String">
<value />
<value/>
</setting>
<setting name="CurrentCrashName" serializeAs="String">
<value />
<value/>
</setting>
<setting name="QUturnedon" serializeAs="String">
<value>False</value>
</setting>
<setting name="QblindOn" serializeAs="String">
<value>True</value>
</setting>
<setting name="adbdebugwarned" serializeAs="String">
<value>False</value>
</setting>
@@ -141,28 +138,28 @@
<value>True</value>
</setting>
<setting name="GamesList" serializeAs="String">
<value />
<value/>
</setting>
<setting name="UploadedGameList" serializeAs="String">
<value>False</value>
</setting>
<setting name="GlobalUsername" serializeAs="String">
<value />
<value/>
</setting>
<setting name="lastTimeShared" serializeAs="String">
<value />
<value/>
</setting>
<setting name="AutoReinstall" serializeAs="String">
<value>False</value>
</setting>
<setting name="NonAppPackages" serializeAs="String">
<value />
<value/>
</setting>
<setting name="LastLaunch" serializeAs="String">
<value>04/20/1969 16:20:00</value>
</setting>
<setting name="SubmittedUpdates" serializeAs="String">
<value />
<value/>
</setting>
<setting name="ListUpped" serializeAs="String">
<value>False</value>
@@ -177,7 +174,7 @@
<value>White</value>
</setting>
<setting name="ComboBoxColor" serializeAs="String">
<value>40, 40, 40</value>
<value>50, 50, 50</value>
</setting>
<setting name="SubButtonColor" serializeAs="String">
<value>40, 40, 40</value>
@@ -192,7 +189,7 @@
<value>50, 50, 50</value>
</setting>
<setting name="AppPackages" serializeAs="String">
<value />
<value/>
</setting>
</AndroidSideloader.Properties.Settings>
<AndroidADB.Sideloader.Properties.Settings>
@@ -245,11 +242,11 @@
<value>Microsoft Sans Serif, 11.25pt</value>
</setting>
<setting name="BackPicturePath" serializeAs="String">
<value />
<value/>
</setting>
<setting name="SpoofGames" serializeAs="String">
<value>False</value>
</setting>
</AndroidADB.Sideloader.Properties.Settings>
</userSettings>
</configuration>
</configuration>

View File

@@ -1,4 +1,24 @@
RSL 2.12
RSL 2.14
- Added upload config for easier config management
- Improved upload logic to handle failures better
~SytheZN
- Much better theme
~fenopy
RSL 2.13
- Added new config mode for use with http mirror
- Removed previous http mirror workarounds
- Added Offline Mode launcher to package fetch.
- Add splash screen on startup
~SytheZN
RSL 2.12
- updated auto-update source
- update status text

View File

@@ -110,6 +110,7 @@ namespace AndroidSideloader
// panel1
//
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.panel1.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.panel1.Controls.Add(this.SkipButton);
this.panel1.Controls.Add(this.panel2);
this.panel1.Controls.Add(this.bothdet);
@@ -236,12 +237,10 @@ namespace AndroidSideloader
//
this.DonateButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.DonateButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonateButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonateButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonateButton.Enabled = false;
this.DonateButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.DonateButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.DonateButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.DonateButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.DonateButton.ForeColor = System.Drawing.Color.White;
this.DonateButton.Location = new System.Drawing.Point(130, 277);
this.DonateButton.Name = "DonateButton";
this.DonateButton.Size = new System.Drawing.Size(311, 36);
@@ -270,7 +269,7 @@ namespace AndroidSideloader
this.panel1.PerformLayout();
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
this.Activate();
}
#endregion

645
MainForm.Designer.cs generated

File diff suppressed because it is too large Load Diff

View File

@@ -10,11 +10,16 @@ using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.NetworkInformation;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using AndroidSideloader.Models;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Drawing.Drawing2D;
namespace AndroidSideloader
{
@@ -50,8 +55,10 @@ namespace AndroidSideloader
private bool isLoading = true;
public static bool isOffline = false;
public MainForm()
public static bool hasPublicConfig = false;
public static PublicConfig PublicConfigFile;
public static string PublicMirrorExtraArgs = " --tpslimit 1.0 --tpslimit-burst 1";
public MainForm()
{
// check for offline mode
string[] args = Environment.GetCommandLineArgs();
@@ -66,6 +73,25 @@ namespace AndroidSideloader
{
FlexibleMessageBox.Show("Offline mode activated. You can't download games in this mode, only do local stuff.");
}
else
{
if (File.Exists($"{Environment.CurrentDirectory}\\vrp-public.json"))
{
SideloaderRCLONE.updatePublicConfig();
try
{
var configFileData =
File.ReadAllText($"{Environment.CurrentDirectory}\\vrp-public.json");
var config = JsonConvert.DeserializeObject<PublicConfig>(configFileData);
PublicConfigFile = config;
hasPublicConfig = true;
}
catch
{
hasPublicConfig = false;
}
}
}
InitializeComponent();
//Time between asking for new apps if user clicks No. 96,0,0 DEFAULT
@@ -74,9 +100,9 @@ namespace AndroidSideloader
TimeSpan newDayReference2 = new TimeSpan(72, 0, 0);
TimeSpan comparison;
TimeSpan comparison2;
//These two variables set to show difference.
DateTime A = Properties.Settings.Default.LastLaunch;
//These two variables set to show difference.
DateTime A = Properties.Settings.Default.LastLaunch;
DateTime B = DateTime.Now;
DateTime C = Properties.Settings.Default.LastLaunch2;
comparison = B - A;
@@ -135,14 +161,6 @@ namespace AndroidSideloader
this.gamesListView.ListViewItemSorter = lvwColumnSorter;
if (searchTextBox.Visible)
searchTextBox.Focus();
if (Properties.Settings.Default.QblindOn)
pictureBox3.Image = global::AndroidSideloader.Properties.Resources.redkey;
else
pictureBox3.Image = global::AndroidSideloader.Properties.Resources.orangekey;
if (Properties.Settings.Default.QblindOn)
pictureBox4.Image = global::AndroidSideloader.Properties.Resources.bluekey;
else
pictureBox4.Image = global::AndroidSideloader.Properties.Resources.greenkey;
}
public static string DonorApps = "";
@@ -151,6 +169,9 @@ namespace AndroidSideloader
private async void Form1_Load(object sender, EventArgs e)
{
var splash = new Splash();
splash.Show();
if (File.Exists("C:\\RSL\\platform-tools\\adb.exe"))
{
ADB.RunAdbCommandToString("kill-server");
@@ -181,7 +202,7 @@ namespace AndroidSideloader
if (!isOffline)
{
RCLONE.Init();
}
}
try { Spoofer.spoofer.Init(); } catch { }
if (Properties.Settings.Default.CallUpgrade)
@@ -197,6 +218,7 @@ namespace AndroidSideloader
etaLabel.Text = "";
speedLabel.Text = "";
diskLabel.Text = "";
verLabel.Text = Updater.LocalVersion;
if (File.Exists("crashlog.txt"))
{
if (File.Exists(Properties.Settings.Default.CurrentCrashPath))
@@ -221,7 +243,7 @@ namespace AndroidSideloader
Properties.Settings.Default.Save();
Clipboard.SetText(combined);
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentCrashPath}\" VRP-debuglogs:CrashLogs");
RCLONE.runRcloneCommand_DownloadConfig($"copy \"{Properties.Settings.Default.CurrentCrashPath}\" VRP-debuglogs:CrashLogs");
FlexibleMessageBox.Show($"Your CrashLog has been copied to the server. Please mention your CrashLogID ({Properties.Settings.Default.CurrentCrashName}) to the Mods (it has been automatically copied to your clipboard).");
Clipboard.SetText(Properties.Settings.Default.CurrentCrashName);
@@ -233,6 +255,19 @@ namespace AndroidSideloader
File.Delete($"{Environment.CurrentDirectory}\\crashlog.txt");
}
}
if (hasPublicConfig)
{
lblMirror.Text = " Public Mirror";
remotesList.Size = Size.Empty;
}
if (isOffline)
{
lblMirror.Text = " Offline Mode";
remotesList.Size = Size.Empty;
}
splash.Close();
}
@@ -261,15 +296,19 @@ namespace AndroidSideloader
{
ChangeTitle("Initializing Servers...");
initMirrors(true);
if (Properties.Settings.Default.autoUpdateConfig) {
if (Properties.Settings.Default.autoUpdateConfig)
{
ChangeTitle("Checking for a new Configuration File...");
SideloaderRCLONE.updateConfig(currentRemote);
SideloaderRCLONE.updateDownloadConfig();
}
SideloaderRCLONE.updateUploadConfig();
if (!hasPublicConfig)
{
ChangeTitle("Grabbing the Games List...");
SideloaderRCLONE.initGames(currentRemote);
}
ChangeTitle("Grabbing the Games List...");
SideloaderRCLONE.initGames(currentRemote);
//ChangeTitle("Syncing Game Photos");
//ChangeTitle("Updating list of needed clean apps...");
//ChangeTitle("Checking for Updates on server...");
}
else
{
@@ -279,10 +318,12 @@ namespace AndroidSideloader
});
t1.SetApartmentState(ApartmentState.STA);
t1.IsBackground = true;
if (HasInternet)
t1.Start();
while (t1.IsAlive)
await Task.Delay(100);
Thread t5 = new Thread(() =>
{
if (!String.IsNullOrEmpty(Properties.Settings.Default.IPAddress))
@@ -331,62 +372,91 @@ namespace AndroidSideloader
t5.Start();
while (t5.IsAlive)
await Task.Delay(100);
Thread t2 = new Thread(() =>
{
ChangeTitle("Updating Game Notes...");
SideloaderRCLONE.UpdateGameNotes(currentRemote);
});
Thread t3 = new Thread(() =>
if (hasPublicConfig)
{
ChangeTitle("Updating Game Thumbnails (This may take a minute or two)...");
SideloaderRCLONE.UpdateGamePhotos(currentRemote);
});
Thread t4 = new Thread(() =>
{
SideloaderRCLONE.UpdateNouns(currentRemote);
if (!Directory.Exists(SideloaderRCLONE.ThumbnailsFolder) || !Directory.Exists(SideloaderRCLONE.NotesFolder))
var t2 = new Thread((() =>
{
FlexibleMessageBox.Show("It seems you are missing the thumbnails and/or notes database, the first start of the sideloader takes a bit more time, so dont worry if it looks stuck!");
ChangeTitle("Updating Metadata...");
SideloaderRCLONE.UpdateMetadataFromPublic();
ChangeTitle("Processing Metadata...");
SideloaderRCLONE.ProcessMetadataFromPublic();
}));
t2.IsBackground = true;
if (HasInternet)
{
t2.Start();
}
});
t2.IsBackground = true;
t3.IsBackground = true;
t4.IsBackground = true;
if (HasInternet)
{
t2.Start();
}
while (t2.IsAlive)
await Task.Delay(50);
if (HasInternet)
{
t3.Start();
}
while (t3.IsAlive)
await Task.Delay(50);
if (HasInternet)
{
t4.Start();
while (t2.IsAlive)
await Task.Delay(50);
}
while (t4.IsAlive)
await Task.Delay(50);
else
{
Thread t2 = new Thread(() =>
{
ChangeTitle("Updating Game Notes...");
SideloaderRCLONE.UpdateGameNotes(currentRemote);
});
Thread t3 = new Thread(() =>
{
ChangeTitle("Updating Game Thumbnails (This may take a minute or two)...");
SideloaderRCLONE.UpdateGamePhotos(currentRemote);
});
Thread t4 = new Thread(() =>
{
SideloaderRCLONE.UpdateNouns(currentRemote);
if (!Directory.Exists(SideloaderRCLONE.ThumbnailsFolder) ||
!Directory.Exists(SideloaderRCLONE.NotesFolder))
{
FlexibleMessageBox.Show(
"It seems you are missing the thumbnails and/or notes database, the first start of the sideloader takes a bit more time, so dont worry if it looks stuck!");
}
});
t2.IsBackground = true;
t3.IsBackground = true;
t4.IsBackground = true;
if (HasInternet)
{
t2.Start();
}
while (t2.IsAlive)
await Task.Delay(50);
if (HasInternet)
{
t3.Start();
}
while (t3.IsAlive)
await Task.Delay(50);
if (HasInternet)
{
t4.Start();
}
while (t4.IsAlive)
await Task.Delay(50);
}
progressBar.Style = ProgressBarStyle.Marquee;
ChangeTitle("Populating Game Update List, Almost There!");
await CheckForDevice();
if (ADB.DeviceID.Length < 5)
{
nodeviceonstart = true;
}
listappsbtn();
listappsbtn();
showAvailableSpace();
downloadInstallGameButton.Enabled = true;
isLoading = false;
@@ -422,7 +492,7 @@ namespace AndroidSideloader
try
{
if (ProgressText.IsDisposed) return;
this.Invoke(() => { oldTitle = txt; this.Text = "Rookie's Sideloader v" + Updater.LocalVersion + " | " + txt; });
this.Invoke(() => { oldTitle = txt; this.Text = "Rookie Sideloader v" + Updater.LocalVersion + " | " + txt; });
ProgressText.Invoke(() =>
{
if (!ProgressText.IsDisposed)
@@ -431,7 +501,7 @@ namespace AndroidSideloader
if (!reset)
return;
await Task.Delay(TimeSpan.FromSeconds(5));
this.Invoke(() => { this.Text = "Rookie's Sideloader v" + Updater.LocalVersion + " | " + oldTitle; });
this.Invoke(() => { this.Text = "Rookie Sideloader v" + Updater.LocalVersion + " | " + oldTitle; });
ProgressText.Invoke(() =>
{
if (!ProgressText.IsDisposed)
@@ -444,8 +514,6 @@ namespace AndroidSideloader
}
}
private void ShowSubMenu(Panel subMenu)
{
if (subMenu.Visible == false)
@@ -454,8 +522,6 @@ namespace AndroidSideloader
subMenu.Visible = false;
}
private async void startsideloadbutton_Click(object sender, EventArgs e)
{
ADB.WakeDevice();
@@ -489,9 +555,6 @@ namespace AndroidSideloader
ShowPrcOutput(output);
}
public void ShowPrcOutput(ProcessOutput prcout)
{
string message = $"Output: {prcout.Output}";
@@ -500,14 +563,8 @@ namespace AndroidSideloader
FlexibleMessageBox.Show(this, message);
}
public List<string> Devices = new List<string>();
public async Task<int> CheckForDevice()
{
@@ -561,10 +618,6 @@ namespace AndroidSideloader
}
public async void devicesbutton_Click(object sender, EventArgs e)
{
ADB.WakeDevice();
@@ -579,7 +632,8 @@ namespace AndroidSideloader
public static void notify(string message)
{
if (Properties.Settings.Default.enableMessageBoxes == true)
FlexibleMessageBox.Show(new Form {
FlexibleMessageBox.Show(new Form
{
TopMost = true,
StartPosition = FormStartPosition.CenterScreen
}, message);
@@ -849,17 +903,17 @@ namespace AndroidSideloader
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingAfterFirst(InstalledVersionCode, " ");
ulong VersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(InstalledVersionCode));
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt} {packageName}"))
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt} {packageName}", true);
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt} {packageName}.zip"))
File.Delete($"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt} {packageName}.zip");
if (File.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{VersionInt} {packageName}.zip"))
File.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{VersionInt} {packageName}.zip");
var gameZipName = $"{GameName} v{VersionInt} {packageName} {HWID.Substring(0,1)}.zip";
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{gameZipName}"))
File.Delete($"{Properties.Settings.Default.MainDir}\\{gameZipName}");
ProcessOutput output = new ProcessOutput("", "");
ChangeTitle("Extracting APK....");
Directory.CreateDirectory($"{Properties.Settings.Default.MainDir}\\{packageName}");
Thread t1 = new Thread(() =>
{
output = Sideloader.getApk(GameName);
@@ -883,7 +937,7 @@ namespace AndroidSideloader
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\{packageName}\\HWID.txt", HWID);
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\{packageName}\\uploadMethod.txt", "manual");
ChangeTitle("Zipping extracted application...");
string cmd = $"7z a -mx1 \"{GameName} v{VersionInt} {packageName}.zip\" .\\{packageName}\\*";
string cmd = $"7z a -mx1 \"{gameZipName}\" .\\{packageName}\\*";
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
progressBar.Style = ProgressBarStyle.Continuous;
Thread t4 = new Thread(() =>
@@ -904,9 +958,9 @@ namespace AndroidSideloader
{
string currentlyuploading = GameName;
ChangeTitle("Uploading to shared drive, you can continue to use Rookie while it uploads in the background.");
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt} {packageName}.zip\" RSL-gameuploads:");
File.Delete($"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt} {packageName}.zip");
FlexibleMessageBox.Show($"Upload of {currentlyuploading} is complete! Thank you for your contribution!");
RCLONE.runRcloneCommand_UploadConfig($"copy \"{Properties.Settings.Default.MainDir}\\{gameZipName}\" RSL-gameuploads:");
File.Delete($"{Properties.Settings.Default.MainDir}\\{gameZipName}");
this.Invoke(() => FlexibleMessageBox.Show($"Upload of {currentlyuploading} is complete! Thank you for your contribution!"));
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
});
t3.IsBackground = true;
@@ -917,7 +971,7 @@ namespace AndroidSideloader
{
await Task.Delay(100);
}
ChangeTitle(" \n\n");
isuploading = false;
ULGif.Visible = false;
@@ -1329,6 +1383,7 @@ namespace AndroidSideloader
public static int updint = 0;
public static bool nodeviceonstart = false;
public static bool either = false;
private async void initListView()
{
rookienamelist = "";
@@ -1350,7 +1405,9 @@ namespace AndroidSideloader
{
whitelist = File.ReadAllLines($"{Properties.Settings.Default.MainDir}\\nouns\\whitelist.txt");
}
List<ListViewItem> GameList = new List<ListViewItem>();
List<String> rookieList = new List<String>();
List<String> installedGames = packageList.ToList();
List<String> blacklistItems = blacklist.ToList();
@@ -1375,18 +1432,20 @@ namespace AndroidSideloader
ListViewItem Game = new ListViewItem(release);
Color colorFont_installedGame = ColorTranslator.FromHtml("#3c91e6");
lblUpToDate.ForeColor = colorFont_installedGame;
Color colorFont_updateAvailable = ColorTranslator.FromHtml("#4daa57");
lblUpdateAvailable.ForeColor = colorFont_updateAvailable;
Color colorFont_donateGame = ColorTranslator.FromHtml("#cb9cf2");
lblNeedsDonate.ForeColor = colorFont_donateGame;
Color colorFont_error = ColorTranslator.FromHtml("#f52f57");
foreach (string packagename in packageList)
{
if (string.Equals(release[SideloaderRCLONE.PackageNameIndex], packagename))
{
if (Properties.Settings.Default.QblindOn)
{
Game.BackColor = Color.FromArgb(0, 112, 138);
}
else
{
Game.BackColor = Color.Green;
}
Game.ForeColor = colorFont_installedGame;
string InstalledVersionCode;
InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packagename} | grep versionCode -F\"").Output;
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
@@ -1396,13 +1455,10 @@ namespace AndroidSideloader
ulong installedVersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(InstalledVersionCode));
ulong cloudVersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex]));
//Logger.Log($"Checked game {release[SideloaderRCLONE.GameNameIndex]}; cloudversion={cloudVersionInt} localversion={installedVersionInt}");
Logger.Log($"Checked game {release[SideloaderRCLONE.GameNameIndex]}; cloudversion={cloudVersionInt} localversion={installedVersionInt}");
if (installedVersionInt < cloudVersionInt)
{
if (Properties.Settings.Default.QblindOn)
Game.BackColor = Color.FromArgb(120, 0, 0);
else
Game.BackColor = Color.FromArgb(102, 77, 0);
Game.ForeColor = colorFont_updateAvailable;
}
if (installedVersionInt > cloudVersionInt)
@@ -1411,7 +1467,8 @@ namespace AndroidSideloader
if (blacklist.Contains(packagename))
dontget = true;
if (!dontget)
Game.BackColor = Color.FromArgb(20, 20, 20);
Game.ForeColor = colorFont_donateGame;
string RlsName = Sideloader.PackageNametoGameName(packagename);
string GameName = Sideloader.gameNameToSimpleName(RlsName);
@@ -1427,7 +1484,7 @@ namespace AndroidSideloader
}
catch (Exception ex)
{
Game.BackColor = Color.FromArgb(121, 25, 194);
Game.ForeColor = colorFont_error;
Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView");
ADB.RunAdbCommandToString($"shell \"dumpsys package {packagename}\"");
Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"");
@@ -1442,12 +1499,12 @@ namespace AndroidSideloader
while (t1.IsAlive)
await Task.Delay(100);
}
else if(!isOffline)
else if (!isOffline)
{
SwitchMirrors();
initListView();
}
if (blacklistItems.Count == 0 && GameList.Count == 0 && !Properties.Settings.Default.nodevicemode && !isOffline)
{
@@ -1623,21 +1680,24 @@ namespace AndroidSideloader
Thread t3 = new Thread(() =>
{
string packagename = game.Pckgcommand;
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip"))
File.Delete($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip");
var gameZipName = $"{game.Uploadgamename} v{game.Uploadversion} {game.Pckgcommand} {SideloaderUtilities.UUID().Substring(0,1)}.zip";
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{gameZipName}"))
File.Delete($"{Properties.Settings.Default.MainDir}\\{gameZipName}");
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
string cmd = $"7z a -mx1 \"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion} {game.Pckgcommand}.zip\" .\\{game.Pckgcommand}\\*";
string cmd = $"7z a -mx1 \"{Properties.Settings.Default.MainDir}\\{gameZipName}\" .\\{game.Pckgcommand}\\*";
Program.form.ChangeTitle("Zipping extracted application...");
ADB.RunCommandToString(cmd, path);
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{game.Pckgcommand}", true);
Program.form.ChangeTitle("Uploading to drive, you may continue to use Rookie while it uploads.");
RCLONE.runRcloneCommand(game.Uploadcommand);
RCLONE.runRcloneCommand_UploadConfig(game.Uploadcommand);
if (game.isUpdate)
{
Properties.Settings.Default.SubmittedUpdates += game.Pckgcommand + ("\n");
Properties.Settings.Default.Save();
}
File.Delete($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion} {game.Pckgcommand}.zip");
File.Delete($"{Properties.Settings.Default.MainDir}\\{gameZipName}");
});
t3.IsBackground = true;
@@ -1659,7 +1719,7 @@ namespace AndroidSideloader
public static async void newpackageupload()
{
if (!String.IsNullOrEmpty(Properties.Settings.Default.NonAppPackages) && !Properties.Settings.Default.ListUpped)
if (!String.IsNullOrEmpty(Properties.Settings.Default.NonAppPackages) && !Properties.Settings.Default.ListUpped)
{
Random r = new Random();
int x = r.Next(9999);
@@ -1725,7 +1785,7 @@ namespace AndroidSideloader
int index = 0;
remotesList.Invoke(() => { index = remotesList.SelectedIndex; remotesList.Items.Clear(); });
string[] mirrors = RCLONE.runRcloneCommand("listremotes").Output.Split('\n');
string[] mirrors = RCLONE.runRcloneCommand_DownloadConfig("listremotes").Output.Split('\n');
Logger.Log("Loaded following mirrors: ");
int itemsCount = 0;
@@ -1744,7 +1804,7 @@ namespace AndroidSideloader
if (itemsCount > 0)
{
var rand = new Random();
// Code that implements a randomized mirror. The rotation logic (the rotation) is reported as being bugged so I just disabled as a workaround ~pmow
// if (random == true && index < itemsCount)
@@ -1759,10 +1819,10 @@ namespace AndroidSideloader
remotesList.Invoke(() =>
{
remotesList.SelectedIndex = 0; //set mirror to first
currentRemote = "VRP-mirror" + remotesList.SelectedItem.ToString();
currentRemote = "VRP-mirror" + remotesList.SelectedItem.ToString();
});
};
}
@@ -1775,11 +1835,27 @@ namespace AndroidSideloader
private void sideloadContainer_Click(object sender, EventArgs e)
{
ShowSubMenu(sideloadContainer);
if (sideloadDrop.Text == "▼ SIDELOAD ▼")
{
sideloadDrop.Text = "▶ SIDELOAD ◀";
}
else if (sideloadDrop.Text == "▶ SIDELOAD ◀")
{
sideloadDrop.Text = "▼ SIDELOAD ▼";
}
}
private void backupDrop_Click(object sender, EventArgs e)
{
ShowSubMenu(backupContainer);
if (backupDrop.Text == "▼ BACKUP / RESTORE ▼")
{
backupDrop.Text = "▶ BACKUP / RESTORE ◀";
}
else if (backupDrop.Text == "▶ BACKUP / RESTORE ◀")
{
backupDrop.Text = "▼ BACKUP / RESTORE ▼";
}
}
private void settingsButton_Click(object sender, EventArgs e)
@@ -1803,7 +1879,6 @@ without him none of this would be possible
- -- rclone https://rclone.org/
- -- 7zip https://www.7-zip.org/
- -- badcoder5000: for help with the UI Redesign
- -- gotard: for the Theme Changer
- -- Verb8em: for drawning the New Icon
- -- ErikE: Folder Browser Dialog Code (https://stackoverflow.com/users/57611/erike)
- -- Serge Weinstock: for developing SergeUtils, which is used to search the combobox
@@ -1869,7 +1944,10 @@ without him none of this would be possible
Thread t1 = new Thread(() =>
{
initMirrors(false);
SideloaderRCLONE.initGames(currentRemote);
if (!hasPublicConfig)
{
SideloaderRCLONE.initGames(currentRemote);
}
listappsbtn();
});
t1.IsBackground = false;
@@ -1905,20 +1983,21 @@ without him none of this would be possible
ShowError_QuotaExceeded();
DialogResult om = MessageBox.Show("Relaunch Rookie in Offline Mode?", "Offline Mode?", MessageBoxButtons.YesNo);
if (om == DialogResult.Yes) {
if (om == DialogResult.Yes)
{
Process pr = new Process();
pr.StartInfo.WorkingDirectory = Application.StartupPath;
pr.StartInfo.FileName = System.AppDomain.CurrentDomain.FriendlyName;
pr.StartInfo.Arguments = "--offline";
pr.Start();
Process.GetCurrentProcess().Kill();
pr.StartInfo.WorkingDirectory = Application.StartupPath;
pr.StartInfo.FileName = System.AppDomain.CurrentDomain.FriendlyName;
pr.StartInfo.Arguments = "--offline";
pr.Start();
Process.GetCurrentProcess().Kill();
}
if (System.Windows.Forms.Application.MessageLoop)
if (System.Windows.Forms.Application.MessageLoop)
{
Process.GetCurrentProcess().Kill();
}
}
if (remotesList.SelectedIndex + 1 == remotesList.Items.Count)
{
@@ -1969,10 +2048,11 @@ Things you can try:
showAvailableSpace();
ChangeTitle("Device now detected... refreshing update list.");
listappsbtn();
initListView();
initListView();
}
progressBar.Style = ProgressBarStyle.Marquee;
if (gamesListView.SelectedItems.Count == 0) {
if (gamesListView.SelectedItems.Count == 0)
{
progressBar.Style = ProgressBarStyle.Continuous;
ChangeTitle("You must select a game from the Game List!");
return;
@@ -2032,16 +2112,70 @@ Things you can try:
string dir = Path.GetDirectoryName(gameName);
string gameDirectory = Environment.CurrentDirectory + "\\" + gameName;
string path = gameDirectory;
Directory.CreateDirectory(gameDirectory);
var gameNameHash = string.Empty;
using (var md5 = MD5.Create())
{
var bytes = Encoding.UTF8.GetBytes(gameName + "\n");
var hash = md5.ComputeHash(bytes);
var sb = new StringBuilder();
foreach (var b in hash)
{
sb.Append(b.ToString("x2"));
}
gameNameHash = sb.ToString();
}
ProcessOutput gameDownloadOutput = new ProcessOutput("", "");
Logger.Log($"Starting Game Download");
Logger.Log($"rclone copy \"{currentRemote}:{SideloaderRCLONE.RcloneGamesFolder}/{gameName}\"");
Thread t1 = new Thread(() =>
Thread t1;
if (hasPublicConfig)
{
gameDownloadOutput = RCLONE.runRcloneCommand($"copy \"{currentRemote}:{SideloaderRCLONE.RcloneGamesFolder}/{gameName}\" \"{Environment.CurrentDirectory}\\{gameName}\" --progress --rc --transfers 1 --multi-thread-streams 1 --checkers 1", Properties.Settings.Default.BandwithLimit);
});
bool doDownload = true;
if (Directory.Exists(gameDirectory))
{
var res = FlexibleMessageBox.Show(
$"{gameName} exists in destination directory.\r\nWould you like to overwrite it?",
"Download again?", MessageBoxButtons.YesNo);
doDownload = res == DialogResult.Yes;
if (doDownload)
{
// only delete after extraction; allows for resume if the fetch fails midway.
if (Directory.Exists($"{Environment.CurrentDirectory}\\{gameName}"))
Directory.Delete($"{Environment.CurrentDirectory}\\{gameName}", true);
}
}
if (doDownload)
{
Logger.Log($"rclone copy \"Public:{SideloaderRCLONE.RcloneGamesFolder}/{gameName}\"");
t1 = new Thread(() =>
{
var rclonecommand =
$"copy \":http:/{gameNameHash}/\" \"{Environment.CurrentDirectory}\\{gameNameHash}\" --progress --rc";
gameDownloadOutput = RCLONE.runRcloneCommand_PublicConfig(rclonecommand, Properties.Settings.Default.BandwithLimit);
});
}
else
{
t1 = new Thread(() => { gameDownloadOutput = new ProcessOutput("Download skipped."); });
}
}
else
{
Directory.CreateDirectory(gameDirectory);
Logger.Log($"rclone copy \"{currentRemote}:{SideloaderRCLONE.RcloneGamesFolder}/{gameName}\"");
t1 = new Thread(() =>
{
gameDownloadOutput = RCLONE.runRcloneCommand_DownloadConfig($"copy \"{currentRemote}:{SideloaderRCLONE.RcloneGamesFolder}/{gameName}\" \"{Environment.CurrentDirectory}\\{gameName}\" --progress --rc", Properties.Settings.Default.BandwithLimit);
});
}
t1.IsBackground = true;
t1.Start();
@@ -2104,14 +2238,26 @@ Things you can try:
}
if (removedownloading)
{
{
ChangeTitle("Deleting game files", false);
try
{
Directory.Delete(Environment.CurrentDirectory + "\\" + gameName, true);
if (hasPublicConfig)
{
if (Directory.Exists($"{Environment.CurrentDirectory}\\{gameNameHash}"))
Directory.Delete($"{Environment.CurrentDirectory}\\{gameNameHash}", true);
if (Directory.Exists($"{Environment.CurrentDirectory}\\{gameName}"))
Directory.Delete($"{Environment.CurrentDirectory}\\{gameName}", true);
}
else
{
Directory.Delete(Environment.CurrentDirectory + "\\" + gameName, true);
}
}
catch (Exception ex) {
catch (Exception ex)
{
FlexibleMessageBox.Show($"Error deleting game files: {ex.Message}");
}
ChangeTitle("");
@@ -2121,6 +2267,7 @@ Things you can try:
//Quota Errors
bool isinstalltxt = false;
bool quotaError = false;
bool otherError = false;
if (gameDownloadOutput.Error.Length > 0 && !isOffline)
{
string err = gameDownloadOutput.Error.ToLower();
@@ -2135,9 +2282,39 @@ Things you can try:
gamesQueListBox.DataSource = null;
gamesQueListBox.DataSource = gamesQueueList;
}
else if (!gameDownloadOutput.Error.Contains("localhost")) FlexibleMessageBox.Show($"Rclone error: {gameDownloadOutput.Error}");
else if (!gameDownloadOutput.Error.Contains("localhost"))
{
otherError = true;
//Remove current game
gamesQueueList.RemoveAt(0);
gamesQueListBox.DataSource = null;
gamesQueListBox.DataSource = gamesQueueList;
FlexibleMessageBox.Show($"Rclone error: {gameDownloadOutput.Error}");
output += new ProcessOutput("", "Download Failed");
}
}
if (quotaError == false)
if (hasPublicConfig && otherError == false && gameDownloadOutput.Output != "Download skipped.")
{
try
{
ChangeTitle("Extracting " + gameName, false);
Zip.ExtractFile($"{Environment.CurrentDirectory}\\{gameNameHash}\\{gameNameHash}.7z.001", $"{Environment.CurrentDirectory}", PublicConfigFile.Password);
if (Directory.Exists($"{Environment.CurrentDirectory}\\{gameNameHash}"))
Directory.Delete($"{Environment.CurrentDirectory}\\{gameNameHash}", true);
}
catch (Exception ex)
{
otherError = true;
FlexibleMessageBox.Show($"7zip error: {ex.Message}");
output += new ProcessOutput("", "Extract Failed");
}
}
if (quotaError == false && otherError == false)
{
ADB.WakeDevice();
ADB.DeviceID = GetDeviceID();
@@ -2238,17 +2415,17 @@ Things you can try:
isinstalling = false;
return;
}
ChangeTitle("Refreshing games list, please wait... \n");
showAvailableSpace();
listappsbtn();
initListView();
ShowPrcOutput(output);
progressBar.Style = ProgressBarStyle.Continuous;
etaLabel.Text = "ETA: Finished Queue";
speedLabel.Text = "DLS: Finished Queue";
ProgressText.Text = "";
gamesAreDownloading = false;
isinstalling = false;
ChangeTitle("Refreshing games list, please wait... \n");
showAvailableSpace();
listappsbtn();
initListView();
ShowPrcOutput(output);
progressBar.Style = ProgressBarStyle.Continuous;
etaLabel.Text = "ETA: Finished Queue";
speedLabel.Text = "DLS: Finished Queue";
ProgressText.Text = "";
gamesAreDownloading = false;
isinstalling = false;
ChangeTitle(" \n\n");
}
@@ -2400,6 +2577,14 @@ Things you can try:
private void otherDrop_Click(object sender, EventArgs e)
{
ShowSubMenu(otherContainer);
if (otherDrop.Text == "▼ OTHER ▼")
{
otherDrop.Text = "▶ OTHER ◀";
}
else if (otherDrop.Text == "▶ OTHER ◀")
{
otherDrop.Text = "▼ OTHER ▼";
}
}
private void gamesQueListBox_MouseClick(object sender, MouseEventArgs e)
{
@@ -2443,12 +2628,6 @@ Things you can try:
Form.Show();
}
private void ThemeChangerButton_Click(object sender, EventArgs e)
{
themeForm Form = new themeForm();
Form.Show();
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
// Determine if clicked column is already the column that is being sorted.
@@ -2612,7 +2791,7 @@ Things you can try:
if (keyData == (Keys.F1) && !dialogisup)
{
dialogisup = true;
FlexibleMessageBox.Show("Shortcuts:\nF1 -------- Shortcuts List\nF2 --OR-- CTRL+F: QuickSearch\nF3 -------- Quest Options\nF4 -------- Rookie Settings\nF5 -------- Refresh Gameslist\n\nCTRL+R - Run custom ADB command.\nCTRL+L - Copy entire list of Game Names to clipboard seperated by new lines.\nALT+L - Copy entire list of Game Names to clipboard seperated by commas(in a paragraph).CTRL+P - Copy packagename to clipboard on game select.\nCTRL + F4 - Instantly relaunch Rookie's Sideloader.");
FlexibleMessageBox.Show("Shortcuts:\nF1 -------- Shortcuts List\nF2 --OR-- CTRL+F: QuickSearch\nF3 -------- Quest Options\nF4 -------- Rookie Settings\nF5 -------- Refresh Gameslist\n\nCTRL+R - Run custom ADB command.\nCTRL+L - Copy entire list of Game Names to clipboard seperated by new lines.\nALT+L - Copy entire list of Game Names to clipboard seperated by commas(in a paragraph).CTRL+P - Copy packagename to clipboard on game select.\nCTRL + F4 - Instantly relaunch Rookie Sideloader.");
dialogisup = false;
}
if (keyData == (Keys.Control | Keys.P))
@@ -2659,8 +2838,6 @@ Things you can try:
}
}
private void ADBcommandbox_Enter(object sender, EventArgs e)
{
ADBcommandbox.Focus();
@@ -2668,10 +2845,9 @@ Things you can try:
}
public void gamesListView_SelectedIndexChanged(object sender, EventArgs e)
{
if (gamesListView.SelectedItems.Count < 1)
return;
string CurrentPackageName = gamesListView.SelectedItems[gamesListView.SelectedItems.Count - 1].SubItems[SideloaderRCLONE.PackageNameIndex].Text;
@@ -3014,4 +3190,4 @@ Things you can try:
}
}
}
}
}

25
Models/PublicConfig.cs Normal file
View File

@@ -0,0 +1,25 @@
using Newtonsoft.Json;
using System;
using System.Text;
namespace AndroidSideloader.Models
{
[JsonObject(MemberSerialization.OptIn)]
public class PublicConfig
{
[JsonProperty("baseUri")]
public string BaseUri { get; set; }
private string password;
[JsonProperty("password")]
public string Password
{
get => password;
set
{
password = Encoding.UTF8.GetString(Convert.FromBase64String(value));
}
}
}
}

50
NewApps.Designer.cs generated
View File

@@ -32,9 +32,9 @@ namespace AndroidSideloader
this.NewAppsListView = new System.Windows.Forms.ListView();
this.GameNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.PackageNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.NewAppsButton = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.NewAppsButton = new AndroidSideloader.RoundButton();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
@@ -73,26 +73,6 @@ namespace AndroidSideloader
//
this.PackageNameIndex.Width = 0;
//
// NewAppsButton
//
this.NewAppsButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.NewAppsButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.NewAppsButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.NewAppsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.NewAppsButton.Location = new System.Drawing.Point(12, 212);
this.NewAppsButton.Name = "NewAppsButton";
this.NewAppsButton.Size = new System.Drawing.Size(288, 29);
this.NewAppsButton.TabIndex = 2;
this.NewAppsButton.Text = "Accept";
this.NewAppsButton.UseVisualStyleBackColor = true;
this.NewAppsButton.Click += new System.EventHandler(this.DonateButton_Click);
this.NewAppsButton.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label2_MouseDown);
this.NewAppsButton.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label2_MouseMove);
this.NewAppsButton.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label2_MouseUp);
//
// panel2
//
this.panel2.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
@@ -119,15 +99,37 @@ namespace AndroidSideloader
this.label2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label2_MouseMove);
this.label2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label2_MouseUp);
//
// NewAppsButton
//
this.NewAppsButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.NewAppsButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.NewAppsButton.BackColor = System.Drawing.Color.Transparent;
this.NewAppsButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.NewAppsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.NewAppsButton.ForeColor = System.Drawing.Color.White;
this.NewAppsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.NewAppsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.NewAppsButton.Location = new System.Drawing.Point(12, 212);
this.NewAppsButton.Name = "NewAppsButton";
this.NewAppsButton.Radius = 5;
this.NewAppsButton.Size = new System.Drawing.Size(288, 29);
this.NewAppsButton.Stroke = true;
this.NewAppsButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.NewAppsButton.TabIndex = 2;
this.NewAppsButton.Text = "Accept";
this.NewAppsButton.Transparency = false;
this.NewAppsButton.Click += new System.EventHandler(this.DonateButton_Click);
//
// NewApps
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.ClientSize = new System.Drawing.Size(313, 248);
this.ControlBox = false;
this.Controls.Add(this.label2);
this.Controls.Add(this.NewAppsButton);
this.Controls.Add(this.label2);
this.Controls.Add(this.panel2);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
@@ -140,16 +142,16 @@ namespace AndroidSideloader
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
this.Activate();
}
#endregion
private System.Windows.Forms.ListView NewAppsListView;
private System.Windows.Forms.ColumnHeader GameNameIndex;
private System.Windows.Forms.Button NewAppsButton;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ColumnHeader PackageNameIndex;
private RoundButton NewAppsButton;
}
}

View File

@@ -2,6 +2,7 @@
using System.Windows.Forms;
using System.Security.Permissions;
using System.IO;
using System.Drawing.Drawing2D;
namespace AndroidSideloader
{
@@ -14,7 +15,7 @@ namespace AndroidSideloader
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
Application.EnableVisualStyles();
@@ -32,4 +33,4 @@ namespace AndroidSideloader
File.WriteAllText(Sideloader.CrashLogPath, $"Date/Time of crash: {date_time}\nMessage: {e.Message}\nData: {e.Data}\nSource: {e.Source}\nTargetSite: {e.TargetSite}");
}
}
}
}

View File

@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
// associated with an assembly.
//[assembly: AssemblyKeyFileAttribute("keypair.snk")]
[assembly: AssemblyTitle("AndroidSideloader")]
[assembly: AssemblyDescription("Rookie's Sideloader")]
[assembly: AssemblyDescription("Rookie Sideloader")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Rookie.WTF")]
[assembly: AssemblyProduct("AndroidSideloader")]

View File

@@ -19,7 +19,7 @@ namespace AndroidSideloader.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Resources {
@@ -103,9 +103,9 @@ namespace AndroidSideloader.Properties {
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap bluekey {
public static System.Drawing.Bitmap Pattern {
get {
object obj = ResourceManager.GetObject("bluekey", resourceCulture);
object obj = ResourceManager.GetObject("Pattern", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -113,9 +113,9 @@ namespace AndroidSideloader.Properties {
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap gametoupload {
public static System.Drawing.Bitmap pattern_cubes_1_1_1_0_0_0_1__000000_212121 {
get {
object obj = ResourceManager.GetObject("gametoupload", resourceCulture);
object obj = ResourceManager.GetObject("pattern_cubes-1_1_1_0-0_0_1__000000_212121", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -123,29 +123,9 @@ namespace AndroidSideloader.Properties {
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap greenkey {
public static System.Drawing.Bitmap pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c {
get {
object obj = ResourceManager.GetObject("greenkey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap orangekey {
get {
object obj = ResourceManager.GetObject("orangekey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap redkey {
get {
object obj = ResourceManager.GetObject("redkey", resourceCulture);
object obj = ResourceManager.GetObject("pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -163,9 +143,9 @@ namespace AndroidSideloader.Properties {
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap UpdatesKey {
public static System.Drawing.Bitmap splashimage {
get {
object obj = ResourceManager.GetObject("UpdatesKey", resourceCulture);
object obj = ResourceManager.GetObject("splashimage", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}

View File

@@ -118,20 +118,17 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="orangekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\orangekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="greenkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\greenkey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="gametoupload" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\gametoupload.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="battery" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\battery.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="battery1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\battery11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="battery" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\battery.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\pattern_herringbone-2_1_3_0-0_90_1__000000_1c1c1c.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="splashimage" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\splashimage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="battery11" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\battery1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -142,13 +139,10 @@
<data name="SearchGlass" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SearchGlass.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="bluekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bluekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="Pattern" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Pattern.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="redkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\redkey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UpdatesKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdatesKey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="pattern_cubes-1_1_1_0-0_0_1__000000_212121" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pattern_cubes-1_1_1_0-0_0_1__000000_212121.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -12,7 +12,7 @@ namespace AndroidSideloader.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -491,18 +491,6 @@ namespace AndroidSideloader.Properties {
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool QblindOn {
get {
return ((bool)(this["QblindOn"]));
}
set {
this["QblindOn"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
@@ -684,7 +672,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("40, 40, 40")]
[global::System.Configuration.DefaultSettingValueAttribute("25, 25, 25")]
public global::System.Drawing.Color ComboBoxColor {
get {
return ((global::System.Drawing.Color)(this["ComboBoxColor"]));
@@ -696,7 +684,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("40, 40, 40")]
[global::System.Configuration.DefaultSettingValueAttribute("25, 25, 25")]
public global::System.Drawing.Color SubButtonColor {
get {
return ((global::System.Drawing.Color)(this["SubButtonColor"]));
@@ -708,7 +696,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("29, 29, 29")]
[global::System.Configuration.DefaultSettingValueAttribute("25, 25, 25")]
public global::System.Drawing.Color TextBoxColor {
get {
return ((global::System.Drawing.Color)(this["TextBoxColor"]));
@@ -720,7 +708,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("50, 50, 50")]
[global::System.Configuration.DefaultSettingValueAttribute("Black")]
public global::System.Drawing.Color ButtonColor {
get {
return ((global::System.Drawing.Color)(this["ButtonColor"]));
@@ -732,7 +720,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("50, 50, 50")]
[global::System.Configuration.DefaultSettingValueAttribute("1, 1, 1")]
public global::System.Drawing.Color BackColor {
get {
return ((global::System.Drawing.Color)(this["BackColor"]));

View File

@@ -119,9 +119,6 @@
<Setting Name="QUturnedon" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="QblindOn" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="adbdebugwarned" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
@@ -168,19 +165,19 @@
<Value Profile="(Default)">White</Value>
</Setting>
<Setting Name="ComboBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">40, 40, 40</Value>
<Value Profile="(Default)">25, 25, 25</Value>
</Setting>
<Setting Name="SubButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">40, 40, 40</Value>
<Value Profile="(Default)">25, 25, 25</Value>
</Setting>
<Setting Name="TextBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">29, 29, 29</Value>
<Value Profile="(Default)">25, 25, 25</Value>
</Setting>
<Setting Name="ButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">50, 50, 50</Value>
<Value Profile="(Default)">Black</Value>
</Setting>
<Setting Name="BackColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">50, 50, 50</Value>
<Value Profile="(Default)">1, 1, 1</Value>
</Setting>
<Setting Name="AppPackages" Type="System.String" Scope="User">
<Value Profile="(Default)" />

406
QuestForm.Designer.cs generated
View File

@@ -36,13 +36,8 @@ namespace AndroidSideloader
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.ResetQU = new System.Windows.Forms.Button();
this.deleteButton = new System.Windows.Forms.Button();
this.questPics = new System.Windows.Forms.Button();
this.questVids = new System.Windows.Forms.Button();
this.label11 = new System.Windows.Forms.Label();
this.QUon = new System.Windows.Forms.CheckBox();
this.button3 = new System.Windows.Forms.Button();
this.label12 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.DeleteShots = new System.Windows.Forms.CheckBox();
@@ -65,16 +60,22 @@ namespace AndroidSideloader
this.UsrBox = new System.Windows.Forms.TextBox();
this.ResBox = new System.Windows.Forms.TextBox();
this.TextureResTextBox = new System.Windows.Forms.TextBox();
this.QUEnable = new System.Windows.Forms.Button();
this.WifiWake = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.QURfrRt = new System.Windows.Forms.ComboBox();
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
this.button1 = new AndroidSideloader.RoundButton();
this.WifiWake = new AndroidSideloader.RoundButton();
this.questVids = new AndroidSideloader.RoundButton();
this.questPics = new AndroidSideloader.RoundButton();
this.QUEnable = new AndroidSideloader.RoundButton();
this.deleteButton = new AndroidSideloader.RoundButton();
this.ResetQU = new AndroidSideloader.RoundButton();
this.button3 = new AndroidSideloader.RoundButton();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.LightCyan;
this.label1.Location = new System.Drawing.Point(31, 5);
@@ -87,12 +88,13 @@ namespace AndroidSideloader
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label2.Location = new System.Drawing.Point(70, 28);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(231, 32);
this.label2.Size = new System.Drawing.Size(230, 32);
this.label2.TabIndex = 6;
this.label2.Text = "Reboot to reset. - Turn screen off, \r\nthen back on with hold button to apply.";
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
@@ -100,6 +102,7 @@ namespace AndroidSideloader
// label3
//
this.label3.AutoSize = true;
this.label3.BackColor = System.Drawing.Color.Transparent;
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.ForeColor = System.Drawing.Color.LightCyan;
@@ -113,77 +116,21 @@ namespace AndroidSideloader
// label4
//
this.label4.AutoSize = true;
this.label4.BackColor = System.Drawing.Color.Transparent;
this.label4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label4.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label4.Location = new System.Drawing.Point(16, 363);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(338, 16);
this.label4.Size = new System.Drawing.Size(337, 16);
this.label4.TabIndex = 6;
this.label4.Text = "Persists on device reboot. Enter 0 to reset any category.\r\n";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// ResetQU
//
this.ResetQU.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.ResetQU.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.ResetQU.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.ResetQU.ForeColor = System.Drawing.SystemColors.ControlLight;
this.ResetQU.Location = new System.Drawing.Point(189, 555);
this.ResetQU.Name = "ResetQU";
this.ResetQU.Size = new System.Drawing.Size(168, 28);
this.ResetQU.TabIndex = 14;
this.ResetQU.Text = "RESET ALL FIELDS";
this.ResetQU.UseVisualStyleBackColor = false;
this.ResetQU.Visible = false;
this.ResetQU.Click += new System.EventHandler(this.ResetQU_click);
//
// deleteButton
//
this.deleteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.deleteButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.deleteButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.deleteButton.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.deleteButton.Location = new System.Drawing.Point(13, 606);
this.deleteButton.Name = "deleteButton";
this.deleteButton.Size = new System.Drawing.Size(167, 25);
this.deleteButton.TabIndex = 15;
this.deleteButton.Text = "DELETE SAVED SETTINGS";
this.deleteButton.UseVisualStyleBackColor = false;
this.deleteButton.Visible = false;
this.deleteButton.Click += new System.EventHandler(this.DeleteButton_Click);
//
// questPics
//
this.questPics.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.questPics.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.questPics.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.questPics.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.questPics.Location = new System.Drawing.Point(15, 265);
this.questPics.Name = "questPics";
this.questPics.Size = new System.Drawing.Size(165, 25);
this.questPics.TabIndex = 5;
this.questPics.Text = "SCREENSHOTS";
this.questPics.UseVisualStyleBackColor = false;
this.questPics.Click += new System.EventHandler(this.questPics_Click);
//
// questVids
//
this.questVids.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.questVids.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.questVids.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.questVids.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.questVids.Location = new System.Drawing.Point(189, 265);
this.questVids.Name = "questVids";
this.questVids.Size = new System.Drawing.Size(167, 25);
this.questVids.TabIndex = 6;
this.questVids.Text = "VIDEOSHOTS";
this.questVids.UseVisualStyleBackColor = false;
this.questVids.Click += new System.EventHandler(this.questVids_Click);
//
// label11
//
this.label11.AutoSize = true;
this.label11.BackColor = System.Drawing.Color.Transparent;
this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label11.ForeColor = System.Drawing.Color.LightCyan;
@@ -197,6 +144,7 @@ namespace AndroidSideloader
// QUon
//
this.QUon.AutoSize = true;
this.QUon.BackColor = System.Drawing.Color.Transparent;
this.QUon.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.QUon.Cursor = System.Windows.Forms.Cursors.Default;
this.QUon.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -208,27 +156,13 @@ namespace AndroidSideloader
this.QUon.TabIndex = 8;
this.QUon.Text = "Enable QU Settings";
this.QUon.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.QUon.UseVisualStyleBackColor = true;
this.QUon.UseVisualStyleBackColor = false;
this.QUon.CheckedChanged += new System.EventHandler(this.QUon_CheckedChanged);
//
// button3
//
this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button3.Enabled = false;
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.button3.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.button3.Location = new System.Drawing.Point(278, 700);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(81, 25);
this.button3.TabIndex = 17;
this.button3.Text = "APPLY";
this.button3.UseVisualStyleBackColor = false;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// label12
//
this.label12.AutoSize = true;
this.label12.BackColor = System.Drawing.Color.Transparent;
this.label12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label12.ForeColor = System.Drawing.Color.LightCyan;
@@ -242,12 +176,13 @@ namespace AndroidSideloader
// label13
//
this.label13.AutoSize = true;
this.label13.BackColor = System.Drawing.Color.Transparent;
this.label13.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label13.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label13.Location = new System.Drawing.Point(83, 678);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(204, 16);
this.label13.Size = new System.Drawing.Size(203, 16);
this.label13.TabIndex = 6;
this.label13.Text = "*For games not released by -QU.";
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
@@ -255,6 +190,7 @@ namespace AndroidSideloader
// DeleteShots
//
this.DeleteShots.AutoSize = true;
this.DeleteShots.BackColor = System.Drawing.Color.Transparent;
this.DeleteShots.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.DeleteShots.Cursor = System.Windows.Forms.Cursors.Default;
this.DeleteShots.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -266,7 +202,7 @@ namespace AndroidSideloader
this.DeleteShots.TabIndex = 7;
this.DeleteShots.Text = "Delete files on Quest after transfer";
this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.DeleteShots.UseVisualStyleBackColor = true;
this.DeleteShots.UseVisualStyleBackColor = false;
this.DeleteShots.CheckedChanged += new System.EventHandler(this.DeleteShots_CheckedChanged);
//
// splitter1
@@ -279,16 +215,16 @@ namespace AndroidSideloader
//
// label10
//
this.label10.BackColor = System.Drawing.Color.White;
this.label10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label10.Location = new System.Drawing.Point(-7, 327);
this.label10.Location = new System.Drawing.Point(-4, 327);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(394, 3);
this.label10.TabIndex = 15;
//
// label14
//
this.label14.BackColor = System.Drawing.Color.White;
this.label14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.label14.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label14.Location = new System.Drawing.Point(-15, 211);
this.label14.Name = "label14";
@@ -297,7 +233,7 @@ namespace AndroidSideloader
//
// label15
//
this.label15.BackColor = System.Drawing.Color.White;
this.label15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.label15.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label15.Location = new System.Drawing.Point(-12, 646);
this.label15.Name = "label15";
@@ -307,22 +243,22 @@ namespace AndroidSideloader
// label16
//
this.label16.AutoSize = true;
this.label16.BackColor = System.Drawing.Color.Transparent;
this.label16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label16.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label16.Location = new System.Drawing.Point(14, 241);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(343, 16);
this.label16.Size = new System.Drawing.Size(342, 16);
this.label16.TabIndex = 6;
this.label16.Text = "Desktop\\Quest Screenshots Desktop\\Quest Videoshots";
this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// CPUComboBox
//
this.CPUComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.CPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.CPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.CPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
@@ -338,13 +274,13 @@ namespace AndroidSideloader
this.CPUComboBox.Size = new System.Drawing.Size(346, 26);
this.CPUComboBox.TabIndex = 2;
this.CPUComboBox.Text = "Select CPU level (0 for default)";
this.CPUComboBox.SelectedIndexChanged += new System.EventHandler(this.CPUComboBox_SelectedIndexChanged);
//
// GPUComboBox
//
this.GPUComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
@@ -360,10 +296,12 @@ namespace AndroidSideloader
this.GPUComboBox.Size = new System.Drawing.Size(346, 26);
this.GPUComboBox.TabIndex = 1;
this.GPUComboBox.Text = "Select GPU level (0 for default)";
this.GPUComboBox.SelectedIndexChanged += new System.EventHandler(this.GPUComboBox_SelectedIndexChanged);
//
// label7
//
this.label7.AutoSize = true;
this.label7.BackColor = System.Drawing.Color.Transparent;
this.label7.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label7.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -371,7 +309,7 @@ namespace AndroidSideloader
this.label7.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label7.Location = new System.Drawing.Point(13, 532);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(63, 18);
this.label7.Size = new System.Drawing.Size(56, 18);
this.label7.TabIndex = 3;
this.label7.Text = "Fov - X";
this.label7.Visible = false;
@@ -379,6 +317,7 @@ namespace AndroidSideloader
// label8
//
this.label8.AutoSize = true;
this.label8.BackColor = System.Drawing.Color.Transparent;
this.label8.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label8.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label8.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -386,7 +325,7 @@ namespace AndroidSideloader
this.label8.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label8.Location = new System.Drawing.Point(191, 532);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(62, 18);
this.label8.Size = new System.Drawing.Size(55, 18);
this.label8.TabIndex = 3;
this.label8.Text = "Fov - Y";
this.label8.Visible = false;
@@ -394,6 +333,7 @@ namespace AndroidSideloader
// label9
//
this.label9.AutoSize = true;
this.label9.BackColor = System.Drawing.Color.Transparent;
this.label9.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label9.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label9.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -401,7 +341,7 @@ namespace AndroidSideloader
this.label9.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label9.Location = new System.Drawing.Point(12, 583);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(107, 18);
this.label9.Size = new System.Drawing.Size(95, 18);
this.label9.TabIndex = 3;
this.label9.Text = "Refresh Rate";
this.label9.Visible = false;
@@ -409,6 +349,7 @@ namespace AndroidSideloader
// label6
//
this.label6.AutoSize = true;
this.label6.BackColor = System.Drawing.Color.Transparent;
this.label6.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label6.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -416,7 +357,7 @@ namespace AndroidSideloader
this.label6.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label6.Location = new System.Drawing.Point(93, 484);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(194, 18);
this.label6.Size = new System.Drawing.Size(173, 18);
this.label6.TabIndex = 3;
this.label6.Text = "Enter Custom Username";
this.label6.Visible = false;
@@ -424,6 +365,7 @@ namespace AndroidSideloader
// label5
//
this.label5.AutoSize = true;
this.label5.BackColor = System.Drawing.Color.Transparent;
this.label5.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label5.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
@@ -431,7 +373,7 @@ namespace AndroidSideloader
this.label5.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label5.Location = new System.Drawing.Point(16, 434);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(385, 18);
this.label5.Size = new System.Drawing.Size(337, 18);
this.label5.TabIndex = 3;
this.label5.Text = "Custom Resolution Width (Height auto calculated)";
this.label5.Visible = false;
@@ -439,14 +381,15 @@ namespace AndroidSideloader
// ResolutionLabel
//
this.ResolutionLabel.AutoSize = true;
this.ResolutionLabel.BackColor = System.Drawing.Color.Transparent;
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResolutionLabel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.ResolutionLabel.Location = new System.Drawing.Point(9, 180);
this.ResolutionLabel.Location = new System.Drawing.Point(12, 183);
this.ResolutionLabel.Name = "ResolutionLabel";
this.ResolutionLabel.Size = new System.Drawing.Size(175, 18);
this.ResolutionLabel.Size = new System.Drawing.Size(153, 18);
this.ResolutionLabel.TabIndex = 3;
this.ResolutionLabel.Text = "Resolution (0=default)";
//
@@ -542,58 +485,6 @@ namespace AndroidSideloader
this.TextureResTextBox.TabIndex = 3;
this.TextureResTextBox.Text = "0";
//
// QUEnable
//
this.QUEnable.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QUEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.QUEnable.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.QUEnable.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.QUEnable.Location = new System.Drawing.Point(189, 606);
this.QUEnable.Name = "QUEnable";
this.QUEnable.Size = new System.Drawing.Size(170, 25);
this.QUEnable.TabIndex = 16;
this.QUEnable.Text = "APPLY";
this.QUEnable.UseVisualStyleBackColor = false;
this.QUEnable.Visible = false;
this.QUEnable.Click += new System.EventHandler(this.QUEnable_Click);
//
// WifiWake
//
this.WifiWake.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.WifiWake.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.WifiWake.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.WifiWake.Location = new System.Drawing.Point(189, 180);
this.WifiWake.Name = "WifiWake";
this.WifiWake.Size = new System.Drawing.Size(170, 25);
this.WifiWake.TabIndex = 4;
this.WifiWake.Text = "ENABLE WIFI WAKE";
this.WifiWake.UseVisualStyleBackColor = false;
this.WifiWake.Click += new System.EventHandler(this.WifiWake_Click);
//
// button1
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.button1.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.button1.Location = new System.Drawing.Point(189, 152);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(169, 25);
this.button1.TabIndex = 4;
this.button1.Text = "APPLY";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// QURfrRt
//
this.QURfrRt.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
@@ -619,10 +510,9 @@ namespace AndroidSideloader
//
// RefreshRateComboBox
//
this.RefreshRateComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
@@ -636,24 +526,197 @@ namespace AndroidSideloader
this.RefreshRateComboBox.Size = new System.Drawing.Size(346, 26);
this.RefreshRateComboBox.TabIndex = 0;
this.RefreshRateComboBox.Text = "Select refresh rate";
this.RefreshRateComboBox.SelectedIndexChanged += new System.EventHandler(this.RefreshRateComboBox_SelectedIndexChanged);
//
// button1
//
this.button1.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.button1.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.button1.BackColor = System.Drawing.Color.Transparent;
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.button1.ForeColor = System.Drawing.Color.White;
this.button1.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.button1.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.button1.Location = new System.Drawing.Point(189, 152);
this.button1.Name = "button1";
this.button1.Radius = 5;
this.button1.Size = new System.Drawing.Size(170, 25);
this.button1.Stroke = true;
this.button1.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.button1.TabIndex = 19;
this.button1.Text = "APPLY";
this.button1.Transparency = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// WifiWake
//
this.WifiWake.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.WifiWake.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.WifiWake.BackColor = System.Drawing.Color.Transparent;
this.WifiWake.DialogResult = System.Windows.Forms.DialogResult.OK;
this.WifiWake.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.WifiWake.ForeColor = System.Drawing.Color.White;
this.WifiWake.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.WifiWake.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.WifiWake.Location = new System.Drawing.Point(189, 180);
this.WifiWake.Name = "WifiWake";
this.WifiWake.Radius = 5;
this.WifiWake.Size = new System.Drawing.Size(170, 25);
this.WifiWake.Stroke = true;
this.WifiWake.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.WifiWake.TabIndex = 20;
this.WifiWake.Text = "ENABLE WIFI WAKE";
this.WifiWake.Transparency = false;
this.WifiWake.Click += new System.EventHandler(this.WifiWake_Click);
//
// questVids
//
this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.questVids.BackColor = System.Drawing.Color.Transparent;
this.questVids.DialogResult = System.Windows.Forms.DialogResult.OK;
this.questVids.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.questVids.ForeColor = System.Drawing.Color.White;
this.questVids.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.questVids.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.questVids.Location = new System.Drawing.Point(189, 265);
this.questVids.Name = "questVids";
this.questVids.Radius = 5;
this.questVids.Size = new System.Drawing.Size(167, 25);
this.questVids.Stroke = true;
this.questVids.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.questVids.TabIndex = 21;
this.questVids.Text = "VIDEOSHOTS";
this.questVids.Transparency = false;
this.questVids.Click += new System.EventHandler(this.questVids_Click);
//
// questPics
//
this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.questPics.BackColor = System.Drawing.Color.Transparent;
this.questPics.DialogResult = System.Windows.Forms.DialogResult.OK;
this.questPics.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.questPics.ForeColor = System.Drawing.Color.White;
this.questPics.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.questPics.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.questPics.Location = new System.Drawing.Point(15, 265);
this.questPics.Name = "questPics";
this.questPics.Radius = 5;
this.questPics.Size = new System.Drawing.Size(165, 25);
this.questPics.Stroke = true;
this.questPics.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.questPics.TabIndex = 22;
this.questPics.Text = "SCREENSHOTS";
this.questPics.Transparency = false;
this.questPics.Click += new System.EventHandler(this.questPics_Click);
//
// QUEnable
//
this.QUEnable.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.QUEnable.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.QUEnable.BackColor = System.Drawing.Color.Transparent;
this.QUEnable.DialogResult = System.Windows.Forms.DialogResult.OK;
this.QUEnable.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.QUEnable.ForeColor = System.Drawing.Color.White;
this.QUEnable.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.QUEnable.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.QUEnable.Location = new System.Drawing.Point(189, 606);
this.QUEnable.Name = "QUEnable";
this.QUEnable.Radius = 5;
this.QUEnable.Size = new System.Drawing.Size(170, 25);
this.QUEnable.Stroke = true;
this.QUEnable.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.QUEnable.TabIndex = 24;
this.QUEnable.Text = "APPLY";
this.QUEnable.Transparency = false;
this.QUEnable.Click += new System.EventHandler(this.QUEnable_Click);
//
// deleteButton
//
this.deleteButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.deleteButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.deleteButton.BackColor = System.Drawing.Color.Transparent;
this.deleteButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.deleteButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.deleteButton.ForeColor = System.Drawing.Color.White;
this.deleteButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.deleteButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.deleteButton.Location = new System.Drawing.Point(13, 606);
this.deleteButton.Name = "deleteButton";
this.deleteButton.Radius = 5;
this.deleteButton.Size = new System.Drawing.Size(167, 25);
this.deleteButton.Stroke = true;
this.deleteButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.deleteButton.TabIndex = 25;
this.deleteButton.Text = "DELETE SAVED";
this.deleteButton.Transparency = false;
this.deleteButton.Click += new System.EventHandler(this.DeleteButton_Click);
//
// ResetQU
//
this.ResetQU.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.ResetQU.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.ResetQU.BackColor = System.Drawing.Color.Transparent;
this.ResetQU.DialogResult = System.Windows.Forms.DialogResult.OK;
this.ResetQU.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.ResetQU.ForeColor = System.Drawing.Color.White;
this.ResetQU.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.ResetQU.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.ResetQU.Location = new System.Drawing.Point(189, 555);
this.ResetQU.Name = "ResetQU";
this.ResetQU.Radius = 5;
this.ResetQU.Size = new System.Drawing.Size(168, 28);
this.ResetQU.Stroke = true;
this.ResetQU.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.ResetQU.TabIndex = 26;
this.ResetQU.Text = "RESET ALL FIELDS";
this.ResetQU.Transparency = false;
this.ResetQU.Click += new System.EventHandler(this.ResetQU_click);
//
// button3
//
this.button3.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.button3.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.button3.BackColor = System.Drawing.Color.Transparent;
this.button3.DialogResult = System.Windows.Forms.DialogResult.OK;
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.button3.ForeColor = System.Drawing.Color.White;
this.button3.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.button3.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.button3.Location = new System.Drawing.Point(278, 700);
this.button3.Name = "button3";
this.button3.Radius = 5;
this.button3.Size = new System.Drawing.Size(81, 25);
this.button3.Stroke = true;
this.button3.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.button3.TabIndex = 27;
this.button3.Text = "APPLY";
this.button3.Transparency = false;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// QuestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.ClientSize = new System.Drawing.Size(370, 737);
this.Controls.Add(this.button3);
this.Controls.Add(this.ResetQU);
this.Controls.Add(this.deleteButton);
this.Controls.Add(this.QUEnable);
this.Controls.Add(this.questPics);
this.Controls.Add(this.questVids);
this.Controls.Add(this.WifiWake);
this.Controls.Add(this.button1);
this.Controls.Add(this.label15);
this.Controls.Add(this.label14);
this.Controls.Add(this.label10);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.questVids);
this.Controls.Add(this.questPics);
this.Controls.Add(this.button3);
this.Controls.Add(this.deleteButton);
this.Controls.Add(this.DeleteShots);
this.Controls.Add(this.QUon);
this.Controls.Add(this.ResetQU);
this.Controls.Add(this.label13);
this.Controls.Add(this.label4);
this.Controls.Add(this.label16);
@@ -676,9 +739,6 @@ namespace AndroidSideloader
this.Controls.Add(this.UsrBox);
this.Controls.Add(this.ResBox);
this.Controls.Add(this.TextureResTextBox);
this.Controls.Add(this.QUEnable);
this.Controls.Add(this.WifiWake);
this.Controls.Add(this.button1);
this.Controls.Add(this.QURfrRt);
this.Controls.Add(this.RefreshRateComboBox);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
@@ -693,13 +753,12 @@ namespace AndroidSideloader
this.Load += new System.EventHandler(this.QuestForm_Load);
this.ResumeLayout(false);
this.PerformLayout();
this.Activate();
}
#endregion
private System.Windows.Forms.ComboBox RefreshRateComboBox;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox TextureResTextBox;
private System.Windows.Forms.Label ResolutionLabel;
private System.Windows.Forms.ComboBox GPUComboBox;
@@ -713,19 +772,13 @@ namespace AndroidSideloader
private TextBox UsrBox;
private TextBox FOVx;
private TextBox FOVy;
private Button QUEnable;
private Button ResetQU;
private Label label5;
private Label label6;
private Label label7;
private Label label8;
private Label label9;
private Button deleteButton;
private Button questPics;
private Button questVids;
private Label label11;
private CheckBox QUon;
private Button button3;
private Label label12;
private Label label13;
private CheckBox DeleteShots;
@@ -734,8 +787,15 @@ namespace AndroidSideloader
private Label label14;
private Label label15;
private Label label16;
private Button WifiWake;
private TextBox GlobalUsername;
private RoundButton button1;
private RoundButton WifiWake;
private RoundButton questVids;
private RoundButton questPics;
private RoundButton QUEnable;
private RoundButton deleteButton;
private RoundButton ResetQU;
private RoundButton button3;
}
}

View File

@@ -355,5 +355,20 @@ namespace AndroidSideloader
Properties.Settings.Default.GlobalUsername = GlobalUsername.Text;
Properties.Settings.Default.Save();
}
private void RefreshRateComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void CPUComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void GPUComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}

177
RCLONE.cs
View File

@@ -27,14 +27,15 @@ namespace AndroidSideloader
}
//Change if you want to use a config
public static string configPath = ""; // ".\\a"
public static string downloadConfigPath = "vrp.download.config";
public static string uploadConfigPath = "vrp.upload.config";
public static string rclonepw = "";
private static Process rclone = new Process();
//Run rclone command
public static ProcessOutput runRcloneCommand(string command, string bandwithLimit = "")
public static ProcessOutput runRcloneCommand_DownloadConfig(string command, string bandwithLimit = "")
{
if (!MainForm.HasInternet || MainForm.isOffline)
{
@@ -53,9 +54,9 @@ namespace AndroidSideloader
}
//set configpath if there is any
if (configPath.Length > 0)
if (downloadConfigPath.Length > 0)
{
command += $" --config {configPath}";
command += $" --config {downloadConfigPath}";
}
//set rclonepw
@@ -101,7 +102,7 @@ namespace AndroidSideloader
{
return new ProcessOutput("All mirrors are on quota or down...", "All mirrors are on quota or down...");
}
prcoutput = runRcloneCommand(originalCommand.Replace(oldRemote, MainForm.currentRemote), bandwithLimit);
prcoutput = runRcloneCommand_DownloadConfig(originalCommand.Replace(oldRemote, MainForm.currentRemote), bandwithLimit);
}
else
{
@@ -127,7 +128,173 @@ namespace AndroidSideloader
FlexibleMessageBox.Show("There isn't enough space on your PC to properly install this game. Please have at least 2x the size of the game you are trying to download/install available on the drive where Rookie is installed.", "NOT ENOUGH SPACE");
}
return prcoutput;
}
public static ProcessOutput runRcloneCommand_UploadConfig(string command, string bandwithLimit = "")
{
if (!MainForm.HasInternet || MainForm.isOffline)
{
return new ProcessOutput("", "No internet");
}
ProcessOutput prcoutput = new ProcessOutput();
//Rclone output is unicode, else it will show garbage instead of unicode characters
rclone.StartInfo.StandardOutputEncoding = Encoding.UTF8;
string originalCommand = command;
//set bandwidth limit
if (bandwithLimit.Length > 0)
{
command += $" --bwlimit={bandwithLimit}";
}
//set configpath if there is any
if (uploadConfigPath.Length > 0)
{
command += $" --config {uploadConfigPath}";
}
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
Logger.Log($"Running Rclone command: {logcmd}");
command += " --checkers 0 --no-check-dest --retries 1";
rclone.StartInfo.FileName = Environment.CurrentDirectory + "\\rclone\\rclone.exe";
rclone.StartInfo.Arguments = command;
rclone.StartInfo.RedirectStandardInput = true;
rclone.StartInfo.RedirectStandardError = true;
rclone.StartInfo.RedirectStandardOutput = true;
rclone.StartInfo.WorkingDirectory = Environment.CurrentDirectory + "\\rclone";
rclone.StartInfo.CreateNoWindow = true;
//On debug we want to see when rclone is open
if (MainForm.debugMode == true)
rclone.StartInfo.CreateNoWindow = false;
rclone.StartInfo.UseShellExecute = false;
rclone.Start();
rclone.StandardInput.WriteLine(command);
rclone.StandardInput.Flush();
rclone.StandardInput.Close();
string output = rclone.StandardOutput.ReadToEnd();
string error = rclone.StandardError.ReadToEnd();
rclone.WaitForExit();
//if there is one of these errors, we switch the mirrors
if (error.Contains("400 Bad Request") || error.Contains("cannot fetch token") || error.Contains("authError") || error.Contains("quota") || error.Contains("exceeded") || error.Contains("directory not found") || error.Contains("Failed to"))
{
Logger.Log(error);
return new ProcessOutput("Upload Failed.", "Upload failed.");
}
else
{
prcoutput.Output = output;
prcoutput.Error = error;
}
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:") && !output.Contains(".meta"))
{
if (!string.IsNullOrWhiteSpace(error))
{
Logger.Log($"Rclone error: {error}\n");
}
if (!string.IsNullOrWhiteSpace(output))
{
Logger.Log($"Rclone Output: {output}");
}
}
if (output.Contains("There is not enough space"))
{
FlexibleMessageBox.Show("There isn't enough space on your PC to properly install this game. Please have at least 2x the size of the game you are trying to download/install available on the drive where Rookie is installed.", "NOT ENOUGH SPACE");
}
return prcoutput;
}
public static ProcessOutput runRcloneCommand_PublicConfig(string command, string bandwithLimit = "")
{
if (!MainForm.HasInternet || MainForm.isOffline)
{
return new ProcessOutput("", "No internet");
}
ProcessOutput prcoutput = new ProcessOutput();
//Rclone output is unicode, else it will show garbage instead of unicode characters
rclone.StartInfo.StandardOutputEncoding = Encoding.UTF8;
string originalCommand = command;
//set bandwidth limit
if (bandwithLimit.Length > 0)
{
command += $" --bwlimit={bandwithLimit}";
}
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
Logger.Log($"Running Rclone command: {logcmd}");
//set http source & args
command += $" --http-url {MainForm.PublicConfigFile.BaseUri} {MainForm.PublicMirrorExtraArgs}";
rclone.StartInfo.FileName = Environment.CurrentDirectory + "\\rclone\\rclone.exe";
rclone.StartInfo.Arguments = command;
rclone.StartInfo.RedirectStandardInput = true;
rclone.StartInfo.RedirectStandardError = true;
rclone.StartInfo.RedirectStandardOutput = true;
rclone.StartInfo.WorkingDirectory = Environment.CurrentDirectory + "\\rclone";
rclone.StartInfo.CreateNoWindow = true;
//On debug we want to see when rclone is open
if (MainForm.debugMode == true)
rclone.StartInfo.CreateNoWindow = false;
rclone.StartInfo.UseShellExecute = false;
rclone.Start();
rclone.StandardInput.WriteLine(command);
rclone.StandardInput.Flush();
rclone.StandardInput.Close();
string output = rclone.StandardOutput.ReadToEnd();
string error = rclone.StandardError.ReadToEnd();
rclone.WaitForExit();
//if there is one of these errors, we switch the mirrors
if (error.Contains("400 Bad Request") || error.Contains("cannot fetch token") || error.Contains("authError") || error.Contains("quota") || error.Contains("exceeded") || error.Contains("directory not found") || error.Contains("Failed to"))
{
Logger.Log(error);
return new ProcessOutput("Failed to fetch from public mirror.", "Failed to fetch from public mirror.");
}
else
{
prcoutput.Output = output;
prcoutput.Error = error;
}
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:") && !output.Contains(".meta"))
{
if (!string.IsNullOrWhiteSpace(error))
{
Logger.Log($"Rclone error: {error}\n");
}
if (!string.IsNullOrWhiteSpace(output))
{
Logger.Log($"Rclone Output: {output}");
}
}
if (output.Contains("There is not enough space"))
{
FlexibleMessageBox.Show("There isn't enough space on your PC to properly install this game. Please have at least 2x the size of the game you are trying to download/install available on the drive where Rookie is installed.", "NOT ENOUGH SPACE");
}
return prcoutput;
}
}
}

BIN
Resources/Pattern.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

BIN
Resources/splash.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
Resources/splashimage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

10
Rookie Offline.cmd Normal file
View File

@@ -0,0 +1,10 @@
@echo off
for /f "tokens=* usebackq" %%f in (`dir /b AndroidSideloader*.exe`) do (set "sideloader=%%f" & goto :next)
:next
echo %sideloader%
start "" "%sideloader%" "--offline"

308
RoundButton.cs Normal file
View File

@@ -0,0 +1,308 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace AndroidSideloader
{
[Description("Rounded Button")]
public class RoundButton : Control, IButtonControl
{
#region Variables
int radius;
bool transparency;
MouseState state;
RoundedRectangleF roundedRect;
Color inactive1, inactive2, active1, active2;
private Color strokeColor;
private bool stroke;
internal bool UseVisualStyleBackColor;
internal FlatStyle FlatStyle;
public bool Stroke
{
get { return stroke; }
set
{
stroke = value;
Invalidate();
}
}
public Color StrokeColor
{
get { return strokeColor; }
set
{
strokeColor = value;
Invalidate();
}
}
#endregion
#region RoundButton
public RoundButton()
{
Width = 65;
Height = 30;
stroke = false;
strokeColor = Color.Gray;
inactive1 = Color.FromArgb(44, 188, 210);
inactive2 = Color.FromArgb(33, 167, 188);
active1 = Color.FromArgb(64, 168, 183);
active2 = Color.FromArgb(36, 164, 183);
radius = 10;
roundedRect = new RoundedRectangleF(Width, Height, radius);
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor |
ControlStyles.UserPaint, true);
BackColor = Color.Transparent;
ForeColor = Color.Black;
Font = new System.Drawing.Font("Comic Sans MS", 10, FontStyle.Bold);
state = MouseState.Leave;
transparency = false;
}
#endregion
#region Events
protected override void OnPaint(PaintEventArgs e)
{
#region Transparency
if (transparency)
Transparenter.MakeTransparent(this, e.Graphics);
#endregion
#region Drawing
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
roundedRect = new RoundedRectangleF(Width, Height, radius);
e.Graphics.FillRectangle(Brushes.Transparent, this.ClientRectangle);
int R1 = (active1.R + inactive1.R) / 2;
int G1 = (active1.G + inactive1.G) / 2;
int B1 = (active1.B + inactive1.B) / 2;
int R2 = (active2.R + inactive2.R) / 2;
int G2 = (active2.G + inactive2.G) / 2;
int B2 = (active2.B + inactive2.B) / 2;
Rectangle rect = new Rectangle(0, 0, Width, Height);
if (this.Enabled)
{
if (state == MouseState.Leave)
using (LinearGradientBrush inactiveGB = new LinearGradientBrush(rect, inactive1, inactive2, 90f))
e.Graphics.FillPath(inactiveGB, roundedRect.Path);
else if (state == MouseState.Enter)
using (LinearGradientBrush activeGB = new LinearGradientBrush(rect, active1, active2, 90f))
e.Graphics.FillPath(activeGB, roundedRect.Path);
else if (state == MouseState.Down)
using (LinearGradientBrush downGB = new LinearGradientBrush(rect, Color.FromArgb(R1, G1, B1), Color.FromArgb(R2, G2, B2), 90f))
e.Graphics.FillPath(downGB, roundedRect.Path);
if (stroke)
using (Pen pen = new Pen(strokeColor, 1))
using (GraphicsPath path = new RoundedRectangleF(Width - (radius > 0 ? 0 : 1), Height - (radius > 0 ? 0 : 1), radius).Path)
e.Graphics.DrawPath(pen, path);
}
else
{
Color linear1 = Color.FromArgb(190, 190, 190);
Color linear2 = Color.FromArgb(210, 210, 210);
using (LinearGradientBrush inactiveGB = new LinearGradientBrush(rect, linear1, linear2, 90f))
{
e.Graphics.FillPath(inactiveGB, roundedRect.Path);
e.Graphics.DrawPath(new Pen(inactiveGB), roundedRect.Path);
}
}
#endregion
#region Text Drawing
using (StringFormat sf = new StringFormat()
{
LineAlignment = StringAlignment.Center,
Alignment = StringAlignment.Center,
})
using (Brush brush = new SolidBrush(ForeColor))
e.Graphics.DrawString(Text, Font, brush, this.ClientRectangle, sf);
#endregion
base.OnPaint(e);
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
{
base.OnMouseDoubleClick(e);
base.OnClick(e);
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
}
protected override void OnEnabledChanged(EventArgs e)
{
Invalidate();
base.OnEnabledChanged(e);
}
protected override void OnResize(EventArgs e)
{
Invalidate();
base.OnResize(e);
}
protected override void OnMouseEnter(EventArgs e)
{
state = MouseState.Enter;
base.OnMouseEnter(e);
Invalidate();
}
protected override void OnMouseLeave(EventArgs e)
{
state = MouseState.Leave;
base.OnMouseLeave(e);
Invalidate();
}
protected override void OnMouseDown(MouseEventArgs e)
{
Capture = false;
state = MouseState.Down;
base.OnMouseDown(e);
Invalidate();
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (state != MouseState.Leave)
state = MouseState.Enter;
base.OnMouseUp(e);
Invalidate();
}
#endregion
#region Properties
public int Radius
{
get
{
return radius;
}
set
{
radius = value;
Invalidate();
}
}
public Color Inactive1
{
get
{
return inactive1;
}
set
{
inactive1 = value;
Invalidate();
}
}
public Color Inactive2
{
get
{
return inactive2;
}
set
{
inactive2 = value;
Invalidate();
}
}
public Color Active1
{
get
{
return active1;
}
set
{
active1 = value;
Invalidate();
}
}
public Color Active2
{
get
{
return active2;
}
set
{
active2 = value;
Invalidate();
}
}
public bool Transparency
{
get
{
return transparency;
}
set
{
transparency = value;
}
}
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
Invalidate();
}
}
public override Color ForeColor
{
get
{
return base.ForeColor;
}
set
{
base.ForeColor = value;
Invalidate();
}
}
public DialogResult DialogResult
{
get
{
return System.Windows.Forms.DialogResult.OK;
}
set
{
}
}
public void NotifyDefault(bool value)
{
}
public void PerformClick()
{
OnClick(EventArgs.Empty);
}
#endregion
}
public enum MouseState
{
Enter,
Leave,
Down,
Up,
}
}

73
RoundedRectangleF.cs Normal file
View File

@@ -0,0 +1,73 @@
using System.Drawing;
using System.Drawing.Drawing2D;
namespace AndroidSideloader
{
public class RoundedRectangleF
{
Point location;
float radius;
GraphicsPath grPath;
float x, y;
float width, height;
public RoundedRectangleF(float width, float height, float radius, float x = 0, float y = 0)
{
location = new Point(0, 0);
this.radius = radius;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
grPath = new GraphicsPath();
if (radius <= 0)
{
grPath.AddRectangle(new RectangleF(x, y, width, height));
return;
}
RectangleF upperLeftRect = new RectangleF(x, y, 2 * radius, 2 * radius);
RectangleF upperRightRect = new RectangleF(width - 2 * radius - 1, x, 2 * radius, 2 * radius);
RectangleF lowerLeftRect = new RectangleF(x, height - 2 * radius - 1, 2 * radius, 2 * radius);
RectangleF lowerRightRect = new RectangleF(width - 2 * radius - 1, height - 2 * radius - 1, 2 * radius, 2 * radius);
grPath.AddArc(upperLeftRect, 180, 90);
grPath.AddArc(upperRightRect, 270, 90);
grPath.AddArc(lowerRightRect, 0, 90);
grPath.AddArc(lowerLeftRect, 90, 90);
grPath.CloseAllFigures();
}
public RoundedRectangleF()
{
}
public GraphicsPath Path
{
get
{
return grPath;
}
}
public RectangleF Rect
{
get
{
return new RectangleF(x, y, width, height);
}
}
public float Radius
{
get
{
return radius;
}
set
{
radius = value;
}
}
}
}

260
SettingsForm.Designer.cs generated
View File

@@ -29,39 +29,39 @@
private void InitializeComponent()
{
this.checkForUpdatesCheckBox = new System.Windows.Forms.CheckBox();
this.applyButton = new System.Windows.Forms.Button();
this.enableMessageBoxesCheckBox = new System.Windows.Forms.CheckBox();
this.resetSettingsButton = new System.Windows.Forms.Button();
this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
this.updateConfigCheckBox = new System.Windows.Forms.CheckBox();
this.userJsonOnGameInstall = new System.Windows.Forms.CheckBox();
this.BandwithTextbox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.BandwithComboBox = new System.Windows.Forms.ComboBox();
this.DebugLogCopy = new System.Windows.Forms.Button();
this.crashlogID = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.debuglogID = new System.Windows.Forms.Label();
this.DebugID = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.CblindBox = new System.Windows.Forms.CheckBox();
this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
this.bmbfBox = new System.Windows.Forms.CheckBox();
this.AutoReinstBox = new System.Windows.Forms.CheckBox();
this.applyButton = new AndroidSideloader.RoundButton();
this.resetSettingsButton = new AndroidSideloader.RoundButton();
this.DebugLogCopy = new AndroidSideloader.RoundButton();
this.Button1 = new AndroidSideloader.RoundButton();
this.SuspendLayout();
//
// checkForUpdatesCheckBox
//
this.checkForUpdatesCheckBox.AutoSize = true;
this.checkForUpdatesCheckBox.BackColor = System.Drawing.Color.Transparent;
this.checkForUpdatesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(12, 12);
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(165, 22);
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(148, 22);
this.checkForUpdatesCheckBox.TabIndex = 0;
this.checkForUpdatesCheckBox.Text = "Check for updates";
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = true;
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = false;
this.checkForUpdatesCheckBox.CheckedChanged += new System.EventHandler(this.checkForUpdatesCheckBox_CheckedChanged);
//
// applyButton
@@ -84,70 +84,57 @@
// enableMessageBoxesCheckBox
//
this.enableMessageBoxesCheckBox.AutoSize = true;
this.enableMessageBoxesCheckBox.BackColor = System.Drawing.Color.Transparent;
this.enableMessageBoxesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(12, 39);
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(12, 38);
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(347, 22);
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
this.enableMessageBoxesCheckBox.TabIndex = 1;
this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = true;
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = false;
this.enableMessageBoxesCheckBox.CheckedChanged += new System.EventHandler(this.enableMessageBoxesCheckBox_CheckedChanged);
//
// resetSettingsButton
//
this.resetSettingsButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.resetSettingsButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.resetSettingsButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.resetSettingsButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.resetSettingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.resetSettingsButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.resetSettingsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.resetSettingsButton.Location = new System.Drawing.Point(174, 328);
this.resetSettingsButton.Name = "resetSettingsButton";
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
this.resetSettingsButton.TabIndex = 4;
this.resetSettingsButton.Text = "Reset Settings";
this.resetSettingsButton.UseVisualStyleBackColor = false;
this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
//
// deleteAfterInstallCheckBox
//
this.deleteAfterInstallCheckBox.AutoSize = true;
this.deleteAfterInstallCheckBox.BackColor = System.Drawing.Color.Transparent;
this.deleteAfterInstallCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 65);
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 64);
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(327, 22);
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
this.deleteAfterInstallCheckBox.TabIndex = 3;
this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = true;
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = false;
this.deleteAfterInstallCheckBox.CheckedChanged += new System.EventHandler(this.deleteAfterInstallCheckBox_CheckedChanged);
//
// updateConfigCheckBox
//
this.updateConfigCheckBox.AutoSize = true;
this.updateConfigCheckBox.BackColor = System.Drawing.Color.Transparent;
this.updateConfigCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.updateConfigCheckBox.Location = new System.Drawing.Point(12, 92);
this.updateConfigCheckBox.Location = new System.Drawing.Point(12, 90);
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
this.updateConfigCheckBox.Size = new System.Drawing.Size(235, 22);
this.updateConfigCheckBox.Size = new System.Drawing.Size(208, 22);
this.updateConfigCheckBox.TabIndex = 6;
this.updateConfigCheckBox.Text = "Update config automatically";
this.updateConfigCheckBox.UseVisualStyleBackColor = true;
this.updateConfigCheckBox.UseVisualStyleBackColor = false;
this.updateConfigCheckBox.CheckedChanged += new System.EventHandler(this.updateConfigCheckBox_CheckedChanged);
//
// userJsonOnGameInstall
//
this.userJsonOnGameInstall.AutoSize = true;
this.userJsonOnGameInstall.BackColor = System.Drawing.Color.Transparent;
this.userJsonOnGameInstall.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 119);
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 116);
this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
this.userJsonOnGameInstall.Size = new System.Drawing.Size(275, 22);
this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
this.userJsonOnGameInstall.TabIndex = 9;
this.userJsonOnGameInstall.Text = "Push random user.json on install";
this.userJsonOnGameInstall.UseVisualStyleBackColor = true;
this.userJsonOnGameInstall.UseVisualStyleBackColor = false;
this.userJsonOnGameInstall.CheckedChanged += new System.EventHandler(this.userJsonOnGameInstall_CheckedChanged);
//
// BandwithTextbox
@@ -158,7 +145,7 @@
this.BandwithTextbox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.BandwithTextbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.BandwithTextbox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.BandwithTextbox.Location = new System.Drawing.Point(52, 296);
this.BandwithTextbox.Location = new System.Drawing.Point(29, 248);
this.BandwithTextbox.Name = "BandwithTextbox";
this.BandwithTextbox.Size = new System.Drawing.Size(177, 24);
this.BandwithTextbox.TabIndex = 11;
@@ -166,11 +153,12 @@
// label1
//
this.label1.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent;
this.label1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.label1.Location = new System.Drawing.Point(40, 273);
this.label1.Location = new System.Drawing.Point(48, 225);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(281, 18);
this.label1.Size = new System.Drawing.Size(245, 18);
this.label1.TabIndex = 12;
this.label1.Text = "Download speed limiter, 0 to disable";
//
@@ -189,58 +177,25 @@
"K",
"M",
"G"});
this.BandwithComboBox.Location = new System.Drawing.Point(235, 296);
this.BandwithComboBox.Location = new System.Drawing.Point(258, 246);
this.BandwithComboBox.Name = "BandwithComboBox";
this.BandwithComboBox.Size = new System.Drawing.Size(55, 26);
this.BandwithComboBox.TabIndex = 13;
//
// DebugLogCopy
//
this.DebugLogCopy.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DebugLogCopy.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.DebugLogCopy.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.DebugLogCopy.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.DebugLogCopy.Location = new System.Drawing.Point(29, 373);
this.DebugLogCopy.Name = "DebugLogCopy";
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
this.DebugLogCopy.TabIndex = 5;
this.DebugLogCopy.Text = "Send DebugLog to server.";
this.DebugLogCopy.UseVisualStyleBackColor = false;
this.DebugLogCopy.Click += new System.EventHandler(this.DebugLogCopy_click);
//
// crashlogID
//
this.crashlogID.AutoSize = true;
this.crashlogID.Location = new System.Drawing.Point(13, 489);
this.crashlogID.Location = new System.Drawing.Point(13, 439);
this.crashlogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.crashlogID.Name = "crashlogID";
this.crashlogID.Size = new System.Drawing.Size(0, 13);
this.crashlogID.TabIndex = 15;
//
// button1
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.button1.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.button1.Location = new System.Drawing.Point(29, 408);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(285, 31);
this.button1.TabIndex = 5;
this.button1.Text = "Reset Debug Log";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_click);
//
// debuglogID
//
this.debuglogID.BackColor = System.Drawing.Color.Transparent;
this.debuglogID.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
this.debuglogID.Location = new System.Drawing.Point(29, 484);
this.debuglogID.Location = new System.Drawing.Point(29, 434);
this.debuglogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.debuglogID.Name = "debuglogID";
this.debuglogID.Size = new System.Drawing.Size(285, 48);
@@ -250,12 +205,12 @@
// DebugID
//
this.DebugID.AccessibleRole = System.Windows.Forms.AccessibleRole.Row;
this.DebugID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.DebugID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.DebugID.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.DebugID.Cursor = System.Windows.Forms.Cursors.Default;
this.DebugID.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Bold);
this.DebugID.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.DebugID.Location = new System.Drawing.Point(29, 455);
this.DebugID.Location = new System.Drawing.Point(29, 405);
this.DebugID.Margin = new System.Windows.Forms.Padding(2);
this.DebugID.Name = "DebugID";
this.DebugID.ReadOnly = true;
@@ -267,8 +222,9 @@
//
// label2
//
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
this.label2.Location = new System.Drawing.Point(29, 555);
this.label2.Location = new System.Drawing.Point(29, 505);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(284, 86);
@@ -280,12 +236,12 @@
// textBox1
//
this.textBox1.AccessibleRole = System.Windows.Forms.AccessibleRole.Row;
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBox1.Cursor = System.Windows.Forms.Cursors.Default;
this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Bold);
this.textBox1.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.textBox1.Location = new System.Drawing.Point(29, 538);
this.textBox1.Location = new System.Drawing.Point(29, 488);
this.textBox1.Margin = new System.Windows.Forms.Padding(2);
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
@@ -295,66 +251,144 @@
this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
//
// CblindBox
//
this.CblindBox.AutoSize = true;
this.CblindBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.CblindBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.CblindBox.Location = new System.Drawing.Point(12, 145);
this.CblindBox.Name = "CblindBox";
this.CblindBox.Size = new System.Drawing.Size(204, 22);
this.CblindBox.TabIndex = 9;
this.CblindBox.Text = "Enable colorblind mode";
this.CblindBox.UseVisualStyleBackColor = true;
this.CblindBox.CheckedChanged += new System.EventHandler(this.CblindBox_CheckedChanged);
this.CblindBox.Click += new System.EventHandler(this.CblindBox_Click);
//
// nodevicemodeBox
//
this.nodevicemodeBox.AutoSize = true;
this.nodevicemodeBox.BackColor = System.Drawing.Color.Transparent;
this.nodevicemodeBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 196);
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 168);
this.nodevicemodeBox.Name = "nodevicemodeBox";
this.nodevicemodeBox.Size = new System.Drawing.Size(202, 22);
this.nodevicemodeBox.Size = new System.Drawing.Size(181, 22);
this.nodevicemodeBox.TabIndex = 9;
this.nodevicemodeBox.Text = "Enable no device mode";
this.nodevicemodeBox.UseVisualStyleBackColor = true;
this.nodevicemodeBox.UseVisualStyleBackColor = false;
this.nodevicemodeBox.CheckedChanged += new System.EventHandler(this.nodevicemodeBox_CheckedChanged);
//
// bmbfBox
//
this.bmbfBox.AutoSize = true;
this.bmbfBox.BackColor = System.Drawing.Color.Transparent;
this.bmbfBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.bmbfBox.Location = new System.Drawing.Point(12, 170);
this.bmbfBox.Location = new System.Drawing.Point(12, 142);
this.bmbfBox.Name = "bmbfBox";
this.bmbfBox.Size = new System.Drawing.Size(316, 22);
this.bmbfBox.Size = new System.Drawing.Size(281, 22);
this.bmbfBox.TabIndex = 9;
this.bmbfBox.Text = "Enable BMBF song zips drag and drop";
this.bmbfBox.UseVisualStyleBackColor = true;
this.bmbfBox.UseVisualStyleBackColor = false;
this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
//
// AutoReinstBox
//
this.AutoReinstBox.AutoSize = true;
this.AutoReinstBox.BackColor = System.Drawing.Color.Transparent;
this.AutoReinstBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.AutoReinstBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.AutoReinstBox.Location = new System.Drawing.Point(12, 222);
this.AutoReinstBox.Location = new System.Drawing.Point(12, 194);
this.AutoReinstBox.Name = "AutoReinstBox";
this.AutoReinstBox.Size = new System.Drawing.Size(322, 22);
this.AutoReinstBox.Size = new System.Drawing.Size(280, 22);
this.AutoReinstBox.TabIndex = 9;
this.AutoReinstBox.Text = "Enable auto reinstall upon install failure";
this.AutoReinstBox.UseVisualStyleBackColor = true;
this.AutoReinstBox.UseVisualStyleBackColor = false;
this.AutoReinstBox.CheckedChanged += new System.EventHandler(this.AutoReinstBox_CheckedChanged);
this.AutoReinstBox.Click += new System.EventHandler(this.AutoReinstBox_Click);
//
// applyButton
//
this.applyButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.applyButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.applyButton.BackColor = System.Drawing.Color.Transparent;
this.applyButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.applyButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.applyButton.ForeColor = System.Drawing.Color.White;
this.applyButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.applyButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.applyButton.Location = new System.Drawing.Point(29, 286);
this.applyButton.Name = "applyButton";
this.applyButton.Radius = 5;
this.applyButton.Size = new System.Drawing.Size(101, 31);
this.applyButton.Stroke = true;
this.applyButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.applyButton.TabIndex = 17;
this.applyButton.Text = "Apply";
this.applyButton.Transparency = false;
this.applyButton.Click += new System.EventHandler(this.applyButton_Click);
//
// resetSettingsButton
//
this.resetSettingsButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.resetSettingsButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.resetSettingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.resetSettingsButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.resetSettingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.resetSettingsButton.ForeColor = System.Drawing.Color.White;
this.resetSettingsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.resetSettingsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.resetSettingsButton.Location = new System.Drawing.Point(212, 286);
this.resetSettingsButton.Name = "resetSettingsButton";
this.resetSettingsButton.Radius = 5;
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
this.resetSettingsButton.Stroke = true;
this.resetSettingsButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.resetSettingsButton.TabIndex = 18;
this.resetSettingsButton.Text = "Reset";
this.resetSettingsButton.Transparency = false;
this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
//
// DebugLogCopy
//
this.DebugLogCopy.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.DebugLogCopy.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.DebugLogCopy.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.DebugLogCopy.DialogResult = System.Windows.Forms.DialogResult.OK;
this.DebugLogCopy.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.DebugLogCopy.ForeColor = System.Drawing.Color.White;
this.DebugLogCopy.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.DebugLogCopy.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.DebugLogCopy.Location = new System.Drawing.Point(29, 323);
this.DebugLogCopy.Name = "DebugLogCopy";
this.DebugLogCopy.Radius = 5;
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
this.DebugLogCopy.Stroke = true;
this.DebugLogCopy.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.DebugLogCopy.TabIndex = 19;
this.DebugLogCopy.Text = "Send DebugLog to server.";
this.DebugLogCopy.Transparency = false;
this.DebugLogCopy.Click += new System.EventHandler(this.DebugLogCopy_click);
//
// Button1
//
this.Button1.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.Button1.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.Button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.Button1.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.Button1.ForeColor = System.Drawing.Color.White;
this.Button1.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.Button1.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.Button1.Location = new System.Drawing.Point(29, 358);
this.Button1.Name = "Button1";
this.Button1.Radius = 5;
this.Button1.Size = new System.Drawing.Size(285, 31);
this.Button1.Stroke = true;
this.Button1.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.Button1.TabIndex = 20;
this.Button1.Text = "Reset Debug Log";
this.Button1.Transparency = false;
this.Button1.Click += new System.EventHandler(this.button1_click);
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.ClientSize = new System.Drawing.Size(342, 634);
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.ClientSize = new System.Drawing.Size(342, 601);
this.Controls.Add(this.Button1);
this.Controls.Add(this.DebugLogCopy);
this.Controls.Add(this.resetSettingsButton);
this.Controls.Add(this.applyButton);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.DebugID);
this.Controls.Add(this.crashlogID);
@@ -366,16 +400,11 @@
this.Controls.Add(this.bmbfBox);
this.Controls.Add(this.AutoReinstBox);
this.Controls.Add(this.nodevicemodeBox);
this.Controls.Add(this.CblindBox);
this.Controls.Add(this.userJsonOnGameInstall);
this.Controls.Add(this.updateConfigCheckBox);
this.Controls.Add(this.deleteAfterInstallCheckBox);
this.Controls.Add(this.enableMessageBoxesCheckBox);
this.Controls.Add(this.button1);
this.Controls.Add(this.DebugLogCopy);
this.Controls.Add(this.applyButton);
this.Controls.Add(this.checkForUpdatesCheckBox);
this.Controls.Add(this.resetSettingsButton);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ForeColor = System.Drawing.Color.White;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
@@ -389,31 +418,30 @@
this.Leave += new System.EventHandler(this.SettingsForm_Leave);
this.ResumeLayout(false);
this.PerformLayout();
this.Activate();
}
#endregion
private System.Windows.Forms.CheckBox checkForUpdatesCheckBox;
private System.Windows.Forms.Button applyButton;
private System.Windows.Forms.CheckBox enableMessageBoxesCheckBox;
private System.Windows.Forms.Button resetSettingsButton;
private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
private System.Windows.Forms.CheckBox updateConfigCheckBox;
private System.Windows.Forms.CheckBox userJsonOnGameInstall;
private System.Windows.Forms.TextBox BandwithTextbox;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox BandwithComboBox;
private System.Windows.Forms.Button DebugLogCopy;
private System.Windows.Forms.Label crashlogID;
private System.Windows.Forms.Button button1;
public System.Windows.Forms.Label debuglogID;
private System.Windows.Forms.TextBox DebugID;
public System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.CheckBox CblindBox;
private System.Windows.Forms.CheckBox nodevicemodeBox;
private System.Windows.Forms.CheckBox bmbfBox;
private System.Windows.Forms.CheckBox AutoReinstBox;
private RoundButton applyButton;
private RoundButton resetSettingsButton;
private RoundButton DebugLogCopy;
private RoundButton Button1;
}
}

View File

@@ -27,7 +27,6 @@ namespace AndroidSideloader
//Init form objects with values from settings
private void intSettings()
{
CblindBox.Checked = Properties.Settings.Default.QblindOn;
checkForUpdatesCheckBox.Checked = Properties.Settings.Default.checkForUpdates;
enableMessageBoxesCheckBox.Checked = Properties.Settings.Default.enableMessageBoxes;
deleteAfterInstallCheckBox.Checked = Properties.Settings.Default.deleteAllAfterInstall;
@@ -63,7 +62,7 @@ namespace AndroidSideloader
{
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
{
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentLogPath}\" VRP-debuglogs:DebugLogs");
RCLONE.runRcloneCommand_DownloadConfig($"copy \"{Properties.Settings.Default.CurrentLogPath}\" VRP-debuglogs:DebugLogs");
Clipboard.SetText(DebugID.Text);
MessageBox.Show($"Your debug log has been copied to the server. Please mention your DebugLog ID ({Properties.Settings.Default.CurrentLogName}) to the Mods (it has been automatically copied to your clipboard).");
}
@@ -199,20 +198,6 @@ namespace AndroidSideloader
}
}
private void CblindBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.QblindOn = CblindBox.Checked;
Properties.Settings.Default.Save();
}
private void CblindBox_Click(object sender, EventArgs e)
{
if (CblindBox.Checked)
MessageBox.Show("You must restart Rookie's Sideloader OR click Refresh Updates List for changes to take effect.\n\nNOTE: Colors in the legend at the top right of the main window of Rookie won't update until you restart the program.");
}
private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.nodevicemode = nodevicemodeBox.Checked;

View File

@@ -247,6 +247,10 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
{
if (!File.Exists("Sideloader Launcher.exe"))
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/Sideloader%20Launcher.exe", "Sideloader Launcher.exe");
if (!File.Exists("Rookie Offline.cmd"))
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/Rookie%20Offline.cmd", "Rookie Offline.cmd");
if (!File.Exists("C:\\RSL\\platform-tools\\aug2021.txt") || !File.Exists("C:\\RSL\\platform-tools\\adb.exe")) //if adb is not updated, download and auto extract
{
if (Directory.Exists($"C:\\RSL\\2.8.2"))

View File

@@ -4,6 +4,7 @@ using System.Net;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using AndroidSideloader.Utilities;
namespace AndroidSideloader
{
@@ -13,7 +14,6 @@ namespace AndroidSideloader
public string Name { get; set; }
public string Size { get; set; }
public string ModTime { get; set; }
}
class SideloaderRCLONE
@@ -48,26 +48,75 @@ namespace AndroidSideloader
public static void UpdateNouns(string remote)
{
Logger.Log($"Updating Nouns");
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/nouns\" \"{Nouns}\" --http-no-head --transfers 2 --multi-thread-streams 1");
RCLONE.runRcloneCommand_DownloadConfig($"sync \"{remote}:{RcloneGamesFolder}/.meta/nouns\" \"{Nouns}\"");
}
public static void UpdateGamePhotos(string remote)
{
Logger.Log($"Updating Thumbnails");
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\" --http-no-head --transfers 2 --multi-thread-streams 1");
RCLONE.runRcloneCommand_DownloadConfig($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\"");
}
public static void UpdateGameNotes(string remote)
{
Logger.Log($"Updating Game Notes");
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/notes\" \"{NotesFolder}\" --http-no-head --transfers 2 --multi-thread-streams 1");
RCLONE.runRcloneCommand_DownloadConfig($"sync \"{remote}:{RcloneGamesFolder}/.meta/notes\" \"{NotesFolder}\"");
}
public static void UpdateMetadataFromPublic()
{
Logger.Log($"Downloading Metadata");
var rclonecommand =
$"sync \":http:/meta.7z\" \"{Environment.CurrentDirectory}\"";
RCLONE.runRcloneCommand_PublicConfig(rclonecommand);
}
public static void ProcessMetadataFromPublic()
{
try
{
Logger.Log($"Extracting Metadata");
Zip.ExtractFile($"{Environment.CurrentDirectory}\\meta.7z", $"{Environment.CurrentDirectory}\\meta",
MainForm.PublicConfigFile.Password);
Logger.Log($"Updating Metadata");
if (Directory.Exists(Nouns)) Directory.Delete(Nouns, true);
if (Directory.Exists(ThumbnailsFolder)) Directory.Delete(ThumbnailsFolder, true);
if (Directory.Exists(NotesFolder)) Directory.Delete(NotesFolder, true);
Directory.Move($"{Environment.CurrentDirectory}\\meta\\.meta\\nouns", Nouns);
Directory.Move($"{Environment.CurrentDirectory}\\meta\\.meta\\thumbnails", ThumbnailsFolder);
Directory.Move($"{Environment.CurrentDirectory}\\meta\\.meta\\notes", NotesFolder);
Logger.Log($"Initializing Games List");
var gameList = File.ReadAllText($"{Environment.CurrentDirectory}\\meta\\VRP-GameList.txt");
string[] splitList = gameList.Split('\n');
splitList = splitList.Skip(1).ToArray();
foreach (string game in splitList)
{
if (game.Length > 1)
{
string[] splitGame = game.Split(';');
games.Add(splitGame);
}
}
Directory.Delete($"{Environment.CurrentDirectory}\\meta", true);
}
catch (Exception e)
{
Logger.Log(e.Message);
Logger.Log(e.StackTrace);
}
}
public static void RefreshRemotes()
{
Logger.Log($"Refresh / List Remotes");
RemotesList.Clear();
var remotes = RCLONE.runRcloneCommand("listremotes").Output.Split('\n');
var remotes = RCLONE.runRcloneCommand_DownloadConfig("listremotes").Output.Split('\n');
Logger.Log("Loaded following remotes: ");
foreach (string r in remotes)
@@ -90,7 +139,7 @@ namespace AndroidSideloader
gameProperties.Clear();
games.Clear();
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/VRP-GameList.txt\"").Output;
string tempGameList = RCLONE.runRcloneCommand_DownloadConfig($"cat \"{remote}:{RcloneGamesFolder}/VRP-GameList.txt\"").Output;
if (MainForm.debugMode)
{
File.WriteAllText("VRP-GamesList.txt", tempGameList);
@@ -108,13 +157,15 @@ namespace AndroidSideloader
}
}
}
}
public static void updateConfig(string remote)
public static void updateDownloadConfig()
{
Logger.Log($"Attempting to Update Config");
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
Logger.Log($"Attempting to Update Download Config");
try
{
string configUrl = "https://wiki.vrpirates.club/downloads/vrp.download.config";
@@ -163,6 +214,66 @@ namespace AndroidSideloader
}
catch { }
}
public static void updateUploadConfig()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
Logger.Log($"Attempting to Update Upload Config");
try
{
string configUrl = "https://wiki.vrpirates.club/downloads/vrp.upload.config";
HttpWebRequest getUrl = (HttpWebRequest)WebRequest.Create(configUrl);
using (StreamReader responseReader = new StreamReader(getUrl.GetResponse().GetResponseStream()))
{
string resultString = responseReader.ReadToEnd();
Logger.Log($"Retrived updated config from: {configUrl}");
File.WriteAllText(Environment.CurrentDirectory + "\\rclone\\vrp.upload.config", resultString);
Logger.Log("Upload config updated successfully.");
}
}
catch (Exception e)
{
Logger.Log($"Failed to update Upload config: {e.Message}");
}
}
public static void updatePublicConfig()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
Logger.Log($"Attempting to Update Public Config");
try
{
string configUrl = "https://wiki.vrpirates.club/downloads/vrp-public.json";
HttpWebRequest getUrl = (HttpWebRequest)WebRequest.Create(configUrl);
using (StreamReader responseReader = new StreamReader(getUrl.GetResponse().GetResponseStream()))
{
string resultString = responseReader.ReadToEnd();
Logger.Log($"Retrived updated config from: {configUrl}");
File.WriteAllText(Environment.CurrentDirectory + "\\vrp-public.json", resultString);
Logger.Log("Public config updated successfully.");
}
}
catch (Exception e)
{
Logger.Log($"Failed to update Public config: {e.Message}");
}
}
static string CalculateMD5(string filename)
{
using (var md5 = MD5.Create())

View File

@@ -17,8 +17,12 @@ namespace AndroidSideloader
return true;
return false;
}
private static string uuid = null;
public static string UUID()
{
if (uuid != null) return uuid;
StringBuilder sb = new StringBuilder();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
@@ -56,7 +60,8 @@ namespace AndroidSideloader
byte[] hash = sha.ComputeHash(bytes);
return BitConverter.ToString(hash).Replace("-", "");
uuid = BitConverter.ToString(hash).Replace("-", "");
return uuid;
}
}

58
Splash.Designer.cs generated Normal file
View File

@@ -0,0 +1,58 @@
namespace AndroidSideloader
{
partial class Splash
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Splash));
this.SuspendLayout();
//
// Splash
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.CausesValidation = false;
this.ClientSize = new System.Drawing.Size(427, 250);
this.ControlBox = false;
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "Splash";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Splash";
this.ResumeLayout(false);
}
#endregion
}
}

20
Splash.cs Normal file
View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AndroidSideloader
{
public partial class Splash : Form
{
public Splash()
{
InitializeComponent();
}
}
}

413
Splash.resx Normal file
View File

@@ -0,0 +1,413 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

71
SpoofForm.Designer.cs generated
View File

@@ -29,9 +29,9 @@
private void InitializeComponent()
{
this.PackageNameTextBox = new System.Windows.Forms.TextBox();
this.RandomizeButton = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.SpoofButton = new System.Windows.Forms.Button();
this.SpoofButton = new AndroidSideloader.RoundButton();
this.RandomizeButton = new AndroidSideloader.RoundButton();
this.SuspendLayout();
//
// PackageNameTextBox
@@ -47,23 +47,6 @@
this.PackageNameTextBox.Size = new System.Drawing.Size(273, 24);
this.PackageNameTextBox.TabIndex = 1;
//
// RandomizeButton
//
this.RandomizeButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.RandomizeButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RandomizeButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RandomizeButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RandomizeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.RandomizeButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.RandomizeButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.RandomizeButton.Location = new System.Drawing.Point(12, 72);
this.RandomizeButton.Name = "RandomizeButton";
this.RandomizeButton.Size = new System.Drawing.Size(110, 42);
this.RandomizeButton.TabIndex = 2;
this.RandomizeButton.Text = "Randomize";
this.RandomizeButton.UseVisualStyleBackColor = false;
this.RandomizeButton.Click += new System.EventHandler(this.RandomizeButton_Click);
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(13, 43);
@@ -73,30 +56,56 @@
//
// SpoofButton
//
this.SpoofButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.SpoofButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.SpoofButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.SpoofButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.SpoofButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.SpoofButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.SpoofButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.SpoofButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.SpoofButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.SpoofButton.BackColor = System.Drawing.Color.Transparent;
this.SpoofButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.SpoofButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.SpoofButton.ForeColor = System.Drawing.Color.White;
this.SpoofButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.SpoofButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.SpoofButton.Location = new System.Drawing.Point(176, 72);
this.SpoofButton.Name = "SpoofButton";
this.SpoofButton.Radius = 5;
this.SpoofButton.Size = new System.Drawing.Size(110, 42);
this.SpoofButton.TabIndex = 4;
this.SpoofButton.Stroke = true;
this.SpoofButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.SpoofButton.TabIndex = 5;
this.SpoofButton.Text = "Spoof!";
this.SpoofButton.UseVisualStyleBackColor = false;
this.SpoofButton.Transparency = false;
this.SpoofButton.Click += new System.EventHandler(this.SpoofButton_Click);
//
// RandomizeButton
//
this.RandomizeButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.RandomizeButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.RandomizeButton.BackColor = System.Drawing.Color.Transparent;
this.RandomizeButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.RandomizeButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.RandomizeButton.ForeColor = System.Drawing.Color.White;
this.RandomizeButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.RandomizeButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.RandomizeButton.Location = new System.Drawing.Point(12, 72);
this.RandomizeButton.Name = "RandomizeButton";
this.RandomizeButton.Radius = 5;
this.RandomizeButton.Size = new System.Drawing.Size(110, 42);
this.RandomizeButton.Stroke = true;
this.RandomizeButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.RandomizeButton.TabIndex = 6;
this.RandomizeButton.Text = "Randomize";
this.RandomizeButton.Transparency = false;
this.RandomizeButton.Click += new System.EventHandler(this.RandomizeButton_Click);
//
// SpoofForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.ClientSize = new System.Drawing.Size(300, 131);
this.Controls.Add(this.RandomizeButton);
this.Controls.Add(this.SpoofButton);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.RandomizeButton);
this.Controls.Add(this.PackageNameTextBox);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.MaximumSize = new System.Drawing.Size(316, 170);
@@ -111,8 +120,8 @@
#endregion
private System.Windows.Forms.TextBox PackageNameTextBox;
private System.Windows.Forms.Button RandomizeButton;
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.Button SpoofButton;
private RoundButton SpoofButton;
private RoundButton RandomizeButton;
}
}

235
ThemeForm.Designer.cs generated
View File

@@ -1,235 +0,0 @@
namespace AndroidSideloader
{
partial class themeForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.colorDialog1 = new System.Windows.Forms.ColorDialog();
this.button1 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button8 = new System.Windows.Forms.Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.button9 = new System.Windows.Forms.Button();
this.button10 = new System.Windows.Forms.Button();
this.fontDialog1 = new System.Windows.Forms.FontDialog();
this.button3 = new System.Windows.Forms.Button();
this.button11 = new System.Windows.Forms.Button();
this.button12 = new System.Windows.Forms.Button();
this.button13 = new System.Windows.Forms.Button();
this.openThemeDialog = new System.Windows.Forms.OpenFileDialog();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// colorDialog1
//
this.colorDialog1.AnyColor = true;
this.colorDialog1.FullOpen = true;
//
// button1
//
this.button1.Location = new System.Drawing.Point(13, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(128, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Set backgorund color";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(13, 125);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(128, 23);
this.button4.TabIndex = 0;
this.button4.Text = "Set button color";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.Location = new System.Drawing.Point(13, 181);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(128, 23);
this.button5.TabIndex = 0;
this.button5.Text = "Set combobox color";
this.button5.UseVisualStyleBackColor = true;
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// button7
//
this.button7.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button7.Location = new System.Drawing.Point(185, 11);
this.button7.Name = "button7";
this.button7.Size = new System.Drawing.Size(93, 52);
this.button7.TabIndex = 1;
this.button7.Text = "Save";
this.button7.UseVisualStyleBackColor = true;
this.button7.Click += new System.EventHandler(this.button7_Click);
//
// button8
//
this.button8.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button8.Location = new System.Drawing.Point(185, 69);
this.button8.Name = "button8";
this.button8.Size = new System.Drawing.Size(93, 52);
this.button8.TabIndex = 2;
this.button8.Text = "Reset";
this.button8.UseVisualStyleBackColor = true;
this.button8.Click += new System.EventHandler(this.button8_Click);
//
// openFileDialog1
//
this.openFileDialog1.Filter = "Images|*.png;*.jpg;*.bmp;*.gif";
//
// button9
//
this.button9.Location = new System.Drawing.Point(13, 40);
this.button9.Name = "button9";
this.button9.Size = new System.Drawing.Size(128, 23);
this.button9.TabIndex = 3;
this.button9.Text = "Set background picture";
this.button9.UseVisualStyleBackColor = true;
this.button9.Click += new System.EventHandler(this.button9_Click);
//
// button10
//
this.button10.Location = new System.Drawing.Point(13, 97);
this.button10.Name = "button10";
this.button10.Size = new System.Drawing.Size(128, 23);
this.button10.TabIndex = 4;
this.button10.Text = "Set font style";
this.button10.UseVisualStyleBackColor = true;
this.button10.Click += new System.EventHandler(this.button10_Click);
//
// fontDialog1
//
this.fontDialog1.Color = System.Drawing.Color.White;
this.fontDialog1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
//
// button3
//
this.button3.Location = new System.Drawing.Point(13, 69);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(128, 23);
this.button3.TabIndex = 5;
this.button3.Text = "Set font color";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button11
//
this.button11.Location = new System.Drawing.Point(13, 153);
this.button11.Name = "button11";
this.button11.Size = new System.Drawing.Size(128, 23);
this.button11.TabIndex = 6;
this.button11.Text = "Set sub-button color";
this.button11.UseVisualStyleBackColor = true;
this.button11.Click += new System.EventHandler(this.button11_Click);
//
// button12
//
this.button12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button12.Location = new System.Drawing.Point(185, 127);
this.button12.Name = "button12";
this.button12.Size = new System.Drawing.Size(93, 52);
this.button12.TabIndex = 7;
this.button12.Text = "Export Theme";
this.button12.UseVisualStyleBackColor = true;
this.button12.Click += new System.EventHandler(this.button12_Click);
//
// button13
//
this.button13.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button13.Location = new System.Drawing.Point(185, 185);
this.button13.Name = "button13";
this.button13.Size = new System.Drawing.Size(93, 52);
this.button13.TabIndex = 8;
this.button13.Text = "Import theme";
this.button13.UseVisualStyleBackColor = true;
this.button13.Click += new System.EventHandler(this.button13_Click);
//
// openThemeDialog
//
this.openThemeDialog.Filter = "Text Files|*.txt";
//
// button2
//
this.button2.Location = new System.Drawing.Point(13, 210);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(128, 23);
this.button2.TabIndex = 9;
this.button2.Text = "Set textbox color";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// themeForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.ClientSize = new System.Drawing.Size(290, 248);
this.Controls.Add(this.button2);
this.Controls.Add(this.button13);
this.Controls.Add(this.button12);
this.Controls.Add(this.button11);
this.Controls.Add(this.button3);
this.Controls.Add(this.button10);
this.Controls.Add(this.button9);
this.Controls.Add(this.button8);
this.Controls.Add(this.button7);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button1);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.Name = "themeForm";
this.Text = "Create Your Theme";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ColorDialog colorDialog1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button8;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.Button button9;
private System.Windows.Forms.Button button10;
private System.Windows.Forms.FontDialog fontDialog1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button11;
private System.Windows.Forms.Button button12;
private System.Windows.Forms.Button button13;
private System.Windows.Forms.OpenFileDialog openThemeDialog;
private System.Windows.Forms.Button button2;
}
}

View File

@@ -1,171 +0,0 @@
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Collections.Specialized;
namespace AndroidSideloader
{
public partial class themeForm : Form
{
public themeForm()
{
InitializeComponent();
}
//Code made by @Gotard#9164 from discord (id 352745203322585088)
//Steam profile: https://steamcommunity.com/id/GotardPL/
private void button4_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.ButtonColor = colorDialog1.Color;
}
private void button1_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.BackColor = colorDialog1.Color;
}
private void button7_Click(object sender, EventArgs e)
{
Properties.Settings.Default.Save();
this.Close();
}
private void button8_Click(object sender, EventArgs e)
{
Properties.Settings.Default.BackColor = Color.FromArgb(45,45,45);
Properties.Settings.Default.ComboBoxColor = Color.FromArgb(45, 45, 45);
Properties.Settings.Default.TextBoxColor = Color.FromArgb(45,45,45);
Properties.Settings.Default.ButtonColor = SystemColors.ActiveCaptionText;
Properties.Settings.Default.SubButtonColor=Color.FromArgb(64, 64, 64);
Properties.Settings.Default.BackPicturePath = "";
Properties.Settings.Default.FontStyle = new Font("Microsoft Sans Serif", 11, FontStyle.Regular);
Properties.Settings.Default.FontColor = Color.White;
Properties.Settings.Default.Save();
}
private void button5_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.ComboBoxColor = colorDialog1.Color;
}
private void button9_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
String extension = Path.GetExtension(openFileDialog1.FileName);
if (File.Exists(Environment.CurrentDirectory + "\\pic" + extension))
File.Delete(Environment.CurrentDirectory + "\\pic" + extension);
File.Copy(openFileDialog1.FileName, Environment.CurrentDirectory + "\\pic" + extension);
Properties.Settings.Default.BackPicturePath = Environment.CurrentDirectory + "\\pic" + extension ;
}
}
private void button10_Click(object sender, EventArgs e)
{
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
Properties.Settings.Default.FontStyle = fontDialog1.Font;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.FontColor = colorDialog1.Color;
}
private void button11_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.SubButtonColor = colorDialog1.Color;
}
private void button12_Click(object sender, EventArgs e)
{
String BackColor = ColorTranslator.ToHtml(Properties.Settings.Default.BackColor);
String TextBoxColor = ColorTranslator.ToHtml(Properties.Settings.Default.TextBoxColor);
String ComboBoxColor = ColorTranslator.ToHtml(Properties.Settings.Default.ComboBoxColor);
String ButtonColor = ColorTranslator.ToHtml(Properties.Settings.Default.ButtonColor);
String SubButtonColor = ColorTranslator.ToHtml(Properties.Settings.Default.SubButtonColor);
String FontColor = ColorTranslator.ToHtml(Properties.Settings.Default.FontColor);
var cvt = new FontConverter();
string FontStyle = cvt.ConvertToString(Properties.Settings.Default.FontStyle);
int i;
if (File.Exists(Environment.CurrentDirectory + "\\theme.txt"))
{
if (File.Exists(Environment.CurrentDirectory + "\\theme11.txt"))
MessageBox.Show("You can't export more than 12 themes, sorry :(");
else
{
for (i = 1; i <= 10; i++)
{
if (File.Exists(Environment.CurrentDirectory + "\\theme" + i + ".txt"))
continue;
else
{
break;
}
}
File.WriteAllText(Environment.CurrentDirectory + "\\theme" + i + ".txt", "#SideloaderTheme# \n" + BackColor + "\n" + ButtonColor + "\n" + SubButtonColor + "\n"
+ TextBoxColor + "\n" + ComboBoxColor + "\n" + FontColor + "\n" + FontStyle);
MessageBox.Show("Theme exported as theme" + i + ".txt");
}
}
else
{
File.WriteAllText(Environment.CurrentDirectory + "\\theme.txt", "#SideloaderTheme# \n" + BackColor + "\n" + ButtonColor + "\n" + SubButtonColor + "\n"
+ TextBoxColor + "\n" + ComboBoxColor + "\n" + FontColor + "\n" + FontStyle);
MessageBox.Show("Theme exported as theme.txt");
}
}
private void button13_Click(object sender, EventArgs e)
{
openThemeDialog.InitialDirectory = Environment.CurrentDirectory;
if (openThemeDialog.ShowDialog() == DialogResult.OK) {
using (StreamReader sr = new StreamReader(openThemeDialog.FileName))
{
StringCollection myCol = new StringCollection();
myCol.AddRange(File.ReadAllLines(openThemeDialog.FileName));
if (myCol.Contains("#SideloaderTheme# "))
{
String[] settings = new String[myCol.Count];
myCol.CopyTo(settings, 0);
Color BackColor = ColorTranslator.FromHtml(settings[1]);
Color ButtonColor = ColorTranslator.FromHtml(settings[2]);
Color SubButtonColor = ColorTranslator.FromHtml(settings[3]);
Color TextBoxColor = ColorTranslator.FromHtml(settings[4]);
Color ComboBoxColor = ColorTranslator.FromHtml(settings[5]);
Color FontColor = ColorTranslator.FromHtml(settings[6]);
Properties.Settings.Default.BackColor = BackColor;
Properties.Settings.Default.ButtonColor = ButtonColor;
Properties.Settings.Default.SubButtonColor = SubButtonColor;
Properties.Settings.Default.TextBoxColor = TextBoxColor;
Properties.Settings.Default.ComboBoxColor = ComboBoxColor;
Properties.Settings.Default.FontColor = FontColor;
System.ComponentModel.TypeConverter converter =
System.ComponentModel.TypeDescriptor.GetConverter(typeof(Font));
var cvt = new FontConverter();
Font f = cvt.ConvertFromString(settings[7]) as Font;
Properties.Settings.Default.FontStyle = f;
}
else
MessageBox.Show("The file you've selected is not a Rookie's Sideloader theme file!");
}
}
}
private void button2_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.TextBoxColor = colorDialog1.Color;
}
}
}

View File

@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="colorDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>138, 17</value>
</metadata>
<metadata name="fontDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>278, 17</value>
</metadata>
<metadata name="openThemeDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>394, 17</value>
</metadata>
</root>

29
Transparenter.cs Normal file
View File

@@ -0,0 +1,29 @@
using System.Drawing;
using System.Windows.Forms;
namespace AndroidSideloader
{
public class Transparenter
{
public static void MakeTransparent(Control control, Graphics g)
{
var parent = control.Parent;
if (parent == null) return;
var bounds = control.Bounds;
var siblings = parent.Controls;
int index = siblings.IndexOf(control);
Bitmap behind = null;
for (int i = siblings.Count - 1; i > index; i--)
{
var c = siblings[i];
if (!c.Bounds.IntersectsWith(bounds)) continue;
if (behind == null)
behind = new Bitmap(control.Parent.ClientSize.Width, control.Parent.ClientSize.Height);
c.DrawToBitmap(behind, c.Bounds);
}
if (behind == null) return;
g.DrawImage(behind, control.ClientRectangle, bounds, GraphicsUnit.Pixel);
behind.Dispose();
}
}
}

160
UpdateForm.Designer.cs generated
View File

@@ -29,76 +29,40 @@ namespace AndroidSideloader
/// </summary>
private void InitializeComponent()
{
this.SkipUpdate = new System.Windows.Forms.Label();
this.CurVerLabel = new System.Windows.Forms.Label();
this.YesUpdate = new System.Windows.Forms.Button();
this.UpdateVerLabel = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.UpdateTextBox = new System.Windows.Forms.RichTextBox();
this.panel1 = new System.Windows.Forms.Panel();
this.panel3.SuspendLayout();
this.UpdateVerLabel = new System.Windows.Forms.Label();
this.CurVerLabel = new System.Windows.Forms.Label();
this.SkipUpdate = new System.Windows.Forms.Label();
this.YesUpdate = new AndroidSideloader.RoundButton();
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// SkipUpdate
// panel1
//
this.SkipUpdate.AutoSize = true;
this.SkipUpdate.BackColor = System.Drawing.Color.Transparent;
this.SkipUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.SkipUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))));
this.SkipUpdate.Location = new System.Drawing.Point(386, 279);
this.SkipUpdate.Name = "SkipUpdate";
this.SkipUpdate.Size = new System.Drawing.Size(64, 13);
this.SkipUpdate.TabIndex = 4;
this.SkipUpdate.Text = "skip for now";
this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click);
//
// CurVerLabel
//
this.CurVerLabel.AutoSize = true;
this.CurVerLabel.BackColor = System.Drawing.Color.Transparent;
this.CurVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.CurVerLabel.ForeColor = System.Drawing.SystemColors.Control;
this.CurVerLabel.Location = new System.Drawing.Point(21, 245);
this.CurVerLabel.Name = "CurVerLabel";
this.CurVerLabel.Size = new System.Drawing.Size(94, 15);
this.CurVerLabel.TabIndex = 2;
this.CurVerLabel.Text = "Current Version:";
//
// YesUpdate
//
this.YesUpdate.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.YesUpdate.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.YesUpdate.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.YesUpdate.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.YesUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.YesUpdate.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.YesUpdate.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.YesUpdate.Location = new System.Drawing.Point(339, 245);
this.YesUpdate.Name = "YesUpdate";
this.YesUpdate.Size = new System.Drawing.Size(111, 31);
this.YesUpdate.TabIndex = 0;
this.YesUpdate.Text = "Update Now";
this.YesUpdate.UseVisualStyleBackColor = false;
this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click);
//
// UpdateVerLabel
//
this.UpdateVerLabel.AutoSize = true;
this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent;
this.UpdateVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.UpdateVerLabel.ForeColor = System.Drawing.SystemColors.Control;
this.UpdateVerLabel.Location = new System.Drawing.Point(21, 261);
this.UpdateVerLabel.Name = "UpdateVerLabel";
this.UpdateVerLabel.Size = new System.Drawing.Size(94, 15);
this.UpdateVerLabel.TabIndex = 3;
this.UpdateVerLabel.Text = "Update Version:";
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.panel1.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.panel1.Controls.Add(this.YesUpdate);
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.UpdateVerLabel);
this.panel1.Controls.Add(this.CurVerLabel);
this.panel1.Controls.Add(this.SkipUpdate);
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.Location = new System.Drawing.Point(-6, -6);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(474, 305);
this.panel1.TabIndex = 5;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
//
// panel3
//
this.panel3.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.panel3.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel3.Controls.Add(this.UpdateTextBox);
this.panel3.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel3.Location = new System.Drawing.Point(21, 19);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(432, 218);
@@ -124,22 +88,64 @@ namespace AndroidSideloader
this.UpdateTextBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.UpdateTextBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
//
// panel1
// UpdateVerLabel
//
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.UpdateVerLabel);
this.panel1.Controls.Add(this.YesUpdate);
this.panel1.Controls.Add(this.CurVerLabel);
this.panel1.Controls.Add(this.SkipUpdate);
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.Location = new System.Drawing.Point(-6, -6);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(474, 305);
this.panel1.TabIndex = 5;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
this.UpdateVerLabel.AutoSize = true;
this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent;
this.UpdateVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.UpdateVerLabel.ForeColor = System.Drawing.SystemColors.Control;
this.UpdateVerLabel.Location = new System.Drawing.Point(21, 261);
this.UpdateVerLabel.Name = "UpdateVerLabel";
this.UpdateVerLabel.Size = new System.Drawing.Size(94, 15);
this.UpdateVerLabel.TabIndex = 3;
this.UpdateVerLabel.Text = "Update Version:";
//
// CurVerLabel
//
this.CurVerLabel.AutoSize = true;
this.CurVerLabel.BackColor = System.Drawing.Color.Transparent;
this.CurVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.CurVerLabel.ForeColor = System.Drawing.SystemColors.Control;
this.CurVerLabel.Location = new System.Drawing.Point(21, 245);
this.CurVerLabel.Name = "CurVerLabel";
this.CurVerLabel.Size = new System.Drawing.Size(94, 15);
this.CurVerLabel.TabIndex = 2;
this.CurVerLabel.Text = "Current Version:";
//
// SkipUpdate
//
this.SkipUpdate.AutoSize = true;
this.SkipUpdate.BackColor = System.Drawing.Color.Transparent;
this.SkipUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.SkipUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.SkipUpdate.ForeColor = System.Drawing.Color.Silver;
this.SkipUpdate.Location = new System.Drawing.Point(374, 279);
this.SkipUpdate.Name = "SkipUpdate";
this.SkipUpdate.Size = new System.Drawing.Size(76, 13);
this.SkipUpdate.TabIndex = 4;
this.SkipUpdate.Text = "𝖲𝖪𝖨𝖯 𝖥𝖮𝖱 𝖭𝖮𝖶";
this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click);
//
// YesUpdate
//
this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.YesUpdate.BackColor = System.Drawing.Color.Transparent;
this.YesUpdate.DialogResult = System.Windows.Forms.DialogResult.OK;
this.YesUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.YesUpdate.ForeColor = System.Drawing.Color.White;
this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.YesUpdate.Location = new System.Drawing.Point(339, 245);
this.YesUpdate.Name = "YesUpdate";
this.YesUpdate.Radius = 5;
this.YesUpdate.Size = new System.Drawing.Size(111, 31);
this.YesUpdate.Stroke = true;
this.YesUpdate.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.YesUpdate.TabIndex = 2;
this.YesUpdate.Text = "Update Now";
this.YesUpdate.Transparency = false;
this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click);
//
// UpdateForm
//
@@ -156,21 +162,21 @@ namespace AndroidSideloader
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
this.panel3.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel3.ResumeLayout(false);
this.ResumeLayout(false);
this.Activate();
}
#endregion
private System.Windows.Forms.Label SkipUpdate;
private System.Windows.Forms.Label CurVerLabel;
private System.Windows.Forms.Button YesUpdate;
private System.Windows.Forms.Label UpdateVerLabel;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.RichTextBox UpdateTextBox;
private System.Windows.Forms.Panel panel1;
private RoundButton YesUpdate;
}
}

View File

@@ -17,7 +17,7 @@ namespace AndroidSideloader
private static string RawGitHubUrl;
private static string GitHubUrl;
static readonly public string LocalVersion = "2.12";
static readonly public string LocalVersion = "2.15";
public static string currentVersion = string.Empty;
public static string changelog = string.Empty;

View File

@@ -29,7 +29,7 @@
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.button1 = new AndroidSideloader.RoundButton();
this.SuspendLayout();
//
// textBox1
@@ -47,20 +47,23 @@
//
// button1
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.button1.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.button1.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.button1.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.button1.BackColor = System.Drawing.Color.Transparent;
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.button1.ForeColor = System.Drawing.Color.White;
this.button1.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.button1.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.button1.Location = new System.Drawing.Point(13, 51);
this.button1.Margin = new System.Windows.Forms.Padding(0);
this.button1.Name = "button1";
this.button1.Radius = 5;
this.button1.Size = new System.Drawing.Size(418, 34);
this.button1.TabIndex = 1;
this.button1.Stroke = true;
this.button1.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.button1.TabIndex = 2;
this.button1.Text = "Create User.Json";
this.button1.UseVisualStyleBackColor = false;
this.button1.Transparency = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// UsernameForm
@@ -68,6 +71,7 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
this.ClientSize = new System.Drawing.Size(443, 100);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
@@ -87,6 +91,6 @@
#endregion
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private RoundButton button1;
}
}

View File

@@ -2,7 +2,6 @@
using System.Text;
using System.Diagnostics;
using JR.Utils.GUI.Forms;
using System.Net;
using System.Windows.Forms;
using System.Net.Http;
using System.IO;
@@ -100,25 +99,4 @@ namespace AndroidSideloader.Utilities
}
}
class Zip
{
public static void ExtractFile(string sourceArchive, string destination)
{
if (!File.Exists(Environment.CurrentDirectory + "\\7z.exe") || !File.Exists(Environment.CurrentDirectory + "\\7z.dll"))
{
WebClient client = new WebClient();
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.exe", "7z.exe");
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.dll", "7z.dll");
}
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
pro.FileName = "7z.exe";
pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination);
Process x = Process.Start(pro);
x.WaitForExit();
}
}
}

53
Utilities/Zip.cs Normal file
View File

@@ -0,0 +1,53 @@
using System;
using System.Diagnostics;
using System.Net;
using System.IO;
namespace AndroidSideloader.Utilities
{
class Zip
{
public static void ExtractFile(string sourceArchive, string destination)
{
var args = $"x \"{sourceArchive}\" -y -o\"{destination}\"";
DoExtract(args);
}
public static void ExtractFile(string sourceArchive, string destination, string password)
{
var args = $"x \"{sourceArchive}\" -y -o\"{destination}\" -p\"{password}\"";
DoExtract(args);
}
private static void DoExtract(string args)
{
if (!File.Exists(Environment.CurrentDirectory + "\\7z.exe") || !File.Exists(Environment.CurrentDirectory + "\\7z.dll"))
{
Logger.Log("Begin download 7-zip");
WebClient client = new WebClient();
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.exe", "7z.exe");
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.dll", "7z.dll");
Logger.Log("Complete download 7-zip");
}
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
pro.FileName = "7z.exe";
pro.Arguments = args;
pro.CreateNoWindow = true;
pro.UseShellExecute = false;
Logger.Log($"Extract: 7z {args}");
Process x = Process.Start(pro);
x.WaitForExit();
if (x.ExitCode != 0)
{
Logger.Log($"Extract failed");
Logger.Log(x.StandardOutput.ReadToEnd());
throw new ApplicationException($"Extracting failed, status code {x.ExitCode}");
}
}
}
}

View File

@@ -1,11 +1,12 @@
RSL 2.12
RSL 2.15
- fixed issue with configuration always updating
- fixed github version vs app version comparison
- fixed github download url
- restored "auto update config" checkbox
- fixed tooltips; added additional tooltips to all menu items
- gui fixes and updates to game donation menu
- additional logging and on-screen notifications
- Massive UI Changes:
- Rounded buttons
- Added version Number at Bottom Left
- Changed fonts to some extend
- Added background pattern to category buttons and MainForm background
- Added an animation when opening/closing category
- Overall darker theme
- New splash
~fenopy
~Chax

View File

@@ -1 +1 @@
2.12
2.15