<?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的更多相关文章

  1. Texas Instruments matrix-gui-2.0 hacking -- submenu.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  2. Texas Instruments matrix-gui-2.0 hacking -- run_script.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  3. Texas Instruments matrix-gui-2.0 hacking -- app_description.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  4. Texas Instruments matrix-gui-2.0 hacking -- menubar.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  5. Texas Instruments matrix-gui-2.0 hacking -- generate.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  6. Texas Instruments matrix-gui-2.0 hacking -- execute_command.sh

    #!/bin/sh #Copyright (C) Texas Instruments Incorporated - http://www.ti.com/ # # # Redistribution an ...

  7. 【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 ...

  8. 答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}

    答案{{index==0 ? '一' : (index==1 ? '二':'三' )}}    

  9. elasticsearch5.3.0 bulk index 性能调优实践

    elasticsearch5.3.0 bulk index 性能调优实践 通俗易懂

随机推荐

  1. ant的原理

    ANT批量完成项目代码的重新编译.打包.测试.java语言编写与平台无关的. Ant工具 Ant是一种基于Java的build工具.理论上来说,它有些类似于(Unix)C中的make ,但没有make ...

  2. MongoDB(课时7 逻辑运算)

    3.4.2.2 逻辑运算 逻辑运算主要三种类型:与($and),或($or),非($not.$nor). 范例:查询年龄在20~21岁的学生信息 db.students.find({"age ...

  3. 《剑指offer》第十七题(打印1到最大的n位数)

    // 面试题17:打印1到最大的n位数 // 题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则 // 打印出1.2.3一直到最大的3位数即999. #include <ios ...

  4. iconfont使用方法

    最近才发现一种新的iconfont的使用方法 http://www.iconfont.cn/ 经常使用的图标放在一个项目里 需要关注的几点: 使用方法有三种方式unicode  , font clas ...

  5. Silverlight自定义控件系列 – TreeView (1)

      原文路径:http://blog.csdn.net/wlanye/article/details/7265457 很多人都对MS自带的控件不太满意(虽然MS走的是简约风格),都会试图去修改或创建让 ...

  6. 我的Java学习笔记-Java面向对象

    今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...

  7. 查询(sqlSuger)

    查某一天的数据记录的条数 DateTime date1 = Convert.ToDateTime(DateTime.Now.ToShortDateString()); DateTime date2 = ...

  8. SQL Server数据库入门学习总结

    数据库基本是由表,关系,操作组成:对于初学者,首先要学的是: 1.数据库是如何存储数据的 —— 表.约束.触发器 2.数据库是如何操作数据的 —— insert,update,delete.T-sql ...

  9. javaScript面向对象是什么?(一)

    js就是个面向对象语言,一切皆对象 一.什么是面向对象? 简单点,就这么说吧.生活中有一些个物品,譬如(哈哈,还想起个譬如)说一个iPhone,我们也不知道里面的工作原理吧?但是咱们会按按钮呀,用一俩 ...

  10. WEB-WELCOME-FILE-LIST

    当用户在浏览中输入的UTL不包含某个servlet 名或JSP页面的时候,welecome-file-list元素可以指定默认的文件. (即也就是输入:http://hostip:port/webAp ...