Completed comprehensive rookie redesign with extensive UI/UX modernization, new theme and architectural improvements

Implemented a custom theme with a new color scheme and extensively refined UI logic and architecture for improved modernity and consistency. Relocated and reworked numerous options (mount device, select device, share app, uninstall app, pull-to-desktop, filters, etc.), and updated all message boxes to use the new themed styling with enhanced visual polish. All message boxes now use custom themed styling with enhanced visual polish. Corrected grammatical or logical flaws across text, tooltips, and title updates throughout the application. Added smooth animations to left-side navigation / container elements. Fine-tuned sizing, positioning, and colors across numerous UI components. Enhanced GalleryView with proper favorites support including context menu integration, favorite border styling and favorite badge, as well as some bug fixes. Implemented custom modern ToggleSwitch component (iOS-like) with animations. Completely overhauled quest option and rookie option menus to utilize new toggle switches in modernized layouts. Refined sorting and installation status logic to streamline UX; rookie now also functions as an efficient installed-quest-app browser with easily accessible view/uninstall controls. Added WebView2.dll validation to ensure runtime dependencies exist. Re-implemented trailer option. GalleryView is now shown on very first launch, but rookie remembers your preferred view thereafter, so list-view users won't be bothered, while everyone still gets to see the new gallery view at least once. Gallery performance has also been validated on very-low-spec hardware and confirmed to run fine and fast there, due to numerous optimizations. Given the extensive scope of changes across this commit series for beta-2.35-yt, I believe this update represents a significant milestone warranting v3.0 designation. In my opinion these changes represent one of the most significant set of logical and visual changes and enhancements the rookie application has seen in years. Changes have been summarized in changelog.txt for update.
This commit is contained in:
jp64k
2025-12-07 19:57:09 +01:00
parent a25ae6dbb7
commit bbe4050b40
23 changed files with 4618 additions and 5512 deletions

4
ADB.cs
View File

@@ -305,7 +305,7 @@ namespace AndroidSideloader
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{MainForm.CurrPCKG}\" \"{Environment.CurrentDirectory}\""); _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{MainForm.CurrPCKG}\" \"{Environment.CurrentDirectory}\"");
Program.form.changeTitle("Uninstalling game..."); Program.form.changeTitle("Uninstalling game...");
_ = Sideloader.UninstallGame(MainForm.CurrPCKG); _ = Sideloader.UninstallGame(MainForm.CurrPCKG);
Program.form.changeTitle("Reinstalling Game"); Program.form.changeTitle("Reinstalling game...");
ret += ADB.RunAdbCommandToString($"install -g \"{path}\""); ret += ADB.RunAdbCommandToString($"install -g \"{path}\"");
_ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}\" /sdcard/Android/data/"); _ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}\" /sdcard/Android/data/");
string directoryToDelete = Path.Combine(Environment.CurrentDirectory, MainForm.CurrPCKG); string directoryToDelete = Path.Combine(Environment.CurrentDirectory, MainForm.CurrPCKG);
@@ -317,7 +317,7 @@ namespace AndroidSideloader
} }
} }
Program.form.changeTitle(" \n\n"); Program.form.changeTitle("");
return ret; return ret;
} }
} }

View File

@@ -155,7 +155,7 @@
<HintPath>.\SergeUtils.dll</HintPath> <HintPath>.\SergeUtils.dll</HintPath>
</Reference> </Reference>
<Reference Include="System"> <Reference Include="System">
<HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll</HintPath> <HintPath>..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.ComponentModel.Composition" /> <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
@@ -172,7 +172,7 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Deployment" /> <Reference Include="System.Deployment" />
<Reference Include="System.Drawing"> <Reference Include="System.Drawing">
<HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll</HintPath> <HintPath>..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
@@ -211,6 +211,9 @@
<Compile Include="NewApps.Designer.cs"> <Compile Include="NewApps.Designer.cs">
<DependentUpon>NewApps.cs</DependentUpon> <DependentUpon>NewApps.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ToggleSwitch.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Transparenter.cs" /> <Compile Include="Transparenter.cs" />
<Compile Include="UpdateForm.cs"> <Compile Include="UpdateForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>

View File

