diff --git a/CHANGELOG.md b/CHANGELOG.md index 00b6a30..d99f810 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,175 @@ # MZD-AIO-TI 2.x.x CHANGELOG [![Download](https://api.bintray.com/packages/trevelopment/MZD-AIO-TI/AIO/images/download.svg?version=MZD-AIO-TI)](http://dl.mazdatweaks.win) ##### FOR [AIO v1.x.x CHANGELOG](https://github.com/Siutsch/AIO---All-in-one-tweaks/blob/master/CHANGELOG.md) or visit [MazdaTweaks.com] -[Full Changelog](changelog.htm) -### 2.7.0 -## The software distribution service bintray.com has cancelled my account because they had recently seen the DMCA Takedown notice in the MZD-AIO-TI GitHub repository from March 6th, 2017. Although I explained that the NNG files had been removed immediately upon receiving the notice they only agreed to leave the versions that had already been uploaded (Ending with v2.6.8) but would block my account from uploading any future versions. Therefor Automatic updates may of may not work in this version until I find another distribution solution. So in case new updates do not download automatically "Check For Update" has been added in the top menu bar under the "Download" menu. +### 2.7.6 + +### MZD-AIO GUI Changes/Fixes: +- Fixed "Bootbox is not defined" error preventing AIO from running for some. +- Alternate Layout Toggle (Full Width Tweak Choices & Options) +- Changed Up Notification Style +- Phase 1 of GUI Style Redesign +- Autorun & Recovery and Full System Restore links in dropdown menu by "Start Compilation" +- Home Button brings you back to main page. (if you ever wondered what that was for) + +### Video Player v3.3.1 +* Fixed the unicode list retrieve and removes the "only unicode" method +* Disabled the log functions as they are not needed now +* Video Name shows in a Statusbar Notification at the beginning of each video +* Now it takes the time from gplay app +* **Music player with MP3 & FLAC support** (From the Music folder on the USB Drive). +* Adds the FLAC codec to the gstreamer libs +* It shows the metadata of the files when playing music +* Other small bug fixes +> * __*Pause Audio Hack*__ + * **Pressing the "Entertainment" (Music) button will pause audio** + * **This only works ONCE AFTER OPENING THE VIDEO PLAYER APP AND BEFORE PLAYING THE FIRST VIDEO** + * **Audio has to be playing from USB or button will function normally** + * After it has been done once or the first video is played the entertainment button will function normally + * You will see a split-second context change... that is the only way I could get the audio to pause. + +### AIO Tweaks App v0.5 +- Fixed The Freezing Issue +- Added SBN Test Button (Status Bar Notification) +- ADB Button ($ adb devices -l) + +### Speedometer v5.1 +- Added values (set in "speedometer-config.js") + - Battery SOC (State of charge iStop only) + - Engine Load (Only shows 0 or 1 for now) + - Gear Lever Position +- Gear Position will show correct gear for Manual Transmissions (delayed by 1 second) +- Fixed non working values (idle time, engine idle time, engine top speed) +- To reuse current "speedometer-config.js" file just delete "config/speedometer_bar/speedometer-config.js" before installing +- CHANGED: WebSocket port from 55554 => 9969 +- CHANGED: Multicontroller Tilt Down Now Toggles the SPEED BAR from Vehicle Speed to Engine Speed + +### USB Audio MOD +- Statusbar Notifications On Every Screen At The Start Of Each Song! + - SBN for 5 Seconds: "Artist - Song" + - Not Android Auto Screens (Sorry its not possible to cross surfaces like that) +- Change the "Powered By Gracenote®" flash text to whatever you want! + - Clear text field blank to disable altogether. + - If flash text is not showing, genre will show on that line for about 10 seconds (If it is in the metadata) + +### Other Changes/Fixes +- *Tweak Installer:* + - When installing apps, all common files (addon-common and opera folders) for are now in /config/jci/... + - Cleaned up app install scripts to be more uniform and efficient + - No more app list patch for v59! (Apps are added to the app ctxt list dynamically.) + - Log files are saved in bakup folder so they are not lost if install accidently runs twice +- *Other Tweaks:* + - Added Language Support for 'Reverse Camera Safety Warning' Tweak + - Ukrainian, Japanese, Chinese, Korean, Thai, Hebrew, Swedish, Slovak + - Added Ukrainian to 'Remove Message Replies' Tweak + +### 2.7.4 + +##### Android Auto v1.08 +- Fixed music not resuming after phone calls +- More code optimizations +- Navigation Fixes +- All Audio Focus transitions are smooth + +##### Speedometer v5.0 +- Major performance improvements to all styles and variants. (All variants use the same data collection script) +- Every variation value is configurable and toggleable + - Added option for starting temperature (°C & °F) + - and fuel efficiency (km/L & L/100km) +- **Digital Bar Speedometer Mod** + - 4 values in the right column + - Cycle through 3 groups of 5 values on the bottom row. + - Including Main speed that's 20 values! + - Command knob "select" to change bottom bar values. + - Tilt up to toggle mph & km/h + - Tilt right to + - Toggle km/L & L/100km (in km/h mode) + - Toggle °C & °F (in mph mode) + - Tilt left to toggle background. + - Tilt down to toggle the speedometer in statusbar extra values between Heading/Altitude & Temperature/Fuel Efficiency + - Fully Customizable - Value positions can be customized in and easy and intuitive way + - Instructions Included in Speedometer Options (When Bar Speedometer is Selected) +- **Speedometer in Statusbar Alternate Values** + - Outside Temperature & Current Drive Fuel Efficiency + - Tap the statusbar speedometer to toggle the extra values (same as tilt down when speedometer is open) +- **Digital Clock Mod** + - Use the font from the digital bar speedometer on the statusbar speedometer & clock. + +##### Video Player v3.2 +* I need a lot of color in my life so now you can choose between 8! + * Red, Green, Blue, Violet, Orange, Teal, Slate, and White. +* Merged improvements by *VIC_BAM85* + * Sort order now is case insensitive (only for ASCII mode Not Unicode) + * You start with selection on the last played video + * Small fixes on the FF / RW in order to make only one call + * Added a plugin to the cmu in order to allow fullscreen toggle (commander up while playing) so it changes while playing the video, resize and rotate (not available on the GUI yet) + * Delete the gstreamer registry on start in order to fix the plugin repository (Resets to the one without the codecs at car restart) + +##### Swapfile +- Fixed swap memory mounting on boot +- Improvements to how swapfile is mounted and order of apps initializing during boot + +##### All Apps +- Now use built in framework transitions for smoother opening and closing +- Improvements with initialization methods & startup scripts + +### 2.7.2 + +##### Android Auto v1.07 +- Bluetoth Calling & Video Focus Issues *__fixed__* +- Making and receiving calls work perfectly +- Release Audio Focus (To Radio, USB Audio, etc.) with FAV () Button +- Control USB Audio with Next/Prev steering wheel buttons when it has Audio Focus +- Fix for GPS, Mazda Navigation and HUD features will now function correctly +- Black screen issues are memory related and can be avoided by minimizing the amount of memory being used by the system. This can be done by: + - Removing Nav SD card and other connected USB devices. + - Speedometer and CastScreen apps use active memory, uninstalling them will improve AA performance. + - Reboot the system, connect your phone after reboot. + - Use the Swapfile for additional memory. + +##### VideoPlayer v3.1 +- Fully Multicontroller Navigable +- Navigate "Video Options/Info" panel with Control Knob. + - Rotate to choose + - Push to toggle option + - Tilt up/down to close options/info panel + - Tilt left right to choose between info and options +- Change Highlight Color + - Choices: Red, Blue, Green, Pink +- Fixed bug: random never played the last video in the list + +##### AIO Tweaks v0.4 +- Mount SwapFile + - Mount an unmounted SwapFile +- Some shell commands with output (command shown in message when one is used) + - Running Processes: ps + - Disk Space: df -h + - Memory Info: cat /proc/swaps && cat /proc/meminfo + - E-mail me for requests/suggestions +- Select Tweaks with command knob + - Rotate to choose + - Push to Select +- Scroll message box by rotating/tilting command knob + - Tilt up at the top and pushing select close the message box + - Tilt up to reopen + - Works well when checking headunit.log +- Irrelevant options are now hidden + - Ex: If CastScreen is not installed the CastScreen Start/Stop options will be hidden +- General little fixes +###### There are MANY failed legitimate attempts in the AIO Tweaks App code, most notable of which include "Show Backup Camera," "Take Screenshot" and global "Pause/Play Music". If you think you can get something to work that I have not, go for it! + +##### Speedometer to StatusBar +- Now Speedometer to StatusBar moves the 'volume meter' and 'contact loading meter' a little bit to the left so they do not overlap the numbers. + +#### Swapfile +- Choose to mount on boot (on by default) or copy without mounting. + - Mounted automatically when starting the VideoPlayer App + - Can be mounted manually with the AIO Tweaks App + - **Swapfile can be copied by itself onto the root of a separate USB drive containing music and/or videos and mounted during run-time as needed** + +#### App Changes +- Skip Confirmation choice will persist + +### 2.7.0 ##### Android Auto v1.04 - __*Bluetooth Call Bug Fixed!!!*__ *Big thanks to @lmagder for fixing the headunit code after @Trezdog44 found the root of the issue with the 'Bluetooth call patch'* @@ -72,8 +238,8 @@ - Autorun Change: Choose options after pressing 'autorun' button. - Options: - ID7_Recovery Scripts Pack - - **Automatic WiFi App** - - Starts WiFi app on boot starts DHCP Server IP: 192.168.53.1 + - **Automatic WiFi AP** + - Starts WiFi AP on boot starts DHCP Server IP: 192.168.53.1 - MUST change values for 'YourSSID' & 'YourSSIDPassword' to run. - AIO will prompt for these values and apply them while building installer. - **SSH Over ADB** diff --git a/README.md b/README.md index b8ec9e6..7acdfa2 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ -# MZD-AIO-TI 2.7 [![Download](https://api.bintray.com/packages/trevelopment/MZD-AIO-TI/AIO/images/download.svg?version=MZD-AIO-TI) ](http://dl.mazdatweaks.win) +# MZD-AIO-TI 2.5 [![Download](https://api.bintray.com/packages/trevelopment/MZD-AIO-TI/AIO/images/download.svg?version=MZD-AIO-TI) ](http://dl.mazdatweaks.win) ## MZD All In One tweaks Installer #### Installer and uninstaller for several different system tweaks for Mazda MZD Infotainment System - ##### App Size ~ 260MB AIO Rebuilt with [Electron] & [AngularJS] [MazdaTweaks.com] @@ -106,9 +105,6 @@ This Project has 2 particular aspects, user interface and the custom built insta ###### Before Car Installation: - unplug any other USB drives from the car except this flash drive. -- -For installation of speedcam patch (see below), the NAVI SD card must remain in the car, because speedcam.txt file will be copied directly to SD card. -- For installation of speedometer, the NAVI SD card must remain in the car too, without NAVI SD card a special patch will be installed, otherwise the compass is rotated 180 degrees. - In general, the SD card can remain in the car during the tweak installations. #### Installation Into MZD Infotainment System: diff --git a/app/assets/css/casdk.css b/app/assets/css/casdk.css index e4a3113..fa681ad 100644 --- a/app/assets/css/casdk.css +++ b/app/assets/css/casdk.css @@ -1,8 +1,4 @@ -#options, -#menuTour, -#reset-ops-btn, -#instAll, -#uninstAll { +#options, #menuTour, #reset-ops-btn, #instAll, #uninstAll { display: none; } #sidePanel { @@ -14,88 +10,66 @@ display: inline-block; } #sidePanel h3 { - margin:0; - padding:0; - border:none; + margin: 0; + padding: 0; + border: none; } @media only screen and (min-width: 1400px) { #sidePanel>ul>li { width: 33%; } #sidePanel>ul>li.extrasMessage.colorScheme { - width:100%; + width: 100%; } #sidePanel>ul>li.extrasMessage.colorScheme .w3-half.side-colors { - width: 16.65%!important; + width: 16.65% !important; } } - .btn-theme { color: #fff; background-color: #68dff0; border-color: #48bcb4; } -.btn-theme:hover, -.btn-theme:focus, -.btn-theme:active, -.btn-theme.active, -.open .dropdown-toggle.btn-theme { +.btn-theme:hover, .btn-theme:focus, .btn-theme:active, .btn-theme.active, .open .dropdown-toggle.btn-theme { color: #fff; background-color: #48bcb4; border-color: #48bcb4; } - .btn-theme02 { color: #fff; background-color: #ac92ec; border-color: #967adc; } -.btn-theme02:hover, -.btn-theme02:focus, -.btn-theme02:active, -.btn-theme02.active, -.open .dropdown-toggle.btn-theme02 { +.btn-theme02:hover, .btn-theme02:focus, .btn-theme02:active, .btn-theme02.active, .open .dropdown-toggle.btn-theme02 { color: #fff; background-color: #967adc; border-color: #967adc; } - .btn-theme03 { color: #fff; background-color: #48cfad; border-color: #37bc9b; } -.btn-theme03:hover, -.btn-theme03:focus, -.btn-theme03:active, -.btn-theme03.active, -.open .dropdown-toggle.btn-theme03 { +.btn-theme03:hover, .btn-theme03:focus, .btn-theme03:active, .btn-theme03.active, .open .dropdown-toggle.btn-theme03 { color: #fff; background-color: #37bc9b; border-color: #37bc9b; } - .btn-theme04 { color: #fff; background-color: #ed5565; border-color: #da4453; } -.btn-theme04:hover, -.btn-theme04:focus, -.btn-theme04:active, -.btn-theme04.active, -.open .dropdown-toggle.btn-theme04 { +.btn-theme04:hover, .btn-theme04:focus, .btn-theme04:active, .btn-theme04.active, .open .dropdown-toggle.btn-theme04 { color: #fff; background-color: #da4453; border-color: #da4453; } - .btn-clear-g { - color: #48bcb4; + color: #48bcb4; background: transparent; border-color: #48bcb4; } - .btn-clear-g:hover { color: white; } @@ -104,7 +78,7 @@ margin: auto; } div#casdkInstallBtns { - margin-top: 40px!important; + margin-top: 40px !important; margin-right: 50px; } #casdkInstallBtns .btn-group-justified .btn-group:last-child { @@ -120,255 +94,208 @@ hr { border-top: 1px solid #797979; } .centered { - text-align: center; + text-align: center; } - .goleft { - text-align: left; + text-align: left; } - .goright { - text-align: right; + text-align: right; } - .mt { - margin-top: 25px; + margin-top: 25px; } - .mb { - margin-bottom: 25px; + margin-bottom: 25px; } - .ml { - margin-left: 5px; - } - + margin-left: 5px; +} .no-padding { - padding: 0 !important; + padding: 0 !important; } - .no-margin { - margin: 0 !important; + margin: 0 !important; } - /*Exclusive Theme Colors Configuration*/ .label-theme { - background-color: #68dff0; + background-color: #68dff0; } - .bg-theme { - background-color: #68dff0; + background-color: #68dff0; } - -ul.top-menu > li > .logout { - color: #f2f2f2; - font-size: 12px; - border-radius: 4px; - -webkit-border-radius: 4px; - border: 1px solid #64c3c2 !important; - padding: 5px 15px; - margin-right: 15px; - background: #68dff0; - margin-top: 15px; +ul.top-menu>li>.logout { + color: #f2f2f2; + font-size: 12px; + border-radius: 4px; + -webkit-border-radius: 4px; + border: 1px solid #64c3c2 !important; + padding: 5px 15px; + margin-right: 15px; + background: #68dff0; + margin-top: 15px; } - - /*sidebar navigation*/ #sidebar { - width: 210px; - height: 100%; - position: fixed; - background: #424a5d; + width: 210px; + height: 100%; + position: fixed; + background: #424a5d; } - #sidebar h5 { - color: #f2f2f2; - font-weight: 700; + color: #f2f2f2; + font-weight: 700; } - #sidebar ul li { - position: relative; + position: relative; } - -#sidebar .sub-menu > .sub li { - padding-left: 32px; +#sidebar .sub-menu>.sub li { + padding-left: 32px; } - -#sidebar .sub-menu > .sub li:last-child { - padding-bottom: 10px; +#sidebar .sub-menu>.sub li:last-child { + padding-bottom: 10px; } - - - /*notification*/ -#top_menu .nav > li, ul.top-menu > li { - float: left; -} +#top_menu .nav>li, ul.top-menu>li { + float: left; +} .notify-row { - float: left; - margin-top: 15px; - margin-left: 92px; + float: left; + margin-top: 15px; + margin-left: 92px; } - .notify-row .notification span.label { - display: inline-block; - height: 18px; - width: 20px; - padding: 5px; -} - -ul.top-menu > li > a { - color: #666666; - font-size: 16px; - border-radius: 4px; - -webkit-border-radius: 4px; - border:1px solid #666666 !important; - padding: 2px 6px; - margin-right: 15px; -} - -ul.top-menu > li > a:hover, ul.top-menu > li > a:focus { - border:1px solid #b6b6b6 !important; - background-color: transparent !important; - border-color: #b6b6b6 !important; - text-decoration: none; - border-radius: 4px; - -webkit-border-radius: 4px; - color: #b6b6b6 !important; + display: inline-block; + height: 18px; + width: 20px; + padding: 5px; +} +ul.top-menu>li>a { + color: #666666; + font-size: 16px; + border-radius: 4px; + -webkit-border-radius: 4px; + border: 1px solid #666666 !important; + padding: 2px 6px; + margin-right: 15px; +} +ul.top-menu>li>a:hover, ul.top-menu>li>a:focus { + border: 1px solid #b6b6b6 !important; + background-color: transparent !important; + border-color: #b6b6b6 !important; + text-decoration: none; + border-radius: 4px; + -webkit-border-radius: 4px; + color: #b6b6b6 !important; } - .notify-row .badge { - position: absolute; - right: -10px; - top: -10px; - z-index: 100; + position: absolute; + right: -10px; + top: -10px; + z-index: 100; } - .dropdown-menu.extended { - max-width: 300px !important; - min-width: 160px !important; - top: 42px; - width: 235px !important; - padding: 0; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.176) !important; - border: none !important; - border-radius: 4px; - -webkit-border-radius: 4px; + max-width: 300px !important; + min-width: 160px !important; + top: 42px; + width: 235px !important; + padding: 0; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.176) !important; + border: none !important; + border-radius: 4px; + -webkit-border-radius: 4px; } - - - /* Dash Side */ .ds { - background: #ffffff; - padding-top: 20px; + background: #ffffff; + padding-top: 20px; } - .ds h4 { - font-size: 14px; - font-weight: 700; + font-size: 14px; + font-weight: 700; } - .ds h3 { - color: #ffffff; - font-size: 16px; - padding: 0 10px; - line-height: 60px; - height: 60px; - margin: 0; - background: #ff865c; - text-align: center; + color: #ffffff; + font-size: 16px; + padding: 0 10px; + line-height: 60px; + height: 60px; + margin: 0; + background: #ff865c; + text-align: center; } - .ds i { - font-size: 12px; - line-height: 16px; + font-size: 12px; + line-height: 16px; } - .ds .desc { - border-bottom: 1px solid #eaeaea; - display: inline-block; - padding: 15px 0; - width: 100%; + border-bottom: 1px solid #eaeaea; + display: inline-block; + padding: 15px 0; + width: 100%; } - .ds .desc:hover { - background: #f2f2f2; + background: #f2f2f2; } - .ds .thumb { - width: 30px; - margin: 0 10px 0 20px; - display: block; - float: left; + width: 30px; + margin: 0 10px 0 20px; + display: block; + float: left; } - .ds .details { - width: 170px; - float: left; + width: 170px; + float: left; } - -.ds > .desc p { - font-size: 11px; +.ds>.desc p { + font-size: 11px; } - -.ds p > muted { - font-size: 9px; - text-transform: uppercase; - font-style: italic; - color: #666666 +.ds p>muted { + font-size: 9px; + text-transform: uppercase; + font-style: italic; + color: #666666 } - .ds a { - color: #68dff0; + color: #68dff0; } - /* LINE ICONS CONFIGURATION */ .mtbox { - margin-top: 80px; - margin-bottom: 40px; + margin-top: 80px; + margin-bottom: 40px; } - .box1 { - padding: 15px; - text-align: center; - color: #989898; - border-bottom: 1px solid #989898; + padding: 15px; + text-align: center; + color: #989898; + border-bottom: 1px solid #989898; } - .box1 span { - font-size: 50px; - + font-size: 50px; } - .box1 h3 { - text-align: center; + text-align: center; } - .box0:hover .box1 { - border-bottom: 1px solid #ffffff; + border-bottom: 1px solid #ffffff; } - .box0 p { - text-align: center; - font-size: 12px; - color: #f2f2f2; + text-align: center; + font-size: 12px; + color: #f2f2f2; } - .box0:hover p { - color: #ff865c; + color: #ff865c; } - .box0:hover { - background: #ffffff; - box-shadow: 0 2px 1px rgba(0, 0, 0, 0.2); + background: #ffffff; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.2); } - /* ************************************************************************************* PANELS CONFIGURATIONS *************************************************************************************** */ @@ -376,126 +303,121 @@ PANELS CONFIGURATIONS /*Panel Size*/ .pn { - height: 315px; - box-shadow: 0 2px 1px rgba(0, 0, 0, 0.2); + height: 315px; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.2); } - .pn:hover { - box-shadow: 2px 3px 2px rgba(0, 0, 0, 0.3); - + box-shadow: 2px 3px 2px rgba(0, 0, 0, 0.3); } - /*Grey Panel*/ .grey-panel { - text-align: center; - background: #dfdfe1; + text-align: center; + background: #dfdfe1; } .grey-panel .grey-header { - background: #ccd1d9; - padding: 3px; - margin-bottom: 15px; + background: #ccd1d9; + padding: 3px; + margin-bottom: 15px; } .grey-panel h5 { - font-weight: 200; - margin-top: 10px; + font-weight: 200; + margin-top: 10px; } .grey-panel p { - margin-left: 5px; + margin-left: 5px; } /* Specific Conf for Donut Charts*/ + .donut-chart p { - margin-top: 5px; - font-weight: 700; - margin-left: 15px; + margin-top: 5px; + font-weight: 700; + margin-left: 15px; } .donut-chart h2 { - font-weight: 900; - color: #FF6B6B; - font-size: 38px; + font-weight: 900; + color: #FF6B6B; + font-size: 38px; } - /* Dark Blue*/ .darkblue-panel { - text-align: center; - background: #444c57; + text-align: center; + background: #444c57; } .darkblue-panel .darkblue-header { - background: transparent; - padding: 3px; - margin-bottom: 15px; + background: transparent; + padding: 3px; + margin-bottom: 15px; } .darkblue-panel h1 { - color: #f2f2f2; + color: #f2f2f2; } .darkblue-panel h5 { - font-weight: 200; - margin-top: 10px; - color: white; + font-weight: 200; + margin-top: 10px; + color: white; } .darkblue-panel footer { - color: white; + color: white; } .darkblue-panel footer h5 { - margin-left:10px; - margin-right: 10px; - font-weight: 700; + margin-left: 10px; + margin-right: 10px; + font-weight: 700; } - /*Green Panel*/ + .green-panel { - text-align: center; - background: #68dff0; + text-align: center; + background: #68dff0; } .green-panel .green-header { - background: #43b1a9; - padding: 3px; - margin-bottom: 15px; + background: #43b1a9; + padding: 3px; + margin-bottom: 15px; } .green-panel h5 { - color: white; - font-weight: 200; - margin-top: 10px; + color: white; + font-weight: 200; + margin-top: 10px; } .green-panel h3 { - color: white; - font-weight: 100; + color: white; + font-weight: 100; } .green-panel p { - color: white; + color: white; } - /*White Panel */ + .white-panel { - text-align: center; - background: #ffffff; - color: #ccd1d9; + text-align: center; + background: #ffffff; + color: #ccd1d9; } - .white-panel p { - margin-top: 5px; - font-weight: 700; - margin-left: 15px; + margin-top: 5px; + font-weight: 700; + margin-left: 15px; } .white-panel .white-header { - background: #f4f4f4; - padding: 3px; - margin-bottom: 15px; - color: #c6c6c6; + background: #f4f4f4; + padding: 3px; + margin-bottom: 15px; + color: #c6c6c6; } .white-panel .small { - font-size: 10px; - color: #ccd1d9; + font-size: 10px; + color: #ccd1d9; } - .white-panel i { - color: #68dff0; - padding-right: 4px; - font-size: 14px; + color: #68dff0; + padding-right: 4px; + font-size: 14px; } - /*STOCK CARD Panel*/ + .card { background: white; box-shadow: 0 2px 1px rgba(0, 0, 0, 0.2); @@ -506,106 +428,105 @@ PANELS CONFIGURATIONS background: #00c5de; } .stock .stock-chart #chart { - height: 10.7em; - background: url(http://i.imgbox.com/abmuNQx2) center bottom no-repeat; + height: 10.7em; + background: url(http://i.imgbox.com/abmuNQx2) center bottom no-repeat; } .stock .current-price { background: #1d2122; padding: 10px; } .stock .current-price .info abbr { - display: block; - color: #f8f8f8; - font-size: 1.5em; - font-weight: 600; - margin-top: 0.18em; + display: block; + color: #f8f8f8; + font-size: 1.5em; + font-weight: 600; + margin-top: 0.18em; } .stock .current-price .changes { - text-align: right; + text-align: right; } .stock .changes .up { - color: #4fd98b + color: #4fd98b } .stock .current-price .changes .value { - font-size: 1.8em; - font-weight: 700; + font-size: 1.8em; + font-weight: 700; } .stock .summary { - color: #2f2f2f; - display: block; - background: #f2f2f2; - padding: 10px; - text-align: center; + color: #2f2f2f; + display: block; + background: #f2f2f2; + padding: 10px; + text-align: center; } .stock .summary strong { - font-weight: 900; - font-size: 14px; + font-weight: 900; + font-size: 14px; } - /*Content Panel*/ + .content-panel { - background: #ffffff; - box-shadow: 0px 3px 2px #aab2bd; - padding-top: 15px; - padding-bottom: 5px; + background: #ffffff; + box-shadow: 0px 3px 2px #aab2bd; + padding-top: 15px; + padding-bottom: 5px; } .content-panel h4 { - margin-left: 10px; + margin-left: 10px; } - /* BLOG PANEL */ + #blog-bg { - background: url(../../files/img/casdk.jpg) no-repeat center top; - margin-top: -15px; - background-attachment: relative; + background: url(../../files/img/casdk.jpg) no-repeat center top; + margin-top: -15px; + background-attachment: relative; background-position: -85px center; min-height: 160px; width: 150%; - -webkit-background-size: 100%; - -moz-background-size: 100%; - -o-background-size: 100%; - background-size: 100%; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; + -webkit-background-size: 100%; + -moz-background-size: 100%; + -o-background-size: 100%; + background-size: 100%; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; } .blog-title { - background: rgba(25,25,25,0.5); - top: 100px; - padding: 6px; - color: white; - font-weight: 700; - position: absolute; - display: block; - width: 120px; + background: rgba(25, 25, 25, 0.5); + top: 100px; + padding: 6px; + color: white; + font-weight: 700; + position: absolute; + display: block; + width: 120px; } .blog-text { - margin-left: 8px; - margin-right: 8px; - margin-top: 15px; - font-size: 12px; + margin-left: 8px; + margin-right: 8px; + margin-top: 15px; + font-size: 12px; } - /* Calendar Configuration */ + #calendar { - color: white; - padding: 0px !important; + color: white; + padding: 0px !important; } .calendar-month-header { - background: #43b1a9; + background: #43b1a9; } - /* TODO PANEL */ -.steps{ + +.steps { display: block; overflow: hidden; } .steps input[type=checkbox] { display: none; } -.steps input[type=button], -.steps input[type=submit]{ +.steps input[type=button], .steps input[type=submit] { background: #f1783c; border: none; padding: 0px; @@ -620,10 +541,10 @@ PANELS CONFIGURATIONS cursor: pointer; transition: background 0.5s ease } -.steps input[type=button]:hover{ +.steps input[type=button]:hover { background: #8fde9c; } -.steps>label{ +.steps>label { background: #393D40; height: 55px; line-height: 55px; @@ -640,8 +561,8 @@ PANELS CONFIGURATIONS transition: all 0.7s ease; margin: 0px; } -.steps>label:before{ - content:""; +.steps>label:before { + content: ""; width: 12px; height: 12px; display: block; @@ -650,214 +571,205 @@ PANELS CONFIGURATIONS border-radius: 100%; transition: border 0.7s ease } -.steps>label:hover{ +.steps>label:hover { background: #2B2E30; color: #46b7e5 } -.steps>label:hover:before{ +.steps>label:hover:before { border: 1px solid #46b7e5; } -#op1:checked ~ label[for=op1]:before, -#op2:checked ~ label[for=op2]:before, -#op3:checked ~ label[for=op3]:before, -#op4:checked ~ label[for=op4]:before, -#op5:checked ~ label[for=op5]:before, -#op6:checked ~ label[for=op6]:before{ +#op1:checked~label[for=op1]:before, #op2:checked~label[for=op2]:before, #op3:checked~label[for=op3]:before, #op4:checked~label[for=op4]:before, #op5:checked~label[for=op5]:before, #op6:checked~label[for=op6]:before { border: 2px solid #96c93c; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGFJREFUeNpinHLMhgEHKADia0xQThIQs6JJ9gPxZhYQAcS6QHwDiI8hSYJAC0gBPxDLAvFcIJ6JJJkDxFNBVtgBcQ8Qa6BLghgwN4A4a9ElQYAFSj8C4mwg3o8sCQIAAQYA78QTYqnPZuEAAAAASUVORK5CYII=') no-repeat center center; } .w3-sidenav .ck-button.w3-dropdown-hover { - max-width:150px; + max-width: 150px; } .w3-dropdown-content.appimg { - transform: translate(-42%,0); + transform: translate(-42%, 0); } /* PROFILE PANELS */ + /* Profile 01*/ + #profile-01 { - background: url(files/img/casdk.jpg) no-repeat center top; - margin-top: -15px; - background-attachment: relative; - background-position: center center; - min-height: 150px; - width: 100%; - -webkit-background-size: 100%; - -moz-background-size: 100%; - -o-background-size: 100%; - background-size: 100%; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; + background: url(files/img/casdk.jpg) no-repeat center top; + margin-top: -15px; + background-attachment: relative; + background-position: center center; + min-height: 150px; + width: 100%; + -webkit-background-size: 100%; + -moz-background-size: 100%; + -o-background-size: 100%; + background-size: 100%; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; } #profile-01 h3 { - color: #000; - padding-top: 10px; - margin: 0px; - text-align: center; + color: #000; + padding-top: 10px; + margin: 0px; + text-align: center; } #profile-01 h6 { - color: #000; - text-align: center; - margin-bottom: 0px; - font-weight: 900; + color: #000; + text-align: center; + margin-bottom: 0px; + font-weight: 900; } #profile-01 { - background: #00ff97; - height: 50px; + background: #00ff97; + height: 50px; -webkit-transition: 1.6s ease-in-out 1s; -moz-transition: background-color 1.6s; -o-transition: background-color 1.6s; transition: 1.6s ease-in-out 1s; } #profile-01:hover { - background: #6a00c7; + background: #6a00c7; color: #fff; cursor: pointer; } #profile-01 p { - color: #000; - padding-top: 15px; - font-weight: 400; - font-size: 15px; + color: #000; + padding-top: 15px; + font-weight: 400; + font-size: 15px; } - /* Profile 02*/ + #profile-02 { - margin-top: -15px; - background-attachment: relative; - background-position: center center; - min-height: 200px; - width: 100%; - -webkit-background-size: 100%; - -moz-background-size: 100%; - -o-background-size: 100%; - background-size: 100%; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; + margin-top: -15px; + background-attachment: relative; + background-position: center center; + min-height: 200px; + width: 100%; + -webkit-background-size: 100%; + -moz-background-size: 100%; + -o-background-size: 100%; + background-size: 100%; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; } #profile-02 .user { - padding-top: 40px; - text-align: center; + padding-top: 40px; + text-align: center; } #profile-02 h4 { - color: #000; - margin:0px; - padding-top: 8px; + color: #000; + margin: 0px; + padding-top: 8px; } .pr2-social a { - color: #cdcdcd; + color: #cdcdcd; } .pr2-social a:hover { - color: #68dff0; + color: #68dff0; } .pr2-social i { - margin-top: 15px; - margin-right: 12px; - font-size: 20px; + margin-top: 15px; + margin-right: 12px; + font-size: 20px; } - - /*spark line*/ + .chart { - display: inline-block; - text-align: center; - width: 100%; + display: inline-block; + text-align: center; + width: 100%; } .chart .heading { - text-align: left; + text-align: left; } .chart .heading span { - display: block; + display: block; } .panel.green-chart .chart-tittle { - font-size: 16px; - padding: 15px; - display: inline-block; - font-weight:normal; - background: #99c262; - width: 100%; - -webkit-border-radius: 0px 0px 4px 4px; - border-radius: 0px 0px 4px 4px; + font-size: 16px; + padding: 15px; + display: inline-block; + font-weight: normal; + background: #99c262; + width: 100%; + -webkit-border-radius: 0px 0px 4px 4px; + border-radius: 0px 0px 4px 4px; } #barchart { - margin-bottom: -15px; - display: inline-block; + margin-bottom: -15px; + display: inline-block; } .panel.green-chart .chart-tittle .value { - float: right; - color: #c0f080; + float: right; + color: #c0f080; } .panel.green-chart { - background: #a9d96c; - color: #fff; + background: #a9d96c; + color: #fff; } .panel.terques-chart { - background: transparent; - color: #797979; + background: transparent; + color: #797979; } .panel.terques-chart .chart-tittle .value { - float: right; - color: #fff; + float: right; + color: #fff; } .panel.terques-chart .chart-tittle .value a { - color: #2f2f2f; - font-size: 12px; + color: #2f2f2f; + font-size: 12px; } .panel.terques-chart .chart-tittle .value a:hover, .panel.terques-chart .chart-tittle .value a.active { - color: #68dff0; - font-size: 12px; + color: #68dff0; + font-size: 12px; } .panel.terques-chart .chart-tittle { - font-size: 16px; - padding: 15px; - display: inline-block; - font-weight:normal; - background: #39b7ac; - width: 100%; - -webkit-border-radius: 0px 0px 4px 4px; - border-radius: 0px 0px 4px 4px; + font-size: 16px; + padding: 15px; + display: inline-block; + font-weight: normal; + background: #39b7ac; + width: 100%; + -webkit-border-radius: 0px 0px 4px 4px; + border-radius: 0px 0px 4px 4px; } .inline-block { - display: inline-block; + display: inline-block; } - /* showcase background */ + .showback { - background: #ffffff; - padding: 15px; - margin-bottom: 15px; - box-shadow: 0px 3px 2px #aab2bd; + background: #ffffff; + padding: 15px; + margin-bottom: 15px; + box-shadow: 0px 3px 2px #aab2bd; } - - - /* Calendar Events - Calendar.html*/ + .external-event { - cursor: move; - display: inline-block !important; - margin-bottom: 7px !important; - margin-right: 7px !important; - padding: 10px; + cursor: move; + display: inline-block !important; + margin-bottom: 7px !important; + margin-right: 7px !important; + padding: 10px; } - .drop-after { - padding-top: 15px; - margin-top: 15px; - border-top: 1px solid #ccc; + padding-top: 15px; + margin-top: 15px; + border-top: 1px solid #ccc; } - .fc-state-default, .fc-state-default .fc-button-inner { - background: #f2f2f2; + background: #f2f2f2; } - .fc-state-active .fc-button-inner { - background: #FFFFFF; + background: #FFFFFF; } - /* Gallery Configuration */ + .photo-wrapper { display: block; position: relative; @@ -878,19 +790,17 @@ PANELS CONFIGURATIONS -moz-transition: opacity 0.4s; -o-transition: opacity 0.4s; transition: opacity 0.4s; - } - .project:hover .photo-wrapper { background-color: #68dff0; - background-image:url(../img/zoom.png); - background-repeat:no-repeat; - background-position:center; - top: 0; - bottom: 0; - left: 0; - right: 0; - position: relative; + background-image: url(../img/zoom.png); + background-repeat: no-repeat; + background-position: center; + top: 0; + bottom: 0; + left: 0; + right: 0; + position: relative; } .project:hover .photo { opacity: 10; @@ -904,293 +814,270 @@ PANELS CONFIGURATIONS opacity: 1; filter: alpha(opacity=100); } - - - /* EZ Checklist */ + .ez-checkbox { - margin-right: 5px; + margin-right: 5px; } - .ez-checkbox, .ez-radio { - height: 20px; - width: 20px; + height: 20px; + width: 20px; } - .brand-highlight { -background: #fffbcc !important; + background: #fffbcc !important; } - - /* FORMS CONFIGURATION */ + .form-panel { - background: #ffffff; - margin: 10px; - padding: 10px; - box-shadow: 0px 3px 2px #aab2bd; - text-align: left; + background: #ffffff; + margin: 10px; + padding: 10px; + box-shadow: 0px 3px 2px #aab2bd; + text-align: left; } - label { - font-weight: 400; + font-weight: 400; } - .form-horizontal.style-form .form-group { - border-bottom: 1px solid #eff2f7; - padding-bottom: 15px; - margin-bottom: 15px; + border-bottom: 1px solid #eff2f7; + padding-bottom: 15px; + margin-bottom: 15px; } - .round-form { - border-radius: 500px; - -webkit-border-radius: 500px; + border-radius: 500px; + -webkit-border-radius: 500px; } - @media (min-width: 768px) { - .form-horizontal .control-label { - text-align: left; - } + .form-horizontal .control-label { + text-align: left; + } } - #focusedInput { - border: 1px solid #ed5565; - box-shadow: none; + border: 1px solid #ed5565; + box-shadow: none; } - .add-on { - float: right; - margin-top: -37px; - padding: 3px; - text-align: center; + float: right; + margin-top: -37px; + padding: 3px; + text-align: center; } - .add-on .btn { - height: 34px; + height: 34px; } - /* TOGGLE CONFIGURATION */ + .has-switch { - border-radius: 30px; - -webkit-border-radius: 30px; - display: inline-block; - cursor: pointer; - line-height: 1.231; - overflow: hidden; - position: relative; - text-align: left; - width: 80px; - -webkit-mask: url('../img/mask.png') 0 0 no-repeat; - mask: url('../img/mask.png') 0 0 no-repeat; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; + border-radius: 30px; + -webkit-border-radius: 30px; + display: inline-block; + cursor: pointer; + line-height: 1.231; + overflow: hidden; + position: relative; + text-align: left; + width: 80px; + -webkit-mask: url('../img/mask.png') 0 0 no-repeat; + mask: url('../img/mask.png') 0 0 no-repeat; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; } .has-switch.deactivate { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default !important; -} -.has-switch.deactivate label, -.has-switch.deactivate span { - cursor: default !important; -} -.has-switch > div { - width: 162%; - position: relative; - top: 0; -} -.has-switch > div.switch-animate { - -webkit-transition: left 0.25s ease-out; - -moz-transition: left 0.25s ease-out; - -o-transition: left 0.25s ease-out; - transition: left 0.25s ease-out; - -webkit-backface-visibility: hidden; -} -.has-switch > div.switch-off { - left: -63%; -} -.has-switch > div.switch-off label { - background-color: #7f8c9a; - border-color: #bdc3c7; - -webkit-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); - -moz-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); - box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); -} -.has-switch > div.switch-on { - left: 0%; -} -.has-switch > div.switch-on label { - background-color: #41cac0; + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default !important; +} +.has-switch.deactivate label, .has-switch.deactivate span { + cursor: default !important; +} +.has-switch>div { + width: 162%; + position: relative; + top: 0; +} +.has-switch>div.switch-animate { + -webkit-transition: left 0.25s ease-out; + -moz-transition: left 0.25s ease-out; + -o-transition: left 0.25s ease-out; + transition: left 0.25s ease-out; + -webkit-backface-visibility: hidden; +} +.has-switch>div.switch-off { + left: -63%; +} +.has-switch>div.switch-off label { + background-color: #7f8c9a; + border-color: #bdc3c7; + -webkit-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); + -moz-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); + box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); +} +.has-switch>div.switch-on { + left: 0%; +} +.has-switch>div.switch-on label { + background-color: #41cac0; } .has-switch input[type=checkbox] { - display: none; + display: none; } .has-switch span { - cursor: pointer; - font-size: 14.994px; - font-weight: 700; - float: left; - height: 29px; - line-height: 19px; - margin: 0; - padding-bottom: 6px; - padding-top: 5px; - position: relative; - text-align: center; - width: 50%; - z-index: 1; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: 0.25s ease-out; - -moz-transition: 0.25s ease-out; - -o-transition: 0.25s ease-out; - transition: 0.25s ease-out; - -webkit-backface-visibility: hidden; + cursor: pointer; + font-size: 14.994px; + font-weight: 700; + float: left; + height: 29px; + line-height: 19px; + margin: 0; + padding-bottom: 6px; + padding-top: 5px; + position: relative; + text-align: center; + width: 50%; + z-index: 1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.25s ease-out; + -moz-transition: 0.25s ease-out; + -o-transition: 0.25s ease-out; + transition: 0.25s ease-out; + -webkit-backface-visibility: hidden; } .has-switch span.switch-left { - border-radius: 30px 0 0 30px; - background-color: #2A3542; - color: #41cac0; - border-left: 1px solid transparent; + border-radius: 30px 0 0 30px; + background-color: #2A3542; + color: #41cac0; + border-left: 1px solid transparent; } .has-switch span.switch-right { - border-radius: 0 30px 30px 0; - background-color: #bdc3c7; - color: #ffffff; - text-indent: 7px; + border-radius: 0 30px 30px 0; + background-color: #bdc3c7; + color: #ffffff; + text-indent: 7px; } .has-switch span.switch-right [class*="fui-"] { - text-indent: 0; + text-indent: 0; } .has-switch label { - border: 4px solid #2A3542; - border-radius: 50%; - -webkit-border-radius: 50%; - float: left; - height: 29px; - margin: 0 -21px 0 -14px; - padding: 0; - position: relative; - vertical-align: middle; - width: 29px; - z-index: 100; - -webkit-transition: 0.25s ease-out; - -moz-transition: 0.25s ease-out; - -o-transition: 0.25s ease-out; - transition: 0.25s ease-out; - -webkit-backface-visibility: hidden; + border: 4px solid #2A3542; + border-radius: 50%; + -webkit-border-radius: 50%; + float: left; + height: 29px; + margin: 0 -21px 0 -14px; + padding: 0; + position: relative; + vertical-align: middle; + width: 29px; + z-index: 100; + -webkit-transition: 0.25s ease-out; + -moz-transition: 0.25s ease-out; + -o-transition: 0.25s ease-out; + transition: 0.25s ease-out; + -webkit-backface-visibility: hidden; } .switch-square { - border-radius: 6px; - -webkit-border-radius: 6px; - -webkit-mask: url('../img/mask.png') 0 0 no-repeat; - mask: url('../img/mask.png') 0 0 no-repeat; + border-radius: 6px; + -webkit-border-radius: 6px; + -webkit-mask: url('../img/mask.png') 0 0 no-repeat; + mask: url('../img/mask.png') 0 0 no-repeat; } -.switch-square > div.switch-off label { - border-color: #7f8c9a; - border-radius: 6px 0 0 6px; +.switch-square>div.switch-off label { + border-color: #7f8c9a; + border-radius: 6px 0 0 6px; } .switch-square span.switch-left { - border-radius: 6px 0 0 6px; + border-radius: 6px 0 0 6px; } .switch-square span.switch-left [class*="fui-"] { - text-indent: -10px; + text-indent: -10px; } .switch-square span.switch-right { - border-radius: 0 6px 6px 0; + border-radius: 0 6px 6px 0; } .switch-square span.switch-right [class*="fui-"] { - text-indent: 5px; + text-indent: 5px; } .switch-square label { - border-radius: 0 6px 6px 0; - border-color: #41cac0; + border-radius: 0 6px 6px 0; + border-color: #41cac0; } - #sidePanel { - margin-top:20px; + margin-top: 20px; } -#sidePanel > .row { - margin-top: 25px; +#sidePanel>.row { + margin-top: 25px; } - .content-panel.pn { - overflow: hidden; + overflow: hidden; } .footer.centered { - bottom: 0; - position: absolute; - margin: auto; - right: 0; - left: 0; - width: 400px; - max-width:80%; + bottom: 0; + position: absolute; + margin: auto; + right: 0; + left: 0; + width: 400px; + max-width: 80%; } #CASDKinfo { - position: fixed; - height: 400px; - max-height:80%; - overflow:hidden; - top: 120px; - width: 1000px; - max-width: 80%; - display:none; - right: 0; - left: 0; - margin: auto; - box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); - border: none; - background: #fff; - color:#000; -} -#CASDKinfo:hover, -#CASDKinfoBtn:hover + #CASDKinfo { - display:inline-block; + position: fixed; + height: 400px; + max-height: 80%; + overflow: hidden; + top: 120px; + width: 1000px; + max-width: 80%; + display: none; + right: 0; + left: 0; + margin: auto; + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); + border: none; + background: #fff; + color: #000; +} +#CASDKinfo:hover, #CASDKinfoBtn:hover+#CASDKinfo { + display: inline-block; } .ck-button label span { - border-radius:4px; - border: 2px dotted #008800; + border-radius: 4px; + border: 2px dotted #008800; } - -.ck-button:hover input + span { - background: blue; - border-color: red; - color:#fff; +.ck-button:hover input+span { + background: blue; + border-color: red; + color: #fff; } .ck-button label span { - padding:5px; + padding: 5px; } - .ck-button label input { - position:absolute; + position: absolute; } - -.ck-button input:checked + span { - background-color:green; - border-color:#ff9100; - color:#fff; - border-radius:4px; +.ck-button input:checked+span { + background-color: green; + border-color: #ff9100; + color: #fff; + border-radius: 4px; } #CASDKinfo img { - max-width:350px; + max-width: 350px; } -.w3-text::-webkit-scrollbar-button:single-button:start, -.w3-text::-webkit-scrollbar-button:single-button:end, -::-webkit-scrollbar-button:single-button:start, -::-webkit-scrollbar-button:single-button:end { - display:none; +.w3-text::-webkit-scrollbar-button:single-button:start, .w3-text::-webkit-scrollbar-button:single-button:end, ::-webkit-scrollbar-button:single-button:start, ::-webkit-scrollbar-button:single-button:end { + display: none; } input[type="checkbox"]#casdkTOsd { top: 11px; display: initial; } -#CASDKinfo input[type="checkbox"]:checked + label, -#CASDKinfo input[type="checkbox"]:checked + span { - font-weight:bold +#CASDKinfo input[type="checkbox"]:checked+label, #CASDKinfo input[type="checkbox"]:checked+span { + font-weight: bold } .ck-button label { - overflow:visible; + overflow: visible; } diff --git a/app/assets/css/checkboxStyles.css b/app/assets/css/checkboxStyles.css index 9b73e26..1349498 100644 --- a/app/assets/css/checkboxStyles.css +++ b/app/assets/css/checkboxStyles.css @@ -1,65 +1,61 @@ -label{ - display:inline-block;margin:0; +label { + display: inline-block; + margin: 0; } .w3-table td { vertical-align: middle; padding: 3px 6px; } /* Checkbox Styles */ + input[type=checkbox] { visibility: hidden; } -.install-check,.uninstall-check { +.install-check, .uninstall-check { width: 28px; height: 28px; background: #fcfff4; - background: -webkit-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -moz-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -o-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -ms-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead', GradientType=0); margin: 4px auto; - -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); position: relative; display: inline-block; } - -.install-check label ,.uninstall-check label{ +.install-check label, .uninstall-check label { cursor: pointer; position: absolute; width: 20px; height: 20px; left: 4px; top: 4px; - - -webkit-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - -moz-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); background: -webkit-linear-gradient(top, #222 0%, #45484d 100%); background: -moz-linear-gradient(top, #222 0%, #45484d 100%); background: -o-linear-gradient(top, #222 0%, #45484d 100%); background: -ms-linear-gradient(top, #222 0%, #45484d 100%); background: linear-gradient(top, #222 0%, #45484d 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d', GradientType=0); } - -.install-check label:hover::after,.uninstall-check label:hover::after { +.install-check label:hover::after, .uninstall-check label:hover::after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter: alpha(opacity=30); opacity: 0.3; } - -.install-check input[type=checkbox]:checked + label:after,.uninstall-check input[type=checkbox]:checked + label:after { +.install-check input[type=checkbox]:checked+label:after, .uninstall-check input[type=checkbox]:checked+label:after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: alpha(opacity=100); opacity: 1; } -.install-check label:after,.uninstall-check label:after { +.install-check label:after, .uninstall-check label:after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); opacity: 0; @@ -68,19 +64,16 @@ input[type=checkbox] { width: 16px; height: 16px; background: #00bf00; - background: -webkit-linear-gradient(top, #00bf00 0%, #2deabf 100%); background: -moz-linear-gradient(top, #00bf00 0%, #009400 100%); background: -o-linear-gradient(top, #00bf00 0%, #009400 100%); background: -ms-linear-gradient(top, #00bf00 0%, #009400 100%); background: linear-gradient(top, #00bf00 0%, #009400 100%); - top: 2px; left: 2px; - - -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .uninstall-check label:after { background: #bf0000; @@ -91,22 +84,20 @@ input[type=checkbox] { background: linear-gradient(top, #bf0000 0%, #940000 100%); } /* Help Toggler */ + .helpToggle { width: 80px; height: 26px; background: #333; margin: 20px auto; - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; position: relative; - - -webkit-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,0.2); - -moz-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,0.2); - box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,0.2); + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.2); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.2); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.2); } - .helpToggle:after { content: 'OFF'; font: 12px/26px Arial, sans-serif; @@ -115,9 +106,8 @@ input[type=checkbox] { right: 10px; z-index: 0; font-weight: bold; - text-shadow: 1px 1px 0px rgba(255,255,255,.15); + text-shadow: 1px 1px 0px rgba(255, 255, 255, .15); } - .helpToggle:before { content: 'ON'; font: 12px/26px Arial, sans-serif; @@ -127,16 +117,13 @@ input[type=checkbox] { z-index: 0; font-weight: bold; } - .helpToggle label { display: block; width: 34px; height: 20px; - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; - -webkit-transition: all .4s ease; -moz-transition: all .4s ease; -o-transition: all .4s ease; @@ -147,73 +134,62 @@ input[type=checkbox] { top: 3px; left: 3px; z-index: 1; - - -webkit-box-shadow: 0px 2px 5px 0px rgba(0,0,0,0.3); - -moz-box-shadow: 0px 2px 5px 0px rgba(0,0,0,0.3); - box-shadow: 0px 2px 5px 0px rgba(0,0,0,0.3); + -webkit-box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + box-shadow: 0px 2px 5px 0px rgba(0, 0, 0, 0.3); background: #fcfff4; - background: -webkit-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -moz-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -o-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -ms-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead', GradientType=0); } - -.helpToggle input[type=checkbox]:checked + label { +.helpToggle input[type=checkbox]:checked+label { left: 3px; } -.helpToggle input[type=checkbox] + label { +.helpToggle input[type=checkbox]+label { left: 43px; } .menuCheck { width: 28px; height: 28px; background: #fcfff4; - background: -webkit-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -moz-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -o-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -ms-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead', GradientType=0); margin: 20px auto; - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; - - -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); position: relative; } - .menuCheck label { cursor: pointer; position: absolute; width: 20px; height: 20px; - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; left: 4px; top: 4px; - - -webkit-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - -moz-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); background: -webkit-linear-gradient(top, #222 0%, #45484d 100%); background: -moz-linear-gradient(top, #222 0%, #45484d 100%); background: -o-linear-gradient(top, #222 0%, #45484d 100%); background: -ms-linear-gradient(top, #222 0%, #45484d 100%); background: linear-gradient(top, #222 0%, #45484d 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d', GradientType=0); } - .menuCheck label:after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); @@ -228,21 +204,18 @@ input[type=checkbox] { border: 3px solid #fcfff4; border-top: none; border-right: none; - -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -o-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } - .menuCheck label:hover::after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter: alpha(opacity=30); opacity: 0.3; } - -.menuCheck input[type=checkbox]:checked + label:after { +.menuCheck input[type=checkbox]:checked+label:after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: alpha(opacity=100); opacity: 1; @@ -254,7 +227,7 @@ input[type=checkbox] { margin: 2px 2px 4px 0px; display: inline-block; white-space: nowrap; - padding-top:3px; + padding-top: 3px; } .color-check label.Purple:after { background: purple; @@ -266,7 +239,7 @@ input[type=checkbox] { } .color-check label.Red:after { background: red; - background: -webkit-radial-gradient(center, red 5%, #af5bb5 100%); + background: -webkit-radial-gradient(center, red 5%, #af5bb5 100%); } .color-check label.Blue:after { background: blue; @@ -282,15 +255,16 @@ input[type=checkbox] { } .color-check label.Orange:after { background: orange; - background:-webkit-radial-gradient(center, orange 5%, #cc7553 100%); + background: -webkit-radial-gradient(center, orange 5%, #cc7553 100%); } .color-check label.Silver:after { background: silver; - background: -webkit-radial-gradient(center, silver 5%, #797979 100%); + background: -webkit-radial-gradient(center, silver 5%, #797979 100%); } .color-check label.CarOS:after { background: white; - background: -webkit-radial-gradient(center, #00ff95 6%, #000000 100%);; + background: -webkit-radial-gradient(center, #00ff95 6%, #000000 100%); + ; } .sidePanel input[type=radio] { visibility: hidden; @@ -300,47 +274,40 @@ input[type=checkbox] { width: 28px; height: 28px; background: #fcfff4; - background: -webkit-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -moz-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -o-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: -ms-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead', GradientType=0); /*margin: 20px auto;*/ - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; - - -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); position: relative; } - .extraCheck, .extraRadio label { cursor: pointer; position: absolute; width: 20px; height: 20px; - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; left: 4px; top: 4px; - - -webkit-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - -moz-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); - + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 1); background: -webkit-linear-gradient(top, #222 0%, #45484d 100%); background: -moz-linear-gradient(top, #222 0%, #45484d 100%); background: -o-linear-gradient(top, #222 0%, #45484d 100%); background: -ms-linear-gradient(top, #222 0%, #45484d 100%); background: linear-gradient(top, #222 0%, #45484d 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d',GradientType=0 ); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d', GradientType=0); } .extraCheck, .extraRadio label:after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; @@ -351,47 +318,41 @@ input[type=checkbox] { width: 16px; height: 16px; background: #00bf00; - background: -webkit-radial-gradient(center, #ffffff 0%, #00ff00 20%, #3333ff 50%, #000 100%); background: -moz-linear-gradient(top, #00bf00 0%, #009400 100%); background: -o-linear-gradient(top, #00bf00 0%, #009400 100%); background: -ms-linear-gradient(top, #00bf00 0%, #009400 100%); background: linear-gradient(top, #00bf00 0%, #009400 100%); - -webkit-border-radius: 50px; -moz-border-radius: 50px; border-radius: 50px; top: 2px; left: 2px; - - -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } - .extraCheck, .extraRadio label:hover::after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter: alpha(opacity=30); opacity: 0.3; } - -.extraCheck, .extraRadio input[type=radio]:checked + label:after { +.extraCheck, .extraRadio input[type=radio]:checked+label:after { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: alpha(opacity=100); opacity: 1; } - span.toggleExtra:before { font-size: 16px; padding: 2px; z-index: 8; position: absolute; cursor: pointer; - display: inline-block!important; + display: inline-block !important; outline-offset: -5px; margin: -25px 0px 0px -25px; transition: outline 1s ease .6s; - outline:2px solid #000000; + outline: 2px solid #000000; } /*span.bgtoggle:before { margin-left: -29px; @@ -400,12 +361,13 @@ span.toggleExtra.icon-plus-square:before { padding: 3px 4px; outline: 1px double transparent; }*/ -span.toggleExtra.icon-plus-square + * { - display:none!important; + +span.toggleExtra.icon-plus-square+* { + display: none !important; } span.toggleExtra:hover:before { - color:#000000; - outline:3px dotted #ff0000; + color: #000000; + outline: 3px dotted #ff0000; } .w3-table td:first-child { padding-left: 4px; @@ -418,10 +380,10 @@ span.toggleExtra:hover:before { .speedcam-check.menuCheck { margin: 0; } -.extraCheck, .extraRadio.d2sb-check label:after { +.extraCheck, .extraRadio.d2sb-check label:after { background: -webkit-radial-gradient(center, #000000 0%, #00b8ff 20%, #ff33e6 50%, #fff5f5 100%); } -.extraCheck, .extraRadio.disclaim-check label:after { +.extraCheck, .extraRadio.disclaim-check label:after { background: -webkit-radial-gradient(center, #dcd8d8 0%, #ff6a00 20%, #33b1ec 50%, #333 100%); } .accordion.help-messages { @@ -437,23 +399,19 @@ span.toggleExtra:hover:before { height: 450px; width: 682px; } -.accordion.help-messages > ul > li, -.help-messages .accordion-title, -.help-messages .accordion-content, -.help-messages .accordion-separator { +.accordion.help-messages>ul>li, .help-messages .accordion-title, .help-messages .accordion-content, .help-messages .accordion-separator { float: left; } -.accordion.help-messages > ul > li { +.accordion.help-messages>ul>li { background-color: #1f1f1f; margin-right: -490px; margin-bottom: -0px; } -.help-messages .accordion-select:checked ~ .accordion-separator { +.help-messages .accordion-select:checked~.accordion-separator { margin-right: 490px; margin-bottom: 0px; } -.help-messages .accordion-title, -.help-messages .accordion-select { +.help-messages .accordion-title, .help-messages .accordion-select { background-color: #00411c; color: #ffffff; width: 30px; @@ -464,11 +422,10 @@ span.toggleExtra:hover:before { margin-bottom: 15px; margin-left: 18px; } -.help-messages .accordion-select:hover ~ .accordion-title, -.help-messages .accordion-select:checked ~ .accordion-title { +.help-messages .accordion-select:hover~.accordion-title, .help-messages .accordion-select:checked~.accordion-title { background-color: #3068cc; } -.help-messages .accordion-title span { +.help-messages .accordion-title span { transform: rotate(-90deg); -o-transform: rotate(-90deg); -moz-transform: rotate(-90deg); @@ -485,24 +442,23 @@ span.toggleExtra:hover:before { width: 450px; padding: 20px; } -.help-messages .accordion-title, -.help-messages .accordion-select:checked ~ .accordion-content { +.help-messages .accordion-title, .help-messages .accordion-select:checked~.accordion-content { margin-right: 2px; margin-bottom: 2px; } /* Do not change following properties, they aren't generated automatically and are common for each slider. */ + .accordion { overflow: hidden; } -.accordion > ul { +.accordion>ul { margin: 0; padding: 0; list-style: none; width: 101%; } -.accordion > ul > li, -.accordion-title { +.accordion>ul>li, .accordion-title { position: relative; } .accordion-select { @@ -521,7 +477,6 @@ generated automatically and are common for each slider. */ width: 100%; white-space: nowrap; } - .accordion-content { position: relative; overflow: auto; @@ -533,7 +488,7 @@ generated automatically and are common for each slider. */ -webkit-transition: margin 0.3s ease 0.1s; } .accordion-content .w3-half { - width: 49%!important; + width: 49% !important; } input[type=range] { -webkit-appearance: none; @@ -565,8 +520,8 @@ input[type=range]::-webkit-slider-thumb { margin-top: -6.5px; transition: .2s ease; } -input[type=range]:hover::-webkit-slider-thumb{ - background:radial-gradient(#000 2%, #0033ff 10%, #00ff33 50%, #f0f, #fff); +input[type=range]:hover::-webkit-slider-thumb { + background: radial-gradient(#000 2%, #0033ff 10%, #00ff33 50%, #f0f, #fff); } input[type=range]:focus::-webkit-slider-runnable-track { background: #74A9D8; @@ -628,20 +583,20 @@ input[type=range]:focus::-ms-fill-upper { } input[type=color]::-webkit-color-swatch-wrapper { padding: 0px; - margin:0%; - width:100%; - height:100%; - border:none; + margin: 0%; + width: 100%; + height: 100%; + border: none; } input[type=color]::-webkit-color-swatch { outline: 3px solid #000; } @media screen and (max-width:1200px) { - .w3-container.form-group1>span{ - font-size:12px + .w3-container.form-group1>span { + font-size: 12px } .sidePanel td:first-child { - max-width:450px; + max-width: 450px; } @media screen and (max-width:800px) { .w3-container.form-group1>span { @@ -649,38 +604,47 @@ input[type=color]::-webkit-color-swatch { } } } -#sidePanel label { +#sidePanel tr { text-align: left; text-overflow: ellipsis; - vertical-align: -webkit-baseline-middle; + vertical-align: middle; overflow: hidden; } -.alt-layout #sidePanel label, -#sidePanel .colorScheme label { +#sidePanel tr:hover { + overflow: visible; +} +#sidePanel tr.uistyle:hover+tr { + opacity: .1; +} +#sidePanel .gracenote tr { + overflow: visible; +} +.alt-layout #sidePanel label, #sidePanel .colorScheme label { white-space: nowrap; } #sidePanel label:before { display: block; } -.icon-question ~ .popover .popover-title { - display:none; +.icon-question~.popover .popover-title { + display: none; background-color: #73AD21; color: #FFFFFF; font-size: 28px; - text-align:center; + text-align: center; border: 1px solid #000; } /* Popover Body */ -.icon-question ~ .popover .popover-content { + +.icon-question~.popover .popover-content { background-color: #000; color: #FFFFFF; padding: 15px; border: 2px groove #0000ff; - width:500px; - border-radius:10px; + width: 500px; + border-radius: 10px; } -.icon-question ~ .popover { - background-color:#000; +.icon-question~.popover { + background-color: #000; } .hasColorFiles td:nth-child(2) label { padding: 2px 11px; @@ -731,21 +695,21 @@ tr.w3-row.w3-col td strong { -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1); box-shadow: outset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1); -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } #sidePanel .speedo-radio label:hover { overflow: visible; } -#sidePanel .speedo-radio input:checked + label { +#sidePanel .speedo-radio input:checked+label { background-color: #83e44d; -webkit-box-shadow: none; box-shadow: none; font-weight: 800; } -#sidePanel .speedo-radio input:disabled + label { +#sidePanel .speedo-radio input:disabled+label { background: #aaa; cursor: not-allowed; } @@ -766,9 +730,9 @@ tr.w3-row.w3-col td strong { width: 33.3333%; } #sidePanel .speedo-color .speedo-radio label { - width: 14.256789999999999%; + width: 12.4789999999999%; } -#sidePanel .speedo-color .speedo-radio input:checked + label { +#sidePanel .speedo-color .speedo-radio input:checked+label { outline: 7px solid #000; outline-offset: -7px; } @@ -779,16 +743,22 @@ tr.w3-row.w3-col td strong { #sidePanel .speedo-color .speedo-radio label { padding: 5px 0px; } - +tbody.hasColorFiles tr { + max-height: 200px; + height: 100%; +} +#sidePanel tbody.hasColorFiles td .speedo-radio label { + width: 33.33333% +} .switch { position: relative; display: inline-block; width: 60px; height: 34px; } - -.switch input {display:none;} - +.switch input { + display: none; +} .slider { position: absolute; cursor: pointer; @@ -801,7 +771,6 @@ tr.w3-row.w3-col td strong { transition: .4s; border-radius: 34px; } - .slider:before { position: absolute; content: ""; @@ -814,56 +783,46 @@ tr.w3-row.w3-col td strong { transition: .4s; border-radius: 50%; } - -input:checked + .slider { +input:checked+.slider { background-color: #2196F3; } - -input:focus + .slider { +input:focus+.slider { box-shadow: 0 0 1px #2196F3; } - -input:checked + .slider:before { +input:checked+.slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(26px); } - .slider.round:before { border-radius: 50%; } .on-off.switch { width: 90px; } - .on-off .slider { background-color: #ca2222; } - -.on-off input:checked + .slider { +.on-off input:checked+.slider { background-color: #2ab934; } - -.on-off input:checked + .slider:before { +.on-off input:checked+.slider:before { -webkit-transform: translateX(55px); -ms-transform: translateX(55px); transform: translateX(55px); } -.on-off .slider:after -{ - content:'OFF'; - color: white; - display: block; - position: absolute; - transform: translate(-50%,-50%); - top: 50%; - left: 66%; - font-size: 20px; - font-family: Verdana, sans-serif; +.on-off .slider:after { + content: 'OFF'; + color: white; + display: block; + position: absolute; + transform: translate(-50%, -50%); + top: 50%; + left: 66%; + font-size: 20px; + font-family: Verdana, sans-serif; } - -.on-off input:checked + .slider:after -{ +.on-off input:checked+.slider:after { left: 44%; - content:'ON'; + content: 'ON'; } diff --git a/app/assets/css/contact.css b/app/assets/css/contact.css index 9437161..f0c760a 100644 --- a/app/assets/css/contact.css +++ b/app/assets/css/contact.css @@ -1,115 +1,107 @@ #contactform * { - box-sizing:border-box; - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - -webkit-font-smoothing:antialiased; - -moz-font-smoothing:antialiased; - -o-font-smoothing:antialiased; - font-smoothing:antialiased; - text-rendering:optimizeLegibility; + box-sizing: border-box; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + -o-font-smoothing: antialiased; + font-smoothing: antialiased; + text-rendering: optimizeLegibility; } #contactform { background: #eeeded; } #contactform .card { background: #fff; - color:#000; + color: #000; border-radius: 2px; display: block; float: left; - left:0; + left: 0; margin: 1rem; position: relative; - } .card { transition: all 0.2s ease-in-out; } .card-1 { - box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); } -.card-1:hover,card-1:focus { - box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); +.card-1:hover, card-1:focus { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); } .card:focus { - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); } div#contact-form { max-height: 635px; } - /* Contact Form Styles */ -#contactform h1 { + +#contact-form h1 { margin: 10px 0 0 0; } -#contactform h4{ +#contact-form h4 { margin: 0 0 20px 0; } +#contact-form h5 { + text-align: center; +} +#contact-form h5 a { + text-decoration: underline; + color: blue; +} #contact-form { - background-color:rgba(0,0,0,0.3); - color:#000; + background-color: rgba(0, 0, 0, 0.3); + color: #000; padding: 10px 20px 30px 20px; - border-radius:7px; - -webkit-border-radius:7px; - -moz-border-radius:7px; + border-radius: 7px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; } #contact-form label { - width:100%; + width: 100%; } -#contact-form input, -#contact-form select, -#contact-form textarea, -#contact-form label { +#contact-form input, #contact-form select, #contact-form textarea, #contact-form label { font-size: 15px; margin-bottom: 2px; font-family: Arial, san-serif; } -#contact-form input, -#contact-form select, -#contact-form textarea { - width:100%; +#contact-form input, #contact-form select, #contact-form textarea { + width: 100%; background: #fff; border: 0; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; - margin-bottom: 25px; + margin-bottom: 15px; padding: 5px; } -#contact-form input:focus, -#contact-form select:focus, -#contact-form textarea:focus { +#contact-form input:focus, #contact-form select:focus, #contact-form textarea:focus { background-color: #E5E6FF; /*outline:4px dashed #00FF00;*/ - box-shadow:2px 2px 2px .2px #666; + box-shadow: 2px 2px 2px .2px #666; } #contact-form textarea { - width:100%; + width: 100%; height: 150px; } #contact-form button[type="submit"] { - cursor:pointer; - width:100%; - border:none; - /* background:#991D57; - background-image:linear-gradient(bottom, #8C1C50 0%, #991D57 52%); - background-image:-moz-linear-gradient(bottom, #8C1C50 0%, #991D57 52%); - background-image:-webkit-linear-gradient(bottom, #8C1C50 0%, #991D57 52%);*/ - color:#FFF; - margin:0 0 5px; - padding:10px; - border-radius:5px; + cursor: pointer; + width: 100%; + border: none; + color: #FFF; + margin: 0 0 5px; + padding: 10px; + border-radius: 5px; } #contact-form button[type="submit"]:hover { - /* background-image:linear-gradient(bottom, #9C215A 0%, #A82767 52%); - background-image:-moz-linear-gradient(bottom, #9C215A 0%, #A82767 52%); - background-image:-webkit-linear-gradient(bottom, #9C215A 0%, #A82767 52%);*/ - -webkit-transition:background 0.3s ease-in-out; - -moz-transition:background 0.3s ease-in-out; - transition:background-color 0.3s ease-in-out; + -webkit-transition: background 0.3s ease-in-out; + -moz-transition: background 0.3s ease-in-out; + transition: background-color 0.3s ease-in-out; } #contact-form button[type="submit"]:active { - box-shadow:inset 0 1px 3px rgba(0,0,255,1); + box-shadow: inset 0 1px 3px rgba(0, 0, 255, 1); } input:required, textarea:required { box-shadow: none; @@ -118,22 +110,18 @@ input:required, textarea:required { -o-box-shadow: none; } #contact-form .required { - font-weight:bold; + font-weight: bold; color: #E5E6E7; } -/* Hide success/failure message -(especially since the php is missing) */ #failure, #success { color: #6EA070; - display:none; + display: none; } .realMail { - /*margin: 10px 0px 0px 15px;*/ - text-align:center; + text-align: center; } -/* Make form look nice on smaller screens */ @media only screen and (max-width: 580px) { - #contact-form{ + #contact-form { left: 3%; margin-right: 3%; width: 88%; diff --git a/app/assets/css/help.css b/app/assets/css/help.css index 593e16d..e3a7a72 100644 --- a/app/assets/css/help.css +++ b/app/assets/css/help.css @@ -2,7 +2,7 @@ div#helpDropMenu { margin-top: -16px; } .accordion.help-messages * { - box-sizing:content-box; + box-sizing: content-box; } .accordion.help-messages { -webkit-box-shadow: 0px 75px 35px -55px rgba(10, 30, 65, 0.6); @@ -24,26 +24,19 @@ button#helpDropBtn { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } -.accordion.help-messages > ul > li, -.help-messages .accordion-title, -.help-messages .accordion-content, -.help-messages .accordion-separator { +.accordion.help-messages>ul>li, .help-messages .accordion-title, .help-messages .accordion-content, .help-messages .accordion-separator { float: left; } - -.accordion.help-messages > ul > li { +.accordion.help-messages>ul>li { background-color: #1f1f1f; margin-right: -480px; margin-bottom: -0px; } - -.help-messages .accordion-select:checked ~ .accordion-separator { +.help-messages .accordion-select:checked~.accordion-separator { margin-right: 480px; margin-bottom: 0px; } - -.help-messages .accordion-title, -.help-messages .accordion-select { +.help-messages .accordion-title, .help-messages .accordion-select { background-color: #124b00; color: #ffffff; width: 30px; @@ -54,18 +47,14 @@ button#helpDropBtn { font-family: mazda; -webkit-user-select: none; } - .help-messages .accordion-title span { margin-bottom: 15px; margin-left: 20px; } - -.help-messages .accordion-select:hover ~ .accordion-title, -.help-messages .accordion-select:checked ~ .accordion-title { +.help-messages .accordion-select:hover~.accordion-title, .help-messages .accordion-select:checked~.accordion-title { background-color: #0b46b0; } - -.help-messages .accordion-title span { +.help-messages .accordion-title span { transform: rotate(-90deg); -o-transform: rotate(-90deg); -moz-transform: rotate(-90deg); @@ -76,7 +65,6 @@ button#helpDropBtn { line-height: 30px; font-family: mazda; } - .help-messages .accordion-content { background-color: #232323; color: #ffffff; @@ -85,31 +73,25 @@ button#helpDropBtn { padding: 0 20px; overflow: hidden; } - -.help-messages .accordion-title, -.help-messages .accordion-select:checked ~ .accordion-content { +.help-messages .accordion-title, .help-messages .accordion-select:checked~.accordion-content { margin-right: 2px; margin-bottom: 0px; } - /* Do not change following properties, they aren't generated automatically and are common for each slider. */ + .accordion { overflow: hidden; } - -.accordion > ul { +.accordion>ul { margin: 0; padding: 0; list-style: none; width: 101%; } - -.accordion > ul > li, -.accordion-title { +.accordion>ul>li, .accordion-title { position: relative; } - .accordion-select { cursor: pointer; position: absolute; @@ -119,7 +101,6 @@ generated automatically and are common for each slider. */ margin: 0; z-index: 1; } - .accordion-title span { display: block; position: absolute; @@ -127,12 +108,10 @@ generated automatically and are common for each slider. */ width: 100%; white-space: nowrap; } - .accordion-content { position: relative; overflow: auto; } - .accordion-separator { transition: margin 0.3s ease 0.1s; -o-transition: margin 0.3s ease 0.1s; @@ -155,40 +134,36 @@ generated automatically and are common for each slider. */ } .warnToggler { padding: 5px; - text-align:center; + text-align: center; margin-bottom: 0; } /* FAQs */ -#frequentlyaskedquestions{ + +#frequentlyaskedquestions { text-align: center; } .faqs p { margin: 0px; } -.troubleshootingToggler, -.revertToggler, -.warnToggler, -.faqToggler, -.kiToggler, -.ttToggler{ - cursor:pointer; - font-weight:600; +.troubleshootingToggler, .revertToggler, .warnToggler, .faqToggler, .kiToggler, .ttToggler { + cursor: pointer; + font-weight: 600; } .faqpanel, .faqToggler { padding: 4px; text-align: center; background-color: #444; border: solid 1px #090809; - color:#ddd; - font-size:13px; + color: #ddd; + font-size: 13px; } .faqpanel { - height:80px; - font-size:14px; - padding:10px; - color:#fff; + height: 80px; + font-size: 14px; + padding: 10px; + color: #fff; text-align: justify; - display:none; + display: none; } ol { -webkit-padding-start: 15px; @@ -216,7 +191,7 @@ ol { height: 120px; } .faqToggler:hover p { - color: #4dffd7!important; + color: #4dffd7 !important; } .faqToggler:nth-child(11) { font-size: 12px; @@ -233,8 +208,8 @@ ol { text-align: center; } .w3-bottombar[class*=Toggler].stick { - position:relative; - background:none; + position: relative; + background: none; } .accordion.help-messages .accordion-content li p { margin-bottom: 0px; @@ -243,53 +218,55 @@ ol { display: table-caption; } /* console */ + #debugDiv { max-height: 400px; margin-top: 10px; - border:4px groove #009900; + border: 4px groove #009900; overflow: auto; overflow-x: hidden; } /* settings */ + div#helpMenuTop { - top:75px; - z-index:100; - margin-top:-65px; - margin-right:10px; - padding:2px; - border-radius:8px; + top: 75px; + z-index: 100; + margin-top: -65px; + margin-right: 10px; + padding: 2px; + border-radius: 8px; } .accordion-content #aio-settings-btn { margin-right: 70px; } div#helpDrop { - right:655px; + right: 655px; } .accordion-content .w3-third { - width: 33.33333%!important; + width: 33.33333% !important; } .accordion-content .w3-third .w3-btn [class^="icon-"] { position: absolute; left: 6px; } -@media(max-width:850px){ +@media(max-width:850px) { .helphints { top: 5px; right: 5px; } - .showNav ~.ng-scope header span#openSidePanel { + .showNav~.ng-scope header span#openSidePanel { margin-top: 64px; right: -6px; } div#helpDrop { right: 600px; - top:35px; + top: 35px; } div#helpDropMenu { margin-top: 0; } #custbgOptions.w3-bordered tr { - max-height:none; + max-height: none; display: block; } .bgrotator td * { @@ -297,32 +274,35 @@ div#helpDrop { } } /* Scrollbar */ + .faqpanel::-webkit-scrollbar, .accordion-content::-webkit-scrollbar { width: 6px; } /* Scrollbar Track */ + .faqpanel:hover::-webkit-scrollbar-track, .accordion-content:hover::-webkit-scrollbar-track { - -webkit-box-shadow: inset 100px 100px 100px rgba(20,100,200,.3); + -webkit-box-shadow: inset 100px 100px 100px rgba(20, 100, 200, .3); -webkit-border-radius: 0px; border-radius: 0px; } /* Handle */ + .faqpanel:hover::-webkit-scrollbar-thumb, .accordion-content:hover::-webkit-scrollbar-thumb { -webkit-border-radius: 10px; border-radius: 10px; - background: rgba(0,0,0,.7); - -webkit-box-shadow: inset 10px 10px 16px rgba(50,225,90,.81); + background: rgba(0, 0, 0, .7); + -webkit-box-shadow: inset 10px 10px 16px rgba(50, 225, 90, .81); cursor: pointer; } .accordion-content::-webkit-scrollbar-thumb:hover { - background: rgba(250,250,250,.7); - -webkit-box-shadow: inset 10px 10px 16px rgba(150,0,190,.81); + background: rgba(250, 250, 250, .7); + -webkit-box-shadow: inset 10px 10px 16px rgba(150, 0, 190, .81); } -..faqpanel::-webkit-scrollbar-thumb:window-inactive, accordion-content::-webkit-scrollbar-thumb:window-inactive { - background: rgba(0,0,0,0.4); +.faqpanel::-webkit-scrollbar-thumb:window-inactive, accordion-content::-webkit-scrollbar-thumb:window-inactive { + background: rgba(0, 0, 0, 0.4); } .faqpanel::-webkit-scrollbar-button:single-button, .accordion-content::-webkit-scrollbar-button:single-button { - display:none; + display: none; } .accordion-content .w3-panel .w3-twothird { text-align: left; @@ -330,10 +310,9 @@ div#helpDrop { h3.featherlight-inner { font-weight: 800; } -img, -[class*=Toggler] { - -webkit-user-select: none; +img, [class*=Toggler] { + -webkit-user-select: none; } .accordion.help-messages .accordion-content .revertpanel { - overflow: hidden; + overflow: hidden; } diff --git a/app/assets/css/index.css b/app/assets/css/index.css index db94407..02e5acb 100644 --- a/app/assets/css/index.css +++ b/app/assets/css/index.css @@ -1,563 +1,540 @@ -html, -body { - padding: 0; - margin: 0; - width: 100%; - height: 100%; +html, body { + padding: 0; + margin: 0; + width: 100%; + height: 100%; } @font-face { - font-family: "mazda"; - src: url("../vendor/fonts/SF_Automaton.ttf") format("truetype"); + font-family: "mazda"; + src: url("../vendor/fonts/SF_Automaton.ttf") format("truetype"); } @font-face { - font-family: "Tipperary"; - src: url("../vendor/fonts/Tipperary.ttf") format("truetype"); - font-weight: normal; - font-style: normal; + font-family: "Tipperary"; + src: url("../vendor/fonts/Tipperary.ttf") format("truetype"); + font-weight: normal; + font-style: normal; } @font-face { - font-family: "Tipperary"; - src: url("../vendor/fonts/TipperaryBold.ttf") format("truetype"); - font-weight: bold; - font-style: normal; + font-family: "Tipperary"; + src: url("../vendor/fonts/TipperaryBold.ttf") format("truetype"); + font-weight: bold; + font-style: normal; } @font-face { - font-family: "Tipperary"; - src: url("../vendor/fonts/TipperaryBoldItalic.ttf") format("truetype"); - font-weight: bold; - font-style: italic; + font-family: "Tipperary"; + src: url("../vendor/fonts/TipperaryBoldItalic.ttf") format("truetype"); + font-weight: bold; + font-style: italic; } @font-face { - font-family: "Tipperary"; - src: url("../vendor/fonts/TipperaryItalic.ttf") format("truetype"); - font-style: italic; + font-family: "Tipperary"; + src: url("../vendor/fonts/TipperaryItalic.ttf") format("truetype"); + font-style: italic; } @font-face { - font-family: "Tipperary"; - src: url("../vendor/fonts/TipperarySemibold.ttf") format("truetype"); - font-weight: 500; + font-family: "Tipperary"; + src: url("../vendor/fonts/TipperarySemibold.ttf") format("truetype"); + font-weight: 500; } @font-face { - font-family: "Tipperary"; - src: url("../vendor/fonts/TipperarySemiboldItalic.ttf") format("truetype"); - font-weight: 500; - font-style: italic; + font-family: "Tipperary"; + src: url("../vendor/fonts/TipperarySemiboldItalic.ttf") format("truetype"); + font-weight: 500; + font-style: italic; } @font-face { - font-family: "stencil"; - src: url("../vendor/fonts/Ignis.ttf") format("truetype"); + font-family: "stencil"; + src: url("../vendor/fonts/Ignis.ttf") format("truetype"); } /* Fix Flickering */ -[ng:cloak], -[ng-cloak], -[data-ng-cloak], -[x-ng-cloak], -.ng-cloak, -.x-ng-cloak { + +[ng:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; } body * { - font-family: "Tipperary",Verdana,sans-serif; + font-family: "Tipperary", Verdana, sans-serif; } div#backgroundPreviewModal * { - font-family: "Tipperary",Verdana,sans-serif; + font-family: "Tipperary", Verdana, sans-serif; } h1 small:not([class*="icon"]) { - color: #adadad; - transition: 3s ease-out .3s; - font-weight: bold; + color: #adadad; + transition: 3s ease-out .3s; + font-weight: bold; } h1 small i { - font-size: 70%; - font-style: normal; + font-size: 70%; + font-style: normal; } ::selection { - color: #00ff2d; - background: #9664e4; + color: #00ff2d; + background: #9664e4; } code { - color: #A8FF60; - background-color: #5f5e5e; + color: #A8FF60; + background-color: #5f5e5e; } -input[type=file]::selection, -input[type=checkbox]::selection, -input[type=radio]::selection, -.accordion-content::selection { - background:transparent; +input[type=file]::selection, input[type=checkbox]::selection, input[type=radio]::selection, .accordion-content::selection { + background: transparent; } i[class*="icon-"] { - padding-right: 10px; - margin-left: -10px; + padding-right: 10px; + margin-left: -10px; } /* for locking top menu bar */ + .hideNav li.menu-icons { - font-size: 20px; - cursor: pointer; - float: right; + font-size: 20px; + cursor: pointer; + float: right; } .w3-top.hideNav.showNav { - position: fixed; - top:0; - border-bottom: 1px solid #000; - top: 0; - box-shadow: 0px 2px 5px 2.2px rgba(100, 100, 100, 0.30); - zoom: 1; -} -header, -footer, -#header, -.w3-sidenav, -.w3-navbar { - zoom: 1; + position: fixed; + top: 0; + border-bottom: 1px solid #000; + top: 0; + box-shadow: 0px 2px 5px 2.2px rgba(100, 100, 100, 0.30); + zoom: 1; +} +header, footer, #header, .w3-sidenav, .w3-navbar { + zoom: 1; } .w3-navbar * { - font-family: Verdana,sans-serif; + font-family: Verdana, sans-serif; } .showNav .w3-navbar { - width:100%; -} -div#header, -#notices, -nav#mySidenav, -header span#openNav, -header span#openSidePanel, -.w3-container.mainContainer { - transition: .8s ease; -} -.showNav ~.ng-scope .w3-container.mainContainer .twkfltr { - top: 50px; -} -.showNav ~.ng-scope div#header, -.showNav ~.ng-scope #notices, -.showNav ~.ng-scope nav#mySidenav, -.showNav ~.ng-scope header span#openNav, -.showNav ~.ng-scope header span#openSidePanel, -.showNav ~.ng-scope .w3-container.mainContainer { - margin-top: 30px; -} -.showNav ~ nav#mySidenav { - top: 25px; + width: 100%; +} +div#header, #notices, nav#mySidenav, header span#openNav, header span#openSidePanel, .w3-container.mainContainer { + transition: .8s ease; +} +.showNav~.ng-scope .w3-container.mainContainer .twkfltr { + top: 50px; +} +.showNav~.ng-scope div#header, .showNav~.ng-scope #notices, .showNav~.ng-scope nav#mySidenav, .showNav~.ng-scope header span#openNav, .showNav~.ng-scope header span#openSidePanel, .showNav~.ng-scope .w3-container.mainContainer { + margin-top: 30px; +} +.showNav~nav#mySidenav { + top: 25px; } .hideNav span.icon-lock:before { - /*font-size: 26px;*/ + /*font-size: 26px;*/ } .showNav span.icon-lock:before { - content: "\ebd3"; + content: "\ebd3"; } .showNav .menu-icons:hover span.icon-lock:before { - content: "\f09c"; + content: "\f09c"; } .w3-navbar>*:hover { - background-color: #ccc; - color: #000; + background-color: #ccc; + color: #000; } .w3-navbar li:first-child a { - padding: 6px 0 3px 2px; + padding: 6px 0 3px 2px; } /* Safety levels */ + .sfty { - color:#fff; - font-weight:800; - padding:5px; - float:right; - margin-top: 35px; - margin-right: -20px; - margin-left: 20px; + color: #fff; + font-weight: 800; + padding: 5px; + float: right; + margin-top: 35px; + margin-right: -20px; + margin-left: 20px; } .hlpsfty { - color:#fff; - font-weight:800; - padding:2px; + color: #fff; + font-weight: 800; + padding: 2px; } .sfty.safe, .twk-safe { - background-color: green; - display: none; + background-color: green; + display: none; } -.sfty.warning, .twk-warn{ - background-color: yellow; - line-height: normal; - height: 22px; - color:#000; +.sfty.warning, .twk-warn { + background-color: yellow; + line-height: normal; + height: 22px; + color: #000; } .sfty.development, .twk-development { - background-color: red; + background-color: red; } .w3-tag span.sfty { - position: absolute; - bottom: 2px; - right: 22px; + position: absolute; + bottom: 2px; + right: 22px; } td .inline-safety { - opacity: 0; - position: absolute; - right: 5px; - top: 3px; - margin: 0; - transition: opacity .5s ease .5s; + opacity: 0; + position: absolute; + right: 5px; + top: 3px; + margin: 0; + transition: opacity .5s ease .5s; } tr:hover td .inline-safety { - opacity: 1; - transition: opacity 4s linear 3s; - cursor: default; - -webkit-user-select: none; + opacity: 1; + transition: opacity 4s linear 3s; + cursor: default; + -webkit-user-select: none; } .w3-container.w3-row.w3-section { - /*margin-top: 0!important;*/ - margin-bottom: 50px!important; + /*margin-top: 0!important;*/ + margin-bottom: 50px !important; } /* notices */ + #notices { - background: #57f7ff; - position: fixed; - max-width: 300px; - right: 0; - top: 85px; - z-index: 9999; - border-bottom-left-radius: 10px; - border-top-left-radius: 10px; + background: #57f7ff; + position: fixed; + max-width: 300px; + right: 0; + top: 85px; + z-index: 9999; + border-bottom-left-radius: 10px; + border-top-left-radius: 10px; } .notice { - padding: 10px; - font-weight: 600; - color:#000; - background-color: #57f7ff; - border-bottom: 2px solid #4aad00; - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; + padding: 10px; + font-weight: 600; + color: #000; + background-color: #57f7ff; + border-bottom: 2px solid #4aad00; + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; } .notice:first-child { - border-top-left-radius: 10px; + border-top-left-radius: 10px; } .notice:last-child { - border: none; - border-bottom-left-radius: 10px; + border: none; + border-bottom-left-radius: 10px; } span.w3-closebtn { - line-height: normal; - z-index: 9; + line-height: normal; + z-index: 9; } -.hide{ - display:none; +.hide { + display: none; } body { - font-family: "mazda", -apple-system, "Helvetica Neue", Helvetica, sans-serif; - margin-bottom: 30px; + font-family: "mazda", -apple-system, "Helvetica Neue", Helvetica, sans-serif; + margin-bottom: 30px; } .main { - padding: 10px; - margin: 5px; + padding: 10px; + margin: 5px; } -.hideNavHover ~ .hideNav { - top:-40px; - transition:.3s ease-in-out .7s; +.hideNavHover~.hideNav { + top: -40px; + transition: .3s ease-in-out .7s; } -.hideNavHover:hover ~ .hideNav, .hideNav:hover { - top:0px!important;transition-delay:0s; +.hideNavHover:hover~.hideNav, .hideNav:hover { + top: 0px !important; + transition-delay: 0s; } .help-messages *::selection { - background: #e91e63; - color: #48ffdf; + background: #e91e63; + color: #48ffdf; } nav#mySidenav { - z-index: 13; - top: 0; + z-index: 13; + top: 0; } #header { - zoom: 1; - position:fixed; - top:0; - height:80px; - text-align:center; - width:100%; - z-index: 99500; - -webkit-box-shadow: 0px 3px 5px rgba(100, 100, 100, 0.49); - -moz-box-shadow: 0px 3px 5px rgba(100, 100, 100, 0.49); - box-shadow: 0px 3px 5px 1px rgba(100, 100, 100, 0.70); + zoom: 1; + position: fixed; + top: 0; + height: 80px; + text-align: center; + width: 100%; + z-index: 99500; + -webkit-box-shadow: 0px 3px 5px rgba(100, 100, 100, 0.49); + -moz-box-shadow: 0px 3px 5px rgba(100, 100, 100, 0.49); + box-shadow: 0px 3px 5px 1px rgba(100, 100, 100, 0.70); } .w3-opennav { - z-index:99998; + z-index: 99998; } header { - /*background-color: #2f3241; + /*background-color: #2f3241; border-bottom: 1px solid #1a1b23;*/ - color: #9feaf9; - padding: 10px 30px; - text-align: center; - font-family: "mazda"; - top: 0; - width: 100%; - z-index: 12; - /*position: fixed;*/ + color: #9feaf9; + padding: 10px 30px; + text-align: center; + font-family: "mazda"; + top: 0; + width: 100%; + z-index: 12; + /*position: fixed;*/ } - header h1 { - font-size: 45px; - font-weight: 100; - margin: 0; - padding: 0; + font-size: 45px; + font-weight: 100; + margin: 0; + padding: 0; } header h1 button { - font-size: 17px; + font-size: 17px; } .helphints { - right: 60px; - position: absolute; - top: 20px; - z-index: 99; + right: 60px; + position: absolute; + top: 20px; + z-index: 99; } .helpdrop { - font-family: arial; - letter-spacing: normal; - font-size: 16px; - padding: 6px!important; - text-align: left; - right: 28px; - margin-top: 5px!important; - width:450px; - max-width:50%; -} -div#fullSystemRestore ~ #helpDrop { - top: 300px; - z-index: 55555; - margin: auto; - left: 25%; -} -#fullSystemRestore ~ #helpDrop #helpDropMenu { - margin-bottom:100px; + font-family: arial; + letter-spacing: normal; + font-size: 16px; + padding: 6px !important; + text-align: left; + right: 28px; + margin-top: 5px !important; + width: 450px; + max-width: 50%; +} +div#fullSystemRestore~#helpDrop { + top: 300px; + z-index: 55555; + margin: auto; + left: 25%; +} +#fullSystemRestore~#helpDrop #helpDropMenu { + margin-bottom: 100px; } .helpmsg { - padding: 5px; + padding: 5px; } .helpmsg img { - max-width:100%; -} -input[type=checkbox]#bgrotator, -.accordion-content input[type=checkbox] { - visibility: visible; + max-width: 100%; } -img.loader { - +input[type=checkbox]#bgrotator, .accordion-content input[type=checkbox] { + visibility: visible; } +img.loader {} #bg-img { - float: left; - width: 100%; + float: left; + width: 100%; } .w3-tooltip .w3-text { - display: none; - max-width: 80%; - width: 800px; + display: none; + max-width: 80%; + width: 800px; } footer { - bottom: 0; - text-align: center; - width: 100%; - height: 40px; - padding: 5px 0; - border-top: 1px solid #e0e5e6; - background: #f6f8f8; - position: fixed; - z-index: 99999; - color:#000; + bottom: 0; + text-align: center; + width: 100%; + height: 40px; + padding: 5px 0; + border-top: 1px solid #e0e5e6; + background: #f6f8f8; + position: fixed; + z-index: 99999; + color: #000; } footer [class*="icon-"] { - margin-right: 5px; + margin-right: 5px; } -span.test-panel-toggle, -.footer-donate { - margin-top: 5px; - position: fixed; - left: 10px; - z-index: 99999; +span.test-panel-toggle, .footer-donate { + margin-top: 5px; + position: fixed; + left: 10px; + z-index: 99999; } .copyright { - position: fixed; - right: 0; - left: 0; - margin: auto; + position: fixed; + right: 0; + left: 0; + margin: auto; } .copyleft { - font-weight:500 + font-weight: 500 } .copyleft .symbol { - display:inline-block; - transform: rotate(180deg); - font-size: 21px; + display: inline-block; + transform: rotate(180deg); + font-size: 21px; } footer .contact-form { - margin-top: 3px; - right: 10px; - position: fixed; + margin-top: 3px; + right: 10px; + position: fixed; } footer a { - cursor: pointer; + cursor: pointer; } footer .footer-secret a { - color: transparent; - left: 100px; - text-align: left; - position: fixed; - cursor: help; - z-index: 1000; + color: transparent; + left: 100px; + text-align: left; + position: fixed; + cursor: help; + z-index: 1000; } #secretMenu { - position: fixed; - bottom: 100px; - left: 20px; - height: 250px; - width: 250px; - border: 4px double #fff; - outline: 6px double #000; - background-color: #444; - color: #eee; - text-align: center; - padding: 20px; - display: table; + position: fixed; + bottom: 100px; + left: 20px; + height: 250px; + width: 250px; + border: 4px double #fff; + outline: 6px double #000; + background-color: #444; + color: #eee; + text-align: center; + padding: 20px; + display: table; } #secretMenu button { - margin: 3px; + margin: 3px; } .w3-bordered tr { - border-right: 1px solid #ddd; + border-right: 1px solid #ddd; } section.options { - margin: 0px; - width: 100%; - max-width: 100%; + margin: 0px; + width: 100%; + max-width: 100%; } .w3-tooltip .w3-text.ssh-tooltip { - white-space: normal; - width:800px; - margin-bottom:-100px; + white-space: normal; + width: 800px; + margin-bottom: -100px; } .backupLabel .w3-tag { - margin-bottom: -200px; - width: 800px; - font-size: 30px; + margin-bottom: -200px; + width: 800px; + font-size: 30px; } .form-group1 { - white-space: nowrap; - /*text-overflow: ellipsis;*/ - overflow-x: hidden; - /*z-index: 3;*/ + white-space: nowrap; + /*text-overflow: ellipsis;*/ + overflow-x: hidden; + /*z-index: 3;*/ } .form-group1:hover { - /*text-overflow: clip;*/ - overflow: visible; - z-index: 4; + /*text-overflow: clip;*/ + overflow: visible; + z-index: 4; } .form-group1 [class*="abel"]:hover { - background-color: #fefefe; - border-right: 1px solid rgba(0,0,0,.4); - border-bottom: 1px solid rgba(100,100,100,.2); - border-top: 1px solid rgba(100,100,100,.2); - border-left: 1px solid rgba(200,200,200,.1); - background-color: rgba(140, 140, 140, 0.12); - cursor: default; + background-color: #fefefe; + border-right: 1px solid rgba(0, 0, 0, .4); + border-bottom: 1px solid rgba(100, 100, 100, .2); + border-top: 1px solid rgba(100, 100, 100, .2); + border-left: 1px solid rgba(200, 200, 200, .1); + background-color: rgba(140, 140, 140, 0.12); + cursor: default; } .menuCheck~[class*="abel"] { - border: 1px solid transparent; - padding:10px 5px 8px 2px; - border-radius:8px; + border: 1px solid transparent; + padding: 10px 5px 8px 2px; + border-radius: 8px; } .bg-tooltip { - white-space: normal; + white-space: normal; } .popover { - cursor: default; + cursor: default; } .colorLabel span.w3-text.w3-tag { - margin: 100px 50px; - right: 0; - left: 0; + margin: 100px 50px; + right: 0; + left: 0; } #sidePanel .w3-tooltip.ng-binding .w3-text { - font-size: 14px; - letter-spacing: normal; - font-weight: normal; - line-height: normal; + font-size: 14px; + letter-spacing: normal; + font-weight: normal; + line-height: normal; } .form-group, .form-actions { - margin: 10px; + margin: 10px; } .form-actions { - margin-bottom: 100px; + margin-bottom: 100px; } .helpLabel { - margin: 20px; - line-height: 4; + margin: 20px; + line-height: 4; } label { - font-size: 12px; - cursor:pointer; + font-size: 12px; + cursor: pointer; } input[type=checkbox] { - cursor: pointer; + cursor: pointer; } .w3-table td, #options td:first-child { - padding: 0px 1px 5px 5px; - min-width: 80px; -/* overflow: hidden;*/ + padding: 0px 1px 5px 5px; + min-width: 80px; + /* overflow: hidden;*/ } .w3-table th { - text-align: center!important; - margin: 0px!important; + text-align: center !important; + margin: 0px !important; } #options tr:last-child { - /*width: 100%;*/ + /*width: 100%;*/ } .w3-text { - position: fixed; - left: 0; - z-index: 10; - border: 5px outset #c3c3c3; - padding: 10px 20px!important; - text-align: justify!important; -} -.w3-tag img{ - float: right; - width: 450px; - max-width: 50%; - margin: 0px 0px 0px 20px; -} -table{ - margin-bottom:0px; + position: fixed; + left: 0; + z-index: 10; + border: 5px outset #c3c3c3; + padding: 10px 20px !important; + text-align: justify !important; +} +.w3-tag img { + float: right; + width: 450px; + max-width: 50%; + margin: 0px 0px 0px 20px; +} +table { + margin-bottom: 0px; } .w3-table td:first-child { - padding-left:10px; - min-width:75px; - vertical-align: top; + padding-left: 10px; + min-width: 75px; + vertical-align: top; } .uninstallMessage { - color: red; + color: red; } .w3-bordered tr { - max-height: 40px; - border: 1px solid #ddd; + max-height: 40px; + border: 1px solid #ddd; } #sidePanel { - border: 1px solid #ddd; - padding: 5px; - overflow: visible; + border: 1px solid #ddd; + padding: 5px; + overflow: visible; } ul ul { - margin: 0px 0px 10px 0px; + margin: 0px 0px 10px 0px; } .sidePanel { - float: left; - width:100%; - margin-top:10px; + float: left; + width: 100%; + margin-top: 10px; } .sidePanel ul { - padding-left: 6px; - margin-top:10px; + padding-left: 6px; + margin-top: 10px; } .sidePanel li { - margin-bottom: 5px; + margin-bottom: 5px; } .sidePanel h3 { - border-bottom: 3px solid #000; - padding-left: 30px; - margin-top: -20px; + border-bottom: 3px solid #000; + padding-left: 30px; + margin-top: -20px; } .sidePanel ul>li { list-style: none; @@ -566,197 +543,192 @@ ul ul { break-inside: avoid; } .sidePanel li div.w3-tooltip { - cursor: help; - margin: 10px 0 4px 15px; - font-weight: 700; - font-size: 15px; + cursor: help; + margin: 10px 0 4px 15px; + font-weight: 700; + font-size: 15px; } tr#custThemeHelp { - height: auto; + height: auto; } #custbgOptions td { - padding: 5px; -} -.uninstall-check input[disabled]~label:after,.install-check input[disabled]~label:after { - background: none; - content: 'x'; - font-size: 25px; - padding: 0; - margin: 0px 0px 0px 0px; - line-height: .4; - color: inherit; - opacity: 0.1; + padding: 5px; +} +.uninstall-check input[disabled]~label:after, .install-check input[disabled]~label:after { + background: none; + content: 'x'; + font-size: 25px; + padding: 0; + margin: 0px 0px 0px 0px; + line-height: .4; + color: inherit; + opacity: 0.1; } input[disabled]~label:hover:after { - opacity:.7; - box-shadow: none; + opacity: .7; + box-shadow: none; } input[disabled]~label:active:after { - opacity:1; - cursor:not-allowed; + opacity: 1; + cursor: not-allowed; } div#bgPickTitle { - position: relative; - top:15px; + position: relative; + top: 15px; } .useColorBG.w3-right.w3-half { - width: 40%; - text-align: center; - font-size: 10px; + width: 40%; + text-align: center; + font-size: 10px; } #img2use { - width: 810px; - max-height: 490px; - padding: 2px; - border: 3px dotted #dd0000; - margin: 10px auto; - max-width: 100%; -} -#bgimg > img { - width: 100%; + width: 810px; + max-height: 490px; + padding: 2px; + border: 3px dotted #dd0000; + margin: 10px auto; + max-width: 100%; +} +#bgimg>img { + width: 100%; } .imgframe { - overflow: hidden; - max-height: 480px; + overflow: hidden; + max-height: 480px; } .imgframe img { - position: relative; + position: relative; } div#selected-file { - text-align: center; + text-align: center; } div#blnk-albm-img { - width: 146px; - margin: auto; + width: 146px; + margin: auto; } div#blnk-albm-img img { - max-width: 100%; + max-width: 100%; } -footer a, -footer a:hover -footer a:visited -footer a:link -footer a:focus { - color: #000; - text-decoration: none; +footer a, footer a:hover footer a:visited footer a:link footer a:focus { + color: #000; + text-decoration: none; } nav#mySidenav span[class^="icon-"] { - margin-right: 10px; - font-size: 22px; + margin-right: 10px; + font-size: 22px; } .sidePanel { - width: 39.5%; - margin-left: 2%; - font-size: 0.8em; - min-height: 480px; - margin-top:0; + width: 39.5%; + margin-left: 2%; + font-size: 0.8em; + min-height: 480px; + margin-top: 0; } .sidePanel .w3-btn { - text-overflow:ellipsis; + text-overflow: ellipsis; } .sidePanel.adv { - min-height: 480px; + min-height: 480px; } .sidePanel li div table { - cursor: default; + cursor: default; margin-bottom: 15px; } .colorScheme, .customBackground { - list-style: none; -} -.customBackground div, .colorScheme div:first-child { + list-style: none; } +.customBackground div, .colorScheme div:first-child {} #imgNavButtons button.w3-btn.w3-card-8.w3-grey.w3-hover-teal { - opacity: .65; - transition:.3s ease-in .3s; + opacity: .65; + transition: .3s ease-in .3s; } #imgNavButtons button.w3-btn.w3-card-8.w3-grey.w3-hover-teal:hover { - opacity: 1; + opacity: 1; } #date, #clock, #ctxt-ico, #ctxt-title, #ctxt-notif { - position: absolute; - top: 5px; - z-index: 9; - color: #fff; - font-family: arial; - font-size: 40px; - cursor: default; + position: absolute; + top: 5px; + z-index: 9; + color: #fff; + font-family: arial; + font-size: 40px; + cursor: default; } div#clock { - font-size: 35px; - top: 15px; - right: 35px; + font-size: 35px; + top: 15px; + right: 35px; } div#date { - right: 35px; - top: 6px; - font-size: 18px; + right: 35px; + top: 6px; + font-size: 18px; } #ctxt-ico { - left: 45px; + left: 45px; } #ctxt-title, #ctxt-notif { - left: 100px; - cursor: pointer; + left: 100px; + cursor: pointer; } div#options { - width: 58%; - float: left; + width: 58%; + float: left; } #extraOptions { - outline:2px double #000; + outline: 2px double #000; } #options.open { - width:100%; + width: 100%; } td.extraRange.w3-third { - width: 40%; + width: 40%; } td.extraRange.w3-twothird { - width: 58%; - white-space: nowrap; - display:flex; + width: 58%; + white-space: nowrap; + display: flex; } .form-group1 .w3-tag { - font-size: 20px; - margin: 40px; + font-size: 20px; + margin: 40px; } .featherlight .featherlight-content { - color:#000; + color: #000; } button.print-hide.featherlight-inner img { - max-width: 25px; + max-width: 25px; } .aio-comp-log .featherlight-inner ul li { - margin-bottom: 1.1px; - list-style: square inside; - border-bottom: .2px dashed rgba(0, 0, 0, 0.21); + margin-bottom: 1.1px; + list-style: square inside; + border-bottom: .2px dashed rgba(0, 0, 0, 0.21); } -h1.featherlight-inner,h5.featherlight-inner { - /*font-size: 30px;*/ - text-align:center; +h1.featherlight-inner, h5.featherlight-inner { + /*font-size: 30px;*/ + text-align: center; } h1.featherlight-inner { - white-space: nowrap; + white-space: nowrap; } img.featherlight-image.featherlight-inner { - /*9 outline: 50px solid #000; + /*9 outline: 50px solid #000; border-bottom: 50px solid #000;*/ } button.print-hide.featherlight-inner { - position: absolute; - top: 20px; - right: 0; - padding: 0px; - width: 40px; + position: absolute; + top: 20px; + right: 0; + padding: 0px; + width: 40px; } button { - border-radius: 4px; - border: 1px solid #bbb; + border-radius: 4px; + border: 1px solid #bbb; } .useColorBG { - margin-top: -30px; - margin-bottom: 10px; + margin-top: -30px; + margin-bottom: 10px; } /*table#colorOptions td:first-child { min-width: 0px; @@ -764,577 +736,593 @@ min-width: 0px; table#colorOptions tbody tr:first-child { width: 100%; }*/ + #custbgOptions tbody { - width: 100%; - display: table; + width: 100%; + display: table; } .introjs-tooltipbuttons { - text-align:center + text-align: center } .introjs-tooltip { - max-width: 450px; - width: 450px; + max-width: 450px; + width: 450px; } -.useColorBG input[type=checkbox], -.bootbox-form .checkbox input[type=checkbox], -.bootbox-form .checkbox input[type=radio] { - visibility: visible; +.useColorBG input[type=checkbox], .bootbox-form .checkbox input[type=checkbox], .bootbox-form .checkbox input[type=radio] { + visibility: visible; } textarea.bootbox-input-textarea.form-control { - min-height: 105px; + min-height: 105px; } .introjs-hint { - z-index:99999; - top: 550px!important; + z-index: 99999; + top: 550px !important; } #progBar { - white-space: nowrap; + white-space: nowrap; } .loadingBG { - margin-top: 200px; - z-index: 1049; + margin-top: 200px; + z-index: 1049; } .featherlight.loadingBG .featherlight-content:before { - content: 'Your New Infotainment Background Will Be:'; - font-size: 20px; - text-align: center; - right: 0; - left: 0; - position: fixed; - margin-top: -30px; + content: 'Your New Infotainment Background Will Be:'; + font-size: 20px; + text-align: center; + right: 0; + left: 0; + position: fixed; + margin-top: -30px; } .featherlight.loadingBG .featherlight-content { - width: 700px; - height: 420px; - overflow: hidden; + width: 700px; + height: 420px; + overflow: hidden; } .featherlight.loadingBG .featherlight-content img { - border-right: 10px solid #fff; + border-right: 10px solid #fff; } div#helpMenuTop input[type=checkbox] { - visibility:visible; - margin-left:10px; + visibility: visible; + margin-left: 10px; } div#helpMenuTop, div#helpMenuTop .w3-third { - width: 33%!important; + width: 33% !important; } [class*="-alt"] { - font-size: 20px; + font-size: 20px; } .confirmCompile .modal-dialog { - margin-top: 135px!important; + margin-top: 135px !important; } .modal-dialog label.delCopyLabel { - width: 40%; - font-size: 18px; - outline: 4px double #000; - padding: 0px 4px 4px 4px; - margin: 5px 0px 8px 0px; - right: 10px; + width: 40%; + font-size: 18px; + outline: 4px double #000; + padding: 0px 4px 4px 4px; + margin: 5px 0px 8px 0px; + right: 10px; } .modal-dialog .delCopyLabel input.w3-check[type=checkbox] { - visibility: visible; - margin: 0 15px 0 0px; + visibility: visible; + margin: 0 15px 0 0px; } .modal-dialog label.delCopyMultiLabel { - outline: 4px double #000; - padding: 0px 3px 3px 16px; - margin: 8px 3px 8px 9px; - width: 40%; - font-size: 18px; + outline: 4px double #000; + padding: 0px 3px 3px 16px; + margin: 8px 3px 8px 9px; + width: 40%; + font-size: 18px; } .modal-dialog .delCopyMultiLabel input.w3-check[type=checkbox] { - visibility: visible; - margin-right: 10px; + visibility: visible; + margin-right: 10px; } .finishedMessage .modal-dialog { - max-width: 450px; -} -.tooltip > .tooltip-inner { - max-width:100%!important; - padding: 5px; - font-size: 12px; - color: #FFFFFF; - background-color: #000; - max-width: 100%; - width: 400px; -} -.mainContainer label + .tooltip > .tooltip-inner { - border: 1px solid green!important; - width:500px!important; -} -.menu-icons + .tooltip > .tooltip-inner { - border: 1px solid blue!important; - width:100px!important; -} -#compileButton + .tooltip > .tooltip-inner { - background-color: #444; - color: #ddd; - border: 2px solid #00ff00!important; - width:200px!important; -} -label.w3-validate + .tooltip > .tooltip-inner { - border: 1px solid #ff589c!important; - width:550px!important; - text-align:left; -} -.menu-icons.menulock + .tooltip > .tooltip-inner { - width:150px!important; -} -.tooltip > .tooltip-inner img { - max-width:100%; -} -#label-19 + .tooltip > .tooltip-inner, #label-25 + .tooltip >.tooltip-inner { - width: 750px!important; - padding: 10px; -} -#label-19 + .tooltip > .tooltip-inner img, #label-25 + .tooltip >.tooltip-inner img { - width:50%; - float:right; -} -#statusbarTweaks ~.tooltip > .tooltip-inner, -#uistyleTweaks ~.tooltip > .tooltip-inner, -#colors ~.tooltip > .tooltip-inner { - text-align: left; - padding: 20px; - max-width:100%; -} -#colors ~.tooltip > .tooltip-inner { - width: 800px!important; + max-width: 450px; +} +.tooltip>.tooltip-inner { + max-width: 100% !important; + padding: 5px; + font-size: 12px; + color: #FFFFFF; + background-color: #000; + max-width: 100%; + width: 400px; +} +.mainContainer label+.tooltip>.tooltip-inner { + border: 1px solid green !important; + width: 500px !important; +} +.menu-icons+.tooltip>.tooltip-inner { + border: 1px solid blue !important; + width: 100px !important; +} +#compileButton+.tooltip>.tooltip-inner { + background-color: #444; + color: #ddd; + border: 2px solid #00ff00 !important; + width: 200px !important; +} +label.w3-validate+.tooltip>.tooltip-inner { + border: 1px solid #ff589c !important; + width: 550px !important; + text-align: left; +} +.menu-icons.menulock+.tooltip>.tooltip-inner { + width: 150px !important; +} +.tooltip>.tooltip-inner img { + max-width: 100%; +} +#label-19+.tooltip>.tooltip-inner, #label-25+.tooltip>.tooltip-inner { + width: 750px !important; + padding: 10px; +} +#label-19+.tooltip>.tooltip-inner img, #label-25+.tooltip>.tooltip-inner img { + width: 50%; + float: right; +} +#statusbarTweaks~.tooltip>.tooltip-inner, #uistyleTweaks~.tooltip>.tooltip-inner, #colors~.tooltip>.tooltip-inner { + text-align: left; + padding: 20px; + max-width: 100%; +} +#colors~.tooltip>.tooltip-inner { + width: 800px !important; } /* DARK MODE */ + .w3-black .w3-dropdown-content a { - color: #000; + color: #000; } .w3-black #helpMenuTop a { - color: #fff; + color: #fff; } .w3-black h1 small:not([class*="icon"]) { - color: #ccc; + color: #ccc; } .w3-black footer { - background-color: darkgray; - border-top-color: #5f5f5f; + background-color: darkgray; + border-top-color: #5f5f5f; } .w3-black .w3-teal { - background: #ff0000!important; + background: #ff0000 !important; } .w3-black .w3-cyan { - background-color: #004a86!important; - color:#fff!important; + background-color: #004a86 !important; + color: #fff !important; } .w3-black footer, .w3-black .showNav .w3-navbar, .w3-black .w3-navbar, .w3-black .popover * { - background-color: #2f2f2f!important; - color: #fff!important; - border-top-color: #5f5f5f; + background-color: #2f2f2f !important; + color: #fff !important; + border-top-color: #5f5f5f; } body.w3-black { - background-color: #111!important; + background-color: #111 !important; } -.w3-black table{ - background-color:#000!important; +.w3-black table { + background-color: #000 !important; } .w3-black .well { - background-color: #2b2b2b; + background-color: #2b2b2b; } .w3-black button { - background-color: #222; - color: #eee; + background-color: #222; + color: #eee; } .w3-black a { - color: #fff; + color: #fff; } -.w3-black .w3-dropdown-content .accordion.help-messages a, -.w3-black .accordion-content .w3-panel .w3-btn { - color: #fff; +.w3-black .w3-dropdown-content .accordion.help-messages a, .w3-black .accordion-content .w3-panel .w3-btn { + color: #fff; } .w3-black label.w3-label.checkAutorun { - color: #fff; - border-color: #fff; + color: #fff; + border-color: #fff; } .tweak-inst-title { - font-family: "stencil"; + font-family: "stencil"; } -.bootbox a:hover, -.help-messages a:hover { - box-shadow: 0 5px 15px -8px #000000; +.bootbox a:hover, .help-messages a:hover { + box-shadow: 0 5px 15px -8px #000000; } -.bootbox a:focus, -.help-messages a:focus, -.bootbox a:active, -.help-messages a:active { - box-shadow: 0px 15px 16px -7px #000044; +.bootbox a:focus, .help-messages a:focus, .bootbox a:active, .help-messages a:active { + box-shadow: 0px 15px 16px -7px #000044; } .bootbox div#tweak-install-list li { - width: 50%; - display: inline-block; - white-space: pre; - padding: 2px; - font-weight: 600; - transition: 2s ease-in .5s; - cursor: default; - font-family: "stencil"; - font-size: 14px; - overflow-x: hidden; - text-overflow: ellipsis; - line-height: 14px; + width: 50%; + display: inline-block; + white-space: pre; + padding: 2px; + font-weight: 600; + transition: 2s ease-in .5s; + cursor: default; + font-family: "stencil"; + font-size: 14px; + overflow-x: hidden; + text-overflow: ellipsis; + line-height: 14px; } .bootbox div#tweak-install-list:hover li { - text-shadow: 0 0 0 #fff; + text-shadow: 0 0 0 #fff; } .bootbox div#tweak-install-list::selection { - text-shadow: none; - color: #ff4fc8; - background: #000; + text-shadow: none; + color: #ff4fc8; + background: #000; } .bootbox div#tweak-install-list ul { - -webkit-padding-start: 0; + -webkit-padding-start: 0; } .modal-dialog { - margin: 150px auto; - z-index: 1052; + margin: 150px auto; + z-index: 1052; } -.modal-content,.bootbox-body { - color:#000; - user-select: none; - cursor: default; +.modal-content, .bootbox-body { + color: #000; + user-select: none; + cursor: default; } .bootbox-confirm .modal-footer { - text-align: right; + text-align: right; } .modal-footer button { - font-size: 18px; + font-size: 18px; } .bootbox.copytoUSB1 .bootbox-body { - width: 360px; + width: 360px; } -.copytoUSB1 .modal-footer button, -.bootbox-confirm .modal-footer button { - min-width: 35%; +.copytoUSB1 .modal-footer button, .bootbox-confirm .modal-footer button { + min-width: 35%; } .copytoUSBMulti .modal-footer button { - min-width: 25%; + min-width: 25%; } -.bootbox-confirm .modal-footer button.btn.btn-danger, -button.btn.btn-danger { - min-width: 33%; +.bootbox-confirm .modal-footer button.btn.btn-danger, button.btn.btn-danger { + min-width: 33%; } -.bootbox-confirm .modal-footer button.btn.btn-success, -button.btn.btn-success { - width: 66%; +.bootbox-confirm .modal-footer button.btn.btn-success, button.btn.btn-success { + width: 66%; } -.compFinishBox, -.confirmAutorunCompile .modal-footer, -.bootbox-alert .modal-footer, -.modal-dialog.modal-sm, -.confirmCompile .modal-title, -.modal-sm .modal-footer { - text-align: center; +.compFinishBox, .confirmAutorunCompile .modal-footer, .bootbox-alert .modal-footer, .modal-dialog.modal-sm, .confirmCompile .modal-title, .modal-sm .modal-footer { + text-align: center; } -.compFinishBox .modal-footer button, -.bootbox-alert .modal-footer button[data-bb-handler="ok"] { - width: 100%; +.compFinishBox .modal-footer button, .bootbox-alert .modal-footer button[data-bb-handler="ok"] { + width: 100%; } .modal-dialog.modal-sm { - font-weight: 900; + font-weight: 900; } -.bootbox-body .w3-center h3 a, -.bootbox-body .w3-center h3 button { - letter-spacing:2.4px; - font-weight:600; - min-width: 350px; - text-overflow: ellipsis; +.bootbox-body .w3-center h3 a, .bootbox-body .w3-center h3 button { + letter-spacing: 2.4px; + font-weight: 600; + min-width: 350px; + text-overflow: ellipsis; } .compFinishBox .bootbox-body { - font-weight: bold; - font-size: 18px; + font-weight: bold; + font-size: 18px; +} +.bootbox.first-time-dialog .modal-dialog { + width: 1200px; + max-width: 90%; + margin-top: 125px; +} +.bootbox.first-time-dialog .modal-dialog a { + text-decoration: underline; + color: #000052; } .icon-cog3:before { - content: "\e913"; + content: "\e913"; } a:focus, a:hover { - text-decoration: none; - /*color: inherit;*/ - outline:none; + text-decoration: none; + /*color: inherit;*/ + outline: none; } a:active { - text-decoration: underline; - opacity: .9; + text-decoration: underline; + opacity: .9; } /* The snackbar - position it at the bottom and in the middle of the screen */ + #snackbar { - visibility: hidden; - width: 600px; - margin: auto; - background-color: #000; - outline: 1px dashed #5bbbff; - outline-offset: -4px; - color: #fff; - text-align: center; - border-radius: 8px; - border: 3px dashed #00d298; - border-style: outset; - padding: 16px; - position: fixed; - z-index: 9999; - left: 0; - right:0; - bottom: 100px; - cursor: default; + visibility: hidden; + width: 600px; + margin: auto; + background-color: #000; + outline: 1px dashed #5bbbff; + outline-offset: -4px; + color: #fff; + text-align: center; + border-radius: 8px; + border: 3px dashed #00d298; + border-style: outset; + padding: 16px; + position: fixed; + z-index: 9999; + left: 0; + right: 0; + bottom: 100px; + cursor: default; } #snackbar:hover { - outline-style: dotted; + outline-style: dotted; } /* Show the snackbar when clicking on a button (class added with JavaScript) */ + #snackbar.show { - visibility: visible; /* Show the snackbar */ - -webkit-animation: fadein 1.5s, fadeout 2.5s 7s; - animation: fadein 1.5s, fadeout 2.5s 7s; + visibility: visible; + /* Show the snackbar */ + -webkit-animation: fadein 1.5s, fadeout 2.5s 7s; + animation: fadein 1.5s, fadeout 2.5s 7s; } #snackbar.stay { - width: 40%; - max-width: 400px; - visibility: visible; - -webkit-animation: fadein 1.5s; - animation: fadein 1.5s; + width: 40%; + max-width: 400px; + visibility: visible; + -webkit-animation: fadein 1.5s; + animation: fadein 1.5s; } #snackbar input[type="checkbox"] { - opacity: .7; - width: 15px; - height: 18px; - margin-right: 7px; + opacity: .7; + width: 15px; + height: 18px; + margin-right: 7px; } .snackcheck { - opacity: .3; - transition: 1s ease-out; - float: right; - font-size: 10px; - color: #eee; - line-height: 2px; + opacity: .3; + transition: 1s ease-out; + float: right; + font-size: 10px; + color: #eee; + line-height: 2px; } .snackcheck:hover { - opacity: .8; + opacity: .8; } -#sidePanelTitle, footer, #outer-thumbs{ - -webkit-user-select: none; +#sidePanelTitle, footer, #outer-thumbs { + -webkit-user-select: none; } /* Animations to fade the snackbar in and out */ + @-webkit-keyframes fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 100px; opacity: 1;} + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 100px; + opacity: 1; + } } @keyframes fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 100px; opacity: 1;} + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 100px; + opacity: 1; + } } @-webkit-keyframes fadeout { - from {bottom: 100px; opacity: 1;} - to {bottom: 0; opacity: 0;} + from { + bottom: 100px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } } @keyframes fadeout { - from {bottom: 100px; opacity: 1;} - to {bottom: 0; opacity: 0;} + from { + bottom: 100px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } } /* Scrollbar */ + ::-webkit-scrollbar { - width: 20px; - opacity:.3; - cursor: pointer; + width: 20px; + opacity: .3; + cursor: pointer; } /* Track */ -::-webkit-scrollbar-thumb, -::-webkit-scrollbar-track, -::-webkit-scrollbar-thumb:window-inactive { - color: transparent; - zoom: 1; -} -.featherlight .featherlight-content:hover::-webkit-scrollbar-track, -::-webkit-scrollbar-track:hover { - -webkit-box-shadow: inset 2px 0px 10px rgba(0,0,0,.5); - -webkit-border-radius: 0px; - border-radius: 0px; +::-webkit-scrollbar-thumb, ::-webkit-scrollbar-track, ::-webkit-scrollbar-thumb:window-inactive { + color: transparent; + zoom: 1; +} +.featherlight .featherlight-content:hover::-webkit-scrollbar-track, ::-webkit-scrollbar-track:hover { + -webkit-box-shadow: inset 2px 0px 10px rgba(0, 0, 0, .5); + -webkit-border-radius: 0px; + border-radius: 0px; } ::-webkit-scrollbar-thumb:window-inactive:hover { - background: rgba(255,0,0,.61); - -webkit-box-shadow: inset 1px 0px 15px 1.3px rgba(0,5,5,.81); + background: rgba(255, 0, 0, .61); + -webkit-box-shadow: inset 1px 0px 15px 1.3px rgba(0, 5, 5, .81); } /* Handle */ -.featherlight .featherlight-content:hover::-webkit-scrollbar-thumb, -::-webkit-scrollbar-thumb:hover { - /*-webkit-border-radius: 20px; + +.featherlight .featherlight-content:hover::-webkit-scrollbar-thumb, ::-webkit-scrollbar-thumb:hover { + /*-webkit-border-radius: 20px; border-radius: 8px;*/ - background: rgba(20,50,150,.81); - -webkit-box-shadow: inset 0px 0px 8px 1px rgba(0, 255, 204,.8); - cursor: pointer; + background: rgba(20, 50, 150, .81); + -webkit-box-shadow: inset 0px 0px 8px 1px rgba(0, 255, 204, .8); + cursor: pointer; } #compatibilityCheck::-webkit-scrollbar-button:single-button { - display:none; + display: none; } ::-webkit-scrollbar-button:single-button:start { - display: block; - height: 80px; - background: #009688; - box-shadow: 0px 3px 5px 1px rgba(100, 100, 100, 0.70); + display: block; + height: 80px; + background: #009688; + box-shadow: 0px 3px 5px 1px rgba(100, 100, 100, 0.70); } -.featherlight ::-webkit-scrollbar-button, -textarea::-webkit-scrollbar-button:single-button { - display:none!important; +.featherlight ::-webkit-scrollbar-button, textarea::-webkit-scrollbar-button:single-button { + display: none !important; } .showNav::-webkit-scrollbar-button:single-button:start { - display: block; - height: 110px; - background: linear-gradient(#f1f1f1 38px,#000 38px,#009688 39px); - box-shadow: 0px 3px 5px 1px rgba(100, 100, 100, 0.70); + display: block; + height: 110px; + background: linear-gradient(#f1f1f1 38px, #000 38px, #009688 39px); + box-shadow: 0px 3px 5px 1px rgba(100, 100, 100, 0.70); } ::-webkit-scrollbar-button:single-button:end { - display: block; - height: 40px; - border-top: 1px solid #e0e5e6; - background: #f6f8f8; + display: block; + height: 40px; + border-top: 1px solid #e0e5e6; + background: #f6f8f8; } div#thumbs::-webkit-scrollbar { - height: 8px; + height: 8px; } div#outer-thumbs:hover div#thumbs::-webkit-scrollbar { - /*height:12px;*/ + /*height:12px;*/ } /* Scrollbar Track */ + div#thumbs::-webkit-scrollbar-track:horizontal { - -webkit-box-shadow: inset 0px 0px 4px rgba(0,0,0,.9); - -webkit-border-radius: 0px; - border-radius: 0px; + -webkit-box-shadow: inset 0px 0px 4px rgba(0, 0, 0, .9); + -webkit-border-radius: 0px; + border-radius: 0px; } div#thumbs:hover::-webkit-scrollbar-track:horizontal { - -webkit-box-shadow: inset 0px 0px 10px rgba(0,0,0,.9); + -webkit-box-shadow: inset 0px 0px 10px rgba(0, 0, 0, .9); } - /* Handle */ + div#thumbs:hover::-webkit-scrollbar-thumb { - -webkit-border-radius: 10px; - border-radius: 40px; - background: rgba(0,0,222,.212); - -webkit-box-shadow: inset 1px 1px 6px rgba(0,255,10,.31); - transition:1s ease-in-out .2s; + -webkit-border-radius: 10px; + border-radius: 40px; + background: rgba(0, 0, 222, .212); + -webkit-box-shadow: inset 1px 1px 6px rgba(0, 255, 10, .31); + transition: 1s ease-in-out .2s; } div#thumbs::-webkit-scrollbar-thumb:window-inactive { - background: rgba(100,0,0,.5); - border-radius: 40px; + background: rgba(100, 0, 0, .5); + border-radius: 40px; } div#thumbs::-webkit-scrollbar-thumb:hover { - background: rgba(0,190,25,.81); - -webkit-box-shadow: inset 1px 1px 6px rgba(0,0,210,.81); - transition:background-color .3s,color .15s,box-shadow .3s,opacity 0.3s + background: rgba(0, 190, 25, .81); + -webkit-box-shadow: inset 1px 1px 6px rgba(0, 0, 210, .81); + transition: background-color .3s, color .15s, box-shadow .3s, opacity 0.3s } -.featherlight-content::-webkit-scrollbar-button:single-button, -div#thumbs::-webkit-scrollbar-button:single-button { - display:none; +.featherlight-content::-webkit-scrollbar-button:single-button, div#thumbs::-webkit-scrollbar-button:single-button { + display: none; } -.aio-help::-webkit-scrollbar-button:single-button:start, -.aio-help::-webkit-scrollbar-button:single-button:end{ - display:none +.aio-help::-webkit-scrollbar-button:single-button:start, .aio-help::-webkit-scrollbar-button:single-button:end { + display: none } div#thumbs { - cursor: pointer; + cursor: pointer; } .w3-dropdown-content .help-messages a:hover { - color: #00ff8b; - background: rgba(0,0,0,.5); + color: #00ff8b; + background: rgba(0, 0, 0, .5); } .w3-modal-content~#caption #imgNavButtons { - z-index: 9999999; - position: fixed; - margin: auto; - right: 0; - left: 0; - bottom: 20px; + z-index: 9999999; + position: fixed; + margin: auto; + right: 0; + left: 0; + bottom: 20px; } .showcase { - margin:auto; - right:0; - left:0; - width: 1100px; - max-width: 100%; - top:70px; - height: 650px; - position: fixed; + margin: auto; + right: 0; + left: 0; + width: 1100px; + max-width: 100%; + top: 70px; + height: 650px; + position: fixed; } .showNav .showcase { - top: 90px; + top: 90px; } .w3-modal { - margin-top: 40px; - background: linear-gradient(rgb(0, 0, 0) 22%, rgb(56, 57, 58) 49%, rgb(45, 48, 50) 57%, rgb(5, 11, 11) 71%); + margin-top: 40px; + background: linear-gradient(rgb(0, 0, 0) 22%, rgb(56, 57, 58) 49%, rgb(45, 48, 50) 57%, rgb(5, 11, 11) 71%); } .showNav .w3-modal { - margin-top: 60px; + margin-top: 60px; } input#bgRotatorSeconds { - padding: 3px 16px; - font-size: 20px; - font-weight:800; + padding: 3px 16px; + font-size: 20px; + font-weight: 800; } input#bgRotatorSeconds:hover { - border:2px dotted #ff0000; - background:#aaa; + border: 2px dotted #ff0000; + background: #aaa; } input#bgRotatorSeconds:focus { - background:#ddd; + background: #ddd; } input:focus { - outline: 2px solid rgba(0, 0, 0, 0.55); + outline: 2px solid rgba(0, 0, 0, 0.55); } -#mzd-title, -#options td:first-child { - -webkit-user-select: none; - cursor: default; +#mzd-title, #options td:first-child { + -webkit-user-select: none; + cursor: default; } .w3-half.extraUIRange { - width: 49.999%!important; + width: 49.999% !important; } .side-colors { - width:49.987%!important + width: 49.987% !important } #customThemeOps { - max-height: none; - height: auto; + max-height: none; + height: auto; } .modal small { - color: #000; + color: #000; } span.icon-question { - cursor: pointer; + cursor: pointer; } #compatibilityCheck { - max-height: 550px; - overflow: auto; + max-height: 550px; + overflow: auto; } .all-compat { - columns:9; + columns: 9; } #sidePanel td { - padding: 3px 5px; - vertical-align: -webkit-baseline-middle; + padding: 3px 5px; + vertical-align: middle; } #sidePanel .w3-bordered tbody.gracenote { - height: 70px; + height: 70px; } #sidePanel .vpaudioHack li { - list-style: inside square; + list-style: inside square; } /*div#fullSystemRestore { - top: 30%; +top: 30%; }*/ + #systemRestoreInfo { - top:15%; - width: 900px; - max-width: 95%; - position: absolute; - margin: auto; - margin-bottom: 100px; - font-size:12px; - right: 0; - left: 0; + top: 15%; + width: 900px; + max-width: 95%; + position: absolute; + margin: auto; + margin-bottom: 100px; + font-size: 12px; + right: 0; + left: 0; } #compileRestore { position: absolute; @@ -1344,118 +1332,115 @@ span.icon-question { width: 205px; } th#twkOpsTitle { - font-size: 24px; - display: table; + font-size: 24px; + display: table; } .advancedOp { - display:none; + display: none; } .sidePanel .w3-col.aahelp strong li { - list-style: square inside; - text-indent: 5px; + list-style: square inside; + text-indent: 5px; } /* Videos */ -.vid-container{ - width:800px; + +.vid-container { + width: 800px; } #videoPlayer { - display: table; - line-height: normal; - font-size: 16px; - margin: auto; + display: table; + line-height: normal; + font-size: 16px; + margin: auto; } #videoPlayer video { - height: 480px; + height: 480px; } #videoPlayer figcaption { - display: block; - text-align: center; - width: 950px; + display: block; + text-align: center; + width: 950px; } section.main-vid { - background: #000; - color: #fff; + background: #000; + color: #fff; } #videoPlayer figcaption a { - display: block; - opacity: .8; - transition: 1s opacity; - font-size: 12px; - font-weight: 600; + display: block; + opacity: .8; + transition: 1s opacity; + font-size: 12px; + font-weight: 600; } -#videoPlayer figcaption a img, -figure video { - width: 100%; - height: auto; +#videoPlayer figcaption a img, figure video { + width: 100%; + height: auto; } #videoPlayer figcaption a:hover { - opacity: 1; + opacity: 1; } -#videoPlayer video, -#videoPlayer figcaption { - display: table-row; +#videoPlayer video, #videoPlayer figcaption { + display: table-row; } #videoPlayer figcaption a { - display: inline; - font-size: 15px; + display: inline; + font-size: 15px; } #videoPlayer figcaption a:hover { - color: #fff; - opacity: 1; + color: #fff; + opacity: 1; } .main-vid hr { - margin: 10px; + margin: 10px; } a.w3-btn:focus { - color: #58ffa4; + color: #58ffa4; } #imgNavPrevButtons { - position: fixed; - right: 0; - left: 0; - margin: auto; + position: fixed; + right: 0; + left: 0; + margin: auto; } -tr#uistyle-mainlabel td, -tr#uistyle-altlayout td { - width: 500px; +tr#uistyle-mainlabel td, tr#uistyle-altlayout td { + width: 500px; } tr#uistyle-mainlabel td input[type="color"] { - display:none; - width: 24%; + display: none; + width: 24%; } tr#uistyle-mainlabel.color td select { - width:72%; + width: 72%; } tr#uistyle-mainlabel.color td input[type="color"] { - display:inline; + display: inline; } .alt-layout #options .w3-half { - width: 20%; + width: 20%; } -.alt-layout #sidePanelTitle, -.alt-layout #options { - width: 100%; +.alt-layout #sidePanelTitle, .alt-layout #options { + width: 100%; } .alt-layout #sidePanel { - width:100%; - margin-left:0; - margin-top:10px; - min-height:200px; + width: 100%; + margin-left: 0; + margin-top: 10px; + min-height: 200px; } .alt-layout #bg-img { - display:none; + display: none; } .alt-layout #sidePanel ul { - columns:2; + columns: 2; column-rule: 5px dashed rgb(0, 0, 0); column-gap: 30px; } .alt-layout #sidePanel [class*="Message"] ul { - columns: 1; + columns: 1; } -@media(max-width:1200px){ +@media(max-width:1200px) { .alt-layout #options .w3-half { - width: 33.33333%!important; + width: 33.33333% !important; border: 0; padding: 0; outline: 1px dashed #000; @@ -1464,458 +1449,443 @@ tr#uistyle-mainlabel.color td input[type="color"] { .alt-layout .w3-table td, #options td:first-child { padding: 4px 10px; } - @media(max-width:800px){ + @media(max-width:800px) { .alt-layout #options .w3-half { - outline-style:dotted; + outline-style: dotted; } } } /* @media Queries */ -@media only screen and (min-width: 801px) { - div#sidePanel { - /*width: 35%;*/ - } - .colorLabel .w3-tag img { - margin-top: 5%; - } - .modal-dialog:not(.modal-sm) { - width: 660px; - } - .translated-ltr .w3-container.w3-row.w3-section.ng-scope { - margin-bottom: 100px!important; - } - .translated-ltr body { - margin-top: -40px; - } - .skiptranslate .goog-te-banner-frame { - position: fixed; - top: 90%; - } - .bootbox.modal.confirmCompile .modal-dialog { - width: 840px; - } - .bootbox.modal.confirmCompile .modal-dialog li { - text-shadow: 1px 1px 7px #65dbff; - } - .bootbox.modal.confirmCompile .modal-dialog li.inst-list { - text-shadow: 1.1px 1.1px 4.9px rgba(39, 185, 144, 0.6) - } - .bootbox.modal.confirmCompile .modal-dialog li.uninst-list { - text-shadow: .1px 1.1px 6.51px rgba(255, 113, 113, 0.78); - } - button#compileButton { - transition: 2s ease-in .5s; - } - button#compileButton.left { - margin-right: 240px; - } - .form-group1:first-child, - .form-group1:nth-child(4) { - width:29.999%; - } - .form-group1:nth-child(2), - .form-group1:nth-child(3) { - width: 19.9999%; - } - div#backgroundPreviewModal .w3-modal-content { - background-color: #000!important; - } - @media only screen and (min-width: 1051px) { - tr { - height:40px; - } - .twkfltr { - position:fixed; - top: 20px; - right: 110px; - z-index: 99500; - } - .twkfltr input { - width: 25px!important; - background: transparent; - transition: 2s ease-in 2s; - } - .twkfltr input[type=text]:focus { - width:220px!important; - transition-delay: 0s; - background:#000; - color:#fff; - } - .useColorBG.w3-right { - width: 50%; - } - #sidePanel .AAmsg, - #sidePanel td.aa-side.w3-col label { - font-size:16px; - } - @media only screen and (min-width: 1400px) { - div#options, #extraOptions { - width:49%; - } - .sidePanel li div.w3-tooltip { - font-size: 16px; - } - #mainOptions, #options, .sidePanel { - } - .sidePanel .communicationFile { - letter-spacing: normal; - } - .sidePanel { - width:49%; - min-height: 479px; - } - #sidePanel td { - padding: 6px; - vertical-align: -webkit-baseline-middle; - } +@media only screen and (min-width: 801px) { + div#sidePanel { + /*width: 35%;*/ + } + .colorLabel .w3-tag img { + margin-top: 5%; + } + .modal-dialog:not(.modal-sm) { + width: 660px; + } + .translated-ltr .w3-container.w3-row.w3-section.ng-scope { + margin-bottom: 100px !important; + } + .translated-ltr body { + margin-top: -40px; + } + .skiptranslate .goog-te-banner-frame { + position: fixed; + top: 90%; + } + .bootbox.modal.confirmCompile .modal-dialog { + width: 840px; + } + .bootbox.modal.confirmCompile .modal-dialog li { + text-shadow: 1px 1px 7px #65dbff; + } + .bootbox.modal.confirmCompile .modal-dialog li.inst-list { + text-shadow: 1.1px 1.1px 4.9px rgba(39, 185, 144, 0.6) + } + .bootbox.modal.confirmCompile .modal-dialog li.uninst-list { + text-shadow: .1px 1.1px 6.51px rgba(255, 113, 113, 0.78); + } + button#compileButton { + transition: 2s ease-in .5s; + } + button#compileButton.left { + margin-right: 240px; + } + .form-group1:first-child, .form-group1:nth-child(4) { + width: 29.999%; + } + .form-group1:nth-child(2), .form-group1:nth-child(3) { + width: 19.9999%; + } + div#backgroundPreviewModal .w3-modal-content { + background-color: #000 !important; + } + @media only screen and (min-width: 1051px) { + tr { + height: 40px; + } + .twkfltr { + position: fixed; + top: 20px; + right: 110px; + z-index: 99500; + } + .twkfltr input { + width: 25px !important; + background: transparent; + transition: 2s ease-in 2s; + } + .twkfltr input[type=text]:focus { + width: 220px !important; + transition-delay: 0s; + background: #000; + color: #fff; + } + .useColorBG.w3-right { + width: 50%; + } + #sidePanel .AAmsg, #sidePanel td.aa-side.w3-col label { + font-size: 16px; + } + @media only screen and (min-width: 1400px) { + div#options, #extraOptions { + width: 49%; + } + .sidePanel li div.w3-tooltip { + font-size: 16px; + } + #mainOptions, #options, .sidePanel {} + .sidePanel .communicationFile { + letter-spacing: normal; + } + .sidePanel { + width: 49%; + min-height: 479px; + } + #sidePanel td { + padding: 6px; + vertical-align: middle; + } .alt-layout #sidePanel td { padding: 6px 4px; - vertical-align: inherit; + vertical-align: inherit; } - @media only screen and (min-width: 1800px) { - .w3-half.uistyle { - width: 33.333% - } - .w3-quarter.uistyle { - width: 16.6666666%; - } - .w3-half.mainmenuoptions, - .w3-half.side-colors { - width: 24.999%!important; - } - .w3-col.mainmenuoptions { - width:49.999%; - } - .bgrotator.w3-half { - width: 30%; - white-space: nowrap; - } - .bgrotator-button.w3-half { - width: 20%; - } - tr#customThemeOps { - max-width:50%; - max-height:40px!important; - } - #custOptions15 .w3-third { - width: 20%; - } + @media only screen and (min-width: 1800px) { + .w3-half.uistyle { + width: 33.333% + } + #sidePanel tbody.hasColorFiles tr td .speedo-radio label, .w3-quarter.uistyle { + width: 16.6666666%; + } + .w3-half.mainmenuoptions, .w3-half.side-colors { + width: 24.999% !important; + } + .w3-col.mainmenuoptions { + width: 49.999%; + } + .bgrotator.w3-half { + white-space: nowrap; + } + .bgrotator-button.w3-half { + width: 20%; + } + tr#customThemeOps { + max-width: 50%; + max-height: 40px !important; + } + #custOptions15 .w3-third { + width: 20%; + } .alt-layout #sidePanel ul { - columns:3; + columns: 3; } - } - } - } + } + } + } } @media (max-width:1200px) { - #main { - margin-left: 10px; - } - .w3-third.side-colors { - width:33.22211%!important - } - .w3-table td { - padding: 3px 0px 6px 0px; - } - .sidePanel td:first-child { - min-width: 34px; - vertical-align: top; - padding: 5px; - padding-right: 0; - } - .w3-bordered tr { - max-height: none; - min-height: 45px; - } - .w3-col.m6 { - width: 99.999%!important; - } - .w3-table td label { - max-height: 37px; - overflow-y: hidden; - vertical-align: middle; - } - .sidePanel tr td strong { - font-size: 12px!important; - } - .main, section.options { - margin-left: 0px; - padding-left: 0px; - margin-bottom: 0px; - } - .hide-sm { - display:none; - } - #mzd-title .view-log { - display: none; - } - div#options, #extraOptions { - width:49%; - } - .sidePanel { - width:49%; - min-height: 960px; - } - #options tr:first-child { - padding-top: 5px; - } - #options tr:last-child { - padding-bottom: 3px; - } - #update-available { - width: 1px; - white-space: nowrap; - } - @media (max-width:1050px) { - .w3-twothird, - .w3-third, - .w3-half { - width: 99.999%!important; - } - .speedo-ops .w3-third{ - width:33.33333%!important; - } - #sidePanel .speedo-ops .w3-third label{ - width:100%; - } - .w3-quarter { - width: 49.999%!important; - } - #sidePanel { - min-height:1040px; - } - #options tr { - padding-top: 0px; - } - div#date, - div#clock { - right: 95px; - } - #ctxt-ico { - left: 105px; - } - #ctxt-title, #ctxt-notif { - left: 150px; - } - span#closePrevew2 { - right: 0px!important; - } - @media (max-width:950px) { - #ctxt-title, #ctxt-notif { - left: 100px; - } - #date, #clock { - right: 35px; - } - #ctxt-ico { - left: 45px; - } - .showcase { - left: -90px; - max-width: 120%; - } - .all-compat { - columns:5; - } - #compatibilityCheck { - max-height: 450px; - } - @media (max-width:800px) { - .showcase { - left: -80px; - } - h3.tweak-inst-title { - font-size: 20px; - } - .w3-text { - padding:10px!important; - } - .w3-container.mainContainer { - margin-bottom: 5px; - } - .bootbox.modal.fade.in { - margin-top: 10px; - } - .mazda { - letter-spacing: 3px!important; - } - .w3-btn, .w3-btn-block { - padding:5px 10px!important; - } - .w3-sidenav a { - font-size: 12px; - } - .goog-logo-link { - font-size: 20px!important; - } - .w3-container.form-group1>span { - font-size: 15px; - } - .useColorBG.w3-right { - position: relative; - margin-top: -8px; - width: 100%; - } - #sidePanel { - min-height:1045px; - } - div#date, - div#clock { - right: 120px; - } - #ctxt-ico { - left: 80px; - } - #ctxt-title, #ctxt-notif { - left: 120px; - } - span#closePrevew2 { - right: 25px!important; - } - li#FW_VER { - display: none!important; - } - } - } - } + #main { + margin-left: 10px; + } + .w3-third.side-colors { + width: 33.22211% !important + } + .w3-table td { + padding: 3px 0px 6px 0px; + } + .sidePanel td:first-child { + min-width: 34px; + vertical-align: top; + padding: 5px; + padding-right: 0; + } + .w3-bordered tr { + max-height: none; + min-height: 45px; + } + .w3-col.m6 { + width: 99.999% !important; + } + .w3-table td label { + max-height: 37px; + overflow-y: hidden; + vertical-align: middle; + } + .sidePanel tr td strong { + font-size: 12px !important; + } + .main, section.options { + margin-left: 0px; + padding-left: 0px; + margin-bottom: 0px; + } + .hide-sm { + display: none; + } + #mzd-title .view-log { + display: none; + } + div#options, #extraOptions { + width: 49%; + } + .sidePanel { + width: 49%; + min-height: 960px; + } + #options tr:first-child { + padding-top: 5px; + } + #options tr:last-child { + padding-bottom: 3px; + } + #update-available { + width: 1px; + white-space: nowrap; + } + @media (max-width:1050px) { + .w3-twothird, .w3-third, .w3-half { + width: 99.999% !important; + } + .speedo-ops .w3-third { + width: 33.33333% !important; + } + #sidePanel .speedo-ops .w3-third label { + width: 100%; + } + .w3-quarter { + width: 49.999% !important; + } + #sidePanel { + min-height: 1040px; + } + #options tr { + padding-top: 0px; + } + div#date, div#clock { + right: 95px; + } + #ctxt-ico { + left: 105px; + } + #ctxt-title, #ctxt-notif { + left: 150px; + } + span#closePrevew2 { + right: 0px !important; + } + @media (max-width:950px) { + #ctxt-title, #ctxt-notif { + left: 100px; + } + #date, #clock { + right: 35px; + } + #ctxt-ico { + left: 45px; + } + .showcase { + left: -90px; + max-width: 120%; + } + .all-compat { + columns: 5; + } + #compatibilityCheck { + max-height: 450px; + } + @media (max-width:800px) { + .showcase { + left: -80px; + } + h3.tweak-inst-title { + font-size: 20px; + } + .w3-text { + padding: 10px !important; + } + .w3-container.mainContainer { + margin-bottom: 5px; + } + .bootbox.modal.fade.in { + margin-top: 10px; + } + .mazda { + letter-spacing: 3px !important; + } + .w3-btn, .w3-btn-block { + padding: 5px 10px !important; + } + .w3-sidenav a { + font-size: 12px; + } + .goog-logo-link { + font-size: 20px !important; + } + .w3-container.form-group1>span { + font-size: 15px; + } + .useColorBG.w3-right { + position: relative; + margin-top: -8px; + width: 100%; + } + #sidePanel { + min-height: 1045px; + } + div#date, div#clock { + right: 120px; + } + #ctxt-ico { + left: 80px; + } + #ctxt-title, #ctxt-notif { + left: 120px; + } + span#closePrevew2 { + right: 25px !important; + } + li#FW_VER { + display: none !important; + } + } + } + } } #imgmodal.slideshow img { - left:0px; - animation: slideshow 30s steps(10,end) infinite; + left: 0px; + animation: slideshow 30s steps(10, end) infinite; } @keyframes slideshow { - to { - left:-8000px; - } + to { + left: -8000px; + } } /* Big update modal for v2.2.0 */ + .bootbox.update-info .modal-dialog { - max-width: 90%; - width: 1400px; - font-family: Verdana,sans-serif; - /*font-variant: small-caps; + max-width: 90%; + width: 1400px; + font-family: Verdana, sans-serif; + /*font-variant: small-caps; text-transform: capitalize;*/ } .update-info h5 { - font-weight: 600; + font-weight: 600; } -.unwifiap, -.update-info a, -.help-messages a, -#sidePanel a:not(.w3-closenav) { - border-bottom: 1px dashed #499aff; - cursor: pointer; +.unwifiap, .update-info a, .help-messages a, #sidePanel a:not(.w3-closenav) { + border-bottom: 1px dashed #499aff; + cursor: pointer; } a#update-available { - white-space: nowrap; - max-width: 1px; + white-space: nowrap; + max-width: 1px; } .w3-navbar li#update-available:hover { - background-color: #f1f1f2; + background-color: #f1f1f2; } div#changelog td { - border: 2px dotted #000; - padding: 17px; + border: 2px dotted #000; + padding: 17px; } div#changelog tr th { - text-align: center; + text-align: center; } -#sidePanel a.w3-btn, -.help-messages a.w3-btn { - border:none; +#sidePanel a.w3-btn, .help-messages a.w3-btn { + border: none; } .slide-out-div { - padding: 5px; - width: 250px; - background: #eee; - border: #29216d 1px solid; - z-index: 99; - top: 90px; -} -a.handle, -a.handle:focus, -a.handle:hover { - outline: 1px solid #000!important; - outline-offset: 0; - background: #00daff; - width: 90px; - height: 40px; - display: block; - text-indent: 0px; - font-weight: 700; - position: absolute; - transform: rotate(-90deg); - text-align: center; - top: 25px; - right: -66px; - padding-top: 2px; + padding: 5px; + width: 250px; + background: #eee; + border: #29216d 1px solid; + z-index: 99; + top: 90px; +} +a.handle, a.handle:focus, a.handle:hover { + outline: 1px solid #000 !important; + outline-offset: 0; + background: #00daff; + width: 90px; + height: 40px; + display: block; + text-indent: 0px; + font-weight: 700; + position: absolute; + transform: rotate(-90deg); + text-align: center; + top: 25px; + right: -66px; + padding-top: 2px; } .showNav .slide-out-div { - top: 120px!important; + top: 120px !important; } a.handle:focus { - background: #ff0000; - color: #fff; - opacity: .6; + background: #ff0000; + color: #fff; + opacity: .6; } a.handle:hover { - background: #000066; - color:#fff; - opacity: .8; + background: #000066; + color: #fff; + opacity: .8; } a.handle:active { - background: #000; - color: #ff0000; + background: #000; + color: #ff0000; } .featherlight .featherlight-close-icon { - position: fixed; - line-height: 60px; - width: 60px; - background: rgba(255,255,255,.5); - transition: .3 ease-in; + position: fixed; + line-height: 60px; + width: 60px; + background: rgba(255, 255, 255, .5); + transition: .3 ease-in; } .featherlight .featherlight-close-icon:hover { - background: rgba(255,255,255,.8); + background: rgba(255, 255, 255, .8); } .featherlight.myStance .featherlight-content { - max-width: 90%; + max-width: 90%; } .featherlight.myStance .featherlight-inner h1 { - white-space:normal; - font-size: 1.6rem; + white-space: normal; + font-size: 1.6rem; } .featherlight.myStance .featherlight-inner h2 { - text-align: center; - font-size: 1.2rem; + text-align: center; + font-size: 1.2rem; } .featherlight.myStance .featherlight-inner h3 { - text-align: center; - font-size: 1.1rem; + text-align: center; + font-size: 1.1rem; } .featherlight.myStance .featherlight-inner h4 { - text-align: justify; - font-size: 1rem; + text-align: justify; + font-size: 1rem; } .featherlight.myStance p.featherlight-inner { - font-size: 20px; - text-align: justify; + font-size: 20px; + text-align: justify; } .featherlight.myStance a { - color: #00006b; - text-decoration:underline; + color: #00006b; + text-decoration: underline; } .featherlight.myStance b.featherlight-inner { - display: initial; + display: initial; } .featherlight.myStance { - user-select:none; + user-select: none; } .featherlight.myStance #firstTimer { - text-align: center; + text-align: center; } script.featherlight-inner { - display: none!important; + display: none !important; } .featherlight.autoHelpBox .featherlight-content { width: 100%; @@ -1927,151 +1897,152 @@ script.featherlight-inner { width: 900px; } .featherlight.autoHelpBox .featherlight-content #autoHelp { - margin-top: 0; + margin-top: 0; } span.icon-star.featherlight-inner { - display: inline; + display: inline; } .confirmAutorunCompile label { - font-size: 20px; - font-weight: 500; + font-size: 20px; + font-weight: 500; } -.wifiSSIDprompt .modal-footer button, -.confirmAutorunCompile .modal-footer button { - width: 49%; +.wifiSSIDprompt .modal-footer button, .confirmAutorunCompile .modal-footer button { + width: 49%; } .bootbox-form .checkbox input[type=checkbox] { - margin-right: 10px; + margin-right: 10px; } #autoHelp div { - margin-bottom: 21px; + margin-bottom: 21px; } #sidePanel .w3-select { - padding: 6px 0; + padding: 6px 0; } input#checkAutorun { - top: 6px; + top: 6px; } label.w3-label.checkAutorun { - outline: 2px dashed #0e2763; - outline-offset: 4px; + outline: 2px dashed #0e2763; + outline-offset: 4px; } a.autorunHelp { - position: absolute; - top: 112px; - right: 50px; - z-index: 1000; - font-size: 36px; + position: absolute; + top: 112px; + right: 50px; + z-index: 1000; + font-size: 36px; } #header .w3-label { - letter-spacing: normal; - color: #000000; - font-size: 20px; - vertical-align: middle; + letter-spacing: normal; + color: #000000; + font-size: 20px; + vertical-align: middle; } input#id7Recovery { - top:4px; + top: 4px; } -.id7Recovery.w3-dropdown-content{ - min-width: 190px; +.id7Recovery.w3-dropdown-content { + min-width: 190px; } .id7Recovery .w3-label { - top: -10px; + top: -10px; } .mazda .id7Recovery { - text-transform: none; + text-transform: none; } .aio-help { - max-height:500px; - overflow-y: scroll; + max-height: 500px; + overflow-y: scroll; } -.featherlight-content .anonCloseBtn, -#sidePanel a.anonCloseBtn { - float: right; - font-size: 40px; - line-height: 40px; - border: none; +.featherlight-content .anonCloseBtn, #sidePanel a.anonCloseBtn { + float: right; + font-size: 40px; + line-height: 40px; + border: none; } -style.featherlight-inner{ - display:none!important; +style.featherlight-inner { + display: none !important; } -.speedoRef{ - text-align:right; - margin-top:-500px; - width:40%; - max-width:500px; +.speedoRef { + text-align: right; + margin-top: -500px; + width: 40%; + max-width: 500px; } pre.featherlight-inner code { - white-space: pre; - width: 60%; - display: inline-block; + white-space: pre; + width: 60%; + display: inline-block; } -.featherlight .featherlight-content{ - max-height:100% +.featherlight .featherlight-content { + max-height: 100% } #sidePanel div#anonce { - border: 2px dashed; - padding: 20px; - outline-offset: -10px; - outline: 2px dotted #ff0000; + border: 2px dashed; + padding: 20px; + outline-offset: -10px; + outline: 2px dotted #ff0000; } -#sidePanel td.aa-side.w3-col label, -#sidePanel td.aa-side.w3-col input { - margin-top: 0; - padding-bottom: 10px; +#sidePanel td.aa-side.w3-col label, #sidePanel td.aa-side.w3-col input { + margin-top: 0; + padding-bottom: 10px; } .featherlight-content .anonCloseBtn { - display: none; + display: none; } button.btn.btn-default[data-bb-handler="cancel"] { - background-color:#ff8e8e; - border-color:#ff0000; + background-color: #ff8e8e; + border-color: #ff0000; } button.btn.btn-default[data-bb-handler="cancel"]:hover { - color: #fff; - background-color: #88302c; - border-color: #600eff; + color: #fff; + background-color: #88302c; + border-color: #600eff; } button.btn.btn-primary[data-bb-handler="confirm"] { - border-color:#000; + border-color: #000; } button.btn.btn-primary[data-bb-handler="confirm"]:hover { - background-color: #009464; - color: #000; - border-color: #fbff03; + background-color: #009464; + color: #000; + border-color: #fbff03; } label.w3-label.checkAutorun { - position: absolute; - top: 95px; - right: 15px; - font-size: 20px; - color: #000; - text-align: center; - z-index: 99; - transition: .8s ease; + position: absolute; + top: 95px; + right: 15px; + font-size: 20px; + color: #000; + text-align: center; + z-index: 99; + transition: .8s ease; } .showNav label.w3-label.checkAutorun { - top: 125px; + top: 125px; } -.w3-navbar *, -.w3-sidenav * { - cursor: pointer; +.w3-navbar *, .w3-sidenav * { + cursor: pointer; } .w3-sidenav .AAmsg div { - padding: 10px; - font-weight: 500; - font-size: 14px; + padding: 10px; + font-weight: 500; + font-size: 14px; } .w3-sidenav .AAmsg div a { - display: inline; - padding: 0px 2px; + display: inline; + padding: 0px 2px; } button#compileAutorun { - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pace .pace-progress[data-progress="99"], .pace .pace-progress[data-progress="99"]~.pace-activity { + opacity: 0; + transition: 10s ease-out .3s; } /* ******* REMOVE FOR VERSION 2.8.0 ******** */ + .casdk-link { - display: none; + display: none; } /* ****************************************** */ diff --git a/app/assets/css/style.css b/app/assets/css/style.css index 6fa49b0..9e582ec 100644 --- a/app/assets/css/style.css +++ b/app/assets/css/style.css @@ -2,6 +2,6 @@ html, body { font: caption; width: 100%; height: 100%; - background: #FEFEFE; } - + background: #FEFEFE; +} /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsSUFBQSxFQUFBLElBQUEsQ0FBQTtFQUNDLEtBQUEsRUFBQSxJQUFZO0VBQ1osTUFBQSxFQUFBLElBQWE7RUFDYixVQUFBLEVBQUEsT0FBb0IsR0FDcEIiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnYmFzZS9iYXNlJztcclxuXHJcbkBpbXBvcnQgJ2luY2x1ZGVzL25hdic7XHJcbkBpbXBvcnQgJ2luY2x1ZGVzL2Zvb3Rlcic7XHJcblxyXG5odG1sLCBib2R5IHtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcblx0YmFja2dyb3VuZDogI0ZFRkVGRTtcclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */ diff --git a/app/assets/css/translator.css b/app/assets/css/translator.css index e15a184..9383db5 100644 --- a/app/assets/css/translator.css +++ b/app/assets/css/translator.css @@ -1,8 +1,8 @@ .main { - margin-top:85px; + margin-top: 85px; margin-bottom: 50px; } -.showNav ~ .main { +.showNav~.main { margin-top: 120px; } .tabs.list-group.col-md-2 { @@ -12,14 +12,14 @@ width: 68.333333%; } .list-group-item { - border-radius:4px; - margin-bottom:1px; + border-radius: 4px; + margin-bottom: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .w3-navbar li:first-child { - margin:0; + margin: 0; } .w3-navbar li:first-child a { padding: 6px 0px 3px 2px; @@ -45,7 +45,7 @@ textarea.form-control { font-weight: 600; } input[type=checkbox].w3-check, input[type=radio].w3-radio { - width: 24px!important; + width: 24px !important; height: 24px; margin-right: 10px; top: -5px; @@ -70,11 +70,11 @@ input[type=checkbox].w3-check, input[type=radio].w3-radio { .newfile { width: 43.33333%; text-transform: capitalize; - padding-top:0!important; + padding-top: 0 !important; } #cpyBtn { - position:absolute; - z-index:9999; + position: absolute; + z-index: 9999; } span#SourceMode { position: fixed; @@ -84,9 +84,9 @@ span#SourceMode { left: 200px; top: 55px; position: fixed; -@media (max-width:992px){ +@media (max-width:992px) { .newfile { - width:100%; + width: 100%; } .tabs.list-group.col-md-2 { display: initial; @@ -99,16 +99,14 @@ position: fixed; overflow-x: hidden; } .goog-logo-link { - font-size: 20px!important; + font-size: 20px !important; } [data-schemapath*="root.mainOps."] { - float: none!important; + float: none !important; } - [data-schemapath="root.menu"] [class*="col-md-"]:not(.col-md-12), - [data-schemapath="root.colors"] [class*="col-md-"]:not(.col-md-12), - [data-schemapath="root.languages"] [class*="col-md-"]:not(.col-md-12) { - width:50%; - float:left; + [data-schemapath="root.menu"] [class*="col-md-"]:not(.col-md-12), [data-schemapath="root.colors"] [class*="col-md-"]:not(.col-md-12), [data-schemapath="root.languages"] [class*="col-md-"]:not(.col-md-12) { + width: 50%; + float: left; } .rows .col-md-10 { width: 100%; diff --git a/app/assets/js/build-tweaks.js b/app/assets/js/build-tweaks.js index 652bd51..c249371 100644 --- a/app/assets/js/build-tweaks.js +++ b/app/assets/js/build-tweaks.js @@ -15,21 +15,21 @@ /* jshint -W033 */ var approot if (isDev) { - approot = './app/'// for dev + approot = './app/' // for dev } else { - approot = app.getAppPath()// for dist + approot = app.getAppPath() // for dist } -var builddir = `${approot}/files/tweaks/`// Location of tweak files (as .txt files) -var extradir = app.getPath('userData')// Location of downloaded tweak files (userData) -var logFileName = 'MZD_LOG'// Name of log file (without extension) +var builddir = `${approot}/files/tweaks/` // Location of tweak files (as .txt files) +var extradir = app.getPath('userData') // Location of downloaded tweak files (userData) +var logFileName = 'MZD_LOG' // Name of log file (without extension) var varDir = `${extradir}/background/` // Location of files with saved variables -const appender = require('appender')// Appends the tweak files syncronously -const crlf = require('crlf')// Converts line endings (from CRLF to LF) -const copydir = require('copy-dir')// Copys full directories -const drivelist = require('drivelist')// Module that gets the list of available USB drives -const extract = require('extract-zip')// For Unzipping -const mkdirp = require('mkdirp')// Equiv of Unix command mkdir -p -const rimraf = require('rimraf')// Equiv of Unix command rm -rf +const appender = require('appender') // Appends the tweak files syncronously +const crlf = require('crlf') // Converts line endings (from CRLF to LF) +const copydir = require('copy-dir') // Copys full directories +const drivelist = require('drivelist') // Module that gets the list of available USB drives +const extract = require('extract-zip') // For Unzipping +const mkdirp = require('mkdirp') // Equiv of Unix command mkdir -p +const rimraf = require('rimraf') // Equiv of Unix command rm -rf // First line of AIO log var AIO_LOG = `# __MZD-AIO-TI__ ${app.getVersion()}| MZD All In One Tweaks Installer\n#### AIO COMPILATION LOG - ${Date()}\r\n___\n- *START!*\n` var AIO_LOG_HTML = `

MZD-AIO-TI ${app.getVersion()} | MZD All In One Tweaks Installer


AIO COMPILATION LOG - ${Date()}


`) - }, 10000) + }, 5000) } -function postInstallTitle () { + +function postInstallTitle() { bootbox.hideAll() $('.twkfltr').hide() document.getElementById(`mzd-title`).innerHTML = `${viewLog}${document.getElementById('mzd-title').innerHTML}${strtOver}` } -function saveInstallerOps (user) { + +function saveInstallerOps(user) { settings.set('keepBackups', user.backups.org) settings.set('testBackups', user.backups.test) settings.set('skipConfirm', user.backups.skipconfirm) } -function cleanCopyDir () { + +function cleanCopyDir() { rimraf(`${tmpdir}`, function () { appendAIOlog(`
  • Deleted '_copy_to_usb' Folder
  • `) }) } -function casdkAppOptions (apps) { + +function casdkAppOptions(apps) { var casdkapps = `APPSIMPLEDASHBOARD=` casdkapps += (apps.simpledashboard) ? `1\n` : `0\n` casdkapps += `APPGPSSPEED=` @@ -1175,7 +1192,8 @@ function casdkAppOptions (apps) { fs.writeFileSync(`${varDir}/casdkapps.txt`, casdkapps) tweaks2write.push(`${varDir}/casdkapps.txt`) } -function buildCASDK (user, apps) { + +function buildCASDK(user, apps) { addRootFiles() if (user.casdk.inst) { casdkAppOptions(apps) @@ -1198,13 +1216,14 @@ function buildCASDK (user, apps) { } writeTweaksFile() } -function fullSystemRestore (user) { + +function fullSystemRestore(user) { addRootFiles() tweaks2write.push(`${builddir}00___fullRestore.sh`) - if(fs.existsSync(`${extradir}/color-schemes/Red/jci.zip`)) { + if (fs.existsSync(`${extradir}/color-schemes/Red/jci.zip`)) { mkdirp.sync(`${tmpdir}/config/color-schemes/Red`) aioLog(`Unzipping Red color theme folder`) - extract(`${extradir}/color-schemes/Red/jci.zip`, {dir: `${tmpdir}/config/color-schemes/Red`}, function (err) { + extract(`${extradir}/color-schemes/Red/jci.zip`, { dir: `${tmpdir}/config/color-schemes/Red` }, function (err) { if (err) { aioLog(err) } aioLog(`Red Color Scheme Added Successfully`) }) @@ -1218,7 +1237,8 @@ function fullSystemRestore (user) { }) writeTweaksFile() } -function buildAutorunInstaller (user) { + +function buildAutorunInstaller(user) { copydir(`${approot}/files/tweaks/cmu-autorun/installer`, `${tmpdir}`, function (err) { if (err) { errFlag = true @@ -1244,7 +1264,8 @@ function buildAutorunInstaller (user) { } }) } -function addWifiApp (user) { + +function addWifiApp(user) { filesComplete = true opsComplete = true if (user.autorun.autoADB || user.autorun.autoWIFI) { @@ -1282,7 +1303,7 @@ function addWifiApp (user) { size: "small", title: "Values Were Not Changed", message: "WiFi AP Will not be installed", - callback: function() { + callback: function () { rimraf.sync(`${tmpdir}/00-start-wifiAP/`) printAIOlog() } diff --git a/app/assets/js/events.js b/app/assets/js/events.js index b4c9fd4..0f5fbee 100644 --- a/app/assets/js/events.js +++ b/app/assets/js/events.js @@ -90,15 +90,14 @@ ipc.on('selected-joined-bg', function (event, filepath) { icon: 'favicon.ico', silent: true }) - bgNotification.onclick = () => { - } + bgNotification.onclick = () => {} ipc.emit('set-bg') }) ipc.on('selected-bg', function (event, filepath) { var outFile = `${varDir}/background.png` document.getElementById('selected-file').innerHTML = `Your Selected Background Image: ${filepath}` var warnMsg = '{{mainOps.retain.toolTip}}' - fs.writeFileSync(`${outFile}`,nativeImage.createFromPath(`${filepath}`).resize({'width':800,'height':480}).toPNG()) + fs.writeFileSync(`${outFile}`, nativeImage.createFromPath(`${filepath}`).resize({ 'width': 800, 'height': 480 }).toPNG()) let bgNotification = new Notification('Background', { body: `Your Infotainment Background Will Be Changed To: ${filepath}`, icon: 'favicon.ico', @@ -111,15 +110,14 @@ ipc.on('selected-bg', function (event, filepath) { }) ipc.on('selected-offscreen-bg', function (event, filepath) { var outFile = `${varDir}/OffScreenBackground.png` - fs.writeFileSync(`${outFile}`,nativeImage.createFromPath(`${filepath}`).resize({'width':800,'height':480}).toPNG()) - let bgNotification = new Notification('Background', { - body: `Your Off Screen Background Will Be Changed To: ${filepath}`, - icon: 'favicon.ico', - silent: true - }) - bgNotification.onclick = () => { - } + fs.writeFileSync(`${outFile}`, nativeImage.createFromPath(`${filepath}`).resize({ 'width': 800, 'height': 480 }).toPNG()) + let bgNotification = new Notification('Background', { + body: `Your Off Screen Background Will Be Changed To: ${filepath}`, + icon: 'favicon.ico', + silent: true }) + bgNotification.onclick = () => {} +}) ipc.on('set-bg', (prev) => { var bgNoCache = `${varDir}/background.png?` + new Date().getTime() document.getElementById('imgframe').innerHTML = `` @@ -133,7 +131,7 @@ ipc.on('selected-album-art', function (event, filepath) { $('.blnk-albm-art').hide() $('#blnk-albm-img').show() settings.set('blank-album-art', `${filepath}`) - fs.writeFileSync(`${outFile}`,nativeImage.createFromPath(`${filepath}`).resize({'width':146,'height':146}).toPNG()) + fs.writeFileSync(`${outFile}`, nativeImage.createFromPath(`${filepath}`).resize({ 'width': 146, 'height': 146 }).toPNG()) setTimeout(function () { var bgNoCache = `${varDir}/no_artwork_icon.png?` + new Date().getTime() document.getElementById('blnk-albm-img').innerHTML = `` diff --git a/app/assets/js/ex-links.js b/app/assets/js/ex-links.js index a38dc48..18351aa 100644 --- a/app/assets/js/ex-links.js +++ b/app/assets/js/ex-links.js @@ -1,6 +1,6 @@ // Open all external links outside the app // Credit: Electron API Demos app -const links = document.querySelectorAll('a[href]') +const links = document.querySelectorAll('a.link') Array.prototype.forEach.call(links, function (link) { const url = link.getAttribute('href') diff --git a/app/assets/js/gritter-conf.js b/app/assets/js/gritter-conf.js index 593ea8a..46690aa 100644 --- a/app/assets/js/gritter-conf.js +++ b/app/assets/js/gritter-conf.js @@ -1,114 +1,113 @@ var Gritter = function () { - $('#add-sticky').click(function(){ - - var unique_id = $.gritter.add({ - // (string | mandatory) the heading of the notification - title: 'This is a Sticky Notice!', - // (string | mandatory) the text inside the notification - text: 'Hover me to enable the Close Button. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.', - // (string | optional) the image to display on the left - image: 'assets/img/ui-sam.jpg', - // (bool | optional) if you want it to fade out on its own or just sit there - sticky: true, - // (int | optional) the time you want it to be alive for before fading out - time: '', - // (string | optional) the class name you want to apply to that specific message - class_name: 'my-sticky-class' - }); - - // You can have it return a unique id, this can be used to manually remove it later using - /* - setTimeout(function(){ - - $.gritter.remove(unique_id, { - fade: true, - speed: 'slow' - }); - - }, 6000) - */ - - return false; - + $('#add-sticky').click(function () { + + var unique_id = $.gritter.add({ + // (string | mandatory) the heading of the notification + title: 'This is a Sticky Notice!', + // (string | mandatory) the text inside the notification + text: 'Hover me to enable the Close Button. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.', + // (string | optional) the image to display on the left + image: 'assets/img/ui-sam.jpg', + // (bool | optional) if you want it to fade out on its own or just sit there + sticky: true, + // (int | optional) the time you want it to be alive for before fading out + time: '', + // (string | optional) the class name you want to apply to that specific message + class_name: 'my-sticky-class' }); - $('#add-regular').click(function(){ + // You can have it return a unique id, this can be used to manually remove it later using + /* + setTimeout(function(){ - $.gritter.add({ - // (string | mandatory) the heading of the notification - title: 'This is a Regular Notice!', - // (string | mandatory) the text inside the notification - text: 'This will fade out after a certain amount of time. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.', - // (string | optional) the image to display on the left - image: 'assets/img/ui-sam.jpg', - // (bool | optional) if you want it to fade out on its own or just sit there - sticky: false, - // (int | optional) the time you want it to be alive for before fading out - time: '' - }); + $.gritter.remove(unique_id, { + fade: true, + speed: 'slow' + }); - return false; + }, 6000) + */ - }); + return false; + + }); + + $('#add-regular').click(function () { - $('#add-max').click(function(){ - - $.gritter.add({ - // (string | mandatory) the heading of the notification - title: 'This is a notice with a max of 3 on screen at one time!', - // (string | mandatory) the text inside the notification - text: 'This will fade out after a certain amount of time. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.', - // (string | optional) the image to display on the left - image: 'assets/img/ui-sam.jpg', - // (bool | optional) if you want it to fade out on its own or just sit there - sticky: false, - // (function) before the gritter notice is opened - before_open: function(){ - if($('.gritter-item-wrapper').length == 3) - { - // Returning false prevents a new gritter from opening - return false; - } - } - }); - - return false; + $.gritter.add({ + // (string | mandatory) the heading of the notification + title: 'This is a Regular Notice!', + // (string | mandatory) the text inside the notification + text: 'This will fade out after a certain amount of time. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.', + // (string | optional) the image to display on the left + image: 'assets/img/ui-sam.jpg', + // (bool | optional) if you want it to fade out on its own or just sit there + sticky: false, + // (int | optional) the time you want it to be alive for before fading out + time: '' + }); + return false; + + }); + + $('#add-max').click(function () { + + $.gritter.add({ + // (string | mandatory) the heading of the notification + title: 'This is a notice with a max of 3 on screen at one time!', + // (string | mandatory) the text inside the notification + text: 'This will fade out after a certain amount of time. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.', + // (string | optional) the image to display on the left + image: 'assets/img/ui-sam.jpg', + // (bool | optional) if you want it to fade out on its own or just sit there + sticky: false, + // (function) before the gritter notice is opened + before_open: function () { + if ($('.gritter-item-wrapper').length == 3) { + // Returning false prevents a new gritter from opening + return false; + } + } }); - $('#add-without-image').click(function(){ + return false; + + }); - $.gritter.add({ - // (string | mandatory) the heading of the notification - title: 'This is a Notice Without an Image!', - // (string | mandatory) the text inside the notification - text: 'This will fade out after a certain amount of time. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.' - }); + $('#add-without-image').click(function () { - return false; + $.gritter.add({ + // (string | mandatory) the heading of the notification + title: 'This is a Notice Without an Image!', + // (string | mandatory) the text inside the notification + text: 'This will fade out after a certain amount of time. This note also contains a link example. Thank you so much to try Dashgum. Developed by Alvarez.is.' }); - $('#add-gritter-light').click(function(){ + return false; + }); - $.gritter.add({ - // (string | mandatory) the heading of the notification - title: 'This is a Light Notification', - // (string | mandatory) the text inside the notification - text: 'Just add a "gritter-light" class_name to your $.gritter.add or globally to $.gritter.options.class_name', - class_name: 'gritter-light' - }); + $('#add-gritter-light').click(function () { - return false; + $.gritter.add({ + // (string | mandatory) the heading of the notification + title: 'This is a Light Notification', + // (string | mandatory) the text inside the notification + text: 'Just add a "gritter-light" class_name to your $.gritter.add or globally to $.gritter.options.class_name', + class_name: 'gritter-light' }); - $("#remove-all").click(function(){ + return false; + }); - $.gritter.removeAll(); - return false; + $("#remove-all").click(function () { - }); + $.gritter.removeAll(); + return false; + + }); -}(); \ No newline at end of file +}(); diff --git a/app/assets/js/index.js b/app/assets/js/index.js index 158a6b0..5b78344 100644 --- a/app/assets/js/index.js +++ b/app/assets/js/index.js @@ -16,19 +16,22 @@ const { app, BrowserWindow } = remote const fs = require('fs') const ipc = require('electron').ipcRenderer const Config = require('electron-store') -const settings = new Config({'name': 'aio-data'}) -const persistantData = new Config({'name': 'aio-persist'}) -const lastView = new Config({'name': 'aio-last'}) -const userThemes = new Config({'name': 'user-themes'}) +const settings = new Config({ 'name': 'aio-data' }) +const persistantData = new Config({ 'name': 'aio-persist' }) +const dataObj = new Config({ 'name': 'aio-data-obj' }) +const lastView = new Config({ 'name': 'aio-last' }) +const userThemes = new Config({ 'name': 'user-themes' }) +const casdkApps = new Config({ 'name': 'casdk' }) const { writeFileSync } = require('fs') const isDev = require('electron-is-dev') const path = require('path') var copyFolderLocation = persistantData.get('copyFolderLocation') -var visits = persistantData.get('visits') +var visits = persistantData.get('visits') || 0 var hasColorFiles = fs.existsSync(`${app.getPath('userData')}/color-schemes/`) var hasSpeedCamFiles = fs.existsSync(`${app.getPath('userData')}/speedcam-patch/`) var translateSchema, langPath, lang var tempDir = `${app.getPath('userData')}/background` +var date = function () { return new Date() } // require('./lib/log')('MZD-AIO-LOG') // var output = process.stdout // var errorOutput = process.stderr @@ -66,12 +69,12 @@ if (!fs.existsSync(tempDir)) { fs.mkdirSync(tempDir) } -function helpMessageFreeze (item) { +function helpMessageFreeze(item) { $(item).children().toggleClass('w3-show') } /* Clock for Background preview */ -function startTime () { +function startTime() { var today = new Date() var h = today.getHours() var m = today.getMinutes() @@ -82,8 +85,9 @@ function startTime () { var t = setTimeout(startTime, 10000) formatDateCustom(2) } -function checkTime (i) { - if (i < 10) { i = '0' + i } // add zero in front of numbers < 10 + +function checkTime(i) { + if (i < 10) { i = '0' + i } // add zero in front of numbers < 10 return i } /* function createImageWindow() { @@ -92,21 +96,28 @@ var imageWindow = windowManager.open('imageWindow')// , 'Drag & Drop Background ipc.on('open-copy-folder', () => { openCopyFolder() }) -function openCopyFolder () { + +function openCopyFolder() { copyFolderLocation = path.normalize(path.join(persistantData.get('copyFolderLocation'), '/_copy_to_usb/config')) if (!shell.showItemInFolder(copyFolderLocation)) { - bootbox.alert({ - message: `"${copyFolderLocation.replace('config', '')}" Does Not Exist. Click "Start Compilation" to Run The Tweak Builder and Create the _copy_to_usb Folder.` - }) + copyFolderLocation = path.normalize(path.join(persistantData.get('copyFolderLocation'), '/_copy_to_usb/tweaks.sh')) + if (!shell.showItemInFolder(copyFolderLocation)) { + bootbox.alert({ + message: `"${copyFolderLocation.replace('config', '')}" Does Not Exist. Click "Start Compilation" to Run The Tweak Builder and Create the _copy_to_usb Folder.` + }) + } } } -function openApkFolder () { + +function openApkFolder() { shell.showItemInFolder(path.normalize(path.join('file://', __dirname, '../../castscreenApp/castscreen-1.0.apk'))) } -function openDlFolder () { + +function openDlFolder() { shell.showItemInFolder(path.normalize(path.join(app.getPath('userData'), 'color-schemes/Blue'))) } -function openDefaultFolder () { + +function openDefaultFolder() { shell.showItemInFolder(path.normalize(path.join('file://', __dirname, '../background-images/default/defaut.png'))) } function autoHelp () { @@ -140,35 +151,47 @@ function updateNotes () { closeButton: true }) setTimeout(function () { - $('.modal-dialog').animate({'margin-top': '40px', 'margin-bottom': '60px'}, 3000) + $('.modal-dialog').animate({ 'margin-top': '40px', 'margin-bottom': '60px' }, 3000) $('#newVerBtn').fadeIn(5000) }, 2000) } -function firstTimeVisit () { - if (!persistantData.has('updateVer') || persistantData.get('updateVer') < 271) { + +function firstTimeVisit() { + if (!persistantData.has('updateVer') || persistantData.get('updateVer') < 278) { myStance() - persistantData.set('updateVer', 272) + persistantData.set('updateVer', 278) persistantData.set('updated', false) persistantData.delete('ver270') persistantData.delete('message-502') persistantData.delete('message-503') + persistantData.delete('message-504') persistantData.delete('new-update-first-run') + persistantData.delete('keepBackups') + persistantData.delete('testBackups') + persistantData.delete('skipConfirm') + persistantData.delete('transMsg') + persistantData.delete('delCopyFolder') + persistantData.delete('known-issues-58') + persistantData.delete('known-issues-59') } else { updateNotesCallback() } } -function updateNotesCallback () { + +function updateNotesCallback() { if (visits > 0) { - if(!persistantData.get('updated')) { + if (!persistantData.get('updated')) { updateNotes() persistantData.set('updated', true) } } else { + persistantData.set('visits', 1) $('body').prepend('
    ') var firstTimeMessage = bootbox.dialog({ title: `
    Welcome To MZD-AIO-TI v${app.getVersion()} | MZD All In One Tweaks Installer
    `, - message: `

    Welcome to the AIO!

    All changes happen at your own risk! Please understand that you can damage or brick your infotainment system running these tweaks! If you are careful, follow all instructions carefully, and heed all warnings, the chances of damaging your system are greatly reduced.
    For more help, open the Help Panel or visit MazdaTweaks.com

    I appreciate feedback
    use the feedback link below to let me know what you think.

    Take The Tour


    ...
    `, - closeButton: false + message: `

    Welcome to the AIO!

    All changes happen at your own risk! Please understand that you can damage or brick your infotainment system running these tweaks! If you are careful, follow all instructions carefully, and heed all warnings, the chances of damaging your system are greatly reduced.
    For more help, open the Help Panel or visit MazdaTweaks.com

    I appreciate feedback
    use the feedback link below to let me know what you think.

    Take The Tour

    ***NOTE FOR FIRMWARE V59.00.502+*** CAN ONLY INSTALL TWEAKS AFTER GAINING ACCESS VIA SERIAL CONNECTION . THEN YOU WILL NEED TO INSTALL THE AUTORUN & RECOVERY SCRIPTS AFTER GAINING SERIAL ACCESS.


    ...
    `, + closeButton: false, + className: "first-time-dialog" }) setTimeout(function () { $('#super-overlay').remove() }, 3000) setTimeout(function () { @@ -176,9 +199,11 @@ function updateNotesCallback () { $('#newVerBtn').fadeIn(10000) }, 20000) } + dataCheck() } var helpClick = false -function helpDropdown () { + +function helpDropdown() { var x = document.getElementById('helpDrop') var y = document.getElementById('helpDropBtn') if (x.className.indexOf('w3-show') === -1) { @@ -202,14 +227,15 @@ function helpDropdown () { closeHelpDrop() } } -function closeHelpDrop () { + +function closeHelpDrop() { var x = document.getElementById('helpDrop') var y = document.getElementById('helpDropBtn') x.className = x.className.replace(' w3-show', '') y.innerHTML = "" } // Normal Drop Down Menus -function dropDownMenu (id) { +function dropDownMenu(id) { var x = document.getElementById(id) var y = $('#' + id) if (x.className.indexOf('w3-show') === -1) { @@ -224,16 +250,19 @@ function dropDownMenu (id) { } }) } -function toggleFullScreen () { + +function toggleFullScreen() { remote.BrowserWindow.getFocusedWindow().setFullScreen(!remote.BrowserWindow.getFocusedWindow().isFullScreen()) $('.icon-fullscreen').toggleClass('icon-fullscreen-exit') } // Extra Options Togglers var togg = false -function toggleOps (x) { + +function toggleOps(x) { $(x).toggleClass('icon-plus-square').toggleClass('icon-minus-square') } -function toggleAllOps () { + +function toggleAllOps() { var x = $('.toggleExtra') if (togg) { $('#alltoggle').addClass('icon-minus-alt').removeClass('icon-plus-alt') @@ -244,10 +273,12 @@ function toggleAllOps () { } togg = !togg } -function externalLink (link) { + +function externalLink(link) { shell.openExternal(`http://trevelopment.win/${link}`) } -function cleanArray (actual) { + +function cleanArray(actual) { var newArray = [] for (var i = 0; i < actual.length; i++) { if (actual[i]) { @@ -256,9 +287,9 @@ function cleanArray (actual) { } return newArray } -function donate () { + +function donate() { shell.openExternal('http://trevelopment.win/donate') - /* let donatewin = new remote.BrowserWindow({ width: 500, height: 600, @@ -272,61 +303,48 @@ function donate () { donatewin.on('closed', () => { remote.BrowserWindow.fromId(1).focus() }) - */ } // Returns list of USB Drives -function getUSBDrives () { +function getUSBDrives() { var disks = [] drivelist.list(function (error, dsklst) { if (error) { - bootbox.alert({ + console.error('Error finding USB drives') + /*bootbox.alert({ title: 'Error', message: 'Error finding USB drives: ' + error, callback: function () { bootbox.hideAll() } - }) - throw error + })*/ + //throw error } for (var i = 0; i < dsklst.length; i++) { if (!dsklst[i].system) { // console.log(disks[i]);console.log(disks[i].name);console.log(disks[i].description); - disks.push({'name': dsklst[i].name, 'desc': dsklst[i].description, 'mp': dsklst[i].mountpoint}) + disks.push({ 'name': dsklst[i].name, 'desc': dsklst[i].description, 'mp': dsklst[i].mountpoint }) } } return disks }) } -function getParameterByName (name, url) { + +function getParameterByName(name, url) { if (!url) url = window.location.href url = url.toLowerCase() // This is just to avoid case sensitiveness - name = name.replace(/[[\]]/g, '\\$&').toLowerCase()// This is just to avoid case sensitiveness for query parameter name + name = name.replace(/[[\]]/g, '\\$&').toLowerCase() // This is just to avoid case sensitiveness for query parameter name var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), - results = regex.exec(url) - if (!results) return ''// url.substr(url.lastIndexOf('/') + 1) + results = regex.exec(url) + if (!results) return '' // url.substr(url.lastIndexOf('/') + 1) if (!results[2]) return '' return decodeURIComponent(results[2].replace(/\+/g, ' ')) } -/* function getLanguage () { -var language = getParameterByName('lang') -if (!language) { -if (persistantData.has('lang')) { -language = persistantData.get('lang') -} else { -language = 'english' -} -} -persistantData.set('lang', language) -if (`${language}` === 'index.html') { language = 'english' } -var langURL = `lang/${language}.aio.json` -lang = `${language}` -langPath = `${app.getPath('home')}/lang/${lang}.aio.json` -langObj = require(langPath) -} */ -function alternateLayout () { + +function alternateLayout() { $('#options, #sidePanel').toggleClass('alt-layout') } -function secretMenu () { + +function secretMenu() { $(`
    `).insertAfter($('#snackbar')) $('#secretMenu').fadeOut(10000) } -function writeRotatorVars () { + +function writeRotatorVars() { if ($('#imgCount').text() > 1) { fs.writeFileSync(`${tempDir}/bg-rotator.txt`, `BG_STEPS=${$('#imgCount').text()}\nBG_SECONDS=${$('#imgCount').text() * $('#bgRotatorSeconds').val()}\nBG_SEC_EACH=${$('#bgRotatorSeconds').val()}\nBG_WIDTH=${$('#imgCount').text() * 800}`) } } -function saveAIOLogHTML () { - var a = document.body.appendChild( - document.createElement('a') - ) + +function saveAIOLogHTML() { + var a = document.body.appendChild(document.createElement('a')) a.download = 'AIO_Log.html' a.href = 'data:text/html,' + document.getElementById('aio-comp-log').innerHTML a.click() } -function checkForUpdate (ver) { - $.featherlight(`https://aio.trevelopment.com/update.php?ver=271`,{closeSpeed:100,variant:'checkForUpdate'}) + +function checkForUpdate(ver) { + $.featherlight(`https://aio.trevelopment.com/update.php?ver=278`, { closeSpeed: 100, variant: 'checkForUpdate' }) } -function formatDateCustom (dateFormatType) { + +function formatDateCustom(dateFormatType) { var currentTime = new Date() var dateStr = null @@ -384,10 +404,12 @@ function formatDateCustom (dateFormatType) { } $('#date').text(dateStr) } -function getAIOver () { + +function getAIOver() { return app.getVersion() } -function showCompatibility () { + +function showCompatibility() { $(`
    -

    **AIO IS COMPATIBLE WITH ALL FW V55, V56, V58, AND V59 UP TO V59.00.504**

    +

    **AIO IS COMPATIBLE WITH ALL FW V55, V56, V58, AND V59 UP TO V59.00.554**

    +

    NOTE: FW v59.00.502+ Requires Additional Steps To Install Tweaks. If updating to v59.00.502+ install Autorun & Recovery Scripts to allow Tweaks to be installed after updating.

    `).insertAfter($('#mzd-title')) } $(function () { diff --git a/app/assets/js/notifications.js b/app/assets/js/notifications.js index 08843c7..f6f7f59 100644 --- a/app/assets/js/notifications.js +++ b/app/assets/js/notifications.js @@ -1,17 +1,29 @@ // Display a notification message when a new version is ready for install +var dll = null ipc.on('update-not available', (event) => { - setTimeout(function(){ + setTimeout(function () { $('#update-available a').addClass('w3-hide') }, 2000) }) ipc.on('update-available-alert', (event) => { $('#update-available, #update-available a').removeClass('w3-hide') var updots = 0 - var dll = setInterval(function () { - if (updots !== 5) { $('#update-available a').append('.'); updots++ } - else{ $('#update-available').html('Update Downloading.'); updots=0 } + dll = setInterval(function () { + if (updots !== 5) { + $('#update-available a').append('.') + updots++ + } else { + $('#update-available').html('Update Downloading.') + updots = 0 + } }, 2000) }) +ipc.on('update-err', (event) => { + clearInterval(dll) + dll = null + $('#update-available').html('ERROR: CLICK HERE FOR UPDATE.') + snackbarstay(`UPDATE ERROR: CLICK HERE TO DOWNLOAD THE LATEST UPDATE.`) +}) ipc.on('update-downloaded', (event) => { snackbarstay(`An Update Is Available: UPDATE`) $('#update-available').text('Update Available') @@ -47,7 +59,8 @@ ipc.on('notif-progress', (event, message) => { ipc.on('notif-bg-saved', (event, message) => { showNotification('Background', `
    ${message}
    `, 10) }) -function showNotification (title, message, fadeouttime, callback) { + +function showNotification(title, message, fadeouttime, callback) { $('#notices').show() var notice = document.createElement('div') notice.setAttribute('class', 'notice') @@ -81,26 +94,28 @@ function showNotification (title, message, fadeouttime, callback) { ipc.on('snackbar-msg', (event, message) => { snackbar(message) }) -function snackbar (message, mtime) { + +function snackbar(message, mtime) { /*$('#snackbar').append('body') var x = document.getElementById('snackbar') x.innerHTML = message x.className = 'show w3-card-12' setTimeout(function () { x.className = x.className.replace('show', '') }, 1500)*/ $.gritter.add({ - title: 'MZD-AIO', - text: message, - time: mtime*1000 || 10000 + title: 'MZD-AIO', + text: message, + time: mtime * 1000 || 10000 }); } -function snackbarstay (message) { + +function snackbarstay(message) { //$('#snackbar').append('body') //var x = document.getElementById('snackbar') //x.innerHTML = message + '
    ×
    ' //x.className = 'stay w3-card-12' $.gritter.add({ - title: 'MZD-AIO', - text: message, - sticky:true + title: 'MZD-AIO', + text: message, + sticky: true }); } diff --git a/app/assets/js/printers.js b/app/assets/js/printers.js index 3efcafb..0012a13 100644 --- a/app/assets/js/printers.js +++ b/app/assets/js/printers.js @@ -8,12 +8,12 @@ window.addEventListener('load', () => { }) // Send printer events -function printTXTTest (i) { +function printTXTTest(i) { console.log('Printing TXT test on', window.printers[i].name) ipc.send('print-txt-test', window.printers[i]) } -function printPDFTest (i) { +function printPDFTest(i) { console.log('Printing PDF test on', window.printers[i].name) ipc.send('print-pdf-test', window.printers[i]) } diff --git a/app/assets/js/saveCanvas.js b/app/assets/js/saveCanvas.js index b05c341..1b081d9 100644 --- a/app/assets/js/saveCanvas.js +++ b/app/assets/js/saveCanvas.js @@ -1,6 +1,7 @@ window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL window.saveAs = window.saveAs || window.webkitSaveAs || window.mozSaveAs || window.msSaveAs -function saveCanvas (canvas, filename, fileformat) { + +function saveCanvas(canvas, filename, fileformat) { if (navigator.msSaveBlob || window.URL || window.saveAs) { if (canvas.toBlob) { canvas.toBlob(function (blob) { @@ -14,7 +15,7 @@ function saveCanvas (canvas, filename, fileformat) { } } -function dataURLToBlob (dataURL) { +function dataURLToBlob(dataURL) { var index = dataURL.indexOf(',') var meta = dataURL.substring(0, index) var data = dataURL.substring(index + 1) @@ -33,10 +34,10 @@ function dataURLToBlob (dataURL) { data = decodeURIComponent(data) } - return new Blob([data], {type: contentType}) + return new Blob([data], { type: contentType }) } -function saveBlob (blob, filename) { +function saveBlob(blob, filename) { if (navigator.msSaveBlob) { navigator.msSaveBlob(blob, filename) } else if (window.saveAs) { @@ -52,7 +53,7 @@ function saveBlob (blob, filename) { } } -function saveUrl (url, filename) { +function saveUrl(url, filename) { var link = document.createElement('a') if ('download' in link) { link.download = filename @@ -60,14 +61,14 @@ function saveUrl (url, filename) { link.style.position = 'absolute' link.style.left = '0' link.style.top = '0' - // some browsers need it to be in the document + // some browsers need it to be in the document document.body.appendChild(link) link.click() setTimeout(function () { document.body.removeChild(link) }, 250) } else { - // async callback -> window.open() will fail + // async callback -> window.open() will fail window.location = url } } diff --git a/app/assets/js/tour.js b/app/assets/js/tour.js index 5f0b543..3c27f06 100644 --- a/app/assets/js/tour.js +++ b/app/assets/js/tour.js @@ -1,8 +1,7 @@ -function startTour (tourMsgs) { - var tour = introJs().setOptions({ 'skipLabel': 'Skip Tour', 'doneLabel': 'Start!', 'tooltipClass': 'w3-pale-green w3-center', 'showStepNumbers': false, 'scrollToItem': true, 'exitOnOverlayClick': false, 'hideNext': true, 'hidePrev': true}) +function startTour(tourMsgs) { + var tour = introJs().setOptions({ 'skipLabel': 'Skip Tour', 'doneLabel': 'Start!', 'tooltipClass': 'w3-pale-green w3-center', 'showStepNumbers': false, 'scrollToItem': true, 'exitOnOverlayClick': false, 'hideNext': true, 'hidePrev': true }) tour.setOptions({ - steps: [ - { + steps: [{ intro: tourMsgs[0].msg, class: 'large-box' }, @@ -51,15 +50,14 @@ function startTour (tourMsgs) { }) tour.start() } -function AndroidAutoChoice () { - var AAchoice = introJs().setOptions({'doneLabel': 'Got It!', 'tooltipClass': 'w3-pale-green w3-center', 'showStepNumbers': false, 'scrollToItem': true, 'exitOnOverlayClick': false, 'hideNext': true, 'hidePrev': true}) + +function AndroidAutoChoice() { + var AAchoice = introJs().setOptions({ 'doneLabel': 'Got It!', 'tooltipClass': 'w3-pale-green w3-center', 'showStepNumbers': false, 'scrollToItem': true, 'exitOnOverlayClick': false, 'hideNext': true, 'hidePrev': true }) AAchoice.setOptions({ - steps: [ - { - element: document.querySelector('#options'), - intro: tourMsgs[1].msg, - position: 'auto' - } - ] + steps: [{ + element: document.querySelector('#options'), + intro: tourMsgs[1].msg, + position: 'auto' + }] }); } diff --git a/app/assets/js/translator.js b/app/assets/js/translator.js index 307ce32..acaf034 100644 --- a/app/assets/js/translator.js +++ b/app/assets/js/translator.js @@ -1,14 +1,15 @@ -var translateData = new Config({'name': 'aio-translate-save'}) +var translateData = new Config({ 'name': 'aio-translate-save' }) document.getElementById('submit').innerHTML = langObj.translatorWindow[14].label // Hook up the Restore to Default button document.getElementById('restore').addEventListener('click', function () { - editor.setValue(JSON.parse(fs.readFileSync(`${langPath}`, {encoding: 'utf8'}))) + editor.setValue(JSON.parse(fs.readFileSync(`${langPath}`, { encoding: 'utf8' }))) translateData.set('data', editor.getValue()) }) document.getElementById('restore').innerHTML = langObj.translatorWindow[1].label + ` (${lang})` document.getElementById('loadLang').innerHTML = `${lang}` -function gotoTranslator () { + +function gotoTranslator() { $(this).hide() } // This is the starting value for the editor @@ -18,7 +19,7 @@ var startingValue if (translateData.has('data')) { startingValue = translateData.get('data') } else { - startingValue = JSON.parse(fs.readFileSync(`${langPath}`, {encoding: 'utf8'})) + startingValue = JSON.parse(fs.readFileSync(`${langPath}`, { encoding: 'utf8' })) } // Initialize the editor @@ -82,7 +83,7 @@ document.getElementById('import').addEventListener('click', function () { ] }, function (files) { if (files) { - jsonData = fs.readFileSync(files[0], {encoding: 'utf8'}) + jsonData = fs.readFileSync(files[0], { encoding: 'utf8' }) editor.setValue(JSON.parse(jsonData)) } }) @@ -92,7 +93,7 @@ ipc.on('translate-file', function (data) { if (data) { console.log(data[0]) console.log(data[0].toString()) - var loadSaved = fs.readFileSync(data[0], {encoding: 'utf8'}) + var loadSaved = fs.readFileSync(data[0], { encoding: 'utf8' }) console.log(loadSaved) editor.setValue(JSON.parse(loadSaved)) } @@ -100,7 +101,7 @@ ipc.on('translate-file', function (data) { document.getElementById('import').innerHTML = langObj.translatorWindow[9].label -function gotoTranslator () { +function gotoTranslator() { $(this).hide() } @@ -144,7 +145,7 @@ $(function () { editor.getEditor($(this).parent().parent().attr('data-schemapath')).setValue(clipboard.readText()) }) $('input, textarea').click(function () { - $('#cpyBtn').insertAfter($(this))// $(this).val() + $('#cpyBtn').insertAfter($(this)) // $(this).val() $('#cpyBtn').val($(this).val()) }) diff --git a/app/assets/js/videoplayer.js b/app/assets/js/videoplayer.js index 6387686..8236e15 100644 --- a/app/assets/js/videoplayer.js +++ b/app/assets/js/videoplayer.js @@ -1,17 +1,17 @@ - var videoPlayer = document.getElementById('videoPlayer') var vidlinks = videoPlayer.getElementsByTagName('a') for (var i = 0; i < vidlinks.length; i++) { vidlinks[i].onclick = vidhandler } -function vidhandler (e) { + +function vidhandler(e) { e.preventDefault() var videotarget = this.getAttribute('href') var filename = videotarget.substr(0, videotarget.lastIndexOf('.')) || videotarget var video = document.querySelector('#videoPlayer video') if (this.hasAttribute('loop')) { video.setAttribute('loop', true) } else { video.removeAttribute('loop') } video.removeAttribute('poster') - source = document.querySelectorAll('#videoPlayer video source') + var source = document.querySelectorAll('#videoPlayer video source') source[0].src = filename + '.webm' video.load() video.play() diff --git a/app/assets/js/zoom.js b/app/assets/js/zoom.js index 5c41269..2b2e79a 100644 --- a/app/assets/js/zoom.js +++ b/app/assets/js/zoom.js @@ -3,11 +3,11 @@ const ipc = electron.ipcRenderer const webFrame = electron.webFrame const maximumZoomLevel = 3 -const {Menu} = electron.remote +const { Menu } = electron.remote var currentZoomLevel, zoomMenuItems -function getZoomUI () { +function getZoomUI() { const menu = Menu.getApplicationMenu() var menuItems = [] menu.items.forEach((item) => { @@ -22,13 +22,13 @@ function getZoomUI () { return menuItems } -function enableZoomUI () { +function enableZoomUI() { zoomMenuItems.forEach((item) => { item.enabled = true }) } -function disableZoomUI () { +function disableZoomUI() { zoomMenuItems.forEach((item) => { item.enabled = false }) diff --git a/app/assets/vendor/w3.css b/app/assets/vendor/w3.css index 6322c6e..b624b64 100644 --- a/app/assets/vendor/w3.css +++ b/app/assets/vendor/w3.css @@ -491,3 +491,6 @@ ul.dropdown-menu { left: 0; margin: auto; } +input#gracenoteText { + cursor: text; +} diff --git a/app/changelog.htm b/app/changelog.htm index 96fde56..85563b3 100644 --- a/app/changelog.htm +++ b/app/changelog.htm @@ -1,30 +1,122 @@

    MZD-AIO-TI v2 CHANGELOG

    +

    2.7.8

    +

    Speedometer v5.5 - All In One Speedometer

    + +
      +
    • Analog, Modded and Bar Speedometers are now All In One!
    • +
    • All options are available and will be applied to the proper Speedometer
    • +
    • Choose which speedometer to start with by default (if starting with Bar Speedometer other options will still determine the starting state of the Classic Speedometer)
    • +
    • The speedometer-config.js file now has all the options, set a variable to determine if override values are used or installed options.
    • +
    • Invalid Values Show "---" Such As Gear Position/Lever for Manual Transmissions
    • +
    • Gear Lever Shows P - R - N - D
    • +
    • Toggles will Show The Action In A Statusbar Notification
    • +
    • Hold "Up" on multicontroller to switch between Classic and Bar Speedometer Mode
    • +
    • Hold "Down" in Classic mode to disable single click toggles (Basic Mode))
    • +
    • Modded Speedometer (in Classic mode): +
        +
      • Single click "Up" to increase size of values
      • +
      • Multicontroller "Select" toggles between Digital and Analog speed
      • +
      • Single click "Down" to show alternate values
      • +
      +
    • +
    • Bar Speedometer: +
        +
      • Configure The Amount of Bottom Rows in "speedometer-config.js" (Default 4)
      • +
      • Hold "Down" to show/hide speed bar
      • +
      • + TAP Any 2 Values To Swap Their Positions! +
          +
        • Any Values Can Be Swapped Even The Main
        • +
        • When The Main Value Is Swapped An SBN Will Show With The Value Name
        • +
        • Tap Below The Bottom Row To Swap Hidden Values In Other Rows
        • +
        • Exiting The App Will Reset Positions To Your Default
        • +
        • Tap Selected Value Again To Cancel
        • +
        +
      • +
      +
    • +
    + +

    For More Info Check Out The Speedometer Repository + +

    +
    +

    AIO Tweaks App v0.6

    + +
      +
    • "Reverse App List" button - Reverses the Applications List (resets on boot).
    • +
    • "Unmount Swap" button - Unmount the mounted swapfile.
    • +
    + +

    Test Mode (T/M) Button (Thread)

    + +
      +
    • Included with the + 1 Second Diagnostic Menu tweak because it is part of the Diagnostic App
    • +
    • In v59 "JCI Test Mode" was disabled in the Diagnostic App +
        +
      • This tweak brings back Test Mode for v59
      • +
      • Makes it easier to get to in v55-v58 (Just press the T/M button)
      • +
      +
    • +
    • Once Test Mode is started type 11 to open the well known Test Menu
    • +
    • + + BE CAREFUL IN TEST MODE, DON'T DO ANYTHING YOU ARE UNSURE ABOUT! + +
    • +
    + +
    Tweak Installer Changes/Fixes
    + +
      +
    • App install/uninstall now uses NodeJS to add/remove from app list +
        +
      • Allows for cleaner installations
      • +
      • Backward compatible
      • +
      • Solves the issue of all apps disappearing off the app list when only 1 is uninstalled due to improperly formatted JSON file
      • +
      • " + Legacy App Install" in install options to use the old method (using bash) +
          +
        • The only reason I can think of for this is if you already have an improperly formatted JSON file then you need to uninstall all apps with legacy installer because the NodeJS code will throw an error. Other than that the NodeJS code will never + cause an improperly formatted JSON file.
        • +
        +
      • +
      +
    • +
    • Cleaned up installer code +
        +
      • Removed some superfluous code
      • +
      • Fixed many inconsequential errors
      • +
      +
    • +

    2.7.6

    -

    MZD-AIO GUI Changes/Fixes:

    +
    MZD-AIO GUI Changes/Fixes:
    • Fixed "Bootbox is not defined" error preventing AIO from running for some.
    • Alternate Layout Toggle (Full Width Tweak Choices & Options)
    • Changed Up Notification Style
    • Phase 1 of GUI Style Redesign
    • Autorun & Recovery and Full System Restore links in dropdown menu by "Start Compilation"
    • Home Button brings you back to main page. (if you ever wondered what that was for)
    -

    Video Player v3.3.1

    +
    Video Player v3.3.1
    • Fixed the unicode list retrieve and removes the "only unicode" method
    • Disabled the log functions as they are not needed now
    • Video Name shows in a Statusbar Notification at the beginning of each video
    • Now it takes the time from gplay app
    • Music player with MP3 & FLAC support (From the Music folder on the USB Drive).
    • Adds the FLAC codec to the gstreamer libs
    • It shows the metadata of the files when playing music
    • Other small bug fixes
      Pause Audio Hack
      • Pressing the "Entertainment" (Music) button will pause audio
      • This only works ONCE AFTER OPENING THE VIDEO PLAYER APP AND BEFORE PLAYING THE FIRST VIDEO
      • Audio has to be playing from USB or button will function normally
      • After it has been done once or the first video is played the entertainment button will function normally
      • You will see a split-second context change... that is the only way I could get the audio to pause.
    -

    AIO Tweaks App v0.5

    +
    AIO Tweaks App v0.5
    • Fixed The Freezing Issue
    • Added SBN Test Button (Status Bar Notification)
    • ADB Button ($ adb devices -l)
    -

    Speedometer v5.1

    +
    Speedometer v5.1
    • Added values (set in "speedometer-config.js")
      • Battery SOC (State of charge iStop only)
      • Engine Load (Only shows 0 or 1 for now)
      • Gear Lever Position
    • Gear Position will show correct gear for Manual Transmissions (delayed by 1 second)
    • Fixed non working values (idle time, engine idle time, engine top speed)
    • To reuse current "speedometer-config.js" file just delete "config/speedometer_bar/speedometer-config.js" before installing
    • CHANGED: WebSocket port from 55554 => 9969
    • CHANGED: Multicontroller Tilt Down Now Toggles the SPEED BAR from Vehicle Speed to Engine Speed
    -

    USB Audio MOD

    +
    USB Audio MOD
    • Statusbar Notifications On Every Screen At The Start Of Each Song!
      • SBN for 5 Seconds: "Artist - Song"
      • Not Android Auto Screens (Sorry its not possible to cross surfaces like that)
    • Change the "Powered By Gracenote®" flash text to whatever you want!
      • Clear text field blank to disable altogether.
      • If flash text is not showing, genre will show on that line for 20 seconds (If it is in the metadata)
    -

    Other Changes/Fixes

    +
    Other Changes/Fixes
    • Tweak Installer:
      • When installing apps, all common files (addon-common and opera folders) for are now in /config/jci/...
      • Cleaned up app install scripts to be more uniform and efficient
      • No more app list patch for v59! (Apps are added to the app ctxt list dynamically.)
      • Log files are saved in bakup folder so they are not lost if install accidently runs twice
    • Other Tweaks:
      • Added Language Support for 'Reverse Camera Safety Warning' Tweak
        • Ukrainian, Japanese, Chinese, Korean, Thai, Hebrew, Swedish, Slovak
      • Added Ukrainian to 'Remove Message Replies' Tweak
    @@ -183,7 +275,7 @@

    Other Stuff

  • Support for v59.00.504*
  • Skip Confirmation choice will persist
  • -

    2.7.0

    +

    2.7.0

    Android Auto v1.04
    • Bluetooth Call Bug Fixed!!! Big thanks to @lmagder for fixing the headunit code after @Trezdog44 found the root of the issue with the 'Bluetooth call patch'
    • Video focus is lost at the beginning and end of a call due to the system expecting a context change. Press the FAV (<span class="icon-star"></span>) Button to get video focus back and AA will function normally.
    • Phone button opens AA phone screen, also call buttons work for answering and ending calls.
    • N\AV button opens the AA home screen
    • Tap the black box on the credit screen to display contents of the headunit.log file.
    • Added the Android Auto Icon to the statusbar
    • (The 'Bluetooth Call Patch' from AA 1.03 is no longer needed from this version on.)
      • (If it was applied will be reverted back to normal)
    @@ -194,7 +286,7 @@
    VideoPlayer v3.0
    AIO Tweaks v0.3
    • Start Headunit Process
      • Will now successfully Start Android Auto Headunit Process
      • Also Active Headunit stdout will pop up
    • View Headunit Log
      • Shows the existing headunit.log file in a window
    • Screen off
      • Turns the screen off
    • wifiAP
      • Starts Wifi Access Point
      • (start_wifi.sh; jci-wifiap.sh start)
    • Stop Firewall
      • Stops the firewall
      • (jci-fw.sh stop)
    • System Restore WARNING: This will remove all tweaks and uninstall all AIO apps
      • Restore you system on the fly with a slimmed down restore script
      • Removes all tweaks and AIO apps including this one
      • Does not restore Color Scheme (all those image files take up a lot of space)
      • Very small and safe only targets and restores from internal backups.
      • Asks for verification twice to ensure it is not accidentally run.
    • Env - Environment variables
      • For informational/educational purposes
      • Also used by developers for fun times
    • Fixed saving issue with the tweak toggle buttons

    • General Improvements/Bug Fixes

      • On Startup looks for some AIO log files loads FW version if found.
      • If FW version is found An "i" Icon will appear in the top menu bar to the left of the "reload" icon.
      • Click the icon to show your FW version, future plans to display more pertinent information as well.
      • Added Save Button to Success Dialog
      • Added To Top Menu "Downloads > Check For Update"
      • Small logging fixes in autorun and recovery scripts
      • Fixed WiFiAP files not copying when it was the only autorun script chosen
      • Many other small improvements/fixes
    -

    v2.6.8

    +

    v2.6.8

    • New Install Option: Retrieve CMU Data
      • Changes the 'no's to 'yes' in dataRetrieval_config.txt
      • @@ -245,12 +337,12 @@

        v2.6.8

    -

    v2.6.6

    +

    v2.6.6

    ID7_Recovery Pack - A collection of autorun scripts that will lay dormant until needed for recovery. Upon detected configuration change automatically applies SSH_bringback with additional recovery features, it is the easyest way to maintain system access.
    • ID7_Recovery - Fixed Install not showing dialog to reboot
      • Fixed cmu user/pass
      • Configuration Improvements - Opens Ports 22, 24000, & 36000 for SSH access
        • (**SSH_Bringback also opens additional ports 24000 & 36000**)
      • (Recomended Update if already installed)
    • Fixed these release notes popping up every time AIO is opened
    • Added some images and info in help messages
    -

    v2.6.5

    +

    v2.6.5

    ID7_Recovery will persist through a Firmware update. On each boot checks, and if necessary repairs the following:
    • SSH access
        @@ -270,7 +362,7 @@

        v2.6.5

      It is recommended to install this pack BEFORE updating firmware or anytime as a safety net. This script will ensure that SSH access will be automatically restored if it is lost for any reason. -

      v2.6.4

      +

      v2.6.4

      CMU-Autorun - For Testing and Recovery

      • Autorun Installer - Install the autorun script BEFORE updating to v59.00.502 to recover your system and regain access after the update is complete.
      • There is no harm, performance impact, or danger installing the autorun script and not using it until it is needed.
      • If there is no run.sh script file available at the root of the SD card or USB drives the script silently does nothing.
      • Ultimately it is a good idea for everyone to install because it provides an additional layer of safety for system recovery in any situation.
      • More to come in the next AIO update, for SD card scripts to use with autorun check out the CMU-autorun repository
      • Make sure you check the forums before allowing an update to an unknown firmware version to ensure this and other known workarounds have not been closed.

      AIO Tweaks App!

      @@ -286,7 +378,7 @@
      Speedometer Variant
      • Press Command Knob or Tap 'Total Time': Reset 'Total Time,' (to 0) 'Ave. Speed,' 'Top Speed,' (to 0 or current speed) and both idle time fields (reset to 0 view will reset when vehicle is idle again).
      • Tilt-Down or Tap 'Top Speed': Toggle hide/show for both idle times and increase the font-size of all other fields.
      • Tilt-Left: Digital Speedometer
      • Tilt-Right: Analog Speedometer
      • Tilt-Up: Toggle between mph and km/h

      Bug Fixes

      • Fixed Bug with Apps randomly disappearing from App Menu effecting v59.00.400 - v59.00.450
      • Fixed bug where after running the 'Full Restore' Script, 'Android Auto' could not be reinstalled.
        • Applied fix to both the 'Full Restore' Script and 'Android Auto' Install Script
      -

      v2.6.1

      +

      v2.6.1

      CMU-Autorun
      • Linked in the "download" menu & "Help Panel > Tips & Tricks" - Installer/Uninstaller is in one script.
      • @@ -300,7 +392,7 @@
        Tweak Fixes
      • Fixed Smooth color themes changing background when "Use Color Scheme Background" option is not checked.
      • Applying color scheme will no longer overwrite custom blank album art or custom off-screen background.
      -

      v2.6.0

      +

      v2.6.0

      NEW TWEAKS:

      • USB Audio Mod | By: Enlsen

        @@ -391,7 +483,7 @@

        v2.5.10

      • Adjusted CastScreen, may fix issues for some.
      • Added compatible firmware 59.00.445A-JP
      -

      v2.5.9

      +

      v2.5.9

      SSH_Bringback:

      • A second root user/pass - jci/jci is now added.
      • @@ -423,7 +515,7 @@

        SSH_Bringback:

    -

    v2.5.6

    +

    v2.5.6

    • PATCHES:
      • Fixed the Error Message Display in the VideoPlayer
          @@ -441,7 +533,7 @@

          v2.5.6

      -

      v2.5.5

      +

      v2.5.5

      • VIDEO PLAYER V2.9
        • Full multicontroller functionality
          • Scroll and Select Video List (cw/ccw - select)
          • List looping in selection and playback
          • Scroll and Select Options (tile-right/left - select)
        • Previous track
          • Play Previous Video
        • Repeat all option
          • Recently Played Videos are not repeated in shuffle mode until the entire list is played.
          • Toggling Repeat All will clear recently played videos list.
        • Save Configuration To Local Storage
          • Utilize the CMU's Local Storage to save options even after a reboot.
          • All option choices AND recently played video list are saved to local storage.
        • More Touch Controls During playback
        • Removing Navigation SD card will improve video player performance this is due to the memory issues that exist within the MZD system.
        • Installation of the swapfile will also improve performance, swap mounting has been improved.
      Want more info on the Video Player? Check out the Video Player Repository
      • CUSTOM BOOT ANIMATIONS (Big Thanks to hrangel)
        • Change all or part of the boot animation (Default 'Disabled' Animation Uses Default LoopLogo for all 3 parts of the sequence allowing for the shortest boot time the illusion of no boot animation)
        • Boot Animation Sequence Goes: LoopLogo[1] => TranLogo[2] => TranLogoEnd[3]
        • Choices:
          • Mazda Logo (Default LoopLogo) [All]
          • Matrix [All]
          • Mazda Z Loop [All]
          • Large Mazda Tran [All]
          • Mazda Cinema [Loop - 1 & 2, end 3]
          • Criss Cross [Loop - 1 & 2, end 3]
          • Mazda Race [Loop - 1 & 2, end 3]
          • Fiat Logo [1]
          • Spider 124 Tran [2]
          • MZD Title Slam [3]
          • MZD Space Logo [3]
          • Car Flash [3]
          • Default Animations Are Also Included As Choices
        • In App Preview of Boot Animations
      @@ -450,11 +542,11 @@
      Want more info on the Video Player? Check out the New APK for Android v 7.0 (castscreen-1.0.1.apk)
    -

    v2.5.0

    +

    v2.5.0

    IMPORTANT: DUE TO A DMCA TAKEDOWN

    ALL FILES ASSOCIATED WITH THE SPEEDCAM PATCH, NNG, IGO AND ANY NAVIGATION PATCHING TOOLS ARE NO LONGER AVAILABLE WITH MZD-AIO-TI.

    This will allow for continued development of this project without infringing on the copyrights of NNG Kft. and potentially causing the company to target developers and/or users to sue for Copyright Infringement.
    Additionally, no information regarding speedcam or navigation patching will be available or provided through MZD-AIO-TI or any associated developer of MZD-AIO-TI.

    Uninstall for speedcam patch will be available but is deprecated and will eventually be removed
    -

    2.4.3

    +

    2.4.3

      Video Player 2.8

    • Did somebody say VIDEO PLAYER MUTICONTROLLER SUPPORT?? YES I DID!
      • ButtonPress = Play/Pause
      • @@ -475,7 +567,7 @@

        2.4.3

      • Fixed a little bug where SSH_bringback wasn't being added to compilation when autoselected.
      FOR AIO v1.x.x CHANGELOG or visit MazdaTweaks.com
      -

      v2.4.2

      +

      v2.4.2

      • Reverted Compatibility for 'Media Order Patch & FLAC Support' tweak.
        • Compatibilities with issues are neatly commented out in the code for testing purposes.
        • @@ -486,7 +578,7 @@

          v2.4.2

        • Choosing 'Media Order Patch & FLAC Support' will auto-choose SSH_Bringback (It can be unselected but that is not recommended).
        • Speedcam Patch Compatibility should be ok but should be considered a beta test for FW. ver. 59.00.411A-NA & 59.00.443C-EU.
        -

        v2.4.0

        +

        v2.4.0

        • Android Auto Bugfixes
          • re-enables the dialer interface if the phone is paired and connected to the headunit via BT (Not Completely fixed, Still an Issue)
          • @@ -533,23 +625,23 @@

            v2.4.0

          • Bits of Resizing and shifting.
          • Font change.
          -

          v2.3.4

          +

          v2.3.4

          • Added Speedometer Variant By: pnedkov
            • Tap Screen To Switch Between Analog & Digital Style Speedometer
        • Re-enabled SSH Bringback
        • -

          v2.3.3

          +

          v2.3.3

          • Moved Backup options to a Pop-out 'Install Options' panel on the top-left side
          • Added a 'Skip Confirmation' Option (Also in the Install Options Pop-out Panel)
          • Added a 'Compatibility Check' view to clarify Compatibilities (Under the 'Help' Menu)
          -

          v2.3.2:

          +

          v2.3.2:

        • Disabled SSH bringback untill issue is resolved
        • -

          v2.3.1:

          +

          v2.3.1:

          • Fix Bug with Compass and Speedometer in v59+ (noNavSD = true;)
          • Added 'Remove List Loop Beep' Option
          -

          v2.3.0:

          +

          v2.3.0:

          Video Player v2.7 Update - IS AWESOME THANK YOU VIC_BAM85!!!
          • New Controls in full screen mode:
              @@ -617,7 +709,7 @@
              Bug Fixes:
            • Some Tweaks not showing for certain languages

            Compatible Firmware Version: 56.00.514A-ADR

            -

            v2.2.4:

            +

            v2.2.4:

            • Better Comments - If You Like To Look At The Code
            • Fallbacks Are Commented Out - So If You Really Need One You Can Get It
                @@ -655,7 +747,7 @@

                v2.2.4:

            -

            v2.2.0:

            +

            v2.2.0:

            MAJOR CODE REFACTORING

            Tweak Files - All around improvements in coding style, efficiency, logging, compatibility, commenting, and error handling
            IF YOU HAVE PREVIOUSLY INSTALLED NO-MORE-DISCLAIMER, ORDER OF AUDIO SOURCE LIST, OR IMPROVED LIST LOOP MOD ON FW V59 PLEASE REINSTALL (OR UNINSTALL) BECAUSE THE FILES USED IN YOUR INSTALLATION WERE NOT UPDATED TO YOUR FIRMWARE.
            @@ -701,12 +793,12 @@
            Notable Changes:
        • Mini Speedometer automatically hides the notification border without date to statusbar mod
        • Fixed a typo causing the blue nav color scheme to fail to uninstall. Now it is removed when changing back to default (red).
        • -

          I Will take suggestions for main menu layouts, Just mock up your Idea in Photoshop or paint or, for you software freedom lovers, GIMP2

          +

          I Will take suggestions for main menu layouts, Just mock up your Idea in Photoshop or paint or, for you software freedom lovers, GIMP2

          'Star Points' Layout:

          Star Points Layout

          'Inverted' Layout:

          Inverted Layout
          (Main Menu Label On Top Of The Screen Under Statusbar)
          -

          v2.1.5:

          +

          v2.1.5:

          • UI Style Tweaks:

              @@ -726,7 +818,7 @@

              v2.1.5:

            • Blue Color Scheme Now Includes Blue Navigation Color Scheme
            • Android Auto Install Works!
            -

            v2.1.3:

            +

            v2.1.3:

            • Fixed The Issue causing installation to fail to start in the car.
            • Window state is now saved on exit and restored upon reopening. For real this time.
                @@ -739,7 +831,7 @@
                Android Auto Patch!: https://github.com/gartnera/headunit/commit/70958cf33c9facaed11f4b59c11f -

                v2.1.2:

                +

                v2.1.2:

                • Background Rotator will now rotate up to 50 backgrounds (More backgrounds will take longer to load)
                  • Also set the number of seconds each background will show: from 10 - 300 seconds (5 minutes)
                  • @@ -752,7 +844,7 @@

                    v2.1.2:

                  • Window state is now saved on exit and restored upon reopening.
                  • Some more bug and formatting fixes.
                  -

                  v2.1.0:

                  +

                  v2.1.0:

                  • NEW TWEAKS!!
                    • Statusbar Tweaks
                    • @@ -777,7 +869,7 @@

                      v2.1.0:

                    • Retrieves FW version from previously used USB drive
                    • French Translation By: Salegosse (Mazda3revolution.com)
                    -

                    v2.0.6:

                    +

                    v2.0.6:

                    • Copy buttons for text fields on translator page.
                    • Added a top bar and clock to the background preview.
                    • @@ -785,7 +877,7 @@

                      v2.0.6:

                    • Fixed Castscreen Receiver
                    • Fixed Android Auto
                    -

                    v2.0.5:

                    +

                    v2.0.5:

                    • Initial language chosen for Speedometer Tweak based on locale (Fallback to English if locale does not match any provided translations or is not found.)
                    • Speedometer: Km/h selected by default except en-US (mph if locale = en-US).
                    • @@ -795,7 +887,7 @@

                      v2.0.5:

                    • Added some HINT messages during Compilation
                    • Added Infotainment Frame to background preview
                    -

                    v2.0.4:

                    +

                    v2.0.4:

                    • Fixed bug when choosing Swapfile tweak and not copying directly to USB Drive.
                    • Fixed bug where Patched files were not copying for Speedcam Patch
                    • @@ -820,7 +912,7 @@
                      Added Key bindings:
                  -

                  v2.0.3:

                  +

                  v2.0.3:

                  • Updated Patching Tool v2.3 (Thanks Modfreakz!).
                  • Added Compatible fw v.56.00.100A-EU.
                  • @@ -833,12 +925,12 @@

                    v2.0.3:

                  • EXPERIMENTAL FEATURE: GOOGLE TRANSLATE Can be found in Help & Settings Menu. (Some languages will break the formatting)
                  • GOOGLE TRANSLATE pop-up on the translator page to assist with translations.
                  -

                  v2.0.2:

                  +

                  v2.0.2:

                  • Clean up code/Improvements in logging
                  • Updated Android Auto with the latest binaries. Should be stable now but needs additional testing to confirm
                  -

                  v2.0.1:

                  +

                  v2.0.1:

                  • Automatic Updates
                  • Delete copy to usb folder after copying to USB Drive option
                  • diff --git a/app/config.json b/app/config.json deleted file mode 100644 index 35cb40d..0000000 --- a/app/config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "debug": false -} diff --git a/app/controllers/home.js b/app/controllers/home.js index b63d8aa..2315e75 100644 --- a/app/controllers/home.js +++ b/app/controllers/home.js @@ -64,6 +64,7 @@ aaBetaVer: false, vpUnicode: false, gracenoteText: "Powered By Gracenote®", + noNodeInstall: settings.get('noNodeInstall') || false, altLayout: settings.get('altLayout') || false, darkMode: settings.get('darkMode') || false, flipOption: settings.get('flipOption') || '', @@ -125,9 +126,9 @@ temperature: {id: 42}, startbar: {id:45}, color: null, - mod: false, - modAlt: false, - simpmod: false, + mod: true, + modAlt: true, + simpmod: true, sbtemp: false, digiclock: false, opac: 0 @@ -720,6 +721,22 @@ function CasdkCtrl ($scope, $http) { devtools: false, sdcard: false } + $scope.visibleApps = { + simpledashboard: casdkApps.get('simpledashboard') || true, + multidash: casdkApps.get('multidash') || false, + vdd: casdkApps.get('vdd') || false, + terminal: casdkApps.get('terminal') || false, + gpsspeed: casdkApps.get('gpsspeed') || false, + aio: casdkApps.get('aio') || false, + speedometer: casdkApps.get('speedometer') || false, + tetris: casdkApps.get('tetris') || false, + snake: casdkApps.get('snake') || false, + breakout: casdkApps.get('breakout') || false, + background: casdkApps.get('background') || false, + multicontroller: casdkApps.get('multicontroller') || false, + devtools: casdkApps.get('devtools') || false, + sdcard: casdkApps.get('sdcard') || false + } $scope.compileCASDK = function(user) { buildTweakFile(user, $scope.apps) } diff --git a/app/files/tweaks/00___fullRestore.sh b/app/files/tweaks/00___fullRestore.sh index 1c01928..d38004a 100644 --- a/app/files/tweaks/00___fullRestore.sh +++ b/app/files/tweaks/00___fullRestore.sh @@ -19,7 +19,7 @@ then log_message "=== Original data.zip is available as backup ===" cp -a /jci/nng/data.zip.org /jci/nng/data.zip log_message "=== Renamed data.zip.org back to data.zip ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/nng/data.zip.org log_message "=== Deleted backup: data.zip.org ===" @@ -31,7 +31,7 @@ if [ -e /jci/nng/jci-linux_imx6_volans-release.org ] then mv /jci/nng/jci-linux_imx6_volans-release.org /jci/nng/jci-linux_imx6_volans-release show_message "RESTORED JCI-LINUX_IMX6_VOLANS-RELEASE BACK TO ORIGINAL" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/nng/jci-linux_imx6_volans-release.org log_message "=== Deleted backup: jci-linux_imx6_volans-release.org ===" @@ -61,7 +61,7 @@ fi # rm -f /usr/lib/gstreamer-0.10/libgstflac.so # rm -f /usr/lib/libFLAC.so.8.3.0 # rm -f /usr/lib/libFLAC.so.8 -# if [ "${DEL_BAKUPS}" = "1" ] +# if [ $DEL_BAKUPS -eq 1 ] # then # rm -f /jci/lib/libmc_user.so.org # log_message "=== Deleted backup: libmc_user.so.org ===" @@ -80,7 +80,7 @@ then rm -f /jci/gui/apps/system/js/systemApp.js.audio rm -f /jci/gui/apps/system/js/systemApp.js.disclaimer log_message "=== Removed systemApp.js.audio and systemApp.js.disclaimer flags ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/js/systemApp.js.org log_message "=== Deleted backup: systemApp.js.org ===" @@ -98,7 +98,7 @@ then log_message "============********** UNINSTALL MAIN-MENU-LOOP ... ********=============" cp -a /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js.org /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js log_message "=== Restored Original MainMenuCtrl.js From Backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js.org log_message "=== Deleted backup: MainMenuCtrl.js.org ===" @@ -114,7 +114,7 @@ then log_message "=========******** UNINSTALL LIST_LOOP_MOD ... *********=======" cp -a /jci/gui/common/controls/List2/js/List2Ctrl.js.org /jci/gui/common/controls/List2/js/List2Ctrl.js log_message "=== Restored List2Ctrl.js from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/List2/js/List2Ctrl.js.org log_message "=== Deleted backup: List2Ctrl.js.org ===" @@ -138,7 +138,7 @@ then fi if [ -e /jci/gui/apps/diag/js/diagApp.js.org ] || [ -e /jci/gui/apps/diag/js/diagApp.js.org2 ] then - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/diag/js/diagApp.js.org rm -f /jci/gui/apps/diag/js/diagApp.js.org2 @@ -161,6 +161,27 @@ then fi rm -f /jci/gui/common/js/Common.js.org2 fi +if [ -e /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org ] +then + cp -a /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org /jci/gui/apps/diag/controls/Test/js/TestCtrl.js + log_message "=== Restored TestCtrl.js From Backup ===" + if [ $DEL_BAKUPS -eq 1 ] + then + rm -f /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org + log_message "=== Deleted backup: TestCtrl.js.org ===" + fi +fi +if [ -e /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org ] +then + cp -a /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org /jci/gui/apps/diag/controls/Test/css/TestCtrl.css + log_message "=== Restored TestCtrl.css From Backup ===" + if [ $DEL_BAKUPS -eq 1 ] + then + rm -f /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org + log_message "=== Deleted backup: TestCtrl.css.org ===" + fi +fi +log_message " " # remove pause on mute if [ -e /jci/gui/common/js/Common.js.org ] then @@ -174,7 +195,7 @@ then fi cp -a /jci/gui/common/js/Common.js.org /jci/gui/common/js/Common.js log_message "=== Common.js Restored From Backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/js/Common.js.org log_message "=== Deleted backup: Common.js.org ===" @@ -193,7 +214,7 @@ then log_message "========********** UNINSTALL BACKGROUND ROTATOR ... *******========" cp -a /jci/gui/common/css/common.css.org /jci/gui/common/css/common.css log_message "=== Restored /jci/gui/common/css/common.css from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/css/common.css.org log_message "=== Deleted backup: common.css.org ===" @@ -212,7 +233,7 @@ then log_message "=========********* UNINSTALL REMOVE MESSAGE REPLIES ... ********=========" cp -a /jci/settings/configurations/blm_msg-system.xml.org /jci/settings/configurations/blm_msg-system.xml log_message "=== Message Replies Restored From Backup blm_msg-system.xml.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/settings/configurations/blm_msg-system.xml.org log_message "=== Deleted backup: blm_msg-system.xml.org ===" @@ -228,7 +249,7 @@ then log_message "========******** UNINSTALL DISABLE BOOT ANIMATION ... ********========" cp -a /jci/resources/LoopLogo.ivf.org /jci/resources/LoopLogo.ivf log_message "=== Restored original /jci/resources/LoopLogo.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/LoopLogo.ivf.org log_message "=== Deleted backup: LoopLogo.ivf.org ===" @@ -238,7 +259,7 @@ if [ -e /jci/resources/ExitLogo.ivf.org ] then cp -a /jci/resources/ExitLogo.ivf.org /jci/resources/ExitLogo.ivf log_message "=== Restored original /jci/resources/ExitLogo.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/ExitLogo.ivf.org log_message "=== Deleted backup: ExitLogo.ivf.org ===" @@ -248,7 +269,7 @@ if [ -e /jci/resources/TranLogo.ivf.org ] then cp -a /jci/resources/TranLogo.ivf.org /jci/resources/TranLogo.ivf log_message "=== Restored original /jci/resources/TranLogo.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/TranLogo.ivf.org log_message "=== Deleted backup: TranLogo.ivf.org ===" @@ -258,7 +279,7 @@ if [ -e /jci/resources/TranLogoEnd.ivf.org ] then cp -a /jci/resources/TranLogoEnd.ivf.org /jci/resources/TranLogoEnd.ivf log_message "=== Restored original /jci/resources/TranLogoEnd.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/TranLogoEnd.ivf.org log_message "=== Deleted backup: TranLogoEnd.ivf.org ===" @@ -274,7 +295,7 @@ then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org /jci/gui/common/controls/Sbn/css/SbnCtrl.css log_message "=== Restored backup from SbnCtrl.css.org ===" rm -f /jci/gui/common/controls/Sbn/css/SbnCtrl.all.css - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org log_message "=== Deleted backup: SbnCtrl.css.org ===" @@ -284,7 +305,7 @@ if [ -e /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org ] then cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css log_message "=== Restored backup from StatusBarCtrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org log_message "=== Deleted backup: StatusBarCtrl.css.org ===" @@ -300,7 +321,7 @@ then fi cp -a /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js.org /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js log_message "=== Restored backup from StatusBarCtrl.js.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js.org log_message "=== Deleted backup: StatusBarCtrl.js.org ===" @@ -318,7 +339,7 @@ if [ -e /jci/gui/common/controls/StatusBar/images/StatusBarBg.png.org ] then cp -a /jci/gui/common/controls/StatusBar/images/StatusBarBg.png.org /jci/gui/common/controls/StatusBar/images/StatusBarBg.png log_message "=== Restored backup from StatusBarBg.png.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/StatusBar/images/StatusBarBg.png.org log_message "=== Deleted backup: StatusBarBg.png.org ===" @@ -328,7 +349,7 @@ if [ -e /jci/gui/framework/js/Utility.js.org ] then cp -a /jci/gui/framework/js/Utility.js.org /jci/gui/framework/js/Utility.js log_message "=== Restored backup from Utility.js.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/framework/js/Utility.js.org log_message "=== Deleted backup: Utility.js.org ===" @@ -343,7 +364,7 @@ then log_message "======********* UNINSTALL NO BUTTON BACKGROUND GRAPHICS ... ******======" cp -a /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css.org /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css log_message "=== Restored Ump3Ctrl.css from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css.org log_message "=== Deleted backup: Ump3Ctrl.css.org ===" @@ -377,7 +398,7 @@ then log_message "========******** UNINSTALL UI TEXT STYLE TWEAKS ... ********========" cp -a /jci/gui/common/controls/List2/css/List2Ctrl.css.org /jci/gui/common/controls/List2/css/List2Ctrl.css log_message "=== Restored backup from List2Ctrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/List2/css/List2Ctrl.css.org log_message "=== Deleted backup: List2Ctrl.css.org ===" @@ -387,7 +408,7 @@ if [ -e /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org ] then cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css log_message "=== Restored backup from NowPlaying4Ctrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org log_message "=== Deleted backup: NowPlaying4Ctrl.css.org ===" @@ -397,7 +418,7 @@ if [ -e /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org ] then cp -a /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Restored backup from MainMenuCtrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org log_message "=== Deleted backup: MainMenuCtrl.css.org ===" @@ -412,7 +433,7 @@ then log_message "========********* UNINSTALL FUEL CONSUMPTION TWEAK ... *********========" cp -a /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css.org /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css log_message "=== Restored original FuelConsumptionCtrl.css from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css.org log_message "=== Deleted backup: FuelConsumptionCtrl.css.org ===" @@ -422,7 +443,7 @@ if [ -e /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png.o then cp -a /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png.org /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png log_message "=== Restored original FuelConsumptionCtrl.png from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png.org log_message "=== Deleted backup: FuelConsBG.png.org ===" @@ -432,7 +453,7 @@ if [ -e /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl. then cp -a /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js.org /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js log_message "=== Restored original FuelConsBG.png from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js.org log_message "=== Deleted backup: FuelConsumptionCtrl.js.org ===" @@ -447,7 +468,7 @@ then log_message "========******* UNINSTALL OFF SCREEN BACKGROUND IMAGE ... *******========" cp -a /jci/gui/apps/system/controls/OffScreen/images/OffScreenBackground.png.org /jci/gui/apps/system/controls/OffScreen/images/OffScreenBackground.png log_message "=== Reverting From Backup OffScreenBackground.png.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/controls/OffScreen/images/OffScreenBackground.png.org log_message "=== Deleted backup: OffScreenBackground.png.org ===" @@ -461,7 +482,7 @@ then log_message "==========************ UNINSTALL USB AUDIO MOD ... ************==========" cp -a /jci/gui/apps/usbaudio/js/usbaudioApp.js.org /jci/gui/apps/usbaudio/js/usbaudioApp.js log_message "=== /jci/gui/apps/usbaudio/js/usbaudioApp.js Restored from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/usbaudio/js/usbaudioApp.js.org log_message "=== Deleted backup: usbaudioApp.js.org ===" @@ -471,7 +492,7 @@ if [ -e /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org ] then cp -a /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js log_message "=== Restored NowPlaying4Ctrl.js from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org log_message "=== Deleted backup: NowPlaying4Ctrl.js.org ===" @@ -573,7 +594,7 @@ if [ -e /jci/scripts/jci-fw.sh.org ] then log_message "=== Restoring /jci/scripts/jci-fw.sh ===" cp -a /jci/scripts/jci-fw.sh.org /jci/scripts/jci-fw.sh - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/scripts/jci-fw.sh.org log_message "=== Deleted backup: jci-fw.sh.org ===" @@ -640,6 +661,101 @@ cp -a "${MYDIR}/config_org/background.png" /jci/gui/common/images log_message "============******** RESTORED ORIGINAL BACKGROUND ***********============" log_message " " sleep 2 +# uninstall CASDK +if [ -e /jci/casdk/casdk.aio ] +then + show_message "===****** UNINSTALLING CASDK ******===" + log_message "==========************ BEGIN UNINSTALLING CASDK ************===========" + log_message " " + + # mount resources + mount -o rw,remount /tmp/mnt/resources + + # kill all watch processes + log_message "- Removing watch processes" + pkill -f watch + pkill -f 'watch -n 1' + pkill -f 'watch -n 60' + pkill -f 'watch -n 300' + pkill -f 'mzd-casdk.start' + + # reset storage + if [ -e /tmp/mnt/data_persist/storage ] + then + log_message "- Removing storage folder" + rm -rf /tmp/mnt/data_persist/storage + fi + if [ -e /jci/opera/opera_home/pstorage/psindex.dat ] + then + if [ -f /jci/opera/opera_home/pstorage/psindex.dat.org ] + then + log_message "- Removing local storage settings" + cp -a /jci/opera/opera_home/pstorage/psindex.dat.org /jci/opera/opera_home/pstorage/psindex.dat + rm /jci/opera/opera_home/pstorage/psindex.dat.org + else + log_message "- Removing local storage settings and pstorage" + rm -rf /jci/opera/opera_home/pstorage + fi + fi + + # remove data reader files + if [ -e /jci/casdk ] + then + log_message "- Removing data script folder /jci/casdk" + rm /jci/casdk/* + rmdir --ignore-fail-on-non-empty /jci/casdk + else + log_message "- CASDK Data script folder '/jci/casdk' not found" + fi + + # remove initialization file + if grep -q "# CASDK" /jci/scripts/stage_wifi.sh + then + log_message "- Removing staging scripts" + # echo '#!/bin/sh' > /jci/scripts/stage_wifi.sh + sed -i '/# CASDK/d' /jci/scripts/stage_wifi.sh + sed -i '/casdk/d' /jci/scripts/stage_wifi.sh + sed -i '/################/d' /jci/scripts/stage_wifi.sh + sed -i '/# one time/d' /jci/scripts/stage_wifi.sh + sed -i '/# 1s update/d' /jci/scripts/stage_wifi.sh + sed -i '/# 60s update/d' /jci/scripts/stage_wifi.sh + sed -i '/# 300s update/d' /jci/scripts/stage_wifi.sh + sed -i '/mzd-casdk.start/d' /jci/scripts/stage_wifi.sh + else + log_message "- No staging scripts fouund in /jci/scripts/stage_wifi.sh" + fi + + # remove proxy + if [ -f /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js ] + then + log_message "- Removing proxys & startups" + rm -f /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js + rm -f /jci/opera/opera_dir/userjs/nativeApps.js + fi + + if [ -f /jci/opera/opera_dir/userjs/additionalApps.js.org ] + then + log_message "- Restoring additionalApps.js" + mv /jci/opera/opera_dir/userjs/additionalApps.js.org /jci/opera/opera_dir/userjs/additionalApps.js + fi + + # delete custom + if [ -e /jci/gui/apps/custom ] + then + log_message "- Removing custom application folder" + rm -rf /jci/gui/apps/custom||true + else + log_message "- Custom application folder does not exist" + fi + + if [ -e /tmp/mnt/resources/aio ] + then + log_message "- Removing custom runtime & apps" + rm -rf /resources/aio/mzd-casdk||true + else + log_message "- CASDK runtime & apps do not exist" + fi +fi log_message "************************* SYSTEM FULLY RESTORED *************************" show_message "========== SYSTEM FULLY RESTORED ==========" diff --git a/app/files/tweaks/00__casdk-i.txt b/app/files/tweaks/00__casdk-i.txt index cca8fa2..bbf22ff 100644 --- a/app/files/tweaks/00__casdk-i.txt +++ b/app/files/tweaks/00__casdk-i.txt @@ -6,16 +6,16 @@ show_message "===*** INSTALLING CASDK ***===" log_message " " log_message "==========************* BEGIN INSTALLING CASDK ***************===========" -mount -o rw,remount /tmp/mnt/resources - pkill -f 'watch -n 1' pkill -f 'watch -n 60' pkill -f 'watch -n 300' pkill -f 'mzd-casdk.start' +pkill -f websocketd +log_message "=== CASDK VER ${_CASDK_VER} ===" # enable javascript logging JSLOGGING=$(grep -c "casdk-error.log" /jci/opera/opera_home/opera.ini) -if [ "$JSLOGGING" -eq "0" ] +if [ $JSLOGGING -eq 0 ] then sed -i 's/Console Error Log Enabled=0/Console Error Log Enabled=1/g' /jci/opera/opera_home/opera.ini sed -i 's/Console Error Log=$OPERA_HOME\/error.log/Console Error Log=\/tmp\/root\/casdk-error.log/g' /jci/opera/opera_home/opera.ini @@ -52,7 +52,7 @@ else fi # install data reader files -if [ ! -e /jci/casdk ] +if [ ! -e /jci/casdk ] || [[ "${_CASDK_VER}" < "${CASDK_VER}" ]] then mkdir -p /jci/casdk cp -a ${MYDIR}/casdk/scripts/* /jci/casdk @@ -85,16 +85,19 @@ fi chmod 755 /jci/scripts/stage_wifi.sh -# copy CustomApplicationsProxy +# copy CustomApplicationsProxy and aio.js cp -a ${MYDIR}/casdk/proxy/CustomApplicationsProxy.js /jci/opera/opera_dir/userjs/ +cp -a ${MYDIR}/casdk/proxy/aio.js /jci/opera/opera_dir/userjs/ +chmod 755 /jci/opera/opera_dir/userjs/aio.js chmod 755 /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js +chown 1018:3015 /jci/opera/opera_dir/userjs/aio.js chown 1018:3015 /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js log_message "=== Copied CustomApplicationsProxy.js ===" if [ -e /jci/opera/opera_dir/userjs/additionalApps.js ] then mv /jci/opera/opera_dir/userjs/additionalApps.js /jci/opera/opera_dir/userjs/additionalApps.js.org - log_message "=== Disable AdditionalApps.js ===" + log_message "=== Disable AdditionalApps.js ===" fi if [ -e /jci/opera/opera_dir/userjs/additionalApps.json ] @@ -108,10 +111,13 @@ else fi # install CASDK runtime -if [ ! -e /tmp/mnt/resources/aio/mzd-casdk/runtime ] +if [ ! -e /tmp/mnt/resources/aio/mzd-casdk/runtime ] || [[ "${_CASDK_VER}" < "${CASDK_VER}" ]] then cp -a ${MYDIR}/casdk/resources /tmp/mnt chmod -R 755 /tmp/mnt/resources/aio + chmod -R 755 /tmp/mnt/resources/dev/bin + echo "_AIO_VER=${AIO_VER}" > /jci/casdk/casdk.aio + echo "_CASDK_VER=${CASDK_VER}" >> /jci/casdk/casdk.aio log_message "=== Installed CASDK Runtime ===" else log_message "=== CASDK Runtime Already Installed ===" diff --git a/app/files/tweaks/00__casdk-u.txt b/app/files/tweaks/00__casdk-u.txt index 89a4785..9c05d6f 100644 --- a/app/files/tweaks/00__casdk-u.txt +++ b/app/files/tweaks/00__casdk-u.txt @@ -6,9 +6,6 @@ show_message "===****** UNINSTALLING CASDK ******===" log_message "==========************ BEGIN UNINSTALLING CASDK ************===========" log_message " " -# mount resources -mount -o rw,remount /tmp/mnt/resources - # kill all watch processes log_message "- Removing watch processes" pkill -f watch @@ -16,6 +13,7 @@ pkill -f 'watch -n 1' pkill -f 'watch -n 60' pkill -f 'watch -n 300' pkill -f 'mzd-casdk.start' +pkill -f websocketd # reset storage if [ -e /tmp/mnt/data_persist/storage ] @@ -69,12 +67,16 @@ then log_message "- Removing proxys & startups" rm -f /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js rm -f /jci/opera/opera_dir/userjs/nativeApps.js + rm -f /jci/opera/opera_dir/userjs/aio.js fi +sed -i '/Terminal/d' /jci/scripts/stage_wifi.sh +sed -i '/terminal/d' /jci/scripts/stage_wifi.sh if [ -f /jci/opera/opera_dir/userjs/additionalApps.js.org ] then log_message "- Restoring additionalApps.js" mv /jci/opera/opera_dir/userjs/additionalApps.js.org /jci/opera/opera_dir/userjs/additionalApps.js + rm -f /jci/opera/opera_dir/userjs/nativeApps.js fi # delete custom @@ -96,6 +98,6 @@ fi log_message "- Done!" sleep 5 killall jci-dialog -/jci/tools/jci-dialog --title="CASDK UNINSTALLED" --text="THE CUSTOM APPLICATION RUNTIME WAS SUCCESSFULLY UNINSTALLED.\n\nTHE SYSTEM WILL REBOOT IN A FEW SECONDS." --no-cancel & +/jci/tools/jci-dialog --title="CASDK UNINSTALLED" --text="THE CUSTOM APPLICATION RUNTIME\nWAS SUCCESSFULLY UNINSTALLED.\n\nTHE SYSTEM WILL REBOOT IN A FEW SECONDS." --no-cancel & sleep 10 reboot diff --git a/app/files/tweaks/00__casdkapps-i.txt b/app/files/tweaks/00__casdkapps-i.txt index c524a6a..c165dc1 100644 --- a/app/files/tweaks/00__casdkapps-i.txt +++ b/app/files/tweaks/00__casdkapps-i.txt @@ -63,12 +63,13 @@ else echo "var CustomApplications = [" > ${MZD_APPS_JS} fi -#if [ ${APPTERMINAL} -eq 1 ] && ! grep -Fq "app.terminal" ${MZD_APPS_JS} -#then -# echo ' "app.terminal",' >> ${MZD_APPS_JS} -# cp -a ${MYDIR}/casdk/apps/app.terminal ${MZD_APP_DIR} -# log_message "=== Installed CASDK App: Terminal ===" -#fi +# Set up terminal app to directly execute shell commands +if [ ${APPTERMINAL} -eq 1 ] && ! grep -Fq "terminal" /jci/scripts/stage_wifi.sh +then + echo '### Terminal' >> /jci/scripts/stage_wifi.sh + echo 'sh /jci/gui/apps/custom/apps/app.terminal/terminal.sh &' >> /jci/scripts/stage_wifi.sh + log_message "=== Added Terminal Startup ===" +fi add_casdk_app "${APPTERMINAL}" "terminal" add_casdk_app "${APPSIMPLEDASHBOARD}" "simpledashboard" @@ -82,10 +83,11 @@ add_casdk_app "${APPDEVTOOLS}" "devtools" #add_casdk_app "${APPSNAKE}" "snake" echo '];' >> ${MZD_APPS_JS} +chmod -R 755 ${MZD_APP_DIR} sleep 5 log_message "=========************* CASDK INSTALLATION FINISHED *************=========" killall jci-dialog -/jci/tools/jci-dialog --title="MZD-AIO-TI+CASDK INSTALLED" --text="The Custom Application Runtime was successfully installed.\n\nThe System will reboot in a few seconds." --no-cancel & +/jci/tools/jci-dialog --title="MZD-AIO-TI+CASDK INSTALLED" --text="THE CUSTOM APPLICATION RUNTIME\nWAS SUCCESSFULLY INSTALLED\n\nTHE SYSTEM WILL REBOOT IN A FEW SECONDS." --no-cancel & sleep 10 reboot diff --git a/app/files/tweaks/00__node-i.txt b/app/files/tweaks/00__node-i.txt new file mode 100644 index 0000000..bdc96c8 --- /dev/null +++ b/app/files/tweaks/00__node-i.txt @@ -0,0 +1,6 @@ +mkdir -p /tmp/mnt/resources/dev/bin/ + +# nodeJS for cleaner app installations! +[ ! -e /tmp/mnt/resources/dev/bin/node ] && cp -a ${MYDIR}/config/bin/node /tmp/mnt/resources/dev/bin/ && echo "...NodeJS Installed..." >> ${MYDIR}/node.log 2>&1 +[ ! -e /tmp/mnt/resources/dev/bin/add_app_json.js ] && cp -a ${MYDIR}/config/bin/add_app_json.js /tmp/mnt/resources/dev/bin/ && echo "...add_app_json.js Installed..." >> ${MYDIR}/node.log 2>&1 +[ ! -e /tmp/mnt/resources/dev/bin/remove_app_json.js ] && cp -a ${MYDIR}/config/bin/remove_app_json.js /tmp/mnt/resources/dev/bin/ && echo "...remove_app_json.js Installed..." >> ${MYDIR}/node.log 2>&1 diff --git a/app/files/tweaks/00_background.txt b/app/files/tweaks/00_background.txt index 455aeac..779bc22 100644 --- a/app/files/tweaks/00_background.txt +++ b/app/files/tweaks/00_background.txt @@ -2,7 +2,7 @@ show_message "CHANGING BACKGROUND IMAGE ..." log_message "=======********* INSTALL CHANGE BACKGROUND IMAGE ... *********========" -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/images/background.png "${MYDIR}/bakups/background.png" aio_info \"background.png\", diff --git a/app/files/tweaks/00_backup.txt b/app/files/tweaks/00_backup.txt index 84c7c8f..506bc2b 100644 --- a/app/files/tweaks/00_backup.txt +++ b/app/files/tweaks/00_backup.txt @@ -1,7 +1,7 @@ # make full backup to SD card log_message "========*************** START FULL JCI BACKUP ****************=======" -if [ "${ZIPBACKUP}" = "1" ] +if [ $ZIPBACKUP -eq 1 ] then BACKUPZIP=${MYDIR}/JCI-${CMU_SW_VER}.zip show_message "ZIPPING /JCI TO \n${BACKUPZIP}. \nPlease wait... this will take a several minutes ..." diff --git a/app/files/tweaks/00_bgrotator-i.txt b/app/files/tweaks/00_bgrotator-i.txt index 37ec231..1345e6d 100644 --- a/app/files/tweaks/00_bgrotator-i.txt +++ b/app/files/tweaks/00_bgrotator-i.txt @@ -7,7 +7,7 @@ if [ ! -e /jci/gui/common/css/common.css.org ] cp -a /jci/gui/common/css/common.css /jci/gui/common/css/common.css.org log_message "=== Backup of /jci/gui/common/css/common.css to common.css.org ===" fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then aio_info \"common.css.org\", cp /jci/gui/common/css/common.css.org "${MYDIR}/bakups/" diff --git a/app/files/tweaks/00_bgrotator-u.txt b/app/files/tweaks/00_bgrotator-u.txt index 1574327..9e66e41 100644 --- a/app/files/tweaks/00_bgrotator-u.txt +++ b/app/files/tweaks/00_bgrotator-u.txt @@ -12,7 +12,7 @@ then log_message "=== Leftover code found Restoring common.css ===" if [ -e /jci/gui/common/css/common.css.org ] then - if [ "${KEEPBKUPS}" = 1 ] + if [ $KEEPBKUPS -eq 1 ] then cp /jci/gui/common/css/common.css.org "${MYDIR}/bakups/" aio_info \"common.css.org\", diff --git a/app/files/tweaks/00_end.txt b/app/files/tweaks/00_end.txt index 0aa6c7c..7bc3a0a 100644 --- a/app/files/tweaks/00_end.txt +++ b/app/files/tweaks/00_end.txt @@ -2,7 +2,7 @@ log_message " " sleep 2 log_message "======================= END OF TWEAKS INSTALLATION ======================" show_message "========== END OF TWEAKS INSTALLATION ==========" -if [ "${KEEPBKUPS}" = "1" ] +if [ $KEEPBKUPS -eq 1 ] then json="$(cat ${MYDIR}/AIO_info.json)" rownend=$(echo -n $json | tail -c 1) diff --git a/app/files/tweaks/00_intro.txt b/app/files/tweaks/00_intro.txt index 7380c35..e495480 100644 --- a/app/files/tweaks/00_intro.txt +++ b/app/files/tweaks/00_intro.txt @@ -1,5 +1,5 @@ #!/bin/sh -# tweaks.sh - MZD-AIO-TI Version 2.7.6 +# tweaks.sh - MZD-AIO-TI Version 2.7.8 # Special thanks to Siutsch for collecting all the tweaks and for the original AIO # Big Thanks to Modfreakz, khantaena, Xep, ID7, Doog, Diginix, oz_paulb & lmagder # For more information visit https://mazdatweaks.com @@ -9,5 +9,16 @@ hwclock --hctosys # AIO Variables -AIO_VER=2.7.6 -AIO_DATE=2018.01.15 +AIO_VER=2.7.8 +AIO_DATE=2018.02.28 + +# Android Auto Version +AA_VER=1.08 +# Video Player Version +VP_VER=3.3 +# Speedometer Version +SPD_VER=5.5 +# AIO Tweaks App Version +AIO_TWKS_VER=0.6 +# CASDK Version +CASDK_VER=0.0.4 diff --git a/app/files/tweaks/00_sshbringback.txt b/app/files/tweaks/00_sshbringback.txt index cc7df61..75b8fce 100644 --- a/app/files/tweaks/00_sshbringback.txt +++ b/app/files/tweaks/00_sshbringback.txt @@ -5,31 +5,31 @@ # Added force SSH option to force update SSH settings SSH_COPY=0 log_message "=======************* START INSTALL SSH BRINGBACK ************========" -if [ ${CMU_SW_VER} = "56.00.511A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.512A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513B-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.511A-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.512A-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.514A-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.521A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-EU" ] \ -|| [ ${COMPAT_GROUP} -ne "1" ] \ -|| [ ${FORCESSH} -eq "1" ] +if [ "${CMU_SW_VER}" == "56.00.511A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.512A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513B-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.511A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.512A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.514A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.521A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-EU" ] \ +|| [ $COMPAT_GROUP -ne 1 ] \ +|| [ $FORCESSH -eq 1 ] then SSH_COPY=1 fi -if [ ${SSH_COPY} -eq "1" ] +if [ $SSH_COPY -eq 1 ] then show_message "${CMU_SW_VER} DETECTED: SSH_BRINGBACK WILL BE INSTALLED ..." cp /jci/scripts/jci-fw.sh ${MYDIR}/config/jci-fw.sh.test - if grep -Fq 'Disable ICMP services CI-2952' ${MYDIR}/config/jci-fw.sh.test || [ ${FORCESSH} -eq "1" ] + if grep -Fq 'Disable ICMP services CI-2952' ${MYDIR}/config/jci-fw.sh.test || [ $FORCESSH -eq 1 ] then cp -a ${MYDIR}/config/ssh_bringback/jci-fw.sh /jci/scripts chmod 755 /jci/scripts/jci-fw.sh log_message "=== Fixed firewall settings in jci-fw.sh ===" fi - if ! grep -q '^jci:' /config-mfg/passwd || [ ${FORCESSH} -eq "1" ] + if ! grep -q '^jci:' /config-mfg/passwd || [ $FORCESSH -eq 1 ] then cp -a ${MYDIR}/config/ssh_bringback/passwd /tmp cp -a ${MYDIR}/config/ssh_bringback/authorized_keys /tmp diff --git a/app/files/tweaks/00_start.txt b/app/files/tweaks/00_start.txt index ce9ae09..d74d892 100644 --- a/app/files/tweaks/00_start.txt +++ b/app/files/tweaks/00_start.txt @@ -27,7 +27,7 @@ log_message() } aio_info() { - if [ ${KEEPBKUPS} -eq 1 ] + if [ $KEEPBKUPS -eq 1 ] then echo "$*" 1>&2 echo "$*" >> "${MYDIR}/AIO_info.json" @@ -39,19 +39,23 @@ MZD_APP_SD=/tmp/mnt/sd_nav MZD_APP_DIR=/tmp/mnt/resources/aio/mzd-casdk/apps get_casdk_mode() { - if [ -e /jci/casdk/casdk.aio ]; then - echo 1 + if [ -e /jci/casdk/casdk.aio ] + then + source /jci/casdk/casdk.aio + CASDK_MODE=1 else - echo 0 + _CASDK_VER=0 + CASDK_MODE=0 fi } add_casdk_app() { CASDK_APP=${2} - if [ ${1} -eq 1 ] && ! grep -Fq "app.${CASDK_APP}" ${MZD_APPS_JS} + if [ ${1} -eq 1 ] then - echo " \"app.${CASDK_APP}\"," >> ${MZD_APPS_JS} + sed -i /${CASDK_APP}/d ${MZD_APPS_JS} cp -a ${MYDIR}/casdk/apps/app.${CASDK_APP} ${MZD_APP_DIR} + echo " \"app.${CASDK_APP}\"," >> ${MZD_APPS_JS} CASDK_APP="${CASDK_APP} " log_message "=== Installed CASDK App: ${CASDK_APP:0:10} ===" fi @@ -87,7 +91,7 @@ compatibility_check() echo 4 && return elif [ $_VER_EXT -lt 599 ] then - echo 5 && return # 59.00.502 is another level because it is not compatible with USB Audio Mod + echo 5 && return # 59.00.502+ is another level because it is not compatible with USB Audio Mod else echo 0 && return fi @@ -132,110 +136,138 @@ show_message_OK() exit 0 fi } -add_app_json() +# Shotrhand for location of additionalApps.json +ADDITIONAL_APPS_JSON="/jci/opera/opera_dir/userjs/additionalApps.json" # script by vic_bam85 +add_app_json() { - # check if entry in additionalApps.json still exists, if so nothing is to do - count=$(grep -c '{ "name": "'"${1}"'"' /jci/opera/opera_dir/userjs/additionalApps.json) - if [ "$count" = "0" ] + if which node > /dev/null && which add_app_json.js > /dev/null + then + add_app_json.js ${ADDITIONAL_APPS_JSON} "${1}" "${2}" "${3}" >> ${MYDIR}/node.log 2>&1 + log_message "=== node add_app_json.js ${2:0:10} ===" + elif [ -e ${MYDIR}/config/bin/node ] && [ -e ${MYDIR}/config/bin/add_app_json.js ] then - log_message "=== ${2:0:10} not found in additionalApps.json, first installation ===" - mv /jci/opera/opera_dir/userjs/additionalApps.json /jci/opera/opera_dir/userjs/additionalApps.json.old - sleep 2 - # delete last line with "]" from additionalApps.json - grep -v "]" /jci/opera/opera_dir/userjs/additionalApps.json.old > /jci/opera/opera_dir/userjs/additionalApps.json - sleep 2 - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-2._delete_last_line.json" - # check, if other entrys exists - count=$(grep -c '}' /jci/opera/opera_dir/userjs/additionalApps.json) - if [ "$count" != "0" ] + ${MYDIR}/config/bin/node ${MYDIR}/config/bin/add_app_json.js ${ADDITIONAL_APPS_JSON} "${1}" "${2}" "${3}" >> ${MYDIR}/node.log 2>&1 + log_message "=== Using NodeJS To Add App!!! ===" + log_message "=== ${MYDIR}/config/bin/node add_app_json.js ${2:0:10} ===" + else + # check if entry in additionalApps.json still exists, if so nothing is to do + count=$(grep -c '{ "name": "'"${1}"'"' /jci/opera/opera_dir/userjs/additionalApps.json) + if [ $count -eq 0 ] then - # if so, add "," to the end of last line to additionalApps.json - echo "$(cat /jci/opera/opera_dir/userjs/additionalApps.json)", > /jci/opera/opera_dir/userjs/additionalApps.json + log_message "=== ${2:0:10} not found in additionalApps.json, first installation ===" + mv /jci/opera/opera_dir/userjs/additionalApps.json /jci/opera/opera_dir/userjs/additionalApps.json.old sleep 2 - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-3._add_comma_to_last_line.json" - log_message "=== Found existing entrys in additionalApps.json ===" - fi - # add app entry and "]" again to last line of additionalApps.json - log_message "=== Add ${2:0:10} to last line of additionalApps.json ===" - echo ' { "name": "'"${1}"'", "label": "'"${2}"'" }' >> /jci/opera/opera_dir/userjs/additionalApps.json - sleep 2 - if [ ${3} != "" ] - then - sed -i 's/"label": "'"${2}"'" \}/"label": "'"${2}"'", "preload": "'"${3}"'" \}/g' /jci/opera/opera_dir/userjs/additionalApps.json + # delete last line with "]" from additionalApps.json + grep -v "]" /jci/opera/opera_dir/userjs/additionalApps.json.old > /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-2._delete_last_line.json" + # check, if other entrys exists + count=$(grep -c '}' /jci/opera/opera_dir/userjs/additionalApps.json) + if [ $count -ne 0 ] + then + # if so, add "," to the end of last line to additionalApps.json + echo "$(cat /jci/opera/opera_dir/userjs/additionalApps.json)", > /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-3._add_comma_to_last_line.json" + log_message "=== Found existing entrys in additionalApps.json ===" + fi + # add app entry and "]" again to last line of additionalApps.json + log_message "=== Add ${2:0:10} to last line of additionalApps.json ===" + echo ' { "name": "'"${1}"'", "label": "'"${2}"'" }' >> /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + if [ ${3} != "" ] + then + sed -i 's/"label": "'"${2}"'" \}/"label": "'"${2}"'", "preload": "'"${3}"'" \}/g' /jci/opera/opera_dir/userjs/additionalApps.json + fi + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-4._add_entry_to_last_line.json" + echo "]" >> /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-5._after.json" + rm -f /jci/opera/opera_dir/userjs/additionalApps.json.old + else + log_message "=== ${2:0:10} already exists in additionalApps.json ===" fi - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-4._add_entry_to_last_line.json" - echo "]" >> /jci/opera/opera_dir/userjs/additionalApps.json - sleep 2 - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-5._after.json" - rm -f /jci/opera/opera_dir/userjs/additionalApps.json.old - else - log_message "=== ${2:0:10} already exists in additionalApps.json ===" + # remove double commas + sed -i 's/,,/,/g' ${ADDITIONAL_APPS_JSON} fi if [ -e /jci/opera/opera_dir/userjs/nativeApps.js ] then - echo "additionalApps = $(cat /jci/opera/opera_dir/userjs/additionalApps.json)" > /jci/opera/opera_dir/userjs/nativeApps.js + echo "additionalApps = $(cat ${ADDITIONAL_APPS_JSON})" > /jci/opera/opera_dir/userjs/nativeApps.js log_message "=== Updated nativeApps.js ===" fi } remove_app_json() # script by vic_bam85 { - unix2dos /jci/opera/opera_dir/userjs/additionalApps.json - # check if app entry in additionalApps.json still exists, if so, then it will be deleted - count=$(grep -c '{ "name": "'"${1}"'"' /jci/opera/opera_dir/userjs/additionalApps.json) - if [ "$count" -gt "0" ] + if which node > /dev/null && which remove_app_json.js > /dev/null + then + remove_app_json.js ${ADDITIONAL_APPS_JSON} "${1}" >> ${MYDIR}/node.log 2>&1 + log_message "=== node remove_app_json.js ${1:1:10} ===" + elif [ -e ${MYDIR}/config/bin/node ] && [ -e ${MYDIR}/config/bin/remove_app_json.js ] then - log_message "==== Remove ${count} entry(s) of ${1:0:10} found in additionalApps.json ===" - mv /jci/opera/opera_dir/userjs/additionalApps.json /jci/opera/opera_dir/userjs/additionalApps.json.old - # delete last line with "]" from additionalApps.json - grep -v "]" /jci/opera/opera_dir/userjs/additionalApps.json.old > /jci/opera/opera_dir/userjs/additionalApps.json - sleep 2 - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-2._delete_last_line.json" - # delete all app entrys from additionalApps.json - sed -i "/${1}/d" /jci/opera/opera_dir/userjs/additionalApps.json - sleep 2 - json="$(cat /jci/opera/opera_dir/userjs/additionalApps.json)" - # check if last sign is comma - rownend=$(echo -n $json | tail -c 1) - if [ "$rownend" = "," ] + ${MYDIR}/config/bin/node ${MYDIR}/config/bin/remove_app_json.js ${ADDITIONAL_APPS_JSON} "${1}" >> ${MYDIR}/node.log 2>&1 + log_message "=== Using NodeJS To Remove App!!! ===" + log_message "=== ${MYDIR}/config/bin/node remove_app_json.js ${1:1:10} ===" + else + unix2dos ${ADDITIONAL_APPS_JSON} + # check if app entry in additionalApps.json still exists, if so, then it will be deleted + count=$(grep -c '{ "name": "'"${1}"'"' /jci/opera/opera_dir/userjs/additionalApps.json) + if [ "$count" -gt "0" ] then - # if so, remove "," from back end - echo ${json%,*} > /jci/opera/opera_dir/userjs/additionalApps.json + log_message "==== Remove ${count} entry(s) of ${1:0:10} found in additionalApps.json ===" + mv /jci/opera/opera_dir/userjs/additionalApps.json /jci/opera/opera_dir/userjs/additionalApps.json.old + # delete last line with "]" from additionalApps.json + grep -v "]" /jci/opera/opera_dir/userjs/additionalApps.json.old > /jci/opera/opera_dir/userjs/additionalApps.json sleep 2 - log_message "=== Found comma at last line of additionalApps.json and deleted it ===" - fi - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-3._delete_app_entry.json" - # add "]" again to last line of additionalApps.json - echo "]" >> /jci/opera/opera_dir/userjs/additionalApps.json - sleep 2 - first=$(head -c 1 /jci/opera/opera_dir/userjs/additionalApps.json) - if [ $first != "[" ] - then - sed -i "1s/^/[\n/" /jci/opera/opera_dir/userjs/additionalApps.json - log_message "=== Fixed first line of additionalApps.json ===" + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-2._delete_last_line.json" + # delete all app entrys from additionalApps.json + sed -i "/${1}/d" /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + json="$(cat /jci/opera/opera_dir/userjs/additionalApps.json)" + # check if last sign is comma + rownend=$(echo -n $json | tail -c 1) + if [ "$rownend" == "," ] + then + # if so, remove "," from back end + echo ${json%,*} > /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + log_message "=== Found comma at last line of additionalApps.json and deleted it ===" + fi + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-3._delete_app_entry.json" + # add "]" again to last line of additionalApps.json + echo "]" >> /jci/opera/opera_dir/userjs/additionalApps.json + sleep 2 + first=$(head -c 1 /jci/opera/opera_dir/userjs/additionalApps.json) + if [ "$first" != "[" ] + then + sed -i "1s/^/[\n/" /jci/opera/opera_dir/userjs/additionalApps.json + log_message "=== Fixed first line of additionalApps.json ===" + fi + rm -f /jci/opera/opera_dir/userjs/additionalApps.json.old + cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-4._after.json" + else + log_message "=== ${1:1:10} not found in additionalApps.json ===" fi - rm -f /jci/opera/opera_dir/userjs/additionalApps.json.old - cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps${1}-4._after.json" - else - log_message "=== ${1:0:10} not found in additionalApps.json ===" + dos2unix ${ADDITIONAL_APPS_JSON} fi - dos2unix /jci/opera/opera_dir/userjs/additionalApps.json if [ -e /jci/opera/opera_dir/userjs/nativeApps.js ] then - echo "additionalApps = $(cat /jci/opera/opera_dir/userjs/additionalApps.json)" > /jci/opera/opera_dir/userjs/nativeApps.js + echo "additionalApps = $(cat ${ADDITIONAL_APPS_JSON})" > /jci/opera/opera_dir/userjs/nativeApps.js log_message "=== Updated nativeApps.js ===" fi } # disable watchdog and allow write access echo 1 > /sys/class/gpio/Watchdog\ Disable/value mount -o rw,remount / +# mount resources +mount -o rw,remount /tmp/mnt/resources/ MYDIR=$(dirname "$(readlink -f "$0")") CMU_VER=$(get_cmu_ver) CMU_SW_VER=$(get_cmu_sw_version) COMPAT_GROUP=$(compatibility_check) -CASDK_MODE=$(get_casdk_mode) +get_casdk_mode # save logs mkdir -p "${MYDIR}/bakups/test/" @@ -256,7 +288,7 @@ log_message "======================= CMU_SW_VER = ${CMU_SW_VER} ================ log_message "======================= COMPATIBILITY_GROUP = ${COMPAT_GROUP} =======================" #log_message "======================== CMU_VER = ${CMU_VER} =====================" if [ $CASDK_MODE -eq 1 ]; then - log_message "============================= CASDK MODE ===============================" + log_message "============================ CASDK MODE ===============================" WELCOME_MSG="====== MZD-AIO-TI ${AIO_VER} ======\n\n===**** CASDK MODE ****====" else log_message "" @@ -297,7 +329,7 @@ fi # Compatibility Check if [ $COMPAT_GROUP -ne 0 ] then - if [ ${SKIPCONFIRM} -eq 1 ] + if [ $SKIPCONFIRM -eq 1 ] then show_message "MZD-AIO-TI v.${AIO_VER}\nDetected compatible version ${CMU_SW_VER}\nContinuing Installation..." sleep 5 @@ -305,12 +337,6 @@ then show_message_OK "MZD-AIO-TI v.${AIO_VER}\nDetected compatible version ${CMU_SW_VER}\n\n To continue installation choose YES\n To abort choose NO" fi log_message "======= Detected compatible version ${CMU_SW_VER} =======" - if [ ${COMPAT_GROUP} -eq 1 ] - then - APP_PATCH_59=1 - else - APP_PATCH_59=0 - fi else # Removing the comment (#) from the following line will allow MZD-AIO-TI to run with unknown fw versions ** ONLY MODIFY IF YOU KNOW WHAT YOU ARE DOING ** # show_message_OK "Detected previously unknown version ${CMU_SW_VER}!\n\n To continue anyway choose YES\n To abort choose NO" @@ -352,9 +378,9 @@ fi sed -i 's/User JavaScript=0/User JavaScript=1/g' /jci/opera/opera_home/opera.ini count=$(grep -c "Allow File XMLHttpRequest=" /jci/opera/opera_home/opera.ini) skip_opera=$(grep -c "Allow File XMLHttpRequest=1" /jci/opera/opera_home/opera.ini) -if [ "$skip_opera" -eq "0" ] +if [ $skip_opera -eq 0 ] then - if [ "$count" -eq "0" ] + if [ $count -eq 0 ] then sed -i '/User JavaScript=.*/a Allow File XMLHttpRequest=1' /jci/opera/opera_home/opera.ini else @@ -365,8 +391,6 @@ then else log_message "============== Userjs & File Xmlhttprequest Already Enabled =============" fi - -# Remove fps.js if still exists if [ -e /jci/opera/opera_dir/userjs/fps.js ] then mv /jci/opera/opera_dir/userjs/fps.js /jci/opera/opera_dir/userjs/fps.js.org @@ -380,11 +404,9 @@ then fi log_message "=========************ END PRE-INSTALL OPERATIONS ***************=========" log_message " " -log_message "==========************* BEGIN INSTALLING TWEAKS **************===========" -log_message " " # start JSON array of backups -if [ "${KEEPBKUPS}" -eq 1 ] +if [ $KEEPBKUPS -eq 1 ] then aio_info '"Backups": [' fi diff --git a/app/files/tweaks/00_wifi.txt b/app/files/tweaks/00_wifi.txt index 247ba9e..b96c94a 100644 --- a/app/files/tweaks/00_wifi.txt +++ b/app/files/tweaks/00_wifi.txt @@ -6,7 +6,7 @@ if [ ! -e /jci/gui/apps/syssettings/js/syssettingsApp.js.org ] then cp /jci/gui/apps/syssettings/js/syssettingsApp.js /jci/gui/apps/syssettings/js/syssettingsApp.js.org fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then cp /jci/gui/apps/syssettings/js/syssettingsApp.js.org "${MYDIR}/bakups/" aio_info \"syssettingsApp.js.org\", @@ -21,13 +21,12 @@ then # This is a Better way to enable Wifi for all sed -i "/(framework.localize.REGIONS\['NorthAmerica'\]/c\ if(true)" /jci/gui/apps/syssettings/js/syssettingsApp.js log_message "=== Wifi for NA enabled ===" - show_message "=== Wifi for NA enabled ===" + show_message "=== Wifi enabled ===" else log_message "=== ERROR: Line For Wifi Fix Not Found ===" fi cp /jci/gui/apps/syssettings/js/syssettingsApp.js "${MYDIR}/bakups/test/syssettingsApp_WIFI-after.js" else - echo "exist" log_message "=== Wifi already active ===" fi diff --git a/app/files/tweaks/01_touchscreen-i.txt b/app/files/tweaks/01_touchscreen-i.txt index def8c84..ef11b24 100644 --- a/app/files/tweaks/01_touchscreen-i.txt +++ b/app/files/tweaks/01_touchscreen-i.txt @@ -3,7 +3,7 @@ show_message "ENABLE TOUCHSCREEN ..." log_message "=======******** INSTALL REMOVE TOUCHSCREEN RESTRICTION ... *******=======" # Some want to keep the speed restriction to ensure working console compass -if [ ${KEEP_SPEED_RESTRICT} = "0" ] +if [ $KEEP_SPEED_RESTRICT -eq 0 ] then /jci/scripts/set_speed_restriction_config.sh disable else diff --git a/app/files/tweaks/02_disclaimer-i.txt b/app/files/tweaks/02_disclaimer-i.txt index 77504e2..a2b9336 100644 --- a/app/files/tweaks/02_disclaimer-i.txt +++ b/app/files/tweaks/02_disclaimer-i.txt @@ -4,20 +4,20 @@ log_message "========*********** INSTALL NO-MORE-DISCLAIMER ... ***********== TRACKORDER_DISCLAIMER=2 # Compatibility Check -if [ "${COMPAT_GROUP}" = "1" ] +if [ $COMPAT_GROUP -eq 1 ] then TRACKORDER_DISCLAIMER=0 -elif [ "${COMPAT_GROUP}" = "2" ] +elif [ $COMPAT_GROUP -eq 2 ] then TRACKORDER_DISCLAIMER=1 TRACKORDER_DISCLAIMER_FILE=58.00.250A-NA log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "3" ] || [ "${COMPAT_GROUP}" = "4" ] +elif [ $COMPAT_GROUP -eq 3 ] || [ $COMPAT_GROUP -eq 4 ] then TRACKORDER_DISCLAIMER=1 TRACKORDER_DISCLAIMER_FILE=59.00.330 log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "5" ] +elif [ $COMPAT_GROUP -eq 5 ] then TRACKORDER_DISCLAIMER=1 TRACKORDER_DISCLAIMER_FILE=59 @@ -29,12 +29,12 @@ then cp -a /jci/gui/apps/system/js/systemApp.js /jci/gui/apps/system/js/systemApp.js.org log_message "=== Backup of /jci/gui/apps/system/js/systemApp.js to systemApp.js ===" fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/js/systemApp.js.org "${MYDIR}/bakups/" aio_info \"systemApp.js.org\", fi -if [ "${TESTBKUPS}" = 1 ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/js/systemApp.js "${MYDIR}/bakups/test/systemApp_before-disclaimer.js" fi @@ -45,14 +45,14 @@ fi # 58.00.XXX ($COMPAT_GROUP=2) # 55.XX.XXX - 56.XX.XXX ($COMPAT_GROUP=1) # If your firmware version falls out of those ranges email the address below -if [ ! "${TRACKORDER_DISCLAIMER}" = "2" ] +if [ ! $TRACKORDER_DISCLAIMER -eq 2 ] then cp -a "${MYDIR}/config/audio_order_AND_no_More_Disclaimer/systemApp.js.disclaimer" /jci/gui/apps/system/js/ log_message "=== Added marker 'systemApp.js.disclaimer' ===" if [ -e /jci/gui/apps/system/js/systemApp.js.audio ] then - if [ "${TRACKORDER_DISCLAIMER}" = "1" ] + if [ $TRACKORDER_DISCLAIMER -eq 1 ] then cp -a "${MYDIR}/config/audio_order_AND_no_More_Disclaimer/both/jci/gui/apps/system/js/systemApp.${TRACKORDER_DISCLAIMER_FILE}.js" /jci/gui/apps/system/js/systemApp.js log_message "=== Removed Disclaimer for ${CMU_SW_VER}, audio order still changed ===" @@ -61,7 +61,7 @@ then log_message "=== Removed Disclaimer, audio order still changed ===" fi else - if [ "${TRACKORDER_DISCLAIMER}" = "1" ] + if [ $TRACKORDER_DISCLAIMER -eq 1 ] then cp -a "${MYDIR}/config/audio_order_AND_no_More_Disclaimer/only_no_More_Disclaimer/jci/gui/apps/system/js/systemApp.${TRACKORDER_DISCLAIMER_FILE}.js" /jci/gui/apps/system/js/systemApp.js log_message "=== Removed Disclaimer ${CMU_SW_VER} (audio order change not installed) ===" @@ -78,7 +78,7 @@ else log_message "********** Please Email ${MYDIR}/systemApp.js FW:${CMU_SW_VER} to aio@mazdatweaks.com **********" cp -a /jci/gui/apps/system/js/systemApp.js "${MYDIR}/" fi -if [ "${TESTBKUPS}" = 1 ] +if [ $TESTBKUPS = 1 ] then cp -a /jci/gui/apps/system/js/systemApp.js "${MYDIR}/bakups/test/systemApp_after-disclaimer.js" fi diff --git a/app/files/tweaks/02_disclaimer-u.txt b/app/files/tweaks/02_disclaimer-u.txt index fc5a6dd..b0b10ad 100644 --- a/app/files/tweaks/02_disclaimer-u.txt +++ b/app/files/tweaks/02_disclaimer-u.txt @@ -4,20 +4,20 @@ log_message "=====************ UNINSTALL NO-MORE-DISCLAIMER ... *********** TRACKORDER_DISCLAIMER=2 # Compatibility Check -if [ "${COMPAT_GROUP}" = "1" ] +if [ $COMPAT_GROUP -eq 1 ] then TRACKORDER_DISCLAIMER=0 -elif [ "${COMPAT_GROUP}" = "2" ] +elif [ $COMPAT_GROUP -eq 2 ] then TRACKORDER_DISCLAIMER=1 TRACKORDER_DISCLAIMER_FILE=58.00.250A-NA log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "3" ] || [ "${COMPAT_GROUP}" = "4" ] +elif [ $COMPAT_GROUP -eq 3 ] || [ $COMPAT_GROUP -eq 4 ] then TRACKORDER_DISCLAIMER=1 TRACKORDER_DISCLAIMER_FILE=59.00.330 log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "5" ] +elif [ $COMPAT_GROUP -eq 5 ] then TRACKORDER_DISCLAIMER=1 TRACKORDER_DISCLAIMER_FILE=59 @@ -29,11 +29,11 @@ fi # 59.00.3XX ($COMPAT_GROUP=3) # 58.00.XXX ($COMPAT_GROUP=2) # 55.XX.XXX - 56.XX.XXX ($COMPAT_GROUP=1) -if [ ! "${TRACKORDER_DISCLAIMER}" = "2" ] +if [ ! $TRACKORDER_DISCLAIMER -eq 2 ] then if [ -e /jci/gui/apps/system/js/systemApp.js.audio ] then - if [ "${TRACKORDER_DISCLAIMER}" = "1" ] + if [ $TRACKORDER_DISCLAIMER -eq 1 ] then cp -a "${MYDIR}/config_org/audio_order_AND_no_More_Disclaimer/only_change_audio_order/jci/gui/apps/system/js/systemApp.${TRACKORDER_DISCLAIMER_FILE}.js" /jci/gui/apps/system/js/systemApp.js log_message "=== Restored Disclaimer for ${CMU_SW_VER}, audio order still changed ===" @@ -47,7 +47,7 @@ then cp -a /jci/gui/apps/system/js/systemApp.js.org /jci/gui/apps/system/js/systemApp.js log_message "=== Restored systemApp.js from backup ===" else - if [ "${TRACKORDER_DISCLAIMER}" = "1" ] + if [ $TRACKORDER_DISCLAIMER -eq 1 ] then log_message "=== No more systemApp.js.org available ===" cp -a "${MYDIR}/config_org/audio_order_AND_no_More_Disclaimer/nothing/jci/gui/apps/system/js/systemApp.${TRACKORDER_DISCLAIMER_FILE}.js" /jci/gui/apps/system/js/systemApp.js diff --git a/app/files/tweaks/02_disclaimer5-i.txt b/app/files/tweaks/02_disclaimer5-i.txt index 2712a01..f80ee2f 100644 --- a/app/files/tweaks/02_disclaimer5-i.txt +++ b/app/files/tweaks/02_disclaimer5-i.txt @@ -9,9 +9,9 @@ then cp -a /jci/gui/apps/system/js/systemApp.js /jci/gui/apps/system/js/systemApp.js.org log_message "=== Backup of /jci/gui/apps/system/js/systemApp.js ===" fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then - cp -a /jci/gui/apps/system/js/systemApp.js.org `${MYDIR}/bakups/` + cp -a /jci/gui/apps/system/js/systemApp.js.org "${MYDIR}/bakups/" aio_info \"systemApp.js.org\", fi diff --git a/app/files/tweaks/05_mainloop-i.txt b/app/files/tweaks/05_mainloop-i.txt index 56ff54e..448a919 100644 --- a/app/files/tweaks/05_mainloop-i.txt +++ b/app/files/tweaks/05_mainloop-i.txt @@ -8,7 +8,7 @@ then cp -a /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js.org log_message "=== Backup /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js ===" fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js.org "${MYDIR}/bakups/" aio_info \"MainMenuCtrl.js.org\", diff --git a/app/files/tweaks/06_listloop-i.txt b/app/files/tweaks/06_listloop-i.txt index e9659d2..2f94ab9 100644 --- a/app/files/tweaks/06_listloop-i.txt +++ b/app/files/tweaks/06_listloop-i.txt @@ -5,15 +5,15 @@ log_message "=========************** INSTALL LIST_LOOP_MOD ... *************==== TRACKORDER_LIST=0 # Compatibility Check log_message "=== FW ${CMU_SW_VER} detected, copy matching List2Ctrl.js ===" -if [ "${COMPAT_GROUP}" = "4" ] || [ "${COMPAT_GROUP}" = "5" ] +if [ $COMPAT_GROUP -eq 4 ] || [ $COMPAT_GROUP -eq 5 ] then TRACKORDER_LIST=1 TRACKORDER_LIST_FILE="59" -elif [ "${COMPAT_GROUP}" = "3" ] +elif [ $COMPAT_GROUP -eq 3 ] then TRACKORDER_LIST=1 TRACKORDER_LIST_FILE="59.330" -elif [ "${COMPAT_GROUP}" = "2" ] +elif [ $COMPAT_GROUP -eq 2 ] then TRACKORDER_LIST=1 TRACKORDER_LIST_FILE="58" @@ -25,19 +25,23 @@ then cp -a /jci/gui/common/controls/List2/js/List2Ctrl.js /jci/gui/common/controls/List2/js/List2Ctrl.js.org log_message "=== Backup of /jci/gui/common/controls/List2/js/List2Ctrl.js ===" fi -if [ "${KEEPBKUPS}" = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/List2/js/List2Ctrl.js.org "${MYDIR}/bakups/" aio_info \"List2Ctrl.js.org\", fi # Check for Remove Beep and Shorter Delay Mods to reapply after copying List2Crl.js -if grep "No More Beep" /jci/gui/common/controls/List2/js/List2Ctrl.js +if grep -q "No More Beep" /jci/gui/common/controls/List2/js/List2Ctrl.js then REMOVE_BEEP=1 +else + REMOVE_BEEP=0 fi -if grep "Shorter Delay Mod" /jci/gui/common/controls/List2/js/List2Ctrl.js +if grep -q "Shorter Delay Mod" /jci/gui/common/controls/List2/js/List2Ctrl.js then SHORTER_DELAY_MOD=1 +else + SHORTER_DELAY_MOD=0 fi # Compatibility check falls into 4 groups: @@ -46,11 +50,11 @@ fi # 58.00.XXX ($COMPAT_GROUP=2) # 55.XX.XXX - 56.XX.XXX ($COMPAT_GROUP=1) # If your firmware version falls out of those ranges email the address below -if [ "${TRACKORDER_LIST}" = "1" ] +if [ $TRACKORDER_LIST -eq 1 ] then cp -a "${MYDIR}/config/list-loop/jci/gui/common/controls/List2/js/List2Ctrl.${TRACKORDER_LIST_FILE}.js" /jci/gui/common/controls/List2/js/List2Ctrl.js log_message "=== Copied /jci/gui/common/controls/List2/js/List2Ctrl.js from SD card for ${CMU_SW_VER} ===" -elif [ "${COMPAT_GROUP}" = "1" ] +elif [ $COMPAT_GROUP -eq 1 ] then cp -a "${MYDIR}/config/list-loop/jci/gui/common/controls/List2/js/List2Ctrl.js" /jci/gui/common/controls/List2/js/ log_message "=== Copied /jci/gui/common/controls/List2/js/List2Ctrl.js from USB ===" @@ -59,12 +63,12 @@ else log_message "=== E-mail aio@mazdatweaks.com for Compatibility Check ===" fi # Re-apply these if they were installed before -if [ "${REMOVE_BEEP}" = "1" ] +if [ $REMOVE_BEEP -eq 1 ] then sed -i 's/return framework.common.beep(pressType, eventCause);/\/\/ return framework.common.beep(pressType, eventCause); \/\/No More Beeps/g' /jci/gui/common/controls/List2/js/List2Ctrl.js log_message "=== Reapplied Disable Beeps in List2Ctrl.js ===" fi -if [ "${SHORTER_DELAY_MOD}" = "1" ] +if [ $SHORTER_DELAY_MOD -eq 1 ] then sed -i 's/autoscrollTier1Timeout : 1500,/autoscrollTier1Timeout : 150,/g' /jci/gui/common/controls/List2/js/List2Ctrl.js sed -i 's/autoscrollTier2Timeout : 5000,/autoscrollTier2Timeout : 300,/g' /jci/gui/common/controls/List2/js/List2Ctrl.js @@ -73,5 +77,6 @@ then sed -i '/autoscrollTier2Interval : 300,/ a\ \/\/Shorter Delay Mod' /jci/gui/common/controls/List2/js/List2Ctrl.js log_message "=== Modified Delay in List2Ctrl.js ===" fi + log_message "=======************ END INSTALLATION OF LIST_LOOP_MOD ************=======" log_message " " diff --git a/app/files/tweaks/06_listloop-u.txt b/app/files/tweaks/06_listloop-u.txt index 5534ea9..d9a21d0 100644 --- a/app/files/tweaks/06_listloop-u.txt +++ b/app/files/tweaks/06_listloop-u.txt @@ -2,14 +2,9 @@ show_message "REMOVE LIST_LOOP_MOD ..." log_message "========********* UNINSTALL LIST_LOOP_MOD ... ********=========" # Check for Remove Beep and Shorter Delay Mods to reapply after copying List2Crl.js -if grep "No More Beep" /jci/gui/common/controls/List2/js/List2Ctrl.js -then - REMOVE_BEEP=1 -fi -if grep "Shorter Delay Mod" /jci/gui/common/controls/List2/js/List2Ctrl.js -then - SHORTER_DELAY_MOD=1 -fi +grep -q "No More Beep" /jci/gui/common/controls/List2/js/List2Ctrl.js && REMOVE_BEEP=1 || REMOVE_BEEP=0 + +grep -q "Shorter Delay Mod" /jci/gui/common/controls/List2/js/List2Ctrl.js && SHORTER_DELAY_MOD=1 || SHORTER_DELAY_MOD=0 # If Backup is available, then we are done. if [ -e /jci/gui/common/controls/List2/js/List2Ctrl.js.org ] then @@ -21,26 +16,26 @@ else TRACKORDER_LIST=0 # Compatibility Check log_message "=== FW ${CMU_SW_VER} detected, copy matching List2Ctrl.js ===" - if [ "${COMPAT_GROUP}" = "4" ] + if [ $COMPAT_GROUP -eq 4 ] then TRACKORDER_LIST=1 TRACKORDER_LIST_FILE="59" - elif [ "${COMPAT_GROUP}" = "3" ] + elif [ $COMPAT_GROUP -eq 3 ] then TRACKORDER_LIST=1 TRACKORDER_LIST_FILE="59.330" - elif [ "${COMPAT_GROUP}" = "2" ] + elif [ $COMPAT_GROUP -eq 2 ] then TRACKORDER_LIST=1 TRACKORDER_LIST_FILE="58" fi - if [ "${COMPAT_GROUP}" = "1" ] + if [ $COMPAT_GROUP -eq 1 ] then # Uncomment the following line if you need the fallback file (v55-56) # cp -a "${MYDIR}/config_org/list-loop/jci/gui/common/controls/List2/js/List2Ctrl.js" /jci/gui/common/controls/List2/js/ log_message "=== No backup of List2Ctrl.js available, No changes were made ===" - elif [ "${TRACKORDER_LIST}" = "1" ] + elif [ $TRACKORDER_LIST -eq 1 ] then # Uncomment the following line if you need the fallback file (v58+) # cp -a "${MYDIR}/config_org/list-loop/jci/gui/common/controls/List2/js/List2Ctrl.${TRACKORDER_LIST_FILE}.js" /jci/gui/common/controls/List2/js/List2Ctrl.js @@ -52,12 +47,12 @@ else fi fi # Reapply tweaks -if [ "${REMOVE_BEEP}" = "1" ] +if [ $REMOVE_BEEP -eq 1 ] then sed -i 's/return framework.common.beep(pressType, eventCause);/\/\/ return framework.common.beep(pressType, eventCause); \/\/No More Beeps/g' /jci/gui/common/controls/List2/js/List2Ctrl.js log_message "=== Reapplied Disable Beeps in List2Ctrl.js ===" fi -if [ "${SHORTER_DELAY_MOD}" = "1" ] +if [ $SHORTER_DELAY_MOD -eq 1 ] then sed -i 's/autoscrollTier1Timeout : 1500,/autoscrollTier1Timeout : 150,/g' /jci/gui/common/controls/List2/js/List2Ctrl.js sed -i 's/autoscrollTier2Timeout : 5000,/autoscrollTier2Timeout : 300,/g' /jci/gui/common/controls/List2/js/List2Ctrl.js diff --git a/app/files/tweaks/08_orderflac-i.txt b/app/files/tweaks/08_orderflac-i.txt index 8dd877b..463b48e 100644 --- a/app/files/tweaks/08_orderflac-i.txt +++ b/app/files/tweaks/08_orderflac-i.txt @@ -3,32 +3,32 @@ show_message "INSTALL TRACK-ORDER AND FLAC SUPPORT ..." log_message "=======******** INSTALL TRACK-ORDER AND FLAC SUPPORT ... *********=======" TRACKORDER_FLAC=0 -if [ ${CMU_SW_VER} = "56.00.100A-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.240B-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.230A-EU" ] \ -|| [ ${CMU_SW_VER} = "55.00.650A-NA" ] \ -|| [ ${CMU_SW_VER} = "55.00.753A-NA" ] \ -|| [ ${CMU_SW_VER} = "55.00.760A-NA" ] +if [ "${CMU_SW_VER}" == "56.00.100A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.240B-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.230A-EU" ] \ +|| [ "${CMU_SW_VER}" == "55.00.650A-NA" ] \ +|| [ "${CMU_SW_VER}" == "55.00.753A-NA" ] \ +|| [ "${CMU_SW_VER}" == "55.00.760A-NA" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=230A-EU fi -if [ ${CMU_SW_VER} = "56.00.511A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.512A-EU" ] \ -|| [ ${CMU_SW_VER} = "58.00.250A-NA" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513B-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.521A-NA" ] +if [ "${CMU_SW_VER}" == "56.00.511A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.512A-EU" ] \ +|| [ "${CMU_SW_VER}" == "58.00.250A-NA" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513B-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.521A-NA" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=511A-EU -elif [ ${CMU_SW_VER} = "59.00.326A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.330A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.342A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.441A-NA" ] \ -|| [ ${CMU_SW_VER} = "59.00.443C-EU" ] \ -|| [ ${CMU_SW_VER} = "59.00.331A-EU" ] +elif [ "${CMU_SW_VER}" == "59.00.326A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.330A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.342A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.441A-NA" ] \ +|| [ "${CMU_SW_VER}" == "59.00.443C-EU" ] \ +|| [ "${CMU_SW_VER}" == "59.00.331A-EU" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=326A-ADR @@ -50,11 +50,11 @@ log_message "=== copy flac-usb-recovery if it is needed can be run via SSH chmod +x /tmp/mnt/data_persist/dev/bin/* -if [ "${TRACKORDER_FLAC}" = "0" ] +if [ $TRACKORDER_FLAC -eq 0 ] then log_message "=== Your firmware ${CMU_SW_VER} is not compatible with this tweak ===" else - if [ "${TRACKORDER_FLAC}" = "1" ] + if [ $TRACKORDER_FLAC -eq 1 ] then cp -a ${MYDIR}/config/media-order-patching/jci/lib/libmc_user.${TRACKORDER_FLAC_FILE}.so /jci/lib/libmc_user.so cp -a ${MYDIR}/config/media-order-patching/usr/lib/gstreamer-0.10/libgstflac.so /usr/lib/gstreamer-0.10 diff --git a/app/files/tweaks/08_orderflac-oldi.txt b/app/files/tweaks/08_orderflac-oldi.txt index 5653d30..0ebc9f1 100644 --- a/app/files/tweaks/08_orderflac-oldi.txt +++ b/app/files/tweaks/08_orderflac-oldi.txt @@ -3,32 +3,32 @@ show_message "INSTALL TRACK-ORDER AND FLAC SUPPORT ..." log_message "=====****** INSTALL TRACK-ORDER AND FLAC SUPPORT ... ******====" TRACKORDER_FLAC=0 -if [ ${CMU_SW_VER} = "56.00.100A-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.240B-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.230A-EU" ] \ -|| [ ${CMU_SW_VER} = "55.00.650A-NA" ] \ -|| [ ${CMU_SW_VER} = "55.00.753A-NA" ] \ -|| [ ${CMU_SW_VER} = "55.00.760A-NA" ] +if [ "${CMU_SW_VER}" == "56.00.100A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.240B-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.230A-EU" ] \ +|| [ "${CMU_SW_VER}" == "55.00.650A-NA" ] \ +|| [ "${CMU_SW_VER}" == "55.00.753A-NA" ] \ +|| [ "${CMU_SW_VER}" == "55.00.760A-NA" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=230A-EU fi -if [ ${CMU_SW_VER} = "56.00.511A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.512A-EU" ] \ -|| [ ${CMU_SW_VER} = "58.00.250A-NA" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513B-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.521A-NA" ] +if [ "${CMU_SW_VER}" == "56.00.511A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.512A-EU" ] \ +|| [ "${CMU_SW_VER}" == "58.00.250A-NA" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513B-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.521A-NA" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=511A-EU -elif [ ${CMU_SW_VER} = "59.00.326A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.330A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.342A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.441A-NA" ] \ -|| [ ${CMU_SW_VER} = "59.00.443C-EU" ] \ -|| [ ${CMU_SW_VER} = "59.00.331A-EU" ] +elif [ "${CMU_SW_VER}" == "59.00.326A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.330A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.342A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.441A-NA" ] \ +|| [ "${CMU_SW_VER}" == "59.00.443C-EU" ] \ +|| [ "${CMU_SW_VER}" == "59.00.331A-EU" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=326A-ADR @@ -41,11 +41,11 @@ then log_message "=== Backup of /jci/lib/libmc_user.so to libmc_user.so.org ===" fi -if [ "${TRACKORDER_FLAC}" = "0" ] +if [ $TRACKORDER_FLAC -eq 0 ] then log_message "=== Your firmware is not compatible with this tweak ===" else - if [ "${TRACKORDER_FLAC}" = "1" ] + if [ $TRACKORDER_FLAC -eq 1 ] then cp -a ${MYDIR}/config/media-order-patching/jci/lib/libmc_user.${TRACKORDER_FLAC_FILE}.so /jci/lib/libmc_user.so cp -a ${MYDIR}/config/media-order-patching/usr/lib/gstreamer-0.10/libgstflac.so /usr/lib/gstreamer-0.10 @@ -54,7 +54,7 @@ else /bin/fsync /jci/lib/libmc_user.so fi - if [ "${TRACKORDER_FLAC}" = "1" ] + if [ $TRACKORDER_FLAC -eq 1 ] then for I in 1 2 3 do diff --git a/app/files/tweaks/08_orderflac-oldu.txt b/app/files/tweaks/08_orderflac-oldu.txt index 381f3bc..2a2f42b 100644 --- a/app/files/tweaks/08_orderflac-oldu.txt +++ b/app/files/tweaks/08_orderflac-oldu.txt @@ -3,35 +3,35 @@ show_message "REMOVE TRACK-ORDER AND FLAC SUPPORT ..." log_message "====**** UNINSTALL TRACK-ORDER AND FLAC SUPPORT ****=====" # Compatibility Check TRACKORDER_FLAC=0 -if [ ${CMU_SW_VER} = "56.00.100A-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.240B-ADR" ] \ -|| [ ${CMU_SW_VER} = "56.00.230A-EU" ] \ -|| [ ${CMU_SW_VER} = "55.00.650A-NA" ] \ -|| [ ${CMU_SW_VER} = "55.00.753A-NA" ] \ -|| [ ${CMU_SW_VER} = "55.00.760A-NA" ] +if [ "${CMU_SW_VER}" == "56.00.100A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.240B-ADR" ] \ +|| [ "${CMU_SW_VER}" == "56.00.230A-EU" ] \ +|| [ "${CMU_SW_VER}" == "55.00.650A-NA" ] \ +|| [ "${CMU_SW_VER}" == "55.00.753A-NA" ] \ +|| [ "${CMU_SW_VER}" == "55.00.760A-NA" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=230A-EU fi -if [ ${CMU_SW_VER} = "56.00.511A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.512A-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513B-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-EU" ] \ -|| [ ${CMU_SW_VER} = "56.00.513C-ADR" ] \ -|| [ ${CMU_SW_VER} = "58.00.250A-NA" ] \ -|| [ ${CMU_SW_VER} = "56.00.521A-NA" ] +if [ "${CMU_SW_VER}" == "56.00.511A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.512A-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513B-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-EU" ] \ +|| [ "${CMU_SW_VER}" == "56.00.513C-ADR" ] \ +|| [ "${CMU_SW_VER}" == "58.00.250A-NA" ] \ +|| [ "${CMU_SW_VER}" == "56.00.521A-NA" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=511A-EU fi -if [ ${CMU_SW_VER} = "59.00.326A-ADR" ] \ -|| [ ${CMU_SW_VER} = "59.00.331A-EU" ] +if [ "${CMU_SW_VER}" == "59.00.326A-ADR" ] \ +|| [ "${CMU_SW_VER}" == "59.00.331A-EU" ] then TRACKORDER_FLAC=1 TRACKORDER_FLAC_FILE=326A-ADR fi -if [ "${TRACKORDER_FLAC}" = "0" ] +if [ $TRACKORDER_FLAC -eq 0 ] then log_message "=== This tweak is not compatible with your FW version ===" else @@ -41,7 +41,7 @@ else log_message "=== Restored original /jci/lib/libmc_user.so from backup libmc_user.so.org ===" else log_message "=== No backup of /jci/lib/libmc_user.so available, no changes were made ===" - if [ "${TRACKORDER_FLAC}" = "1" ] + if [ $TRACKORDER_FLAC -eq 1 ] then cp -a "${MYDIR}/config_org/media-order-patching/jci/lib/libmc_user.${TRACKORDER_FLAC_FILE}.so" /jci/lib/libmc_user.so log_message "=== Detected ${CMU_SW_VER}: Copied fitting original /jci/lib/libmc_user.so ===" @@ -49,7 +49,7 @@ else fi fi - if [ "${TRACKORDER_FLAC}" = "1" ] + if [ $TRACKORDER_FLAC -eq 1 ] then for I in 1 2 3 do diff --git a/app/files/tweaks/09_audioorder-i.txt b/app/files/tweaks/09_audioorder-i.txt index 86360a7..24be3ba 100644 --- a/app/files/tweaks/09_audioorder-i.txt +++ b/app/files/tweaks/09_audioorder-i.txt @@ -3,20 +3,20 @@ show_message "CHANGE ORDER OF AUDIO SOURCE LIST ..." log_message "======****** INSTALL CHANGE ORDER OF AUDIO SOURCE LIST ... *******=======" TRACKORDER_AUDIO=2 # Compatibility Check -if [ "${COMPAT_GROUP}" = "1" ] +if [ $COMPAT_GROUP -eq 1 ] then TRACKORDER_AUDIO=0 -elif [ "${COMPAT_GROUP}" = "2" ] +elif [ $COMPAT_GROUP -eq 2 ] then TRACKORDER_AUDIO=1 TRACKORDER_AUDIO_FILE=58.00.250A-NA log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "3" ] || [ "${COMPAT_GROUP}" = "4" ] +elif [ $COMPAT_GROUP -eq 3 ] || [ $COMPAT_GROUP -eq 4 ] then TRACKORDER_AUDIO=1 TRACKORDER_AUDIO_FILE=59.00.330 log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "5" ] +elif [ $COMPAT_GROUP -eq 5 ] then TRACKORDER_AUDIO=1 TRACKORDER_AUDIO_FILE=59 @@ -34,24 +34,24 @@ then cp -a /jci/gui/apps/system/js/systemApp.js /jci/gui/apps/system/js/systemApp.js.org log_message "=== Backup of /jci/gui/apps/system/js/systemApp.js ===" fi -if [ "${KEEPBKUPS}" = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/js/systemApp.js.org "${MYDIR}/bakups/" aio_info \"systemApp.js.org\", fi -if [ "${TESTBKUPS}" = 1 ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/js/systemApp.js "${MYDIR}/bakups/test/systemApp_before-audiosources.js" fi -if [ ! "${TRACKORDER_AUDIO}" = "2" ] +if [ ! $TRACKORDER_AUDIO -eq 2 ] then cp -a "${MYDIR}/config/audio_order_AND_no_More_Disclaimer/systemApp.js.audio" /jci/gui/apps/system/js/ log_message "=== Added marker 'systemApp.js.audio' ===" if [ -e /jci/gui/apps/system/js/systemApp.js.disclaimer ] then - if [ "${TRACKORDER_AUDIO}" = "1" ] + if [ $TRACKORDER_AUDIO -eq 1 ] then cp -a "${MYDIR}/config/audio_order_AND_no_More_Disclaimer/both/jci/gui/apps/system/js/systemApp.${TRACKORDER_AUDIO_FILE}.js" /jci/gui/apps/system/js/systemApp.js log_message "=== Changed order of audio source list, disclaimer still gone ===" @@ -60,7 +60,7 @@ then log_message "=== Changed order of audio source list, disclaimer still gone ===" fi else - if [ "${TRACKORDER_AUDIO}" = "1" ] + if [ $TRACKORDER_AUDIO -eq 1 ] then cp -a "${MYDIR}/config/audio_order_AND_no_More_Disclaimer/only_change_audio_order/jci/gui/apps/system/js/systemApp.${TRACKORDER_AUDIO_FILE}.js" /jci/gui/apps/system/js/systemApp.js log_message "=== Changed order of audio source list (no no-more-disclaimer) ===" @@ -76,7 +76,7 @@ else log_message "******** Please Email ${MYDIR}/systemApp.js FW:${CMU_SW_VER} to aio@mazdatweaks.com ********" cp -a /jci/gui/apps/system/js/systemApp.js "${MYDIR}/" fi -if [ "${TESTBKUPS}" = 1 ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/js/systemApp.js "${MYDIR}/bakups/test/systemApp_after-audiosources.js" fi diff --git a/app/files/tweaks/09_audioorder-u.txt b/app/files/tweaks/09_audioorder-u.txt index becb243..70193a2 100644 --- a/app/files/tweaks/09_audioorder-u.txt +++ b/app/files/tweaks/09_audioorder-u.txt @@ -3,20 +3,20 @@ show_message "RESTORE ORDER OF AUDIO SOURCE LIST TO ORIGINAL ..." log_message "========******* UNINSTALL ORDER OF AUDIO SOURCE LIST ... *******========" TRACKORDER_AUDIO=2 # Compatibility Check -if [ "${COMPAT_GROUP}" = "1" ] +if [ $COMPAT_GROUP -eq 1 ] then TRACKORDER_AUDIO=0 -elif [ "${COMPAT_GROUP}" = "2" ] +elif [ $COMPAT_GROUP -eq 2 ] then TRACKORDER_AUDIO=1 TRACKORDER_AUDIO_FILE=58.00.250A-NA log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "3" ] || [ "${COMPAT_GROUP}" = "4" ] +elif [ $COMPAT_GROUP -eq 3 ] || [ $COMPAT_GROUP -eq 4 ] then TRACKORDER_AUDIO=1 TRACKORDER_AUDIO_FILE=59.00.330 log_message "=== FW ${CMU_SW_VER} detected, copy matching systemApp.js ===" -elif [ "${COMPAT_GROUP}" = "5" ] +elif [ $COMPAT_GROUP -eq 5 ] then TRACKORDER_AUDIO=1 TRACKORDER_AUDIO_FILE=59 @@ -29,7 +29,7 @@ fi # 58.00.XXX ($COMPAT_GROUP=2) # 55.XX.XXX - 56.XX.XXX ($COMPAT_GROUP=1) -if [ ! "${TRACKORDER_AUDIO}" = "2" ] +if [ ! $TRACKORDER_AUDIO -eq 2 ] then if [ -e /jci/gui/apps/system/js/systemApp.js.org ] then @@ -40,7 +40,7 @@ then fi if [ -e /jci/gui/apps/system/js/systemApp.js.disclaimer ] then - if [ "${TRACKORDER_AUDIO}" = "1" ] + if [ $TRACKORDER_AUDIO -eq 1 ] then cp -a ${MYDIR}/config_org/audio_order_AND_no_More_Disclaimer/only_no_More_Disclaimer/jci/gui/apps/system/js/systemApp.${TRACKORDER_AUDIO_FILE}.js /jci/gui/apps/system/js/systemApp.js log_message "=== Restored order of audio source list, disclaimer still gone ===" @@ -49,7 +49,7 @@ then log_message "=== Restored order of audio source list, disclaimer still gone ===" fi else - if [ "${TRACKORDER_AUDIO}" = "1" ] + if [ $TRACKORDER_AUDIO -eq 1 ] then cp -a ${MYDIR}/config_org/audio_order_AND_no_More_Disclaimer/nothing/jci/gui/apps/system/js/systemApp.${TRACKORDER_AUDIO_FILE}.js /jci/gui/apps/system/js/systemApp.js log_message "=== Restored order of audio source list for ${CMU_SW_VER} ===" diff --git a/app/files/tweaks/10_pausemute-i.txt b/app/files/tweaks/10_pausemute-i.txt index 6814d98..f3b864a 100644 --- a/app/files/tweaks/10_pausemute-i.txt +++ b/app/files/tweaks/10_pausemute-i.txt @@ -8,7 +8,7 @@ then cp -a /jci/gui/common/js/Common.js /jci/gui/common/js/Common.js.org log_message "=== Backup of /jci/gui/common/js/Common.js to Common.js.org ===" fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/js/Common.js.org "${MYDIR}/bakups/" aio_info \"Common.js.org\", diff --git a/app/files/tweaks/10_pausemute-u.txt b/app/files/tweaks/10_pausemute-u.txt index 73e04e7..30cfe7d 100644 --- a/app/files/tweaks/10_pausemute-u.txt +++ b/app/files/tweaks/10_pausemute-u.txt @@ -10,35 +10,35 @@ then # Looks for this line of code that doesnt exist in the original file for installations prior to AIO v2.1 elif grep -Fq 'isMuted ? "Global.Pause" : "Global.Resume"' /jci/gui/common/js/Common.js then - if [ ${CMU_SW_VER} = "56.00.100A-ADR" ] \ - || [ ${CMU_SW_VER} = "56.00.230A-ADR" ] \ - || [ ${CMU_SW_VER} = "56.00.240B-ADR" ] \ - || [ ${CMU_SW_VER} = "56.00.230A-EU" ] \ - || [ ${CMU_SW_VER} = "55.00.650A-NA" ] \ - || [ ${CMU_SW_VER} = "55.00.753A-NA" ] \ - || [ ${CMU_SW_VER} = "55.00.760A-NA" ] \ - || [ ${CMU_SW_VER} = "56.00.401A-JP" ] + if [ "${CMU_SW_VER}" == "56.00.100A-ADR" ] \ + || [ "${CMU_SW_VER}" == "56.00.230A-ADR" ] \ + || [ "${CMU_SW_VER}" == "56.00.240B-ADR" ] \ + || [ "${CMU_SW_VER}" == "56.00.230A-EU" ] \ + || [ "${CMU_SW_VER}" == "55.00.650A-NA" ] \ + || [ "${CMU_SW_VER}" == "55.00.753A-NA" ] \ + || [ "${CMU_SW_VER}" == "55.00.760A-NA" ] \ + || [ "${CMU_SW_VER}" == "56.00.401A-JP" ] then pause_copy=1 pause_copy_file=56.00.230A-EU fi - if [ ${CMU_SW_VER} = "58.00.250A-NA" ] \ - || [ ${CMU_SW_VER} = "59.00.326A-ADR" ] \ - || [ ${CMU_SW_VER} = "59.00.331A-EU" ] + if [ "${CMU_SW_VER}" == "58.00.250A-NA" ] \ + || [ "${CMU_SW_VER}" == "59.00.326A-ADR" ] \ + || [ "${CMU_SW_VER}" == "59.00.331A-EU" ] then pause_copy=1 pause_copy_file=58.00.250A-NA fi - if [ ${CMU_SW_VER} = "56.00.511A-EU" ] \ - || [ ${CMU_SW_VER} = "56.00.512A-EU" ] \ - || [ ${CMU_SW_VER} = "56.00.513B-EU" ] \ - || [ ${CMU_SW_VER} = "56.00.513C-EU" ] \ - || [ ${CMU_SW_VER} = "56.00.511A-ADR" ] \ - || [ ${CMU_SW_VER} = "56.00.512A-ADR" ] \ - || [ ${CMU_SW_VER} = "56.00.513C-ADR" ] \ - || [ ${CMU_SW_VER} = "56.00.521A-NA" ] + if [ "${CMU_SW_VER}" == "56.00.511A-EU" ] \ + || [ "${CMU_SW_VER}" == "56.00.512A-EU" ] \ + || [ "${CMU_SW_VER}" == "56.00.513B-EU" ] \ + || [ "${CMU_SW_VER}" == "56.00.513C-EU" ] \ + || [ "${CMU_SW_VER}" == "56.00.511A-ADR" ] \ + || [ "${CMU_SW_VER}" == "56.00.512A-ADR" ] \ + || [ "${CMU_SW_VER}" == "56.00.513C-ADR" ] \ + || [ "${CMU_SW_VER}" == "56.00.521A-NA" ] then pause_copy=1 pause_copy_file=56.00.511A-EU @@ -49,7 +49,7 @@ then cp -a /jci/gui/common/js/Common.js.org /jci/gui/common/js/Common.js log_message "=== Common.js Restored From Original Backup ===" # Fallback only if supported FW version - elif [ ${pause_copy} = "1" ] + elif [ $pause_copy -eq 1 ] then log_message "=== No backup of Common.js available, no changes were made ===" # cp -a ${MYDIR}/config_org/pause-on-mute/jci/gui/common/js/Common.js.${pause_copy_file} /jci/gui/common/js/Common.js diff --git a/app/files/tweaks/12_diag-i.txt b/app/files/tweaks/12_diag-i.txt index 99d289a..b902750 100644 --- a/app/files/tweaks/12_diag-i.txt +++ b/app/files/tweaks/12_diag-i.txt @@ -4,7 +4,7 @@ log_message "===*** INSTALL DIAGMENU 1 SEC. CLOCK PRESS IN DISPLAY SETTINGS ... # Backups if [ ! -e /jci/gui/apps/diag/js/diagApp.js.org ] then - cp -a /jci/gui/apps/diag/diagApp.js /jci/gui/apps/diag/js/diagApp.js.org + cp -a /jci/gui/apps/diag/js/diagApp.js /jci/gui/apps/diag/js/diagApp.js.org log_message "=== Backup /jci/gui/apps/diag/js/diagApp.js ===" fi if [ ! -e /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js.org ] @@ -17,13 +17,26 @@ then cp -a /jci/gui/common/js/Common.js /jci/gui/common/js/Common.js.org log_message "=== Backup /jci/gui/common/js/Common.js ===" fi -if [ "${KEEPBKUPS}" = "1" ] +if [ ! -e /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org ] +then + cp -a /jci/gui/apps/diag/controls/Test/js/TestCtrl.js /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org + log_message "=== Backup /jci/gui/apps/diag/controls/Test/js/TestCtrl.js ===" +fi +if [ ! -e /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org ] +then + cp -a /jci/gui/apps/diag/controls/Test/css/TestCtrl.css /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org + log_message "=== Backup /jci/gui/apps/diag/controls/Test/css/TestCtrl.css ===" +fi + +if [ $KEEPBKUPS -eq 1 ] then cp /jci/gui/apps/diag/js/diagApp.js.org "${MYDIR}/bakups/" cp /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js.org "${MYDIR}/bakups/" cp /jci/gui/common/js/Common.js.org "${MYDIR}/bakups/" + cp /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org "${MYDIR}/bakups/" + cp /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org "${MYDIR}/bakups/" fi -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/diag/js/diagApp.js "${MYDIR}/bakups/test/diagApp_diagmenu-before.js" cp /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js "${MYDIR}/bakups/test/StatusBarCtrl_diagmenu-before.js" @@ -34,7 +47,6 @@ then fi if grep -Fq '"settleTime" : 1000,' /jci/gui/apps/diag/js/diagApp.js then - echo "exist" log_message "=== Modifications already done to /jci/gui/apps/diag/js/diagApp.js ===" else sed -i 's/"settleTime" : 20000,/"settleTime" : 1000,/g' /jci/gui/apps/diag/js/diagApp.js @@ -42,7 +54,6 @@ else fi if grep -Fq '"holdTimeout" : 1000,' /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js then - echo "exist" log_message "=== Modifications already done to StatusBarCtrl.js ===" else sed -i 's/"holdTimeout" : 5000,/"holdTimeout" : 1000,/g' /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js @@ -50,13 +61,15 @@ else fi if grep -Fq 'framework.sendEventToMmui("syssettings", "SelectDiagnostics"); // Sumire Racing' /jci/gui/common/js/Common.js then - echo "exist" log_message "=== Modifications already done to /jci/gui/common/js/Common.js ===" else sed -i '/this._diagEntrySequence = 1;/ a\framework.sendEventToMmui("syssettings", "SelectDiagnostics"); // Sumire Racing' /jci/gui/common/js/Common.js log_message "=== Modified /jci/gui/common/js/Common.js ===" fi -if [ "${TESTBKUPS}" = "1" ] +cp -a ${MYDIR}/config/test_mode/controls /jci/gui/apps/diag +log_message "=== Added Test Mode (T/M) Button To Diag App ===" + +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/diag/js/diagApp.js "${MYDIR}/bakups/test/diagApp_diagmenu-after.js" cp /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js "${MYDIR}/bakups/test/StatusBarCtrl_diagmenu-after.js" diff --git a/app/files/tweaks/12_diag-u.txt b/app/files/tweaks/12_diag-u.txt index e8f1848..ef5eb8f 100644 --- a/app/files/tweaks/12_diag-u.txt +++ b/app/files/tweaks/12_diag-u.txt @@ -1,7 +1,7 @@ #remove diagmenu with 1 sec. press at clock in display settings menu, script made by Sumire_Racing_JPN show_message "REMOVE DIAGMENU W. 1 SEC. PRESS AT CLOCK \nIN DISPLAY SETTINGS MENU" log_message "===*** UNINSTALL DIAGMENU W. AT CLOCK IN DISPLAY SETTINGS MENU ... ***===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/diag/js/diagApp.js "${MYDIR}/bakups/test/diagApp_diagmenu-before.js" cp /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js "${MYDIR}/bakups/test/StatusBarCtrl_diagmenu-before.js" @@ -30,7 +30,17 @@ then else log_message "=== /jci/gui/common/js/Common.js was not modified ===" fi -if [ "${TESTBKUPS}" = "1" ] +if [ -e /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org ] +then + cp -a /jci/gui/apps/diag/controls/Test/js/TestCtrl.js.org /jci/gui/apps/diag/controls/Test/js/TestCtrl.js + log_message "=== Restored TestCtrl.js From Backup ===" +fi +if [ -e /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org ] +then + cp -a /jci/gui/apps/diag/controls/Test/css/TestCtrl.css.org /jci/gui/apps/diag/controls/Test/css/TestCtrl.css + log_message "=== Restored TestCtrl.css From Backup ===" +fi +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/diag/js/diagApp.js "${MYDIR}/bakups/test/diagApp_diagmenu-after.js" cp /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js "${MYDIR}/bakups/test/StatusBarCtrl_diagmenu-after.js" diff --git a/app/files/tweaks/13_boot-i.txt b/app/files/tweaks/13_boot-i.txt index 32f939f..8d0d38f 100644 --- a/app/files/tweaks/13_boot-i.txt +++ b/app/files/tweaks/13_boot-i.txt @@ -24,35 +24,35 @@ then fi -if [ ${BOOTLOGO1} = 0 ] +if [ $BOOTLOGO1 -eq 0 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogo.ivf" /jci/resources/ log_message "=== LoopLogo.ivf set to Mazda Logo ===" -elif [ ${BOOTLOGO1} = 1 ] +elif [ $BOOTLOGO1 -eq 1 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoMatrix.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to Matrix ===" -elif [ ${BOOTLOGO1} = 2 ] +elif [ $BOOTLOGO1 -eq 2 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoRace.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to Large Mazda Logo ===" -elif [ ${BOOTLOGO1} = 3 ] +elif [ $BOOTLOGO1 -eq 3 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoFiat.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to Fiat Logo ===" -elif [ ${BOOTLOGO1} = 4 ] +elif [ $BOOTLOGO1 -eq 4 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoZ.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to MaZda Logo ===" -elif [ ${BOOTLOGO1} = 5 ] +elif [ $BOOTLOGO1 -eq 5 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoCinema.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to MZD Cinema Loop ===" -elif [ ${BOOTLOGO1} = 6 ] +elif [ $BOOTLOGO1 -eq 6 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoCrissCross.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to MZD Criss Cross ===" -elif [ ${BOOTLOGO1} = 7 ] +elif [ $BOOTLOGO1 -eq 7 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoRace.ivf" /jci/resources/LoopLogo.ivf log_message "=== LoopLogo.ivf set to MZD Race Loop ===" @@ -60,39 +60,39 @@ else log_message "=== LoopLogo.ivf was not changed ===" fi -if [ ${BOOTLOGO2} = 0 ] +if [ $BOOTLOGO2 -eq 0 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogo.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to Mazda Logo ===" -elif [ ${BOOTLOGO2} = 1 ] +elif [ $BOOTLOGO2 -eq 1 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoMatrix.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to Matrix ===" -elif [ ${BOOTLOGO2} = 2 ] +elif [ $BOOTLOGO2 -eq 2 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoRace.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to Large Mazda Logo ===" -elif [ ${BOOTLOGO2} = 3 ] +elif [ $BOOTLOGO2 -eq 3 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogo124Spider.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to Spider 124 Trans ===" -elif [ ${BOOTLOGO2} = 4 ] +elif [ $BOOTLOGO2 -eq 4 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoZ.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to MaZda Logo ===" -elif [ ${BOOTLOGO2} = 5 ] +elif [ $BOOTLOGO2 -eq 5 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoCinema.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to MZD Cinema Loop ===" -elif [ ${BOOTLOGO2} = 6 ] +elif [ $BOOTLOGO2 -eq 6 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoCrissCross.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to MZD Criss Cross ===" -elif [ ${BOOTLOGO2} = 7 ] +elif [ $BOOTLOGO2 -eq 7 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoRace.ivf" /jci/resources/TranLogo.ivf log_message "=== TranLogo.ivf set to MZD Race Loop ===" -elif [ ${BOOTLOGO2} = 8 ] +elif [ $BOOTLOGO2 -eq 8 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogo.ivf" /jci/resources/ log_message "=== TranLogo.ivf set to Default Mazda Intro ===" @@ -100,51 +100,51 @@ else log_message "=== TranLogo.ivf was not changed ===" fi -if [ ${BOOTLOGO3} = 0 ] +if [ $BOOTLOGO3 -eq 0 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogo.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to Mazda Logo ===" -elif [ ${BOOTLOGO3} = 1 ] +elif [ $BOOTLOGO3 -eq 1 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoMatrix.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to Matrix ===" -elif [ ${BOOTLOGO3} = 2 ] +elif [ $BOOTLOGO3 -eq 2 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoEndRace.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to Mazda Race Logo ===" -elif [ ${BOOTLOGO3} = 3 ] +elif [ $BOOTLOGO3 -eq 3 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoCarFlash.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to Car Flash ===" -elif [ ${BOOTLOGO3} = 4 ] +elif [ $BOOTLOGO3 -eq 4 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/LoopLogoZ.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MaZda Logo ===" -elif [ ${BOOTLOGO3} = 5 ] +elif [ $BOOTLOGO3 -eq 5 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoEndCinema.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MZD Cinema ===" -elif [ ${BOOTLOGO3} = 6 ] +elif [ $BOOTLOGO3 -eq 6 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoEndCrissCross.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MZD Criss Cross ===" -elif [ ${BOOTLOGO3} = 7 ] +elif [ $BOOTLOGO3 -eq 7 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoEndRace.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MZD Race ===" -elif [ ${BOOTLOGO3} = 8 ] +elif [ $BOOTLOGO3 -eq 8 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoEndSpace.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MZD Space ===" -elif [ ${BOOTLOGO3} = 9 ] +elif [ $BOOTLOGO3 -eq 9 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranRace.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MZD Race ===" -elif [ ${BOOTLOGO3} = 10 ] +elif [ $BOOTLOGO3 -eq 10 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranIntroM.ivf" /jci/resources/TranLogoEnd.ivf log_message "=== TranLogoEnd.ivf set to MZD Title Slam ===" -elif [ ${BOOTLOGO3} = 11 ] +elif [ $BOOTLOGO3 -eq 11 ] then cp -a "${MYDIR}/config/bootanimation/jci/resources/TranLogoEnd.ivf" /jci/resources/ log_message "=== TranLogoEnd.ivf set to Default ===" diff --git a/app/files/tweaks/14_bgart-i.txt b/app/files/tweaks/14_bgart-i.txt index efcc9a4..2b80f6a 100644 --- a/app/files/tweaks/14_bgart-i.txt +++ b/app/files/tweaks/14_bgart-i.txt @@ -8,7 +8,7 @@ then cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org log_message "=== Backup of NowPlaying4Ctrl.css ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org "${MYDIR}/bakups/" aio_info \"NowPlaying4Ctrl.css.org\", @@ -26,13 +26,13 @@ echo "/* MZD-AIO-TI BIGGERALBM CSS */" >> /jci/gui/common/controls/NowPlaying4/c cat ${MYDIR}/config/bigger-album-art/big-albm.css >> /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css -if [ ${FULLTITLES} = "1" ] +if [ $FULLTITLES -eq 1 ] then cat ${MYDIR}/config/bigger-album-art/full-titles.css >> /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css log_message "=== Added for Full Width Titles ===" fi -if [ ${NOALBM} = "1" ] +if [ $NOALBM -eq 1 ] then cat ${MYDIR}/config/bigger-album-art/no-albm.css >> /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css log_message "=== Added CSS For Hide Album Art Option ===" diff --git a/app/files/tweaks/15_btnbackground-i.txt b/app/files/tweaks/15_btnbackground-i.txt index bf8c6be..4876925 100644 --- a/app/files/tweaks/15_btnbackground-i.txt +++ b/app/files/tweaks/15_btnbackground-i.txt @@ -8,7 +8,7 @@ then cp -a /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css.org log_message "=== Backup of /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css ===" fi -if [ "${KEEPBKUPS}" = 1 ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css.org "${MYDIR}/bakups/" aio_info \"Ump3Ctrl.js.org\", @@ -18,7 +18,7 @@ sed -i "/.. MZD-AIO-TI NO-BTN-BG ../,/.. END AIO CSS ../d" /jci/gui/common/contr # Append css echo "/* MZD-AIO-TI NO-BTN-BG */" >> /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css -if [ ${NO_BTN_BG} = 1 ] +if [ $NO_BTN_BG -eq 1 ] then cat <> /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css /* Remove Button Backgrounds */ @@ -30,7 +30,7 @@ then EOT log_message "=== Removed Behind Buttons Background ===" fi -if [ ${NO_NP_BG} = 1 ] +if [ $NO_NP_BG -eq 1 ] then cat <> /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css /* Remove Now Playing Background*/ @@ -40,7 +40,7 @@ then EOT log_message "=== Removed Now Playing Overlay ===" fi -if [ ${NO_LIST_BG} = 1 ] +if [ $NO_LIST_BG -eq 1 ] then cat <> /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css /* Remove List Background*/ @@ -50,7 +50,7 @@ then EOT log_message "=== Removed List View Overlay ===" fi -if [ ${NO_CALL_BG} = 1 ] +if [ $NO_CALL_BG -eq 1 ] then cat <> /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css /* Remove In Call Background*/ @@ -61,7 +61,7 @@ then EOT log_message "=== Removed In-Call Overlay ===" fi -if [ ${NO_TEXT_BG} = 1 ] +if [ $NO_TEXT_BG -eq 1 ] then cat <> /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css /* Remove In Call Background*/ diff --git a/app/files/tweaks/17_videoplayer-i.txt b/app/files/tweaks/17_videoplayer-i.txt index 0766c4d..42307f2 100644 --- a/app/files/tweaks/17_videoplayer-i.txt +++ b/app/files/tweaks/17_videoplayer-i.txt @@ -1,13 +1,13 @@ ####################################################################### # Video_Player by many many people -# V3.1 - Mods by vic_bam85 & Trezdog44 +# Mods by vic_bam85 & Trezdog44 ####################################################################### -show_message "VIDEOPLAYER v3.3\nMODS BY VIC_BAM85 & TREZDOG44" +show_message "VIDEOPLAYER v${VP_VER}\nMODS BY VIC_BAM85 & TREZDOG44" log_message "============*********** INSTALL VIDEOPLAYER ************=============" -log_message "=== Begin Installation of VideoPlayer V3.3 ===" +log_message "=== Begin Installation of VideoPlayer V${VP_VER} ===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_videoplayer-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_videoplayer-1._before.json" @@ -24,8 +24,9 @@ sed -i '/--port=9998/d' /jci/scripts/stage_wifi.sh # Copies the additionalApps.js if [ $CASDK_MODE -eq 0 ] then - cp -a ${MYDIR}/config/jci/opera/opera_dir/userjs/additionalApps.js /jci/opera/opera_dir/userjs/ && CASDK_MODE=1 - chmod 755 /jci/opera/opera_dir/userjs/additionalApps.js + cp -a ${MYDIR}/config/jci/opera/opera_dir/userjs/additionalApps.js /jci/opera/opera_dir/userjs/ && CASDK_MODE=1 + chmod 755 /jci/opera/opera_dir/userjs/additionalApps.js + chown 1018:3015 /jci/opera/opera_dir/userjs/additionalApps.js log_message "=== Copied additionalApps.js ===" fi @@ -50,24 +51,24 @@ fi # Remove old port configuration count=$(grep -c '/jci/gui/addon-common/websocketd --port=55555 sh' /jci/scripts/stage_wifi.sh) -if [ "$count" != "0" ] +if [ $count -ne 0 ] then - sed -i '/### Video player/d' /jci/scripts/stage_wifi.sh - sed -i '/55555/d' /jci/scripts/stage_wifi.sh + sed -i '/### Video player/d' /jci/scripts/stage_wifi.sh + sed -i '/55555/d' /jci/scripts/stage_wifi.sh log_message "=== Removed Old Configuration ===" fi count=$(grep -c '/jci/gui/addon-common/websocketd --port=9998 sh' /jci/scripts/stage_wifi.sh) -if [ "$count" = "0" ] - then - #echo -e '\n\n\n### Video player' >> /jci/scripts/stage_wifi.sh - #echo -e '\n/jci/gui/addon-common/websocketd --port=9998 sh &' >> /jci/scripts/stage_wifi.sh - sed -i '/#!/ a\### Video player' /jci/scripts/stage_wifi.sh - sleep 1 - sed -i '/Video player/ i\ ' /jci/scripts/stage_wifi.sh - sed -i '/Video player/ a\/jci/gui/addon-common/websocketd --port=9998 sh &' /jci/scripts/stage_wifi.sh - chmod 755 /jci/scripts/stage_wifi.sh - log_message "=== Modified Stage_wifi.sh ===" +if [ $count -eq 0 ] +then + #echo -e '\n\n\n### Video player' >> /jci/scripts/stage_wifi.sh + #echo -e '\n/jci/gui/addon-common/websocketd --port=9998 sh &' >> /jci/scripts/stage_wifi.sh + sed -i '/#!/ a\### Video player' /jci/scripts/stage_wifi.sh + sleep 1 + sed -i '/Video player/ i\ ' /jci/scripts/stage_wifi.sh + sed -i '/Video player/ a\/jci/gui/addon-common/websocketd --port=9998 sh &' /jci/scripts/stage_wifi.sh + chmod 755 /jci/scripts/stage_wifi.sh + log_message "=== Modified Stage_wifi.sh ===" fi cp -a ${MYDIR}/config/videoplayer/jci/gui/apps/* /jci/gui/apps/ @@ -82,10 +83,10 @@ log_message "=== Copy libs to usr/lib/gstreamer-0.10 count=$(grep -c '/imx-mm/video-codec' /etc/profile) -if [ "$count" = "0" ] - then - sed -i 's/\/imx-mm\/parser/\/imx-mm\/parser:\/usr\/lib\/imx-mm\/video-codec/g' /etc/profile - log_message "=== Fix exports / codecs ===" +if [ $count -eq 0 ] +then + sed -i 's/\/imx-mm\/parser/\/imx-mm\/parser:\/usr\/lib\/imx-mm\/video-codec/g' /etc/profile + log_message "=== Fix exports / codecs ===" fi export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/imx-mm/video-codec diff --git a/app/files/tweaks/17_videoplayer-u.txt b/app/files/tweaks/17_videoplayer-u.txt index ae8516e..fb64afd 100644 --- a/app/files/tweaks/17_videoplayer-u.txt +++ b/app/files/tweaks/17_videoplayer-u.txt @@ -5,7 +5,7 @@ log_message "===========************ UNINSTALL VIDEOPLAYER ... ************==== ### kills all WebSocket daemons pkill websocketd -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_videoplayer-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_videoplayer-1._before.json" @@ -56,7 +56,7 @@ then log_message "=== Found mzd meter entry in additionalApps.json ===" ADDIT_APPS=1 fi -if [ ${ADDIT_APPS} = "0" ] +if [ $ADDIT_APPS -eq 0 ] then log_message "=== No more entrys in additionalApps.json, files will be deleted ===" rm -f /jci/opera/opera_dir/userjs/additionalApps.* @@ -82,7 +82,7 @@ rm -f /jci/scripts/get-vehicle-gear* rm -f /jci/scripts/get-vehicle-speed* rm -f /jci/scripts/stage_wifi.sh.bak? -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_videoplayer-after.sh" fi diff --git a/app/files/tweaks/18_swapfile-u.txt b/app/files/tweaks/18_swapfile-u.txt index 8e61cd9..60759e4 100644 --- a/app/files/tweaks/18_swapfile-u.txt +++ b/app/files/tweaks/18_swapfile-u.txt @@ -1,7 +1,7 @@ # Remove swap file show_message "REMOVE SWAP FILE ..." log_message "==========*********** UNINSTALL SWAP FILE ... ***********==========" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_swap-before.sh" fi @@ -19,7 +19,7 @@ sed -i '/ fi/d' /jci/scripts/stage_wifi.sh sed -i '/ done/d' /jci/scripts/stage_wifi.sh sleep 2 log_message "=== Deleted modifications from /jci/scripts/stage_wifi.sh ===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_swap-after.sh" fi diff --git a/app/files/tweaks/19_speedo-i1.txt b/app/files/tweaks/19_speedo-i1.txt index 470d5c6..2cf3936 100644 --- a/app/files/tweaks/19_speedo-i1.txt +++ b/app/files/tweaks/19_speedo-i1.txt @@ -1,9 +1,9 @@ # Speedometer v4.8 -show_message "INSTALL SPEEDOMETER v5.1 ..." +show_message "INSTALL SPEEDOMETER v${SPD_VER} ..." log_message "==========**************** INSTALL SPEEDOMETER *****************=========" log_message "=== Begin Installation of Speedometer ===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_speedometer-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_speedometer-1._before.json" @@ -16,7 +16,7 @@ pkill websocketd if [ -e /jci/gui/apps/_speedometer/js/speedometer-config.js ] then cp -a /jci/gui/apps/_speedometer/js/speedometer-config.js /tmp/root - log_message "=== Save Temporary Copy of speedometer-config.js ===" + log_message "=== Save Temporary Copy of speedometer-config.js ===" fi ### cleanup old versions @@ -77,6 +77,18 @@ log_message "=== Copied folder /jci/gui/apps/_speedometer find /jci/gui/apps/_*/ -type f -name '*.js' -exec chmod 755 {} \; find /jci/gui/apps/_*/ -type f -name '*.sh' -exec chmod 755 {} \; +if [ -e ${MYDIR}/config/speedometer/speedometer-config.js ] +then + cp -a ${MYDIR}/config/speedometer/speedometer-config.js /jci/gui/apps/_speedometer/js + log_message "=== Copied Speedometer Config File ===" +elif [ -e /tmp/root/speedometer-config.js ] +then + cp -a /tmp/root/speedometer-config.js /jci/gui/apps/_speedometer/js + log_message "=== Reuse Previous Speedometer Config File ===" +else + log_message "=== NO 'speedometer-config.js' FILE FOUND... USING DEFAULT ===" +fi + if [ ! -e /jci/gui/addon-common/websocketd ] || [ ! -e /jci/gui/addon-common/cufon-yui.js ]; then cp -a "${MYDIR}/config/jci/gui/addon-common/" /jci/gui/ chmod 755 /jci/gui/addon-common/websocketd @@ -138,12 +150,12 @@ then fi # change compass rotating depending on NAV SD card inside or not -if [ ! -d /mnt/sd_nav/content/speedcam ] || [ ${COMPAT_GROUP} -ne 1 ] +if [ ! -d /mnt/sd_nav/content/speedcam ] || [ $COMPAT_GROUP -ne 1 ] then sed -i 's/var noNavSD = false;/var noNavSD = true;/g' /jci/gui/apps/_speedometer/js/speedometer-startup.js log_message "=== Changed compass rotating, because no NAV SD card is inside ===" fi -if [ ${SPEEDCOLOR} != 0 ] +if [ "${SPEEDCOLOR}" != "0" ] then rm -f /jci/gui/common/images/*.aio touch /jci/gui/common/images/${SPEEDCOLOR}.aio diff --git a/app/files/tweaks/19_speedo-i2.txt b/app/files/tweaks/19_speedo-i2.txt index d298efa..a07fa6f 100644 --- a/app/files/tweaks/19_speedo-i2.txt +++ b/app/files/tweaks/19_speedo-i2.txt @@ -1,4 +1,4 @@ -if [ ${TESTBKUPS} = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/apps/_speedometer/js/speedometer-startup.js ${MYDIR}/bakups/test/ cp -a /jci/scripts/stage_wifi.sh ${MYDIR}/bakups/test/stage_wifi-after_speedo.sh diff --git a/app/files/tweaks/19_speedo-own_background.txt b/app/files/tweaks/19_speedo-own_background.txt index 0efcc92..cd853ac 100644 --- a/app/files/tweaks/19_speedo-own_background.txt +++ b/app/files/tweaks/19_speedo-own_background.txt @@ -1,7 +1,7 @@ # own background # show_message "SET BACKGROUND OPACITY TO ${OPACITY}" log_message "=== Set background opacity to ${OPACITY} ===" -if [ ! ${OPACITY} = 0 ] +if [ "${OPACITY}" != "0" ] then sed -i "s/var black_background_opacity = 0.0;/var black_background_opacity = ${OPACITY};/g" /jci/gui/apps/_speedometer/js/speedometer-startup.js fi diff --git a/app/files/tweaks/19_speedo-u.txt b/app/files/tweaks/19_speedo-u.txt index 3958685..f11215d 100644 --- a/app/files/tweaks/19_speedo-u.txt +++ b/app/files/tweaks/19_speedo-u.txt @@ -4,7 +4,7 @@ log_message "=======*************** UNINSTALL SPEEDOMETER ... ****************= log_message "=== kill all WebSocket daemons ===" pkill websocketd -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_speedometer-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_speedometer-1._before.json" @@ -43,15 +43,15 @@ sed -i '/addon-speedometer.sh &/d' /jci/scripts/stage_wifi.sh sed -i '/speedometer.sh &/d' /jci/scripts/stage_wifi.sh sed -i '/addon-player.sh &/d' /jci/scripts/stage_wifi.sh sed -i '/mount of SD card/d' /jci/scripts/stage_wifi.sh +sed -i '/umount -l/d' /jci/scripts/stage_wifi.sh sed -i '/sleep 40/d' /jci/scripts/stage_wifi.sh sed -i '/sleep 55/d' /jci/scripts/stage_wifi.sh sed -i '/sleep 50/d' /jci/scripts/stage_wifi.sh -sed -i '/umount -l/d' /jci/scripts/stage_wifi.sh sed -i '/sleep 25/d' /jci/scripts/stage_wifi.sh -sed -i '#mount /dev/sda1#d' /jci/scripts/stage_wifi.sh - sed -i '/sleep 4/d' /jci/scripts/stage_wifi.sh sed -i '/sleep 6/d' /jci/scripts/stage_wifi.sh +sed -i '/9969/d' /jci/scripts/stage_wifi.sh +sed -i '/55554/d' /jci/scripts/stage_wifi.sh ADDIT_APPS=0 if grep -Fq "_aiotweaks" /jci/opera/opera_dir/userjs/additionalApps.json @@ -71,7 +71,7 @@ then log_message "=== Found mzd meter entry in additionalApps.json ===" ADDIT_APPS=1 fi -if [ ${ADDIT_APPS} = "0" ] +if [ $ADDIT_APPS -eq 0 ] then log_message "=== No more entrys in additionalApps.json, files will be deleted ===" rm -f /jci/opera/opera_dir/userjs/additionalApps.* @@ -109,7 +109,7 @@ rm -f /jci/scripts/get-engine-speed.sh rm -f /jci/scripts/get-gear-position.sh rm -f /jci/scripts/get-temp.sh -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_speedometer-after.sh" fi diff --git a/app/files/tweaks/19_speedo_bar.txt b/app/files/tweaks/19_speedo_bar.txt index a2c97d3..2324d28 100644 --- a/app/files/tweaks/19_speedo_bar.txt +++ b/app/files/tweaks/19_speedo_bar.txt @@ -1,24 +1,5 @@ -# Speedometer v5.0 -show_message "INSTALL DIGITAL BAR SPEEDOMETER VARIANT ..." -log_message "=========********** INSTALL DIGITAL BAR SPEEDOMETER ************=========" - -cp -a ${MYDIR}/config/speedometer_bar/jci / -log_message "=== Speedometer Bar Variant Installed ===" - -sed -i 's/var barSpeedometerMod = false;/var barSpeedometerMod = true;/g' /jci/gui/apps/_speedometer/js/speedometer-startup.js +# Set the Bar Speedometer flag +sed -i 's/var barSpeedometerMod = false;/var barSpeedometerMod = true;/g' /jci/gui/apps/_speedometer/js/speedometer-startup.js log_message "=== Set flag for bar speedometer in speedometer-startup.js ===" -if [ -e ${MYDIR}/config/speedometer_bar/speedometer-config.js ] -then - cp -a ${MYDIR}/config/speedometer_bar/speedometer-config.js /jci/gui/apps/_speedometer/js - log_message "=== Copied Speedometer Config File ===" -elif [ -e /tmp/root/speedometer-config.js ] -then - cp -a /tmp/root/speedometer-config.js /jci/gui/apps/_speedometer/js - log_message "=== Reuse Previous Speedometer Config File ===" -else - log_message "=== NO 'speedometer-config.js' FILE FOUND... USING DEFAULT ===" -fi - -log_message "=========************ END DIGITAL BAR SPEEDOMETER **************=========" -log_message " " +chmod -R 755 /jci/gui/apps/_speedometer/ diff --git a/app/files/tweaks/19_speedo_variant-i.txt b/app/files/tweaks/19_speedo_variant-i.txt index c59ab7b..a4a6d5c 100644 --- a/app/files/tweaks/19_speedo_variant-i.txt +++ b/app/files/tweaks/19_speedo_variant-i.txt @@ -1,13 +1,3 @@ -show_message "INSTALL SPEEDOMETER VARIANT" -log_message "========************* INSTALL SPEEDOMETER VARIANT ... ***********========" - -# Copy modded speedo files -cp -a ${MYDIR}/config/speedometer_mod/jci / -log_message "=== Speedometer Variant Installed ===" - -chmod 755 /jci/fonts/Crysta.ttf -chmod 755 /jci/fonts/CHN/Crysta.ttf -chmod 755 /jci/fonts/JP/Crysta.ttf - -log_message "=======******** END INSTALLATION OF SPEEDOMETER VARIANT *********========" -log_message " " +sed -i 's/var speedMod = false;/var speedMod = true;/g' /jci/gui/apps/_speedometer/js/speedometer-startup.js +log_message "=== Set flag for speedometer mod in speedometer-startup.js ===" +chmod -R 755 /jci/fonts diff --git a/app/files/tweaks/20_date-iv1.txt b/app/files/tweaks/20_date-iv1.txt index d6e4505..a80bb27 100644 --- a/app/files/tweaks/20_date-iv1.txt +++ b/app/files/tweaks/20_date-iv1.txt @@ -71,7 +71,7 @@ then cp -a /jci/gui/framework/js/Utility.js /jci/gui/framework/js/Utility.js.org log_message "=== Backup of /jci/gui/framework/js/Utility.js to Utility.js.org ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org "${MYDIR}/bakups/" cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org "${MYDIR}/bakups/" @@ -87,7 +87,7 @@ then aio_info \"Utility.js.org\", fi -if [ ${statusbar_copy} = "1" ] +if [ $statusbar_copy -eq 1 ] then cp -a ${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/controls/StatusBar/css/StatusBarCtrl.v1.css /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css log_message "=== Copied /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css ===" @@ -99,7 +99,7 @@ then log_message "=== Copied /jci/gui/framework/js/Utility.js ===" fi -if [ ${statusbar_copy} = "0" ] +if [ $statusbar_copy -eq 0 ] then log_message "=== date_to_statusbar_mod v1 not compatible to your FW, no installation made! ===" fi diff --git a/app/files/tweaks/20_date-iv2.1.txt b/app/files/tweaks/20_date-iv2.1.txt index 28f2c30..46e4a8e 100644 --- a/app/files/tweaks/20_date-iv2.1.txt +++ b/app/files/tweaks/20_date-iv2.1.txt @@ -67,7 +67,7 @@ if [ ! -e /jci/gui/framework/js/Utility.js.org ] cp -a /jci/gui/framework/js/Utility.js /jci/gui/framework/js/Utility.js.org log_message "=== Backup of /jci/gui/framework/js/Utility.js to Utility.js.org ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org "${MYDIR}/bakups/" cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org "${MYDIR}/bakups/" @@ -82,7 +82,7 @@ then aio_info \"IcnSbRoaming.png.org\", aio_info \"Utility.js.org\", fi -if [ ${statusbar_copy} = "1" ] +if [ $statusbar_copy -eq 1 ] then cp -a ${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/controls/StatusBar/css/StatusBarCtrl.v2.1.css /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css log_message "=== Copied /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css ===" @@ -94,7 +94,7 @@ if [ ${statusbar_copy} = "1" ] log_message "=== Copied /jci/gui/framework/js/Utility.js ===" fi -if [ ${statusbar_copy} = "0" ] +if [ $statusbar_copy -eq 0 ] then log_message "=== date_to_statusbar_mod v2.1 not compatible to your FW, no installation made! ===" fi diff --git a/app/files/tweaks/20_date-iv2.2.txt b/app/files/tweaks/20_date-iv2.2.txt index 0a32dd1..2a68c5a 100644 --- a/app/files/tweaks/20_date-iv2.2.txt +++ b/app/files/tweaks/20_date-iv2.2.txt @@ -79,7 +79,7 @@ if [ ! -e /jci/gui/framework/js/Utility.js.org ] cp -a /jci/gui/framework/js/Utility.js /jci/gui/framework/js/Utility.js.org log_message "=== Backup of /jci/gui/framework/js/Utility.js to Utility.js.org ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org "${MYDIR}/bakups/" cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org "${MYDIR}/bakups/" @@ -94,7 +94,7 @@ then aio_info "IcnSbRoaming.png.org," aio_info "Utility.js.org," fi -if [ ${statusbar_copy} = "1" ] +if [ $statusbar_copy -eq 1 ] then cp -a ${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/controls/Sbn/css/SbnCtrl.v2.2.css /jci/gui/common/controls/Sbn/css/SbnCtrl.css log_message "=== Copied /jci/gui/common/controls/Sbn/css/SbnCtrl.css ===" @@ -110,7 +110,7 @@ if [ ${statusbar_copy} = "1" ] log_message "=== Copied /jci/gui/framework/js/Utility.js ===" fi -if [ ${statusbar_copy} = "2" ] +if [ $statusbar_copy -eq 2 ] then cp -a ${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/controls/Sbn/css/SbnCtrl.v2.2.${statusbar_copy_file}.css /jci/gui/common/controls/Sbn/css/SbnCtrl.css log_message "=== Copied /jci/gui/common/controls/Sbn/css/SbnCtrl.css for FW ${CMU_SW_VER} ===" @@ -126,7 +126,7 @@ if [ ${statusbar_copy} = "2" ] log_message "=== Copied /jci/gui/framework/js/Utility.js ===" fi -if [ ${statusbar_copy} = "0" ] +if [ $statusbar_copy -eq 0 ] then log_message "=== date_to_statusbar_mod v2.2 not compatible to your FW, no installation made! ===" fi diff --git a/app/files/tweaks/20_date-iv2.3.txt b/app/files/tweaks/20_date-iv2.3.txt index e580118..b1306f8 100644 --- a/app/files/tweaks/20_date-iv2.3.txt +++ b/app/files/tweaks/20_date-iv2.3.txt @@ -81,7 +81,7 @@ if [ ! -e /jci/gui/framework/js/Utility.js.org ] cp -a /jci/gui/framework/js/Utility.js /jci/gui/framework/js/Utility.js.org log_message "=== Backup of /jci/gui/framework/js/Utility.js to Utility.js.org ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org "${MYDIR}/bakups/" cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org "${MYDIR}/bakups/" diff --git a/app/files/tweaks/20_date-iv3.3.txt b/app/files/tweaks/20_date-iv3.3.txt index 6391c66..3ab17be 100644 --- a/app/files/tweaks/20_date-iv3.3.txt +++ b/app/files/tweaks/20_date-iv3.3.txt @@ -10,12 +10,12 @@ log_message "=====********* INSTALL DATE_TO_STATUSBAR MOD V3.3 ... ******** STATUSBAR_COPY=0 # Strict Compatability Check -if [ "${COMPAT_GROUP}" = "1" ] +if [ $COMPAT_GROUP -eq 1 ] then STATUSBAR_COPY=1 log_message "=== FW ${CMU_SW_VER} detected, copy matching files ===" # This Compatability Check is VERY important for v58+ Copying the wrong file will cause a bootloop -elif [ "${COMPAT_GROUP}" -gt "1" ] +elif [ $COMPAT_GROUP -gt 1 ] then STATUSBAR_COPY=2 log_message "=== FW ${CMU_SW_VER} detected, copy matching files ===" @@ -53,7 +53,7 @@ then cp -a /jci/gui/framework/js/Utility.js /jci/gui/framework/js/Utility.js.org log_message "=== Backup of /jci/gui/framework/js/Utility.js to Utility.js.org ===" fi -if [ "${KEEPBKUPS}" = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org "${MYDIR}/bakups/" cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org "${MYDIR}/bakups/" @@ -142,33 +142,33 @@ cp -a "${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/images/icons/IcnSbRo log_message "=== Copied /jci/gui/common/images/icons/IcnSbRoaming.png ===" # Utility.js determines the date format -if [ "${DATE_FORMAT}" = "2" ] +if [ $DATE_FORMAT -eq 2 ] then # For mm/dd cp -a "${MYDIR}/config/date-to-statusbar_mod/jci/gui/framework/js/Utility.v2.3.js" /jci/gui/framework/js/Utility.js log_message "=== Copied /jci/gui/framework/js/Utility.js (Date Format mm/dd) ===" -elif [ "${DATE_FORMAT}" = "1" ] +elif [ $DATE_FORMAT -eq 1 ] then # For dd.mm. cp -a "${MYDIR}/config/date-to-statusbar_mod/jci/gui/framework/js/Utility.v2.2.js" /jci/gui/framework/js/Utility.js log_message "=== Copied /jci/gui/framework/js/Utility.js (Date Format dd.mm.) ===" -else # if [ "${DATE_FORMAT}" = "0" ] +else # if [ $DATE_FORMAT -eq 0 ] # For Localized Date (Fallback) cp -a "${MYDIR}/config/date-to-statusbar_mod/jci/gui/framework/js/Utility.v2.1.js" /jci/gui/framework/js/Utility.js log_message "=== Copied /jci/gui/framework/js/Utility.js (Date Format Localized) ===" fi # StatusBarCtrl.js is the file that needs to be compatability checked because of minor changes in FW v59+ -if [ ${STATUSBAR_COPY} = "1" ] +if [ $STATUSBAR_COPY -eq 1 ] then cp -a "${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/controls/StatusBar/js/StatusBarCtrl.v2.2.js" /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js log_message "=== Copied /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js ===" -elif [ ${STATUSBAR_COPY} = "2" ] +elif [ $STATUSBAR_COPY -eq 2 ] then cp -a "${MYDIR}/config/date-to-statusbar_mod/jci/gui/common/controls/StatusBar/js/StatusBarCtrl.v2.2.v59.js" /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js log_message "=== Copied StatusBarCtrl.js for FW ${CMU_SW_VER} ===" # All known FW versions should pass the compatability check -else # if [ ${STATUSBAR_COPY} = "0" ] +else # if [ $STATUSBAR_COPY -eq 0 ] log_message "***** date_to_statusbar_mod v3.3 not compatible to your FW, no installation made! ******" log_message "*********** Please email your FW version:${CMU_SW_VER} to aio@mazdatweaks.com **********" fi diff --git a/app/files/tweaks/20_mainmenu-i.txt b/app/files/tweaks/20_mainmenu-i.txt index 624d3b4..91e3e54 100644 --- a/app/files/tweaks/20_mainmenu-i.txt +++ b/app/files/tweaks/20_mainmenu-i.txt @@ -9,12 +9,12 @@ then cp -a /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org log_message "=== Bakup /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org "${MYDIR}/bakups/" aio_info \"MainMenuCtrl.css.org\", fi -if [ ${TESTBKUPS} = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css "${MYDIR}/bakups/test/MainMenuCtrl_before.css" fi @@ -23,7 +23,7 @@ remove_aio_css /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css MAINM echo "/* MZD-AIO-TI MAINMENU CSS */" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css -if [ ${UI_STYLE_ELLIPSE} = "1" ] +if [ $UI_STYLE_ELLIPSE -eq 1 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* Main Menu Ellipse */ @@ -33,24 +33,24 @@ then EOT log_message "=== Removed Main Menu Ellipse ===" fi -if [ "${UI_STYLE_ALTLAYOUT}" = "1" ] +if [ $UI_STYLE_ALTLAYOUT -eq 1 ] then cat "${MYDIR}/config/MainMenuTweaks/StarA.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Added CSS for Alternative Main Menu (Star Points) ===" -elif [ "${UI_STYLE_ALTLAYOUT}" = "2" ] +elif [ $UI_STYLE_ALTLAYOUT -eq 2 ] then cat "${MYDIR}/config/MainMenuTweaks/StarB.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Added CSS for Alternative Main Menu (Star Points) ===" -elif [ "${UI_STYLE_ALTLAYOUT}" = "3" ] +elif [ $UI_STYLE_ALTLAYOUT -eq 3 ] then cat "${MYDIR}/config/MainMenuTweaks/Inverted.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Added CSS for Alternative Main Menu (Inverted) ===" -elif [ "${UI_STYLE_ALTLAYOUT}" = "4" ] +elif [ $UI_STYLE_ALTLAYOUT -eq 4 ] then cat "${MYDIR}/config/MainMenuTweaks/FlatLine.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Added CSS for Alternative Main Menu (Flatline) ===" fi -if [ ${UI_STYLE_MINICOINS} = "1" ] +if [ $UI_STYLE_MINICOINS -eq 1 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* Small Main Menu Coins */ @@ -65,7 +65,7 @@ then EOT log_message "=== Added CSS for Small Coins ===" fi -if [ ${UI_STYLE_MINIFOCUS} = "1" ] +if [ $UI_STYLE_MINIFOCUS -eq 1 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* Small Main Menu Coins */ @@ -82,16 +82,16 @@ then background-position: center 75%; } EOT - if [ "${UI_STYLE_ALTLAYOUT}" = "1" ] + if [ $UI_STYLE_ALTLAYOUT -eq 1 ] then cat "${MYDIR}/config/MainMenuTweaks/StarASmallFocused.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css - elif [ "${UI_STYLE_ALTLAYOUT}" = "2" ] + elif [ $UI_STYLE_ALTLAYOUT -eq 2 ] then cat "${MYDIR}/config/MainMenuTweaks/StarBSmallFocused.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css - elif [ "${UI_STYLE_ALTLAYOUT}" = "3" ] + elif [ $UI_STYLE_ALTLAYOUT -eq 3 ] then cat "${MYDIR}/config/MainMenuTweaks/InvertedSmallFocused.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css - elif [ "${UI_STYLE_ALTLAYOUT}" = "4" ] + elif [ $UI_STYLE_ALTLAYOUT -eq 4 ] then cat "${MYDIR}/config/MainMenuTweaks/FlatLineSmallFocused.css" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css else @@ -99,7 +99,7 @@ EOT fi log_message "=== Added CSS for Small Focused Coin ===" fi -if [ ${UI_STYLE_MAIN3D} = "1" ] +if [ $UI_STYLE_MAIN3D -eq 1 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* 3D MAIN MENU TEXT! */ @@ -119,7 +119,7 @@ then } EOT log_message "=== Added CSS for 3D Main Menu Label ===" -elif [ ${UI_STYLE_MAIN3D} = "2" ] +elif [ $UI_STYLE_MAIN3D -eq 2 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* HIDE MAIN MENU TEXT! */ @@ -128,7 +128,7 @@ then } EOT log_message "=== Added CSS for Hide Main Menu Label ===" -elif [ ${UI_STYLE_MAIN3D} = "3" ] +elif [ $UI_STYLE_MAIN3D -eq 3 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* COLORED MAIN MENU TEXT! */ @@ -136,9 +136,9 @@ then color: ${UI_STYLE_LABELCOLOR}; } EOT - log_message "=== Added CSS for Hide Main Menu Label ===" + log_message "=== Added CSS for color Main Menu Label ===" fi -if [ ${UI_STYLE_NOGLOW} = "1" ] +if [ $UI_STYLE_NOGLOW -eq 1 ] then cat <> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css /* Remove Coin Glow */ @@ -151,7 +151,7 @@ fi echo "/* END AIO MAINMENU CSS */" >> /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Modified MainMenuCtrl.css ===" -if [ ${TESTBKUPS} = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css "${MYDIR}/bakups/test/MainMenuCtrl_after.css" fi diff --git a/app/files/tweaks/20_statusbar_tweaks-i.txt b/app/files/tweaks/20_statusbar_tweaks-i.txt index 416bcda..b87cc16 100644 --- a/app/files/tweaks/20_statusbar_tweaks-i.txt +++ b/app/files/tweaks/20_statusbar_tweaks-i.txt @@ -17,7 +17,7 @@ then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org log_message "=== Backup of /jci/gui/common/controls/Sbn/css/SbnCtrl.css ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then if [ ! -e "${MYDIR}/bakups/StatusBarCtrl.css.org" ] then diff --git a/app/files/tweaks/20_uistyle-i.txt b/app/files/tweaks/20_uistyle-i.txt index 16b94df..a8695cf 100644 --- a/app/files/tweaks/20_uistyle-i.txt +++ b/app/files/tweaks/20_uistyle-i.txt @@ -14,7 +14,7 @@ then cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org log_message "=== Backup NowPlaying4Ctrl.css ===" fi -if [ ${KEEPBKUPS} = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/List2/css/List2Ctrl.css.org "${MYDIR}/bakups/" cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org "${MYDIR}/bakups/" @@ -22,7 +22,7 @@ then aio_info \"List2Ctrl.css.org\", aio_info \"MainMenuCtrl.css.org\", fi -if [ ${TESTBKUPS} = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/List2/css/List2Ctrl.css "${MYDIR}/bakups/test/List2Ctrl_before.css" cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css "${MYDIR}/bakups/test/NowPlaying4Ctrl_before.css" @@ -76,7 +76,14 @@ body { } /* END AIO UISTYLE CSS */ EOT -if [ ${TESTBKUPS} = "1" ] +# Remove ivalid CSS +if grep -Fq "o-animation" /jci/gui/common/controls/List2/css/List2Ctrl.css && grep -Fq "webkit-animation" /jci/gui/common/controls/List2/css/List2Ctrl.css +then + sed -i '/-o-animation/d' /jci/gui/common/controls/List2/css/List2Ctrl.css + sed -i '/-webkit-animation/d' /jci/gui/common/controls/List2/css/List2Ctrl.css + log_message "=== Removed Obsolete CSS ===" +fi +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/gui/common/controls/List2/css/List2Ctrl.css "${MYDIR}/bakups/test/List2Ctrl_after.css" cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css "${MYDIR}/bakups/test/NowPlaying4Ctrl_after.css" diff --git a/app/files/tweaks/22_fuel-i.txt b/app/files/tweaks/22_fuel-i.txt index 41e0162..6e57372 100644 --- a/app/files/tweaks/22_fuel-i.txt +++ b/app/files/tweaks/22_fuel-i.txt @@ -2,7 +2,7 @@ show_message "INSTALL FUEL CONSUMPTION TWEAK ..." log_message "=======************ INSTALL FUEL CONSUMPTION TWEAK ... **********=======" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css "${MYDIR}/bakups/test/FuelConsumptionCtrl-before.css" cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js "${MYDIR}/bakups/test/FuelConsumptionCtrl-before.js" @@ -30,9 +30,9 @@ cp -a "${MYDIR}/config/FuelConsumptionTweak/jci/gui/apps/ecoenergy/controls/Fuel log_message "=== Copied images/FuelConsBG.png ===" cp -a "${MYDIR}/config/FuelConsumptionTweak/jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js" /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/ log_message "=== Copied js/FuelConsumptionCtrl.js ===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then - cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css" ${MYDIR}/bakups/test/FuelConsumptionCtrl-after.css" + cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css "${MYDIR}/bakups/test/FuelConsumptionCtrl-after.css" cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js "${MYDIR}/bakups/test/FuelConsumptionCtrl-after.js" fi diff --git a/app/files/tweaks/22_fuel-u.txt b/app/files/tweaks/22_fuel-u.txt index 74a92ad..4266d61 100644 --- a/app/files/tweaks/22_fuel-u.txt +++ b/app/files/tweaks/22_fuel-u.txt @@ -2,7 +2,7 @@ show_message "REMOVE FUEL CONSUMPTION TWEAK ..." log_message "===========****** UNINSTALL FUEL CONSUMPTION TWEAK ... *******==========" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css "${MYDIR}/bakups/test/FuelConsumptionCtrl-before.css" cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js "${MYDIR}/bakups/test/FuelConsumptionCtrl-before.js" @@ -35,7 +35,7 @@ else # log_message "=== No backup found, copied original FuelConsumptionCtrl.js from SD card ===" log_message "=== No backup found, FuelConsumptionCtrl.js was not changed ===" fi -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css "${MYDIR}/bakups/test/FuelConsumptionCtrl-after.css" cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js "${MYDIR}/bakups/test/FuelConsumptionCtrl-after.js" diff --git a/app/files/tweaks/22_fuelMPG-i.txt b/app/files/tweaks/22_fuelMPG-i.txt index 36bee14..b6a2054 100644 --- a/app/files/tweaks/22_fuelMPG-i.txt +++ b/app/files/tweaks/22_fuelMPG-i.txt @@ -2,7 +2,7 @@ show_message "INSTALL FUEL CONSUMPTION TWEAK ..." log_message "=======************ INSTALL FUEL CONSUMPTION TWEAK ... **********=======" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css "${MYDIR}/bakups/test/FuelConsumptionCtrl-before.css" cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js "${MYDIR}/bakups/test/FuelConsumptionCtrl-before.js" @@ -30,9 +30,9 @@ cp -a "${MYDIR}/config/FuelConsumptionTweak/jci/gui/apps/ecoenergy/controls/Fuel log_message "=== Copied images/FuelConsBG.png ===" cp -a "${MYDIR}/config/FuelConsumptionTweak/jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.MPG.js" /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js log_message "=== Copied js/FuelConsumptionCtrl.js ===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then - cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css" ${MYDIR}/bakups/test/FuelConsumptionCtrl-after.css" + cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css "${MYDIR}/bakups/test/FuelConsumptionCtrl-after.css" cp /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js "${MYDIR}/bakups/test/FuelConsumptionCtrl-after.js" fi diff --git a/app/files/tweaks/24_castscreen-i.txt b/app/files/tweaks/24_castscreen-i.txt index cc4f9f5..2206b1e 100644 --- a/app/files/tweaks/24_castscreen-i.txt +++ b/app/files/tweaks/24_castscreen-i.txt @@ -13,7 +13,7 @@ chmod 755 /jci/scripts/cs_receiver_arm chmod 755 /jci/scripts/mirroring.sh chmod 755 /jci/scripts/adb chmod 755 /usr/bin/adb -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh ${MYDIR}/bakups/test/stage_wifi_castscreen-before.sh fi @@ -32,7 +32,7 @@ then sed -i '/Castscreen receiver/ i\ ' /jci/scripts/stage_wifi.sh sed -i '/Castscreen receiver/ a\watch /jci/scripts/mirroring.sh &' /jci/scripts/stage_wifi.sh log_message "=== Castscreen Receiver added to stage_wifi.sh ===" - if [ "${TESTBKUPS}" = "1" ] + if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh ${MYDIR}/bakups/test/stage_wifi_castscreen-after.sh fi diff --git a/app/files/tweaks/24_castscreen-u.txt b/app/files/tweaks/24_castscreen-u.txt index b4fd5ee..2fe3940 100644 --- a/app/files/tweaks/24_castscreen-u.txt +++ b/app/files/tweaks/24_castscreen-u.txt @@ -2,7 +2,7 @@ show_message "REMOVE CASTSCREEN-RECEIVER ..." log_message "=====************* UNINSTALL CASTSCREEN-RECEIVER ... ************=====" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_castscreen-before.sh" fi @@ -16,7 +16,7 @@ rm -f /jci/scripts/stage_wifi.sh.org2 sed -i '/Castscreen/d' /jci/scripts/stage_wifi.sh sed -i '/mirroring.sh/d' /jci/scripts/stage_wifi.sh -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_castscreen-after.sh" fi diff --git a/app/files/tweaks/25_androidauto-i.txt b/app/files/tweaks/25_androidauto-i.txt index 6031f9c..cb9ac86 100644 --- a/app/files/tweaks/25_androidauto-i.txt +++ b/app/files/tweaks/25_androidauto-i.txt @@ -1,9 +1,8 @@ # Install Android Auto Headunit App -show_message "INSTALL ANDROID AUTO HEADUNIT APP ..." -log_message "====************ INSTALL ANDROID AUTO HEADUNIT APP v1.08...*********====" -log_message "=== Begin Installation Of Android Auto Headunit App ===" +show_message "INSTALL ANDROID AUTO HEADUNIT APP v${AA_VER} ..." +log_message "====************ INSTALL ANDROID AUTO HEADUNIT APP v${AA_VER}...*********====" TESTBKUPS=1 -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_androidauto-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_androidauto-1_before.json" @@ -106,7 +105,7 @@ if [ $SOUND_X -eq 1 ]; then fi fi -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp -a /jci/scripts/stage_wifi.sh ${MYDIR}/bakups/test/stage_wifi_androidauto-after.sh cp -a /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_after-AA.json" diff --git a/app/files/tweaks/25_androidauto-u.txt b/app/files/tweaks/25_androidauto-u.txt index 41c9f10..47fd44e 100644 --- a/app/files/tweaks/25_androidauto-u.txt +++ b/app/files/tweaks/25_androidauto-u.txt @@ -6,7 +6,7 @@ log_message "========******** UNINSTALL ANDROID AUTO HEADUNIT APP ... *******== killall -q -9 headunit pkill websocketd -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_androidauto-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_androidauto-1._before.json" @@ -25,17 +25,18 @@ rm -f /tmp/mnt/data/input_filter #rm -f /usr/lib/gstreamer-0.10/libgsth264parse.so log_message "=== Removed files for Android Auto Headunit App ===" -if [ -e /usr/lib/gstreamer-0.10/libgstalsa.so.org ] -then +#if [ -e /usr/lib/gstreamer-0.10/libgstalsa.so.org ] +#then #rm -f /usr/lib/gstreamer-0.10/libgstalsa.so - log_message "=== Original libgstalsa.so is available as backup ===" + #log_message "=== Original libgstalsa.so is available as backup ===" #mv /usr/lib/gstreamer-0.10/libgstalsa.so.org /usr/lib/gstreamer-0.10/libgstalsa.so - /bin/fsync /usr/lib/gstreamer-0.10/libgstalsa.so -else - log_message "=== No backup found. Copying fallback of libgstalsa.so ===" + #/bin/fsync /usr/lib/gstreamer-0.10/libgstalsa.so +#else + #log_message "=== No backup found. Copying fallback of libgstalsa.so ===" # cp -a ${MYDIR}/config_org/androidauto/usr/lib/gstreamer-0.10/libgstalsa.so /usr/lib/gstreamer-0.10/ # chmod 755 /usr/lib/gstreamer-0.10/libgstalsa.so -fi +#fi + # delete Android Auto entry from /jci/opera/opera_dir/userjs/additionalApps.json ADDIT_APPS=0 if grep -Fq "_aiotweaks" /jci/opera/opera_dir/userjs/additionalApps.json @@ -55,7 +56,7 @@ then log_message "=== Found mzd meter entry in additionalApps.json ===" ADDIT_APPS=1 fi -if [ ${ADDIT_APPS} = "0" ] +if [ $ADDIT_APPS -eq 0 ] then log_message "=== No more entrys in additionalApps.json, files will be deleted ===" rm -f /jci/opera/opera_dir/userjs/additionalApps.* @@ -86,7 +87,7 @@ fi rm -f /jci/scripts/stage_wifi.sh.org3 rm -f /jci/scripts/stage_wifi.sh.AA -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_androidauto-after.sh" cp /jci/sm/sm.conf "${MYDIR}/bakups/test/sm_androidauto-after.conf" diff --git a/app/files/tweaks/26_usbaudiomod-i.txt b/app/files/tweaks/26_usbaudiomod-i.txt index ee74c40..3dcf188 100644 --- a/app/files/tweaks/26_usbaudiomod-i.txt +++ b/app/files/tweaks/26_usbaudiomod-i.txt @@ -2,7 +2,7 @@ show_message "INSTALL USB AUDIO MOD ..." log_message "======************* INSTALL USB AUDIO MOD ... ***********=======" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js "${MYDIR}/bakups/test/" cp /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css "${MYDIR}/bakups/test/" @@ -24,13 +24,13 @@ then cp -a /jci/gui/apps/usbaudio/js/usbaudioApp.js /jci/gui/apps/usbaudio/js/usbaudioApp.js.org log_message "=== Backup of /jci/gui/apps/usbaudio/js/usbaudioApp.js ===" fi -if [ "${KEEPBKUPS}" = "1" ] +if [ $KEEPBKUPS -eq 1 ] then cp /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org "${MYDIR}/bakups/" cp /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org "${MYDIR}/bakups/" cp /jci/gui/apps/usbaudio/js/usbaudioApp.js.org "${MYDIR}/bakups/" fi -if [ ${COMPAT_GROUP} -lt 5 ] +if [ $COMPAT_GROUP -lt 5 ] then cp -a ${MYDIR}/config/USBAudioMod/NowPlaying4Ctrl.js /jci/gui/common/controls/NowPlaying4/js/ log_message "=== Copied NowPlaying4Ctrl.js ===" diff --git a/app/files/tweaks/26_usbaudiomod-u.txt b/app/files/tweaks/26_usbaudiomod-u.txt index dde4f28..4ed200f 100644 --- a/app/files/tweaks/26_usbaudiomod-u.txt +++ b/app/files/tweaks/26_usbaudiomod-u.txt @@ -21,9 +21,9 @@ rm -f /jci/gui/common/images/icons/IcnUmpUSBMenu_Ds.png rm -f /jci/gui/common/images/icons/IcnUmpUSBMenu_En.png log_message "=== Deleted USB icon images ===" -if [ "${KEEPBKUPS}" = "1" ] +if [ $KEEPBKUPS -eq 1 ] then - cp /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js. "${MYDIR}/bakups/" + cp /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js "${MYDIR}/bakups/" cp /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css "${MYDIR}/bakups/" cp /jci/gui/apps/usbaudio/js/usbaudioApp.js "${MYDIR}/bakups/" log_message "=== Copied Backup Files to ${MYDIR}/bakups/ ===" diff --git a/app/files/tweaks/27_aioapp-i.txt b/app/files/tweaks/27_aioapp-i.txt index c4bb935..a506a58 100644 --- a/app/files/tweaks/27_aioapp-i.txt +++ b/app/files/tweaks/27_aioapp-i.txt @@ -1,11 +1,11 @@ ####################################################################### # AIO Tweaks Headunit App -# V0.4a By: Trezdog44 +# By: Trezdog44 ####################################################################### -show_message "INSTALLING AIO TWEAKS APP v0.5..." +show_message "INSTALLING AIO TWEAKS APP v${AIO_TWKS_VER}..." log_message "=========************ INSTALL AIO TWEAKS APP *************===========" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_aio-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_aio_before.json" @@ -22,8 +22,9 @@ rm -f /jci/opera/opera_dir/userjs/aio-startup.js # Copies the additionalApps.js if [ $CASDK_MODE -eq 0 ] then - cp -a ${MYDIR}/config/jci/opera/opera_dir/userjs/additionalApps.js /jci/opera/opera_dir/userjs/ && CASDK_MODE=1 - chmod 755 /jci/opera/opera_dir/userjs/additionalApps.js + cp -a ${MYDIR}/config/jci/opera/opera_dir/userjs/additionalApps.js /jci/opera/opera_dir/userjs/ && CASDK_MODE=1 + chmod 755 /jci/opera/opera_dir/userjs/additionalApps.js + chown 1018:3015 /jci/opera/opera_dir/userjs/additionalApps.js log_message "=== Copied additionalApps.js ===" fi @@ -43,7 +44,7 @@ add_app_json "_aiotweaks" "AIO Tweaks" "AIO-startup.js" if ! grep -q "AIO-startup.js" /jci/opera/opera_dir/userjs/additionalApps.json then sed -i 's/"label": "AIO Tweaks" \}/"label": "AIO Tweaks", "preload": "AIO-startup.js" \}/g' /jci/opera/opera_dir/userjs/additionalApps.json - log_message "=== Added AIO-startup.js to AIO Tweaks json entry ===" + log_message "=== Added AIO-startup.js to AIO Tweaks json entry ===" fi # Copies the content of the addon-common folder @@ -78,6 +79,7 @@ chmod 755 -R /tmp/mnt/data_persist/dev/system_restore/ chmod 755 /jci/scripts/jci-fw.sh chmod 755 /jci/scripts/jci-wifiap.sh log_message "=== Copied Files For AIO Tweak App ===" +sed -i "s/var aioTweaksVer = 0;/var aioTweaksVer = ${AIO_TWKS_VER};/g" /jci/gui/apps/_aiotweaks/js/mzd.js log_message "======********** END INSTALLATION OF AIO TWEAKS APP **************=======" log_message " " diff --git a/app/files/tweaks/27_aioapp-u.txt b/app/files/tweaks/27_aioapp-u.txt index 221dd42..de7faac 100644 --- a/app/files/tweaks/27_aioapp-u.txt +++ b/app/files/tweaks/27_aioapp-u.txt @@ -4,7 +4,7 @@ log_message "=======************** UNINSTALL AIO TWEAKS APP ... **************= ### kills all WebSocket daemons pkill websocketd -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi-aio_before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps-aio_before.json" @@ -36,7 +36,7 @@ then log_message "=== Found mzd meter entry in additionalApps.json ===" ADDIT_APPS=1 fi -if [ ${ADDIT_APPS} = "0" ] +if [ $ADDIT_APPS -eq 0 ] then log_message "=== No more entrys in additionalApps.json, files will be deleted ===" rm -f /jci/opera/opera_dir/userjs/additionalApps.* @@ -55,7 +55,7 @@ rm -f /jci/opera/opera_dir/userjs/aio-startup.js rm -fr /tmp/mnt/data_persist/dev/system_restore log_message "=== Removed AIO Tweaks App files ===" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi-aio_after.sh" if [ -e /jci/opera/opera_dir/userjs/additionalApps.json ] diff --git a/app/files/tweaks/28_mzdmeter-i.txt b/app/files/tweaks/28_mzdmeter-i.txt index 027751f..1526dcd 100644 --- a/app/files/tweaks/28_mzdmeter-i.txt +++ b/app/files/tweaks/28_mzdmeter-i.txt @@ -4,7 +4,7 @@ show_message "INSTALLING MZD METER ..." log_message "=========*************** INSTALL MZD METER ***************===========" -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_mzd-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_mzd_before.json" @@ -21,6 +21,7 @@ if [ $CASDK_MODE -eq 0 ] then cp -a ${MYDIR}/config/jci/opera/opera_dir/userjs/additionalApps.js /jci/opera/opera_dir/userjs/ && CASDK_MODE=1 chmod 755 /jci/opera/opera_dir/userjs/additionalApps.js + chown 1018:3015 /jci/opera/opera_dir/userjs/additionalApps.js log_message "=== Copied additionalApps.js ===" fi diff --git a/app/files/tweaks/28_mzdmeter-u.txt b/app/files/tweaks/28_mzdmeter-u.txt index f2ed457..206a315 100644 --- a/app/files/tweaks/28_mzdmeter-u.txt +++ b/app/files/tweaks/28_mzdmeter-u.txt @@ -4,7 +4,7 @@ log_message "========**************** UNINSTALL MZD METER ... ****************= ### kills all WebSocket daemons pkill websocketd -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_mzd-before.sh" cp /jci/opera/opera_dir/userjs/additionalApps.json "${MYDIR}/bakups/test/additionalApps_mzd_before.json" @@ -32,7 +32,7 @@ then log_message "=== Found aiotweaksapp entry in additionalApps.json ===" ADDIT_APPS=1 fi -if [ ${ADDIT_APPS} = "0" ] +if [ $ADDIT_APPS -eq 0 ] then log_message "=== No more entrys in additionalApps.json, files will be deleted ===" rm -f /jci/opera/opera_dir/userjs/additionalApps.* @@ -55,7 +55,7 @@ fi rm -fr /jci/gui/apps/_mzdmeter rm -fr /paa -if [ "${TESTBKUPS}" = "1" ] +if [ $TESTBKUPS -eq 1 ] then cp /jci/scripts/stage_wifi.sh "${MYDIR}/bakups/test/stage_wifi_mzd-after.sh" fi diff --git a/app/files/tweaks/casdk/apps/app.background/app.css b/app/files/tweaks/casdk/apps/app.background/app.css index 506da19..ceeaa08 100644 --- a/app/files/tweaks/casdk/apps/app.background/app.css +++ b/app/files/tweaks/casdk/apps/app.background/app.css @@ -21,10 +21,10 @@ height:400px; padding:20px; border:1px solid gray; - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; box-sizing:border-box; background: black; + /* -webkit-box-sizing:border-box; + -moz-box-sizing:border-box;*/ } [app="app.background"] .image-slider-wrapper{ overflow: hidden; diff --git a/app/files/tweaks/casdk/apps/app.devtools/app.js b/app/files/tweaks/casdk/apps/app.devtools/app.js index d3a010e..372d38c 100644 --- a/app/files/tweaks/casdk/apps/app.devtools/app.js +++ b/app/files/tweaks/casdk/apps/app.devtools/app.js @@ -183,7 +183,7 @@ CustomApplicationsHandler.register("app.devtools", new CustomApplication({ }, focused: function() { - + console.log(JSON.stringify(framework._sharedDataAttributes)); }, @@ -305,7 +305,7 @@ CustomApplicationsHandler.register("app.devtools", new CustomApplication({ this.menu.find("span.tab").css("width", tabWidth); // remove last divider - this.menu.find("span.divider:last").remove(); + this.menu.find("span.divider:last-of-type").remove(); }, /** @@ -364,4 +364,4 @@ CustomApplicationsHandler.register("app.devtools", new CustomApplication({ -})); \ No newline at end of file +})); diff --git a/app/files/tweaks/casdk/apps/app.multidash/app.css b/app/files/tweaks/casdk/apps/app.multidash/app.css index 38211ac..a914de9 100644 --- a/app/files/tweaks/casdk/apps/app.multidash/app.css +++ b/app/files/tweaks/casdk/apps/app.multidash/app.css @@ -8,7 +8,7 @@ * [license] */ -@font-face { +/*@font-face { font-family: myriadPro; src: url(fonts/Myriad-Pro_31655.ttf); } @@ -19,7 +19,7 @@ @font-face { font-family: robotoMedium; src: url(fonts/Roboto-Medium.ttf); -} +}*/ [app="app.multidash"] .invisible { @@ -29,10 +29,6 @@ [app="app.multidash"] { position: relative; background-color: #000000; - -webkit-font-feature-settings: "kern" , "liga" , "pnum"; - font-feature-settings: "kern" , "liga" , "pnum"; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; font-family: robotoLight,"Helvetica","Roboto","Arial",sans-serif; } @@ -323,7 +319,6 @@ } [app="app.multidash"] #main-container.theme-black #bottom-con .fuel-icon { opacity: .6; - -webkit-filter: invert(100%); } [app="app.multidash"] #main-container.theme-yellow #bottom-con .fuel-icon { opacity: 1; diff --git a/app/files/tweaks/casdk/apps/app.multidash/app.js b/app/files/tweaks/casdk/apps/app.multidash/app.js index 323ff06..d50e5cd 100644 --- a/app/files/tweaks/casdk/apps/app.multidash/app.js +++ b/app/files/tweaks/casdk/apps/app.multidash/app.js @@ -108,7 +108,7 @@ CustomApplicationsHandler.register("app.multidash", new CustomApplication({ * (statusbarHideHomeButton) hides the home button in the statusbar */ - // statusbarHideHomeButton: false, + statusbarHideHomeButton: false, /** * (hasLeftButton) indicates if the UI left button / return button should be shown diff --git a/app/files/tweaks/casdk/apps/app.terminal/app.css b/app/files/tweaks/casdk/apps/app.terminal/app.css index de087b2..f07998f 100644 --- a/app/files/tweaks/casdk/apps/app.terminal/app.css +++ b/app/files/tweaks/casdk/apps/app.terminal/app.css @@ -1,25 +1,25 @@ /** * Custom Applications SDK for Mazda Connect Infotainment System - * + * * A mini framework that allows to write custom applications for the Mazda Connect Infotainment System * that includes an easy to use abstraction layer to the JCI system. * * Written by Andreas Schwarz (http://github.com/flyandi/mazda-custom-applications-sdk) * Copyright (c) 2016. All rights reserved. - * + * * WARNING: The installation of this application requires modifications to your Mazda Connect system. * If you don't feel comfortable performing these changes, please do not attempt to install this. You might * be ending up with an unusuable system that requires reset by your Dealer. You were warned! * - * This program is free software: you can redistribute it and/or modify it under the terms of the + * This program 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. * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * This program 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 this program. + * + * You should have received a copy of the GNU General Public License along with this program. * If not, see http://www.gnu.org/licenses/ * */ @@ -31,15 +31,15 @@ [app="app.terminal"] .keyboardbutton { - margin:1px 1px; + margin:1px 1px; font-family: 'DejaVu Sans Mono', monospace; font-size:22px; - min-width:50px; - background-color:transparent; - box-shadow: false; - text-decoration: none; + min-width:50px; + background-color:transparent; + box-shadow: none; + text-decoration: none; border:1px solid gray; - border-radius:6px; + border-radius:6px; color: white; } @@ -49,7 +49,7 @@ [app="app.terminal"] .keyboardbutton:active { - background-color:red; + background-color:red; } diff --git a/app/files/tweaks/casdk/apps/app.terminal/app.js b/app/files/tweaks/casdk/apps/app.terminal/app.js index a084fe9..908c082 100644 --- a/app/files/tweaks/casdk/apps/app.terminal/app.js +++ b/app/files/tweaks/casdk/apps/app.terminal/app.js @@ -1,32 +1,32 @@ /** * Custom Applications SDK for Mazda Connect Infotainment System - * + * * A mini framework that allows to write custom applications for the Mazda Connect Infotainment System * that includes an easy to use abstraction layer to the JCI system. * * Written by Andreas Schwarz (http://github.com/flyandi/mazda-custom-applications-sdk) * Copyright (c) 2016. All rights reserved. - * + * * WARNING: The installation of this application requires modifications to your Mazda Connect system. * If you don't feel comfortable performing these changes, please do not attempt to install this. You might * be ending up with an unusuable system that requires reset by your Dealer. You were warned! * - * This program is free software: you can redistribute it and/or modify it under the terms of the + * This program 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. * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * This program 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 this program. + * + * You should have received a copy of the GNU General Public License along with this program. * If not, see http://www.gnu.org/licenses/ * */ /** - * HelloWorld Application + * Terminal App v0.5 * * This is the main file of the application and contains the required information * to run the application on the mini framework. @@ -141,7 +141,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ hasMenuCaret: false, /** - * (hasRightArc) indicates if the standard right car should be displayed + * (hasRightArc) indicates if the standard right arc should be displayed */ hasRightArc: false, @@ -187,7 +187,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ // // Update the screen - // + // update : function () { this.screen.get(0).innerHTML = this.buffer + ">" + this.command; @@ -203,7 +203,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ this.linecount = this.linecount + 1; this.buffer += text + "\n"; - // At 160 lines, go back to 80 then buffer will alway have between 80 to 160 lines + // At 160 lines, go back to 80 then buffer will always have between 80 to 160 lines /* if ( this.linecount > 160) { var lines = buffer.split('\n'); @@ -216,7 +216,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ // // Folder has maybe changed - // + // folderchange : function () { /*var c; @@ -230,7 +230,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ { var command = 'echo "Example command : "' this.ws.send(command); - command = 'echo "opkg list"'; + command = 'echo "df -h"'; this.ws.send(command); }, @@ -239,9 +239,9 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ askiffolderchanged : function () { - var command = 'ls | awk \' BEGIN { ORS = \"\"; print \"'+ this.asklistnumber+'[\"; } { print \"\\\/\\@\"$0\"\\\/\\@\"; } END { print \"]\"; }\' | sed \"s^\\\"^\\\\\\\\\\\"^g;s^\\\/\\@\\\/\\@^\\\", \\\"^g;s^\\\/\\@^\\\"^g\"' + var command = 'ls | awk \' BEGIN { ORS = \"\"; print \"'+ this.asklistnumber+'[\"; } { print \"\\\/\\@\"$0\"\\\/\\@\"; } END { print \"]\"; }\' | sed \"s^\\\"^\\\\\\\\\\\"^g;s^\\\/\\@\\\/\\@^\\\", \\\"^g;s^\\\/\\@^\\\"^g\"' this.ws.send(command); - var command = 'echo ' + this.askpwdnumber + '$(pwd)' + var command = 'echo ' + this.askpwdnumber + '$(pwd)' this.ws.send(command); }, @@ -249,7 +249,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ var c; for(c=0;c" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + + case "m/r": + this.command = "mount -o rw,remount /tmp/mnt/resources"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + case "m/a": + this.command = "mount -o rw,remount /tmp/mnt/sda1"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + case "m/b": + this.command = "mount -o rw,remount /tmp/mnt/sdb1"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + + case "tweaks": + this.command = "/tmp/mnt/sd*/tweaks.sh"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + case "apps": + this.command = "cd /jci/gui/apps"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + + case "r2": + this.command = "opkg remove casdk-multidash"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + + case "i3": + this.command = "opkg install casdk-horloge"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + case "r3": + this.command = "opkg remove casdk-horloge"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + + case "i4": + this.command = "opkg install casdk-speedthai"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + case "r4": + this.command = "opkg remove casdk-speedthai"; + this.AddText(">" + this.command); + this.ws.send(this.command); + this.command = ""; + this.update(); + break; + default: this.AddText(">" + this.command); this.ws.send(this.command); @@ -329,7 +412,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ if ( this.command.length > 0 ) { this.command = this.command.slice(0, -1); this.update(); - } + } break; case "up": @@ -339,7 +422,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ this.commandstackcounter = 0; } this.command = this.commandstack[this.commandstackcounter]; - update(); + update(); } break; @@ -348,7 +431,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ this.commandstackcounter ++; if ( this.commandstackcounter >= this.commandstack.length) { this.commandstackcounter = this.commandstack.length - 1; - } + } this.command = this.commandstack[this.commandstackcounter]; update(); } @@ -356,12 +439,15 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ case "left": + + break; + case "right": break; case "tab": this.asklistfunction (); - + break; default: @@ -378,14 +464,14 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ this.command += char; } this.update(); - } + } }, LowLevelKeyboard : function (c) { this.buttonlist[c].onmousedown=function() { - + if (this.buttonlist[c].hasAttribute('function')) { var f = this.buttonlist[c].getAttribute("function"); switch (f) { @@ -415,11 +501,11 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ this.SetKeyboardButtonValue(); break; default: - + this.HighLevelKeyboard (f); break; } - + } else { this.HighLevelKeyboard (this.buttonlist[c].innerHTML); @@ -437,9 +523,9 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ - /** - * (created) - * + /** + * (created) + * * Executed when the application gets initialized * * Add any content that will be static here @@ -449,7 +535,7 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ this.screen = this.element("pre", false, 'screen' , false,''); - this.keyboard = this.element("div", false, false , false,'' + this.keyboard = this.element("div", false, false , false,'' +'
                    ' +'' +'' @@ -520,20 +606,20 @@ CustomApplicationsHandler.register("app.terminal", new CustomApplication({ +'' +'' +'' - +'
                    ' + +'
    ' ); this.buttonlist=this.keyboard.get(0).getElementsByClassName('keyboardbutton'); // Add listener for mouse var c, c2; - + for(c=0;c 1) { + //is the data a list of objects? + for (var i = 0; i < arguments.length; i++) { + log.debug("aioMagicMsg arguments passed as: ", arguments[i]); + framework.routeMmuiMsg(JSON.parse(arguments[i])); + } + return; + } + + if (Object.prototype.toString.call(data) == '[object Array]') { + //is the data an array? + for (var j = 0; j < data.length; j++) { + framework.routeMmuiMsg(JSON.parse(data[j])); + } + return; + } + //otherwise we have 1 object to send + framework.routeMmuiMsg(JSON.parse(data)); + } + + function AIO_SBN(message, pathToIcon) { + framework.common.startTimedSbn(framework.getCurrentApp(), "MzdAioSbn", "typeE", { + sbnStyle: "Style02", + imagePath1: pathToIcon, + text1: message + }); + } + + function DOMtoJSON(node) { + node = node || this; + var obj = { + nodeType: node.nodeType + }; + if (node.tagName) { + obj.tagName = node.tagName.toLowerCase(); + } else + if (node.nodeName) { + obj.nodeName = node.nodeName; + } + if (node.nodeValue) { + obj.nodeValue = node.nodeValue; + } + var attrs = node.attributes; + if (attrs) { + var length = attrs.length; + var arr = obj.attributes = new Array(length); + for (var i = 0; i < length; i++) { + var attr = attrs[i]; + arr[i] = [attr.nodeName, attr.nodeValue]; + } + } + var childNodes = node.childNodes; + if (childNodes) { + var lengthc = childNodes.length; + var arrc = obj.childNodes = new Array(lengthc); + for (var j = 0; j < lengthc; j++) { + arrc[j] = DOMtoJSON(childNodes[j]); + } + } + return obj; + } + + function JSONtoDOM(obj) { + if (typeof obj == 'string') { + obj = JSON.parse(obj); + } + var node, nodeType = obj.nodeType; + switch (nodeType) { + case 1: //ELEMENT_NODE + node = document.createElement(obj.tagName); + var attributes = obj.attributes || []; + for (var i = 0, len = attributes.length; i < len; i++) { + var attr = attributes[i]; + node.setAttribute(attr[0], attr[1]); + } + break; + case 3: //TEXT_NODE + node = document.createTextNode(obj.nodeValue); + break; + case 8: //COMMENT_NODE + node = document.createComment(obj.nodeValue); + break; + case 9: //DOCUMENT_NODE + node = document.implementation.createDocument(); + break; + case 10: //DOCUMENT_TYPE_NODE + node = document.implementation.createDocumentType(obj.nodeName); + break; + case 11: //DOCUMENT_FRAGMENT_NODE + node = document.createDocumentFragment(); + break; + default: + return node; + } + if (nodeType === 1 || nodeType === 11) { + var childNodes = obj.childNodes || []; + for (i = 0, len = childNodes.length; i < len; i++) { + node.appendChild(JSONtoDOM(childNodes[i])); + } + } + return node; + } +} diff --git a/app/files/tweaks/casdk/resources/aio/mzd-casdk/apps/app.js b/app/files/tweaks/casdk/resources/aio/mzd-casdk/apps/app.js new file mode 100644 index 0000000..198b61e --- /dev/null +++ b/app/files/tweaks/casdk/resources/aio/mzd-casdk/apps/app.js @@ -0,0 +1,36 @@ +/** + * Custom Applications SDK for Mazda Connect Infotainment System + * + * A mini framework that allows to write custom applications for the Mazda Connect Infotainment System + * that includes an easy to use abstraction layer to the JCI system. + * + * Written by Andreas Schwarz (http://github.com/flyandi/mazda-custom-applications-sdk) + * Copyright (c) 2016. All rights reserved. + * + * WARNING: The installation of this application requires modifications to your Mazda Connect system. + * If you don't feel comfortable performing these changes, please do not attempt to install this. You might + * be ending up with an unusuable system that requires reset by your Dealer. You were warned! + * + * This program 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. + * + * This program 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 this program. + * If not, see http://www.gnu.org/licenses/ + * + */ + +/** + * (CustomApplications) + * + * This array registers all applications you want to install and run on your Mazda Connect Infotainment System + * + * The name corresponds to to the folder name of the application + */ + +var CustomApplications = [ +]; diff --git a/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/runtime.js b/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/runtime.js index 775b3b7..b6ff3cc 100644 --- a/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/runtime.js +++ b/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/runtime.js @@ -1,37 +1,7 @@ -/** +/* * * Custom Application SDK for Mazda Connect Infotainment System - * - * A micro framework that allows to write custom applications for the Mazda Connect Infotainment System - * that includes an easy to use abstraction layer to the JCI system. - * - * Written by Andreas Schwarz (http://github.com/flyandi/mazda-custom-applications-sdk) - * Copyright (c) 2016. All rights reserved. - * - * WARNING: The installation of this application requires modifications to your Mazda Connect system. - * If you don't feel comfortable performing these changes, please do not attempt to install this. You might - * be ending up with an unusuable system that requires reset by your Dealer. You were warned! * - * This program 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. - * - * This program 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 this program. - * If not, see http://www.gnu.org/licenses/ - * - */ - -/** - * This is the main mini framework file that contains everything to run the custom application environment - */ - -var CUSTOM_APPLICATION_VERSION='0.0.1';/* - * Custom Applications SDK for Mazda Connect Infotainment System - * - * A mini framework that allows to write custom applications for the Mazda Connect Infotainment System + * A micro framework that allows to write custom applications for the Mazda Connect Infotainment System * that includes an easy to use abstraction layer to the JCI system. * * Written by Andreas Schwarz (http://github.com/flyandi/mazda-custom-applications-sdk) @@ -54,6 +24,13 @@ var CUSTOM_APPLICATION_VERSION='0.0.1';/* * */ +/** + * This is the main mini framework file that contains everything to run the custom application environment + */ + +var CUSTOM_APPLICATION_VERSION='0.0.4'; + + var CustomApplication = (function(){ /** @@ -1051,18 +1028,19 @@ var CustomApplication = (function(){ /** * Enables WiFi and tries to obtain an internet connection - * + * * @param function callback - A callback that is executed once the internet connection is established * @return void */ requireInternet: function() { - /* from netmgmtApp.ks - SelectNetworkManagement - - var params = { payload : { offOn : offOn } }; - framework.sendEventToMmui(this.uiaId, 'SetWifiConnection', params); - */ + + /* from netmgmtApp.js + * SelectNetworkManagement + */ + var offOn = 0; + var params = { payload : { offOn : offOn } }; + framework.sendEventToMmui(this.uiaId, 'SetWifiConnection', params); } }; @@ -1134,8 +1112,8 @@ var VehicleData = { */ general: { - brand: {id:'VDTSBrand', friendlyName: 'Vehicle Brand', input: 'list', values: VehicleDataBrand}, - type: {id:'VDTSVehicle_Type', friendlyName: 'Vehicle Type', input: 'list', values: VehicleDataVehicleType}, + brand: {id:'VDSBrand', friendlyName: 'Vehicle Brand', input: 'list', values: VehicleDataBrand}, + type: {id:'VDSVehicle_Type', friendlyName: 'Vehicle Type', input: 'list', values: VehicleDataVehicleType}, region: {id: 'SYSRegion', friendlyName: 'Region', input: 'list', values: VehicleDataRegion}, }, @@ -1146,12 +1124,12 @@ var VehicleData = { vehicle: { speed: {id: 'VDTVehicleSpeed', friendlyName: 'Vehicle Speed', input: 'range', min: 0, max: 240, factor: 0.01}, rpm: {id: 'VDTEngineSpeed', friendlyName: 'Engine RPM', input: 'range', min: 0, max: 8000, factor: 2.25}, - odometer: {id: 'VDTCOdocount', friendlyName: 'Odocount'}, - batterylevel: {id: 'VDTCBattery_StateOfCharge', friendlyName: 'Battery Level'}, + odometer: {id: 'VDCOdocount', friendlyName: 'Odocount'}, + batterylevel: {id: 'VDCBattery_StateOfCharge', friendlyName: 'Battery Level'}, //Peter-dk added - // latAcc: {id: 'VDTCLateralAcceleration', friendlyName: 'Lateral acceleration', input: 'range', min: 3000, max: 5000, factor: 1}, - // lonAcc: {id: 'VDTCLongitudinalAccelerometer', friendlyName: 'Longitudinal acceleration', input: 'range', min: 3000, max: 5000, factor: 1}, + // latAcc: {id: 'VDCLateralAcceleration', friendlyName: 'Lateral acceleration', input: 'range', min: 3000, max: 5000, factor: 1}, + // lonAcc: {id: 'VDCLongitudinalAccelerometer', friendlyName: 'Longitudinal acceleration', input: 'range', min: 3000, max: 5000, factor: 1}, startTime: {id: 'PIDGlobalRealTime_Start', friendlyName: 'Start time'}, curTime: {id: 'PIDCrntReadTm', friendlyName: 'Current time'}, drv1dstnc: {id: 'VDTPID_Drv1Dstnc_curr', friendlyName: 'Drive Distance'}, @@ -1179,9 +1157,9 @@ var VehicleData = { */ temperature: { - outside: {id: 'VDTCOut-CarTemperature', friendlyName: 'Outside Temperature'}, + outside: {id: 'VDTOut-CarTemperature', friendlyName: 'Outside Temperature'}, intake: {id: 'VDTDR_IntakeAirTemp', friendlyName: 'Intake Air Temperature'}, - coolant: {id: 'PIDEngineCoolantTemperature', friendlyName: 'Engine Coolant Temperature'}, + coolant: {id: 'VDTEngClnt_Te_Actl', friendlyName: 'Engine Coolant Temperature'}, }, @@ -1219,11 +1197,11 @@ var CustomApplicationDataProcessors = { }, /*Peter-dk added - LateralAcceleration: function(value) { + LateralAcceleration: function(value) { return Math.round(value * 0.1); }, - LongitudinalAccelerometer: function(value) { + LongitudinalAccelerometer: function(value) { return Math.round(value * 0.1); }, */ @@ -1298,8 +1276,8 @@ var CustomApplicationDataHandler = { // Vehicle Data Transfer data {table: 'vdtpid', prefix: 'PID', enabled: true, file: true, update: 60}, - // Vehicle Data Transfer data - {table: 'vdtcurrent', prefix: 'VDTC', enabled: true, file: true, update: 60}, // Peter-dk, "always: true" does not work + // Vehicle Data Transfer data Trez - changed VDTC to VDC to make it unique from VDT prefix above + {table: 'vdtcurrent', prefix: 'VDC', enabled: true, file: true, update: 60}, // Peter-dk, "always: true" does not work /** @@ -1318,7 +1296,7 @@ var CustomApplicationDataHandler = { */ // Vehicle Setting - {table: 'vdtsettings', prefix: 'VDTS', enabled: true, file: true, update: false}, + {table: 'vdtsettings', prefix: 'VDS', enabled: true, file: true, update: false}, // Ignition Diagnostic Monitor (disabled) {table: 'idm', prefix: 'IDM', enabled: true, file: true, update: false}, diff --git a/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/vendor/jquery.js b/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/vendor/jquery.js index 4855adc..15fa6fa 100644 --- a/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/vendor/jquery.js +++ b/app/files/tweaks/casdk/resources/aio/mzd-casdk/runtime/vendor/jquery.js @@ -3729,7 +3729,7 @@ jQuery( function() { // Check if natively block-level elements act like inline-block // elements when setting their display to 'inline' and giving // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;"; support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; if ( val ) { @@ -4281,9 +4281,9 @@ jQuery.fn.extend( { // Support: Firefox<29, Android 2.3 // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + // "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; + "padding:1px;width:1px;"; div.appendChild( document.createElement( "div" ) ).style.width = "5px"; shrinkWrapBlocksVal = div.offsetWidth !== 3; } @@ -6616,7 +6616,8 @@ var documentElement = document.documentElement; // Support: Android 2.3 // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;box-sizing:border-box;" + + //"-webkit-box-sizing:border-box;"+ + "box-sizing:border-box;" + "position:relative;display:block;" + "margin:auto;border:1px;padding:1px;" + "top:1%;width:50%"; @@ -6649,7 +6650,7 @@ var documentElement = document.documentElement; // Support: Android 2.3 // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + //"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; contents.style.marginRight = contents.style.width = "0"; div.style.width = "1px"; diff --git a/app/files/tweaks/casdk/resources/dev/bin/adb b/app/files/tweaks/casdk/resources/dev/bin/adb new file mode 100644 index 0000000..c27a43f Binary files /dev/null and b/app/files/tweaks/casdk/resources/dev/bin/adb differ diff --git a/app/files/tweaks/casdk/resources/dev/bin/add_app_json.js b/app/files/tweaks/casdk/resources/dev/bin/add_app_json.js new file mode 100644 index 0000000..d3fd6e0 --- /dev/null +++ b/app/files/tweaks/casdk/resources/dev/bin/add_app_json.js @@ -0,0 +1,30 @@ +#!/usr/bin/env node +var fs = require('fs'); +var args=process.argv.slice(2); +var file=args[0]; +var key=args[1]; +var value=args[2]; +var preload=args[3]; + +var NewApp = { "name": key, "label": value }; + +var count=0; +fs.readFile(file, 'utf8', function (err, data) { + if (err) throw err; + var obj=JSON.parse(data); + if (preload) data.preload = preload; + for(var i=0; i0) { + fs.writeFile (file, JSON.stringify(obj, null, '\t').replace(/\n\t\t/g,' ').replace(/\n\t}/g,' }'), function(err) { + if (err) throw err; + console.log('Removed '+key+' From '+file); + }); + }else{ + console.log(key+' Does Not Exist In '+file); + } +}); diff --git a/app/files/tweaks/config/videoplayer/jci/gui/addon-common/websocketd b/app/files/tweaks/casdk/resources/dev/bin/websocketd similarity index 100% rename from app/files/tweaks/config/videoplayer/jci/gui/addon-common/websocketd rename to app/files/tweaks/casdk/resources/dev/bin/websocketd diff --git a/app/files/tweaks/casdk/scripts/vdt1s.sh b/app/files/tweaks/casdk/scripts/vdt1s.sh index 7e951c0..d85b140 100644 --- a/app/files/tweaks/casdk/scripts/vdt1s.sh +++ b/app/files/tweaks/casdk/scripts/vdt1s.sh @@ -1,5 +1,5 @@ #!/bin/sh -# +# # Custom Applications SDK for Mazda Connect Infotainment System # # A mini framework that allows to write custom applications for the Mazda Connect Infotainment System @@ -42,4 +42,7 @@ smdb-read -v -n vdm_vdt_current_data -e VehicleSpeed >> ${OUTPUT}-vdt smdb-read -v -n vdm_vdt_current_data -e EngineSpeed >> ${OUTPUT}-vdt smdb-read -v -n vdm_vdt_current_data -e FuelGaugePosition >> ${OUTPUT}-vdt smdb-read -v -n vdm_vdt_current_data -e DR_IntakeAirTemp >> ${OUTPUT}-vdt +smdb-read -v -n vdm_vdt_current_data -e Out-CarTemperature >> ${OUTPUT}-vdt +smdb-read -v -n vdm_vdt_current_data -e EngClnt_Te_Actl >> ${OUTPUT}-vdt +smdb-read -v -n vdm_vdt_current_data -e TransmChangeLeverPosition >> ${OUTPUT}-vdt smdb-read -v -n vdm -e Drv1AvlFuelE >> ${OUTPUT}-vdt diff --git a/app/files/tweaks/config/BackgroundRotator/jci/gui/common/css/common.css b/app/files/tweaks/config/BackgroundRotator/jci/gui/common/css/common.css index b71a735..68f01f6 100644 --- a/app/files/tweaks/config/BackgroundRotator/jci/gui/common/css/common.css +++ b/app/files/tweaks/config/BackgroundRotator/jci/gui/common/css/common.css @@ -1,4 +1,5 @@ /* CSS Document */ + body { /* default text color */ color: white; @@ -11,7 +12,6 @@ body { /* default text alignment */ text-align: left; } - .CommonBgImg { background-image: url("../images/background.png"); background-repeat: no-repeat; @@ -21,10 +21,9 @@ body { left: 0px; top: 0px; z-index: 0; - background-position:0; - animation: slide 600s steps(10,end) infinite; + background-position: 0; + animation: slide 600s steps(10, end) infinite; } - .CommonRightChrome { background: url("../controls/LeftBtn/images/ChromeArcRight.png") no-repeat; position: absolute; @@ -34,7 +33,6 @@ body { left: 766px; z-index: 8; } - .CommonNonTransparentDiv { background-color: #FFF; opacity: 0.01; @@ -45,13 +43,12 @@ body { left: 0px; z-index: 0; } - /*Keyframe classes for fade animations (W3 Standard) */ + @keyframes opacZeroToFull { 0% { opacity: 0; } - 100% { opacity: 1; } @@ -60,22 +57,22 @@ body { 0% { opacity: 1; } - 100% { opacity: 0; } } /*CSS Animation classes for fade animations*/ + .FadeOut { animation: opacFullToZero 0.3s ease-in-out both; } - .FadeIn { animation: opacZeroToFull 0.3s ease-in-out both; } /*Background switch animation for 10 backgrounds 8000px*/ + @keyframes slide { to { - background-position:-8000px; + background-position: -8000px; } -} \ No newline at end of file +} diff --git a/app/files/tweaks/config/MainMenuTweaks/DefaultSmallFocused.css b/app/files/tweaks/config/MainMenuTweaks/DefaultSmallFocused.css index 167afb3..1ce5e13 100644 --- a/app/files/tweaks/config/MainMenuTweaks/DefaultSmallFocused.css +++ b/app/files/tweaks/config/MainMenuTweaks/DefaultSmallFocused.css @@ -1,9 +1,8 @@ .MainMenuCtrlSetHighlight { - top: 95px; - left: 600px; + top: 95px; + left: 600px; } - .MainMenuCtrlAppHighlight { - top: 95px; - left: -165px; + top: 95px; + left: -165px; } diff --git a/app/files/tweaks/config/MainMenuTweaks/FlatLine.css b/app/files/tweaks/config/MainMenuTweaks/FlatLine.css index 6aa9056..db003e7 100644 --- a/app/files/tweaks/config/MainMenuTweaks/FlatLine.css +++ b/app/files/tweaks/config/MainMenuTweaks/FlatLine.css @@ -1,10 +1,11 @@ - /* Alternate Layout Flatline */ - .MainMenuCtrlComDiv { +/* Alternate Layout Flatline */ + +.MainMenuCtrlComDiv { top: 280px; } .MainMenuCtrlEntDiv { top: 280px; - left:160px; + left: 160px; } .MainMenuCtrlNavDiv { top: 280px; @@ -40,12 +41,12 @@ top: 80px; } .MainMenuCtrlIconName { - top:5px; + top: 5px; } .MainMenuCtrl { overflow: visible; } -.MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus{ +.MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus { -o-transform: scale(1.4, 1.4) translate(0px, -50px); transform: scale(1.4, 1.4) translate(0px, -50px); } @@ -68,4 +69,4 @@ .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { -o-transform: scale(1.2, 1.2) translate(0px, -60px); transform: scale(1.2, 1.2) translate(0px, -60px); -} \ No newline at end of file +} diff --git a/app/files/tweaks/config/MainMenuTweaks/FlatLineSmallFocused.css b/app/files/tweaks/config/MainMenuTweaks/FlatLineSmallFocused.css index 7de3a7f..7358585 100644 --- a/app/files/tweaks/config/MainMenuTweaks/FlatLineSmallFocused.css +++ b/app/files/tweaks/config/MainMenuTweaks/FlatLineSmallFocused.css @@ -1,7 +1,3 @@ -.MainMenuCtrlSetHighlight, -.MainMenuCtrlComHighlight, -.MainMenuCtrlAppHighlight, -.MainMenuCtrlNavHighlight, -.MainMenuCtrlEntHighlight { - top: 120px; -} \ No newline at end of file +.MainMenuCtrlSetHighlight, .MainMenuCtrlComHighlight, .MainMenuCtrlAppHighlight, .MainMenuCtrlNavHighlight, .MainMenuCtrlEntHighlight { + top: 120px; +} diff --git a/app/files/tweaks/config/MainMenuTweaks/Inverted.css b/app/files/tweaks/config/MainMenuTweaks/Inverted.css index 03f6388..2c1bdc3 100644 --- a/app/files/tweaks/config/MainMenuTweaks/Inverted.css +++ b/app/files/tweaks/config/MainMenuTweaks/Inverted.css @@ -1,67 +1,68 @@ - /* Alternate Layout Inverted */ - .MainMenuCtrlComDiv { - top: 240px; - } - .MainMenuCtrlEntDiv { - top: 160px; - } - .MainMenuCtrlNavDiv { - top: 160px; - } - .MainMenuCtrlAppDiv { - left: 0; - top: 10px; - } - .MainMenuCtrlSetDiv { - top: 10px; - left: 675px; - } - .MainMenuCtrlAppHighlight { - top: -110px; - left: -100px; - } - .MainMenuCtrlComHighlight { - top: 70px; - } - .MainMenuCtrlNavHighlight { - top: 0px; - left: 380px; - } - .MainMenuCtrlEntHighlight { - top: 0px; - left: 45px; - } - .MainMenuCtrlSetHighlight { - left: 520px; - top: -110px; - } - .MainMenuCtrlIconName { - top:5px; - } - .MainMenuCtrl { - overflow: visible; - } - .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus{ - -o-transform: scale(1.2, 1.2) translate(-20px, 20px); - transform: scale(1.2, 1.2) translate(-20px, 20px); - } - .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(20px, 20px); - transform: scale(1.2, 1.2) translate(20px, 20px); - } - .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(0px, 25px); - transform: scale(1.2, 1.2) translate(0px, 25px); - } - .MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(50px, -25px); - transform: scale(1.2, 1.2) translate(50px, -25px); - } - .MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(-50px, -25px); - transform: scale(1.2, 1.2) translate(-50px, -25px); - } - .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(0px, -10px); - transform: scale(1.2, 1.2) translate(0px, -10px); - } +/* Alternate Layout Inverted */ + +.MainMenuCtrlComDiv { + top: 240px; +} +.MainMenuCtrlEntDiv { + top: 160px; +} +.MainMenuCtrlNavDiv { + top: 160px; +} +.MainMenuCtrlAppDiv { + left: 0; + top: 10px; +} +.MainMenuCtrlSetDiv { + top: 10px; + left: 675px; +} +.MainMenuCtrlAppHighlight { + top: -110px; + left: -100px; +} +.MainMenuCtrlComHighlight { + top: 70px; +} +.MainMenuCtrlNavHighlight { + top: 0px; + left: 380px; +} +.MainMenuCtrlEntHighlight { + top: 0px; + left: 45px; +} +.MainMenuCtrlSetHighlight { + left: 520px; + top: -110px; +} +.MainMenuCtrlIconName { + top: 5px; +} +.MainMenuCtrl { + overflow: visible; +} +.MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(-20px, 20px); + transform: scale(1.2, 1.2) translate(-20px, 20px); +} +.MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(20px, 20px); + transform: scale(1.2, 1.2) translate(20px, 20px); +} +.MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(0px, 25px); + transform: scale(1.2, 1.2) translate(0px, 25px); +} +.MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(50px, -25px); + transform: scale(1.2, 1.2) translate(50px, -25px); +} +.MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(-50px, -25px); + transform: scale(1.2, 1.2) translate(-50px, -25px); +} +.MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(0px, -10px); + transform: scale(1.2, 1.2) translate(0px, -10px); +} diff --git a/app/files/tweaks/config/MainMenuTweaks/InvertedSmallFocused.css b/app/files/tweaks/config/MainMenuTweaks/InvertedSmallFocused.css index aea8ccc..afd6707 100644 --- a/app/files/tweaks/config/MainMenuTweaks/InvertedSmallFocused.css +++ b/app/files/tweaks/config/MainMenuTweaks/InvertedSmallFocused.css @@ -1,17 +1,17 @@ .MainMenuCtrlComHighlight { - top: 85px; + top: 85px; } .MainMenuCtrlSetHighlight { - left: 550px; - top: -160px; + left: 550px; + top: -160px; } .MainMenuCtrlAppHighlight { - left: -125px; - top: -160px; + left: -125px; + top: -160px; } .MainMenuCtrlNavHighlight { - left:435px; + left: 435px; } .MainMenuCtrlEntHighlight { - left: -5px; -} \ No newline at end of file + left: -5px; +} diff --git a/app/files/tweaks/config/MainMenuTweaks/StarA.css b/app/files/tweaks/config/MainMenuTweaks/StarA.css index 69655cf..e7ffbeb 100644 --- a/app/files/tweaks/config/MainMenuTweaks/StarA.css +++ b/app/files/tweaks/config/MainMenuTweaks/StarA.css @@ -1,60 +1,60 @@ - /* Alternate Layout Star Points */ - .MainMenuCtrlComDiv { - top: 30px; - } - .MainMenuCtrlEntDiv { - top: 100px; - } - .MainMenuCtrlNavDiv { - top: 100px; - } - .MainMenuCtrlAppDiv { - left: 250px; - top: 220px; - } - .MainMenuCtrlSetDiv { - left: 430px; - top: 220px; - } - .MainMenuCtrlAppHighlight { - left: 120px; - top: 40px; - } - .MainMenuCtrlComHighlight { - top: -100px; - } - .MainMenuCtrlNavHighlight { - top: -70px; - left: 380px; - } - .MainMenuCtrlEntHighlight { - top: -70px; - left: 45px; - } - .MainMenuCtrlSetHighlight { - left: 300px; - top: 40px; - } - .MainMenuCtrlIconName { - top:345px; - } - .MainMenuCtrl { - overflow: visible; - } - .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus, - .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(0px, -20px); - transform: scale(1.2, 1.2) translate(0px, -20px); - } - .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(0px, 25px); - transform: scale(1.2, 1.2) translate(0px, 25px); - } - .MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(50px, -25px); - transform: scale(1.2, 1.2) translate(50px, -25px); - } - .MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(-50px, -25px); - transform: scale(1.2, 1.2) translate(-50px, -25px); - } \ No newline at end of file +/* Alternate Layout Star Points */ + +.MainMenuCtrlComDiv { + top: 30px; +} +.MainMenuCtrlEntDiv { + top: 100px; +} +.MainMenuCtrlNavDiv { + top: 100px; +} +.MainMenuCtrlAppDiv { + left: 250px; + top: 220px; +} +.MainMenuCtrlSetDiv { + left: 430px; + top: 220px; +} +.MainMenuCtrlAppHighlight { + left: 120px; + top: 40px; +} +.MainMenuCtrlComHighlight { + top: -100px; +} +.MainMenuCtrlNavHighlight { + top: -70px; + left: 380px; +} +.MainMenuCtrlEntHighlight { + top: -70px; + left: 45px; +} +.MainMenuCtrlSetHighlight { + left: 300px; + top: 40px; +} +.MainMenuCtrlIconName { + top: 345px; +} +.MainMenuCtrl { + overflow: visible; +} +.MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus, .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(0px, -20px); + transform: scale(1.2, 1.2) translate(0px, -20px); +} +.MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(0px, 25px); + transform: scale(1.2, 1.2) translate(0px, 25px); +} +.MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(50px, -25px); + transform: scale(1.2, 1.2) translate(50px, -25px); +} +.MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(-50px, -25px); + transform: scale(1.2, 1.2) translate(-50px, -25px); +} diff --git a/app/files/tweaks/config/MainMenuTweaks/StarASmallFocused.css b/app/files/tweaks/config/MainMenuTweaks/StarASmallFocused.css index 3bdded6..32fe3f9 100644 --- a/app/files/tweaks/config/MainMenuTweaks/StarASmallFocused.css +++ b/app/files/tweaks/config/MainMenuTweaks/StarASmallFocused.css @@ -1,17 +1,17 @@ .MainMenuCtrlComHighlight { - top: -125px; + top: -125px; } .MainMenuCtrlSetHighlight { - left: 305px; + left: 305px; } .MainMenuCtrlAppHighlight { - left: 125px; + left: 125px; } .MainMenuCtrlEntHighlight { - left: 0; - top: -50px; + left: 0; + top: -50px; } .MainMenuCtrlNavHighlight { - left:440px; - top: -50px; + left: 440px; + top: -50px; } diff --git a/app/files/tweaks/config/MainMenuTweaks/StarB.css b/app/files/tweaks/config/MainMenuTweaks/StarB.css index e1a92e8..a0da334 100644 --- a/app/files/tweaks/config/MainMenuTweaks/StarB.css +++ b/app/files/tweaks/config/MainMenuTweaks/StarB.css @@ -1,63 +1,64 @@ - /* Alternate Layout Large Star */ - .MainMenuCtrlComDiv { - top: 30px; - } - .MainMenuCtrlEntDiv { - top: 100px; - } - .MainMenuCtrlNavDiv { - top: 100px; - } - .MainMenuCtrlAppDiv { - left: 250px; - top: 280px; - } - .MainMenuCtrlSetDiv { - left: 430px; - top: 280px; - } - .MainMenuCtrlAppHighlight { - left: 80px; - top: 105px; - } - .MainMenuCtrlComHighlight { - top: -122px; - } - .MainMenuCtrlNavHighlight { - top: -80px; - left: 470px; - } - .MainMenuCtrlEntHighlight { - top: -80px; - left: -30px; - } - .MainMenuCtrlSetHighlight { - left: 350px; - top: 105px; - } - .MainMenuCtrlIconName { - top: 200px; - } - .MainMenuCtrl { - overflow: visible; - } - .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(-40px, -15px); - transform: scale(1.2, 1.2) translate(-40px, -15px); - } - .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(40px, -15px); - transform: scale(1.2, 1.2) translate(40px, -15px); - } - .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(0px, -25px); - transform: scale(1.2, 1.2) translate(0px, -25px); - } - .MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(-25px, -50px); - transform: scale(1.2, 1.2) translate(-25px, -50px); - } - .MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { - -o-transform: scale(1.2, 1.2) translate(25px, -50px); - transform: scale(1.2, 1.2) translate(25px, -50px); - } \ No newline at end of file +/* Alternate Layout Large Star */ + +.MainMenuCtrlComDiv { + top: 30px; +} +.MainMenuCtrlEntDiv { + top: 100px; +} +.MainMenuCtrlNavDiv { + top: 100px; +} +.MainMenuCtrlAppDiv { + left: 250px; + top: 280px; +} +.MainMenuCtrlSetDiv { + left: 430px; + top: 280px; +} +.MainMenuCtrlAppHighlight { + left: 80px; + top: 105px; +} +.MainMenuCtrlComHighlight { + top: -122px; +} +.MainMenuCtrlNavHighlight { + top: -80px; + left: 470px; +} +.MainMenuCtrlEntHighlight { + top: -80px; + left: -30px; +} +.MainMenuCtrlSetHighlight { + left: 350px; + top: 105px; +} +.MainMenuCtrlIconName { + top: 200px; +} +.MainMenuCtrl { + overflow: visible; +} +.MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(-40px, -15px); + transform: scale(1.2, 1.2) translate(-40px, -15px); +} +.MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(40px, -15px); + transform: scale(1.2, 1.2) translate(40px, -15px); +} +.MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(0px, -25px); + transform: scale(1.2, 1.2) translate(0px, -25px); +} +.MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(-25px, -50px); + transform: scale(1.2, 1.2) translate(-25px, -50px); +} +.MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.2, 1.2) translate(25px, -50px); + transform: scale(1.2, 1.2) translate(25px, -50px); +} diff --git a/app/files/tweaks/config/MainMenuTweaks/StarBSmallFocused.css b/app/files/tweaks/config/MainMenuTweaks/StarBSmallFocused.css index aa65256..398c2a4 100644 --- a/app/files/tweaks/config/MainMenuTweaks/StarBSmallFocused.css +++ b/app/files/tweaks/config/MainMenuTweaks/StarBSmallFocused.css @@ -1,14 +1,14 @@ .MainMenuCtrlAppHighlight { - left:125px; + left: 125px; } .MainMenuCtrlSetHighlight { - left: 305px; + left: 305px; } .MainMenuCtrlEntHighlight { - top: -60px; - left: -5px; + top: -60px; + left: -5px; } .MainMenuCtrlNavHighlight { - top: -60px; - left: 440px; + top: -60px; + left: 440px; } diff --git a/app/files/tweaks/config/USBAudioMod/NowPlaying4Ctrl.js b/app/files/tweaks/config/USBAudioMod/NowPlaying4Ctrl.js index 43f5481..90d8e3f 100644 --- a/app/files/tweaks/config/USBAudioMod/NowPlaying4Ctrl.js +++ b/app/files/tweaks/config/USBAudioMod/NowPlaying4Ctrl.js @@ -23,887 +23,856 @@ log.addSrcFile("NowPlaying4Ctrl.js", "common"); //log.addSrcFile("NowPlaying4Ctrl.js", "NowPlaying4Ctrl"); // log.setLogLevel("NowPlaying4Ctrl", "debug"); -function NowPlaying4Ctrl(uiaId, parentDiv, controlId, properties) -{ - this.uiaId = uiaId; // (String) UIA ID of the App instantiating this control - this.controlId = controlId; // (String) ID of this control as assigned by GUIFramework - this.parentDiv = parentDiv; // (HTMLElement) Reference to the parent div of this control - this.divElt = null; // (HTMLElement) Reference to the top level div element of this control - - this.umpCtrl = null; - - // Constants - this._constants = { - MAX_HD_SUBSTATION_COUNT : 8, - MAX_RATING_METER_STAR_COUNT : 5, - MAX_RATING_IMG_HEIGHT : 29, - MAX_RATING_IMG_WIDTH : 146 - }; - - this._styles = { - "Style0":{"_ctrlTitle" : "NowPlaying4CtrlHidden", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlHidden", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImage" : "NowPlaying4CtrlHidden", - "_artworkImageBorder" : "NowPlaying4CtrlHidden", - "_audioTitleFrame" : "NowPlaying4CtrlHidden", - "_audioTitleIconFrame" : "NowPlaying4CtrlHidden", - "_audioTitle" : "NowPlaying4CtrlHidden", - "_detailLine1Frame" : "NowPlaying4CtrlHidden", - "_detailLine1IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine1" : "NowPlaying4CtrlHidden", - "_detailLine2Frame" : "NowPlaying4CtrlHidden", - "_detailLine2IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine2" : "NowPlaying4CtrlHidden", - "_detailLine3Frame" : "NowPlaying4CtrlHidden", - "_detailLine3IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine3" : "NowPlaying4CtrlHidden", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - "Style1":{"_ctrlTitle" : "NowPlaying4CtrlTitle", - "_trackDisplay" : "NowPlaying4CtrlTrackDisplay", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitle", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1Frame", - "_detailLine1IconFrame" : "NowPlaying4CtrlDetailLine1IconFrame", - "_detailLine1" : "NowPlaying4CtrlDetailLine1", - "_detailLine2Frame" : "NowPlaying4CtrlDetailLine2Frame", - "_detailLine2IconFrame" : "NowPlaying4CtrlDetailLine2IconFrame", - "_detailLine2" : "NowPlaying4CtrlDetailLine2", - "_detailLine3Frame" : "NowPlaying4CtrlDetailLine3Frame", - "_detailLine3IconFrame" : "NowPlaying4CtrlDetailLine3IconFrame", - "_detailLine3" : "NowPlaying4CtrlDetailLine3", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - "Style2":{"_ctrlTitle" : "NowPlaying4CtrlTitleFull", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHdDisplayIconImage", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitle", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1Frame", - "_detailLine1IconFrame" : "NowPlaying4CtrlDetailLine1IconFrame", - "_detailLine1" : "NowPlaying4CtrlDetailLine1", - "_detailLine2Frame" : "NowPlaying4CtrlDetailLine2Frame", - "_detailLine2IconFrame" : "NowPlaying4CtrlDetailLine2IconFrame", - "_detailLine2" : "NowPlaying4CtrlDetailLine2", - "_detailLine3Frame" : "NowPlaying4CtrlDetailLine3Frame", - "_detailLine3IconFrame" : "NowPlaying4CtrlDetailLine3IconFrame", - "_detailLine3" : "NowPlaying4CtrlDetailLine3", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - "Style3":{"_ctrlTitle" : "NowPlaying4CtrlTitleFull", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlHidden", - "_audioTitle" : "NowPlaying4CtrlAudioTitleStyle3", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1BlockFrame", - "_detailLine1IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine1" : "NowPlaying4CtrlDetailLine1Block", - "_detailLine2Frame" : "NowPlaying4CtrlHidden", - "_detailLine2IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine2" : "NowPlaying4CtrlHidden", - "_detailLine3Frame" : "NowPlaying4CtrlHidden", - "_detailLine3IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine3" : "NowPlaying4CtrlHidden", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - "Style4":{"_ctrlTitle" : "NowPlaying4CtrlTitle", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHdDisplayIconImage", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitle", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1Frame", - "_detailLine1IconFrame" : "NowPlaying4CtrlDetailLine1IconFrame", - "_detailLine1" : "NowPlaying4CtrlDetailLine1", - "_detailLine2Frame" : "NowPlaying4CtrlDetailLine2Frame", - "_detailLine2IconFrame" : "NowPlaying4CtrlDetailLine2IconFrame", - "_detailLine2" : "NowPlaying4CtrlDetailLine2", - "_detailLine3Frame" : "NowPlaying4CtrlDetailLine3Frame", - "_detailLine3IconFrame" : "NowPlaying4CtrlDetailLine3IconFrame", - "_detailLine3" : "NowPlaying4CtrlDetailLine3", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - "Style5":{"_ctrlTitle" : "NowPlaying4CtrlTitle", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitle", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1Frame", - "_detailLine1IconFrame" : "NowPlaying4CtrlDetailLine1IconFrame", - "_detailLine1" : "NowPlaying4CtrlDetailLine1", - "_detailLine2Frame" : "NowPlaying4CtrlDetailLine2Frame", - "_detailLine2IconFrame" : "NowPlaying4CtrlDetailLine2IconFrame", - "_detailLine2" : "NowPlaying4CtrlDetailLine2", - "_detailLine3Frame" : "NowPlaying4CtrlHidden", - "_detailLine3IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine3" : "NowPlaying4CtrlHidden", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlPhoneNumber", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlDistanceDirection", - "_ratingMeterFrame" : "NowPlaying4CtrlRatingMeterFrame", - "_rmStarNum1" : "NowPlaying4CtrlRmStarHollow", - "_rmStarNum2" : "NowPlaying4CtrlRmStarHollow", - "_rmStarNum3" : "NowPlaying4CtrlRmStarHollow", - "_rmStarNum4" : "NowPlaying4CtrlRmStarHollow", - "_rmStarNum5" : "NowPlaying4CtrlRmStarHollow", - }, - "Style6":{"_ctrlTitle" : "NowPlaying4CtrlTitle", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleBlockFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitleBlock", - "_detailLine1Frame" : "NowPlaying4CtrlHidden", - "_detailLine1IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine1" : "NowPlaying4CtrlHidden", - "_detailLine2Frame" : "NowPlaying4CtrlHidden", - "_detailLine2IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine2" : "NowPlaying4CtrlHidden", - "_detailLine3Frame" : "NowPlaying4CtrlHidden", - "_detailLine3IconFrame" : "NowPlaying4CtrlHidden", - "_detailLine3" : "NowPlaying4CtrlHidden", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - "Style7":{"_ctrlTitle" : "NowPlaying4CtrlTitle", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlLoadingImageFrame", - "_artworkImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImage" : "NowPlaying4CtrlHidden", - "_artworkImageBorder" : "NowPlaying4CtrlHidden", - "_ctrlSubtitle" : "NowPlaying4CtrlSubtitle", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleBlockFrame", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitle", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1Frame", - "_detailLine1IconFrame" : "NowPlaying4CtrlDetailLine1IconFrame", - "_detailLine1" : "NowPlaying4CtrlDetailLine1", - "_detailLine2Frame" : "NowPlaying4CtrlDetailLine2Frame", - "_detailLine2IconFrame" : "NowPlaying4CtrlDetailLine2IconFrame", - "_detailLine2" : "NowPlaying4CtrlDetailLine2", - "_detailLine3Frame" : "NowPlaying4CtrlDetailLine3Frame", - "_detailLine3IconFrame" : "NowPlaying4CtrlDetailLine3IconFrame", - "_detailLine3" : "NowPlaying4CtrlDetailLine3", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - },// ---MZDMOD--- - "Style8":{"_ctrlTitle" : "NowPlaying4CtrlTitleFull", - "_trackDisplay" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconFrameLeft" : "NowPlaying4CtrlTitleIconFrameLeft", - //"_ctrlTitleIconImageLeft" : "NowPlaying4CtrlTitleIconImageLeft", - "_ctrlTitleIconFrame" : "NowPlaying4CtrlHidden", - "_ctrlTitleIconImage" : "NowPlaying4CtrlTitleIconImage", - "_hdDisplayFrame" : "NowPlaying4CtrlHidden", - "_hdDisplayIconImage" : "NowPlaying4CtrlHidden", - "_hdSubstNum1" : "NowPlaying4CtrlHidden", - "_hdSubstNum2" : "NowPlaying4CtrlHidden", - "_hdSubstNum3" : "NowPlaying4CtrlHidden", - "_hdSubstNum4" : "NowPlaying4CtrlHidden", - "_hdSubstNum5" : "NowPlaying4CtrlHidden", - "_hdSubstNum6" : "NowPlaying4CtrlHidden", - "_hdSubstNum7" : "NowPlaying4CtrlHidden", - "_hdSubstNum8" : "NowPlaying4CtrlHidden", - "_loadingImageFrame" : "NowPlaying4CtrlHidden", - "_artworkImageFrame" : "NowPlaying4CtrlArtworkImageDiv", - "_artworkImage" : "NowPlaying4CtrlArtworkImage", - "_artworkImageBorder" : "NowPlaying4CtrlArtworkImageBorder", - "_audioTitleFrame" : "NowPlaying4CtrlAudioTitleFrame", - "_audioTitleIconFrame" : "NowPlaying4CtrlAudioTitleIconFrame", - "_audioTitle" : "NowPlaying4CtrlAudioTitle", - "_detailLine1Frame" : "NowPlaying4CtrlDetailLine1Frame", - "_detailLine1IconFrame" : "NowPlaying4CtrlDetailLine1IconFrame", - "_detailLine1" : "NowPlaying4CtrlDetailLine1", - "_detailLine2Frame" : "NowPlaying4CtrlDetailLine2Frame", - "_detailLine2IconFrame" : "NowPlaying4CtrlDetailLine2IconFrame", - "_detailLine2" : "NowPlaying4CtrlDetailLine2", - "_detailLine3Frame" : "NowPlaying4CtrlDetailLine3Frame", - "_detailLine3IconFrame" : "NowPlaying4CtrlDetailLine3IconFrame", - "_detailLine3" : "NowPlaying4CtrlDetailLine3", - "_unformattedTextFrame" : "NowPlaying4CtrlHidden", - "_unformattedText" : "NowPlaying4CtrlHidden", - "_phoneNumberIconFrame" : "NowPlaying4CtrlHidden", - "_phoneNumber" : "NowPlaying4CtrlHidden", - "_distanceDirectionIconFrame" : "NowPlaying4CtrlHidden", - "_distanceDirection" : "NowPlaying4CtrlHidden", - "_ratingMeterFrame" : "NowPlaying4CtrlHidden", - "_rmStarNum1" : "NowPlaying4CtrlHidden", - "_rmStarNum2" : "NowPlaying4CtrlHidden", - "_rmStarNum3" : "NowPlaying4CtrlHidden", - "_rmStarNum4" : "NowPlaying4CtrlHidden", - "_rmStarNum5" : "NowPlaying4CtrlHidden", - }, - }; - - //@formatter:off - this.properties = { - "ctrlStyle" : "", - "ctrlTitleObj" : null, - "ctrlSubtitleObj" : null, - "hdConfigObj" : null, - "trackCount" : 0, - "currentTrackNum" : 0, - "loadingIcon" : false, - "audioTitleObj" : null, - "detailLine1Obj" : null, - "detailLine2Obj" : null, - "detailLine3Obj" : null, - "unformattedTextObj" : null, - "artworkImagePath" : "", - "noArtworkImagePath" : "", - "phoneNumber" : "", - "distanceDirection" : "", - "rating" : 0, - "umpConfig" : null, - }; - //@formatter:on - - for (var i in properties) - { - this.properties[i] = properties[i]; - } - - this._createStructure(); +function NowPlaying4Ctrl(uiaId, parentDiv, controlId, properties) { + this.uiaId = uiaId; // (String) UIA ID of the App instantiating this control + this.controlId = controlId; // (String) ID of this control as assigned by GUIFramework + this.parentDiv = parentDiv; // (HTMLElement) Reference to the parent div of this control + this.divElt = null; // (HTMLElement) Reference to the top level div element of this control + + this.umpCtrl = null; + + // Constants + this._constants = { + MAX_HD_SUBSTATION_COUNT: 8, + MAX_RATING_METER_STAR_COUNT: 5, + MAX_RATING_IMG_HEIGHT: 29, + MAX_RATING_IMG_WIDTH: 146 + }; + + this._styles = { + "Style0": { + "_ctrlTitle": "NowPlaying4CtrlHidden", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlHidden", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlHidden", + "_artworkImage": "NowPlaying4CtrlHidden", + "_artworkImageBorder": "NowPlaying4CtrlHidden", + "_audioTitleFrame": "NowPlaying4CtrlHidden", + "_audioTitleIconFrame": "NowPlaying4CtrlHidden", + "_audioTitle": "NowPlaying4CtrlHidden", + "_detailLine1Frame": "NowPlaying4CtrlHidden", + "_detailLine1IconFrame": "NowPlaying4CtrlHidden", + "_detailLine1": "NowPlaying4CtrlHidden", + "_detailLine2Frame": "NowPlaying4CtrlHidden", + "_detailLine2IconFrame": "NowPlaying4CtrlHidden", + "_detailLine2": "NowPlaying4CtrlHidden", + "_detailLine3Frame": "NowPlaying4CtrlHidden", + "_detailLine3IconFrame": "NowPlaying4CtrlHidden", + "_detailLine3": "NowPlaying4CtrlHidden", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + "Style1": { + "_ctrlTitle": "NowPlaying4CtrlTitle", + "_trackDisplay": "NowPlaying4CtrlTrackDisplay", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitle", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1Frame", + "_detailLine1IconFrame": "NowPlaying4CtrlDetailLine1IconFrame", + "_detailLine1": "NowPlaying4CtrlDetailLine1", + "_detailLine2Frame": "NowPlaying4CtrlDetailLine2Frame", + "_detailLine2IconFrame": "NowPlaying4CtrlDetailLine2IconFrame", + "_detailLine2": "NowPlaying4CtrlDetailLine2", + "_detailLine3Frame": "NowPlaying4CtrlDetailLine3Frame", + "_detailLine3IconFrame": "NowPlaying4CtrlDetailLine3IconFrame", + "_detailLine3": "NowPlaying4CtrlDetailLine3", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + "Style2": { + "_ctrlTitle": "NowPlaying4CtrlTitleFull", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHdDisplayIconImage", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitle", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1Frame", + "_detailLine1IconFrame": "NowPlaying4CtrlDetailLine1IconFrame", + "_detailLine1": "NowPlaying4CtrlDetailLine1", + "_detailLine2Frame": "NowPlaying4CtrlDetailLine2Frame", + "_detailLine2IconFrame": "NowPlaying4CtrlDetailLine2IconFrame", + "_detailLine2": "NowPlaying4CtrlDetailLine2", + "_detailLine3Frame": "NowPlaying4CtrlDetailLine3Frame", + "_detailLine3IconFrame": "NowPlaying4CtrlDetailLine3IconFrame", + "_detailLine3": "NowPlaying4CtrlDetailLine3", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + "Style3": { + "_ctrlTitle": "NowPlaying4CtrlTitleFull", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlHidden", + "_audioTitle": "NowPlaying4CtrlAudioTitleStyle3", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1BlockFrame", + "_detailLine1IconFrame": "NowPlaying4CtrlHidden", + "_detailLine1": "NowPlaying4CtrlDetailLine1Block", + "_detailLine2Frame": "NowPlaying4CtrlHidden", + "_detailLine2IconFrame": "NowPlaying4CtrlHidden", + "_detailLine2": "NowPlaying4CtrlHidden", + "_detailLine3Frame": "NowPlaying4CtrlHidden", + "_detailLine3IconFrame": "NowPlaying4CtrlHidden", + "_detailLine3": "NowPlaying4CtrlHidden", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + "Style4": { + "_ctrlTitle": "NowPlaying4CtrlTitle", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHdDisplayIconImage", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitle", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1Frame", + "_detailLine1IconFrame": "NowPlaying4CtrlDetailLine1IconFrame", + "_detailLine1": "NowPlaying4CtrlDetailLine1", + "_detailLine2Frame": "NowPlaying4CtrlDetailLine2Frame", + "_detailLine2IconFrame": "NowPlaying4CtrlDetailLine2IconFrame", + "_detailLine2": "NowPlaying4CtrlDetailLine2", + "_detailLine3Frame": "NowPlaying4CtrlDetailLine3Frame", + "_detailLine3IconFrame": "NowPlaying4CtrlDetailLine3IconFrame", + "_detailLine3": "NowPlaying4CtrlDetailLine3", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + "Style5": { + "_ctrlTitle": "NowPlaying4CtrlTitle", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitle", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1Frame", + "_detailLine1IconFrame": "NowPlaying4CtrlDetailLine1IconFrame", + "_detailLine1": "NowPlaying4CtrlDetailLine1", + "_detailLine2Frame": "NowPlaying4CtrlDetailLine2Frame", + "_detailLine2IconFrame": "NowPlaying4CtrlDetailLine2IconFrame", + "_detailLine2": "NowPlaying4CtrlDetailLine2", + "_detailLine3Frame": "NowPlaying4CtrlHidden", + "_detailLine3IconFrame": "NowPlaying4CtrlHidden", + "_detailLine3": "NowPlaying4CtrlHidden", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlPhoneNumber", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlDistanceDirection", + "_ratingMeterFrame": "NowPlaying4CtrlRatingMeterFrame", + "_rmStarNum1": "NowPlaying4CtrlRmStarHollow", + "_rmStarNum2": "NowPlaying4CtrlRmStarHollow", + "_rmStarNum3": "NowPlaying4CtrlRmStarHollow", + "_rmStarNum4": "NowPlaying4CtrlRmStarHollow", + "_rmStarNum5": "NowPlaying4CtrlRmStarHollow", + }, + "Style6": { + "_ctrlTitle": "NowPlaying4CtrlTitle", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleBlockFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitleBlock", + "_detailLine1Frame": "NowPlaying4CtrlHidden", + "_detailLine1IconFrame": "NowPlaying4CtrlHidden", + "_detailLine1": "NowPlaying4CtrlHidden", + "_detailLine2Frame": "NowPlaying4CtrlHidden", + "_detailLine2IconFrame": "NowPlaying4CtrlHidden", + "_detailLine2": "NowPlaying4CtrlHidden", + "_detailLine3Frame": "NowPlaying4CtrlHidden", + "_detailLine3IconFrame": "NowPlaying4CtrlHidden", + "_detailLine3": "NowPlaying4CtrlHidden", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + "Style7": { + "_ctrlTitle": "NowPlaying4CtrlTitle", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlLoadingImageFrame", + "_artworkImageFrame": "NowPlaying4CtrlHidden", + "_artworkImage": "NowPlaying4CtrlHidden", + "_artworkImageBorder": "NowPlaying4CtrlHidden", + "_ctrlSubtitle": "NowPlaying4CtrlSubtitle", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleBlockFrame", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitle", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1Frame", + "_detailLine1IconFrame": "NowPlaying4CtrlDetailLine1IconFrame", + "_detailLine1": "NowPlaying4CtrlDetailLine1", + "_detailLine2Frame": "NowPlaying4CtrlDetailLine2Frame", + "_detailLine2IconFrame": "NowPlaying4CtrlDetailLine2IconFrame", + "_detailLine2": "NowPlaying4CtrlDetailLine2", + "_detailLine3Frame": "NowPlaying4CtrlDetailLine3Frame", + "_detailLine3IconFrame": "NowPlaying4CtrlDetailLine3IconFrame", + "_detailLine3": "NowPlaying4CtrlDetailLine3", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, // ---MZDMOD--- + "Style8": { + "_ctrlTitle": "NowPlaying4CtrlTitleFull", + "_trackDisplay": "NowPlaying4CtrlHidden", + "_ctrlTitleIconFrameLeft": "NowPlaying4CtrlTitleIconFrameLeft", + //"_ctrlTitleIconImageLeft" : "NowPlaying4CtrlTitleIconImageLeft", + "_ctrlTitleIconFrame": "NowPlaying4CtrlHidden", + "_ctrlTitleIconImage": "NowPlaying4CtrlTitleIconImage", + "_hdDisplayFrame": "NowPlaying4CtrlHidden", + "_hdDisplayIconImage": "NowPlaying4CtrlHidden", + "_hdSubstNum1": "NowPlaying4CtrlHidden", + "_hdSubstNum2": "NowPlaying4CtrlHidden", + "_hdSubstNum3": "NowPlaying4CtrlHidden", + "_hdSubstNum4": "NowPlaying4CtrlHidden", + "_hdSubstNum5": "NowPlaying4CtrlHidden", + "_hdSubstNum6": "NowPlaying4CtrlHidden", + "_hdSubstNum7": "NowPlaying4CtrlHidden", + "_hdSubstNum8": "NowPlaying4CtrlHidden", + "_loadingImageFrame": "NowPlaying4CtrlHidden", + "_artworkImageFrame": "NowPlaying4CtrlArtworkImageDiv", + "_artworkImage": "NowPlaying4CtrlArtworkImage", + "_artworkImageBorder": "NowPlaying4CtrlArtworkImageBorder", + "_audioTitleFrame": "NowPlaying4CtrlAudioTitleFrame", + "_audioTitleIconFrame": "NowPlaying4CtrlAudioTitleIconFrame", + "_audioTitle": "NowPlaying4CtrlAudioTitle", + "_detailLine1Frame": "NowPlaying4CtrlDetailLine1Frame", + "_detailLine1IconFrame": "NowPlaying4CtrlDetailLine1IconFrame", + "_detailLine1": "NowPlaying4CtrlDetailLine1", + "_detailLine2Frame": "NowPlaying4CtrlDetailLine2Frame", + "_detailLine2IconFrame": "NowPlaying4CtrlDetailLine2IconFrame", + "_detailLine2": "NowPlaying4CtrlDetailLine2", + "_detailLine3Frame": "NowPlaying4CtrlDetailLine3Frame", + "_detailLine3IconFrame": "NowPlaying4CtrlDetailLine3IconFrame", + "_detailLine3": "NowPlaying4CtrlDetailLine3", + "_unformattedTextFrame": "NowPlaying4CtrlHidden", + "_unformattedText": "NowPlaying4CtrlHidden", + "_phoneNumberIconFrame": "NowPlaying4CtrlHidden", + "_phoneNumber": "NowPlaying4CtrlHidden", + "_distanceDirectionIconFrame": "NowPlaying4CtrlHidden", + "_distanceDirection": "NowPlaying4CtrlHidden", + "_ratingMeterFrame": "NowPlaying4CtrlHidden", + "_rmStarNum1": "NowPlaying4CtrlHidden", + "_rmStarNum2": "NowPlaying4CtrlHidden", + "_rmStarNum3": "NowPlaying4CtrlHidden", + "_rmStarNum4": "NowPlaying4CtrlHidden", + "_rmStarNum5": "NowPlaying4CtrlHidden", + }, + }; + + //@formatter:off + this.properties = { + "ctrlStyle": "", + "ctrlTitleObj": null, + "ctrlSubtitleObj": null, + "hdConfigObj": null, + "trackCount": 0, + "currentTrackNum": 0, + "loadingIcon": false, + "audioTitleObj": null, + "detailLine1Obj": null, + "detailLine2Obj": null, + "detailLine3Obj": null, + "unformattedTextObj": null, + "artworkImagePath": "", + "noArtworkImagePath": "", + "phoneNumber": "", + "distanceDirection": "", + "rating": 0, + "umpConfig": null, + }; + //@formatter:on + + for (var i in properties) { + this.properties[i] = properties[i]; + } + + this._createStructure(); } -NowPlaying4Ctrl.prototype._init = function() -{ - // Configure the control, based on the passed-in instantiation properties - this.setNowPlayingConfig(this.properties); +NowPlaying4Ctrl.prototype._init = function () { + // Configure the control, based on the passed-in instantiation properties + this.setNowPlayingConfig(this.properties); }; -NowPlaying4Ctrl.prototype._createStructure = function() -{ - // create the div for control - this.divElt = document.createElement('div'); - this.divElt.className = "NowPlaying4Ctrl"; - this.divElt.id = this.controlId; - - // create div for control title - this._ctrlTitle = document.createElement('div'); - this._ctrlTitle.className = "NowPlaying4CtrlTitle"; - this.divElt.appendChild(this._ctrlTitle); - - // create span for track display - this._trackDisplay = document.createElement("span"); - this._trackDisplay.className = "NowPlaying4CtrlTrackDisplay"; - this.divElt.appendChild(this._trackDisplay); - - // ---MZDMOD--- - // Only for style8 - // create div for control title's icon, left most - // CSS file also updated to set to left of title - this._ctrlTitleIconFrameLeft = document.createElement('div'); - this._ctrlTitleIconFrameLeft.className = "NowPlaying4CtrlTitleIconFrameLeft"; - this.divElt.appendChild(this._ctrlTitleIconFrameLeft); - - // create div for control title's icon - this._ctrlTitleIconFrame = document.createElement('div'); - this._ctrlTitleIconFrame.className = "NowPlaying4CtrlTitleIconFrame"; - this.divElt.appendChild(this._ctrlTitleIconFrame); - - // create image for control title's icon - this._ctrlTitleIconImage = document.createElement('img'); - this._ctrlTitleIconImage.className = "NowPlaying4CtrlTitleIconImage"; - this._ctrlTitleIconFrame.appendChild(this._ctrlTitleIconImage); - - // create div for loading image - this._loadingImageFrame = document.createElement('div'); - this._loadingImageFrame.className = "NowPlaying4CtrlHidden"; - this.divElt.appendChild(this._loadingImageFrame); - - // create div for HD display - this._hdDisplayFrame = document.createElement('div'); - this._hdDisplayFrame.className = "NowPlaying4CtrlHdDisplayFrame"; - this.divElt.appendChild(this._hdDisplayFrame); - - // create image for HD display's icon - this._hdDisplayIconImage = document.createElement('img'); - this._hdDisplayIconImage.className = "NowPlaying4CtrlHdDisplayIconImage"; - this._hdDisplayFrame.appendChild(this._hdDisplayIconImage); - - // create div's for HD substation indicators - for (var hdSubstNum = 1; hdSubstNum <= this._constants.MAX_HD_SUBSTATION_COUNT; hdSubstNum++) - { - this["_hdSubstNum" + hdSubstNum] = document.createElement('div'); - this["_hdSubstNum" + hdSubstNum].style.left = (35 + ((hdSubstNum - 1) * 14)) + "px"; - this["_hdSubstNum" + hdSubstNum].innerText = "" + hdSubstNum; - this._hdDisplayFrame.appendChild(this["_hdSubstNum" + hdSubstNum]); - } - - // create div for artwork image - this._artworkImageFrame = document.createElement('div'); - this._artworkImageFrame.className = "NowPlaying4CtrlArtworkImageDiv"; - this.divElt.appendChild(this._artworkImageFrame); - - // create img for artwork image - this._artworkImage = document.createElement('img'); - this._artworkImage.className = "NowPlaying4CtrlArtworkImage"; - this._artworkImageFrame.appendChild(this._artworkImage); - - // create div for artwork image border - this._artworkImageBorder = document.createElement('div'); - this._artworkImageBorder.className = "NowPlaying4CtrlArtworkImageBorder"; - this._artworkImageFrame.appendChild(this._artworkImageBorder); - - // create div for audio info box - this._infoBox = document.createElement('div'); - this._infoBox.className = "NowPlaying4CtrlInfoBox"; - this.divElt.appendChild(this._infoBox); - - // create div for control subtitle - this._ctrlSubtitle = document.createElement('div'); - this._ctrlSubtitle.className = "NowPlaying4CtrlSubtitle"; - this._infoBox.appendChild(this._ctrlSubtitle); - - // create div for song title line - this._audioTitleFrame = document.createElement('div'); - this._audioTitleFrame.className = "NowPlaying4CtrlAudioTitleFrame"; - this._infoBox.appendChild(this._audioTitleFrame); - - // create div for song title's icon - this._audioTitleIconFrame = document.createElement('div'); - this._audioTitleIconFrame.className = "NowPlaying4CtrlAudioTitleIconFrame"; - this._audioTitleFrame.appendChild(this._audioTitleIconFrame); - - // create span for song title - this._audioTitle = document.createElement("span"); - this._audioTitle.className = "NowPlaying4CtrlAudioTitle"; - this._audioTitleFrame.appendChild(this._audioTitle); - - // create div for artist name line - this._detailLine1Frame = document.createElement('div'); - this._detailLine1Frame.className = "NowPlaying4CtrlDetailLine1Frame"; - this._infoBox.appendChild(this._detailLine1Frame); - - // create div for artist name's icon - this._detailLine1IconFrame = document.createElement('div'); - this._detailLine1IconFrame.className = "NowPlaying4CtrlDetailLine1IconFrame"; - this._detailLine1Frame.appendChild(this._detailLine1IconFrame); - - // create span for artist name - this._detailLine1 = document.createElement('div'); - this._detailLine1.className = "NowPlaying4CtrlDetailLine1"; - this._detailLine1Frame.appendChild(this._detailLine1); - - // create div for album title line - this._detailLine2Frame = document.createElement('div'); - this._detailLine2Frame.className = "NowPlaying4CtrlDetailLine2Frame"; - this._infoBox.appendChild(this._detailLine2Frame); - - // create div for album title's icon - this._detailLine2IconFrame = document.createElement('div'); - this._detailLine2IconFrame.className = "NowPlaying4CtrlDetailLine2IconFrame"; - this._detailLine2Frame.appendChild(this._detailLine2IconFrame); - - // create span for album title - this._detailLine2 = document.createElement('div'); - this._detailLine2.className = "NowPlaying4CtrlDetailLine2"; - this._detailLine2Frame.appendChild(this._detailLine2); - - // create div for "other" line - this._detailLine3Frame = document.createElement('div'); - this._detailLine3Frame.className = "NowPlaying4CtrlDetailLine3Frame"; - this._infoBox.appendChild(this._detailLine3Frame); - - // create div for "other"'s icon - this._detailLine3IconFrame = document.createElement('div'); - this._detailLine3IconFrame.className = "NowPlaying4CtrlDetailLine3IconFrame"; - this._detailLine3Frame.appendChild(this._detailLine3IconFrame); - - // create span for "other" - this._detailLine3 = document.createElement('div'); - this._detailLine3.className = "NowPlaying4CtrlDetailLine3"; - this._detailLine3Frame.appendChild(this._detailLine3); - - //create div for unformatted Text Frame - this._unformattedTextFrame = document.createElement('div'); - this._unformattedTextFrame.className = "NowPlaying4CtrlUnformattedTextFrame"; - this._infoBox.appendChild(this._unformattedTextFrame); - - // create div for unformattedText - this._unformattedText = document.createElement('div'); - this._unformattedText.className = "NowPlaying4CtrlUnformattedText"; - this._unformattedTextFrame.appendChild(this._unformattedText); - - // create div for phone number's icon - this._phoneNumberIconFrame = document.createElement('div'); - this._phoneNumberIconFrame.style.backgroundImage = "url(common/controls/NowPlaying4/images/IcnAhaPhone.png)"; - this._phoneNumberIconFrame.className = "NowPlaying4CtrlPhoneNumberIconFrame"; - this.divElt.appendChild(this._phoneNumberIconFrame); - - // create span for phone number - this._phoneNumber = document.createElement("span"); - this._phoneNumber.className = "NowPlaying4CtrlPhoneNumber"; - this.divElt.appendChild(this._phoneNumber); - - // create div for phone number's icon - this._distanceDirectionIconFrame = document.createElement('div'); - this._distanceDirectionIconFrame.style.backgroundImage = "url(common/controls/NowPlaying4/images/IcnAhaGlobe.png)"; - this._distanceDirectionIconFrame.className = "NowPlaying4CtrlDistanceDirectionIconFrame"; - this.divElt.appendChild(this._distanceDirectionIconFrame); - - // create span for distance & direction - this._distanceDirection = document.createElement("span"); - this._distanceDirection.className = "NowPlaying4CtrlDistanceDirection"; - this.divElt.appendChild(this._distanceDirection); - - // create div for rating meter - this._ratingMeterFrame = document.createElement('div'); - this._ratingMeterFrame.className = "NowPlaying4CtrlRatingMeterFrame"; - this.divElt.appendChild(this._ratingMeterFrame); - - // create alternate div for custom rating meter - this._customRatingDiv = document.createElement('div'); - this._customRatingDiv.className = "NowPlaying4CtrlCustomRatingDiv"; - this.divElt.appendChild(this._customRatingDiv); - - // create div's for rating meter stars - for (var rmStarNum = 1; rmStarNum <= this._constants.MAX_RATING_METER_STAR_COUNT; rmStarNum++) - { - this["_rmStarNum" + rmStarNum] = document.createElement('div'); - this["_rmStarNum" + rmStarNum].style.left = ((rmStarNum - 1) * 29) + "px"; - this._ratingMeterFrame.appendChild(this["_rmStarNum" + rmStarNum]); - } - - // attach control to parent - this.parentDiv.appendChild(this.divElt); - - log.debug("Instantiating umpCtrl..."); - this.umpCtrl = framework.instantiateControl(this.uiaId, - this.divElt, - "Ump3Ctrl", - this.properties.umpConfig); - this._init(); +NowPlaying4Ctrl.prototype._createStructure = function () { + // create the div for control + this.divElt = document.createElement('div'); + this.divElt.className = "NowPlaying4Ctrl"; + this.divElt.id = this.controlId; + + // create div for control title + this._ctrlTitle = document.createElement('div'); + this._ctrlTitle.className = "NowPlaying4CtrlTitle"; + this.divElt.appendChild(this._ctrlTitle); + + // create span for track display + this._trackDisplay = document.createElement("span"); + this._trackDisplay.className = "NowPlaying4CtrlTrackDisplay"; + this.divElt.appendChild(this._trackDisplay); + + // ---MZDMOD--- + // Only for style8 + // create div for control title's icon, left most + // CSS file also updated to set to left of title + this._ctrlTitleIconFrameLeft = document.createElement('div'); + this._ctrlTitleIconFrameLeft.className = "NowPlaying4CtrlTitleIconFrameLeft"; + this.divElt.appendChild(this._ctrlTitleIconFrameLeft); + + // create div for control title's icon + this._ctrlTitleIconFrame = document.createElement('div'); + this._ctrlTitleIconFrame.className = "NowPlaying4CtrlTitleIconFrame"; + this.divElt.appendChild(this._ctrlTitleIconFrame); + + // create image for control title's icon + this._ctrlTitleIconImage = document.createElement('img'); + this._ctrlTitleIconImage.className = "NowPlaying4CtrlTitleIconImage"; + this._ctrlTitleIconFrame.appendChild(this._ctrlTitleIconImage); + + // create div for loading image + this._loadingImageFrame = document.createElement('div'); + this._loadingImageFrame.className = "NowPlaying4CtrlHidden"; + this.divElt.appendChild(this._loadingImageFrame); + + // create div for HD display + this._hdDisplayFrame = document.createElement('div'); + this._hdDisplayFrame.className = "NowPlaying4CtrlHdDisplayFrame"; + this.divElt.appendChild(this._hdDisplayFrame); + + // create image for HD display's icon + this._hdDisplayIconImage = document.createElement('img'); + this._hdDisplayIconImage.className = "NowPlaying4CtrlHdDisplayIconImage"; + this._hdDisplayFrame.appendChild(this._hdDisplayIconImage); + + // create div's for HD substation indicators + for (var hdSubstNum = 1; hdSubstNum <= this._constants.MAX_HD_SUBSTATION_COUNT; hdSubstNum++) { + this["_hdSubstNum" + hdSubstNum] = document.createElement('div'); + this["_hdSubstNum" + hdSubstNum].style.left = (35 + ((hdSubstNum - 1) * 14)) + "px"; + this["_hdSubstNum" + hdSubstNum].innerText = "" + hdSubstNum; + this._hdDisplayFrame.appendChild(this["_hdSubstNum" + hdSubstNum]); + } + + // create div for artwork image + this._artworkImageFrame = document.createElement('div'); + this._artworkImageFrame.className = "NowPlaying4CtrlArtworkImageDiv"; + this.divElt.appendChild(this._artworkImageFrame); + + // create img for artwork image + this._artworkImage = document.createElement('img'); + this._artworkImage.className = "NowPlaying4CtrlArtworkImage"; + this._artworkImageFrame.appendChild(this._artworkImage); + + // create div for artwork image border + this._artworkImageBorder = document.createElement('div'); + this._artworkImageBorder.className = "NowPlaying4CtrlArtworkImageBorder"; + this._artworkImageFrame.appendChild(this._artworkImageBorder); + + // create div for audio info box + this._infoBox = document.createElement('div'); + this._infoBox.className = "NowPlaying4CtrlInfoBox"; + this.divElt.appendChild(this._infoBox); + + // create div for control subtitle + this._ctrlSubtitle = document.createElement('div'); + this._ctrlSubtitle.className = "NowPlaying4CtrlSubtitle"; + this._infoBox.appendChild(this._ctrlSubtitle); + + // create div for song title line + this._audioTitleFrame = document.createElement('div'); + this._audioTitleFrame.className = "NowPlaying4CtrlAudioTitleFrame"; + this._infoBox.appendChild(this._audioTitleFrame); + + // create div for song title's icon + this._audioTitleIconFrame = document.createElement('div'); + this._audioTitleIconFrame.className = "NowPlaying4CtrlAudioTitleIconFrame"; + this._audioTitleFrame.appendChild(this._audioTitleIconFrame); + + // create span for song title + this._audioTitle = document.createElement("span"); + this._audioTitle.className = "NowPlaying4CtrlAudioTitle"; + this._audioTitleFrame.appendChild(this._audioTitle); + + // create div for artist name line + this._detailLine1Frame = document.createElement('div'); + this._detailLine1Frame.className = "NowPlaying4CtrlDetailLine1Frame"; + this._infoBox.appendChild(this._detailLine1Frame); + + // create div for artist name's icon + this._detailLine1IconFrame = document.createElement('div'); + this._detailLine1IconFrame.className = "NowPlaying4CtrlDetailLine1IconFrame"; + this._detailLine1Frame.appendChild(this._detailLine1IconFrame); + + // create span for artist name + this._detailLine1 = document.createElement('div'); + this._detailLine1.className = "NowPlaying4CtrlDetailLine1"; + this._detailLine1Frame.appendChild(this._detailLine1); + + // create div for album title line + this._detailLine2Frame = document.createElement('div'); + this._detailLine2Frame.className = "NowPlaying4CtrlDetailLine2Frame"; + this._infoBox.appendChild(this._detailLine2Frame); + + // create div for album title's icon + this._detailLine2IconFrame = document.createElement('div'); + this._detailLine2IconFrame.className = "NowPlaying4CtrlDetailLine2IconFrame"; + this._detailLine2Frame.appendChild(this._detailLine2IconFrame); + + // create span for album title + this._detailLine2 = document.createElement('div'); + this._detailLine2.className = "NowPlaying4CtrlDetailLine2"; + this._detailLine2Frame.appendChild(this._detailLine2); + + // create div for "other" line + this._detailLine3Frame = document.createElement('div'); + this._detailLine3Frame.className = "NowPlaying4CtrlDetailLine3Frame"; + this._infoBox.appendChild(this._detailLine3Frame); + + // create div for "other"'s icon + this._detailLine3IconFrame = document.createElement('div'); + this._detailLine3IconFrame.className = "NowPlaying4CtrlDetailLine3IconFrame"; + this._detailLine3Frame.appendChild(this._detailLine3IconFrame); + + // create span for "other" + this._detailLine3 = document.createElement('div'); + this._detailLine3.className = "NowPlaying4CtrlDetailLine3"; + this._detailLine3Frame.appendChild(this._detailLine3); + + //create div for unformatted Text Frame + this._unformattedTextFrame = document.createElement('div'); + this._unformattedTextFrame.className = "NowPlaying4CtrlUnformattedTextFrame"; + this._infoBox.appendChild(this._unformattedTextFrame); + + // create div for unformattedText + this._unformattedText = document.createElement('div'); + this._unformattedText.className = "NowPlaying4CtrlUnformattedText"; + this._unformattedTextFrame.appendChild(this._unformattedText); + + // create div for phone number's icon + this._phoneNumberIconFrame = document.createElement('div'); + this._phoneNumberIconFrame.style.backgroundImage = "url(common/controls/NowPlaying4/images/IcnAhaPhone.png)"; + this._phoneNumberIconFrame.className = "NowPlaying4CtrlPhoneNumberIconFrame"; + this.divElt.appendChild(this._phoneNumberIconFrame); + + // create span for phone number + this._phoneNumber = document.createElement("span"); + this._phoneNumber.className = "NowPlaying4CtrlPhoneNumber"; + this.divElt.appendChild(this._phoneNumber); + + // create div for phone number's icon + this._distanceDirectionIconFrame = document.createElement('div'); + this._distanceDirectionIconFrame.style.backgroundImage = "url(common/controls/NowPlaying4/images/IcnAhaGlobe.png)"; + this._distanceDirectionIconFrame.className = "NowPlaying4CtrlDistanceDirectionIconFrame"; + this.divElt.appendChild(this._distanceDirectionIconFrame); + + // create span for distance & direction + this._distanceDirection = document.createElement("span"); + this._distanceDirection.className = "NowPlaying4CtrlDistanceDirection"; + this.divElt.appendChild(this._distanceDirection); + + // create div for rating meter + this._ratingMeterFrame = document.createElement('div'); + this._ratingMeterFrame.className = "NowPlaying4CtrlRatingMeterFrame"; + this.divElt.appendChild(this._ratingMeterFrame); + + // create alternate div for custom rating meter + this._customRatingDiv = document.createElement('div'); + this._customRatingDiv.className = "NowPlaying4CtrlCustomRatingDiv"; + this.divElt.appendChild(this._customRatingDiv); + + // create div's for rating meter stars + for (var rmStarNum = 1; rmStarNum <= this._constants.MAX_RATING_METER_STAR_COUNT; rmStarNum++) { + this["_rmStarNum" + rmStarNum] = document.createElement('div'); + this["_rmStarNum" + rmStarNum].style.left = ((rmStarNum - 1) * 29) + "px"; + this._ratingMeterFrame.appendChild(this["_rmStarNum" + rmStarNum]); + } + + // attach control to parent + this.parentDiv.appendChild(this.divElt); + + log.debug("Instantiating umpCtrl..."); + this.umpCtrl = framework.instantiateControl(this.uiaId, + this.divElt, + "Ump3Ctrl", + this.properties.umpConfig); + this._init(); }; -NowPlaying4Ctrl.prototype._updateTrackDisplay = function() -{ - var trackDisplayStr = "" + this.properties.currentTrackNum; +NowPlaying4Ctrl.prototype._updateTrackDisplay = function () { + var trackDisplayStr = "" + this.properties.currentTrackNum; - if (this.properties.trackCount > 0) - { - trackDisplayStr += "/" + this.properties.trackCount; - } + if (this.properties.trackCount > 0) { + trackDisplayStr += "/" + this.properties.trackCount; + } - this._trackDisplay.innerText = trackDisplayStr; + this._trackDisplay.innerText = trackDisplayStr; }; -NowPlaying4Ctrl.prototype._updateRatingMeter = function() -{ - var rmStarClassName; +NowPlaying4Ctrl.prototype._updateRatingMeter = function () { + var rmStarClassName; - this._customRatingDiv.className = "NowPlaying4CtrlHidden"; - if (this.properties.rating === -1 || this.properties.ctrlStyle !== "Style5") - { - this._ratingMeterFrame.className = "NowPlaying4CtrlHidden"; - log.debug("Rating only visible in Style5"); - } - else - { - this._ratingMeterFrame.className = "NowPlaying4CtrlRatingMeterFrame"; - for (var rmStarNum = 1; rmStarNum <= this._constants.MAX_RATING_METER_STAR_COUNT; rmStarNum++) - { - rmStarClassName = "NowPlaying4CtrlRmStar"; - if (this.properties.rating < rmStarNum - 0.5) - { - rmStarClassName += "Hollow"; - } - else if (this.properties.rating < rmStarNum) - { - rmStarClassName += "Half"; - } - else - { - rmStarClassName += "Filled"; - } - log.debug("_updateRatingMeter(" + rmStarNum + "): " + rmStarClassName); - this["_rmStarNum" + rmStarNum].className = rmStarClassName; - } + this._customRatingDiv.className = "NowPlaying4CtrlHidden"; + if (this.properties.rating === -1 || this.properties.ctrlStyle !== "Style5") { + this._ratingMeterFrame.className = "NowPlaying4CtrlHidden"; + log.debug("Rating only visible in Style5"); + } else { + this._ratingMeterFrame.className = "NowPlaying4CtrlRatingMeterFrame"; + for (var rmStarNum = 1; rmStarNum <= this._constants.MAX_RATING_METER_STAR_COUNT; rmStarNum++) { + rmStarClassName = "NowPlaying4CtrlRmStar"; + if (this.properties.rating < rmStarNum - 0.5) { + rmStarClassName += "Hollow"; + } else if (this.properties.rating < rmStarNum) { + rmStarClassName += "Half"; + } else { + rmStarClassName += "Filled"; + } + log.debug("_updateRatingMeter(" + rmStarNum + "): " + rmStarClassName); + this["_rmStarNum" + rmStarNum].className = rmStarClassName; } + } }; -NowPlaying4Ctrl.prototype._updateHdSubstationStyles = function() -{ - if (this.properties.hdConfigObj) - { - // Scan all of the substation configurations - for (var i = 1; i <= this._constants.MAX_HD_SUBSTATION_COUNT; i++) - { - // Local copy of the current substation configuration - var hdSubst = this.properties.hdConfigObj.hdSubstList[i - 1]; - - // If the substation is active while the tuner is unlocked, ... - if ((hdSubst === "Active") && - this.properties.hdConfigObj.hdStatus !== "Locked") - { - // ... override the configuation so it appears inactive - hdSubst = "Inactive"; - } - - // Set the class name based on the substation configuration - switch (hdSubst) - { - case "Active": - // HD substation number is visible and highlighted - this["_hdSubstNum" + i].className = "NowPlaying4CtrlHdSubst" + i + "Active"; - break; - case "Inactive": - // HD substation number is visible, but greyed out - this["_hdSubstNum" + i].className = "NowPlaying4CtrlHdSubst" + i; - break; - default: - // Anything else ("Unavailable" or "Undefined") is hidden (gap in display) - this["_hdSubstNum" + i].className = "NowPlaying4CtrlHidden"; - break; - } - } +NowPlaying4Ctrl.prototype._updateHdSubstationStyles = function () { + if (this.properties.hdConfigObj) { + // Scan all of the substation configurations + for (var i = 1; i <= this._constants.MAX_HD_SUBSTATION_COUNT; i++) { + // Local copy of the current substation configuration + var hdSubst = this.properties.hdConfigObj.hdSubstList[i - 1]; + + // If the substation is active while the tuner is unlocked, ... + if ((hdSubst === "Active") && + this.properties.hdConfigObj.hdStatus !== "Locked") { + // ... override the configuation so it appears inactive + hdSubst = "Inactive"; + } + + // Set the class name based on the substation configuration + switch (hdSubst) { + case "Active": + // HD substation number is visible and highlighted + this["_hdSubstNum" + i].className = "NowPlaying4CtrlHdSubst" + i + "Active"; + break; + case "Inactive": + // HD substation number is visible, but greyed out + this["_hdSubstNum" + i].className = "NowPlaying4CtrlHdSubst" + i; + break; + default: + // Anything else ("Unavailable" or "Undefined") is hidden (gap in display) + this["_hdSubstNum" + i].className = "NowPlaying4CtrlHidden"; + break; + } + } - // Adjust control title width to make room for HD display - this._ctrlTitle.className = "NowPlaying4CtrlTitle"; + // Adjust control title width to make room for HD display + this._ctrlTitle.className = "NowPlaying4CtrlTitle"; - // Make the HD display visible - this._hdDisplayFrame.className = "NowPlaying4CtrlHdDisplayFrame"; + // Make the HD display visible + this._hdDisplayFrame.className = "NowPlaying4CtrlHdDisplayFrame"; - // Make sure any branding image is hidden (without clearing its definition) - this._ctrlTitleIconFrame.className = "NowPlaying4CtrlHidden"; + // Make sure any branding image is hidden (without clearing its definition) + this._ctrlTitleIconFrame.className = "NowPlaying4CtrlHidden"; + } else { + // Scan all of the substation configurations & hide the displays + for (var i = 1; i <= this._constants.MAX_HD_SUBSTATION_COUNT; i++) { + this["_hdSubstNum" + i].className = "NowPlaying4CtrlHidden"; } - else - { - // Scan all of the substation configurations & hide the displays - for (var i = 1; i <= this._constants.MAX_HD_SUBSTATION_COUNT; i++) - { - this["_hdSubstNum" + i].className = "NowPlaying4CtrlHidden"; - } - // Hide the HD display - this._hdDisplayFrame.className = "NowPlaying4CtrlHidden"; + // Hide the HD display + this._hdDisplayFrame.className = "NowPlaying4CtrlHidden"; - // If there's a branding image available, ... - if (this.properties.ctrlTitleObj && - this.properties.ctrlTitleObj.ctrlTitleIcon) - { - // ... re-display it - this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); - } + // If there's a branding image available, ... + if (this.properties.ctrlTitleObj && + this.properties.ctrlTitleObj.ctrlTitleIcon) { + // ... re-display it + this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); } + } }; /* hides formatted text (song title, album name, artist name, genre name) to show unformatted text */ -NowPlaying4Ctrl.prototype._hideFormattedText = function() -{ - this._audioTitleFrame.className = "NowPlaying4CtrlHidden"; - this._detailLine1Frame.className = "NowPlaying4CtrlHidden"; - this._detailLine2Frame.className = "NowPlaying4CtrlHidden"; - this._detailLine3Frame.className = "NowPlaying4CtrlHidden"; +NowPlaying4Ctrl.prototype._hideFormattedText = function () { + this._audioTitleFrame.className = "NowPlaying4CtrlHidden"; + this._detailLine1Frame.className = "NowPlaying4CtrlHidden"; + this._detailLine2Frame.className = "NowPlaying4CtrlHidden"; + this._detailLine3Frame.className = "NowPlaying4CtrlHidden"; }; -NowPlaying4Ctrl.prototype.setNowPlayingConfig = function(config) -{ - log.debug("setNowPlayingConfig() called..."); - - // workaround for references, loadingIcon through setNowPlayingConfig - var loadingIcon = false; - - // ---MZDMOD--- - // Add style8 - // Control style - if (config.ctrlStyle && - ((config.ctrlStyle === "Style0") || - (config.ctrlStyle === "Style1") || - (config.ctrlStyle === "Style2") || - (config.ctrlStyle === "Style3") || - (config.ctrlStyle === "Style4") || - (config.ctrlStyle === "Style5") || - (config.ctrlStyle === "Style6") || - (config.ctrlStyle === "Style7") || - (config.ctrlStyle === "Style8"))) - { - this.properties.ctrlStyle = config.ctrlStyle; - loadingIcon = config.loadingIcon; - } - else - { - log.warn("Invalid control style \"" + config.ctrlStyle + "\" found -- defaulting to Style0!"); - this.properties.ctrlStyle = "Style0"; - } - - // Set control background - if (this.properties.ctrlStyle === "Style0") - { - this.showBackgroundImage(false); +NowPlaying4Ctrl.prototype.setNowPlayingConfig = function (config) { + log.debug("setNowPlayingConfig() called..."); + + // workaround for references, loadingIcon through setNowPlayingConfig + var loadingIcon = false; + + // ---MZDMOD--- + // Add style8 + // Control style + if (config.ctrlStyle && + ((config.ctrlStyle === "Style0") || + (config.ctrlStyle === "Style1") || + (config.ctrlStyle === "Style2") || + (config.ctrlStyle === "Style3") || + (config.ctrlStyle === "Style4") || + (config.ctrlStyle === "Style5") || + (config.ctrlStyle === "Style6") || + (config.ctrlStyle === "Style7") || + (config.ctrlStyle === "Style8"))) { + this.properties.ctrlStyle = config.ctrlStyle; + loadingIcon = config.loadingIcon; + } else { + log.warn("Invalid control style \"" + config.ctrlStyle + "\" found -- defaulting to Style0!"); + this.properties.ctrlStyle = "Style0"; + } + + // Set control background + if (this.properties.ctrlStyle === "Style0") { + this.showBackgroundImage(false); + } + + // Set control element styles + for (var i in this._styles[this.properties.ctrlStyle]) { + this[i].className = this._styles[this.properties.ctrlStyle][i]; + } + + // Control Title (playlist, folder, etc.) + this.setCtrlTitle(config.ctrlTitleObj); + + // HD Substation List + this.setHdConfig(config.hdConfigObj); + + // Subtitle (for Style7) + this.setCtrlSubtitle(config.ctrlSubtitleObj); + + // Audio Title (song/track) + this.setAudioTitle(config.audioTitleObj); + + // Detail lines (Artist, Album, etc.) + this.setDetailLine1(config.detailLine1Obj); + this.setDetailLine2(config.detailLine2Obj); + this.setDetailLine3(config.detailLine3Obj); + + if (this.properties.ctrlStyle === "Style7") { + // No Album artwork div in this style + this.clearArtworkImage(); + + // restore config.loadingIcon, same as in properties + config.loadingIcon = loadingIcon; + // check for loading property + if (config.loadingIcon) { + this.setLoadingIcon(config.loadingIcon); } - // Set control element styles - for (var i in this._styles[this.properties.ctrlStyle]) - { - this[i].className = this._styles[this.properties.ctrlStyle][i]; + if (config.unformattedTextObj) { + this.setUnformattedText(config.unformattedTextObj); + this._unformattedTextFrame.className = "NowPlaying4CtrlUnformattedTextFrame"; } - - // Control Title (playlist, folder, etc.) - this.setCtrlTitle(config.ctrlTitleObj); - - // HD Substation List - this.setHdConfig(config.hdConfigObj); - - // Subtitle (for Style7) - this.setCtrlSubtitle(config.ctrlSubtitleObj); - - // Audio Title (song/track) - this.setAudioTitle(config.audioTitleObj); - - // Detail lines (Artist, Album, etc.) - this.setDetailLine1(config.detailLine1Obj); - this.setDetailLine2(config.detailLine2Obj); - this.setDetailLine3(config.detailLine3Obj); - - if (this.properties.ctrlStyle === "Style7") - { - // No Album artwork div in this style - this.clearArtworkImage(); - - // restore config.loadingIcon, same as in properties - config.loadingIcon = loadingIcon; - // check for loading property - if(config.loadingIcon) - { - this.setLoadingIcon(config.loadingIcon); - } - - if(config.unformattedTextObj) - { - this.setUnformattedText(config.unformattedTextObj); - this._unformattedTextFrame.className = "NowPlaying4CtrlUnformattedTextFrame"; - } - } - else - { - // "No Artwork" Image - // Set this before calling setArtworkImagePath() so - // the default "no-artwork" image is properly configured - this.setNoArtworkImagePath(config.noArtworkImagePath); - - // Artwork Image - this.setArtworkImagePath(config.artworkImagePath); - } - - // Track display - if (config.currentTrackNum) - { - this.setCurrentTrackNum(config.currentTrackNum); - } - this.setTrackCount(config.trackCount); - - // Phone number - this.setPhoneNumber(config.phoneNumber); - - // Distance & direction - this.setDistanceDirection(config.distanceDirection); - - // Rating meter - this.setRating(config.rating); + } else { + // "No Artwork" Image + // Set this before calling setArtworkImagePath() so + // the default "no-artwork" image is properly configured + this.setNoArtworkImagePath(config.noArtworkImagePath); + + // Artwork Image + this.setArtworkImagePath(config.artworkImagePath); + } + + // Track display + if (config.currentTrackNum) { + this.setCurrentTrackNum(config.currentTrackNum); + } + this.setTrackCount(config.trackCount); + + // Phone number + this.setPhoneNumber(config.phoneNumber); + + // Distance & direction + this.setDistanceDirection(config.distanceDirection); + + // Rating meter + this.setRating(config.rating); }; /* @@ -920,36 +889,25 @@ NowPlaying4Ctrl.prototype.setNowPlayingConfig = function(config) * elt - The DOM element whose text is being set * txt - The text string being set. */ -NowPlaying4Ctrl.prototype._setInnerTextOrHTML = function(elt, txt) -{ - if (elt) - { - if (txt) - { - if(utility.toType(txt) == 'string') - { - var spanCloseIdx = txt.search("
    "); - if (spanCloseIdx >= 0) - { - // String has some embedded HTML, so use the appropriate API to set it - elt.innerHTML = txt; - } - else - { - // String has no embedded HTML -- use the original text-only API to set it - elt.innerText = txt; - } - } - else - { - elt.innerText = txt; - } - } - else - { - elt.innerText = ""; +NowPlaying4Ctrl.prototype._setInnerTextOrHTML = function (elt, txt) { + if (elt) { + if (txt) { + if (utility.toType(txt) == 'string') { + var spanCloseIdx = txt.search(""); + if (spanCloseIdx >= 0) { + // String has some embedded HTML, so use the appropriate API to set it + elt.innerHTML = txt; + } else { + // String has no embedded HTML -- use the original text-only API to set it + elt.innerText = txt; } + } else { + elt.innerText = txt; + } + } else { + elt.innerText = ""; } + } }; /* @@ -962,26 +920,23 @@ NowPlaying4Ctrl.prototype._setInnerTextOrHTML = function(elt, txt) * NOTE: According to the language team, the frequency units always appear in English and are never * translated; therefore, we use the passed-in string as-is. */ -NowPlaying4Ctrl.prototype.getFrequencyAndUnitsText = function(frequency, units) -{ - var frequencyAndUnitText = ""; - - if (frequency && units) - { - frequencyAndUnitText = '' + frequency + ' ' + - '' + units + ''; - } +NowPlaying4Ctrl.prototype.getFrequencyAndUnitsText = function (frequency, units) { + var frequencyAndUnitText = ""; + + if (frequency && units) { + frequencyAndUnitText = '' + frequency + ' ' + + '' + units + ''; + } - return frequencyAndUnitText; + return frequencyAndUnitText; }; /* * Deprecated API */ -NowPlaying4Ctrl.prototype.getStyle15FrequencyAndUnitsText = function(frequency, units) -{ - log.warn("Nowplaying4Ctrl : Deprecated function - use getFrequencyAndUnitsText API instead.") - return this.getFrequencyAndUnitsText(frequency,units); +NowPlaying4Ctrl.prototype.getStyle15FrequencyAndUnitsText = function (frequency, units) { + log.warn("Nowplaying4Ctrl : Deprecated function - use getFrequencyAndUnitsText API instead.") + return this.getFrequencyAndUnitsText(frequency, units); }; /* @@ -997,78 +952,60 @@ NowPlaying4Ctrl.prototype.getStyle15FrequencyAndUnitsText = function(frequency, * station: The radio station string. * relay: The relay station string (should be 'null' if using design studio option B). */ -NowPlaying4Ctrl.prototype.getStationAndRelayText = function(station, relay) -{ - var stationAndRelayText = ""; - - if (station && relay) - { - stationAndRelayText = '' + station + ' ' + - '(' + relay + ')'; - } - else if (station) - { - stationAndRelayText = '' + station + ''; - } +NowPlaying4Ctrl.prototype.getStationAndRelayText = function (station, relay) { + var stationAndRelayText = ""; + + if (station && relay) { + stationAndRelayText = '' + station + ' ' + + '(' + relay + ')'; + } else if (station) { + stationAndRelayText = '' + station + ''; + } - return stationAndRelayText; + return stationAndRelayText; }; /* * Deprecated API */ -NowPlaying4Ctrl.prototype.getStyle15StationAndRelayText = function(station, relay) -{ - log.warn("Nowplaying4Ctrl : Deprecated function - use getStationAndRelayText API instead.") - return this.getStationAndRelayText(station,relay); +NowPlaying4Ctrl.prototype.getStyle15StationAndRelayText = function (station, relay) { + log.warn("Nowplaying4Ctrl : Deprecated function - use getStationAndRelayText API instead.") + return this.getStationAndRelayText(station, relay); }; -NowPlaying4Ctrl.prototype.setCtrlTitle = function(ctrlTitleObj) -{ - log.debug("setCtrlTitle() called..."); - - if (ctrlTitleObj) - { - this.properties.ctrlTitleObj = new Object(); - - if (ctrlTitleObj.ctrlTitleId) - { - this.properties.ctrlTitleObj.ctrlTitle = framework.localize.getLocStr(this.uiaId, - ctrlTitleObj.ctrlTitleId, - ctrlTitleObj.subMap); - this._setInnerTextOrHTML(this._ctrlTitle, this.properties.ctrlTitleObj.ctrlTitle); - } - else if (ctrlTitleObj.ctrlTitleText) - { - this.properties.ctrlTitleObj.ctrlTitle = ctrlTitleObj.ctrlTitleText; - this._setInnerTextOrHTML(this._ctrlTitle, this.properties.ctrlTitleObj.ctrlTitle); - } - else - { - this._ctrlTitle.innerText = ""; - } - - if (ctrlTitleObj.ctrlTitleIcon) - { - // ---MZDMOD--- - - this.properties.ctrlTitleObj.ctrlTitleIcon = ctrlTitleObj.ctrlTitleIcon; - //this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); - //Style8 is only used for USB audio, this will set a left most icon - if (this.properties.ctrlStyle === "Style8") - { - this._ctrlTitleIconFrameLeft.style.backgroundImage = "url(" + this.properties.ctrlTitleObj.ctrlTitleIcon + ")"; - } - else - { - this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); - } - } +NowPlaying4Ctrl.prototype.setCtrlTitle = function (ctrlTitleObj) { + log.debug("setCtrlTitle() called..."); + + if (ctrlTitleObj) { + this.properties.ctrlTitleObj = new Object(); + + if (ctrlTitleObj.ctrlTitleId) { + this.properties.ctrlTitleObj.ctrlTitle = framework.localize.getLocStr(this.uiaId, + ctrlTitleObj.ctrlTitleId, + ctrlTitleObj.subMap); + this._setInnerTextOrHTML(this._ctrlTitle, this.properties.ctrlTitleObj.ctrlTitle); + } else if (ctrlTitleObj.ctrlTitleText) { + this.properties.ctrlTitleObj.ctrlTitle = ctrlTitleObj.ctrlTitleText; + this._setInnerTextOrHTML(this._ctrlTitle, this.properties.ctrlTitleObj.ctrlTitle); + } else { + this._ctrlTitle.innerText = ""; } - else - { - this._ctrlTitle.innerText = ""; + + if (ctrlTitleObj.ctrlTitleIcon) { + // ---MZDMOD--- + + this.properties.ctrlTitleObj.ctrlTitleIcon = ctrlTitleObj.ctrlTitleIcon; + //this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); + //Style8 is only used for USB audio, this will set a left most icon + if (this.properties.ctrlStyle === "Style8") { + this._ctrlTitleIconFrameLeft.style.backgroundImage = "url(" + this.properties.ctrlTitleObj.ctrlTitleIcon + ")"; + } else { + this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); + } } + } else { + this._ctrlTitle.innerText = ""; + } }; /* @@ -1118,89 +1055,74 @@ NowPlaying4Ctrl.prototype.setCtrlTitle = function(ctrlTitleObj) * setHdConfig(), once the HD tuner starts detecting substations normally (allowing * multiple substations to appear, with gaps for unavailable substations). */ -NowPlaying4Ctrl.prototype.setHdConfig = function(hdConfigObj) -{ - log.debug("setHdConfig() called..."); - - if (hdConfigObj) - { - // Make sure the control style supports displaying HD substations - if ((this.properties.ctrlStyle === "Style2") || - (this.properties.ctrlStyle === "Style4")) - { - // Initialize the internal HD configuration object - this.properties.hdConfigObj = new Object(); - this.properties.hdConfigObj.hdSubstList = new Array(); - - // If we have a valid HD substation preset number, ... - if (hdConfigObj.hdSubstPresetNum && - (utility.toType(hdConfigObj.hdSubstPresetNum) == 'number') && - (hdConfigObj.hdSubstPresetNum >= 1) && - (hdConfigObj.hdSubstPresetNum <= this._constants.MAX_HD_SUBSTATION_COUNT)) - { - // ... special initialization! - // Set HD substation configuration for preset in first slot to "Active" - this.properties.hdConfigObj.hdSubstList[0] = "Active"; - for (var i = 1; i < this._constants.MAX_HD_SUBSTATION_COUNT; i++) - { - // Other HD substations are unavailable - this.properties.hdConfigObj.hdSubstList[i] = "Unavailable"; - } - - // Remember we've got a preset - this.properties.hdConfigObj.hdSubstPresetNum = hdConfigObj.hdSubstPresetNum; - - // Update the displayed label to match the preset number - this["_hdSubstNum1"].innerText = "" + hdConfigObj.hdSubstPresetNum; - } - else - { - var activeSubstNum = null; - - // No preset defined -- initialize the HD substation configuration normally - // Configure the first 8 substation definitions (at most) - for (var i = 0; i < this._constants.MAX_HD_SUBSTATION_COUNT; i++) - { - if (hdConfigObj.hdSubstList[i] && - ((hdConfigObj.hdSubstList[i] === "Active") || - (hdConfigObj.hdSubstList[i] === "Inactive") || - (hdConfigObj.hdSubstList[i] === "Unavailable"))) - { - // Copy valid configurations as-is to internal array - this.properties.hdConfigObj.hdSubstList[i] = hdConfigObj.hdSubstList[i]; - if (hdConfigObj.hdSubstList[i] === "Active") - { - // Track the new active HD substation (by number, not index) - activeSubstNum = i + 1; - } - } - else - { - // Anything else (incl. null) is unavailable - this.properties.hdConfigObj.hdSubstList[i] = "Unavailable"; - } - } - - if (activeSubstNum) - { - // We've got an active HD substation -- set it - this.setActiveHdSubstation(activeSubstNum); - } - - // Make sure the first slot's displayed label is correct - // (if we're following a call to setHdConfig() for a preset) - this["_hdSubstNum1"].innerText = "1"; - } +NowPlaying4Ctrl.prototype.setHdConfig = function (hdConfigObj) { + log.debug("setHdConfig() called..."); - // Update the global HD tuner lock status - // (also updates the appearance of all of the HD substation styles) - this.setHdStatus(hdConfigObj.hdStatus); + if (hdConfigObj) { + // Make sure the control style supports displaying HD substations + if ((this.properties.ctrlStyle === "Style2") || + (this.properties.ctrlStyle === "Style4")) { + // Initialize the internal HD configuration object + this.properties.hdConfigObj = new Object(); + this.properties.hdConfigObj.hdSubstList = new Array(); + + // If we have a valid HD substation preset number, ... + if (hdConfigObj.hdSubstPresetNum && + (utility.toType(hdConfigObj.hdSubstPresetNum) == 'number') && + (hdConfigObj.hdSubstPresetNum >= 1) && + (hdConfigObj.hdSubstPresetNum <= this._constants.MAX_HD_SUBSTATION_COUNT)) { + // ... special initialization! + // Set HD substation configuration for preset in first slot to "Active" + this.properties.hdConfigObj.hdSubstList[0] = "Active"; + for (var i = 1; i < this._constants.MAX_HD_SUBSTATION_COUNT; i++) { + // Other HD substations are unavailable + this.properties.hdConfigObj.hdSubstList[i] = "Unavailable"; } - else - { - log.warn("HD substation configuration not allowed in " + this.properties.ctrlStyle); + + // Remember we've got a preset + this.properties.hdConfigObj.hdSubstPresetNum = hdConfigObj.hdSubstPresetNum; + + // Update the displayed label to match the preset number + this["_hdSubstNum1"].innerText = "" + hdConfigObj.hdSubstPresetNum; + } else { + var activeSubstNum = null; + + // No preset defined -- initialize the HD substation configuration normally + // Configure the first 8 substation definitions (at most) + for (var i = 0; i < this._constants.MAX_HD_SUBSTATION_COUNT; i++) { + if (hdConfigObj.hdSubstList[i] && + ((hdConfigObj.hdSubstList[i] === "Active") || + (hdConfigObj.hdSubstList[i] === "Inactive") || + (hdConfigObj.hdSubstList[i] === "Unavailable"))) { + // Copy valid configurations as-is to internal array + this.properties.hdConfigObj.hdSubstList[i] = hdConfigObj.hdSubstList[i]; + if (hdConfigObj.hdSubstList[i] === "Active") { + // Track the new active HD substation (by number, not index) + activeSubstNum = i + 1; + } + } else { + // Anything else (incl. null) is unavailable + this.properties.hdConfigObj.hdSubstList[i] = "Unavailable"; + } + } + + if (activeSubstNum) { + // We've got an active HD substation -- set it + this.setActiveHdSubstation(activeSubstNum); } + + // Make sure the first slot's displayed label is correct + // (if we're following a call to setHdConfig() for a preset) + this["_hdSubstNum1"].innerText = "1"; + } + + // Update the global HD tuner lock status + // (also updates the appearance of all of the HD substation styles) + this.setHdStatus(hdConfigObj.hdStatus); + } else { + log.warn("HD substation configuration not allowed in " + this.properties.ctrlStyle); } + } }; /* @@ -1226,50 +1148,46 @@ NowPlaying4Ctrl.prototype.setHdConfig = function(hdConfigObj) * number) to see the HD substation display again -- just setting the * tuner status with this API will not be sufficient. */ -NowPlaying4Ctrl.prototype.setHdStatus = function(hdStatus) -{ - log.debug("setHdStatus(" + hdStatus + ")"); - - if (this.properties.hdConfigObj) - { - // Cache the status update - this.properties.hdConfigObj.hdStatus = hdStatus; - - switch(this.properties.hdConfigObj.hdStatus) - { - case "Locked": - // Configure the HD display with the enabled Airbiquity HD logo - this._hdDisplayIconImage.src = "common/controls/NowPlaying4/images/Logo_HD.png"; - break; - - case "NoLock": - // Configure the HD display with the disabled Airbiquity HD logo - this._hdDisplayIconImage.src = "common/controls/NowPlaying4/images/Logo_HD_Gray.png"; - break; - - case "Disabled": - // The HD tuner lock has timed out or been turned off -- - // discard all HD configuration information & hide everything - this.properties.hdConfigObj = null; - - // Restore any configured branding image - if (this.properties.ctrlTitleObj && - this.properties.ctrlTitleObj.ctrlTitleIcon) - { - this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); - } - - break; - - default: - log.warn("setHdStatus(): invalid status \"" + hdStatus + - "\" received"); - break; - } - - // Update the appearance of all of the HD substation styles - this._updateHdSubstationStyles(); +NowPlaying4Ctrl.prototype.setHdStatus = function (hdStatus) { + log.debug("setHdStatus(" + hdStatus + ")"); + + if (this.properties.hdConfigObj) { + // Cache the status update + this.properties.hdConfigObj.hdStatus = hdStatus; + + switch (this.properties.hdConfigObj.hdStatus) { + case "Locked": + // Configure the HD display with the enabled Airbiquity HD logo + this._hdDisplayIconImage.src = "common/controls/NowPlaying4/images/Logo_HD.png"; + break; + + case "NoLock": + // Configure the HD display with the disabled Airbiquity HD logo + this._hdDisplayIconImage.src = "common/controls/NowPlaying4/images/Logo_HD_Gray.png"; + break; + + case "Disabled": + // The HD tuner lock has timed out or been turned off -- + // discard all HD configuration information & hide everything + this.properties.hdConfigObj = null; + + // Restore any configured branding image + if (this.properties.ctrlTitleObj && + this.properties.ctrlTitleObj.ctrlTitleIcon) { + this.setBrandImage(this.properties.ctrlTitleObj.ctrlTitleIcon); + } + + break; + + default: + log.warn("setHdStatus(): invalid status \"" + hdStatus + + "\" received"); + break; } + + // Update the appearance of all of the HD substation styles + this._updateHdSubstationStyles(); + } }; /* @@ -1280,455 +1198,360 @@ NowPlaying4Ctrl.prototype.setHdStatus = function(hdStatus) * NOTE: Substation numbers are one-based (1-8), * not zero-based (0-7)! */ -NowPlaying4Ctrl.prototype.setActiveHdSubstation = function(substNum) -{ - log.debug("setActiveHdSubstation(" + substNum + ")"); - - if (this.properties.hdConfigObj && - substNum && - (utility.toType(substNum) == 'number') && - (substNum >= 1) && - (substNum <= this._constants.MAX_HD_SUBSTATION_COUNT)) - { - // Is there a preset active? - if (this.properties.hdConfigObj.hdSubstPresetNum) - { - // Yes -- move the preset to its rightful position - this.properties.hdConfigObj.hdSubstList[this.properties.hdConfigObj.hdSubstPresetNum - 1] = - this.properties.hdConfigObj.hdSubstList[0]; - - // Clean up the first slot - this.properties.hdConfigObj.hdSubstList[0] = "Unavailable"; - this["_hdSubstNum1"].innerText = "1"; - - // Discard the preset definition - this.properties.hdConfigObj.hdSubstPresetNum = undefined; - } - - for (var i = 0; i < this._constants.MAX_HD_SUBSTATION_COUNT; i++) - { - // Find other substation(s) that are currently active ... - if ((substNum != (i + 1)) && - (this.properties.hdConfigObj.hdSubstList[i] === "Active")) - { - // ... and make sure they're inactive (only one active substation at a time) - this.properties.hdConfigObj.hdSubstList[i] = "Inactive"; - } - } - - // Set the indicated substation as active - this.properties.hdConfigObj.hdSubstList[substNum - 1] = "Active"; - - // Update the appearance of all of the HD substation styles - this._updateHdSubstationStyles(); +NowPlaying4Ctrl.prototype.setActiveHdSubstation = function (substNum) { + log.debug("setActiveHdSubstation(" + substNum + ")"); + + if (this.properties.hdConfigObj && + substNum && + (utility.toType(substNum) == 'number') && + (substNum >= 1) && + (substNum <= this._constants.MAX_HD_SUBSTATION_COUNT)) { + // Is there a preset active? + if (this.properties.hdConfigObj.hdSubstPresetNum) { + // Yes -- move the preset to its rightful position + this.properties.hdConfigObj.hdSubstList[this.properties.hdConfigObj.hdSubstPresetNum - 1] = + this.properties.hdConfigObj.hdSubstList[0]; + + // Clean up the first slot + this.properties.hdConfigObj.hdSubstList[0] = "Unavailable"; + this["_hdSubstNum1"].innerText = "1"; + + // Discard the preset definition + this.properties.hdConfigObj.hdSubstPresetNum = undefined; } -}; -NowPlaying4Ctrl.prototype.setLoadingIcon = function(loading) -{ - if(this.properties.ctrlStyle == 'Style7') - { - this.properties.loadingIcon = loading; - if (this.properties.loadingIcon === true) - { - this._loadingImageFrame.classList.add('loading'); - if(this._ctrlTitleIconFrame.className === "NowPlaying4CtrlHidden") - { - this._ctrlTitle.className = "NowPlaying4CtrlTitle"; - } - else - { - this._ctrlTitleIconFrame.className = "NowPlaying4CtrlHidden"; - } - } - else - { - this._loadingImageFrame.classList.remove('loading'); - - if (this._ctrlTitleIconImage.src != "") - { - this._ctrlTitleIconFrame.className = "NowPlaying4CtrlTitleIconFrame"; - } - else - { - this._ctrlTitle.className = "NowPlaying4CtrlTitleFull"; - } - } + for (var i = 0; i < this._constants.MAX_HD_SUBSTATION_COUNT; i++) { + // Find other substation(s) that are currently active ... + if ((substNum != (i + 1)) && + (this.properties.hdConfigObj.hdSubstList[i] === "Active")) { + // ... and make sure they're inactive (only one active substation at a time) + this.properties.hdConfigObj.hdSubstList[i] = "Inactive"; + } } -}; - -NowPlaying4Ctrl.prototype.setCtrlSubtitle = function(ctrlSubtitleObj) -{ - log.debug("setCtrlSubtitle() called..."); - if (this.properties.ctrlStyle === "Style7") - { - var styleName = this._styles[this.properties.ctrlStyle]["_ctrlSubtitle"]; + // Set the indicated substation as active + this.properties.hdConfigObj.hdSubstList[substNum - 1] = "Active"; - if (ctrlSubtitleObj) - { - this.properties.ctrlSubtitleObj = new Object(); - - if (ctrlSubtitleObj.ctrlSubtitleId) - { - this.properties.ctrlSubtitleObj.ctrlSubtitle = framework.localize.getLocStr(this.uiaId, - ctrlSubtitleObj.ctrlSubtitleId, - ctrlSubtitleObj.subMap); - this._setInnerTextOrHTML(this._ctrlSubtitle, this.properties.ctrlSubtitleObj.ctrlSubtitle); - } - else if (ctrlSubtitleObj.ctrlSubtitleText) - { - this.properties.ctrlSubtitleObj.ctrlSubtitle = ctrlSubtitleObj.ctrlSubtitleText; - this._setInnerTextOrHTML(this._ctrlSubtitle, this.properties.ctrlSubtitleObj.ctrlSubtitle); - } - else - { - this._ctrlSubtitle.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } - - // No Icon allowed in this object - } - else - { - this._ctrlSubtitle.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } + // Update the appearance of all of the HD substation styles + this._updateHdSubstationStyles(); + } +}; - // Update the style to show/hide the line (so missing lines collapse properly) - this._ctrlSubtitle.className = styleName; +NowPlaying4Ctrl.prototype.setLoadingIcon = function (loading) { + if (this.properties.ctrlStyle == 'Style7') { + this.properties.loadingIcon = loading; + if (this.properties.loadingIcon === true) { + this._loadingImageFrame.classList.add('loading'); + if (this._ctrlTitleIconFrame.className === "NowPlaying4CtrlHidden") { + this._ctrlTitle.className = "NowPlaying4CtrlTitle"; + } else { + this._ctrlTitleIconFrame.className = "NowPlaying4CtrlHidden"; + } + } else { + this._loadingImageFrame.classList.remove('loading'); + + if (this._ctrlTitleIconImage.src != "") { + this._ctrlTitleIconFrame.className = "NowPlaying4CtrlTitleIconFrame"; + } else { + this._ctrlTitle.className = "NowPlaying4CtrlTitleFull"; + } } + } }; -NowPlaying4Ctrl.prototype.setAudioTitle = function(audioTitleObj) -{ - log.debug("setAudioTitle() called..."); - - var styleName = this._styles[this.properties.ctrlStyle]["_audioTitleFrame"]; - - if (audioTitleObj && !this.properties.unformattedTextObj) - { - this.properties.audioTitleObj = new Object(); - - if (audioTitleObj.audioTitleId) - { - this.properties.audioTitleObj.audioTitle = framework.localize.getLocStr(this.uiaId, - audioTitleObj.audioTitleId, - audioTitleObj.subMap); - this._setInnerTextOrHTML(this._audioTitle, this.properties.audioTitleObj.audioTitle); - } - else if (audioTitleObj.audioTitleText) - { - this.properties.audioTitleObj.audioTitle = audioTitleObj.audioTitleText; - this._setInnerTextOrHTML(this._audioTitle, this.properties.audioTitleObj.audioTitle); - } - else - { - this._audioTitle.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } - - if (audioTitleObj.audioTitleIcon) - { - this.properties.audioTitleObj.audioTitleIcon = audioTitleObj.audioTitleIcon; - this._audioTitleIconFrame.style.backgroundImage = "url(" + this.properties.audioTitleObj.audioTitleIcon + ")"; - } - } - else - { - this._audioTitle.innerText = ""; +NowPlaying4Ctrl.prototype.setCtrlSubtitle = function (ctrlSubtitleObj) { + log.debug("setCtrlSubtitle() called..."); + + if (this.properties.ctrlStyle === "Style7") { + var styleName = this._styles[this.properties.ctrlStyle]["_ctrlSubtitle"]; + + if (ctrlSubtitleObj) { + this.properties.ctrlSubtitleObj = new Object(); + + if (ctrlSubtitleObj.ctrlSubtitleId) { + this.properties.ctrlSubtitleObj.ctrlSubtitle = framework.localize.getLocStr(this.uiaId, + ctrlSubtitleObj.ctrlSubtitleId, + ctrlSubtitleObj.subMap); + this._setInnerTextOrHTML(this._ctrlSubtitle, this.properties.ctrlSubtitleObj.ctrlSubtitle); + } else if (ctrlSubtitleObj.ctrlSubtitleText) { + this.properties.ctrlSubtitleObj.ctrlSubtitle = ctrlSubtitleObj.ctrlSubtitleText; + this._setInnerTextOrHTML(this._ctrlSubtitle, this.properties.ctrlSubtitleObj.ctrlSubtitle); + } else { + this._ctrlSubtitle.innerText = ""; styleName = "NowPlaying4CtrlHidden"; + } + + // No Icon allowed in this object + } else { + this._ctrlSubtitle.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; } // Update the style to show/hide the line (so missing lines collapse properly) - this._audioTitleFrame.className = styleName; - + this._ctrlSubtitle.className = styleName; + } }; -NowPlaying4Ctrl.prototype.setDetailLine1 = function(detailLine1Obj) -{ - log.debug("setDetailLine1() called..."); +NowPlaying4Ctrl.prototype.setAudioTitle = function (audioTitleObj) { + log.debug("setAudioTitle() called..."); + + var styleName = this._styles[this.properties.ctrlStyle]["_audioTitleFrame"]; + + if (audioTitleObj && !this.properties.unformattedTextObj) { + this.properties.audioTitleObj = new Object(); + + if (audioTitleObj.audioTitleId) { + this.properties.audioTitleObj.audioTitle = framework.localize.getLocStr(this.uiaId, + audioTitleObj.audioTitleId, + audioTitleObj.subMap); + this._setInnerTextOrHTML(this._audioTitle, this.properties.audioTitleObj.audioTitle); + } else if (audioTitleObj.audioTitleText) { + this.properties.audioTitleObj.audioTitle = audioTitleObj.audioTitleText; + this._setInnerTextOrHTML(this._audioTitle, this.properties.audioTitleObj.audioTitle); + } else { + this._audioTitle.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; + } - var styleName = this._styles[this.properties.ctrlStyle]["_detailLine1Frame"]; + if (audioTitleObj.audioTitleIcon) { + this.properties.audioTitleObj.audioTitleIcon = audioTitleObj.audioTitleIcon; + this._audioTitleIconFrame.style.backgroundImage = "url(" + this.properties.audioTitleObj.audioTitleIcon + ")"; + } + } else { + this._audioTitle.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; + } - if (detailLine1Obj && !this.properties.unformattedTextObj) - { - this.properties.detailLine1Obj = new Object(); + // Update the style to show/hide the line (so missing lines collapse properly) + this._audioTitleFrame.className = styleName; - if (detailLine1Obj.detailTextId) - { - this.properties.detailLine1Obj.detailLine1 = framework.localize.getLocStr(this.uiaId, - detailLine1Obj.detailTextId, - detailLine1Obj.subMap); - this._setInnerTextOrHTML(this._detailLine1, this.properties.detailLine1Obj.detailLine1); - } - else if (detailLine1Obj.detailText) - { - this.properties.detailLine1Obj.detailLine1 = detailLine1Obj.detailText; - this._setInnerTextOrHTML(this._detailLine1, this.properties.detailLine1Obj.detailLine1); - } - else - { - this._detailLine1.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } +}; - if (detailLine1Obj.detailIcon) - { - this.properties.detailLine1Obj.detailIcon = detailLine1Obj.detailIcon; - this._detailLine1IconFrame.style.backgroundImage = "url(" + this.properties.detailLine1Obj.detailIcon + ")"; - } +NowPlaying4Ctrl.prototype.setDetailLine1 = function (detailLine1Obj) { + log.debug("setDetailLine1() called..."); + + var styleName = this._styles[this.properties.ctrlStyle]["_detailLine1Frame"]; + + if (detailLine1Obj && !this.properties.unformattedTextObj) { + this.properties.detailLine1Obj = new Object(); + + if (detailLine1Obj.detailTextId) { + this.properties.detailLine1Obj.detailLine1 = framework.localize.getLocStr(this.uiaId, + detailLine1Obj.detailTextId, + detailLine1Obj.subMap); + this._setInnerTextOrHTML(this._detailLine1, this.properties.detailLine1Obj.detailLine1); + } else if (detailLine1Obj.detailText) { + this.properties.detailLine1Obj.detailLine1 = detailLine1Obj.detailText; + this._setInnerTextOrHTML(this._detailLine1, this.properties.detailLine1Obj.detailLine1); + } else { + this._detailLine1.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; } - else - { - this._detailLine1.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; + + if (detailLine1Obj.detailIcon) { + this.properties.detailLine1Obj.detailIcon = detailLine1Obj.detailIcon; + this._detailLine1IconFrame.style.backgroundImage = "url(" + this.properties.detailLine1Obj.detailIcon + ")"; } + } else { + this._detailLine1.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; + } - // Update the style to show/hide the line (so missing lines collapse properly) - this._detailLine1Frame.className = styleName; + // Update the style to show/hide the line (so missing lines collapse properly) + this._detailLine1Frame.className = styleName; }; -NowPlaying4Ctrl.prototype.setDetailLine2 = function(detailLine2Obj) -{ - log.debug("setDetailLine2() called..."); - - var styleName = this._styles[this.properties.ctrlStyle]["_detailLine2Frame"]; - - if (detailLine2Obj && !this.properties.unformattedTextObj) - { - this.properties.detailLine2Obj = new Object(); - - if (detailLine2Obj.detailTextId) - { - this.properties.detailLine2Obj.detailLine2 = framework.localize.getLocStr(this.uiaId, - detailLine2Obj.detailTextId, - detailLine2Obj.subMap); - this._setInnerTextOrHTML(this._detailLine2, this.properties.detailLine2Obj.detailLine2); - } - else if (detailLine2Obj.detailText) - { - this.properties.detailLine2Obj.detailLine2 = detailLine2Obj.detailText; - this._setInnerTextOrHTML(this._detailLine2, this.properties.detailLine2Obj.detailLine2); - } - else - { - this._detailLine2.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } - - if (detailLine2Obj.detailIcon) - { - this.properties.detailLine2Obj.detailIcon = detailLine2Obj.detailIcon; - this._detailLine2IconFrame.style.backgroundImage = "url(" + this.properties.detailLine2Obj.detailIcon + ")"; - } +NowPlaying4Ctrl.prototype.setDetailLine2 = function (detailLine2Obj) { + log.debug("setDetailLine2() called..."); + + var styleName = this._styles[this.properties.ctrlStyle]["_detailLine2Frame"]; + + if (detailLine2Obj && !this.properties.unformattedTextObj) { + this.properties.detailLine2Obj = new Object(); + + if (detailLine2Obj.detailTextId) { + this.properties.detailLine2Obj.detailLine2 = framework.localize.getLocStr(this.uiaId, + detailLine2Obj.detailTextId, + detailLine2Obj.subMap); + this._setInnerTextOrHTML(this._detailLine2, this.properties.detailLine2Obj.detailLine2); + } else if (detailLine2Obj.detailText) { + this.properties.detailLine2Obj.detailLine2 = detailLine2Obj.detailText; + this._setInnerTextOrHTML(this._detailLine2, this.properties.detailLine2Obj.detailLine2); + } else { + this._detailLine2.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; } - else - { - this._detailLine2.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; + + if (detailLine2Obj.detailIcon) { + this.properties.detailLine2Obj.detailIcon = detailLine2Obj.detailIcon; + this._detailLine2IconFrame.style.backgroundImage = "url(" + this.properties.detailLine2Obj.detailIcon + ")"; } + } else { + this._detailLine2.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; + } - // Update the style to show/hide the line (so missing lines collapse properly) - this._detailLine2Frame.className = styleName; + // Update the style to show/hide the line (so missing lines collapse properly) + this._detailLine2Frame.className = styleName; }; -NowPlaying4Ctrl.prototype.setDetailLine3 = function(detailLine3Obj) -{ - log.debug("setDetailLine3() called..."); - - var styleName = this._styles[this.properties.ctrlStyle]["_detailLine3Frame"]; - - if (detailLine3Obj && !this.properties.unformattedTextObj ) - { - this.properties.detailLine3Obj = new Object(); - - if (detailLine3Obj.detailTextId) - { - this.properties.detailLine3Obj.detailLine3 = framework.localize.getLocStr(this.uiaId, - detailLine3Obj.detailTextId, - detailLine3Obj.subMap); - this._setInnerTextOrHTML(this._detailLine3, this.properties.detailLine3Obj.detailLine3); - } - else if (detailLine3Obj.detailText) - { - this.properties.detailLine3Obj.detailLine3 = detailLine3Obj.detailText; - this._setInnerTextOrHTML(this._detailLine3, this.properties.detailLine3Obj.detailLine3); - } - else - { - this._detailLine3.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } - - if (detailLine3Obj.detailIcon) - { - this.properties.detailLine3Obj.detailIcon = detailLine3Obj.detailIcon; - this._detailLine3IconFrame.style.backgroundImage = "url(" + this.properties.detailLine3Obj.detailIcon + ")"; - } +NowPlaying4Ctrl.prototype.setDetailLine3 = function (detailLine3Obj) { + log.debug("setDetailLine3() called..."); + + var styleName = this._styles[this.properties.ctrlStyle]["_detailLine3Frame"]; + + if (detailLine3Obj && !this.properties.unformattedTextObj) { + this.properties.detailLine3Obj = new Object(); + + if (detailLine3Obj.detailTextId) { + this.properties.detailLine3Obj.detailLine3 = framework.localize.getLocStr(this.uiaId, + detailLine3Obj.detailTextId, + detailLine3Obj.subMap); + this._setInnerTextOrHTML(this._detailLine3, this.properties.detailLine3Obj.detailLine3); + } else if (detailLine3Obj.detailText) { + this.properties.detailLine3Obj.detailLine3 = detailLine3Obj.detailText; + this._setInnerTextOrHTML(this._detailLine3, this.properties.detailLine3Obj.detailLine3); + } else { + this._detailLine3.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; } - else - { - this._detailLine3.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; + + if (detailLine3Obj.detailIcon) { + this.properties.detailLine3Obj.detailIcon = detailLine3Obj.detailIcon; + this._detailLine3IconFrame.style.backgroundImage = "url(" + this.properties.detailLine3Obj.detailIcon + ")"; } + } else { + this._detailLine3.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; + } - // Update the style to show/hide the line (so missing lines collapse properly) - this._detailLine3Frame.className = styleName; + // Update the style to show/hide the line (so missing lines collapse properly) + this._detailLine3Frame.className = styleName; }; -NowPlaying4Ctrl.prototype.setUnformattedText = function(unformattedTextObj) -{ - log.debug("setUnformattedText() called..."); - - var styleName = "NowPlaying4CtrlUnformattedTextFrame"; - - if (unformattedTextObj && this.properties.ctrlStyle === 'Style7') - { - this.properties.unformattedTextObj = new Object(); - this._hideFormattedText(); - - if (unformattedTextObj.unformattedTextId) - { - this.properties.unformattedTextObj.unformattedTextId = framework.localize.getLocStr(this.uiaId, - unformattedTextObj.unformattedTextId, - unformattedTextObj.subMap); - this._setInnerTextOrHTML(this._unformattedText, this.properties.unformattedTextObj.unformattedTextId); - } - else if (unformattedTextObj.unformattedText) - { - this.properties.unformattedTextObj.unformattedText = unformattedTextObj.unformattedText; - this._setInnerTextOrHTML(this._unformattedText, this.properties.unformattedTextObj.unformattedTextId); - } - else - { - this._unformattedText.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - } - } - else - { - this._unformattedText.innerText = ""; - styleName = "NowPlaying4CtrlHidden"; - +NowPlaying4Ctrl.prototype.setUnformattedText = function (unformattedTextObj) { + log.debug("setUnformattedText() called..."); + + var styleName = "NowPlaying4CtrlUnformattedTextFrame"; + + if (unformattedTextObj && this.properties.ctrlStyle === 'Style7') { + this.properties.unformattedTextObj = new Object(); + this._hideFormattedText(); + + if (unformattedTextObj.unformattedTextId) { + this.properties.unformattedTextObj.unformattedTextId = framework.localize.getLocStr(this.uiaId, + unformattedTextObj.unformattedTextId, + unformattedTextObj.subMap); + this._setInnerTextOrHTML(this._unformattedText, this.properties.unformattedTextObj.unformattedTextId); + } else if (unformattedTextObj.unformattedText) { + this.properties.unformattedTextObj.unformattedText = unformattedTextObj.unformattedText; + this._setInnerTextOrHTML(this._unformattedText, this.properties.unformattedTextObj.unformattedTextId); + } else { + this._unformattedText.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; } + } else { + this._unformattedText.innerText = ""; + styleName = "NowPlaying4CtrlHidden"; - // Update the style to show/hide the line (so missing lines collapse properly) - this._unformattedTextFrame.className = styleName; - this.properties.unformattedTextObj = unformattedTextObj; + } + + // Update the style to show/hide the line (so missing lines collapse properly) + this._unformattedTextFrame.className = styleName; + this.properties.unformattedTextObj = unformattedTextObj; }; /* * Sets whether the artwork image should be displayed * @param flag Boolean true if the artwork image should be displayed */ -NowPlaying4Ctrl.prototype.showArtworkImage = function(flag) -{ - log.debug("showArtworkImage() called: " + flag); - - // Make sure the control style supports artwork image display - if (this.properties.ctrlStyle != "Style0") - { - if (flag) - { - this._artworkImageFrame.className = "NowPlaying4CtrlArtworkImageDiv"; - } - else - { - this._artworkImageFrame.className = "NowPlaying4CtrlHidden"; - } +NowPlaying4Ctrl.prototype.showArtworkImage = function (flag) { + log.debug("showArtworkImage() called: " + flag); + + // Make sure the control style supports artwork image display + if (this.properties.ctrlStyle != "Style0") { + if (flag) { + this._artworkImageFrame.className = "NowPlaying4CtrlArtworkImageDiv"; + } else { + this._artworkImageFrame.className = "NowPlaying4CtrlHidden"; } + } }; /* * Sets the path to the artwork image * @param imagePath String for image path/file name */ -NowPlaying4Ctrl.prototype.setArtworkImagePath = function(imagePath) -{ - log.debug("setArtworkImagePath() called: " + imagePath); - - // Album Image - if (imagePath) - { - this.properties.artworkImagePath = imagePath; - this._artworkImage.src = this.properties.artworkImagePath; - } - else - { - if (this.properties.ctrlStyle === "Style6") - { - // Control is in style "Style6", and no image is defined -- - // hide the image (no "no-artwork" image) - this._artworkImageFrame.className = "NowPlaying4CtrlHidden"; - } - else - { - // Show placeholder icon instead of album image art - this.properties.artworkImagePath = ""; - this._artworkImage.src = this.properties.noArtworkImagePath; - } +NowPlaying4Ctrl.prototype.setArtworkImagePath = function (imagePath) { + log.debug("setArtworkImagePath() called: " + imagePath); + + // Album Image + if (imagePath) { + this.properties.artworkImagePath = imagePath; + this._artworkImage.src = this.properties.artworkImagePath; + } else { + if (this.properties.ctrlStyle === "Style6") { + // Control is in style "Style6", and no image is defined -- + // hide the image (no "no-artwork" image) + this._artworkImageFrame.className = "NowPlaying4CtrlHidden"; + } else { + // Show placeholder icon instead of album image art + this.properties.artworkImagePath = ""; + this._artworkImage.src = this.properties.noArtworkImagePath; } + } }; // This API is a shortcut method for clearing the Artwork Image. If the control is in // a style supporting Now Artwork Image ("Style7", ONLY!), the image will be hidden // and the "info box" text will be extended over the vacated real estate. -NowPlaying4Ctrl.prototype.clearArtworkImage = function() -{ - log.debug("clearArtworkImage() called..."); - - // Remove any current branding image (all styles) - this._artworkImage.src = ""; - - // If we're in a style that supports no image, ... - if (this.properties.ctrlStyle === "Style7") - { - // ... remove any branding image configuration - if (this.properties.ctrlTitleObj && - this.properties.ctrlTitleObj.ctrlTitleIcon) - { - this.properties.ctrlTitleObj.ctrlTitleIcon = undefined; - } - - // Hide the control title icon - this._artworkImageFrame.className = "NowPlaying4CtrlHidden"; - - // ... make sure the infobox is full-width - // ex: this._ctrlTitle.className = "NowPlaying4CtrlTitleFull"; - this._infoBox.className = "NowPlaying4CtrlInfoBoxFull"; - this._audioTitle.className = "NowPlaying4CtrlAudioTitleFull"; - this._detailLine1.className = "NowPlaying4CtrlDetailLine1Full"; - this._detailLine2.className = "NowPlaying4CtrlDetailLine2Full"; - this._detailLine3.className = "NowPlaying4CtrlDetailLine3Full"; - this._unformattedText.className = "NowPlaying4CtrlUnformattedText"; +NowPlaying4Ctrl.prototype.clearArtworkImage = function () { + log.debug("clearArtworkImage() called..."); + + // Remove any current branding image (all styles) + this._artworkImage.src = ""; + + // If we're in a style that supports no image, ... + if (this.properties.ctrlStyle === "Style7") { + // ... remove any branding image configuration + if (this.properties.ctrlTitleObj && + this.properties.ctrlTitleObj.ctrlTitleIcon) { + this.properties.ctrlTitleObj.ctrlTitleIcon = undefined; } + + // Hide the control title icon + this._artworkImageFrame.className = "NowPlaying4CtrlHidden"; + + // ... make sure the infobox is full-width + // ex: this._ctrlTitle.className = "NowPlaying4CtrlTitleFull"; + this._infoBox.className = "NowPlaying4CtrlInfoBoxFull"; + this._audioTitle.className = "NowPlaying4CtrlAudioTitleFull"; + this._detailLine1.className = "NowPlaying4CtrlDetailLine1Full"; + this._detailLine2.className = "NowPlaying4CtrlDetailLine2Full"; + this._detailLine3.className = "NowPlaying4CtrlDetailLine3Full"; + this._unformattedText.className = "NowPlaying4CtrlUnformattedText"; + } }; /* * Sets the path to the "no-artwork" image (displayed when no artwork image is available) * @param imagePath String for image path/file name */ -NowPlaying4Ctrl.prototype.setNoArtworkImagePath = function(imagePath) -{ - log.debug("setNoArtworkImagePath() called: " + imagePath); - - // Album Image - if (imagePath) - { - this.properties.noArtworkImagePath = imagePath; - } - else - { - this.properties.noArtworkImagePath = "common/images/no_artwork_icon.png"; - } - - if (!this.properties.artworkImagePath || - (this.properties.artworkImagePath == "")) - { - // Update the "no-artwork" image - this._artworkImage.src = this.properties.noArtworkImagePath; - } +NowPlaying4Ctrl.prototype.setNoArtworkImagePath = function (imagePath) { + log.debug("setNoArtworkImagePath() called: " + imagePath); + + // Album Image + if (imagePath) { + this.properties.noArtworkImagePath = imagePath; + } else { + this.properties.noArtworkImagePath = "common/images/no_artwork_icon.png"; + } + + if (!this.properties.artworkImagePath || + (this.properties.artworkImagePath == "")) { + // Update the "no-artwork" image + this._artworkImage.src = this.properties.noArtworkImagePath; + } }; // This API is a shortcut method for setting the control title icon. This appears above the @@ -1736,293 +1559,235 @@ NowPlaying4Ctrl.prototype.setNoArtworkImagePath = function(imagePath) // If the control is in a style supporting branding (e.g. "Style2", "Style4" "Style5", or "Style7"), // the image will be displayed (if it wasn't already) and the title text will be truncated to // make room for it. -NowPlaying4Ctrl.prototype.setBrandImage = function(imagePath) -{ - log.debug("setBrandImage() called: " + imagePath); - - //setting loading to false when brandImage available - this.setLoadingIcon(false); - if (imagePath) - { - // If we're in a style that allows branding, ... - if (((this.properties.ctrlStyle === "Style2") || - (this.properties.ctrlStyle === "Style4") || - (this.properties.ctrlStyle === "Style5") || - (this.properties.ctrlStyle === "Style7")) && - this.properties.ctrlTitleObj) - { - // ... save the branding image - this.properties.ctrlTitleObj.ctrlTitleIcon = imagePath; - - // If no HD configuration is in place (Style2 & Style4), ... - if (this.properties.hdConfigObj == null) - { - // ... show the control title icon - this._ctrlTitleIconImage.src = this.properties.ctrlTitleObj.ctrlTitleIcon; - this._ctrlTitleIconFrame.className = "NowPlaying4CtrlTitleIconFrame"; - - // Make sure control title is truncated - this._ctrlTitle.className = "NowPlaying4CtrlTitle"; - } - } - } - else - { - this.clearBrandImage(); +NowPlaying4Ctrl.prototype.setBrandImage = function (imagePath) { + log.debug("setBrandImage() called: " + imagePath); + + //setting loading to false when brandImage available + this.setLoadingIcon(false); + if (imagePath) { + // If we're in a style that allows branding, ... + if (((this.properties.ctrlStyle === "Style2") || + (this.properties.ctrlStyle === "Style4") || + (this.properties.ctrlStyle === "Style5") || + (this.properties.ctrlStyle === "Style7")) && + this.properties.ctrlTitleObj) { + // ... save the branding image + this.properties.ctrlTitleObj.ctrlTitleIcon = imagePath; + + // If no HD configuration is in place (Style2 & Style4), ... + if (this.properties.hdConfigObj == null) { + // ... show the control title icon + this._ctrlTitleIconImage.src = this.properties.ctrlTitleObj.ctrlTitleIcon; + this._ctrlTitleIconFrame.className = "NowPlaying4CtrlTitleIconFrame"; + + // Make sure control title is truncated + this._ctrlTitle.className = "NowPlaying4CtrlTitle"; + } } + } else { + this.clearBrandImage(); + } }; // This API is a shortcut method for clearing the control title icon. If the control is in // a style supporting branding (e.g. "Style2", "Style4" or "Style5"), the image will be hidden // and the title text will be extended over the album artwork image. -NowPlaying4Ctrl.prototype.clearBrandImage = function() -{ - log.debug("clearBrandImage() called..."); - - // Remove any current branding image (all styles) - this._ctrlTitleIconImage.src = ""; - - // If we're in a style that supports branding, ... - if ((this.properties.ctrlStyle === "Style2") || - (this.properties.ctrlStyle === "Style4") || - (this.properties.ctrlStyle === "Style5") || - (this.properties.ctrlStyle === "Style7")) - { - // ... remove any branding image configuration - if (this.properties.ctrlTitleObj && - this.properties.ctrlTitleObj.ctrlTitleIcon) - { - this.properties.ctrlTitleObj.ctrlTitleIcon = undefined; - } - - // Hide the control title icon - this._ctrlTitleIconFrame.className = "NowPlaying4CtrlHidden"; +NowPlaying4Ctrl.prototype.clearBrandImage = function () { + log.debug("clearBrandImage() called..."); + + // Remove any current branding image (all styles) + this._ctrlTitleIconImage.src = ""; + + // If we're in a style that supports branding, ... + if ((this.properties.ctrlStyle === "Style2") || + (this.properties.ctrlStyle === "Style4") || + (this.properties.ctrlStyle === "Style5") || + (this.properties.ctrlStyle === "Style7")) { + // ... remove any branding image configuration + if (this.properties.ctrlTitleObj && + this.properties.ctrlTitleObj.ctrlTitleIcon) { + this.properties.ctrlTitleObj.ctrlTitleIcon = undefined; + } - // If no HD configuration is in place, or HD isn't available (Style5), ... - if ((this.properties.hdConfigObj == null) || - (this.properties.ctrlStyle === "Style5")) - { - if((this.properties.ctrlStyle === "Style7") && (this.properties.loadingIcon == false)) - // ... make sure the control title is full-width - { - this._ctrlTitle.className = "NowPlaying4CtrlTitleFull"; - } - } + // Hide the control title icon + this._ctrlTitleIconFrame.className = "NowPlaying4CtrlHidden"; + + // If no HD configuration is in place, or HD isn't available (Style5), ... + if ((this.properties.hdConfigObj == null) || + (this.properties.ctrlStyle === "Style5")) { + if ((this.properties.ctrlStyle === "Style7") && (this.properties.loadingIcon == false)) + // ... make sure the control title is full-width + { + this._ctrlTitle.className = "NowPlaying4CtrlTitleFull"; + } } + } }; -NowPlaying4Ctrl.prototype.setCurrentTrackNum = function(currentTrackNum) -{ - log.debug("setCurrentTrackNum() called: " + currentTrackNum); +NowPlaying4Ctrl.prototype.setCurrentTrackNum = function (currentTrackNum) { + log.debug("setCurrentTrackNum() called: " + currentTrackNum); - if (currentTrackNum > 0) - { - this.properties.currentTrackNum = parseInt(currentTrackNum); - this._updateTrackDisplay(); - } - else - { - log.warn(this.uiaId + " setCurrentTrackNum() called with invalid parameter"); - } + if (currentTrackNum > 0) { + this.properties.currentTrackNum = parseInt(currentTrackNum); + this._updateTrackDisplay(); + } else { + log.warn(this.uiaId + " setCurrentTrackNum() called with invalid parameter"); + } }; -NowPlaying4Ctrl.prototype.setTrackCount = function(trackCount) -{ - log.debug("setTrackCount() called: " + trackCount); +NowPlaying4Ctrl.prototype.setTrackCount = function (trackCount) { + log.debug("setTrackCount() called: " + trackCount); - if (trackCount >= 0) - { - this.properties.trackCount = parseInt(trackCount); - this._updateTrackDisplay(); - } - else - { - log.warn(this.uiaId + " setTrackCount() called with invalid parameter"); - } + if (trackCount >= 0) { + this.properties.trackCount = parseInt(trackCount); + this._updateTrackDisplay(); + } else { + log.warn(this.uiaId + " setTrackCount() called with invalid parameter"); + } }; -NowPlaying4Ctrl.prototype.setPhoneNumber = function(phoneNum) -{ - log.debug("setPhoneNumber() called: " + phoneNum); - - if (this.properties.ctrlStyle !== "Style5") - { - this._phoneNumber.innerText = ""; - this._phoneNumber.className = "NowPlaying4CtrlHidden"; - this._phoneNumberIconFrame.className = "NowPlaying4CtrlHidden"; - log.debug("Phone number only visible in Style5"); - } - else if (phoneNum) - { - this.properties.phoneNumber = phoneNum; - this._phoneNumber.innerText = this.properties.phoneNumber; - if (this.properties.phoneNumber != "") - { - this._phoneNumber.className = "NowPlaying4CtrlPhoneNumber"; - this._phoneNumberIconFrame.className = "NowPlaying4CtrlPhoneNumberIconFrame"; - } - else - { - this._phoneNumber.className = "NowPlaying4CtrlHidden"; - this._phoneNumberIconFrame.className = "NowPlaying4CtrlHidden"; - } - } - else - { - this._phoneNumber.innerText = ""; - this._phoneNumber.className = "NowPlaying4CtrlHidden"; - this._phoneNumberIconFrame.className = "NowPlaying4CtrlHidden"; +NowPlaying4Ctrl.prototype.setPhoneNumber = function (phoneNum) { + log.debug("setPhoneNumber() called: " + phoneNum); + + if (this.properties.ctrlStyle !== "Style5") { + this._phoneNumber.innerText = ""; + this._phoneNumber.className = "NowPlaying4CtrlHidden"; + this._phoneNumberIconFrame.className = "NowPlaying4CtrlHidden"; + log.debug("Phone number only visible in Style5"); + } else if (phoneNum) { + this.properties.phoneNumber = phoneNum; + this._phoneNumber.innerText = this.properties.phoneNumber; + if (this.properties.phoneNumber != "") { + this._phoneNumber.className = "NowPlaying4CtrlPhoneNumber"; + this._phoneNumberIconFrame.className = "NowPlaying4CtrlPhoneNumberIconFrame"; + } else { + this._phoneNumber.className = "NowPlaying4CtrlHidden"; + this._phoneNumberIconFrame.className = "NowPlaying4CtrlHidden"; } + } else { + this._phoneNumber.innerText = ""; + this._phoneNumber.className = "NowPlaying4CtrlHidden"; + this._phoneNumberIconFrame.className = "NowPlaying4CtrlHidden"; + } }; -NowPlaying4Ctrl.prototype.setDistanceDirection = function(distanceDirection) -{ - log.debug("setDistanceDirection() called: " + distanceDirection); - - if (this.properties.ctrlStyle !== "Style5") - { - this._distanceDirection.innerText = ""; - this._distanceDirection.className = "NowPlaying4CtrlHidden"; - this._distanceDirectionIconFrame.className = "NowPlaying4CtrlHidden"; - log.debug("Distance/direction only visible in Style5"); - } - else if (distanceDirection) - { - this.properties.distanceDirection = distanceDirection; - this._distanceDirection.innerText = this.properties.distanceDirection; - if (this.properties.distanceDirection != "") - { - this._distanceDirection.className = "NowPlaying4CtrlDistanceDirection"; - this._distanceDirectionIconFrame.className = "NowPlaying4CtrlDistanceDirectionIconFrame"; - } - else - { - this._distanceDirection.className = "NowPlaying4CtrlHidden"; - this._distanceDirectionIconFrame.className = "NowPlaying4CtrlHidden"; - } - } - else - { - this._distanceDirection.innerText = ""; - this._distanceDirection.className = "NowPlaying4CtrlHidden"; - this._distanceDirectionIconFrame.className = "NowPlaying4CtrlHidden"; +NowPlaying4Ctrl.prototype.setDistanceDirection = function (distanceDirection) { + log.debug("setDistanceDirection() called: " + distanceDirection); + + if (this.properties.ctrlStyle !== "Style5") { + this._distanceDirection.innerText = ""; + this._distanceDirection.className = "NowPlaying4CtrlHidden"; + this._distanceDirectionIconFrame.className = "NowPlaying4CtrlHidden"; + log.debug("Distance/direction only visible in Style5"); + } else if (distanceDirection) { + this.properties.distanceDirection = distanceDirection; + this._distanceDirection.innerText = this.properties.distanceDirection; + if (this.properties.distanceDirection != "") { + this._distanceDirection.className = "NowPlaying4CtrlDistanceDirection"; + this._distanceDirectionIconFrame.className = "NowPlaying4CtrlDistanceDirectionIconFrame"; + } else { + this._distanceDirection.className = "NowPlaying4CtrlHidden"; + this._distanceDirectionIconFrame.className = "NowPlaying4CtrlHidden"; } + } else { + this._distanceDirection.innerText = ""; + this._distanceDirection.className = "NowPlaying4CtrlHidden"; + this._distanceDirectionIconFrame.className = "NowPlaying4CtrlHidden"; + } }; -NowPlaying4Ctrl.prototype.setRating = function(rating) -{ - if (rating >= 0 || rating == -1) - { - rating *= 2; - this.properties.rating = parseInt(rating) / 2; - this._updateRatingMeter(); - } - else - { - log.warn(this.uiaId + " setRating() called with invalid parameter"); - } +NowPlaying4Ctrl.prototype.setRating = function (rating) { + if (rating >= 0 || rating == -1) { + rating *= 2; + this.properties.rating = parseInt(rating) / 2; + this._updateRatingMeter(); + } else { + log.warn(this.uiaId + " setRating() called with invalid parameter"); + } }; -NowPlaying4Ctrl.prototype.setCustomRatingImg = function(imgPath) -{ +NowPlaying4Ctrl.prototype.setCustomRatingImg = function (imgPath) { - if (this.properties.ctrlStyle !== "Style5") - { - this._customRatingDiv.className = "NowPlaying4CtrlHidden"; - log.debug("Custom rating only visible in Style5"); - } - else - { - var tmpImage = new Image(); - tmpImage.src = imgPath; - this._ratingMeterFrame.className = "NowPlaying4CtrlHidden"; - this._customRatingDiv.style.backgroundImage = "url(\"" + imgPath + "\")"; - this._customRatingDiv.className = "NowPlaying4CtrlCustomRatingDiv"; - - if (tmpImage.width > this._constants.MAX_RATING_IMG_WIDTH || tmpImage.height > this._constants.MAX_RATING_IMG_HEIGHT) - { - this._customRatingDiv.style.backgroundSize = "contain"; - } - else - { - this._customRatingDiv.style.backgroundSize = ""; - } + if (this.properties.ctrlStyle !== "Style5") { + this._customRatingDiv.className = "NowPlaying4CtrlHidden"; + log.debug("Custom rating only visible in Style5"); + } else { + var tmpImage = new Image(); + tmpImage.src = imgPath; + this._ratingMeterFrame.className = "NowPlaying4CtrlHidden"; + this._customRatingDiv.style.backgroundImage = "url(\"" + imgPath + "\")"; + this._customRatingDiv.className = "NowPlaying4CtrlCustomRatingDiv"; + + if (tmpImage.width > this._constants.MAX_RATING_IMG_WIDTH || tmpImage.height > this._constants.MAX_RATING_IMG_HEIGHT) { + this._customRatingDiv.style.backgroundSize = "contain"; + } else { + this._customRatingDiv.style.backgroundSize = ""; } + } }; /* * Sets whether the control background image should be displayed * @param flag Boolean true if the background image should be displayed */ -NowPlaying4Ctrl.prototype.showBackgroundImage = function(flag) -{ - log.debug("showBackgroundImage() called: " + flag); - - if (flag) - { - this.divElt.classList.remove("NowPlaying4CtrlNoBG"); - } - else - { - this.divElt.classList.add("NowPlaying4CtrlNoBG"); - } +NowPlaying4Ctrl.prototype.showBackgroundImage = function (flag) { + log.debug("showBackgroundImage() called: " + flag); + + if (flag) { + this.divElt.classList.remove("NowPlaying4CtrlNoBG"); + } else { + this.divElt.classList.add("NowPlaying4CtrlNoBG"); + } }; -NowPlaying4Ctrl.prototype.getNowPlayingConfig = function() -{ - // extract the text from the fields and remove the unnecessary html tags - var config = { - "ctrlTitle": this._ctrlTitle, - "audioTitle": this._audioTitle, - "detailLine1": this._detailLine1, - "detailLine2": this._detailLine2, - "detailLine3": this._detailLine3, - "unformattedText" : this._unformattedText - }; - - return config; +NowPlaying4Ctrl.prototype.getNowPlayingConfig = function () { + // extract the text from the fields and remove the unnecessary html tags + var config = { + "ctrlTitle": this._ctrlTitle, + "audioTitle": this._audioTitle, + "detailLine1": this._detailLine1, + "detailLine2": this._detailLine2, + "detailLine3": this._detailLine3, + "unformattedText": this._unformattedText + }; + + return config; }; -NowPlaying4Ctrl.prototype.handleControllerEvent = function(eventId) -{ - log.debug("NowPlaying4Ctrl: handleControllerEvent() ", eventId); - // Pass-through - if (this.umpCtrl) - { - var response = this.umpCtrl.handleControllerEvent(eventId); - return response; - } +NowPlaying4Ctrl.prototype.handleControllerEvent = function (eventId) { + log.debug("NowPlaying4Ctrl: handleControllerEvent() ", eventId); + // Pass-through + if (this.umpCtrl) { + var response = this.umpCtrl.handleControllerEvent(eventId); + return response; + } }; -NowPlaying4Ctrl.prototype.getContextCapture = function() -{ - log.debug("NowPlaying4Ctrl: getContextCapture() called..."); +NowPlaying4Ctrl.prototype.getContextCapture = function () { + log.debug("NowPlaying4Ctrl: getContextCapture() called..."); - var controlContextCapture = this.umpCtrl.getContextCapture(); - return controlContextCapture; + var controlContextCapture = this.umpCtrl.getContextCapture(); + return controlContextCapture; }; -NowPlaying4Ctrl.prototype.restoreContext = function(controlContextCapture) -{ - log.debug("NowPlaying4Ctrl: restoreContext() ", controlContextCapture); +NowPlaying4Ctrl.prototype.restoreContext = function (controlContextCapture) { + log.debug("NowPlaying4Ctrl: restoreContext() ", controlContextCapture); - this.umpCtrl.restoreContext(controlContextCapture); + this.umpCtrl.restoreContext(controlContextCapture); }; -NowPlaying4Ctrl.prototype.finishPartialActivity = function() -{ - log.debug("NowPlaying4Ctrl: finishPartialActivity() called..."); +NowPlaying4Ctrl.prototype.finishPartialActivity = function () { + log.debug("NowPlaying4Ctrl: finishPartialActivity() called..."); - this.umpCtrl.finishPartialActivity(); + this.umpCtrl.finishPartialActivity(); }; -NowPlaying4Ctrl.prototype.cleanUp = function(){ - log.debug("NowPlaying4Ctrl: cleanUp() called..."); - // Now Playing currently has no cleanup - if (this.umpCtrl) - { - this.umpCtrl.cleanUp(); - } +NowPlaying4Ctrl.prototype.cleanUp = function () { + log.debug("NowPlaying4Ctrl: cleanUp() called..."); + // Now Playing currently has no cleanup + if (this.umpCtrl) { + this.umpCtrl.cleanUp(); + } }; framework.registerCtrlLoaded("NowPlaying4Ctrl"); diff --git a/app/files/tweaks/config/USBAudioMod/usbaudioApp.js b/app/files/tweaks/config/USBAudioMod/usbaudioApp.js index 1d3854d..1591a56 100644 --- a/app/files/tweaks/config/USBAudioMod/usbaudioApp.js +++ b/app/files/tweaks/config/USBAudioMod/usbaudioApp.js @@ -2735,7 +2735,7 @@ usbaudioApp.prototype._PlaybackStatusMsgHandler = function (msg) usbaudioApp.prototype._NowPlayingDataMsgHandler = function (msg) { - console.log("Inside _NowPlayingDataMsgHandler with msg : ", msg ); + log.debug("Inside _NowPlayingDataMsgHandler with msg : ", msg ); if (!this._currentContext){ log.debug('No this._currentContext !!!'); } @@ -2824,13 +2824,21 @@ usbaudioApp.prototype._ObjectInfoMsgHandler = function (msg) this._currentContextTemplate.nowPlaying4Ctrl.setDetailLine3({detailText: AIO_gracenoteText}); this._gracenoteTimeout = setTimeout(this._removeGracenote.bind(this), this._gracenoteTimeoutTime); } + else // ---MZDMOD--- setDetailLine3 to genre about 10 seconds + { + if (this._cachedSongDetails.genre) + { + this._currentContextTemplate.nowPlaying4Ctrl.setDetailLine3({detailText: this._cachedSongDetails.genre}); + this._genreTimeout = setTimeout(this._removeGenre.bind(this), 10000); + } + } } - else // ---MZDMOD--- setDetailLine3 to genre for 20 seconds + else // ---MZDMOD--- setDetailLine3 to genre about 10 seconds { if (this._cachedSongDetails.genre) { this._currentContextTemplate.nowPlaying4Ctrl.setDetailLine3({detailText: this._cachedSongDetails.genre}); - this._genreTimeout = setTimeout(this._removeGenre.bind(this), 20000); + this._genreTimeout = setTimeout(this._removeGenre.bind(this), 10000); } } } @@ -2890,7 +2898,7 @@ usbaudioApp.prototype._PlayerStateMsgHandler = function (msg) }; usbaudioApp.prototype._changePlayButton = function(nextButtonStatus) { - console.log("ENTER _changePlayButton, value:[" +nextButtonStatus+ "]"); + log.debug("ENTER _changePlayButton, value:[" +nextButtonStatus+ "]"); if (this._currentContext && this._currentContextTemplate && this._currentContext.ctxtId == "NowPlaying") { this._currentContextTemplate.nowPlaying4Ctrl.umpCtrl.setButtonState("playpause", nextButtonStatus); @@ -3188,13 +3196,16 @@ usbaudioApp.prototype._getItemsCallback = function (index, dataList, action, fro // ---MZDMOD--- // Remove the '/' character off the folder string by cutting last char var renamedItem = params.params.folder_inf.name; - if (renamedItem.length > 1) - { - renamedItem = renamedItem.slice(0,-1); - } - else if (renamedItem.length === 1) + if (renamedItem.slice(-1) === '/') { - renamedItem = ""; + if (renamedItem.length > 1) + { + renamedItem = renamedItem.slice(0,-1); + } + else if (renamedItem.length === 1) + { + renamedItem = ""; + } } if (this._currentContext && this._currentContext.ctxtId == "NowPlaying" && this._currentContextTemplate) { @@ -3446,7 +3457,10 @@ usbaudioApp.prototype._populateFolders = function (tmplt, data, dataList, index, var itemPress = "shortPressOnly"; if (items[j].type == 1 && renamedItem.length > 1) { - renamedItem = renamedItem.slice(0,-1); + if (renamedItem.slice(-1) === '/') + { + renamedItem = renamedItem.slice(0,-1); + } itemPress = "shortAndLong"; } listConfig.dataList.items[i] = { diff --git a/app/files/tweaks/config/aio-app/data_persist/dev/system_restore/restore.sh b/app/files/tweaks/config/aio-app/data_persist/dev/system_restore/restore.sh index 73df1da..f5ac7ba 100644 --- a/app/files/tweaks/config/aio-app/data_persist/dev/system_restore/restore.sh +++ b/app/files/tweaks/config/aio-app/data_persist/dev/system_restore/restore.sh @@ -1,5 +1,5 @@ #!/bin/sh -# restore.sh - MZD-AIO-TI Version 2.7.6 +# restore.sh - MZD-AIO-TI Version 2.7.8 # The Full Restore script for the AIO Tweaks app # For more information visit http://mazdatweaks.com # By Trezdog44 - Trevelopment.com @@ -8,8 +8,8 @@ hwclock --hctosys # AIO Variables -AIO_VER=0.4 -AIO_DATE=2018.01.01 +AIO_VER=0.6 +AIO_DATE=2018.01.31 # TO DELETE ALL BACKUP FILES CHENGE DEL_BAKUPS=0 TO DEL_BAKUPS=1 DEL_BAKUPS=0 @@ -170,7 +170,7 @@ then log_message "=== Original data.zip is available as backup ===" cp -a /jci/nng/data.zip.org /jci/nng/data.zip log_message "=== Renamed data.zip.org back to data.zip ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/nng/data.zip.org log_message "=== Deleted backup: data.zip.org ===" @@ -182,7 +182,7 @@ if [ -e /jci/nng/jci-linux_imx6_volans-release.org ] then mv /jci/nng/jci-linux_imx6_volans-release.org /jci/nng/jci-linux_imx6_volans-release show_message "RESTORED JCI-LINUX_IMX6_VOLANS-RELEASE BACK TO ORIGINAL" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/nng/jci-linux_imx6_volans-release.org log_message "=== Deleted backup: jci-linux_imx6_volans-release.org ===" @@ -212,7 +212,7 @@ fi # rm -f /usr/lib/gstreamer-0.10/libgstflac.so # rm -f /usr/lib/libFLAC.so.8.3.0 # rm -f /usr/lib/libFLAC.so.8 -# if [ "${DEL_BAKUPS}" = "1" ] +# if [ $DEL_BAKUPS -eq 1 ] # then # rm -f /jci/lib/libmc_user.so.org # log_message "=== Deleted backup: libmc_user.so.org ===" @@ -231,7 +231,7 @@ then rm -f /jci/gui/apps/system/js/systemApp.js.audio rm -f /jci/gui/apps/system/js/systemApp.js.disclaimer log_message "=== Removed systemApp.js.audio and systemApp.js.disclaimer flags ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/js/systemApp.js.org log_message "=== Deleted backup: systemApp.js.org ===" @@ -249,7 +249,7 @@ then log_message "============********** UNINSTALL MAIN-MENU-LOOP ... ********=============" cp -a /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js.org /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js log_message "=== Restored Original MainMenuCtrl.js From Backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/controls/MainMenu/js/MainMenuCtrl.js.org log_message "=== Deleted backup: MainMenuCtrl.js.org ===" @@ -265,7 +265,7 @@ then log_message "=========******** UNINSTALL LIST_LOOP_MOD ... *********=======" cp -a /jci/gui/common/controls/List2/js/List2Ctrl.js.org /jci/gui/common/controls/List2/js/List2Ctrl.js log_message "=== Restored List2Ctrl.js from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/List2/js/List2Ctrl.js.org log_message "=== Deleted backup: List2Ctrl.js.org ===" @@ -289,7 +289,7 @@ then fi if [ -e /jci/gui/apps/diag/js/diagApp.js.org ] || [ -e /jci/gui/apps/diag/js/diagApp.js.org2 ] then - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/diag/js/diagApp.js.org rm -f /jci/gui/apps/diag/js/diagApp.js.org2 @@ -325,7 +325,7 @@ then fi cp -a /jci/gui/common/js/Common.js.org /jci/gui/common/js/Common.js log_message "=== Common.js Restored From Backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/js/Common.js.org log_message "=== Deleted backup: Common.js.org ===" @@ -344,7 +344,7 @@ then log_message "========********** UNINSTALL BACKGROUND ROTATOR ... *******========" cp -a /jci/gui/common/css/common.css.org /jci/gui/common/css/common.css log_message "=== Restored /jci/gui/common/css/common.css from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/css/common.css.org log_message "=== Deleted backup: common.css.org ===" @@ -359,7 +359,7 @@ then log_message "=========********* UNINSTALL REMOVE MESSAGE REPLIES ... ********=========" cp -a /jci/settings/configurations/blm_msg-system.xml.org /jci/settings/configurations/blm_msg-system.xml log_message "=== Message Replies Restored From Backup blm_msg-system.xml.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/settings/configurations/blm_msg-system.xml.org log_message "=== Deleted backup: blm_msg-system.xml.org ===" @@ -375,7 +375,7 @@ then log_message "========******** UNINSTALL DISABLE BOOT ANIMATION ... ********========" cp -a /jci/resources/LoopLogo.ivf.org /jci/resources/LoopLogo.ivf log_message "=== Restored original /jci/resources/LoopLogo.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/LoopLogo.ivf.org log_message "=== Deleted backup: LoopLogo.ivf.org ===" @@ -385,7 +385,7 @@ if [ -e /jci/resources/ExitLogo.ivf.org ] then cp -a /jci/resources/ExitLogo.ivf.org /jci/resources/ExitLogo.ivf log_message "=== Restored original /jci/resources/ExitLogo.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/ExitLogo.ivf.org log_message "=== Deleted backup: ExitLogo.ivf.org ===" @@ -395,7 +395,7 @@ if [ -e /jci/resources/TranLogo.ivf.org ] then cp -a /jci/resources/TranLogo.ivf.org /jci/resources/TranLogo.ivf log_message "=== Restored original /jci/resources/TranLogo.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/TranLogo.ivf.org log_message "=== Deleted backup: TranLogo.ivf.org ===" @@ -405,7 +405,7 @@ if [ -e /jci/resources/TranLogoEnd.ivf.org ] then cp -a /jci/resources/TranLogoEnd.ivf.org /jci/resources/TranLogoEnd.ivf log_message "=== Restored original /jci/resources/TranLogoEnd.ivf ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/resources/TranLogoEnd.ivf.org log_message "=== Deleted backup: TranLogoEnd.ivf.org ===" @@ -421,7 +421,7 @@ then cp -a /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org /jci/gui/common/controls/Sbn/css/SbnCtrl.css log_message "=== Restored backup from SbnCtrl.css.org ===" rm -f /jci/gui/common/controls/Sbn/css/SbnCtrl.all.css - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/Sbn/css/SbnCtrl.css.org log_message "=== Deleted backup: SbnCtrl.css.org ===" @@ -431,7 +431,7 @@ if [ -e /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org ] then cp -a /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css log_message "=== Restored backup from StatusBarCtrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/StatusBar/css/StatusBarCtrl.css.org log_message "=== Deleted backup: StatusBarCtrl.css.org ===" @@ -447,7 +447,7 @@ then fi cp -a /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js.org /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js log_message "=== Restored backup from StatusBarCtrl.js.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/StatusBar/js/StatusBarCtrl.js.org log_message "=== Deleted backup: StatusBarCtrl.js.org ===" @@ -465,7 +465,7 @@ if [ -e /jci/gui/common/controls/StatusBar/images/StatusBarBg.png.org ] then cp -a /jci/gui/common/controls/StatusBar/images/StatusBarBg.png.org /jci/gui/common/controls/StatusBar/images/StatusBarBg.png log_message "=== Restored backup from StatusBarBg.png.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/StatusBar/images/StatusBarBg.png.org log_message "=== Deleted backup: StatusBarBg.png.org ===" @@ -475,7 +475,7 @@ if [ -e /jci/gui/framework/js/Utility.js.org ] then cp -a /jci/gui/framework/js/Utility.js.org /jci/gui/framework/js/Utility.js log_message "=== Restored backup from Utility.js.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/framework/js/Utility.js.org log_message "=== Deleted backup: Utility.js.org ===" @@ -490,7 +490,7 @@ then log_message "======********* UNINSTALL NO BUTTON BACKGROUND GRAPHICS ... ******======" cp -a /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css.org /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css log_message "=== Restored Ump3Ctrl.css from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/Ump3/css/Ump3Ctrl.css.org log_message "=== Deleted backup: Ump3Ctrl.css.org ===" @@ -524,7 +524,7 @@ then log_message "========******** UNINSTALL UI TEXT STYLE TWEAKS ... ********========" cp -a /jci/gui/common/controls/List2/css/List2Ctrl.css.org /jci/gui/common/controls/List2/css/List2Ctrl.css log_message "=== Restored backup from List2Ctrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/List2/css/List2Ctrl.css.org log_message "=== Deleted backup: List2Ctrl.css.org ===" @@ -534,7 +534,7 @@ if [ -e /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org ] then cp -a /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css log_message "=== Restored backup from NowPlaying4Ctrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/NowPlaying4/css/NowPlaying4Ctrl.css.org log_message "=== Deleted backup: NowPlaying4Ctrl.css.org ===" @@ -544,7 +544,7 @@ if [ -e /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org ] then cp -a /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css log_message "=== Restored backup from MainMenuCtrl.css.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/controls/MainMenu/css/MainMenuCtrl.css.org log_message "=== Deleted backup: MainMenuCtrl.css.org ===" @@ -559,7 +559,7 @@ then log_message "========********* UNINSTALL FUEL CONSUMPTION TWEAK ... *********========" cp -a /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css.org /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css log_message "=== Restored original FuelConsumptionCtrl.css from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/ecoenergy/controls/FuelConsumption/css/FuelConsumptionCtrl.css.org log_message "=== Deleted backup: FuelConsumptionCtrl.css.org ===" @@ -569,7 +569,7 @@ if [ -e /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png.o then cp -a /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png.org /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png log_message "=== Restored original FuelConsumptionCtrl.png from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/ecoenergy/controls/FuelConsumption/images/FuelConsBG.png.org log_message "=== Deleted backup: FuelConsBG.png.org ===" @@ -579,7 +579,7 @@ if [ -e /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl. then cp -a /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js.org /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js log_message "=== Restored original FuelConsBG.png from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/ecoenergy/controls/FuelConsumption/js/FuelConsumptionCtrl.js.org log_message "=== Deleted backup: FuelConsumptionCtrl.js.org ===" @@ -594,7 +594,7 @@ then log_message "========******* UNINSTALL OFF SCREEN BACKGROUND IMAGE ... *******========" cp -a /jci/gui/apps/system/controls/OffScreen/images/OffScreenBackground.png.org /jci/gui/apps/system/controls/OffScreen/images/OffScreenBackground.png log_message "=== Reverting From Backup OffScreenBackground.png.org ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/system/controls/OffScreen/images/OffScreenBackground.png.org log_message "=== Deleted backup: OffScreenBackground.png.org ===" @@ -608,7 +608,7 @@ then log_message "==========************ UNINSTALL USB AUDIO MOD ... ************==========" cp -a /jci/gui/apps/usbaudio/js/usbaudioApp.js.org /jci/gui/apps/usbaudio/js/usbaudioApp.js log_message "=== /jci/gui/apps/usbaudio/js/usbaudioApp.js Restored from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/apps/usbaudio/js/usbaudioApp.js.org log_message "=== Deleted backup: usbaudioApp.js.org ===" @@ -618,7 +618,7 @@ if [ -e /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org ] then cp -a /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js log_message "=== Restored NowPlaying4Ctrl.js from backup ===" - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/gui/common/controls/NowPlaying4/js/NowPlaying4Ctrl.js.org log_message "=== Deleted backup: NowPlaying4Ctrl.js.org ===" @@ -712,7 +712,7 @@ if [ -e /jci/scripts/jci-fw.sh.org ] then log_message "=== Restoring /jci/scripts/jci-fw.sh ===" cp -a /jci/scripts/jci-fw.sh.org /jci/scripts/jci-fw.sh - if [ "${DEL_BAKUPS}" = "1" ] + if [ $DEL_BAKUPS -eq 1 ] then rm -f /jci/scripts/jci-fw.sh.org log_message "=== Deleted backup: jci-fw.sh.org ===" @@ -725,24 +725,119 @@ log_message "=======***** END UNINSTALLATION OF ANDROID AUTO HEADUNIT APP ****= log_message " " # restore safety warning from reverse camera -show_message "RESTORE SAFETY WARNING FROM REVERSE CAMERA ..." -log_message "===***** UNINSTALL REMOVE SAFETY WARNING FROM REVERSE CAMERA ... *****===" +#show_message "RESTORE SAFETY WARNING FROM REVERSE CAMERA ..." +#log_message "===***** UNINSTALL REMOVE SAFETY WARNING FROM REVERSE CAMERA ... *****===" # Copy reverse camera safety warning images -cp -a ${MYDIR}/config_org/safety-warning-reverse-camera/jci/nativegui/images/*.png /jci/nativegui/images/ -log_message "=== Reverse Camera Safety Warning Restored ===" +#cp -a ${MYDIR}/config_org/safety-warning-reverse-camera/jci/nativegui/images/*.png /jci/nativegui/images/ +#log_message "=== Reverse Camera Safety Warning Restored ===" -log_message "===*** END UNINSTALLATION OF REMOVE REVERSE CAMERA SAFETY WARNING ***===" -log_message " " +#log_message "===*** END UNINSTALLATION OF REMOVE REVERSE CAMERA SAFETY WARNING ***===" +#log_message " " -log_message " " -cp -a "${MYDIR}/config_org/blank-album-art-frame/jci/gui/common/controls/InCall2/images/NowPlayingImageFrame.png" /jci/gui/common/controls/InCall2/images -cp -a "${MYDIR}/config_org/blank-album-art-frame/jci/gui/common/controls/NowPlaying4/images/NowPlayingImageFrame.png" /jci/gui/common/controls/NowPlaying4/images -cp -a "${MYDIR}/config_org/blank-album-art-frame/jci/gui/common/images/no_artwork_icon.png" /jci/gui/common/images +#log_message " " +#cp -a "${MYDIR}/config_org/blank-album-art-frame/jci/gui/common/controls/InCall2/images/NowPlayingImageFrame.png" /jci/gui/common/controls/InCall2/images +#cp -a "${MYDIR}/config_org/blank-album-art-frame/jci/gui/common/controls/NowPlaying4/images/NowPlayingImageFrame.png" /jci/gui/common/controls/NowPlaying4/images +#cp -a "${MYDIR}/config_org/blank-album-art-frame/jci/gui/common/images/no_artwork_icon.png" /jci/gui/common/images cp -a "${MYDIR}/config_org/background.png" /jci/gui/common/images log_message "============******** RESTORED ORIGINAL BACKGROUND ***********============" log_message " " +# uninstall CASDK +if [ -e /jci/casdk/casdk.aio ] +then + show_message "===****** UNINSTALLING CASDK ******===" + log_message "==========************ BEGIN UNINSTALLING CASDK ************===========" + log_message " " + + # mount resources + mount -o rw,remount /tmp/mnt/resources + + # kill all watch processes + log_message "- Removing watch processes" + pkill -f watch + pkill -f 'watch -n 1' + pkill -f 'watch -n 60' + pkill -f 'watch -n 300' + pkill -f 'mzd-casdk.start' + + # reset storage + if [ -e /tmp/mnt/data_persist/storage ] + then + log_message "- Removing storage folder" + rm -rf /tmp/mnt/data_persist/storage + fi + if [ -e /jci/opera/opera_home/pstorage/psindex.dat ] + then + if [ -f /jci/opera/opera_home/pstorage/psindex.dat.org ] + then + log_message "- Removing local storage settings" + cp -a /jci/opera/opera_home/pstorage/psindex.dat.org /jci/opera/opera_home/pstorage/psindex.dat + rm /jci/opera/opera_home/pstorage/psindex.dat.org + else + log_message "- Removing local storage settings and pstorage" + rm -rf /jci/opera/opera_home/pstorage + fi + fi + + # remove data reader files + if [ -e /jci/casdk ] + then + log_message "- Removing data script folder /jci/casdk" + rm /jci/casdk/* + rmdir --ignore-fail-on-non-empty /jci/casdk + else + log_message "- CASDK Data script folder '/jci/casdk' not found" + fi + + # remove initialization file + if grep -q "# CASDK" /jci/scripts/stage_wifi.sh + then + log_message "- Removing staging scripts" + # echo '#!/bin/sh' > /jci/scripts/stage_wifi.sh + sed -i '/# CASDK/d' /jci/scripts/stage_wifi.sh + sed -i '/casdk/d' /jci/scripts/stage_wifi.sh + sed -i '/################/d' /jci/scripts/stage_wifi.sh + sed -i '/# one time/d' /jci/scripts/stage_wifi.sh + sed -i '/# 1s update/d' /jci/scripts/stage_wifi.sh + sed -i '/# 60s update/d' /jci/scripts/stage_wifi.sh + sed -i '/# 300s update/d' /jci/scripts/stage_wifi.sh + sed -i '/mzd-casdk.start/d' /jci/scripts/stage_wifi.sh + else + log_message "- No staging scripts fouund in /jci/scripts/stage_wifi.sh" + fi + + # remove proxy + if [ -f /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js ] + then + log_message "- Removing proxys & startups" + rm -f /jci/opera/opera_dir/userjs/CustomApplicationsProxy.js + rm -f /jci/opera/opera_dir/userjs/nativeApps.js + fi + + if [ -f /jci/opera/opera_dir/userjs/additionalApps.js.org ] + then + log_message "- Restoring additionalApps.js" + mv /jci/opera/opera_dir/userjs/additionalApps.js.org /jci/opera/opera_dir/userjs/additionalApps.js + fi + + # delete custom + if [ -e /jci/gui/apps/custom ] + then + log_message "- Removing custom application folder" + rm -rf /jci/gui/apps/custom||true + else + log_message "- Custom application folder does not exist" + fi + + if [ -e /tmp/mnt/resources/aio ] + then + log_message "- Removing custom runtime & apps" + rm -rf /resources/aio/mzd-casdk||true + else + log_message "- CASDK runtime & apps do not exist" + fi +fi sleep 2 log_message "************************ DELETING RESTORE FILES *************************" rm -fr /tmp/mnt/data_persist/dev/system_restore diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/css/_aiotweaksApp.css b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/css/_aiotweaksApp.css index d3e80c4..3fd917a 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/css/_aiotweaksApp.css +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/css/_aiotweaksApp.css @@ -1,75 +1,60 @@ -.showBg * { - visibility: hidden; +.showBg * { + visibility: hidden; } .showBg div#CommonBgImg1 { - visibility: visible; + visibility: visible; } body.ellipse .MainMenuCtrlEllipse { - background-image: none!important; + background-image: none !important; } /* Remove Button Backgrounds */ -body.no-btn-bg .Ump3CtrlBgArch, -body.no-btn-bg .Ump3CtrlBackground, -body.no-btn-bg .Ump3CtrlSeparator { - background:none!important; + +body.no-btn-bg .Ump3CtrlBgArch, body.no-btn-bg .Ump3CtrlBackground, body.no-btn-bg .Ump3CtrlSeparator { + background: none !important; } /* CSS For Bigger Album Art */ -body.bgrAlbmArt .NowPlaying4CtrlTitle, -body.bgrAlbmArt .NowPlaying4CtrlTitleFull { + +body.bgrAlbmArt .NowPlaying4CtrlTitle, body.bgrAlbmArt .NowPlaying4CtrlTitleFull { top: 0px; left: 14px; - width: 720px; + width: 720px; } body.bgrAlbmArt .NowPlaying4CtrlArtworkImageDiv { - top: 61px!important; - left: 580px!important; - width: 210px!important; - height: 210px!important; + top: 61px !important; + left: 580px !important; + width: 210px !important; + height: 210px !important; } body.bgrAlbmArt .NowPlaying4CtrlArtworkImage { - width: 210px!important; - max-width: 210px!important; - height: 210px!important; - max-height: 210px!important; + width: 210px !important; + max-width: 210px !important; + height: 210px !important; + max-height: 210px !important; } body.bgrAlbmArt .NowPlaying4CtrlArtworkImageBorder { - width: 210px!important; - height: 210px!important; + width: 210px !important; + height: 210px !important; } -body.bgrAlbmArt .NowPlaying4CtrlInfoBox, -body.bgrAlbmArt .NowPlaying4CtrlInfoBoxFull { +body.bgrAlbmArt .NowPlaying4CtrlInfoBox, body.bgrAlbmArt .NowPlaying4CtrlInfoBoxFull { top: 61px; left: 14px; - width: 780px; -} -body.bgrAlbmArt .NowPlaying4CtrlAudioTitle, -body.bgrAlbmArt .NowPlaying4CtrlAudioTitleStyle3, -body.bgrAlbmArt .NowPlaying4CtrlAudioTitleBlock, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine1Block, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine1, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine2, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine3 { - width: 550px; -} -body.bgrAlbmArt .NowPlaying4CtrlAudioTitleBlockFrame, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine1BlockFrame, -body.bgrAlbmArt .NowPlaying4CtrlAudioTitleStyle3Full, -body.bgrAlbmArt .NowPlaying4CtrlAudioTitleFull, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine1Full, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine2Full, -body.bgrAlbmArt .NowPlaying4CtrlDetailLine3Full { - width: 740px; + width: 780px; +} +body.bgrAlbmArt .NowPlaying4CtrlAudioTitle, body.bgrAlbmArt .NowPlaying4CtrlAudioTitleStyle3, body.bgrAlbmArt .NowPlaying4CtrlAudioTitleBlock, body.bgrAlbmArt .NowPlaying4CtrlDetailLine1Block, body.bgrAlbmArt .NowPlaying4CtrlDetailLine1, body.bgrAlbmArt .NowPlaying4CtrlDetailLine2, body.bgrAlbmArt .NowPlaying4CtrlDetailLine3 { + width: 550px; +} +body.bgrAlbmArt .NowPlaying4CtrlAudioTitleBlockFrame, body.bgrAlbmArt .NowPlaying4CtrlDetailLine1BlockFrame, body.bgrAlbmArt .NowPlaying4CtrlAudioTitleStyle3Full, body.bgrAlbmArt .NowPlaying4CtrlAudioTitleFull, body.bgrAlbmArt .NowPlaying4CtrlDetailLine1Full, body.bgrAlbmArt .NowPlaying4CtrlDetailLine2Full, body.bgrAlbmArt .NowPlaying4CtrlDetailLine3Full { + width: 740px; } - body.txtShadow { text-shadow: 2px 2px .5px #000; } body.hideSbn .SbnCtrl { - background-image: none; - font-size: 30px; + background-image: none; + font-size: 30px; } body.hideStatus .StatusBarCtrl { - background-image: none; + background-image: none; } body.star1 .MainMenuCtrlComDiv { top: 30px; @@ -108,13 +93,12 @@ body.star1 .MainMenuCtrlSetHighlight { top: 40px; } body.star1 .MainMenuCtrlIconName { - top:345px; + top: 345px; } body.star1 .MainMenuCtrl { overflow: visible; } -body.star1 .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus, -body.star1 .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { +body.star1 .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus, body.star1 .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { -o-transform: scale(1.2, 1.2) translate(0px, -20px); transform: scale(1.2, 1.2) translate(0px, -20px); } @@ -167,12 +151,12 @@ body.star2 .MainMenuCtrlSetHighlight { top: -110px; } body.star2 .MainMenuCtrlIconName { - top:5px; + top: 5px; } body.star2 .MainMenuCtrl { overflow: visible; } -body.star2 .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus{ +body.star2 .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus { -o-transform: scale(1.2, 1.2) translate(-20px, 20px); transform: scale(1.2, 1.2) translate(-20px, 20px); } @@ -197,6 +181,7 @@ body.star2 .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { transform: scale(1.2, 1.2) translate(0px, -10px); } /* Alternate Layout Large Star */ + body.star3 .MainMenuCtrlComDiv { top: 30px; } @@ -260,105 +245,91 @@ body.star3 .MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { transform: scale(1.2, 1.2) translate(25px, -50px); } /* Alternate Layout Flatline */ + body.star4 .MainMenuCtrlComDiv { -top: 280px; + top: 280px; } body.star4 .MainMenuCtrlEntDiv { -top: 280px; -left:160px; + top: 280px; + left: 160px; } body.star4 .MainMenuCtrlNavDiv { -top: 280px; -left: 500px + top: 280px; + left: 500px } body.star4 .MainMenuCtrlAppDiv { -left: 15px; -top: 295px; -transform: scale(1.25, 1.25); + left: 15px; + top: 295px; + transform: scale(1.25, 1.25); } body.star4 .MainMenuCtrlSetDiv { -top: 295px; -left: 670px; -transform: scale(1.25, 1.25); + top: 295px; + left: 670px; + transform: scale(1.25, 1.25); } body.star4 .MainMenuCtrlAppHighlight { -top: 80px; -left: -110px; + top: 80px; + left: -110px; } body.star4 .MainMenuCtrlComHighlight { -top: 70px; + top: 70px; } body.star4 .MainMenuCtrlNavHighlight { -top: 75px; -left: 390px; + top: 75px; + left: 390px; } body.star4 .MainMenuCtrlEntHighlight { -top: 75px; -left: 50px; + top: 75px; + left: 50px; } body.star4 .MainMenuCtrlSetHighlight { -left: 550px; -top: 80px; + left: 550px; + top: 80px; } body.star4 .MainMenuCtrlIconName { -top:5px; + top: 5px; } body.star4 .MainMenuCtrl { -overflow: visible; + overflow: visible; } -body.star4 .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus{ --o-transform: scale(1.4, 1.4) translate(0px, -50px); -transform: scale(1.4, 1.4) translate(0px, -50px); +body.star4 .MainMenuCtrlSetDiv.MainMenuCtrlCoinFocus { + -o-transform: scale(1.4, 1.4) translate(0px, -50px); + transform: scale(1.4, 1.4) translate(0px, -50px); } body.star4 .MainMenuCtrlAppDiv.MainMenuCtrlCoinFocus { --o-transform: scale(1.4, 1.4) translate(0px, -50px); -transform: scale(1.4, 1.4) translate(0px, -50px); + -o-transform: scale(1.4, 1.4) translate(0px, -50px); + transform: scale(1.4, 1.4) translate(0px, -50px); } body.star4 .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { --o-transform: scale(1.2, 1.2) translate(0px, -50px); -transform: scale(1.2, 1.2) translate(0px, -50px); + -o-transform: scale(1.2, 1.2) translate(0px, -50px); + transform: scale(1.2, 1.2) translate(0px, -50px); } body.star4 .MainMenuCtrlEntDiv.MainMenuCtrlCoinFocus { --o-transform: scale(1.2, 1.2) translate(0px, -50px); -transform: scale(1.2, 1.2) translate(0px, -50px); + -o-transform: scale(1.2, 1.2) translate(0px, -50px); + transform: scale(1.2, 1.2) translate(0px, -50px); } body.star4 .MainMenuCtrlNavDiv.MainMenuCtrlCoinFocus { --o-transform: scale(1.2, 1.2) translate(0px, -50px); -transform: scale(1.2, 1.2) translate(0px, -50px); + -o-transform: scale(1.2, 1.2) translate(0px, -50px); + transform: scale(1.2, 1.2) translate(0px, -50px); } body.star4 .MainMenuCtrlComDiv.MainMenuCtrlCoinFocus { --o-transform: scale(1.2, 1.2) translate(0px, -60px); -transform: scale(1.2, 1.2) translate(0px, -60px); + -o-transform: scale(1.2, 1.2) translate(0px, -60px); + transform: scale(1.2, 1.2) translate(0px, -60px); } /* Small Main Menu Coins */ -body.minicoins .MainMenuCtrlAppDiv, -body.minicoins .MainMenuCtrlNavDiv, -body.minicoins .MainMenuCtrlComDiv, -body.minicoins .MainMenuCtrlSetDiv, -body.minicoins .MainMenuCtrlEntDiv { + +body.minicoins .MainMenuCtrlAppDiv, body.minicoins .MainMenuCtrlNavDiv, body.minicoins .MainMenuCtrlComDiv, body.minicoins .MainMenuCtrlSetDiv, body.minicoins .MainMenuCtrlEntDiv { -o-transform: scale(.5, .5); transform: scale(.5, .5); } - /* 3D MAIN MENU TEXT! */ + body.label3d .MainMenuCtrlIconName.Visible { - text-shadow: 0 1px 0 #ccc, - 0 2px 0 #c9c9c9, - 0 3px 0 #bbb, - 0 4px 0 #b9b9b9, - 0 5px 0 #aaa, - 0 6px 1px rgba(0,0,0,.1), - 0 0 5px rgba(0,0,0,.1), - 0 1px 3px rgba(0,0,0,.3), - 0 3px 5px rgba(0,0,0,.2), - 0 5px 10px rgba(0,0,0,.25), - 0 10px 10px rgba(0,0,0,.2), - 0 20px 20px rgba(0,0,0,.15)!important; + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, .1), 0 0 5px rgba(0, 0, 0, .1), 0 1px 3px rgba(0, 0, 0, .3), 0 3px 5px rgba(0, 0, 0, .2), 0 5px 10px rgba(0, 0, 0, .25), 0 10px 10px rgba(0, 0, 0, .2), 0 20px 20px rgba(0, 0, 0, .15) !important; } body.hidelabel .MainMenuCtrlIconName.Visible { - display:none; + display: none; } -body.hideMusicBg .NowPlaying4Ctrl, -body.hideListBg .List2Ctrl { - background:none!important; +body.hideMusicBg .NowPlaying4Ctrl, body.hideListBg .List2Ctrl { + background: none !important; } diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/AIO-startup.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/AIO-startup.js index 9f097a9..cd661e6 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/AIO-startup.js +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/AIO-startup.js @@ -1,11 +1,11 @@ -function applyTweaks(){ +function applyTweaks() { var head = document.querySelector("head"); var body = document.getElementsByTagName("body")[0]; if (!window.jQuery) { utility.loadScript("addon-common/jquery.min.js"); } var tweaks = localStorage.getItem("aio.tweaks") || ""; - if(tweaks.length > 0) { + if (tweaks.length > 0) { var AIOcss = document.createElement("link"); AIOcss.href = "apps/_aiotweaks/css/_aiotweaksApp.css"; AIOcss.rel = "stylesheet"; @@ -18,3 +18,10 @@ function applyTweaks(){ framework.transitionsObj._genObj._TEMPLATE_CATEGORIES_TABLE.AIOTweaksTmplt = "Detail with UMP"; applyTweaks(); +/* ** Attempt to start speedometer app on boot ** + ** Works in the emulator but not in the car ** * / +setTimeout(function(){ + framework.sendEventToMmui("system","SelectApplications"); + setTimeout(function(){aioMagicRoute("_speedometer","Start");}, 4000); +}, 30000); +*/ diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/_aiotweaksApp.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/_aiotweaksApp.js index aacf983..8243989 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/_aiotweaksApp.js +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/_aiotweaksApp.js @@ -8,16 +8,14 @@ Copyright 2017 Trez /* jshint -W117 */ log.addSrcFile("_aiotweaksApp.js", "_aiotweaks"); -function _aiotweaksApp(uiaId) -{ - log.debug("Constructor called."); +function _aiotweaksApp(uiaId) { + log.debug("Constructor called."); - // Base application functionality is provided in a common location via this call to baseApp.init(). - // See framework/js/BaseApp.js for details. - baseApp.init(this, uiaId); + // Base application functionality is provided in a common location via this call to baseApp.init(). + // See framework/js/BaseApp.js for details. + baseApp.init(this, uiaId); } - /********************************* * App Init is standard function * * called by framework * @@ -27,31 +25,29 @@ function _aiotweaksApp(uiaId) * Called just after the app is instantiated by framework. * All variables local to this app should be declared in this function */ -_aiotweaksApp.prototype.appInit = function() -{ - log.debug("_aiotweaksApp appInit called..."); +_aiotweaksApp.prototype.appInit = function () { + log.debug("_aiotweaksApp appInit called..."); - //Context table - //@formatter:off - this._contextTable = { - "Start": { // initial context must be called "Start" - "sbName": "AIO Tweaks", - "template": "AIOTweaksTmplt", - "templatePath": "apps/_aiotweaks/templates/AIOTweaks", //only needed for app-specific templates - "readyFunction": this._StartContextReady.bind(this), - "contextOutFunction" : this._StartContextOut.bind(this) - } // end of "AIOTweaks" - }; // end of this.contextTable object - //@formatter:on + //Context table + //@formatter:off + this._contextTable = { + "Start": { // initial context must be called "Start" + "sbName": "AIO Tweaks", + "template": "AIOTweaksTmplt", + "templatePath": "apps/_aiotweaks/templates/AIOTweaks", //only needed for app-specific templates + "readyFunction": this._StartContextReady.bind(this), + "contextOutFunction": this._StartContextOut.bind(this) + } // end of "AIOTweaks" + }; // end of this.contextTable object + //@formatter:on - //@formatter:off - this._messageTable = - { - //Speed Handlers - "Global.AtSpeed" : this._AtSpeedMsgHandler.bind(this), - "Global.NoSpeed" : this._NoSpeedMsgHandler.bind(this), - "TimedSbn_CurrentSong": this._TimedSbn_CurrentSongMsgHandler.bind(this) - }; + //@formatter:off + this._messageTable = { + //Speed Handlers + "Global.AtSpeed": this._AtSpeedMsgHandler.bind(this), + "Global.NoSpeed": this._NoSpeedMsgHandler.bind(this), + "TimedSbn_CurrentSong": this._TimedSbn_CurrentSongMsgHandler.bind(this) + }; }; /** @@ -67,23 +63,21 @@ _aiotweaksApp.prototype._NoSpeedMsgHandler = function (msg) { } // from usbaudioApp - test to see if this works _aiotweaksApp.prototype._TimedSbn_CurrentSongMsgHandler = function (msg) { - framework.common.startTimedSbn(this.uiaId, 'TimedSbn_UsbAudio_CurrentSong', 'typeE', { - sbnStyle : 'Style02', - imagePath1 : 'IcnSbnEnt.png', - text1 : "USB", - text2 : msg.params.payload.title, - }); + framework.common.startTimedSbn(this.uiaId, 'TimedSbn_UsbAudio_CurrentSong', 'typeE', { + sbnStyle: 'Style02', + imagePath1: 'IcnSbnEnt.png', + text1: "USB", + text2: msg.params.payload.title, + }); }; -_aiotweaksApp.prototype._StartContextReady = function () -{ +_aiotweaksApp.prototype._StartContextReady = function () { framework.common.setSbDomainIcon("apps/_aiotweaks/app.png"); }; -_aiotweaksApp.prototype._StartContextOut = function () -{ +_aiotweaksApp.prototype._StartContextOut = function () { var currTwks = document.getElementsByTagName("body")[0].className; - if(currTwks.length > 0) { - localStorage.setItem("aio.tweaks",currTwks); + if (currTwks.length > 0) { + localStorage.setItem("aio.tweaks", currTwks); } }; /** diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/aio.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/aio.js index c937cab..5dd986e 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/aio.js +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/aio.js @@ -1,6 +1,11 @@ +#!/usr/bin/env node + +// A test for NodeJS var fs = require('fs'); -function fsTest(){ - var contents = fs.readFileSync('/jci/gui/apps/_aiotweaks/test.txt').toString(); - console.log(contents); +function fsTest() { + var contents = fs.readFileSync('/jci/gui/apps/_aiotweaks/test.txt').toString(); + console.log(contents); } + +fsTest(); diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/backgrounds.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/backgrounds.js index e1a1313..fe3e2b4 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/backgrounds.js +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/backgrounds.js @@ -3,9 +3,9 @@ var fs = require('fs'); var apps = ''; fs.readdir(testFolder, (err, files) => { - if(err){console.error(err)} + if (err) { console.error(err) } files.forEach(file => { - apps += file + ' '; + apps += file + ' '; }); console.log(apps); }) diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/mzd.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/mzd.js index 2bb2e19..7a2a18c 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/mzd.js +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/mzd.js @@ -1,23 +1,21 @@ // ***************************** -// ** AIO Tweaks App v0.4a - mzd.js +// ** AIO Tweaks App v0.6 - mzd.js // ** All the functions for Buttons in AIO Tweaks App // ** By Trezdog44 // ***************************** /* jshint -W117 */ - +var aioTweaksVer = 0; var AArunning = false; var appListData = []; + //var wsAIO = null; //var aioWsVideo = null; //var AIOvideo = false; -$(document).ready(function(){ - try - { +$(document).ready(function () { + try { $("#SbSpeedo").fadeOut(); //framework.sendEventToMmui("common", "SelectBTAudio"); - } - catch(err) - { + } catch (err) { } // ***************************** @@ -25,74 +23,92 @@ $(document).ready(function(){ // ***************************** // AIO info getAppListData(); - $('button').on('click',function(){$('button').removeClass('selectedItem');$(this).addClass('selectedItem')}); - $("#aioInfo").on("click",function(){showAioInfo("

    AIO Tweaks App v0.4a

    This is an experimental app by Trezdog44 made to test the capabilities, functionalities, and limitations of apps in the MZD Infotainment System.
    This app has some useful and fun functions although it is not guaranteed that everything works. There may be non-functioning or experimental features.
    ");}); - $("#aioReboot").on("click",myRebootSystem); + $('button').on('click', function () { + $('button').removeClass('selectedItem'); + $(this).addClass('selectedItem') + }); + $("#aioInfo").on("click", function () { showAioInfo("

    AIO Tweaks App v" + aioTweaksVer + "

    This is an experimental app by Trezdog44 made to test the capabilities, functionalities, and limitations of apps in the MZD Infotainment System.
    This app has some useful and fun functions although it is not guaranteed that everything works. There may be non-functioning or experimental features.
    "); }); + $("#aioReboot").on("click", myRebootSystem); //$("#mainMenuLoop").on("click",setMainMenuLoop); - $("#test").on("click",myTest); - $("#touchscreenBtn").on("click",enableTouchscreen); - $("#touchscreenOffBtn").on("click",disableTouchscreen); - $("#touchscreenCompassBtn").on("click",enableCompass); - $("#adbBtn").on("click",adbDevices); - $("#messageTestBtn").on("click",messageTest); + $("#test").on("click", myTest); + $("#touchscreenBtn").on("click", enableTouchscreen); + $("#touchscreenOffBtn").on("click", disableTouchscreen); + $("#touchscreenCompassBtn").on("click", enableCompass); + $("#adbBtn").on("click", adbDevices); + $("#messageTestBtn").on("click", messageTest); //$("#screenshotBtn").on("click",takeScreenshot); //$("#saveScreenshotBtn").on("click",saveScreenshot); - $("#AAstart").on("click",startHeadunit); - $("#AAstop").on("click",stopHeadunit); - $("#CSstart").on("click",startCastScreen); - $("#CSstop").on("click",stopCastScreen); + $("#AAstart").on("click", startHeadunit); + $("#AAstop").on("click", stopHeadunit); + $("#CSstart").on("click", startCastScreen); + $("#CSstop").on("click", stopCastScreen); //$("#SPstart").on("click",startSpeedometer); //$("#SPstop").on("click",stopSpeedometer); //$("#chooseBg").on("click",chooseBackground); - $("#systemTab").on("click",settingsSystemTab); - $("#wifiSettings").on("click",wifiSettings); + $("#systemTab").on("click", settingsSystemTab); + $("#wifiSettings").on("click", wifiSettings); //$("#runTweaksBtn").on("click",playAllVideos); - $("#fullRestoreConfirmBtn").on("click",fullSystemRestoreConfirm); - $("#headunitLogBtn").on("click",showHeadunitLog); - $("#scrollUpBtn").on("click",scrollUp); - $("#scrollDownBtn").on("click",scrollDown); - $("#appListBtn").on("click",showAppList); - $("#showEnvBtn").on("click",showEnvVar); - $("#closeAioInfo").on("click",closeAioInfo); - $("#showDFHBtn").on("click",showDFH); - $("#showPSBtn").on("click",showPS); - $("#showMeminfoBtn").on("click",showMeminfo); - $("#toggleWifiAPBtn").on("click",toggleWifiAP); - $("#stopFirewallBtn").on("click",stopFirewall); - $("#displayOffBtn").on("click",displayOff); - $("#mountSwapBtn").on("click",mountSwap); - $("#unmountSwapBtn").on("click",unmountSwap); - $("#createSwapBtn").on("click",showVehicleType); - $("#backupCamBtn").on("click",showBodyClassName); - $("#errLogBtn").on("click",showErrLog); - $("#showBgBtn").on("click",function(){$("html").addClass("showBg")}); - $("#twkOut").on("click",function(){framework.sendEventToMmui("common", "Global.IntentHome")}); - $("#usba").on("click",function(){framework.sendEventToMmui("system", "SelectUSBA")}); - $("#usbb").on("click",function(){framework.sendEventToMmui("system", "SelectUSBB")}); - $("#pauseBtn").on("click",function(){localStorage.clear();}); + $("#fullRestoreConfirmBtn").on("click", fullSystemRestoreConfirm); + $("#headunitLogBtn").on("click", showHeadunitLog); + $("#scrollUpBtn").on("click", scrollUp); + $("#scrollDownBtn").on("click", scrollDown); + $("#appListBtn").on("click", showAppList); + $("#showEnvBtn").on("click", showEnvVar); + $("#closeAioInfo").on("click", closeAioInfo); + $("#showDFHBtn").on("click", showDFH); + $("#showPSBtn").on("click", showPS); + $("#showMeminfoBtn").on("click", showMeminfo); + $("#toggleWifiAPBtn").on("click", toggleWifiAP); + $("#stopFirewallBtn").on("click", stopFirewall); + $("#displayOffBtn").on("click", displayOff); + $("#mountSwapBtn").on("click", mountSwap); + $("#unmountSwapBtn").on("click", unmountSwap); + $("#createSwapBtn").on("click", showVehicleType); + $("#backupCamBtn").on("click", showBodyClassName); + $("#errLogBtn").on("click", showErrLog); + $("#runTerminalBtn").on("click", TerminalConfirm); + $("#runCheckIPBtn").on("click", chooseBackground); + $("#reverseAppListBtn").on("click", reverseApplicationList); + $("#shiftEntListBtn").on("click", shiftEntertainmentList); + $("#devModeSecretBtn").on("click", toggleDevMode); + $("#showBgBtn").on("click", function () { $("html").addClass("showBg") }); + $("#twkOut").on("click", function () { framework.sendEventToMmui("common", "Global.IntentHome") }); + $("#usba").on("click", function () { framework.sendEventToMmui("system", "SelectUSBA") }); + $("#usbb").on("click", function () { framework.sendEventToMmui("system", "SelectUSBB") }); + $("#pauseBtn").on("click", function () { localStorage.clear(); }); //$("#previousTrackBtn").on("click",function(){framework.sendEventToMmui("common", "Global.PreviousHoldStop")}); //$("#nextTrackBtn").on("click",function(){framework.sendEventToMmui("common", "Global.NextHoldStop")}); - $("#BluetoothAudio").on("click",function(){framework.sendEventToMmui("system", "SelectBTAudio")}); - $("#previousTrackBtn").on("click",function(){framework.sendEventToMmui("Common", "Global.Previous")}); - $("#nextTrackBtn").on("click",function(){framework.sendEventToMmui("Common", "Global.Next")}); - $(".mmLayout").on("click",function(){changeLayout($(this).attr("id"));$("#MainMenuMsg").html($(this).text());}); - $(".toggleTweaks").on("click",function(){$("body").toggleClass($(this).attr("id"));$("#MainMenuMsg").html($(this).text());}); - $("#clearTweaksBtn").on("click",function(){$("body").attr("class","");$("#MainMenuMsg").text("Main Menu Restored");localStorage.removeItem("aio.tweaks");}); + $("#BluetoothAudio").on("click", function () { framework.sendEventToMmui("system", "SelectBTAudio") }); + $("#previousTrackBtn").on("click", function () { framework.sendEventToMmui("Common", "Global.Previous") }); + $("#nextTrackBtn").on("click", function () { framework.sendEventToMmui("Common", "Global.Next") }); + $(".mmLayout").on("click", function () { + changeLayout($(this).attr("id")); + $("#MainMenuMsg").html($(this).text()); + }); + $(".toggleTweaks").on("click", function () { + $("body").toggleClass($(this).attr("id")); + $("#MainMenuMsg").html($(this).text()); + }); + $("#clearTweaksBtn").on("click", function () { + $("body").attr("class", ""); + $("#MainMenuMsg").text("Main Menu Restored"); + localStorage.removeItem("aio.tweaks"); + }); //$("#touchscreenToggle").on("click",toggleTSPanel); - $("#closeTouchPanel").on("click",closeTSPanel); + $("#closeTouchPanel").on("click", closeTSPanel); // Tab select & localStrage save on each button press - $(".toggleTweaks").on("click",saveTweaks); - $(".tablinks").on("click",function(){ + $(".toggleTweaks").on("click", saveTweaks); + $(".tablinks").on("click", function () { $("#MainMenuMsg").html(""); localStorage.setItem("aio.prevtab", JSON.stringify($(this).attr("id"))); }); - $("#openNav").on("click",function(){ + $("#openNav").on("click", function () { document.getElementById("mySidenav").style.width = "250px"; document.getElementById("main").style.marginLeft = "250px"; }); - $("#closeNav").on("click",function(){ + $("#closeNav").on("click", function () { document.getElementById("mySidenav").style.width = "0"; - document.getElementById("main").style.marginLeft= "0"; + document.getElementById("main").style.marginLeft = "0"; }); /*if (typeof(Storage) !== "undefined") { console.log("localStorage Supported: " + JSON.stringify(localStorage)); @@ -103,21 +119,23 @@ $(document).ready(function(){ // ***************************** // ** Button Functions GO! // ***************************** -function saveTweaks () { +function saveTweaks() { var body = document.getElementsByTagName("body")[0]; - localStorage.setItem("aio.tweaks",body.className); + localStorage.setItem("aio.tweaks", body.className); aioWs("sync && echo DONE"); } -function changeLayout (newlayout) { - for(i=1 ; i<6; i++) { - $("body").removeClass("star"+i); + +function changeLayout(newlayout) { + for (i = 1; i < 6; i++) { + $("body").removeClass("star" + i); } $("body").addClass(newlayout); saveTweaks(); } -function getAppListData(){ + +function getAppListData() { try { - $.getJSON( "../opera/opera_dir/userjs/additionalApps.json", function(data) { + $.getJSON("../opera/opera_dir/userjs/additionalApps.json", function (data) { appListData = data; hasAA(); hasCS(); @@ -135,113 +153,163 @@ function setMainMenuLoop() { MainMenuCtrl.prototype._offsetFocus = this._MainMenuLoop; $('#MainMenuMsg').text('Main Menu Loop'); } -_MainMenuLoop = function(direction) -{ +_MainMenuLoop = function (direction) { var index = this._getFocus(); index += direction; - if (index < 0) - { + if (index < 0) { index = 4; } - if (index > 4) - { + if (index > 4) { index = 0; } - if (index !== this._getFocus()) - { + if (index !== this._getFocus()) { this._setFocus(index); this._setHighlight(index); } } -function showEnvVar(){ + +function shiftEntertainmentList() { + var entList = framework.getAppInstance('system')._masterEntertainmentDataList.items; + var shiftItem = entList.shift(); + entList.push(shiftItem); +} + +function shiftApplicationList() { + var appList = framework.getAppInstance('system')._masterApplicationDataList.items; + var shiftItem = appList.shift(); + appList.push(shiftItem); +} + +function reverseEntertainmentList() { + framework.getAppInstance('system')._masterEntertainmentDataList.items.reverse(); + showAioInfo("Reversed Entertainment List"); +} + +function reverseApplicationList() { + framework.getAppInstance('system')._masterApplicationDataList.items.reverse(); + showAioInfo("Reversed application List"); +} + +function toggleDevMode() { + $('.devTools').toggle(); +} + +function showEnvVar() { showAioInfo("$ env"); aioWs('env', 3); } -function takeScreenshot(){ + +function takeScreenshot() { showAioInfo('Screenshot in 10 Seconds'); - setTimeout(function(){ + setTimeout(function () { closeAioInfo(true); showSaveScreenshotBtn(); }, 10000); } -function showSaveScreenshotBtn(){ + +function showSaveScreenshotBtn() { aioWs('/bin/sh /jci/gui/apps/_aiotweaks/sh/screenshot.sh && echo "DONE"', 1); $('#saveScreenshotBtn').show(); } -function saveScreenshot(){ + +function saveScreenshot() { $('#AioInfoPanel').show(); var msg = '/jci/tools/jci-dialog --info --title="SCREENSHOT SAVED TO SD CARD" --text="NOT REALLY\\n I WILL DO THAT LATER" & '; msg += 'sleep 2; '; msg += 'killall jci-dialog; '; msg += "/bin/sh /jci/gui/apps/_aiotweaks/sh/screenshot.sh TrezShot "; msg += "\n"; - $('#AioInformation').css({'background':'url(/tmp/root/wayland-screenshot.png?'+Date.now()+')','background-size':'100% 100%','background-position':'center'}); + $('#AioInformation').css({ 'background': 'url(/tmp/root/wayland-screenshot.png?' + Date.now() + ')', 'background-size': '100% 100%', 'background-position': 'center' }); aioWs(msg, 0); } -function showAioInfo(message,append){ - $('#aaTitle, #csTitle').css({'outline':'none'}); + +function showAioInfo(message, append) { + $('#aaTitle, #csTitle').css({ 'outline': 'none' }); $('#AioInfoPanel').addClass('opened'); message += '
    '; - if(!append) { + if (!append) { $('#AioInformation').html(message); } else { $('#AioInformation').append(message); } - if($('#AioInformation').height() === 360){ + if ($('#AioInformation').height() === 360) { $('#AioInfoPanel').addClass('scrollers'); } } -function AAInfo(message){ - $('#aaTitle, #csTitle').css({'outline':'none'}); + +function AAInfo(message) { + $('#aaTitle, #csTitle').css({ 'outline': 'none' }); $('#AioInformation').prepend(message + '
    '); $('#AioInfoPanel').addClass('opened'); - if($('#AioInformation').height() === 360){ + if ($('#AioInformation').height() === 360) { $('#AioInfoPanel').addClass('scrollers'); } } -function closeAioInfo(erase){ - $('#aaTitle, #csTitle').css({'outline':''}); + +function closeAioInfo(erase) { + $('#aaTitle, #csTitle').css({ 'outline': '' }); $('#AioInfoPanel').removeClass('opened scrollers'); } -function toggleTSPanel(){ + +function toggleTSPanel() { $("#touchscreenPanel").toggle(); } -function closeTSPanel(){ + +function closeTSPanel() { $("#Opt").click(); } -function adbDevices(){ + +function adbDevices() { showAioInfo("$ adb devices -l"); aioWs('adb devices -l', 1); } -function myTest(){ - framework.common.startTimedSbn(this.uiaId, "SbnAIOTest", "typeE", {sbnStyle : "Style02",imagePath1 : 'apps/_aiotweaks/panda.png', text1 : this.uiaId, text2: "Pandas are coming for you!!"}); + +function TerminalConfirm() { + showAioInfo('
    FOR ADVANCED USERS ONLYD
    TO USE THE TERMINAL CONNECT A USB KEYBOAR
    RUNNING THE TERMINAL DISABLES THE MULTICONTROLLER REBOOT TO RE-ENABLE MULTICONTROLLER FUNCTION

    MAKE SURE YOUR USB KEYBOARD IS CONNECTED!!!

    THIS TERMINAL HAS FULL ROOT ACCESS, DO NOT TYPE A COMMAND UNLESS YOU KNOW WHAT IT DOES!!!
    '); +} + +function RunTerminal() { + aioWs('/jci/scripts/run-terminal.sh', 0); +} + +function RunCheckIP() { + aioWs('ifconfig wlan0 | grep \'inet addr\' | cut -d: -f2 | awk \'{print $1}\'', 0); +} + +function myTest() { + framework.common.startTimedSbn(this.uiaId, "SbnAIOTest", "typeE", { sbnStyle: "Style02", imagePath1: 'apps/_aiotweaks/panda.png', text1: this.uiaId, text2: "Pandas are coming for you!!" }); //aioWs('node -e "console.log(\'Test\')"', 1); } -function chooseBackground(){ + +function chooseBackground() { //aioWs('node -e "var fs = require("fs"); var contents = fs.readFileSync("apps/_aiotweaks/test.txt").toString(); console.log(contents);"', 0); //aioWs('node -v', 3); } -function myRebootSystem(){ + +function myRebootSystem() { showAioInfo("$ reboot"); aioWs('reboot', 0); //reboot } -function fullSystemRestoreConfirm(){ + +function fullSystemRestoreConfirm() { showAioInfo('
    ARE YOU SURE?

    THIS WILL REMOVE ALL AIO TWEAKS AND APPS *INCLUDING THIS ONE*
    But it will not restore default color theme files

    '); } -function fullSystemRestore(){ + +function fullSystemRestore() { aioWs('/bin/sh /tmp/mnt/data_persist/dev/system_restore/restore.sh', 2); // Run Full Restore Script } /*function backUpCam(){ utility.setRequiredSurfaces("NATGUI_SURFACE", true); aioWs('/bin/sh /jci/backupcam/start_cam.sh', 2); }*/ -function toggleWifiAP(){ +function toggleWifiAP() { showAioInfo("$ start_wifi.sh && jci-wifiap.sh start"); aioWs('/bin/sh /jci/scripts/start_wifi.sh; /bin/sh /jci/scripts/jci-wifiap.sh start && echo DONE ', 5); } -function stopFirewall(){ + +function stopFirewall() { showAioInfo("$ jci-fw.sh stop"); aioWs('/bin/sh /jci/scripts/jci-fw.sh stop && echo "DONE" || echo "FAILBOAT" ', 1); } @@ -249,109 +317,119 @@ function stopFirewall(){ var msg = '/jci/gui/apps/_aiotweaks/sh/message.sh "MESSAGES DISPLAY SUCCESS!!
    THIS IS A P.O.C. FOR DISPAYING JCI-DIALOG
    MESSAGES USING WEBSOCKETS AND JAVASCRIPT"'; aioWs(msg, 0); }*/ -function hasAA(){ +function hasAA() { var AA = false; - $.each(appListData, function( key, val ) { - if(val.name === "_androidauto") { + $.each(appListData, function (key, val) { + if (val.name === "_androidauto") { AA = true; } }); - (AA) ? null : AioFileCheck('AIO_FC_NOAA'); + (AA) ? null: AioFileCheck('AIO_FC_NOAA'); } + function hasSwap() { aioWs('if [ -e /tmp/mnt/sd*1/swapfile ]; then echo AIO_FC_SWAP; else echo AIO_FC_NOSWAP; fi '); } + function hasCS() { aioWs('if [ -e /jci/scripts/cs_receiver_arm ]; then echo AIO_FC_CS; else echo AIO_FC_NOCS; fi '); } + function hasErrLog() { aioWs('if [ -e /tmp/root/casdk-error.log ]; then echo AIO_FC_ERR; else echo AIO_FC_NOERR; fi '); } + function AioFileCheck(fc) { var FC = fc.substr(fc.lastIndexOf("_")); switch (FC) { - case "_NOAA": - $('#aaTitle, .aaFunc').remove(); - $('#csTitle').addClass('centered'); - break; - case "_": - break; + case "_NOAA": $('#aaTitle, .aaFunc').remove(); $('#csTitle').addClass('centered'); break; - case "_CS": - appListData.push({"name":"cs","label":"CastScreen Receiver"}); + case "_CS": + appListData.push({ "name": "cs", "label": "CastScreen Receiver" }); break; - case "_NOCS": + case "_NOCS": $('#csTitle, .csFunc').remove(); $('#aaTitle').addClass('centered'); break; - case "_SWAP": + case "_SWAP": //$('#mountSwapBtn').html('Mount Swapfile').show(); //$('#createSwapBtn').off('click').on('click',deleteSwap).html('Delete Swapfile'); + $('#mountSwapBtn').show(); + $('#unmountSwapBtn').show(); break; - case "_NOSWAP": + case "_NOSWAP": $('#mountSwapBtn').remove(); $('#unmountSwapBtn').remove(); //$('#mountSwapBtn').html('').hide(); //$('#createSwapBtn').off('click').on('click',createSwap).html('Create Swapfile'); break; - case "_ERR": + case "_ERR": $('#errLogBtn').show(); break; - case "_NOERR": + case "_NOERR": $('#errLogBtn').remove(); break; - default: + default: showAioInfo('INVALID FILE CHECK: ' + fc); } } -function showVehicleType(){ - var vehicleType = framework.getSharedData("syssettings","VehicleType"); + +function showVehicleType() { + var vehicleType = framework.getSharedData("syssettings", "VehicleType"); var hud = framework.getSharedData("vehsettings", "HudInstalled"); var IgnitionStatus = framework.getSharedData("vehsettings", "IgnitionStatus"); var CANStatus = framework.getSharedData("vehsettings", "CanStatus"); - var vehicleConfig = framework.getSharedData("syssettings","VehicleConfigData"); - var email = framework.getSharedData('email',"emailSupported"); - var destination = framework.getSharedData("syssettings", "DestinationCode") ; - var steeringWheelType = framework.getSharedData("vehsettings","SteeringWheelLoc"); + var vehicleConfig = framework.getSharedData("syssettings", "VehicleConfigData"); + var email = framework.getSharedData('email', "emailSupported"); + var destination = framework.getSharedData("syssettings", "DestinationCode"); + var steeringWheelType = framework.getSharedData("vehsettings", "SteeringWheelLoc"); var toolTipsEnabled = framework.getSharedData("syssettings", "ToolTips"); showAioInfo("Vehicle Type: " + vehicleType + "
    HUD: " + hud + "
    Ignition Status: " + IgnitionStatus + "
    CAN Status: " + CANStatus + "
    Vehicle Configuration Data: " + vehicleConfig + "
    Email Support: " + email + "
    Destination: " + destination + "
    Steering Wheel Type: " + steeringWheelType + "
    Tool Tips Enabled: " + toolTipsEnabled); } -function showAppList(){ + +function showAppList() { var items = []; - $.each(appListData, function( key, val ) { - items.push( "
  • " + val.label + "
  • " ); + $.each(appListData, function (key, val) { + items.push("
  • " + val.label + "
  • "); }); showAioInfo('Installed AIO Apps'); - $( "
      ", { + $("
        ", { "class": "my-new-list", - html: items.join( "" ) - }).appendTo( "#AioInformation" ); + html: items.join("") + }).appendTo("#AioInformation"); } -function enableTouchscreen(){ + +function enableTouchscreen() { aioWs('/jci/scripts/set_speed_restriction_config.sh disable; /jci/scripts/set_lvds_speed_restriction_config.sh disable ', 2); //enabe trouchscreen and menu items } -function disableTouchscreen(){ + +function disableTouchscreen() { aioWs('/jci/scripts/set_speed_restriction_config.sh enable; /jci/scripts/set_lvds_speed_restriction_config.sh enable ', 2); //disable trouchscreen while driving } -function enableCompass(){ + +function enableCompass() { aioWs('/jci/scripts/set_speed_restriction_config.sh enable; /jci/scripts/set_lvds_speed_restriction_config.sh disable ', 2); //enabe trouchscreen & Compas } -function startHeadunit(){ + +function startHeadunit() { AArunning = true; showAioInfo("$ /tmp/mnt/data_persist/dev/bin/headunit-wrapper &"); aioWs('/tmp/mnt/data_persist/dev/bin/headunit-wrapper 2>&1 & ', 30); } -function stopHeadunit(){ + +function stopHeadunit() { showAioInfo("$ killall headunit"); aioWs('killall headunit 2>&1', 0); } -function startCastScreen(){ + +function startCastScreen() { showAioInfo("$ cd /jci/scripts && ./cs_receiver_arm mfw_v4lsink"); aioWs('cd /jci/scripts; killall cs_receiver_arm; sleep 1; ./cs_receiver_arm mfw_v4lsink 2>&1', 5); } -function stopCastScreen(){ + +function stopCastScreen() { showAioInfo("$ killall cs_receiver_arm"); aioWs('killall cs_receiver_arm 2>&1', 0); } @@ -365,79 +443,97 @@ function stopSpeedometer(){ $("#SbSpeedo").remove(); aioWs('pkill speedometer.sh', 1); }*/ -function settingsSystemTab(){ - framework.sendEventToMmui("common", "Global.IntentSettingsTab",{payload:{settingsTab:"System"}}); +function settingsSystemTab() { + framework.sendEventToMmui("common", "Global.IntentSettingsTab", { payload: { settingsTab: "System" } }); } -function wifiSettings(){ + +function wifiSettings() { //framework.sendEventToMmui("netmgmt", "SelectNetworkOptions"); - framework.sendEventToMmui("common", "Global.IntentSettingsTab",{payload:{settingsTab:"Devices"}}); + framework.sendEventToMmui("common", "Global.IntentSettingsTab", { payload: { settingsTab: "Devices" } }); framework.sendEventToMmui("syssettings", "SelectNetworkManagement"); } + function messageTest() { aioWs('/bin/sh /jci/gui/apps/_aiotweaks/sh/message.sh'); } -function showVersion(){ + +function showVersion() { showAioInfo("$ show_version.sh"); aioWs('show_version.sh', 1); } -function displayOff(){ - framework.sendEventToMmui("common", "Global.IntentSettingsTab",{payload:{settingsTab:"Display"}}); + +function displayOff() { + if (framework.getAppInstance('syssettings') === undefined) { + framework.sendEventToMmui("common", "Global.IntentSettingsTab", { payload: { settingsTab: "Display" } }); + } framework.sendEventToMmui("syssettings", "SelectDisplayOff"); - //framework.sendEventToMmui("system", "DisplayOffGUIActivity"); + //} else { + // framework.sendEventToMmui("system", "DisplayOffGUIActivity"); + //} } -function showHeadunitLog(){ + +function showHeadunitLog() { showFile('/tmp/mnt/data/headunit.log'); } -function showErrLog(){ + +function showErrLog() { showFile('/tmp/root/casdk-error.log'); } -function showFile (filepath) { + +function showFile(filepath) { showAioInfo("Loading " + filepath + " ..."); $.ajax({ - url : filepath, - dataType: "text", - success : function (data) { - $("#AioInformation").html(data); - }, - error : function(e){ - showAioInfo("ERROR: " + e); - } - }); -} -function showBodyClassName(){ + url: filepath, + dataType: "text", + success: function (data) { + $("#AioInformation").html(data); + }, + error: function (e) { + showAioInfo("ERROR: " + e); + } + }); +} + +function showBodyClassName() { //showAioInfo("Body className:
        " + document.getElementsByTagName("body")[0].className + "

        localStorage.getItem(\"aiotweaks\"):
        " + JSON.parse(localStorage.getItem("aiotweaks"))); str = JSON.stringify(localStorage); str = str.replace(/,/g, '
        '); showAioInfo("
        " + str + "
        "); } -function showDFH(){ + +function showDFH() { showAioInfo("$ df -h"); aioWs('df -h 2>&1', 2); } -function showMeminfo(){ + +function showMeminfo() { showAioInfo("$ cat /proc/swaps"); aioWs('cat /proc/swaps && echo "$ cat /proc/meminfo" && cat /proc/meminfo && echo DONE 2>&1', 3); } -function showPS(){ + +function showPS() { showAioInfo("$ ps"); aioWs('ps', 2); } -function scrollUp(){ - $('#AioInformation').animate({scrollTop: '-=300px'}, 100); +function scrollUp() { + $('#AioInformation').animate({ scrollTop: '-=300px' }, 100); } -function scrollDown(){ - $('#AioInformation').animate({scrollTop: '+=300px'}, 100); + +function scrollDown() { + $('#AioInformation').animate({ scrollTop: '+=300px' }, 100); } -function mountSwap(){ + +function mountSwap() { showAioInfo('$ swapon ${SWAPFILE}
        '); aioWs('sh /jci/gui/apps/_aiotweaks/sh/resource_swap.sh 2>&1 && echo DONE'); $("#mountSwapBtn").fadeOut(5000); } -function unmountSwap(){ - showAioInfo('$ swapoff -a
        '); - aioWs('swapoff -a 2>&1'); +function unmountSwap() { + showAioInfo('$ swapoff -a /tmp/mnt/sd*/swapfile
        '); + aioWs('sh /jci/gui/apps/_aiotweaks/sh/resource_swap.sh unmount 2>&1 && echo DONE'); + $("#unmountSwapBtn").fadeOut(5000); } /* function createSwap() { @@ -452,6 +548,7 @@ function deleteSwap() { //aioWs('sh /jci/gui/apps/_aiotweaks/sh/deleteSwap.sh'); hasSwap(false); } + */ /* ****************** function globalPause(){ // only works with CASDK @@ -471,56 +568,55 @@ framework.sendEventToMmui("usbaudio", "SelectSongs"); // these functions would a ************* */ /* websocket ============================================================================================= */ -function aioWs(action, waitMessage){ +function aioWs(action, waitMessage) { var msgnum = -1; var ws = new WebSocket('ws://127.0.0.1:9997/'); var focusBtn = $('button.selectedItem'); - ws.onmessage = function(event){ + ws.onmessage = function (event) { var res = event.data; //console.log(res); - if(res.indexOf('AIO_FC_') !== -1) { + if (res.indexOf('AIO_FC_') !== -1) { AioFileCheck(res); ws.close(); return; - } else if(res.indexOf('DONE') === -1) { - focusBtn.css({'background':'-o-linear-gradient(top,rgba(255,0,0,0),rgba(255,0,000,1))'}); - if(AArunning) { + } else if (res.indexOf('DONE') === -1) { + focusBtn.css({ 'background': '-o-linear-gradient(top,rgba(255,0,0,0),rgba(255,0,000,1))' }); + if (AArunning) { AAInfo(res); } else { showAioInfo(res, true); } } msgnum++; - if(msgnum > waitMessage || res.indexOf('DONE') !== -1) { - focusBtn.css({'background':'-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,1))','color':'#fff'}); - setTimeout(function(){ + if (msgnum > waitMessage || res.indexOf('DONE') !== -1) { + focusBtn.css({ 'background': '-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,1))', 'color': '#fff' }); + setTimeout(function () { if (ws !== null) { ws.close(); - ws=null; + ws = null; } AArunning = false; - $('button').css({'background':''}); - },4000); + $('button').css({ 'background': '' }); + }, 4000); } }; - ws.onopen = function(){ + ws.onopen = function () { ws.send(action); - focusBtn.css({'background':'-o-linear-gradient(top,rgba(255,255,255,.5),rgba(255,255,255,1))','color':'#000'}); + focusBtn.css({ 'background': '-o-linear-gradient(top,rgba(255,255,255,.5),rgba(255,255,255,1))', 'color': '#000' }); //console.info(action); - if (waitMessage < 1) - { - setTimeout(function(){ + if (waitMessage < 1) { + setTimeout(function () { if (ws !== null) { ws.close(); - ws=null; + ws = null; } - },4000); + }, 4000); } }; - ws.onclose = function(){ - $('button').css({'background':'','color':''}); + ws.onclose = function () { + $('button').css({ 'background': '', 'color': '' }); }; } /*function nodeWs(action, waitMessage){ diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/save.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/save.js new file mode 100644 index 0000000..4a7ff65 --- /dev/null +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/js/save.js @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +var fs = require('fs'); + +function fsTest() { + var contents = fs.readFileSync('/jci/gui/apps/_aiotweaks/test.txt').toString(); + console.log(contents); +} diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/sh/resource_swap.sh b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/sh/resource_swap.sh index 5c463de..d6d44de 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/sh/resource_swap.sh +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/sh/resource_swap.sh @@ -11,8 +11,8 @@ show_message() CMD="$1" shift - -if [ "$CMD" = "" ] || ["$CMD" = "mount" ] ; then +echo $CMD +if [ "$CMD" == "" ] || [ "$CMD" == "mount" ] ; then USBDRV="resources $(ls /mnt | grep sd)" for USB in ${USBDRV} do @@ -30,7 +30,7 @@ if [ "$CMD" = "" ] || ["$CMD" = "mount" ] ; then exit 0 fi -if ["$CMD" = "unmount" ] ; then +if [ "$CMD" == "unmount" ] ; then USBDRV="resources $(ls /mnt | grep sd)" for USB in ${USBDRV} do diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/css/AIOTweaksTmplt.css b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/css/AIOTweaksTmplt.css index c7934b7..3b23775 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/css/AIOTweaksTmplt.css +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/css/AIOTweaksTmplt.css @@ -9,17 +9,17 @@ overflow: hidden; border: 1px solid #ccc; background-color: #f1f1f1; - box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)!important; + box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19) !important; } - /* Float the list items side by side */ + .AIOTweaksTmplt ul.tab li { width: 33%; height: 50px; float: left; } - /* Style the links inside the list items */ + .AIOTweaksTmplt ul.tab li a { display: inline-block; color: black; @@ -32,13 +32,13 @@ width: 100%; font-weight: bold; } - /* Change background color of links on hover */ + .AIOTweaksTmplt ul.tab li a:hover { background-color: #ddd; } - /* Create an active/current tablink class */ + .AIOTweaksTmplt ul.tab li a:focus, .active-tab { background-color: #009090; } @@ -46,6 +46,7 @@ height: 350px; } /* Style the tab content */ + .AIOTweaksTmplt .tabcontent { display: none; padding: 6px 12px; @@ -61,37 +62,43 @@ text-shadow: none; font-weight: bold; font-size: 20px; - border:none; - outline:0; - padding:6px 10px; + border: none; + outline: 0; + padding: 6px 10px; margin: 3px; - vertical-align:middle; - overflow:hidden; - color:#fff; - background-color:#000; - white-space:nowrap; - box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); -} -.AIOTweaksTmplt button.fullRestoreBtn { + vertical-align: middle; + overflow: hidden; + color: #fff; + background-color: #000; + white-space: nowrap; + box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} +.AIOTweaksTmplt button.confirmKeyboardBtn, .AIOTweaksTmplt button.confirmTerminalBtn, .AIOTweaksTmplt button.fullRestoreBtn { background: #6b1a28; border-radius: 6px; - padding: 3px!important; - text-shadow: 0px 4px 3px rgba(0,0,0,0.4),0px 8px 13px rgba(0,0,0,0.2),0px 18px 23px rgba(0,0,0,0.2); + padding: 3px !important; + text-shadow: 0px 4px 3px rgba(0, 0, 0, 0.4), 0px 8px 13px rgba(0, 0, 0, 0.2), 0px 18px 23px rgba(0, 0, 0, 0.2); } -.AIOTweaksTmplt #errLogBtn, -.AIOTweaksTmplt .tablinks { +.AIOTweaksTmplt #errLogBtn, .AIOTweaksTmplt .tablinks { text-shadow: none; } - .AIOTweaksTmplt .tabcontent button:focus { background: blue; /*border: 2px dotted #fff;*/ border-radius: 5px; - box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); +} +.animate-zoom { + animation: animatezoom 0.6s +} +@keyframes animatezoom { + from { + transform: scale(0) + } + to { + transform: scale(1) + } } -.animate-zoom {animation:animatezoom 0.6s} -@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} - .AIOTweaksTmplt .sidenav { height: 100%; width: 0; @@ -105,7 +112,6 @@ padding-top: 60px; margin-top: 59px; } - .AIOTweaksTmplt .sidenav a { padding: 8px 8px 8px 32px; text-decoration: none; @@ -114,11 +120,9 @@ display: block; transition: 0.3s } - -.AIOTweaksTmplt .sidenav a:hover, .offcanvas a:focus{ +.AIOTweaksTmplt .sidenav a:hover, .offcanvas a:focus { color: #f1f1f1; } - .AIOTweaksTmplt .sidenav .closebtn { position: absolute; top: 0; @@ -126,16 +130,17 @@ font-size: 36px; margin-left: 50px; } - .AIOTweaksTmplt #AIO-Main { transition: margin-left .5s; } .AIOTweaksTmplt #StatusBar_ButtonCtrl1.hidden { - display: none!important; + display: none !important; +} +.AIOTweaksTmplt .sidenav { + padding-top: 15px; } -@media screen and (max-height: 450px) { - .AIOTweaksTmplt .sidenav {padding-top: 15px;} - .AIOTweaksTmplt .sidenav a {font-size: 18px;} +.AIOTweaksTmplt .sidenav a { + font-size: 18px; } .AIOTweaksTmplt #Options { columns: 2; @@ -143,19 +148,18 @@ .AIOTweaksTmplt #MainMenu { columns: 3; } -.AIOTweaksTmplt .audioSources{ - width:150px; - margin-bottom:20px; +.AIOTweaksTmplt .audioSources { + width: 150px; + margin-bottom: 20px; } -.AIOTweaksTmplt .audioCtrls{ - float:left; - width:125px; +.AIOTweaksTmplt .audioCtrls { + float: left; + width: 125px; } [id*="TrackBtn"] { width: 180px; } -.AIOTweaksTmplt #aaTitle, -.AIOTweaksTmplt #csTitle { +.AIOTweaksTmplt #aaTitle, .AIOTweaksTmplt #csTitle { position: absolute; bottom: 15px; padding: 5px; @@ -167,16 +171,15 @@ outline: 6px dashed #fff; } .AIOTweaksTmplt #csTitle { - left:410px; + left: 410px; } -.AIOTweaksTmplt .aaFunc, -.AIOTweaksTmplt .csFunc { +.AIOTweaksTmplt .aaFunc, .AIOTweaksTmplt .csFunc { position: absolute; bottom: 20px; width: 150px; } .AIOTweaksTmplt .spFunc { - width:150px; + width: 150px; margin: -10px 40px; } .AIOTweaksTmplt button#AAstart { @@ -191,22 +194,19 @@ .AIOTweaksTmplt button#CSstop { left: 600px; } -.AIOTweaksTmplt .fnStop{ +.AIOTweaksTmplt .fnStop { background: #ff0000; } .AIOTweaksTmplt .fnStart { background: green; } -.AIOTweaksTmplt .fnStart:focus, -.AIOTweaksTmplt .fnStart:active { +.AIOTweaksTmplt .fnStart:focus, .AIOTweaksTmplt .fnStart:active { background: #001680; } -.AIOTweaksTmplt .fnStop:focus, -.AIOTweaksTmplt .fnStop:active { +.AIOTweaksTmplt .fnStop:focus, .AIOTweaksTmplt .fnStop:active { background: #670092; } -.AIOTweaksTmplt #csTitle.centered, -.AIOTweaksTmplt #aaTitle.centered { +.AIOTweaksTmplt #csTitle.centered, .AIOTweaksTmplt #aaTitle.centered { margin: auto; left: 0; right: 0; @@ -225,10 +225,7 @@ width: 240px; text-overflow: ellipsis; } -.AIOTweaksTmplt button#showPSBtn, -.AIOTweaksTmplt button#hideMusicBg, -.AIOTweaksTmplt button#hideSbn, -.AIOTweaksTmplt button#noBgBtn { +.AIOTweaksTmplt button#showPSBtn, .AIOTweaksTmplt button#hideMusicBg, .AIOTweaksTmplt button#hideSbn, .AIOTweaksTmplt button#noBgBtn { font-size: 1rem; } .AIOTweaksTmplt #touchscreenPanel { @@ -269,7 +266,7 @@ background: #000; max-height: 360px; min-height: 96px; - overflow-y:auto; + overflow-y: auto; text-align: left; white-space: pre; } @@ -281,23 +278,21 @@ padding: 0; display: none; } -.AIOTweaksTmplt #AioInfoPanel.opened, -.AIOTweaksTmplt #AioInfoPanel.opened.scrollers ~ .AIO-scroller { - display:block; +.AIOTweaksTmplt #AioInfoPanel.opened, .AIOTweaksTmplt #AioInfoPanel.opened.scrollers~.AIO-scroller { + display: block; } .AIOTweaksTmplt #AioInfoPanel .infoMessage { text-align: center; white-space: normal; font-size: 24px; } -.AIOTweaksTmplt #scrollUpBtn{ +.AIOTweaksTmplt #scrollUpBtn { top: 200px; } -.AIOTweaksTmplt #scrollDownBtn{ +.AIOTweaksTmplt #scrollDownBtn { top: 260px; } -.AIOTweaksTmplt #closeAioInfo, -.AIOTweaksTmplt #closeTouchPanel { +.AIOTweaksTmplt #closeAioInfo, .AIOTweaksTmplt #closeTouchPanel { position: absolute; top: 0; right: 0; @@ -312,13 +307,13 @@ z-index: 9998; line-height: 0; } -.AIOTweaksTmplt #closeTouchPanel.selectedItem{ - opacity:0.8; +.AIOTweaksTmplt #closeTouchPanel.selectedItem { + opacity: 0.8; border-color: #ff0000; color: #fff; } .AIOTweaksTmplt .Touch { - z-index:9999; + z-index: 9999; } .AIOTweaksTmplt #MainMenuMsg { background: #000; @@ -327,6 +322,9 @@ margin: auto; } .AIOTweaksTmplt button.selectedItem { - background: -o-linear-gradient(top,rgba(0,0,0,0.5),rgba(0,0,255,1)); - background: -webkit-linear-gradient(top,rgba(0,0,0,0.5),rgba(0,0,255,1)); + background: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 255, 1)); + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 255, 1)); +} +.AIOTweaksTmplt .devTools { + display: none; } diff --git a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/js/AIOTweaksTmplt.js b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/js/AIOTweaksTmplt.js index d23bdab..3a7df18 100644 --- a/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/js/AIOTweaksTmplt.js +++ b/app/files/tweaks/config/aio-app/jci/gui/apps/_aiotweaks/templates/AIOTweaks/js/AIOTweaksTmplt.js @@ -9,15 +9,15 @@ __________________________________________________________________________ log.addSrcFile("AIOTweaksTmplt.js", "AIOTweaks"); /* -* ========================= -* Constructor -* ========================= -*/ + * ========================= + * Constructor + * ========================= + */ var selectedItem = 0; var currTab = ''; var maxButtons = 13; -function AIOTweaksTmplt(uiaId, parentDiv, templateID, controlProperties) -{ + +function AIOTweaksTmplt(uiaId, parentDiv, templateID, controlProperties) { this.divElt = null; this.templateName = "AIOTweaksTmplt"; @@ -28,11 +28,11 @@ function AIOTweaksTmplt(uiaId, parentDiv, templateID, controlProperties) //@formatter:off //set the template properties this.properties = { - "statusBarVisible" : true, - "leftButtonVisible" : false, - "rightChromeVisible" : false, - "hasActivePanel" : true, - "isDialog" : false + "statusBarVisible": true, + "leftButtonVisible": false, + "rightChromeVisible": false, + "hasActivePanel": true, + "isDialog": false }; //@formatter:on @@ -45,17 +45,17 @@ function AIOTweaksTmplt(uiaId, parentDiv, templateID, controlProperties) // Build The Environment this.divElt.innerHTML = '' + - ''+ - '
        '+ - '
        '+ - '
        '+ - '
        '+ - '
        '; + '
      • Apps
      • ' + + '
      • Tweaks
      • ' + + '
      • Options
      • ' + + '
      ' + + '' + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + '
      '; function AIOTabs(tab, tabLink) { $(".tablinks").removeClass("active-tab"); @@ -63,7 +63,7 @@ function AIOTweaksTmplt(uiaId, parentDiv, templateID, controlProperties) $("button").removeClass("selectedItem"); maxButtons = $(tab + " a").length - 2; $(tab).show(); - (selectedItem < maxButtons) ? $(tab + " button").eq(selectedItem).addClass("selectedItem") : selectedItem = 0; + (selectedItem < maxButtons) ? $(tab + " button").eq(selectedItem).addClass("selectedItem"): selectedItem = 0; $(tabLink).addClass("active-tab"); currTab = tab; } @@ -85,7 +85,7 @@ function AIOTweaksTmplt(uiaId, parentDiv, templateID, controlProperties) $("