Texas Instruments matrix-gui-2.0 hacking -- index.php
<?php
/*
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
?> <?php
# Check if json.txt file needs to be generated
# 判断json.txt是否存在
# 这个文件定义了一些数据,如app的名字、图标存放的路径、
# shell脚本执行的位置及参数等等内容
if(!file_exists("json.txt"))
{
//Generate the json.txt file
# 为什么这里可以用php?,主要是没看到哪里配置了环境变量
# 答案好像是因为lighttpd配置文件里配置了php的位置
# 另外generate.php能够生成json.txt文件
system("php generate.php");
//Remove the cache since it is based on the previous json.txt file
# 删除缓冲文件
system("rm -rf cache/*");
} if(!file_exists("cache"))
{
mkdir("cache",); # 缓冲文件不存在,那么就创建它,并给出相应的权限
} $supportedResolutions = null; # 这个是保存了屏幕分辨率,以及一屏中有多少行、多少列图标
if(file_exists("supported_resolutions.txt")==true)
{
# 将文件读入一个数组中
$supportedResolutions = file ("supported_resolutions.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
} # count: 计算数组中的单元数目或对象中的属性个数,对于数组,返回其元素个数
if($supportedResolutions == null || count($supportedResolutions) == )
{
echo "supported_resolutions.txt doesn't exist or is empty";
exit;
} # SERVER_NAME: 当前运行脚本所在服务器主机的名称
# REMOTE_ADDR: 正在浏览当前页面用户的IP地址
$client_is_host = $_SERVER['SERVER_NAME']==$_SERVER['REMOTE_ADDR']||$_SERVER['SERVER_NAME'] == "localhost";
?> <html>
<head>
<title>Matrix Application Launcher</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> <!-- 添加元信息 --> <link rel="stylesheet" type="text/css" href="css/fonts-min.css"> <!-- 加载样式 -->
<script type="text/javascript" src="/javascript/jquery-latest.js"></script> <!-- 加载jquery库 -->
<link rel='stylesheet' type='text/css' href='css/global.css'> <!-- 加载样式 --> </head> <body class="unselectable" style = "-webkit-user-select: none;-moz-user-select: none;">
<div id = "complete_container"></div> <script>
var has_graphics = true;
var link_history = ["submenu.php?submenu=main_menu&page=0"]; // 创建历史记录数组
var uri = "submenu.php?submenu=main_menu&page=0"; // 当前需要加载的URI地址
var previous_clicked = uri; // 第一次之前URI的就是现在的 <?php
if($client_is_host == true)
echo "var client_is_host = true;"; # 自动生成js变量
else
echo "var client_is_host = false;";
?> $(document).ready(function() // 文档加载完毕时运行该函数
{
var supportedResolutions=new Array(); // 创建数组 <?php
# 从这里可以知道,$supportedResolutions是前面的PHP里的变量,不是这里js中的
# supportedResolutions变量,这个一定要分清楚,要不然很难理解
for($x = ;$x<count($supportedResolutions);$x++)
{
# PHP字符串连接的方式很简单,只需要一个(.)就能实现
echo "supportedResolutions[".$x."]=\"".$supportedResolutions[$x]."\";";
}
?> var screenWidth = ; // 屏幕宽
var screenHeight = ; // 屏幕高
var iconGridCol = ; // 图标格点列数
var iconGridRow = ; // 图标格点行数 // 这里大致意思是取一个合适的尺寸来分配桌面
for(var i=; i<supportedResolutions.length; i++)
{
// 是用字符串x字符将字符串切分,x在字符串里的含义是乘,如800x600x4x3
var value = supportedResolutions[i].split('x'); screenWidth = value[];
screenHeight = value[];
iconGridCol = value[];
iconGridRow = value[]; if(screen.width >= screenWidth && screen.height >= screenHeight)
break;
} document.cookie="iconGridCol="+iconGridCol; // 通过js创建cookie
document.cookie="iconGridRow="+iconGridRow; // 加载对应尺寸的css样式,这样使得显示更合理
$('head').append('<link rel="stylesheet" type="text/css" href="css/'+screenWidth+'x'+screenHeight+'.css" />');
//alert("screenHeight:"+screenWidth+"\n"+"screenWidth:"+screenHeight); // 本地的Qt程序是无法进行远程传输的,所以会有这个判断
if(client_is_host==false)
{
var r=confirm("Does your target system have an attached display device?\nClick Ok and Remote Matrix will assume that a proper display device is attached to your target system.\nClick Cancel and Remote Matrix will assume that you do not have a display device attached to your target system.");
if (r==true)
has_graphics = true;
else
has_graphics = false;
} // var uri = "submenu.php?submenu=main_menu&page=0";
// var link_history = ["submenu.php?submenu=main_menu&page=0"];
// 加载显示的html文件,放在complete_container div中
$.get(uri, function(data)
{
$('#complete_container').html(data);
//其实这里的-2没搞清楚,不知道为什么要用这么写
$("#back_link").attr("href",link_history[link_history.length-]);
}); }); // delegate()方法为指定的元素添加一个或多个事件处理程序, // 并规定当这些事件发生时运行的函数
$("#complete_container").delegate("img", "mousedown", function(e)
{
// preventDefault()方法阻止元素发生默认的行为
// 例如: 当点击提交按钮时阻止表单的提交
e.preventDefault();
}); // 制定complete_container中的a标签的click事件的运行方式
$("#complete_container").delegate("a", "click", function(e)
{
e.preventDefault();
// 防止事件冒泡到DOM树上,也就是不触发任何前辈元素上的事件处理函数
e.stopPropagation();
var className = $(this).attr('class'); // 获取对应的属性
var idName = $(this).attr('id');
var link = $(this).attr('href'); //Sometimes if a request is taking a long time you might try clicking a link more then once thinking that
//your click request was not accepted. This causes multiple request for the same page to be sent which in turn
//sometimes results in every link you click causing 2+ request to go through. This code checks to make sure
//your requesting a new pageand not the same page twice
if(link==previous_clicked) // 防止连续点击两次,也就是避免同一个应用连续运行2次
return false; previous_clicked = link; // 将当前连接看作是上一次的链接 if(idName=="back_link") // 返回上一次链接
{
link_history.pop(); // 从堆栈中弹出最后的一次链接
}
else if(idName=="main_menu_link") // 转到主页
{
link_history = ["submenu.php?submenu=main_menu&page=0"];
}
else
link_history.push(link); // 将当前的链接加入堆栈 //Adds a random string to the end of the $_GET Query String for page accessed.
//This prevents IE from caching the Ajax request.
link = link + "&rand="+Math.round((Math.random()*))+Math.round((Math.random()*))+Math.round((Math.random()*));
$.get(link, function(data)
{
$('#complete_container').html(data); // 往div里添加另一个网页内容
$("#back_link").attr("href",link_history[link_history.length-]);
});
}); </script> </body>
</html>
Texas Instruments matrix-gui-2.0 hacking -- index.php的更多相关文章
- Texas Instruments matrix-gui-2.0 hacking -- submenu.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- Texas Instruments matrix-gui-2.0 hacking -- run_script.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- Texas Instruments matrix-gui-2.0 hacking -- app_description.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- Texas Instruments matrix-gui-2.0 hacking -- menubar.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- Texas Instruments matrix-gui-2.0 hacking -- generate.php
<?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...
- Texas Instruments matrix-gui-2.0 hacking -- execute_command.sh
#!/bin/sh #Copyright (C) Texas Instruments Incorporated - http://www.ti.com/ # # # Redistribution an ...
- 【LeetCode每天一题】Set Matrix Zeroes(设置0矩阵)
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place. Exampl ...
- 答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}
答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}
- elasticsearch5.3.0 bulk index 性能调优实践
elasticsearch5.3.0 bulk index 性能调优实践 通俗易懂
随机推荐
- Ubuntu 14.04 定时任务
如何在Ubuntu上启动一个定时任务,使得可以定时删除机器上的日志 首先, #查看cron状态 service cron status 如果提示没有安装 #安装cron服务 apt-get ins ...
- MongoDB(课时18 修改器)
3.4.3.2 修改器(原子操作) 对MongoDB数据库而言,数据的修改会牵扯到内容的变更,结构的变更(包含数组),所以在MongoDB在设计的时候就提供有一系列的修改器的应用,那么像之前使用的“$ ...
- 《剑指offer》第四题(二维数组中的查找)
// 二维数组中的查找 // 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按 // 照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 // 整数,判断数组 ...
- 算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int ...
- HDU1789时间贪心
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Leetcode 78
//和77类似的问题,可以放在一起记忆class Solution { public: vector<vector<int>> subsets(vector<int> ...
- h5请求跨域问题Access-Control-Allow-Origin解决跨域
访问后端接口报错:No 'Access-Control-Allow-Origin' header is present on the requested resource 解决: Access-Con ...
- Nginx 关于 location 的匹配规则详解
有些童鞋的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通, ...
- CentOS下tar解压 gz解压 bz2等各种解压文件使用方法
.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— . ...
- sql语句:查询、排序、不区分大小写查询,及联合使用
1.不排序时的查找语句: offset message 为表名,talker 为列名. 此语句的意思是:从message 表中查找 talker 等于wxid_0930479303212的数据,从第 ...