@@ -33,7 +33,7 @@
<value>True</value> <value>True</value>
</setting> </setting>
<setting name="FontStyle" serializeAs="String"> <setting name="FontStyle" serializeAs="String">
<value>Microsoft Sans Serif, 9pt</value> <value>Microsoft Sans Serif, 10pt</value>
</setting> </setting>
<setting name="BackPicturePath" serializeAs="String"> <setting name="BackPicturePath" serializeAs="String">
<value /> <value />
@@ -135,13 +135,13 @@
<value>False</value> <value>False</value>
</setting> </setting>
<setting name="FontColor" serializeAs="String"> <setting name="FontColor" serializeAs="String">
<value>DarkGray</value> <value>White</value>
</setting> </setting>
<setting name="ComboBoxColor" serializeAs="String"> <setting name="ComboBoxColor" serializeAs="String">
<value>25, 25, 25</value> <value>25, 25, 25</value>
</setting> </setting>
<setting name="SubButtonColor" serializeAs="String"> <setting name="SubButtonColor" serializeAs="String">
<value>25, 25, 25</value> <value>42, 45, 58</value>
</setting> </setting>
<setting name="TextBoxColor" serializeAs="String"> <setting name="TextBoxColor" serializeAs="String">
<value>25, 25, 25</value> <value>25, 25, 25</value>

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
using AndroidSideloader; using AndroidSideloader;
using AndroidSideloader.Utilities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
@@ -53,6 +54,11 @@ public class FastGalleryPanel : Control
private int _selectedIndex = -1; private int _selectedIndex = -1;
private bool _isHoveringDeleteButton = false; private bool _isHoveringDeleteButton = false;
// Context Menu & Favorites
private ContextMenuStrip _contextMenu;
private int _rightClickedIndex = -1;
private HashSet<string> _favoritesCache;
// Rendering // Rendering
private Bitmap _backBuffer; private Bitmap _backBuffer;
@@ -68,8 +74,9 @@ public class FastGalleryPanel : Control
// Theme colors // Theme colors
private static readonly Color TileBorderHover = Color.FromArgb(93, 203, 173); private static readonly Color TileBorderHover = Color.FromArgb(93, 203, 173);
private static readonly Color TileBorderSelected = Color.FromArgb(200, 200, 200); private static readonly Color TileBorderSelected = Color.FromArgb(200, 200, 200);
private static readonly Color TileBorderFavorite = Color.FromArgb(255, 215, 0);
private static readonly Color BadgeFavoriteBg = Color.FromArgb(200, 255, 180, 0);
private static readonly Color TextColor = Color.FromArgb(245, 255, 255, 255); private static readonly Color TextColor = Color.FromArgb(245, 255, 255, 255);
private static readonly Color BadgeUpdateBg = Color.FromArgb(180, 76, 175, 80);
private static readonly Color BadgeInstalledBg = Color.FromArgb(180, 60, 145, 230); private static readonly Color BadgeInstalledBg = Color.FromArgb(180, 60, 145, 230);
private static readonly Color DeleteButtonBg = Color.FromArgb(200, 180, 50, 50); private static readonly Color DeleteButtonBg = Color.FromArgb(200, 180, 50, 50);
private static readonly Color DeleteButtonHoverBg = Color.FromArgb(255, 220, 70, 70); private static readonly Color DeleteButtonHoverBg = Color.FromArgb(255, 220, 70, 70);
@@ -80,6 +87,7 @@ public class FastGalleryPanel : Control
public event EventHandler<int> TileClicked; public event EventHandler<int> TileClicked;
public event EventHandler<int> TileDoubleClicked; public event EventHandler<int> TileDoubleClicked;
public event EventHandler<int> TileDeleteClicked; public event EventHandler<int> TileDeleteClicked;
public event EventHandler<int> TileRightClicked;
public event EventHandler<SortField> SortChanged; public event EventHandler<SortField> SortChanged;
private class TileAnimationState private class TileAnimationState
@@ -96,6 +104,8 @@ public class FastGalleryPanel : Control
public float TargetTooltipOpacity = 0f; public float TargetTooltipOpacity = 0f;
public float DeleteButtonOpacity = 0f; public float DeleteButtonOpacity = 0f;
public float TargetDeleteButtonOpacity = 0f; public float TargetDeleteButtonOpacity = 0f;
public float FavoriteOpacity = 0f;
public float TargetFavoriteOpacity = 0f;
} }
public FastGalleryPanel(List<ListViewItem> items, int tileWidth, int tileHeight, int spacing, int initialWidth, int initialHeight) public FastGalleryPanel(List<ListViewItem> items, int tileWidth, int tileHeight, int spacing, int initialWidth, int initialHeight)
@@ -109,6 +119,11 @@ public class FastGalleryPanel : Control
_cacheOrder = new Queue<string>(); _cacheOrder = new Queue<string>();
_tileStates = new Dictionary<int, TileAnimationState>(); _tileStates = new Dictionary<int, TileAnimationState>();
_sortButtons = new List<Button>(); _sortButtons = new List<Button>();
RefreshFavoritesCache();
// Avoid any implicit padding from the control container
Padding = Padding.Empty;
Margin = Padding.Empty;
Size = new Size(initialWidth, initialHeight); Size = new Size(initialWidth, initialHeight);
@@ -124,6 +139,9 @@ public class FastGalleryPanel : Control
for (int i = 0; i < _items.Count; i++) for (int i = 0; i < _items.Count; i++)
_tileStates[i] = new TileAnimationState(); _tileStates[i] = new TileAnimationState();
// Create context menu
CreateContextMenu();
// Create sort panel // Create sort panel
_sortPanel = CreateSortPanel(); _sortPanel = CreateSortPanel();
Controls.Add(_sortPanel); Controls.Add(_sortPanel);
@@ -446,7 +464,8 @@ public class FastGalleryPanel : Control
_targetScrollY = 0; _targetScrollY = 0;
_isScrolling = false; _isScrolling = false;
// Re-apply current sort // Refresh favorites cache and re-apply sort
RefreshFavoritesCache();
ApplySort(); ApplySort();
} }
@@ -460,10 +479,10 @@ public class FastGalleryPanel : Control
private bool IsItemInstalled(ListViewItem item) private bool IsItemInstalled(ListViewItem item)
{ {
if (item == null) return false; if (item == null) return false;
// Check if the item has the installed or update available color
bool hasUpdate = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb(); return item.ForeColor.ToArgb() == MainForm.ColorInstalled.ToArgb() ||
bool installed = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb(); item.ForeColor.ToArgb() == MainForm.ColorUpdateAvailable.ToArgb() ||
return installed || hasUpdate; item.ForeColor.ToArgb() == MainForm.ColorDonateGame.ToArgb();
} }
private Rectangle GetDeleteButtonRect(int index, int row, int col, int scrollY) private Rectangle GetDeleteButtonRect(int index, int row, int col, int scrollY)
@@ -535,6 +554,9 @@ public class FastGalleryPanel : Control
bool isHovered = index == _hoveredIndex; bool isHovered = index == _hoveredIndex;
bool isSelected = index == _selectedIndex; bool isSelected = index == _selectedIndex;
bool isInstalled = IsItemInstalled(_items[index]); bool isInstalled = IsItemInstalled(_items[index]);
string pkgName = _items[index].SubItems.Count > 2 ? _items[index].SubItems[1].Text : "";
bool isFavorite = _favoritesCache.Contains(pkgName);
state.TargetFavoriteOpacity = isFavorite ? 1.0f : 0f;
state.TargetScale = isHovered ? HOVER_SCALE : 1.0f; state.TargetScale = isHovered ? HOVER_SCALE : 1.0f;
state.TargetBorderOpacity = isHovered ? 1.0f : 0f; state.TargetBorderOpacity = isHovered ? 1.0f : 0f;
@@ -584,6 +606,10 @@ public class FastGalleryPanel : Control
needsRedraw = true; needsRedraw = true;
} }
else state.DeleteButtonOpacity = state.TargetDeleteButtonOpacity; else state.DeleteButtonOpacity = state.TargetDeleteButtonOpacity;
if (Math.Abs(state.FavoriteOpacity - state.TargetFavoriteOpacity) > 0.01f)
{ state.FavoriteOpacity += (state.TargetFavoriteOpacity - state.FavoriteOpacity) * 0.35f; needsRedraw = true; }
else state.FavoriteOpacity = state.TargetFavoriteOpacity;
} }
} }
@@ -756,6 +782,13 @@ public class FastGalleryPanel : Control
using (var borderPen = new Pen(Color.FromArgb((int)(200 * state.BorderOpacity), TileBorderHover), 2f)) using (var borderPen = new Pen(Color.FromArgb((int)(200 * state.BorderOpacity), TileBorderHover), 2f))
g.DrawPath(borderPen, tilePath); g.DrawPath(borderPen, tilePath);
} }
// Favorite border (golden)
if (state.FavoriteOpacity > 0.5f)
{
using (var favPen = new Pen(Color.FromArgb((int)(180 * state.FavoriteOpacity), TileBorderFavorite), 1.0f))
g.DrawPath(favPen, tilePath);
}
} }
// Thumbnail // Thumbnail
@@ -795,15 +828,31 @@ public class FastGalleryPanel : Control
// Status badges (left side) // Status badges (left side)
int badgeY = y + thumbPadding + 4; int badgeY = y + thumbPadding + 4;
bool hasUpdate = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
bool installed = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb(); // Favorite badge
if (state.FavoriteOpacity > 0.5f)
{
DrawBadge(g, "★", x + thumbPadding + 4, badgeY, BadgeFavoriteBg);
badgeY += 18;
}
bool hasUpdate = item.ForeColor.ToArgb() == MainForm.ColorUpdateAvailable.ToArgb();
bool installed = item.ForeColor.ToArgb() == MainForm.ColorInstalled.ToArgb();
bool canDonate = item.ForeColor.ToArgb() == MainForm.ColorDonateGame.ToArgb();
if (hasUpdate) if (hasUpdate)
{ {
DrawBadge(g, "UPDATE AVAILABLE", x + thumbPadding + 4, badgeY, BadgeUpdateBg); DrawBadge(g, "UPDATE AVAILABLE", x + thumbPadding + 4, badgeY, Color.FromArgb(180, MainForm.ColorUpdateAvailable.R, MainForm.ColorUpdateAvailable.G, MainForm.ColorUpdateAvailable.B));
badgeY += 18; badgeY += 18;
} }
if (installed || hasUpdate)
if (canDonate)
{
DrawBadge(g, "NEWER THAN LIST", x + thumbPadding + 4, badgeY, Color.FromArgb(180, MainForm.ColorDonateGame.R, MainForm.ColorDonateGame.G, MainForm.ColorDonateGame.B));
badgeY += 18;
}
if (installed || hasUpdate || canDonate)
DrawBadge(g, "INSTALLED", x + thumbPadding + 4, badgeY, BadgeInstalledBg); DrawBadge(g, "INSTALLED", x + thumbPadding + 4, badgeY, BadgeInstalledBg);
// Right-side badges (top-right of thumbnail) // Right-side badges (top-right of thumbnail)
@@ -1088,6 +1137,13 @@ public class FastGalleryPanel : Control
protected override void OnMouseClick(MouseEventArgs e) protected override void OnMouseClick(MouseEventArgs e)
{ {
base.OnMouseClick(e); base.OnMouseClick(e);
// Take focus to unfocus any other control (like search text box)
if (!Focused)
{
Focus();
}
if (e.Button == MouseButtons.Left) if (e.Button == MouseButtons.Left)
{ {
int i = GetIndexAtPoint(e.X, e.Y); int i = GetIndexAtPoint(e.X, e.Y);
@@ -1111,6 +1167,19 @@ public class FastGalleryPanel : Control
TileClicked?.Invoke(this, i); TileClicked?.Invoke(this, i);
} }
} }
else if (e.Button == MouseButtons.Right)
{
int i = GetIndexAtPoint(e.X, e.Y);
if (i >= 0)
{
_rightClickedIndex = i;
_selectedIndex = i;
Invalidate();
TileClicked?.Invoke(this, i);
TileRightClicked?.Invoke(this, i);
_contextMenu.Show(this, e.Location);
}
}
} }
protected override void OnMouseDoubleClick(MouseEventArgs e) protected override void OnMouseDoubleClick(MouseEventArgs e)
@@ -1139,12 +1208,64 @@ public class FastGalleryPanel : Control
_isScrolling = true; _isScrolling = true;
} }
private void CreateContextMenu()
{
_contextMenu = new ContextMenuStrip();
_contextMenu.BackColor = Color.FromArgb(40, 42, 48);
_contextMenu.ForeColor = Color.White;
_contextMenu.ShowImageMargin = false;
_contextMenu.Renderer = new MainForm.CenteredMenuRenderer();
var favoriteItem = new ToolStripMenuItem("★ Add to Favorites");
favoriteItem.Click += ContextMenu_FavoriteClick;
_contextMenu.Items.Add(favoriteItem);
_contextMenu.Opening += ContextMenu_Opening;
}
private void ContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e)
{
if (_rightClickedIndex < 0 || _rightClickedIndex >= _items.Count) { e.Cancel = true; return; }
var item = _items[_rightClickedIndex];
string packageName = item.SubItems.Count > 2 ? item.SubItems[1].Text : "";
if (string.IsNullOrEmpty(packageName)) { e.Cancel = true; return; }
bool isFavorite = _favoritesCache.Contains(packageName);
((ToolStripMenuItem)_contextMenu.Items[0]).Text = isFavorite ? "Remove from Favorites" : "★ Add to Favorites";
}
private void ContextMenu_FavoriteClick(object sender, EventArgs e)
{
if (_rightClickedIndex < 0 || _rightClickedIndex >= _items.Count) return;
var item = _items[_rightClickedIndex];
string packageName = item.SubItems.Count > 1 ? item.SubItems[1].Text : "";
if (string.IsNullOrEmpty(packageName)) return;
var settings = SettingsManager.Instance;
if (_favoritesCache.Contains(packageName))
{
settings.RemoveFavoriteGame(packageName);
_favoritesCache.Remove(packageName);
}
else
{
settings.AddFavoriteGame(packageName);
_favoritesCache.Add(packageName);
}
Invalidate();
}
public void RefreshFavoritesCache()
{
_favoritesCache = new HashSet<string>(SettingsManager.Instance.FavoritedGames, StringComparer.OrdinalIgnoreCase);
}
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
if (disposing) if (disposing)
{ {
_animationTimer?.Stop(); _animationTimer?.Stop();
_animationTimer?.Dispose(); _animationTimer?.Dispose();
_contextMenu?.Dispose();
foreach (var img in _imageCache.Values) { try { img?.Dispose(); } catch { } } foreach (var img in _imageCache.Values) { try { img?.Dispose(); } catch { } }
_imageCache.Clear(); _imageCache.Clear();

1278
MainForm.Designer.cs generated

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -118,72 +118,72 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="speedLabel_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="speedLabel_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>798, 17</value> <value>1165, 17</value>
</metadata> </metadata>
<metadata name="etaLabel_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="etaLabel_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>428, 56</value> <value>428, 54</value>
</metadata> </metadata>
<metadata name="startsideloadbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="startsideloadbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>596, 17</value> <value>966, 17</value>
</metadata> </metadata>
<metadata name="devicesbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="devicesbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>539, 95</value> <value>705, 91</value>
</metadata> </metadata>
<metadata name="obbcopybutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="obbcopybutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>359, 95</value> <value>526, 91</value>
</metadata> </metadata>
<metadata name="backupadbbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="backupadbbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>390, 17</value>
</metadata> </metadata>
<metadata name="backupbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="backupbutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>187, 95</value> <value>355, 91</value>
</metadata> </metadata>
<metadata name="restorebutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="restorebutton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 95</value> <value>187, 91</value>
</metadata> </metadata>
<metadata name="getApkButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="getApkButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1363, 56</value> <value>17, 91</value>
</metadata> </metadata>
<metadata name="uninstallAppButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="uninstallAppButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1163, 56</value> <value>1157, 54</value>
</metadata> </metadata>
<metadata name="pullAppToDesktopBtn_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="pullAppToDesktopBtn_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>948, 56</value> <value>945, 54</value>
</metadata> </metadata>
<metadata name="copyBulkObbButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="copyBulkObbButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>743, 56</value> <value>741, 54</value>
</metadata> </metadata>
<metadata name="aboutBtn_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="aboutBtn_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>711, 95</value> <value>876, 91</value>
</metadata> </metadata>
<metadata name="settingsButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="settingsButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>569, 56</value> <value>568, 54</value>
</metadata> </metadata>
<metadata name="QuestOptionsButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="QuestOptionsButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>221, 56</value> <value>223, 54</value>
</metadata> </metadata>
<metadata name="btnOpenDownloads_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="btnOpenDownloads_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>392, 17</value> <value>764, 17</value>
</metadata> </metadata>
<metadata name="btnRunAdbCmd_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="btnRunAdbCmd_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>209, 17</value> <value>581, 17</value>
</metadata> </metadata>
<metadata name="ADBWirelessDisable_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ADBWirelessToggle_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 56</value> <value>17, 17</value>
</metadata>
<metadata name="ADBWirelessEnable_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1333, 17</value>
</metadata> </metadata>
<metadata name="UpdateGamesButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="UpdateGamesButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1124, 17</value> <value>17, 54</value>
</metadata> </metadata>
<metadata name="listApkButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="listApkButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>955, 17</value> <value>1320, 17</value>
</metadata> </metadata>
<metadata name="favoriteGame.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="favoriteGame.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>855, 95</value> <value>1021, 91</value>
</metadata>
<metadata name="btnViewToggle_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>215, 17</value>
</metadata> </metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>159</value> <value>113</value>
</metadata> </metadata>
</root> </root>

View File

@@ -109,7 +109,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 9pt")] [global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 10pt")]
public global::System.Drawing.Font FontStyle { public global::System.Drawing.Font FontStyle {
get { get {
return ((global::System.Drawing.Font)(this["FontStyle"])); return ((global::System.Drawing.Font)(this["FontStyle"]));
@@ -516,7 +516,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("DarkGray")] [global::System.Configuration.DefaultSettingValueAttribute("White")]
public global::System.Drawing.Color FontColor { public global::System.Drawing.Color FontColor {
get { get {
return ((global::System.Drawing.Color)(this["FontColor"])); return ((global::System.Drawing.Color)(this["FontColor"]));
@@ -540,7 +540,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("25, 25, 25")] [global::System.Configuration.DefaultSettingValueAttribute("42, 45, 58")]
public global::System.Drawing.Color SubButtonColor { public global::System.Drawing.Color SubButtonColor {
get { get {
return ((global::System.Drawing.Color)(this["SubButtonColor"])); return ((global::System.Drawing.Color)(this["SubButtonColor"]));

View File

@@ -24,7 +24,7 @@
<Value Profile="(Default)">True</Value> <Value Profile="(Default)">True</Value>
</Setting> </Setting>
<Setting Name="FontStyle" Type="System.Drawing.Font" Scope="User"> <Setting Name="FontStyle" Type="System.Drawing.Font" Scope="User">
<Value Profile="(Default)">Microsoft Sans Serif, 9pt</Value> <Value Profile="(Default)">Microsoft Sans Serif, 10pt</Value>
</Setting> </Setting>
<Setting Name="BackPicturePath" Type="System.String" Scope="User"> <Setting Name="BackPicturePath" Type="System.String" Scope="User">
<Value Profile="(Default)" /> <Value Profile="(Default)" />
@@ -126,13 +126,13 @@
<Value Profile="(Default)">False</Value> <Value Profile="(Default)">False</Value>
</Setting> </Setting>
<Setting Name="FontColor" Type="System.Drawing.Color" Scope="User"> <Setting Name="FontColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">DarkGray</Value> <Value Profile="(Default)">White</Value>
</Setting> </Setting>
<Setting Name="ComboBoxColor" Type="System.Drawing.Color" Scope="User"> <Setting Name="ComboBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">25, 25, 25</Value> <Value Profile="(Default)">25, 25, 25</Value>
</Setting> </Setting>
<Setting Name="SubButtonColor" Type="System.Drawing.Color" Scope="User"> <Setting Name="SubButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">25, 25, 25</Value> <Value Profile="(Default)">42, 45, 58</Value>
</Setting> </Setting>
<Setting Name="TextBoxColor" Type="System.Drawing.Color" Scope="User"> <Setting Name="TextBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">25, 25, 25</Value> <Value Profile="(Default)">25, 25, 25</Value>

774
QuestForm.Designer.cs generated
View File

@@ -7,8 +7,6 @@ namespace AndroidSideloader
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
///
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
@@ -33,378 +31,426 @@ namespace AndroidSideloader
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QuestForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QuestForm));
this.label1 = new System.Windows.Forms.Label(); this.lblUsernameSection = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label(); this.lblMediaSection = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label(); this.lblPerformanceSection = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.DeleteShots = new System.Windows.Forms.CheckBox();
this.splitter1 = new System.Windows.Forms.Splitter();
this.label10 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.CPUComboBox = new System.Windows.Forms.ComboBox();
this.GPUComboBox = new System.Windows.Forms.ComboBox();
this.ResolutionLabel = new System.Windows.Forms.Label();
this.GlobalUsername = new System.Windows.Forms.TextBox(); this.GlobalUsername = new System.Windows.Forms.TextBox();
this.TextureResTextBox = new System.Windows.Forms.TextBox();
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
this.questVids = new AndroidSideloader.RoundButton();
this.questPics = new AndroidSideloader.RoundButton();
this.btnApplyUsername = new AndroidSideloader.RoundButton(); this.btnApplyUsername = new AndroidSideloader.RoundButton();
this.label3 = new System.Windows.Forms.Label(); this.questPics = new AndroidSideloader.RoundButton();
this.questVids = new AndroidSideloader.RoundButton();
this.lblScreenshotsPath = new System.Windows.Forms.Label();
this.lblRecordingsPath = new System.Windows.Forms.Label();
this.toggleDeleteAfterTransfer = new AndroidSideloader.ToggleSwitch();
this.lblDeleteAfterTransfer = new System.Windows.Forms.Label();
this.lblPerformanceNote = new System.Windows.Forms.Label();
this.lblRefreshRate = new System.Windows.Forms.Label();
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
this.lblGpuLevel = new System.Windows.Forms.Label();
this.GPUComboBox = new System.Windows.Forms.ComboBox();
this.lblCpuLevel = new System.Windows.Forms.Label();
this.CPUComboBox = new System.Windows.Forms.ComboBox();
this.lblResolution = new System.Windows.Forms.Label();
this.TextureResTextBox = new System.Windows.Forms.TextBox();
this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
this.separator1 = new System.Windows.Forms.Panel();
this.separator2 = new System.Windows.Forms.Panel();
this.btnClose = new AndroidSideloader.RoundButton();
this.SuspendLayout(); this.SuspendLayout();
// //
// label1 // lblUsernameSection
// //
this.label1.AutoSize = true; this.lblUsernameSection.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent; this.lblUsernameSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblUsernameSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.label1.ForeColor = System.Drawing.Color.LightCyan; this.lblUsernameSection.Location = new System.Drawing.Point(20, 15);
this.label1.Location = new System.Drawing.Point(72, 276); this.lblUsernameSection.Name = "lblUsernameSection";
this.label1.Name = "label1"; this.lblUsernameSection.Size = new System.Drawing.Size(80, 20);
this.label1.Size = new System.Drawing.Size(165, 20); this.lblUsernameSection.TabIndex = 0;
this.label1.TabIndex = 6; this.lblUsernameSection.Text = "Username";
this.label1.Text = "Temporary Settings";
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
// //
// label2 // lblMediaSection
// //
this.label2.AutoSize = true; this.lblMediaSection.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent; this.lblMediaSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.lblMediaSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblMediaSection.Location = new System.Drawing.Point(20, 97);
this.label2.ForeColor = System.Drawing.Color.LightSteelBlue; this.lblMediaSection.Name = "lblMediaSection";
this.label2.Location = new System.Drawing.Point(83, 303); this.lblMediaSection.Size = new System.Drawing.Size(114, 20);
this.label2.Name = "label2"; this.lblMediaSection.TabIndex = 3;
this.label2.Size = new System.Drawing.Size(143, 16); this.lblMediaSection.Text = "Media Transfer";
this.label2.TabIndex = 6;
this.label2.Text = "Reboot Quest to Reset";
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
// //
// label11 // lblPerformanceSection
// //
this.label11.AutoSize = true; this.lblPerformanceSection.AutoSize = true;
this.label11.BackColor = System.Drawing.Color.Transparent; this.lblPerformanceSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.lblPerformanceSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPerformanceSection.Location = new System.Drawing.Point(20, 232);
this.label11.ForeColor = System.Drawing.Color.LightCyan; this.lblPerformanceSection.Name = "lblPerformanceSection";
this.label11.Location = new System.Drawing.Point(18, 94); this.lblPerformanceSection.Size = new System.Drawing.Size(147, 20);
this.label11.Name = "label11"; this.lblPerformanceSection.TabIndex = 9;
this.label11.Size = new System.Drawing.Size(272, 20); this.lblPerformanceSection.Text = "Temporary Settings";
this.label11.TabIndex = 6;
this.label11.Text = "Transfer screenshots to Desktop";
this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// 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;
this.label12.Location = new System.Drawing.Point(92, 9);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(124, 20);
this.label12.TabIndex = 6;
this.label12.Text = "Set Username";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// 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;
this.DeleteShots.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
this.DeleteShots.ForeColor = System.Drawing.Color.LightSkyBlue;
this.DeleteShots.Location = new System.Drawing.Point(33, 232);
this.DeleteShots.Name = "DeleteShots";
this.DeleteShots.Size = new System.Drawing.Size(242, 21);
this.DeleteShots.TabIndex = 7;
this.DeleteShots.Text = "Delete files on Quest after transfer";
this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.DeleteShots.UseVisualStyleBackColor = false;
this.DeleteShots.CheckedChanged += new System.EventHandler(this.DeleteShots_CheckedChanged);
//
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(0, 0);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(3, 486);
this.splitter1.TabIndex = 14;
this.splitter1.TabStop = false;
//
// label10
//
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(-4, 261);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(394, 3);
this.label10.TabIndex = 15;
//
// label14
//
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(-4, 80);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(394, 3);
this.label14.TabIndex = 17;
//
// 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(34, 153);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(240, 16);
this.label16.TabIndex = 6;
this.label16.Text = "Exports to: Desktop\\Quest Screenshots";
this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// CPUComboBox
//
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.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.CPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.CPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.CPUComboBox.FormattingEnabled = true;
this.CPUComboBox.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4"});
this.CPUComboBox.Location = new System.Drawing.Point(38, 383);
this.CPUComboBox.Name = "CPUComboBox";
this.CPUComboBox.Size = new System.Drawing.Size(232, 26);
this.CPUComboBox.TabIndex = 2;
this.CPUComboBox.Text = "Select CPU level (0 for default)";
//
// GPUComboBox
//
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.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.GPUComboBox.FormattingEnabled = true;
this.GPUComboBox.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4"});
this.GPUComboBox.Location = new System.Drawing.Point(38, 354);
this.GPUComboBox.Name = "GPUComboBox";
this.GPUComboBox.Size = new System.Drawing.Size(232, 26);
this.GPUComboBox.TabIndex = 1;
this.GPUComboBox.Text = "Select GPU level (0 for default)";
//
// 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(38, 413);
this.ResolutionLabel.Name = "ResolutionLabel";
this.ResolutionLabel.Size = new System.Drawing.Size(153, 18);
this.ResolutionLabel.TabIndex = 3;
this.ResolutionLabel.Text = "Resolution (0=default)";
// //
// GlobalUsername // GlobalUsername
// //
this.GlobalUsername.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor; this.GlobalUsername.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); this.GlobalUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); this.GlobalUsername.Font = new System.Drawing.Font("Segoe UI", 9.5F);
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); this.GlobalUsername.ForeColor = System.Drawing.Color.White;
this.GlobalUsername.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle; this.GlobalUsername.Location = new System.Drawing.Point(24, 45);
this.GlobalUsername.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.GlobalUsername.Location = new System.Drawing.Point(33, 39);
this.GlobalUsername.Name = "GlobalUsername"; this.GlobalUsername.Name = "GlobalUsername";
this.GlobalUsername.Size = new System.Drawing.Size(142, 24); this.GlobalUsername.Size = new System.Drawing.Size(200, 24);
this.GlobalUsername.TabIndex = 12; this.GlobalUsername.TabIndex = 1;
this.GlobalUsername.TextChanged += new System.EventHandler(this.GlobalUsername_TextChanged); this.GlobalUsername.TextChanged += new System.EventHandler(this.GlobalUsername_TextChanged);
// //
// TextureResTextBox
//
this.TextureResTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.TextureResTextBox.Location = new System.Drawing.Point(38, 436);
this.TextureResTextBox.Name = "TextureResTextBox";
this.TextureResTextBox.Size = new System.Drawing.Size(111, 24);
this.TextureResTextBox.TabIndex = 3;
this.TextureResTextBox.Text = "0";
//
// RefreshRateComboBox
//
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.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.RefreshRateComboBox.FormattingEnabled = true;
this.RefreshRateComboBox.Items.AddRange(new object[] {
"72",
"90",
"120"});
this.RefreshRateComboBox.Location = new System.Drawing.Point(38, 325);
this.RefreshRateComboBox.Name = "RefreshRateComboBox";
this.RefreshRateComboBox.Size = new System.Drawing.Size(232, 26);
this.RefreshRateComboBox.TabIndex = 0;
this.RefreshRateComboBox.Text = "Select refresh rate";
//
// btnApplyTempSettings
//
this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnApplyTempSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.btnApplyTempSettings.ForeColor = System.Drawing.Color.White;
this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
this.btnApplyTempSettings.Location = new System.Drawing.Point(185, 434);
this.btnApplyTempSettings.Name = "btnApplyTempSettings";
this.btnApplyTempSettings.Radius = 5;
this.btnApplyTempSettings.Size = new System.Drawing.Size(85, 25);
this.btnApplyTempSettings.Stroke = true;
this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.btnApplyTempSettings.TabIndex = 19;
this.btnApplyTempSettings.Text = "APPLY";
this.btnApplyTempSettings.Transparency = false;
this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_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(72, 178);
this.questVids.Name = "questVids";
this.questVids.Radius = 5;
this.questVids.Size = new System.Drawing.Size(165, 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 = "RECORDINGS";
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(72, 124);
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);
//
// btnApplyUsername // btnApplyUsername
// //
this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.btnApplyUsername.BackColor = System.Drawing.Color.Transparent; this.btnApplyUsername.BackColor = System.Drawing.Color.Transparent;
this.btnApplyUsername.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnApplyUsername.DialogResult = System.Windows.Forms.DialogResult.OK; this.btnApplyUsername.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnApplyUsername.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); this.btnApplyUsername.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.btnApplyUsername.ForeColor = System.Drawing.Color.White; this.btnApplyUsername.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25))))); this.btnApplyUsername.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25))))); this.btnApplyUsername.Enabled = false;
this.btnApplyUsername.Location = new System.Drawing.Point(194, 38); this.btnApplyUsername.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.btnApplyUsername.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.btnApplyUsername.Location = new System.Drawing.Point(234, 45);
this.btnApplyUsername.Name = "btnApplyUsername"; this.btnApplyUsername.Name = "btnApplyUsername";
this.btnApplyUsername.Radius = 5; this.btnApplyUsername.Radius = 5;
this.btnApplyUsername.Size = new System.Drawing.Size(81, 25); this.btnApplyUsername.Size = new System.Drawing.Size(80, 25);
this.btnApplyUsername.Stroke = true; this.btnApplyUsername.Stroke = false;
this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74))))); this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.btnApplyUsername.TabIndex = 27; this.btnApplyUsername.TabIndex = 1;
this.btnApplyUsername.Text = "APPLY"; this.btnApplyUsername.Text = "APPLY";
this.btnApplyUsername.Transparency = false; this.btnApplyUsername.Transparency = false;
this.btnApplyUsername.Click += new System.EventHandler(this.btnApplyUsername_Click); this.btnApplyUsername.Click += new System.EventHandler(this.btnApplyUsername_Click);
// //
// label3 // questPics
// //
this.label3.AutoSize = true; this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.label3.BackColor = System.Drawing.Color.Transparent; this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.questPics.BackColor = System.Drawing.Color.Transparent;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.questPics.Cursor = System.Windows.Forms.Cursors.Hand;
this.label3.ForeColor = System.Drawing.Color.LightSteelBlue; this.questPics.DialogResult = System.Windows.Forms.DialogResult.OK;
this.label3.Location = new System.Drawing.Point(37, 206); this.questPics.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.label3.Name = "label3"; this.questPics.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
this.label3.Size = new System.Drawing.Size(235, 16); this.questPics.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.label3.TabIndex = 28; this.questPics.Font = new System.Drawing.Font("Segoe UI", 9F);
this.label3.Text = "Exports to: Desktop\\Quest Recordings"; this.questPics.ForeColor = System.Drawing.Color.White;
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.questPics.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.questPics.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.questPics.Location = new System.Drawing.Point(24, 127);
this.questPics.Name = "questPics";
this.questPics.Radius = 5;
this.questPics.Size = new System.Drawing.Size(140, 28);
this.questPics.Stroke = true;
this.questPics.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.questPics.TabIndex = 2;
this.questPics.Text = "Screenshots";
this.questPics.Transparency = false;
this.questPics.Click += new System.EventHandler(this.questPics_Click);
//
// questVids
//
this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.questVids.BackColor = System.Drawing.Color.Transparent;
this.questVids.Cursor = System.Windows.Forms.Cursors.Hand;
this.questVids.DialogResult = System.Windows.Forms.DialogResult.OK;
this.questVids.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.questVids.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
this.questVids.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.questVids.Font = new System.Drawing.Font("Segoe UI", 9F);
this.questVids.ForeColor = System.Drawing.Color.White;
this.questVids.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.questVids.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.questVids.Location = new System.Drawing.Point(174, 127);
this.questVids.Name = "questVids";
this.questVids.Radius = 5;
this.questVids.Size = new System.Drawing.Size(140, 28);
this.questVids.Stroke = true;
this.questVids.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.questVids.TabIndex = 3;
this.questVids.Text = "Recordings";
this.questVids.Transparency = false;
this.questVids.Click += new System.EventHandler(this.questVids_Click);
//
// lblScreenshotsPath
//
this.lblScreenshotsPath.AutoSize = true;
this.lblScreenshotsPath.Font = new System.Drawing.Font("Segoe UI", 8F);
this.lblScreenshotsPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.lblScreenshotsPath.Location = new System.Drawing.Point(24, 158);
this.lblScreenshotsPath.Name = "lblScreenshotsPath";
this.lblScreenshotsPath.Size = new System.Drawing.Size(161, 13);
this.lblScreenshotsPath.TabIndex = 4;
this.lblScreenshotsPath.Text = "→ Desktop\\Quest Screenshots";
//
// lblRecordingsPath
//
this.lblRecordingsPath.AutoSize = true;
this.lblRecordingsPath.Font = new System.Drawing.Font("Segoe UI", 8F);
this.lblRecordingsPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.lblRecordingsPath.Location = new System.Drawing.Point(174, 158);
this.lblRecordingsPath.Name = "lblRecordingsPath";
this.lblRecordingsPath.Size = new System.Drawing.Size(157, 13);
this.lblRecordingsPath.TabIndex = 5;
this.lblRecordingsPath.Text = "→ Desktop\\Quest Recordings";
//
// toggleDeleteAfterTransfer
//
this.toggleDeleteAfterTransfer.BackColor = System.Drawing.Color.Transparent;
this.toggleDeleteAfterTransfer.Cursor = System.Windows.Forms.Cursors.Hand;
this.toggleDeleteAfterTransfer.Location = new System.Drawing.Point(27, 189);
this.toggleDeleteAfterTransfer.Name = "toggleDeleteAfterTransfer";
this.toggleDeleteAfterTransfer.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.toggleDeleteAfterTransfer.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.toggleDeleteAfterTransfer.Size = new System.Drawing.Size(36, 18);
this.toggleDeleteAfterTransfer.TabIndex = 6;
this.toggleDeleteAfterTransfer.ThumbColor = System.Drawing.Color.White;
this.toggleDeleteAfterTransfer.CheckedChanged += new System.EventHandler(this.toggleDeleteAfterTransfer_CheckedChanged);
//
// lblDeleteAfterTransfer
//
this.lblDeleteAfterTransfer.AutoSize = true;
this.lblDeleteAfterTransfer.Font = new System.Drawing.Font("Segoe UI", 9.5F);
this.lblDeleteAfterTransfer.ForeColor = System.Drawing.Color.White;
this.lblDeleteAfterTransfer.Location = new System.Drawing.Point(72, 188);
this.lblDeleteAfterTransfer.Name = "lblDeleteAfterTransfer";
this.lblDeleteAfterTransfer.Size = new System.Drawing.Size(195, 17);
this.lblDeleteAfterTransfer.TabIndex = 7;
this.lblDeleteAfterTransfer.Text = "Delete from Quest after transfer";
//
// lblPerformanceNote
//
this.lblPerformanceNote.AutoSize = true;
this.lblPerformanceNote.Font = new System.Drawing.Font("Segoe UI", 8F);
this.lblPerformanceNote.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
this.lblPerformanceNote.Location = new System.Drawing.Point(21, 254);
this.lblPerformanceNote.Name = "lblPerformanceNote";
this.lblPerformanceNote.Size = new System.Drawing.Size(120, 13);
this.lblPerformanceNote.TabIndex = 10;
this.lblPerformanceNote.Text = "Reboot Quest to reset";
//
// lblRefreshRate
//
this.lblRefreshRate.AutoSize = true;
this.lblRefreshRate.Font = new System.Drawing.Font("Segoe UI", 9F);
this.lblRefreshRate.ForeColor = System.Drawing.Color.White;
this.lblRefreshRate.Location = new System.Drawing.Point(24, 280);
this.lblRefreshRate.Name = "lblRefreshRate";
this.lblRefreshRate.Size = new System.Drawing.Size(72, 15);
this.lblRefreshRate.TabIndex = 11;
this.lblRefreshRate.Text = "Refresh Rate";
//
// RefreshRateComboBox
//
this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.RefreshRateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.RefreshRateComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
this.RefreshRateComboBox.ForeColor = System.Drawing.Color.White;
this.RefreshRateComboBox.FormattingEnabled = true;
this.RefreshRateComboBox.Items.AddRange(new object[] {
"72 Hz",
"90 Hz",
"120 Hz"});
this.RefreshRateComboBox.Location = new System.Drawing.Point(24, 298);
this.RefreshRateComboBox.Name = "RefreshRateComboBox";
this.RefreshRateComboBox.Size = new System.Drawing.Size(130, 23);
this.RefreshRateComboBox.TabIndex = 12;
//
// lblGpuLevel
//
this.lblGpuLevel.AutoSize = true;
this.lblGpuLevel.Font = new System.Drawing.Font("Segoe UI", 9F);
this.lblGpuLevel.ForeColor = System.Drawing.Color.White;
this.lblGpuLevel.Location = new System.Drawing.Point(170, 280);
this.lblGpuLevel.Name = "lblGpuLevel";
this.lblGpuLevel.Size = new System.Drawing.Size(60, 15);
this.lblGpuLevel.TabIndex = 13;
this.lblGpuLevel.Text = "GPU Level";
//
// GPUComboBox
//
this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.GPUComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.GPUComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
this.GPUComboBox.ForeColor = System.Drawing.Color.White;
this.GPUComboBox.FormattingEnabled = true;
this.GPUComboBox.Items.AddRange(new object[] {
"0 (Default)",
"1",
"2",
"3",
"4"});
this.GPUComboBox.Location = new System.Drawing.Point(170, 298);
this.GPUComboBox.Name = "GPUComboBox";
this.GPUComboBox.Size = new System.Drawing.Size(130, 23);
this.GPUComboBox.TabIndex = 14;
//
// lblCpuLevel
//
this.lblCpuLevel.AutoSize = true;
this.lblCpuLevel.Font = new System.Drawing.Font("Segoe UI", 9F);
this.lblCpuLevel.ForeColor = System.Drawing.Color.White;
this.lblCpuLevel.Location = new System.Drawing.Point(24, 330);
this.lblCpuLevel.Name = "lblCpuLevel";
this.lblCpuLevel.Size = new System.Drawing.Size(60, 15);
this.lblCpuLevel.TabIndex = 15;
this.lblCpuLevel.Text = "CPU Level";
//
// CPUComboBox
//
this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.CPUComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.CPUComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
this.CPUComboBox.ForeColor = System.Drawing.Color.White;
this.CPUComboBox.FormattingEnabled = true;
this.CPUComboBox.Items.AddRange(new object[] {
"0 (Default)",
"1",
"2",
"3",
"4"});
this.CPUComboBox.Location = new System.Drawing.Point(24, 348);
this.CPUComboBox.Name = "CPUComboBox";
this.CPUComboBox.Size = new System.Drawing.Size(130, 23);
this.CPUComboBox.TabIndex = 16;
//
// lblResolution
//
this.lblResolution.AutoSize = true;
this.lblResolution.Font = new System.Drawing.Font("Segoe UI", 9F);
this.lblResolution.ForeColor = System.Drawing.Color.White;
this.lblResolution.Location = new System.Drawing.Point(170, 330);
this.lblResolution.Name = "lblResolution";
this.lblResolution.Size = new System.Drawing.Size(63, 15);
this.lblResolution.TabIndex = 17;
this.lblResolution.Text = "Resolution";
//
// TextureResTextBox
//
this.TextureResTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
this.TextureResTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.TextureResTextBox.Font = new System.Drawing.Font("Segoe UI", 9F);
this.TextureResTextBox.ForeColor = System.Drawing.Color.White;
this.TextureResTextBox.Location = new System.Drawing.Point(170, 348);
this.TextureResTextBox.Name = "TextureResTextBox";
this.TextureResTextBox.Size = new System.Drawing.Size(130, 23);
this.TextureResTextBox.TabIndex = 18;
this.TextureResTextBox.Text = "0";
//
// btnApplyTempSettings
//
this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
this.btnApplyTempSettings.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnApplyTempSettings.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.btnApplyTempSettings.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
this.btnApplyTempSettings.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.btnApplyTempSettings.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.btnApplyTempSettings.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.btnApplyTempSettings.Location = new System.Drawing.Point(24, 385);
this.btnApplyTempSettings.Name = "btnApplyTempSettings";
this.btnApplyTempSettings.Radius = 5;
this.btnApplyTempSettings.Size = new System.Drawing.Size(130, 30);
this.btnApplyTempSettings.Stroke = false;
this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.btnApplyTempSettings.TabIndex = 10;
this.btnApplyTempSettings.Text = "APPLY SETTINGS";
this.btnApplyTempSettings.Transparency = false;
this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_Click);
//
// separator1
//
this.separator1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.separator1.Location = new System.Drawing.Point(20, 85);
this.separator1.Name = "separator1";
this.separator1.Size = new System.Drawing.Size(295, 1);
this.separator1.TabIndex = 2;
//
// separator2
//
this.separator2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.separator2.Location = new System.Drawing.Point(20, 220);
this.separator2.Name = "separator2";
this.separator2.Size = new System.Drawing.Size(295, 1);
this.separator2.TabIndex = 8;
//
// btnClose
//
this.btnClose.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnClose.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnClose.BackColor = System.Drawing.Color.Transparent;
this.btnClose.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnClose.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.btnClose.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
this.btnClose.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.btnClose.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnClose.ForeColor = System.Drawing.Color.White;
this.btnClose.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.btnClose.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.btnClose.Location = new System.Drawing.Point(170, 385);
this.btnClose.Name = "btnClose";
this.btnClose.Radius = 5;
this.btnClose.Size = new System.Drawing.Size(130, 30);
this.btnClose.Stroke = true;
this.btnClose.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.btnClose.TabIndex = 11;
this.btnClose.Text = "Close";
this.btnClose.Transparency = false;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
// //
// QuestForm // QuestForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.ClientSize = new System.Drawing.Size(309, 486); this.CancelButton = this.btnClose;
this.Controls.Add(this.label3); this.ClientSize = new System.Drawing.Size(340, 435);
this.Controls.Add(this.lblUsernameSection);
this.Controls.Add(this.GlobalUsername);
this.Controls.Add(this.btnApplyUsername); this.Controls.Add(this.btnApplyUsername);
this.Controls.Add(this.separator1);
this.Controls.Add(this.lblMediaSection);
this.Controls.Add(this.questPics); this.Controls.Add(this.questPics);
this.Controls.Add(this.questVids); this.Controls.Add(this.questVids);
this.Controls.Add(this.btnApplyTempSettings); this.Controls.Add(this.lblScreenshotsPath);
this.Controls.Add(this.label14); this.Controls.Add(this.lblRecordingsPath);
this.Controls.Add(this.label10); this.Controls.Add(this.toggleDeleteAfterTransfer);
this.Controls.Add(this.splitter1); this.Controls.Add(this.lblDeleteAfterTransfer);
this.Controls.Add(this.DeleteShots); this.Controls.Add(this.separator2);
this.Controls.Add(this.label16); this.Controls.Add(this.lblPerformanceSection);
this.Controls.Add(this.label2); this.Controls.Add(this.lblPerformanceNote);
this.Controls.Add(this.label11); this.Controls.Add(this.lblRefreshRate);
this.Controls.Add(this.label12);
this.Controls.Add(this.label1);
this.Controls.Add(this.CPUComboBox);
this.Controls.Add(this.GPUComboBox);
this.Controls.Add(this.ResolutionLabel);
this.Controls.Add(this.GlobalUsername);
this.Controls.Add(this.TextureResTextBox);
this.Controls.Add(this.RefreshRateComboBox); this.Controls.Add(this.RefreshRateComboBox);
this.Controls.Add(this.lblGpuLevel);
this.Controls.Add(this.GPUComboBox);
this.Controls.Add(this.lblCpuLevel);
this.Controls.Add(this.CPUComboBox);
this.Controls.Add(this.lblResolution);
this.Controls.Add(this.TextureResTextBox);
this.Controls.Add(this.btnApplyTempSettings);
this.Controls.Add(this.btnClose);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximumSize = new System.Drawing.Size(325, 525); this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(325, 525); this.MinimizeBox = false;
this.Name = "QuestForm"; this.Name = "QuestForm";
this.ShowIcon = false; this.ShowIcon = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Quest Settings";
this.Text = "Quest settings";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QuestForm_FormClosed); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QuestForm_FormClosed);
this.Load += new System.EventHandler(this.QuestForm_Load); this.Load += new System.EventHandler(this.QuestForm_Load);
this.ResumeLayout(false); this.ResumeLayout(false);
@@ -414,26 +460,40 @@ namespace AndroidSideloader
#endregion #endregion
private System.Windows.Forms.ComboBox RefreshRateComboBox; // Section Labels
private System.Windows.Forms.TextBox TextureResTextBox; private System.Windows.Forms.Label lblUsernameSection;
private System.Windows.Forms.Label ResolutionLabel; private System.Windows.Forms.Label lblMediaSection;
private System.Windows.Forms.ComboBox GPUComboBox; private System.Windows.Forms.Label lblPerformanceSection;
private System.Windows.Forms.ComboBox CPUComboBox;
private Label label1;
private Label label2;
private Label label11;
private Label label12;
private CheckBox DeleteShots;
private Splitter splitter1;
private Label label10;
private Label label14;
private Label label16;
private TextBox GlobalUsername;
private RoundButton btnApplyTempSettings;
private RoundButton questVids;
private RoundButton questPics;
private RoundButton btnApplyUsername;
private Label label3;
}
} // Username controls
private System.Windows.Forms.TextBox GlobalUsername;
private RoundButton btnApplyUsername;
// Media controls
private RoundButton questPics;
private RoundButton questVids;
private System.Windows.Forms.Label lblScreenshotsPath;
private System.Windows.Forms.Label lblRecordingsPath;
private ToggleSwitch toggleDeleteAfterTransfer;
private System.Windows.Forms.Label lblDeleteAfterTransfer;
// Performance controls
private System.Windows.Forms.Label lblPerformanceNote;
private System.Windows.Forms.Label lblRefreshRate;
private System.Windows.Forms.ComboBox RefreshRateComboBox;
private System.Windows.Forms.Label lblGpuLevel;
private System.Windows.Forms.ComboBox GPUComboBox;
private System.Windows.Forms.Label lblCpuLevel;
private System.Windows.Forms.ComboBox CPUComboBox;
private System.Windows.Forms.Label lblResolution;
private System.Windows.Forms.TextBox TextureResTextBox;
private RoundButton btnApplyTempSettings;
// Separators
private System.Windows.Forms.Panel separator1;
private System.Windows.Forms.Panel separator2;
// Close button
private RoundButton btnClose;
}
}

