65.9K
CodeProject 正在变化。 阅读更多。
Home

工程计算器 VOLTA-814

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.91/5 (37投票s)

2016年12月19日

CPOL

6分钟阅读

viewsIcon

140474

downloadIcon

1782

工程计算器 VOLTA-814(生产力软件竞赛作品)最初是作为 HTML5 网络应用程序开发的,后来使用 Intel 的 AppUp 封装器转换为桌面应用程序。2014 年发布的适用于 Win 7/8 的最新版本基于 .NET/WPF 构建。

概述

此应用程序软件包已提交至 Windows 8* 和 Ultrabook™ 应用创新大赛

类别 1:生产力

类别 2:教育

平台:Windows 8 桌面(任意版本)

Ultrabook 专属功能

  • 触摸屏和标准 PC 鼠标操作模式
  • 基于 GPS/地理定位的“查找职业介绍所”可选扩展("Jobrica-2013"
  • ALS 自动选择配色方案(可选 - 请参阅“兴趣点”部分中的设计说明)

整个软件包(软件“捆绑包”)包含核心应用程序,即:工程计算器“Volta-2013”,以及可选的应用程序扩展“Jobrica-2013”,它允许在特定搜索区域查找职业介绍所,这些区域可以由用户手动指定,也可以通过使用实时地理定位服务。

核心应用程序 Volta-2013 兼容 Windows 7/8,可在触摸屏或标准鼠标/键盘桌面模式下运行。可从 Intel AppUp 商店 [1] 免费下载(于 2012 年 11 月 27 日发布)。用户手册可在 [2] 获取。 

应用程序扩展“Jobrica-2013”也可以在 Windows 7/8 中运行,但其实时地理定位功能仅在 Ultrabook/Win8 中可用;它实现了通过 TTS 技术提供语音消息的多模态用户界面。其相应的网页利用 Microsoft Bing 地图技术和搜索引擎,并扩展了公司(Infosoft International Inc, NY)专有的美国 200 多家职业介绍所数据库,主要集中在高科技领域。  该应用程序可在 Intel AppUp 商店免费获取;(于 2012 年 11 月 29 日发布 [8])。

背景

用于 Microsoft Windows 的工程计算器 VOLTA-2013 ([1,2]) 扩展了其前身“VOLTA-2011”的功能和应用范围,后者之前已在线发布 [3] 并在 Codeproject [4] 上讨论过。 

原始计算器“VOLTA-2011”作为 HTML5 网络应用程序实现,遵循现代软件范式中编程关注点分离的原则,即: 

  • 内容:HTML5
  • 演示:CSS3
  • 功能:Javascript/jQuery

整个项目封装在一个数字足迹相当小(小于 10kB)的单个文本文件中。它没有使用任何图形文件,例如 .jpg 或 .png 等。所有美学增强,如:圆角、颜色渐变、边框和阴影,都完全通过 CSS3 样式实现,从而实现了非常小的应用程序足迹和快速的网页加载。

Volta-2014P

图 1:最近发布的适用于 Win 7/8 的计算器 VOLTA-201P(专业版)

Volta-2013

工程计算器 Volta-2013 是在线计算器“VOLTA-2011”的桌面版本。其安装程序是使用 Intel AppUp 封装器生成的,该封装器允许将 HTML5 Web 应用程序转换为 Windows 桌面可安装程序。

图 2:适用于 Win 8 桌面的工程计算器 Volta-2013 

图 3:带有圆角的计算器 Volta-2013

图 4:带有“浅色”背景的计算器 Volta-2013

使用代码

新版本 VOLTA-2013 中添加了多个选项,包括使用 jQuery 和 CSS3 包含文件进行动态样式设置;动态样式选择可以潜在地链接到环境光传感器输出。以下示例(列表 1 和 2)演示了圆角切换开关的编码技术。

列表 1. 圆角样式 (CSS3)
div#eeMain,
div#keyPad button,
div#keyPad input,
div#eeMain div.eeStyleControl,
div#eeMain div#eeRounded,
div#eeModel,
div#eeExtControl,
div#eeExtPanel,
div#eeStackControl,
div#eeStackRegister
{
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
}</</
列表 2. jQuery 代码片段,用于切换圆角开/关
// ROUNDED CORNER On/Off ********************
$("div#eeRounded").click(function () {
   //get all stylesheets
   var styleSheets = document.styleSheets;
   // toggle stylesheet identified by href
   var href = 'RoundedCorner.css';
   for (var i = 0; i < styleSheets.length; i++) {
       if (styleSheets[i].href.toString().indexOf(href) >= 0) {
            styleSheets[1].disabled = !(styleSheets[1].disabled);
            break;
       }
   }
});

另一种 jQuery 技术用于动态加载/卸载与低/高对比度及背景选择相关的 CSS3 文件(请参阅以下列表 3 和 4 中的代码片段)

列表 3. 对应“浅色”背景配色方案的 CSS 样式表文件
div#eeMain {  background-color: #dedede; }

div#eeModel,
div#eeExtControl, 
div#eeStackControl,
div#eeStackRegister,
div#eeExtPanel, 
div.voltESeries { background-color: #eaeaea;  }

input#keyPad_Mem  { background-color: #f8f8f8;  }

button,
input,
div.eeCaption,
div.eeNotice,
div#eeExtControl,
div#eeStackControl,
div.eeSeriesTitle,
table.tabESeries { color: #202020; }

div#eeModel { color: #005500; }

button.keyPad_btnMemOp {  color: #005500;}

/* BACKSPACE/CLEAR INPUT KEYS*/
div#keyPad button#keyPad_btnBack,
div#keyPad button#keyPad_btnClr,
div#keyPad button#keyPad_btnAllClr {color:red;}

input,
button,
div.voltESeries { border: 1px solid #d0d0d0; }

button:hover { background: #d9d9d9; }

button:active {	border: solid 2px #909090; }

/* odd rows style */
table.tabESeries tr:nth-child(odd) { background-color: #f0f0f0; }

/* even rows style */
table.tabESeries tr:nth-child(even) { background-color: #eaeaea; }

/* Table hover style */
table.tabESeries tr:hover {background-color: #dadada; color: #101010;}
列表 4. jQuery 代码片段,用于动态切换高/低对比度和浅色背景(可与 ALS 传感器数据馈送关联)
// SELECT COLOR PALETTE ************************
$("div.eeStyleControl").click(function () {
        // disable all color styles
        $('link[rel=stylesheet][href="Style/ContrastNormal.css"]').remove();
        $('link[rel=stylesheet][href="Style/Light.css"]').remove();
        $('link[rel=stylesheet][href="Style/ContrastHigh.css"]').remove();

        // add appropriate color style
        switch (this.id) {
            case 'eeNContrast': $('head').append('<link type="text/css" href="Style/ContrastNormal.css" rel="stylesheet" />'); break;
            case 'eeHContrast': $('head').append('<link type="text/css" href="Style/ContrastHigh.css" rel="stylesheet" />'); break;
            case 'eeLight': $('head').append('<link type="text/css" href="Style/Light.css" rel="stylesheet" />'); break;
            default: break;
        }
    });

Jobrica-2013

Jobrica-2013 是 Windows 8 桌面/Ultrabook 应用程序扩展,利用 GPS/地理定位服务在附近的搜索区域中查找职业介绍所。它实现了由 Microsoft Bing 技术驱动的专用网页和桌面可安装应用程序,可在地理定位服务可用/启用时实时获取地理坐标,还允许手动输入搜索区域中心点,向所述页面发送相应的编码网络查询(请参见以下示例截图)

图 6:适用于 Win8/Ultrabooks 的 Jobrica-2013 桌面应用程序,示例截图

图 7:交互式地图显示附近的职业介绍所,示例截图 

示例编码解决方案:WPF 数字文本框

将 WPF 文本框输入限制为仅数字和选定的特殊字符并非易事。与 Win Forms 中的对应控件(例如,在 KeyDown 事件处理程序中可作为 e.KeyCode 访问)不同,WPF 控件仅提供 e.Key 属性,如果将其转换为字符串,则会返回诸如“D0”、“Back”或“OemPeriod”之类的值。快速解决方法如以下列表 5 所示。该解决方案允许在 WPF 文本框中输入数字 0-9 和特殊键:退格、删除、句点和减号。值得一提的是,可以通过添加更多“允许”的情况(使用 || 运算符)以及拦截“Shift”+ {Key} 的组合和任意“复制粘贴”的文本来扩展它,但对这种编码技术的详细介绍超出了本文的合理范围。只需注意,即使在“最坏情况”下,如果文本框中输入了一些无效字符,那么在“查找机构”按钮点击事件处理程序中实现的输入验证将抛出异常并通过 TTS(语音消息)或标准消息框(如果 TTS 功能已禁用)通知用户输入错误。

列表 5. WPF 数字文本框  
private void txtBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    // allow "Backspace", "Delete", "Period" and "Minus" keys;
    // the list can be extended, for e.g. with OemComma
    if ( e.Key.ToString() == "Back" ||
            e.Key.ToString() == "Delete" ||
            e.Key.ToString() == "OemPeriod" ||
            e.Key.ToString() == "OemMinus")  return;
            
    // cast e.Key to int
    int _key = (int)e.Key;

    // restrict any key except for numerics: 0...9
    e.Handled = _key > 43 || _key < 34;
}

关注点

语音技术

应用程序扩展 Jobrica-2013 实现了多模态语音增强用户界面,利用 Windows 8 语音对象库,特别是 TTS(文本转语音)选项。它向用户提供语音指令和错误消息。此选项可以打开/关闭;如果禁用,标准消息框将代替并传递消息。

地理定位/GPS

应用程序扩展 Jobrica-2013 利用配备 GPS 的超极本中提供的实时 GPS/地理定位功能,提供在用户手动或通过实时地理定位服务提供的搜索区域中“查找职业介绍所”的选项。

语音技术

应用程序扩展 Jobrica-2013 实现了多模态语音增强用户界面,利用 Microsoft 语音对象库,特别是 TTS(文本转语音)技术集,向用户提供语音指令和错误消息。此选项可以打开/关闭;如果禁用,标准消息框将代替并传递消息。实际测试发现,TTS 受益于 Ultrabook 的高内部数据速率(归因于复杂的 SSD/SATA 双驱动),显著减少了语音响应延迟并提高了整体 UI 响应速度。

ALS 传感器用例

核心应用程序 VOLTA-2013 理论上能够自动选择样式,例如根据环境光传感器 (ALS) 的数据馈送(某些高端 Ultrabook 中包含)在明/暗对比配色方案之间切换。可能的实现将需要某种类似于“带迟滞比较器”(在电气工程中众所周知)的编程等效物,用于观察 ALS 数据流并根据预定义的亮度阈值自动切换样式。经过认真设计考虑和部分原型测试,发现在此类应用程序中这种自动控制功能是不必要的:“非理性繁荣”,即人为地过度扩展传感器用例,可能会导致持续的“样式抖动”,从而增加烦躁/眼睛刺激并降低整体用户体验,而非改善它。或者,样式选择功能被实现为简单的手动“单击”操作。

使用 Intel 的 AppUp 封装器 

核心应用程序 VOLTA-2013 最初是作为 HTML5 Web 应用程序开发的,利用 CSS3(样式)和 jQuery(功能)技术集,后来使用 Intel 的 AppUp 封装器转换为 Windows 桌面可安装应用程序。

历史

  • HTML5 Web 应用程序 VOLTA-2011 已发布
  • VOLTA-2011 已在新版 Apple iPad(又名 iPad 3)上测试。
  • 工程计算器 VOLTA-2013 (v. 8.1.2) 已在 Intel AppUp 商店发布
  • 应用程序扩展 Jobrica-2013 (v. 8.1.1.) 已在 Intel AppUp 商店发布
  • VOLTA-814 完整版 (14.2.03) 已发布。
© . All rights reserved.