From ae0e63d193526dd2f3e50fd9022b80d54b128678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20K=C3=BCpper?= Date: Sun, 8 Dec 2013 14:08:15 +0100 Subject: [PATCH] Added Popup with QR-Codes for easier server-connection and app-download (open with F11) --- ClientServerLib/ClientServerLib/CServer.cs | 12 + Output/LICENSE QRCoder.txt | 22 ++ Output/QRCoder.dll | Bin 0 -> 41984 bytes .../Ambient/Screens/PopupScreenServerQR.xml | 255 ++++++++++++++++++ Vocaluxe/Base/CGraphics.cs | 9 + Vocaluxe/Base/CSettings.cs | 5 + Vocaluxe/Screens/CPopupScreenServerQR.cs | 114 ++++++++ Vocaluxe/Vocaluxe.csproj | 7 +- VocaluxeLib/Enums.cs | 1 + 9 files changed, 424 insertions(+), 1 deletion(-) create mode 100644 Output/LICENSE QRCoder.txt create mode 100644 Output/QRCoder.dll create mode 100644 Output/Themes/Ambient/Screens/PopupScreenServerQR.xml create mode 100644 Vocaluxe/Screens/CPopupScreenServerQR.cs diff --git a/ClientServerLib/ClientServerLib/CServer.cs b/ClientServerLib/ClientServerLib/CServer.cs index c6435566..57bbe01d 100644 --- a/ClientServerLib/ClientServerLib/CServer.cs +++ b/ClientServerLib/ClientServerLib/CServer.cs @@ -203,6 +203,18 @@ namespace ServerLib _Init(port, encrypted); } + public static string GetLocalAddress() + { + IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); + string IPAddress = ""; + foreach (IPAddress ip in ips) + { + if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) + IPAddress = ip.ToString(); + } + return IPAddress; + } + #region server control private void _Init(int port, bool encrypted) diff --git a/Output/LICENSE QRCoder.txt b/Output/LICENSE QRCoder.txt new file mode 100644 index 00000000..5624f5cf --- /dev/null +++ b/Output/LICENSE QRCoder.txt @@ -0,0 +1,22 @@ +// QRCode.dll from https://github.com/codebude/QRCoder/ + +The MIT License (MIT) + +Copyright (c) 2013 Raffael Herrmann + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Output/QRCoder.dll b/Output/QRCoder.dll new file mode 100644 index 0000000000000000000000000000000000000000..5e9f62c37ee6729ba88804b0b5157b8f9e0dc68d GIT binary patch literal 41984 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
I; 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 WyK>?__4`TVOVH5&`}sf41OE>$3t0aE literal 0 HcmV?d00001 diff --git a/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml b/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml new file mode 100644 index 00000000..bb9ce46a --- /dev/null +++ b/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml @@ -0,0 +1,255 @@ + + + + 1 + + + SongMenuBG + + 0 + 0 + -1,99 + 1280 + 720 + + + 1,00 + 1,00 + 1,00 + 0,80 + + + + + + + Menu + + 490 + 210 + -2,00 + 300 + 300 + + + Visible + + + + + + + Menu + + 25 + 25 + -2,00 + 200 + 200 + + + Visible + + + + + + + Menu + + 1055 + 25 + -2,00 + 200 + 200 + + + Visible + + + + + + + Menu + + 25 + 495 + -2,00 + 200 + 200 + + + Visible + + + + + + + Menu + + 1055 + 495 + -2,00 + 200 + 200 + + + Visible + + + + + + + 640 + 180 + + -2,00 + + 35 + + 300 + + + StaticColor + + + TextSColor + + Center + + Center + + + + Outline + + TR_SCREENPSERVERQR_ADDRESS + + + + + + + 125 + 230 + + -2,00 + + 27 + + 200 + + + StaticColor + + + TextSColor + + Center + + Center + + + + Outline + + Android + + + + + + + 1155 + 230 + + -2,00 + + 27 + + 200 + + + StaticColor + + + TextSColor + + Center + + Center + + + + Outline + + Symbian + + + + + + + 125 + 460 + + -2,00 + + 27 + + 200 + + + StaticColor + + + TextSColor + + Center + + Center + + + + Outline + + WebOS + + + + + + + 1155 + 460 + + -2,00 + + 27 + + 200 + + + StaticColor + + + TextSColor + + Center + + Center + + + + Outline + + Windows Phone + + + + + + diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs index 5a7fdd54..91878e51 100644 --- a/Vocaluxe/Base/CGraphics.cs +++ b/Vocaluxe/Base/CGraphics.cs @@ -90,6 +90,7 @@ namespace Vocaluxe.Base _PopupScreens.Add(new CPopupScreenPlayerControl()); _PopupScreens.Add(new CPopupScreenVolumeControl()); + _PopupScreens.Add(new CPopupScreenServerQR()); CLog.StopBenchmark(1, "Build Screen List"); @@ -379,6 +380,14 @@ namespace Vocaluxe.Base _Cursor.FadeOut(); } + if (keyEvent.Key == Keys.F11) + { + if (_CurrentPopupScreen == EPopupScreens.NoPopup) + ShowPopup(EPopupScreens.PopupServerQR); + else + HidePopup(EPopupScreens.PopupServerQR); + } + if (popupPlayerControlAllowed && keyEvent.Key == Keys.Tab) { if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.BackgroundMusic == EOffOn.TR_CONFIG_ON) diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs index 64fec3d6..bfd0aa35 100644 --- a/Vocaluxe/Base/CSettings.cs +++ b/Vocaluxe/Base/CSettings.cs @@ -116,6 +116,11 @@ namespace Vocaluxe.Base public const string FolderPartyModeLanguages = "Languages"; public const string FolderPartyModeFonts = "Fonts"; + public const string LinkAndroidApp = "https://build.phonegap.com/apps/639714/download/android/?qr_key=uY98ymvTr6K144RyTdhs"; + public const string LinkSymbianApp = "https://build.phonegap.com/apps/639714/download/symbian/?qr_key=uY98ymvTr6K144RyTdhs"; + public const string LinkWebOSApp = "https://build.phonegap.com/apps/639714/download/webos/?qr_key=uY98ymvTr6K144RyTdhs"; + public const string LinkWindowsPhoneApp = "https://build.phonegap.com/apps/639714/download/winphone/?qr_key=uY98ymvTr6K144RyTdhs"; + //public const String[] ToneStrings = new String[]{ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; public const int ToneMin = -36; public const int ToneMax = 89; diff --git a/Vocaluxe/Screens/CPopupScreenServerQR.cs b/Vocaluxe/Screens/CPopupScreenServerQR.cs new file mode 100644 index 00000000..73a11a88 --- /dev/null +++ b/Vocaluxe/Screens/CPopupScreenServerQR.cs @@ -0,0 +1,114 @@ +#region license +// This file is part of Vocaluxe. +// +// Vocaluxe is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Vocaluxe is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Vocaluxe. If not, see . +#endregion + +using ServerLib; +using Vocaluxe.Base; +using VocaluxeLib; +using VocaluxeLib.Menu; +using VocaluxeLib.Draw; +using QRCoder; + +namespace Vocaluxe.Screens +{ + class CPopupScreenServerQR : CMenu + { + // Version number for theme files. Increment it, if you've changed something on the theme files! + protected override int _ScreenVersion + { + get { return 1; } + } + + private CTexture _QRServerAddress; + private CTexture _QRAndroidLink; + private CTexture _QRSymbianLink; + private CTexture _QRWebOSLink; + private CTexture _QRWindowsPhoneLink; + + private const string _StaticQRServer = "StaticQRServer"; + private const string _StaticQRAndroid = "StaticQRAndroid"; + private const string _StaticQRSymbian = "StaticQRSymbian"; + private const string _StaticQRWebOS = "StaticQRWebOS"; + private const string _StaticQRWindowsPhone = "StaticQRWindowsPhone"; + + public override void Init() + { + base.Init(); + + _ThemeStatics = new string[] { _StaticQRServer, _StaticQRAndroid, _StaticQRSymbian, _StaticQRWebOS, _StaticQRWindowsPhone }; + } + + public override void LoadTheme(string xmlPath) + { + base.LoadTheme(xmlPath); + _GenerateQRs(); + _Statics[_StaticQRServer].Texture = _QRServerAddress; + _Statics[_StaticQRAndroid].Texture = _QRAndroidLink; + _Statics[_StaticQRSymbian].Texture = _QRSymbianLink; + _Statics[_StaticQRWebOS].Texture = _QRWebOSLink; + _Statics[_StaticQRWindowsPhone].Texture = _QRWindowsPhoneLink; + + } + + public override bool HandleMouse(SMouseEvent mouseEvent) + { + if (mouseEvent.LB) + { + CGraphics.HidePopup(EPopupScreens.PopupServerQR); + return true; + } + return false; + } + + public override bool UpdateGame() + { + return true; + } + + public override bool Draw() + { + if (!_Active) + return false; + + return base.Draw(); + } + + private void _GenerateQRs() + { + QRCodeGenerator qr = new QRCodeGenerator(); + + //ServerAddress + QRCodeGenerator.QRCode qrcode = qr.CreateQrCode(CServer.GetLocalAddress() + ":" + CConfig.ServerPort, QRCodeGenerator.ECCLevel.H); + _QRServerAddress = CDraw.AddTexture(qrcode.GetGraphic(20)); + + //Android + qrcode = qr.CreateQrCode(CSettings.LinkAndroidApp, QRCodeGenerator.ECCLevel.H); + _QRAndroidLink = CDraw.AddTexture(qrcode.GetGraphic(20)); + + //Symbian + qrcode = qr.CreateQrCode(CSettings.LinkSymbianApp, QRCodeGenerator.ECCLevel.H); + _QRSymbianLink = CDraw.AddTexture(qrcode.GetGraphic(20)); + + //WebOS + qrcode = qr.CreateQrCode(CSettings.LinkWebOSApp, QRCodeGenerator.ECCLevel.H); + _QRWebOSLink = CDraw.AddTexture(qrcode.GetGraphic(20)); + + //WindowsPhone + qrcode = qr.CreateQrCode(CSettings.LinkWindowsPhoneApp, QRCodeGenerator.ECCLevel.H); + _QRWindowsPhoneLink = CDraw.AddTexture(qrcode.GetGraphic(20)); + } + } +} diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj index 2dec4b8e..69fdef19 100644 --- a/Vocaluxe/Vocaluxe.csproj +++ b/Vocaluxe/Vocaluxe.csproj @@ -1,4 +1,4 @@ - + DebugWin @@ -191,6 +191,10 @@ ..\Output\OpenTK.GLControl.dll + + False + ..\Output\QRCoder.dll + @@ -239,6 +243,7 @@ + diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs index 97e008a8..ca33f94e 100644 --- a/VocaluxeLib/Enums.cs +++ b/VocaluxeLib/Enums.cs @@ -345,6 +345,7 @@ namespace VocaluxeLib { PopupPlayerControl = 0, PopupVolumeControl = 1, + PopupServerQR = 2, NoPopup = -1 }