View File

@@ -11,164 +11,167 @@ namespace AndroidSideloader
public static int length = 0; public static int length = 0;
public static string[] result; public static string[] result;
public bool settingsexist = false; public bool settingsexist = false;
public bool delsh = false; private bool delsh = false;
public QuestForm() public QuestForm()
{ {
InitializeComponent(); InitializeComponent();
} }
private void btnApplyTempSettings_Click(object sender, EventArgs e) private void btnApplyTempSettings_Click(object sender, EventArgs e)
{ {
bool ChangesMade = false; bool ChangesMade = false;
//Quest 2 settings, might remove them in the future since some of them are broken
if (RefreshRateComboBox.SelectedIndex != -1) if (RefreshRateComboBox.SelectedIndex != -1)
{ {
_ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {RefreshRateComboBox.SelectedItem}"); string refreshRate = RefreshRateComboBox.SelectedItem.ToString().Replace(" Hz", "");
_ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {refreshRate}");
_ = ADB.RunAdbCommandToString($"shell settings put global 90hz_global {RefreshRateComboBox.SelectedIndex}"); _ = ADB.RunAdbCommandToString($"shell settings put global 90hz_global {RefreshRateComboBox.SelectedIndex}");
_ = ADB.RunAdbCommandToString($"shell settings put global 90hzglobal {RefreshRateComboBox.SelectedIndex}"); _ = ADB.RunAdbCommandToString($"shell settings put global 90hzglobal {RefreshRateComboBox.SelectedIndex}");
ChangesMade = true; ChangesMade = true;
} }
if (TextureResTextBox.Text.Length > 0) if (TextureResTextBox.Text.Length > 0 && TextureResTextBox.Text != "0")
{ {
_ = int.TryParse(TextureResTextBox.Text, out _); if (int.TryParse(TextureResTextBox.Text, out _))
_ = ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}"); {
_ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}"); _ = ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
_ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}"); _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
ChangesMade = true; _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
ChangesMade = true;
}
} }
if (CPUComboBox.SelectedIndex != -1) if (CPUComboBox.SelectedIndex != -1)
{ {
_ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.cpuLevel {CPUComboBox.SelectedItem}"); _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.cpuLevel {CPUComboBox.SelectedIndex}");
ChangesMade = true; ChangesMade = true;
} }
if (GPUComboBox.SelectedIndex != -1) if (GPUComboBox.SelectedIndex != -1)
{ {
_ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.gpuLevel {GPUComboBox.SelectedItem}"); _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.gpuLevel {GPUComboBox.SelectedIndex}");
ChangesMade = true; ChangesMade = true;
} }
if (ChangesMade) if (ChangesMade)
{ {
_ = MessageBox.Show("Settings applied!"); _ = MessageBox.Show("Settings applied!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
} }
public static void setLength(int value) public static void setLength(int value)
{ {
result = new string[value]; result = new string[value];
} }
private void toggleDeleteAfterTransfer_CheckedChanged(object sender, EventArgs e)
private void DeleteShots_CheckedChanged(object sender, EventArgs e)
{ {
delsh = DeleteShots.Checked; delsh = toggleDeleteAfterTransfer.Checked;
} }
private static readonly Random random = new Random(); private static readonly Random random = new Random();
private static readonly object syncLock = new object(); private static readonly object syncLock = new object();
public static int RandomNumber(int min, int max) public static int RandomNumber(int min, int max)
{ {
lock (syncLock) lock (syncLock)
{ // synchronize {
return random.Next(min, max); return random.Next(min, max);
} }
} }
private void QuestForm_FormClosed(object sender, FormClosedEventArgs e) private void QuestForm_FormClosed(object sender, FormClosedEventArgs e)
{ {
if (DeleteShots.Checked) settings.Delsh = toggleDeleteAfterTransfer.Checked;
{ settings.Save();
settings.Delsh = true;
settings.Save();
}
if (!DeleteShots.Checked)
{
settings.Delsh = false;
settings.Save();
}
} }
private void QuestForm_Load(object sender, EventArgs e) private void QuestForm_Load(object sender, EventArgs e)
{ {
DeleteShots.Checked = settings.Delsh; CenterToParent();
toggleDeleteAfterTransfer.SetCheckedSilent(settings.Delsh);
delsh = settings.Delsh;
GlobalUsername.Text = settings.GlobalUsername; GlobalUsername.Text = settings.GlobalUsername;
} }
private void DeleteButton_Click(object sender, EventArgs e)
{
_ = MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
File.Delete($"{settings.MainDir}\\Config.Json");
}
private void questPics_Click(object sender, EventArgs e) private void questPics_Click(object sender, EventArgs e)
{ {
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists($"{path}\\Quest ScreenShots")) if (!Directory.Exists($"{path}\\Quest Screenshots"))
{ {
_ = Directory.CreateDirectory($"{path}\\Quest ScreenShots"); _ = Directory.CreateDirectory($"{path}\\Quest Screenshots");
} }
_ = MessageBox.Show("Please wait until you get the message that the transfer has finished."); _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.",
"Transfer Starting", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Pulling files..."); Program.form.changeTitle("Pulling files...");
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest ScreenShots\""); _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest Screenshots\"");
if (delsh) if (delsh)
{ {
DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel); DialogResult dialogResult = MessageBox.Show(
"You have chosen to delete files from headset after transferring.\n\nMake sure to move them from your desktop to somewhere safe!",
"Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.OK) if (dialogResult == DialogResult.OK)
{ {
_ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Screenshots"); _ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Screenshots");
_ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Screenshots"); _ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Screenshots");
} }
} }
_ = MessageBox.Show("Transfer finished! ScreenShots can be found in a folder named Quest Screenshots on your desktop!");
_ = MessageBox.Show("Transfer finished!\n\nScreenshots can be found in:\nDesktop\\Quest Screenshots",
"Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Done!"); Program.form.changeTitle("Done!");
} }
private void questVids_Click(object sender, EventArgs e) private void questVids_Click(object sender, EventArgs e)
{ {
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists($"{path}\\Quest Recordings")) if (!Directory.Exists($"{path}\\Quest Recordings"))
{ {
_ = Directory.CreateDirectory($"{path}\\Quest Recordings"); _ = Directory.CreateDirectory($"{path}\\Quest Recordings");
} }
_ = MessageBox.Show("Please wait until you get the message that the transfer has finished."); _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.",
"Transfer Starting", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Pulling files..."); Program.form.changeTitle("Pulling files...");
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Videoshots\" \"{path}\\Quest Recordings\""); _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Videoshots\" \"{path}\\Quest Recordings\"");
if (delsh) if (delsh)
{ {
DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel); DialogResult dialogResult = MessageBox.Show(
"You have chosen to delete files from headset after transferring.\n\nMake sure to move them from your desktop to somewhere safe!",
"Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.OK) if (dialogResult == DialogResult.OK)
{ {
_ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Videoshots"); _ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Videoshots");
_ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Videoshots"); _ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Videoshots");
} }
} }
_ = MessageBox.Show("Transfer finished! Recordings can be found in a folder named Quest Recordings on your desktop!");
_ = MessageBox.Show("Transfer finished!\n\nRecordings can be found in:\nDesktop\\Quest Recordings",
"Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Done!"); Program.form.changeTitle("Done!");
} }
private void btnApplyUsername_Click(object sender, EventArgs e) private void btnApplyUsername_Click(object sender, EventArgs e)
{ {
_ = ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}"); _ = ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}");
_ = MessageBox.Show($"Username set as {GlobalUsername.Text}", "Success"); _ = MessageBox.Show($"Username set to: {GlobalUsername.Text}", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
private void Form_KeyDown(object sender, KeyEventArgs e) private void btnClose_Click(object sender, EventArgs e)
{ {
if (e.KeyCode == Keys.Escape) Close();
{
Close();
}
} }
protected override bool ProcessDialogKey(Keys keyData) protected override bool ProcessDialogKey(Keys keyData)
{ {
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape) if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
@@ -182,8 +185,12 @@ namespace AndroidSideloader
private void GlobalUsername_TextChanged(object sender, EventArgs e) private void GlobalUsername_TextChanged(object sender, EventArgs e)
{ {
btnApplyUsername.Enabled = GlobalUsername.TextLength > 0; btnApplyUsername.Enabled = GlobalUsername.TextLength > 0;
btnApplyUsername.ForeColor = System.Drawing.Color.FromArgb(
((int)(((byte)(btnApplyUsername.Enabled ? 30 : 80)))),
((int)(((byte)(btnApplyUsername.Enabled ? 24 : 80)))),
((int)(((byte)(btnApplyUsername.Enabled ? 29 : 80)))));
settings.GlobalUsername = GlobalUsername.Text; settings.GlobalUsername = GlobalUsername.Text;
settings.Save();
} }
} }
} }

