From e2c7fff59dacd321db3bf70f62d665aa83ad26a5 Mon Sep 17 00:00:00 2001 From: Greg Date: Sun, 31 Jul 2022 21:46:49 -0600 Subject: [PATCH] Finished designing LibraryManager. --- .../OrbisLibraryManager.ico} | Bin External/SimpleUI | 2 +- Orbis Suite 3.0.sln | 19 ++ OrbisLibraryManager/App.xaml | 16 ++ OrbisLibraryManager/App.xaml.cs | 17 ++ OrbisLibraryManager/AssemblyInfo.cs | 10 + .../Controls/CurrentTargetDisplay.xaml | 83 ++++++++ .../Controls/CurrentTargetDisplay.xaml.cs | 112 +++++++++++ OrbisLibraryManager/Controls/ImageButton.xaml | 22 +++ .../Controls/ImageButton.xaml.cs | 66 +++++++ OrbisLibraryManager/Images/Attached.png | Bin 0 -> 2889 bytes .../Images/DefaultTitleIcon.png | Bin 0 -> 13539 bytes OrbisLibraryManager/Images/Detached.png | Bin 0 -> 1649 bytes OrbisLibraryManager/Images/KillProcess.png | Bin 0 -> 363 bytes OrbisLibraryManager/Images/RestMode.png | Bin 0 -> 1095 bytes OrbisLibraryManager/Images/Restart.png | Bin 0 -> 842 bytes OrbisLibraryManager/Images/Send.png | Bin 0 -> 30126 bytes OrbisLibraryManager/Images/Shutdown.png | Bin 0 -> 1056 bytes .../OrbisLibraryManager.csproj | 95 +++++++++ OrbisLibraryManager/OrbisLibraryManager.ico | Bin 0 -> 270398 bytes OrbisLibraryManager/OrbisLibraryManager.xaml | 184 ++++++++++++++++++ .../OrbisLibraryManager.xaml.cs | 29 +++ Playstation/OrbisToolbox-2.0/Debug.h | 2 + Playstation/OrbisToolbox-2.0/Version.h | 22 +-- .../MVVM/View/DashboardView.xaml | 4 +- Windows/OrbisNeighborHood/NeighborHood.xaml | 4 + .../Resources/BuildNumber.txt | 2 +- .../Resources/BuildString.txt | 2 +- 28 files changed, 675 insertions(+), 16 deletions(-) rename Assets/{OrbisModuleManager/OrbisModuleManager.ico => OrbisLibraryManager/OrbisLibraryManager.ico} (100%) create mode 100644 OrbisLibraryManager/App.xaml create mode 100644 OrbisLibraryManager/App.xaml.cs create mode 100644 OrbisLibraryManager/AssemblyInfo.cs create mode 100644 OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml create mode 100644 OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs create mode 100644 OrbisLibraryManager/Controls/ImageButton.xaml create mode 100644 OrbisLibraryManager/Controls/ImageButton.xaml.cs create mode 100644 OrbisLibraryManager/Images/Attached.png create mode 100644 OrbisLibraryManager/Images/DefaultTitleIcon.png create mode 100644 OrbisLibraryManager/Images/Detached.png create mode 100644 OrbisLibraryManager/Images/KillProcess.png create mode 100644 OrbisLibraryManager/Images/RestMode.png create mode 100644 OrbisLibraryManager/Images/Restart.png create mode 100644 OrbisLibraryManager/Images/Send.png create mode 100644 OrbisLibraryManager/Images/Shutdown.png create mode 100644 OrbisLibraryManager/OrbisLibraryManager.csproj create mode 100644 OrbisLibraryManager/OrbisLibraryManager.ico create mode 100644 OrbisLibraryManager/OrbisLibraryManager.xaml create mode 100644 OrbisLibraryManager/OrbisLibraryManager.xaml.cs diff --git a/Assets/OrbisModuleManager/OrbisModuleManager.ico b/Assets/OrbisLibraryManager/OrbisLibraryManager.ico similarity index 100% rename from Assets/OrbisModuleManager/OrbisModuleManager.ico rename to Assets/OrbisLibraryManager/OrbisLibraryManager.ico diff --git a/External/SimpleUI b/External/SimpleUI index c122d1a..908a1bc 160000 --- a/External/SimpleUI +++ b/External/SimpleUI @@ -1 +1 @@ -Subproject commit c122d1a82597af7d8b6bc346beb4cef6e8322892 +Subproject commit 908a1bc261473cc0304f208c7270fa3365609cb6 diff --git a/Orbis Suite 3.0.sln b/Orbis Suite 3.0.sln index b113663..1f24c79 100644 --- a/Orbis Suite 3.0.sln +++ b/Orbis Suite 3.0.sln @@ -54,6 +54,8 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "DummyInstaller", "Windows\I EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetupBA", "Windows\Installer\SetupBA\SetupBA.csproj", "{33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrbisLibraryManager", "OrbisLibraryManager\OrbisLibraryManager.csproj", "{4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -226,6 +228,22 @@ Global {33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}.Release|x64.Build.0 = Release|Any CPU {33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}.Release|x86.ActiveCfg = Release|Any CPU {33C378F9-36C5-4C2C-8350-FD1C8DD5AB66}.Release|x86.Build.0 = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Win32.ActiveCfg = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|Win32.Build.0 = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x64.ActiveCfg = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x64.Build.0 = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x86.ActiveCfg = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Debug|x86.Build.0 = Debug|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Any CPU.Build.0 = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Win32.ActiveCfg = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|Win32.Build.0 = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x64.ActiveCfg = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x64.Build.0 = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x86.ActiveCfg = Release|Any CPU + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -244,6 +262,7 @@ Global {0978D0B2-FFA5-42B2-81AC-0CFD85DE9184} = {6046C772-BE17-4BC8-A362-AD8C77F9178E} {A37095E9-80BD-4A6B-AF8B-33D278CF92F3} = {6046C772-BE17-4BC8-A362-AD8C77F9178E} {33C378F9-36C5-4C2C-8350-FD1C8DD5AB66} = {6046C772-BE17-4BC8-A362-AD8C77F9178E} + {4CF615D4-CEA0-42B4-BAF8-0B9B487D48BC} = {8F0E1457-FB1E-47A4-9DA8-74A6B757CAA4} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4B6EE1D0-5ADF-44A2-B6EE-E5C8E110EE47} diff --git a/OrbisLibraryManager/App.xaml b/OrbisLibraryManager/App.xaml new file mode 100644 index 0000000..e8bed8c --- /dev/null +++ b/OrbisLibraryManager/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/OrbisLibraryManager/App.xaml.cs b/OrbisLibraryManager/App.xaml.cs new file mode 100644 index 0000000..66c7bdb --- /dev/null +++ b/OrbisLibraryManager/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace OrbisLibraryManager +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/OrbisLibraryManager/AssemblyInfo.cs b/OrbisLibraryManager/AssemblyInfo.cs new file mode 100644 index 0000000..8b5504e --- /dev/null +++ b/OrbisLibraryManager/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml new file mode 100644 index 0000000..6b4da41 --- /dev/null +++ b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs new file mode 100644 index 0000000..ccf90cf --- /dev/null +++ b/OrbisLibraryManager/Controls/CurrentTargetDisplay.xaml.cs @@ -0,0 +1,112 @@ +using OrbisSuite; +using OrbisSuite.Common.Database; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OrbisLibraryManager.Controls +{ + /// + /// Interaction logic for CurrentTargetDisplay.xaml + /// + public partial class CurrentTargetDisplay : UserControl + { + public CurrentTargetDisplay() + { + InitializeComponent(); + + OrbisLib.Instance.Events.DBTouched += Events_DBTouched; + OrbisLib.Instance.Events.TargetStateChanged += Events_TargetStateChanged; + RefreshTarget(); + } + + private void Events_TargetStateChanged(object? sender, TargetStateChangedEvent e) + { + Dispatcher.Invoke(() => { RefreshTarget(); }); + } + + private void Events_DBTouched(object? sender, DBTouchedEvent e) + { + Dispatcher.Invoke(() => { RefreshTarget(); }); + } + + private void RefreshTarget() + { + var CurrentTarget = OrbisLib.Instance.SelectedTarget.Info; + + if (CurrentTarget != null) + { + switch (CurrentTarget.Status) + { + case TargetStatusType.Offline: + CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(255, 0, 0)); + CurrentTargetState.ToolTip = "Offline"; + break; + + case TargetStatusType.Online: + CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(255, 140, 0)); + CurrentTargetState.ToolTip = "Online"; + break; + + case TargetStatusType.APIAvailable: + CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(0, 128, 0)); + CurrentTargetState.ToolTip = "Online & API Available"; + break; + + default: + CurrentTargetState.Fill = new SolidColorBrush(Color.FromRgb(255, 0, 0)); + CurrentTargetState.ToolTip = "Unknown"; + break; + } + + CurrentTargetName.Text = CurrentTarget.IsDefault ? $"★{CurrentTarget.Name}" : CurrentTarget.Name; + + if (CurrentTarget.CurrentTitleID == null || !Regex.IsMatch(CurrentTarget.CurrentTitleID, @"CUSA\d{5}")) + { + CurrentTargetTitleName.Text = "Unknown Title"; + CurrentTargetTitleId.Text = "-"; + CurrentTargetTitleImage.Source = new BitmapImage(new Uri("pack://application:,,,/OrbisLibraryManager;component/Images/DefaultTitleIcon.png")); + } + else + { + var Title = new TMDB(CurrentTarget.CurrentTitleID); + Regex rgx = new Regex(@"[^0-9a-zA-Z +.:']"); + CurrentTargetTitleName.Text = Title.Names.First(); + CurrentTargetTitleId.Text = Title.NPTitleID; + var test = Title.BGM; + CurrentTargetTitleImage.Source = new BitmapImage(new Uri(Title.Icons.First())); + } + } + } + + private void CurrentTargetTitleImage_MouseDown(object sender, MouseButtonEventArgs e) + { + var CurrentTarget = OrbisLib.Instance.SelectedTarget.Info; + + if (CurrentTarget != null && CurrentTarget.CurrentTitleID != null && Regex.IsMatch(CurrentTarget.CurrentTitleID, @"CUSA\d{5}")) + { + var Title = new TMDB(CurrentTarget.CurrentTitleID); + var url = $"https://store.playstation.com/product/{Title.ContentID}/"; + + System.Diagnostics.Process.Start(new ProcessStartInfo + { + FileName = url, + UseShellExecute = true + }); + } + } + } +} diff --git a/OrbisLibraryManager/Controls/ImageButton.xaml b/OrbisLibraryManager/Controls/ImageButton.xaml new file mode 100644 index 0000000..51c73a6 --- /dev/null +++ b/OrbisLibraryManager/Controls/ImageButton.xaml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/OrbisLibraryManager/Controls/ImageButton.xaml.cs b/OrbisLibraryManager/Controls/ImageButton.xaml.cs new file mode 100644 index 0000000..1e28f2a --- /dev/null +++ b/OrbisLibraryManager/Controls/ImageButton.xaml.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OrbisLibraryManager.Controls +{ + /// + /// Interaction logic for ImageButton.xaml + /// + public partial class ImageButton : UserControl + { + public event EventHandler? Click; + + public ImageButton() + { + InitializeComponent(); + } + + public string ImageSource + { + get { return (string)GetValue(ImageSourceProperty); } + set { SetValue(ImageSourceProperty, value); } + } + + public static readonly DependencyProperty ImageSourceProperty = + DependencyProperty.Register("ImageSource", typeof(string), typeof(ImageButton), new PropertyMetadata(string.Empty, ImageSource_Changed)); + + private static void ImageSource_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var currentControl = (ImageButton)d; + currentControl.ButtonImage.Source = new BitmapImage(new Uri($"pack://application:,,,{(string)e.NewValue}")); + currentControl.ButtonImage.Opacity = currentControl.IsEnabled ? 1 : 0.5; + } + + public int ImageMargin + { + get { return (int)GetValue(ImageMarginProperty); } + set { SetValue(ImageMarginProperty, value); } + } + + public static readonly DependencyProperty ImageMarginProperty = + DependencyProperty.Register("ImageMargin", typeof(int), typeof(ImageButton), new PropertyMetadata(0)); + + private void ImageButtonElement_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) + { + ButtonImage.Source = new BitmapImage(new Uri($"pack://application:,,,{ImageSource}")); + ButtonImage.Opacity = IsEnabled ? 1 : 0.5; + } + + private void SimpleButton_Click(object sender, RoutedEventArgs e) + { + Click?.Invoke(sender, e); + } + } +} diff --git a/OrbisLibraryManager/Images/Attached.png b/OrbisLibraryManager/Images/Attached.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0429a308baf824cca07baf94f16d23ec9ef1c3 GIT binary patch literal 2889 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 SJ0@UZ18g9u9kR(Dy=(ZXO9nd zb=l6&>}C2{$^IVaocYc<|D5?QGXqqqQl(0jvyblX?kVwjJnZL3GLn&rX_`x!c`JZP z0Bj<9Sy7ZHqS0u|%|9eJz4GYo?HxBTFmNe=vFUU=(cIkJ>*lBH`Z{LboO3C{%xfLT z2?JQ;cF(Bp0K+gE0Bi)X7{J&ZQ#*hSs;YjFy`by*IwIN(cbxwI{_!m>E&cfhCCG$> z#Imfb0K@?-$C1^vqEdx;Ce3y zBI-YJ;>3j3*4ER*Y-Q#+Vw6~XQ4rBuA;gQWwxEIpfngZ40DJ^sLV&}*Duh@~MC@i9 zH3E!K@vjLX?k`k4AbA5n%BE4htb#{fY-936M-CC)&210C1j+cmTl6ZJMS%?dKss0Bl(?0f2}Gz3fsCLqs$aKty6l$8nsmy&R+o zV4CK`LoX_%!OZVBH8uU> zNC>f~80WGDFbrcB5xoQ8;+(OTgu~%aEz6pe=iXCj93pyyh~^=fCDJCM+l3Iji@l+e z4tNOer^y+aOy3| zP3d&{<7_7gA>L!=JMeEOB$@dERaI9KQ3e2FvDiTX3sGJt*hI8Q)3kR>y|L_x$u!O9 znfVbPx1)-p+!%|+e#~Cbbv>eKTEWebVHk4(>;^Ed$W%&h`&`QI0A_v$z|THzGcuXX zzT7#%t9SsgZMz*nSFw2z(Y@ss4^$w4s;WN$c(e%DVImab$dMy;kw|0@fGbN#Wi>O` zl;D2`WeZ?gRttb)H#bFzP*+#C6~MKnnWlMPDfi@3mH?JzwPZ4xy#R)-`5t(R zkVquz0jw-19{_X9ysvZt$}B!hK@pgF8p@xP|0wgm(gdim_$;m>gu`JSfa@3Bq3i46 zzC^5G)3l>mdq+pdIgv=@8UXb~bVvyCT_p+l3ZU!yR3d5za8V_J zJQyZ|One^!MNzh5;S_sE(CBKa$cNtheDybjg5`RCB*s%&%&5_j-O9} zoN<7Xg=cY!qDcLkgQ3+y*Yyiz1@!9x*PoF_m>ER$x~yQH0@T#hd=B7uNx9^*(6X#c zWCZdQAR3LPWWUPJ!psda;`mN*eSLkK0DK}Lmt1T`QNEE8$X9^Y*4ESMboy2RM!>Pt z0M;|}Z}|phZi_~vCj*Y>N>NK(C=|K}fah1%5=k@jGF4SKI*xNWGj9XX0bn11rJAN~ z2{4u?zFT3#FjfJ0r5N8LafoQS5aP{%#;XXwo#0trJm68-&|lX(ynIR|&CJU*P1_mJ zc!A(rTr!!gwQc(c`2Vx_D~dZJkILeK0+Zn2;NWHOFMc}_3H<%9t`{~l-#HqK2MVtO zeoN4HA;bzHM4xTj^8h>x_t#lpG4lHD`TRjO2}GRpW1q)l_~2I)6R00000NkvXXu0mjfD_B8lML)IrwJNDS!$jnB-|Y!sg^WS}RPSajT(R45r{4eo002ov JPDHLkV1lN_ndkrj literal 0 HcmV?d00001 diff --git a/OrbisLibraryManager/Images/RestMode.png b/OrbisLibraryManager/Images/RestMode.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d42beebd6176db0fb2a754095ea5ce51c97220 GIT binary patch literal 1095 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^> z;_2(k{**;Th*dqkvS1}ph%vv&FNE>@qVib`49rfRE{-7?_ukI*^#}R#>5B9#9k_Ca4!i>m|Z4lsu*%*Q546+bp^@~m3X)oUGVx9 z;lj~$*+pWiyydU_hcjOn*T{e0r`}=tT=(3}>hspm%g@)ozh`Z%n3S7(S?c+DrWD3a z3^!yR+)IiPTrKT+Kk&u>RmoAW{c~vt(Cn-12RL&!?We7~Aa{?K3B>cGxPnjZq^h=+-ZZ$hEC2IF&WR=bzKo zK7MRFxAoDiqY6r^4O!c-%<%Z6DIIcN@M@LAR@0A*L%LMlBcw{W7ESwdzoIDezL3Mr zvzMJ5Z;0_E+?ce_Z1H(chMYi#lzf4P)qhkICuv{W&DfwjEi?NwcfeXFpUAX0eukXz zy^rs_;$Pt3YLR>UJs-opfWO!OFzEFD-`U(Q?l6P%y_CgzW_1_;#g`Kjx1JKw>kMr& z`&+7@a(%`Hev4}-Rx>5ccpMivM=PK^XydzIGXIl!6$Umf&GvV4cui zW!zwO@x9?oiJEq{0~*hcWL;p5m^16kv(Hu+el%*<2xw=8HO4O5pS|?w+e_00_TJui z`{nGwU3>Bvn6q~Oefa2WaLGK$13kxf1h4BfJ(|gN$@Qvb&<^ii(1-Re{M*XTWT9FWcGVQ%!tnku7Bz)XWF~`JI|UaSyvV_3A#); zq;kxlO|j=U=M(XSt0}R6gJ!XwVEQwk;Xi}zYO77PzUwrASxdFVHKHUXu_V7+P2vm|7WIXd4(<85rzZs(%JWLvDUbW?Cg~4X1xhF92#_@O1Ta JS?83{1OU_D*sA~l literal 0 HcmV?d00001 diff --git a/OrbisLibraryManager/Images/Restart.png b/OrbisLibraryManager/Images/Restart.png new file mode 100644 index 0000000000000000000000000000000000000000..44fb5d3a3df86ac8f663bf43009baba6df54cef2 GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^> z;_2(k{**;Th{ducx278?#F$^?7s7acQTZ&OVpmTW$B>MBZ)Y6zmUa|5w!cM0(@8i( z=hCI#6&;~D@9%N#{T|Oz^};o9&ky#F_ItNPw!|$t{^+K2#`&tyk4m1x6U4Tdu(}F3 z9=_iExTLhaEX`QkJK>((rx~?B_r;f`m)}!yULt*S%3s+A<^l#jh1!NWN6V`X^f#6M zc^RUTyix2)q0*-5H{OS+e2sp<@P#2VCGem}&eOyigH?;)o!I2G>6mzqhdo!(UvHh9X^&kNaf>ak<_q=S)|8ZxBb9z^mvrOA;wgu@LW>^=#3j55;o0D~ut<38sIVB#-|-aKg1>VKsk=WJ7w0X+b=L+^QcvJ97t5CPKjhrkbtY#vBZKaqgY! z^~am9Vh(Lh;XA-+!NC53fBE72^{=0sRRL3%YKdz^NlIc#s#S7PDv)9@GB7gKH89aN yG6*rWure^QGBwvWFt9Q(NOiECgQ6ifKP5A*61N5s*;WOh1_n=8KbLh*2~7ZS^jnhv literal 0 HcmV?d00001 diff --git a/OrbisLibraryManager/Images/Send.png b/OrbisLibraryManager/Images/Send.png new file mode 100644 index 0000000000000000000000000000000000000000..2272ca50f88fe8c108ebb8a8d45bf979a97139ce GIT binary patch literal 30126 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 PsDZ)L)z4*}Q$iB}R-3Zi literal 0 HcmV?d00001 diff --git a/OrbisLibraryManager/OrbisLibraryManager.csproj b/OrbisLibraryManager/OrbisLibraryManager.csproj new file mode 100644 index 0000000..ed52a8c --- /dev/null +++ b/OrbisLibraryManager/OrbisLibraryManager.csproj @@ -0,0 +1,95 @@ + + + + WinExe + net6.0-windows + enable + true + OrbisLibraryManager.ico + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + + + + + + + + ..\External\SimpleUI\SimpleUI\bin\Debug\net6.0-windows\Microsoft.Expression.Drawing.dll + + + ..\External\SimpleUI\SimpleUI\bin\Debug\net6.0-windows\SimpleUI.dll + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + + Code + + + Code + + + + + + $(DefaultXamlRuntime) + Designer + + + $(DefaultXamlRuntime) + Designer + + + + diff --git a/OrbisLibraryManager/OrbisLibraryManager.ico b/OrbisLibraryManager/OrbisLibraryManager.ico new file mode 100644 index 0000000000000000000000000000000000000000..cb4074d5684f1de88b48e0b5892a45e8c539d226 GIT binary patch literal 270398 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 F{|B7a0PFw& literal 0 HcmV?d00001 diff --git a/OrbisLibraryManager/OrbisLibraryManager.xaml b/OrbisLibraryManager/OrbisLibraryManager.xaml new file mode 100644 index 0000000..dd05b7d --- /dev/null +++ b/OrbisLibraryManager/OrbisLibraryManager.xaml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OrbisLibraryManager/OrbisLibraryManager.xaml.cs b/OrbisLibraryManager/OrbisLibraryManager.xaml.cs new file mode 100644 index 0000000..2e9d419 --- /dev/null +++ b/OrbisLibraryManager/OrbisLibraryManager.xaml.cs @@ -0,0 +1,29 @@ +using SimpleUI.Controls; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OrbisLibraryManager +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : SimpleWindow + { + public MainWindow() + { + InitializeComponent(); + } + } +} diff --git a/Playstation/OrbisToolbox-2.0/Debug.h b/Playstation/OrbisToolbox-2.0/Debug.h index 26974ff..6f31133 100644 --- a/Playstation/OrbisToolbox-2.0/Debug.h +++ b/Playstation/OrbisToolbox-2.0/Debug.h @@ -8,5 +8,7 @@ public: void HandleAPI(OrbisNetId Sock, APIPacket* Packet); private: + bool IsDebugging; + int CurrentPID; }; diff --git a/Playstation/OrbisToolbox-2.0/Version.h b/Playstation/OrbisToolbox-2.0/Version.h index 62fe041..8ebf8ed 100644 --- a/Playstation/OrbisToolbox-2.0/Version.h +++ b/Playstation/OrbisToolbox-2.0/Version.h @@ -1,11 +1,11 @@ -#pragma once -#define ORBIS_TOOLBOX_MAJOR 2 -#define ORBIS_TOOLBOX_MINOR 0 -#define ORBIS_TOOLBOX_BUILDVERSION 196 -#define stringify(a) stringify_(a) -#define stringify_(a) #a -#if defined(ORBIS_TOOLBOX_DEBUG) -#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) -#else -#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) -#endif +#pragma once +#define ORBIS_TOOLBOX_MAJOR 2 +#define ORBIS_TOOLBOX_MINOR 0 +#define ORBIS_TOOLBOX_BUILDVERSION 198 +#define stringify(a) stringify_(a) +#define stringify_(a) #a +#if defined(ORBIS_TOOLBOX_DEBUG) +#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Dev Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) +#else +#define ORBIS_TOOLBOX_BUILDSTRING ("[Orbis Toolbox " stringify(ORBIS_TOOLBOX_MAJOR) "." stringify(ORBIS_TOOLBOX_MINOR) "] Build " stringify(ORBIS_TOOLBOX_BUILDVERSION) " " __DATE__ " " __TIME__) +#endif diff --git a/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml b/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml index ba22674..97fb88d 100644 --- a/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml +++ b/Windows/OrbisNeighborHood/MVVM/View/DashboardView.xaml @@ -399,8 +399,8 @@ diff --git a/Windows/OrbisNeighborHood/NeighborHood.xaml b/Windows/OrbisNeighborHood/NeighborHood.xaml index c0c84b5..4446609 100644 --- a/Windows/OrbisNeighborHood/NeighborHood.xaml +++ b/Windows/OrbisNeighborHood/NeighborHood.xaml @@ -70,6 +70,10 @@ + +