Upload
shigure
View
1.199
Download
0
Embed Size (px)
DESCRIPTION
sumartphone workshop Kansai #14
Citation preview
フルC++実装 外部ランタイム不要 フットプリント1.3MB 比較的高速 多くのキーボードショートカット ストリームAPIへの対応 それなり高機能 高い閲覧性 加速度センサを用いた操作 基地局即位 ツリービューでの返信先の閲覧 インライン翻訳 ふぁぼったーブラウザ メモリ消費がすくなめ タブレットPCにもおすすめ タッチスクリーンでの操作もちょっぴり考えてある フリック操作のショートカット WM5/6/6.1でもスムーススクロールをサポート Twitpicなどのフォトストレージの内蔵プレビュー 柔軟な設定項目 JScriptによる高度な拡張 無料です
こういうアプリケーションです。
Azurea version.1.3.2以降JScriptでの拡張を実装しました。
比較的なんでもできます。
制限は標準できつくして、設定でどこまでも緩める思想
やりだすときりが無いです。
待望のユーザ拡張
GPSへアクセス
タイムライン取得時にステータスをフックしていろいろ
スクリプトでフィルタリング
HTTP通信
API呼び出し
Azureaの設定読み書き
外部アプリケーション呼び出し
コンテキストメニュー拡張
Etc…
こんなことができます
Azurea Wiki (http://azurea.refy.net/ja/wiki)から最新のベータ版をダウンロードします。
Azurea.exeの横にScriptsフォルダを作る
Scriptsの中に任意の名前でファイルを作る
ただし拡張子は.jsで。
あとはJScriptなので皆様のお好きな感じでどうぞ。
スクリプト拡張のはじめかた
function PreProcessTimelineStatus(status)
{
var s = status.text;
while(s.match('http://bit.ly/[a-zA-Z0-9]+','g')){
var jmpUrl = RegExp.lastMatch;
var resp = Http.sendRequest(jmpUrl, false);
resp.header.match('Location:.+?(http.+)', 'i');
s = s.replace(jmpUrl, RegExp.$1);
}
status.text = s;
}
たとえばこんな感じ。
System.addContextMenuHandler('診断メーカー', 0, function(id){
var status = TwitterService.status.get(id);
var curUsr = TwitterService.currentUser();
if(status.text.match('http://shindanmaker.com/[0-9]+')){
Http.postRequestAsync(RegExp.lastMatch,
"u="+encodeURI(curUsr.screen_name), false
function(resp){
resp.body.match('<textarea.*?>(.*?)</textarea>');
TextArea.text = RegExp.$1;
TextArea.in_reply_to_status_id = 0;
TextArea.show();
TextArea.setFocus();
});
}
});
こんなんとか
var TOAST_MESSAGE = 0x100000;
function PreProcessTimelineStatus(status){
if(System.isActive) return;
var re = ['@hoge', 'ho+ge'];
var f = false;
for(var i = 0; i < re.length; ++i){
var r = new RegExp(re[i]);
if(status.text.match(r)){
f = true;
break;
}
}
if(f) System.showMessage(status.text,
'Reply from ' + status.user.screen_name, TOAST_MESSAGE);
}
こんなんで
System.addContextMenuHandler('Google Static Map', 0, function(id){ var s = TwitterService.status.get(id); if(s.geo.lat != 0xffff){ var staticMap = 'http://maps.google.com/maps/api/staticmap?size=512x512&maptype=roadmap&markers=size:mid|color:red|'+s.geo.lat+','+s.geo.lon+'&sensor=false'; var mapUrl = 'http://maps.google.co.jp/maps?q='+s.geo.lat+','+s.geo.lon; System.openPreview(mapUrl, staticMap); } });
こうすれば
System.addContextMenuHandler('引用返信', 0,
(id){
var s = TwitterService.status.get(id);
TextArea.setText('QT
@'+s.user.screen_name+': '+s.text);
TextArea.setInReplyTo(s.id);
TextArea.show();
TextArea.setFocus();
TextArea.setCursor(0);
});
こうするといいです
// 抽出タブの表示
System.addKeyBindingHandler(0x34, 0, function(id){
System.views.openMatch('#sumaben', false);
});
// Postに含まれる1つめのURLをブラウザで開く System.addKeyBindingHandler(0xBE, 0, function(id){
var urls = new Array();
TwitterService.status.getUrls(id, urls);
if(urls.length > 0) System.openUrl(urls[0]);
});
こんなかんじに。
System.addKeyBindingHandler(0x30, 0, function(id){
var iTunesApp =
new ActiveXObject("iTunes.Application");
var track = iTunesApp.CurrentTrack;
var status = ‘Now playing.. ’
+ track.Artist + ‘ - ‘
+ track.Name + ' #nowplaying';
TextArea.text = status;
TextArea.show();
TextArea.setFocus();
});
こんな風にできます。
ActiveXObjectは好き勝手使えると危なげなので標準は無効にしてあります。
INIに手動でエントリを追加することで利用可能になります。
[Scripting]
AllowActiveXObject=1
できます、が
本体が直接対応していない機能もスクリプト拡張でどうにかできます。
どうにかできないときはWikiの目安箱に書いておくとどうにかなるかもしれません。
これからも見た目はシンプル、蓋を開けるとあらびっくり。を目指して作り続けます?
いかがでしょうか