View File

@@ -36,6 +36,39 @@ namespace AndroidSideloader
Invalidate(); Invalidate();
} }
} }
private Color disabled1, disabled2;
private Color disabledStrokeColor;
public Color Disabled1
{
get => disabled1;
set
{
disabled1 = value;
Invalidate();
}
}
public Color Disabled2
{
get => disabled2;
set
{
disabled2 = value;
Invalidate();
}
}
public Color DisabledStrokeColor
{
get => disabledStrokeColor;
set
{
disabledStrokeColor = value;
Invalidate();
}
}
#endregion #endregion
#region RoundButton #region RoundButton
public RoundButton() public RoundButton()
@@ -48,7 +81,9 @@ namespace AndroidSideloader
inactive2 = Color.FromArgb(33, 167, 188); inactive2 = Color.FromArgb(33, 167, 188);
active1 = Color.FromArgb(64, 168, 183); active1 = Color.FromArgb(64, 168, 183);
active2 = Color.FromArgb(36, 164, 183); active2 = Color.FromArgb(36, 164, 183);
disabled1 = Color.FromArgb(32, 35, 45);
disabled2 = Color.FromArgb(25, 28, 35);
disabledStrokeColor = Color.FromArgb(50, 55, 65);
radius = 10; radius = 10;
roundedRect = new RoundedRectangleF(Width, Height, radius); roundedRect = new RoundedRectangleF(Width, Height, radius);
@@ -123,12 +158,18 @@ namespace AndroidSideloader
} }
else else
{ {
Color linear1 = Color.FromArgb(190, 190, 190); using (LinearGradientBrush disabledGB = new LinearGradientBrush(rect, disabled1, disabled2, 90f))
Color linear2 = Color.FromArgb(210, 210, 210);
using (LinearGradientBrush inactiveGB = new LinearGradientBrush(rect, linear1, linear2, 90f))
{ {
e.Graphics.FillPath(inactiveGB, roundedRect.Path); e.Graphics.FillPath(disabledGB, roundedRect.Path);
e.Graphics.DrawPath(new Pen(inactiveGB), roundedRect.Path); }
if (stroke)
{
using (Pen pen = new Pen(disabledStrokeColor, 1))
using (GraphicsPath path = new RoundedRectangleF(Width - (radius > 0 ? 0 : 1), Height - (radius > 0 ? 0 : 1), radius).Path)
{
e.Graphics.DrawPath(pen, path);
}
} }
} }

1120
SettingsForm.Designer.cs generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@ namespace AndroidSideloader
public partial class SettingsForm : Form public partial class SettingsForm : Form
{ {
private static readonly SettingsManager _settings = SettingsManager.Instance; private static readonly SettingsManager _settings = SettingsManager.Instance;
public SettingsForm() public SettingsForm()
{ {
InitializeComponent(); InitializeComponent();
@@ -25,35 +26,79 @@ namespace AndroidSideloader
private void initSettings() private void initSettings()
{ {
checkForUpdatesCheckBox.Checked = _settings.CheckForUpdates; // Use SetCheckedSilent to avoid triggering events during initialization
enableMessageBoxesCheckBox.Checked = _settings.EnableMessageBoxes; toggleCheckForUpdates.SetCheckedSilent(_settings.CheckForUpdates);
deleteAfterInstallCheckBox.Checked = _settings.DeleteAllAfterInstall; toggleMessageBoxes.SetCheckedSilent(_settings.EnableMessageBoxes);
updateConfigCheckBox.Checked = _settings.AutoUpdateConfig; toggleDeleteAfterInstall.SetCheckedSilent(_settings.DeleteAllAfterInstall);
userJsonOnGameInstall.Checked = _settings.UserJsonOnGameInstall; toggleUpdateConfig.SetCheckedSilent(_settings.AutoUpdateConfig);
nodevicemodeBox.Checked = _settings.NodeviceMode; toggleUserJson.SetCheckedSilent(_settings.UserJsonOnGameInstall);
bmbfBox.Checked = _settings.BMBFChecked; toggleNoDeviceMode.SetCheckedSilent(_settings.NodeviceMode);
AutoReinstBox.Checked = _settings.AutoReinstall; toggleBMBF.SetCheckedSilent(_settings.BMBFChecked);
chkSingleThread.Checked = _settings.SingleThreadMode; toggleAutoReinstall.SetCheckedSilent(_settings.AutoReinstall);
virtualFilesystemCompatibilityCheckbox.Checked = _settings.VirtualFilesystemCompatibility; toggleSingleThread.SetCheckedSilent(_settings.SingleThreadMode);
toggleVirtualFilesystem.SetCheckedSilent(_settings.VirtualFilesystemCompatibility);
toggleUseDownloadedFiles.SetCheckedSilent(_settings.UseDownloadedFiles);
toggleTrailers.SetCheckedSilent(_settings.TrailersEnabled);
bandwidthLimitTextBox.Text = _settings.BandwidthLimit.ToString(); bandwidthLimitTextBox.Text = _settings.BandwidthLimit.ToString();
if (nodevicemodeBox.Checked)
// Handle no device mode disabling delete after install
if (toggleNoDeviceMode.Checked)
{ {
deleteAfterInstallCheckBox.Checked = false; toggleDeleteAfterInstall.SetCheckedSilent(false);
deleteAfterInstallCheckBox.Enabled = false; toggleDeleteAfterInstall.Enabled = false;
lblDeleteAfterInstall.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
} }
chkUseDownloadedFiles.Checked = _settings.UseDownloadedFiles;
} }
private void initToolTips() private void initToolTips()
{ {
ToolTip checkForUpdatesToolTip = new ToolTip(); ToolTip toolTip = new ToolTip();
checkForUpdatesToolTip.SetToolTip(checkForUpdatesCheckBox, "If this is checked, the software will check for available updates"); toolTip.SetToolTip(toggleCheckForUpdates, "Check for available application updates on startup");
ToolTip enableMessageBoxesToolTip = new ToolTip(); toolTip.SetToolTip(lblCheckForUpdates, "Check for available application updates on startup");
enableMessageBoxesToolTip.SetToolTip(enableMessageBoxesCheckBox, "If this is checked, the software will display message boxes after every completed task"); toolTip.SetToolTip(toggleMessageBoxes, "Show message boxes after every completed task");
ToolTip deleteAfterInstallToolTip = new ToolTip(); toolTip.SetToolTip(lblMessageBoxes, "Show message boxes after every completed task");
deleteAfterInstallToolTip.SetToolTip(deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server"); toolTip.SetToolTip(toggleDeleteAfterInstall, "Delete game files after downloading and installing");
ToolTip chkUseDownloadedFilesTooltip = new ToolTip(); toolTip.SetToolTip(lblDeleteAfterInstall, "Delete game files after downloading and installing");
chkUseDownloadedFilesTooltip.SetToolTip(chkUseDownloadedFiles, "If this is checked, Rookie will always install Downloaded files without Re-Downloading or Asking to Re-Download"); toolTip.SetToolTip(toggleUseDownloadedFiles, "Always install downloaded files without prompting to re-download");
toolTip.SetToolTip(lblUseDownloadedFiles, "Always install downloaded files without prompting to re-download");
toolTip.SetToolTip(toggleTrailers, "Show game trailers in the sidebar when selecting a game");
toolTip.SetToolTip(lblTrailers, "Show game trailers in the sidebar when selecting a game");
}
private void SaveAllSettings()
{
string input = bandwidthLimitTextBox.Text;
Regex regex = new Regex(@"^\d+(\.\d+)?$");
if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit))
{
_settings.BandwidthLimit = bandwidthLimit;
}
_settings.CheckForUpdates = toggleCheckForUpdates.Checked;
_settings.EnableMessageBoxes = toggleMessageBoxes.Checked;
_settings.DeleteAllAfterInstall = toggleDeleteAfterInstall.Checked;
_settings.AutoUpdateConfig = toggleUpdateConfig.Checked;
_settings.UserJsonOnGameInstall = toggleUserJson.Checked;
_settings.NodeviceMode = toggleNoDeviceMode.Checked;
_settings.BMBFChecked = toggleBMBF.Checked;
_settings.AutoReinstall = toggleAutoReinstall.Checked;
_settings.SingleThreadMode = toggleSingleThread.Checked;
_settings.VirtualFilesystemCompatibility = toggleVirtualFilesystem.Checked;
_settings.UseDownloadedFiles = toggleUseDownloadedFiles.Checked;
_settings.TrailersEnabled = toggleTrailers.Checked;
if (Program.form != null)
{
Program.form.SetTrailerVisibility(toggleTrailers.Checked);
}
if (_settings.AutoUpdateConfig)
{
_settings.CreatePubMirrorFile = true;
}
_settings.Save();
} }
public void btnUploadDebug_click(object sender, EventArgs e) public void btnUploadDebug_click(object sender, EventArgs e)
@@ -89,74 +134,54 @@ namespace AndroidSideloader
string input = bandwidthLimitTextBox.Text; string input = bandwidthLimitTextBox.Text;
Regex regex = new Regex(@"^\d+(\.\d+)?$"); Regex regex = new Regex(@"^\d+(\.\d+)?$");
if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit)) if (!regex.IsMatch(input) || !float.TryParse(input, out _))
{
_settings.BandwidthLimit = bandwidthLimit;
_settings.Save();
this.Close();
}
else
{ {
MessageBox.Show("Please enter a valid number for the bandwidth limit."); MessageBox.Show("Please enter a valid number for the bandwidth limit.");
return;
} }
SaveAllSettings();
this.Close();
} }
private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e) private void toggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)
{ {
_settings.CheckForUpdates = checkForUpdatesCheckBox.Checked; // Settings saved on form close
_settings.Save();
} }
private void chkUseDownloadedFiles_CheckedChanged(object sender, EventArgs e) private void toggleUseDownloadedFiles_CheckedChanged(object sender, EventArgs e)
{ {
_settings.UseDownloadedFiles = chkUseDownloadedFiles.Checked; // Settings saved on form close
_settings.Save();
} }
private void enableMessageBoxesCheckBox_CheckedChanged(object sender, EventArgs e) private void toggleMessageBoxes_CheckedChanged(object sender, EventArgs e)
{ {
_settings.EnableMessageBoxes = enableMessageBoxesCheckBox.Checked; // Settings saved on form close
_settings.Save(); }
private void toggleTrailers_CheckedChanged(object sender, EventArgs e)
{
// Settings saved on form close
} }
private void resetSettingsButton_Click(object sender, EventArgs e) private void resetSettingsButton_Click(object sender, EventArgs e)
{ {
// Reset the specific properties this.Close();
_settings.CustomDownloadDir = false;
_settings.CustomBackupDir = false;
// Set backup folder and download directory
MainForm.backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Rookie Backups");
_settings.DownloadDir = Environment.CurrentDirectory;
_settings.CreatePubMirrorFile = true;
// Optionally, call initSettings if it needs to initialize anything based on these settings
initSettings();
// Save the updated settings
_settings.Save();
} }
private void deleteAfterInstallCheckBox_CheckedChanged(object sender, EventArgs e) private void toggleDeleteAfterInstall_CheckedChanged(object sender, EventArgs e)
{ {
_settings.DeleteAllAfterInstall = deleteAfterInstallCheckBox.Checked; // Settings saved on form close
_settings.Save();
} }
private void updateConfigCheckBox_CheckedChanged(object sender, EventArgs e) private void toggleUpdateConfig_CheckedChanged(object sender, EventArgs e)
{ {
_settings.AutoUpdateConfig = updateConfigCheckBox.Checked; // Settings saved on form close
if (_settings.AutoUpdateConfig)
{
_settings.CreatePubMirrorFile = true;
}
_settings.Save();
} }
private void userJsonOnGameInstall_CheckedChanged(object sender, EventArgs e) private void toggleUserJson_CheckedChanged(object sender, EventArgs e)
{ {
_settings.UserJsonOnGameInstall = userJsonOnGameInstall.Checked; // Settings saved on form close
_settings.Save();
} }
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e) private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
@@ -190,48 +215,50 @@ namespace AndroidSideloader
return base.ProcessDialogKey(keyData); return base.ProcessDialogKey(keyData);
} }
private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e) private void toggleNoDeviceMode_CheckedChanged(object sender, EventArgs e)
{ {
_settings.NodeviceMode = nodevicemodeBox.Checked; // Update UI state only - settings saved on form close
if (!nodevicemodeBox.Checked) if (!toggleNoDeviceMode.Checked)
{ {
deleteAfterInstallCheckBox.Checked = true; toggleDeleteAfterInstall.Checked = true;
_settings.DeleteAllAfterInstall = true; toggleDeleteAfterInstall.Enabled = true;
deleteAfterInstallCheckBox.Enabled = true; lblDeleteAfterInstall.ForeColor = System.Drawing.Color.White;
} }
else else
{ {
deleteAfterInstallCheckBox.Checked = false; toggleDeleteAfterInstall.SetCheckedSilent(false);
_settings.DeleteAllAfterInstall = false; toggleDeleteAfterInstall.Enabled = false;
deleteAfterInstallCheckBox.Enabled = false; lblDeleteAfterInstall.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
} }
_settings.Save();
} }
private void bmbfBox_CheckedChanged(object sender, EventArgs e) private void toggleBMBF_CheckedChanged(object sender, EventArgs e)
{ {
_settings.BMBFChecked = bmbfBox.Checked; // Settings saved on form close
_settings.Save();
} }
private void AutoReinstBox_CheckedChanged(object sender, EventArgs e) private void toggleAutoReinstall_CheckedChanged(object sender, EventArgs e)
{ {
_settings.AutoReinstall = AutoReinstBox.Checked; // Settings saved on form close
_settings.Save();
} }
private void AutoReinstBox_Click(object sender, EventArgs e) private void toggleAutoReinstall_Click(object sender, EventArgs e)
{ {
if (AutoReinstBox.Checked) if (toggleAutoReinstall.Checked)
{ {
DialogResult dialogResult = FlexibleMessageBox.Show(this, "WARNING: This box enables automatic reinstall when installs fail,\ndue to some games not allowing " + DialogResult dialogResult = FlexibleMessageBox.Show(this,
"access to their save data (less than 5%) this\noption can lead to losing your progress." + "WARNING: This enables automatic reinstall when installs fail.\n\n" +
" However with this option\nchecked when installs fail you won't have to agree to a prompt to perform\nthe reinstall. " + "Some games (less than 5%) don't allow access to their save data, " +
"(ideal when installing from a queue).\n\nNOTE: If your usb/wireless adb connection is extremely slow this option can\ncause larger" + "which can lead to losing your progress.\n\n" +
"apk file installations to fail. Enable anyway?", "WARNING", MessageBoxButtons.OKCancel); "However, with this option enabled, you won't have to confirm reinstalls manually " +
"(ideal for queue installations).\n\n" +
"NOTE: If your USB/wireless ADB connection is slow, this may cause " +
"larger APK installations to fail.\n\nEnable anyway?",
"WARNING", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.Cancel) if (dialogResult == DialogResult.Cancel)
{ {
AutoReinstBox.Checked = false; toggleAutoReinstall.SetCheckedSilent(false);
} }
} }
} }
@@ -250,7 +277,6 @@ namespace AndroidSideloader
{ {
_settings.CustomDownloadDir = true; _settings.CustomDownloadDir = true;
_settings.DownloadDir = downloadDirectorySetter.SelectedPath; _settings.DownloadDir = downloadDirectorySetter.SelectedPath;
_settings.Save();
} }
} }
@@ -261,20 +287,17 @@ namespace AndroidSideloader
_settings.CustomBackupDir = true; _settings.CustomBackupDir = true;
_settings.BackupDir = backupDirectorySetter.SelectedPath; _settings.BackupDir = backupDirectorySetter.SelectedPath;
MainForm.backupFolder = _settings.BackupDir; MainForm.backupFolder = _settings.BackupDir;
_settings.Save();
} }
} }
private void chkSingleThread_CheckedChanged(object sender, EventArgs e) private void toggleSingleThread_CheckedChanged(object sender, EventArgs e)
{ {
_settings.SingleThreadMode = chkSingleThread.Checked; // Settings saved on form close
_settings.Save();
} }
private void virtualFilesystemCompatibilityCheckbox_CheckedChanged(object sender, EventArgs e) private void toggleVirtualFilesystem_CheckedChanged(object sender, EventArgs e)
{ {
_settings.VirtualFilesystemCompatibility = virtualFilesystemCompatibilityCheckbox.Checked; // Settings saved on form close
_settings.Save();
} }
private void openDownloadDirectory_Click(object sender, EventArgs e) private void openDownloadDirectory_Click(object sender, EventArgs e)

File diff suppressed because it is too large Load Diff

264
ToggleSwitch.cs Normal file
View File

@@ -0,0 +1,264 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace AndroidSideloader
{
/// <summary>
/// An iOS-style toggle switch control with smooth animation.
/// </summary>
public class ToggleSwitch : Control
{
private bool _checked;
private bool _isHovered;
private float _animationProgress; // 0 = off, 1 = on
private Timer _animationTimer;
private const int AnimationDuration = 80; // ms
private const int AnimationInterval = 8; // ~120fps
private float _animationStep;
// Colors
private Color _onColor = Color.FromArgb(93, 203, 173);
private Color _offColor = Color.FromArgb(60, 65, 75);
private Color _thumbColor = Color.White;
private Color _onHoverColor = Color.FromArgb(110, 215, 190);
private Color _offHoverColor = Color.FromArgb(75, 80, 90);
public event EventHandler CheckedChanged;
public ToggleSwitch()
{
SetStyle(ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.SupportsTransparentBackColor |
ControlStyles.StandardClick |
ControlStyles.StandardDoubleClick, true);
// Disable double-click so rapid clicks are treated as separate clicks
SetStyle(ControlStyles.StandardDoubleClick, false);
Size = new Size(44, 24);
Cursor = Cursors.Hand;
BackColor = Color.Transparent;
_animationTimer = new Timer { Interval = AnimationInterval };
_animationTimer.Tick += AnimationTimer_Tick;
_animationStep = (float)AnimationInterval / AnimationDuration;
}
[Category("Appearance")]
[Description("Gets or sets whether the toggle is in the 'on' state.")]
[DefaultValue(false)]
public bool Checked
{
get => _checked;
set
{
if (_checked != value)
{
_checked = value;
StartAnimation();
OnCheckedChanged(EventArgs.Empty);
}
}
}
/// <summary>
/// Sets the checked state without triggering animation or events.
/// Using this for initial state setup.
/// </summary>
public void SetCheckedSilent(bool value)
{
_checked = value;
_animationProgress = value ? 1f : 0f;
_animationTimer.Stop();
Invalidate();
}
[Category("Appearance")]
[Description("The color of the toggle when it is on.")]
public Color OnColor
{
get => _onColor;
set { _onColor = value; Invalidate(); }
}
[Category("Appearance")]
[Description("The color of the toggle when it is off.")]
public Color OffColor
{
get => _offColor;
set { _offColor = value; Invalidate(); }
}
[Category("Appearance")]
[Description("The color of the thumb (circle).")]
public Color ThumbColor
{
get => _thumbColor;
set { _thumbColor = value; Invalidate(); }
}
protected virtual void OnCheckedChanged(EventArgs e)
{
CheckedChanged?.Invoke(this, e);
}
private void StartAnimation()
{
if (!_animationTimer.Enabled)
{
_animationTimer.Start();
}
}
private void AnimationTimer_Tick(object sender, EventArgs e)
{
float target = _checked ? 1f : 0f;
if (_animationProgress < target)
{
_animationProgress += _animationStep;
if (_animationProgress >= target)
{
_animationProgress = target;
_animationTimer.Stop();
}
}
else if (_animationProgress > target)
{
_animationProgress -= _animationStep;
if (_animationProgress <= target)
{
_animationProgress = target;
_animationTimer.Stop();
}
}
else
{
_animationTimer.Stop();
}
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
int width = Width;
int height = Height;
int padding = 2;
int thumbDiameter = height - (padding * 2);
int trackRadius = height / 2;
Color trackColor;
if (_isHovered)
{
trackColor = InterpolateColor(_offHoverColor, _onHoverColor, _animationProgress);
}
else
{
trackColor = InterpolateColor(_offColor, _onColor, _animationProgress);
}
Rectangle trackRect = new Rectangle(0, 0, width, height);
using (GraphicsPath trackPath = CreateRoundedRectPath(trackRect, trackRadius))
using (SolidBrush trackBrush = new SolidBrush(trackColor))
{
g.FillPath(trackBrush, trackPath);
}
int thumbMinX = padding;
int thumbMaxX = width - thumbDiameter - padding;
float easedProgress = EaseOutQuad(_animationProgress);
int thumbX = (int)(thumbMinX + (thumbMaxX - thumbMinX) * easedProgress);
int thumbY = padding;
Rectangle shadowRect = new Rectangle(thumbX + 1, thumbY + 1, thumbDiameter, thumbDiameter);
using (SolidBrush shadowBrush = new SolidBrush(Color.FromArgb(40, 0, 0, 0)))
{
g.FillEllipse(shadowBrush, shadowRect);
}
Rectangle thumbRect = new Rectangle(thumbX, thumbY, thumbDiameter, thumbDiameter);
using (SolidBrush thumbBrush = new SolidBrush(_thumbColor))
{
g.FillEllipse(thumbBrush, thumbRect);
}
}
private float EaseOutQuad(float t)
{
return t * (2 - t);
}
private Color InterpolateColor(Color from, Color to, float progress)
{
int r = (int)(from.R + (to.R - from.R) * progress);
int g = (int)(from.G + (to.G - from.G) * progress);
int b = (int)(from.B + (to.B - from.B) * progress);
int a = (int)(from.A + (to.A - from.A) * progress);
return Color.FromArgb(a, r, g, b);
}
private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
{
GraphicsPath path = new GraphicsPath();
int diameter = radius * 2;
path.AddArc(rect.X, rect.Y, diameter, diameter, 180, 90);
path.AddArc(rect.Right - diameter, rect.Y, diameter, diameter, 270, 90);
path.AddArc(rect.Right - diameter, rect.Bottom - diameter, diameter, diameter, 0, 90);
path.AddArc(rect.X, rect.Bottom - diameter, diameter, diameter, 90, 90);
path.CloseFigure();
return path;
}
protected override void OnMouseEnter(EventArgs e)
{
base.OnMouseEnter(e);
_isHovered = true;
Invalidate();
}
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
_isHovered = false;
Invalidate();
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button == MouseButtons.Left)
{
// Toggle immediately on mouse down for responsive feel
_checked = !_checked;
StartAnimation();
OnCheckedChanged(EventArgs.Empty);
}
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_animationTimer?.Stop();
_animationTimer?.Dispose();
}
base.Dispose(disposing);
}
}
}

129
UpdateForm.Designer.cs generated
View File

@@ -1,5 +1,4 @@
 namespace AndroidSideloader
namespace AndroidSideloader
{ {
partial class UpdateForm partial class UpdateForm
{ {
@@ -40,123 +39,133 @@ namespace AndroidSideloader
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.panel3.SuspendLayout(); this.panel3.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// panel1 // panel1
// //
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor; this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.panel1.Controls.Add(this.YesUpdate); this.panel1.Controls.Add(this.YesUpdate);
this.panel1.Controls.Add(this.panel3); this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.UpdateVerLabel); this.panel1.Controls.Add(this.UpdateVerLabel);
this.panel1.Controls.Add(this.CurVerLabel); this.panel1.Controls.Add(this.CurVerLabel);
this.panel1.Controls.Add(this.SkipUpdate); 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.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(-6, -6); this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(474, 305); this.panel1.Padding = new System.Windows.Forms.Padding(20, 50, 20, 20);
this.panel1.Size = new System.Drawing.Size(480, 320);
this.panel1.TabIndex = 5; this.panel1.TabIndex = 5;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown); this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove); this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp); this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
// //
// YesUpdate // YesUpdate
// //
this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.YesUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.YesUpdate.BackColor = System.Drawing.Color.Transparent; this.YesUpdate.BackColor = System.Drawing.Color.Transparent;
this.YesUpdate.DialogResult = System.Windows.Forms.DialogResult.OK; this.YesUpdate.DialogResult = System.Windows.Forms.DialogResult.OK;
this.YesUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); this.YesUpdate.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.YesUpdate.ForeColor = System.Drawing.Color.White; this.YesUpdate.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25))))); this.YesUpdate.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25))))); this.YesUpdate.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.YesUpdate.Location = new System.Drawing.Point(339, 245); this.YesUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(73)))), ((int)(((byte)(183)))), ((int)(((byte)(153)))));
this.YesUpdate.Location = new System.Drawing.Point(340, 259);
this.YesUpdate.Name = "YesUpdate"; this.YesUpdate.Name = "YesUpdate";
this.YesUpdate.Radius = 5; this.YesUpdate.Radius = 6;
this.YesUpdate.Size = new System.Drawing.Size(111, 31); this.YesUpdate.Size = new System.Drawing.Size(120, 36);
this.YesUpdate.Stroke = true; this.YesUpdate.Stroke = false;
this.YesUpdate.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74))))); this.YesUpdate.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.YesUpdate.TabIndex = 2; this.YesUpdate.TabIndex = 2;
this.YesUpdate.Text = "Update Now"; this.YesUpdate.Text = "Update Now";
this.YesUpdate.Transparency = false; this.YesUpdate.Transparency = false;
this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click); this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click);
// //
// panel3 // panel3
// //
this.panel3.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor; this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38)))));
this.panel3.Controls.Add(this.UpdateTextBox); 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(20, 50);
this.panel3.Location = new System.Drawing.Point(21, 19);
this.panel3.Name = "panel3"; this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(432, 218); this.panel3.Padding = new System.Windows.Forms.Padding(12, 10, 12, 10);
this.panel3.Size = new System.Drawing.Size(440, 200);
this.panel3.TabIndex = 0; this.panel3.TabIndex = 0;
// //
// UpdateTextBox // UpdateTextBox
// //
this.UpdateTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor; this.UpdateTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38)))));
this.UpdateTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.UpdateTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.UpdateTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); this.UpdateTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.UpdateTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.25F); this.UpdateTextBox.Font = new System.Drawing.Font("Segoe UI", 9.5F);
this.UpdateTextBox.ForeColor = System.Drawing.Color.White; this.UpdateTextBox.ForeColor = System.Drawing.Color.White;
this.UpdateTextBox.Location = new System.Drawing.Point(12, 8); this.UpdateTextBox.Location = new System.Drawing.Point(12, 10);
this.UpdateTextBox.Margin = new System.Windows.Forms.Padding(6); this.UpdateTextBox.Margin = new System.Windows.Forms.Padding(6);
this.UpdateTextBox.Name = "UpdateTextBox"; this.UpdateTextBox.Name = "UpdateTextBox";
this.UpdateTextBox.ReadOnly = true; this.UpdateTextBox.ReadOnly = true;
this.UpdateTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; this.UpdateTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.UpdateTextBox.Size = new System.Drawing.Size(408, 200); this.UpdateTextBox.Size = new System.Drawing.Size(416, 180);
this.UpdateTextBox.TabIndex = 1; this.UpdateTextBox.TabIndex = 1;
this.UpdateTextBox.Text = ""; this.UpdateTextBox.Text = "";
this.UpdateTextBox.TextChanged += new System.EventHandler(this.UpdateTextBox_TextChanged); this.UpdateTextBox.TextChanged += new System.EventHandler(this.UpdateTextBox_TextChanged);
this.UpdateTextBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown); this.UpdateTextBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.UpdateTextBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove); this.UpdateTextBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.UpdateTextBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp); this.UpdateTextBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
// //
// UpdateVerLabel // UpdateVerLabel
// //
this.UpdateVerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.UpdateVerLabel.AutoSize = true; this.UpdateVerLabel.AutoSize = true;
this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent; this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent;
this.UpdateVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); this.UpdateVerLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.UpdateVerLabel.ForeColor = System.Drawing.SystemColors.Control; this.UpdateVerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.UpdateVerLabel.Location = new System.Drawing.Point(21, 261); this.UpdateVerLabel.Location = new System.Drawing.Point(20, 285);
this.UpdateVerLabel.Name = "UpdateVerLabel"; this.UpdateVerLabel.Name = "UpdateVerLabel";
this.UpdateVerLabel.Size = new System.Drawing.Size(94, 15); this.UpdateVerLabel.Size = new System.Drawing.Size(95, 15);
this.UpdateVerLabel.TabIndex = 3; this.UpdateVerLabel.TabIndex = 3;
this.UpdateVerLabel.Text = "Update Version:"; this.UpdateVerLabel.Text = "Update Version:";
// //
// CurVerLabel // CurVerLabel
// //
this.CurVerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.CurVerLabel.AutoSize = true; this.CurVerLabel.AutoSize = true;
this.CurVerLabel.BackColor = System.Drawing.Color.Transparent; this.CurVerLabel.BackColor = System.Drawing.Color.Transparent;
this.CurVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F); this.CurVerLabel.Font = new System.Drawing.Font("Segoe UI", 9F);
this.CurVerLabel.ForeColor = System.Drawing.SystemColors.Control; this.CurVerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(165)))), ((int)(((byte)(175)))));
this.CurVerLabel.Location = new System.Drawing.Point(21, 245); this.CurVerLabel.Location = new System.Drawing.Point(20, 266);
this.CurVerLabel.Name = "CurVerLabel"; this.CurVerLabel.Name = "CurVerLabel";
this.CurVerLabel.Size = new System.Drawing.Size(94, 15); this.CurVerLabel.Size = new System.Drawing.Size(91, 15);
this.CurVerLabel.TabIndex = 2; this.CurVerLabel.TabIndex = 2;
this.CurVerLabel.Text = "Current Version:"; this.CurVerLabel.Text = "Current Version:";
// //
// SkipUpdate // SkipUpdate
// //
this.SkipUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.SkipUpdate.AutoSize = true; this.SkipUpdate.AutoSize = true;
this.SkipUpdate.BackColor = System.Drawing.Color.Transparent; this.SkipUpdate.BackColor = System.Drawing.Color.Transparent;
this.SkipUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.SkipUpdate.Cursor = System.Windows.Forms.Cursors.Hand;
this.SkipUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F); this.SkipUpdate.Font = new System.Drawing.Font("Segoe UI", 8.5F);
this.SkipUpdate.ForeColor = System.Drawing.Color.Silver; this.SkipUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(165)))), ((int)(((byte)(175)))));
this.SkipUpdate.Location = new System.Drawing.Point(374, 279); this.SkipUpdate.Location = new System.Drawing.Point(380, 297);
this.SkipUpdate.Name = "SkipUpdate"; this.SkipUpdate.Name = "SkipUpdate";
this.SkipUpdate.Size = new System.Drawing.Size(76, 13); this.SkipUpdate.Size = new System.Drawing.Size(73, 15);
this.SkipUpdate.TabIndex = 4; this.SkipUpdate.TabIndex = 4;
this.SkipUpdate.Text = "𝖲𝖪𝖨𝖯 𝖥𝖮𝖱 𝖭𝖮𝖶"; this.SkipUpdate.Text = "Skip for now";
this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click); this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click);
// //
// UpdateForm // UpdateForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(29)))), ((int)(((byte)(29))))); this.ClientSize = new System.Drawing.Size(480, 320);
this.ClientSize = new System.Drawing.Size(462, 291);
this.ControlBox = false; this.ControlBox = false;
this.Controls.Add(this.panel1); this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "UpdateForm"; this.Name = "UpdateForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
@@ -180,4 +189,4 @@ namespace AndroidSideloader
private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Panel panel1;
private RoundButton YesUpdate; private RoundButton YesUpdate;
} }
} }

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms; using System.Windows.Forms;
namespace AndroidSideloader namespace AndroidSideloader
@@ -9,15 +10,203 @@ namespace AndroidSideloader
private bool mouseDown; private bool mouseDown;
private Point lastLocation; private Point lastLocation;
// Modern theme colors
private static readonly Color BackgroundColor = Color.FromArgb(20, 24, 29);
private static readonly Color PanelColor = Color.FromArgb(28, 32, 38);
private static readonly Color TextColor = Color.White;
private static readonly Color SecondaryTextColor = Color.FromArgb(160, 165, 175);
private static readonly Color BorderColor = Color.FromArgb(60, 65, 75);
public UpdateForm() public UpdateForm()
{ {
InitializeComponent(); InitializeComponent();
ApplyModernTheme();
CenterToScreen(); CenterToScreen();
CurVerLabel.Text += " " + Updater.LocalVersion; CurVerLabel.Text = $"Current Version: {Updater.LocalVersion}";
UpdateVerLabel.Text += " " + Updater.currentVersion; UpdateVerLabel.Text = $"Update Version: {Updater.currentVersion}";
UpdateTextBox.Text = Updater.changelog; UpdateTextBox.Text = Updater.changelog;
} }
private void ApplyModernTheme()
{
// Form settings
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = BackgroundColor;
this.DoubleBuffered = true;
// Enable double buffering on panels for smooth rounded corners
EnableDoubleBuffering(panel1);
EnableDoubleBuffering(panel3);
// Add custom paint handler for rounded panel1 (main container)
panel1.Paint += Panel1_Paint;
panel1.BackColor = Color.Transparent;
// Add custom paint handler for rounded panel3 (changelog container)
panel3.Paint += Panel3_Paint;
panel3.BackColor = Color.Transparent;
// Update textbox to have matching background
UpdateTextBox.BackColor = PanelColor;
// Add title label
var titleLabel = new Label
{
Text = "Update Available",
Font = new Font("Segoe UI", 12F, FontStyle.Bold),
ForeColor = TextColor,
BackColor = Color.Transparent,
AutoSize = true,
Location = new Point(20, 15)
};
panel1.Controls.Add(titleLabel);
titleLabel.BringToFront();
// Add close button
var closeButton = new Label
{
Text = "✕",
Font = new Font("Segoe UI", 10F),
ForeColor = SecondaryTextColor,
BackColor = Color.Transparent,
AutoSize = true,
Cursor = Cursors.Hand,
Location = new Point(this.ClientSize.Width - 30, 10),
Anchor = AnchorStyles.Top | AnchorStyles.Right
};
closeButton.Click += (s, e) => Close();
closeButton.MouseEnter += (s, e) => closeButton.ForeColor = Color.FromArgb(220, 80, 80);
closeButton.MouseLeave += (s, e) => closeButton.ForeColor = SecondaryTextColor;
panel1.Controls.Add(closeButton);
closeButton.BringToFront();
// Apply custom painting for form rounded corners and border
this.Paint += UpdateForm_Paint;
}
private void EnableDoubleBuffering(Panel panel)
{
typeof(Panel).InvokeMember("DoubleBuffered",
System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic,
null, panel, new object[] { true });
}
private void Panel1_Paint(object sender, PaintEventArgs e)
{
var panel = sender as Panel;
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
int radius = 12;
var rect = new Rectangle(0, 0, panel.Width - 1, panel.Height - 1);
using (var path = CreateRoundedRectPath(rect, radius))
{
// Fill background
using (var brush = new SolidBrush(BackgroundColor))
{
e.Graphics.FillPath(brush, path);
}
// Draw border
using (var pen = new Pen(BorderColor, 1f))
{
e.Graphics.DrawPath(pen, path);
}
}
// Apply rounded region to clip children
using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, panel.Width, panel.Height), radius))
{
panel.Region = new Region(regionPath);
}
}
private void Panel3_Paint(object sender, PaintEventArgs e)
{
var panel = sender as Panel;
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
int radius = 10;
var rect = new Rectangle(0, 0, panel.Width - 1, panel.Height - 1);
using (var path = CreateRoundedRectPath(rect, radius))
{
// Fill background
using (var brush = new SolidBrush(PanelColor))
{
e.Graphics.FillPath(brush, path);
}
// Draw border
using (var pen = new Pen(BorderColor, 1f))
{
e.Graphics.DrawPath(pen, path);
}
}
// Apply rounded region to clip children
using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, panel.Width, panel.Height), radius))
{
panel.Region = new Region(regionPath);
}
}
private void UpdateForm_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
int w = this.ClientSize.Width;
int h = this.ClientSize.Height;
int radius = 12;
// Draw border
using (var borderPen = new Pen(BorderColor, 1f))
using (var path = CreateRoundedRectPath(new Rectangle(0, 0, w - 1, h - 1), radius))
{
e.Graphics.DrawPath(borderPen, path);
}
// Apply rounded region
using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, w, h), radius))
{
this.Region = new Region(regionPath);
}
}
private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
{
GraphicsPath path = new GraphicsPath();
if (radius <= 0)
{
path.AddRectangle(rect);
return path;
}
int diameter = radius * 2;
diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
radius = diameter / 2;
Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
// Top left arc
path.AddArc(arcRect, 180, 90);
// Top right arc
arcRect.X = rect.Right - diameter;
path.AddArc(arcRect, 270, 90);
// Bottom right arc
arcRect.Y = rect.Bottom - diameter;
path.AddArc(arcRect, 0, 90);
// Bottom left arc
arcRect.X = rect.Left;
path.AddArc(arcRect, 90, 90);
path.CloseFigure();
return path;
}
private void YesUpdate_Click(object sender, EventArgs e) private void YesUpdate_Click(object sender, EventArgs e)
{ {
Updater.doUpdate(); Updater.doUpdate();
@@ -31,7 +220,6 @@ namespace AndroidSideloader
private void UpdateTextBox_TextChanged(object sender, EventArgs e) private void UpdateTextBox_TextChanged(object sender, EventArgs e)
{ {
} }
private void UpdateForm_MouseDown(object sender, MouseEventArgs e) private void UpdateForm_MouseDown(object sender, MouseEventArgs e)
@@ -46,7 +234,6 @@ namespace AndroidSideloader
{ {
Location = new Point( Location = new Point(
Location.X - lastLocation.X + e.X, Location.Y - lastLocation.Y + e.Y); Location.X - lastLocation.X + e.X, Location.Y - lastLocation.Y + e.Y);
Update(); Update();
} }
} }
@@ -56,4 +243,4 @@ namespace AndroidSideloader
mouseDown = false; mouseDown = false;
} }
} }
} }

View File

@@ -13,7 +13,7 @@ namespace AndroidSideloader
private static readonly string RawGitHubUrl = "https://raw.githubusercontent.com/VRPirates/rookie"; private static readonly string RawGitHubUrl = "https://raw.githubusercontent.com/VRPirates/rookie";
private static readonly string GitHubUrl = "https://github.com/VRPirates/rookie"; private static readonly string GitHubUrl = "https://github.com/VRPirates/rookie";
public static readonly string LocalVersion = "2.35.0"; public static readonly string LocalVersion = "3.0";
public static string currentVersion = string.Empty; public static string currentVersion = string.Empty;
public static string changelog = string.Empty; public static string changelog = string.Empty;
@@ -38,7 +38,7 @@ namespace AndroidSideloader
return CompareVersions(currentVersion, LocalVersion.Trim()) > 0; return CompareVersions(currentVersion, LocalVersion.Trim()) > 0;
} }
// Compares two semantic version strings (e.g., "2.35.0") // Compares two semantic version strings (e.g., "2.35")
// returns: 1 if version1 > version2, -1 if version1 < version2, 0 if equal // returns: 1 if version1 > version2, -1 if version1 < version2, 0 if equal
private static int CompareVersions(string version1, string version2) private static int CompareVersions(string version1, string version2)
{ {

View File

@@ -132,7 +132,8 @@ namespace AndroidSideloader.Utilities
public bool UseDownloadedFiles { get; set; } = false; public bool UseDownloadedFiles { get; set; } = false;
public float BandwidthLimit { get; set; } = 0f; public float BandwidthLimit { get; set; } = 0f;
public string[] FavoritedGames { get; set; } = new string[0]; public string[] FavoritedGames { get; set; } = new string[0];
public bool TrailersEnabled { get; set; } = true;
public bool UseGalleryView { get; set; } = true;
private SettingsManager() private SettingsManager()
{ {
Load(); Load();
@@ -252,8 +253,10 @@ namespace AndroidSideloader.Utilities
UseDownloadedFiles = false; UseDownloadedFiles = false;
BandwidthLimit = 0f; BandwidthLimit = 0f;
FavoritedGames = new string[0]; FavoritedGames = new string[0];
TrailersEnabled = true;
UseGalleryView = true;
Save(); Save();
Debug.WriteLine("Default settings created."); Debug.WriteLine("Default settings created.");
} }

View File

@@ -1,11 +1,28 @@
RSL 2.35 RSL 3.0
- Feature: Restructure and project file organization Major Rookie overhaul with modernized UI, performance boosts and UX improvements
- Feature: Renamed 'ADB' to 'AdbManager'
- Fix: Remove hideAdultContent toggle (no longer needed) - Gallery View:
- Fix: WebView2 "too many automatic redirections" error - Introduced high-performance Gallery View
- Fix: Donor window only displays unique entries - Hover animations, smooth scrolling, dynamic scaling, status badges
- Fix: Cleanup packages listing - Toggle to switch seamlessly between List and Gallery view
- Chore: Changed C:\RSL\platform-tools path to platform-tools in working dir - Optimized for smooth performance, even on very low-end hardware
- Chore: Minor Main file organization
- Chore: Minor MainForm field cleanup - Performance:
- Reduced game list initialization time by 95%
- Instant list filtering through caching + optimized filter logic
- Major startup improvements via asynchronous initialization
- Improved search bar responsiveness
- Reduced application size by removing splash screen & unused assets
- Faster trailer loading via per-game video ID caching + WebView2 performance tweaks
- UI & UX:
- Complete UI redesign with new theme and accent color
- New UI components with animations for a cohesive, modern look
- Refined sizing, layout, and color consistency across the board
- Added uninstall buttons directly in list & gallery views
- General:
- Fix: Resolved trailer playback issues
- Fix: Resolved several connection errors on startup
- Feature: Added local blacklist support. Users can permanently suppress donation prompts for selected apps

View File

@@ -1 +1 @@
2.35.0 3.0