チェンジセット 2626
- コミット日時:
- 2009/05/12 22:35:08 (3 年前)
- ファイル:
-
- air/TLife/branches/OAuth/TLife.as3proj (更新) (1 diff)
- air/TLife/branches/OAuth/application.xml (更新) (1 diff)
- air/TLife/trunk/bin/TLife.swf (更新) (変更前)
- air/TLife/trunk/bin/initial/config.xml (更新) (1 diff)
- air/TLife/trunk/src/Main.mxml (更新) (5 diffs)
- air/TLife/trunk/src/uwi/thread/InitialMovementThread.as (更新) (1 diff)
- air/TLife/trunk/src/uwi/thread/MainThread.as (更新) (2 diffs)
- air/TLife/trunk/src/uwi/thread/event/IncrementalSearchThread.as (更新) (2 diffs)
- air/TLife/trunk/src/uwi/thread/event/PostEventThread.as (更新) (1 diff)
- air/TLife/trunk/src/uwi/ui/TextAreaEditor.mxml (更新) (1 diff)
- air/TLife/trunk/src/uwi/ui/answer/Answer.mxml (更新) (1 diff)
- air/TLife/trunk/src/uwi/ui/dbsearch/DBSearchWindow.mxml (更新) (2 diffs)
- air/TLife/trunk/src/uwi/ui/friends/Friends.mxml (更新) (1 diff)
- air/TLife/trunk/src/uwi/ui/globalconfig/GlobalConfig.mxml (更新) (1 diff)
- air/TLife/trunk/src/uwi/ui/search/SearchWindow.mxml (更新) (2 diffs)
- air/TLife/trunk/src/uwi/util/CommonData.as (更新) (1 diff)
- air/TLife/trunk/src/uwi/util/KeyBind.as (追加)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
air/TLife/branches/OAuth/TLife.as3proj
r2621 r2626 23 23 <option es="False" /> 24 24 <option loadConfig="" /> 25 <option optimize=" False" />25 <option optimize="True" /> 26 26 <option showActionScriptWarnings="True" /> 27 27 <option showBindingWarnings="True" /> air/TLife/branches/OAuth/application.xml
r2624 r2626 3 3 4 4 <id>uwi.TLife</id> 5 <version>alpha1 6</version>5 <version>alpha17</version> 6 6 <filename>TLife</filename> 7 7 <name>TLife</name> air/TLife/trunk/bin/initial/config.xml
r2623 r2626 63 63 <friendimage>true</friendimage> 64 64 </main> 65 <keybind> 66 <isearchcontent>Ctrl+S</isearchcontent> 67 <isearchscreenname>Ctrl+D</isearchscreenname> 68 <ifiltercontent>Ctrl+F</ifiltercontent> 69 <ifilterscreenname>Ctrl+G</ifilterscreenname> 70 </keybind> 65 71 <search> 66 72 <queryuserid> air/TLife/trunk/src/Main.mxml
r2621 r2626 34 34 import flash.events.MouseEvent; 35 35 import flash.filesystem.File; 36 import flash.text.TextField; 36 37 import flash.utils.getTimer; 37 38 import ken39arg.logging.FilePutLogging; … … 60 61 import uwi.ui.multipletabbar.MultipleTabBarDragEventThread; 61 62 import uwi.util.CommonData; 63 import uwi.util.KeyBind; 62 64 import uwi.util.StringUtility; 63 65 import uwi.util.Utility; … … 126 128 postvalidator.maxLength = CommonData.LIMLEN_POST; 127 129 postvalidator.tooLongError = "長すぎですよー"; 130 131 var tf : TextField = new TextField(); 132 tf.type = "input"; 133 stage.addChild(tf); 128 134 129 135 new MainThread().start(); … … 273 279 var level : String = CommonData.configxml.log.level; 274 280 Logger.errorLevel = Class(Logger).hasOwnProperty(level) ? Logger[level] : Logger.INFO; 281 282 CommonData.incrementalSearchJudgers = [ 283 null, 284 KeyBind.makeJudger(CommonData.configxml.keybind.isearchcontent), 285 KeyBind.makeJudger(CommonData.configxml.keybind.isearchscreenname), 286 KeyBind.makeJudger(CommonData.configxml.keybind.ifiltercontent), 287 KeyBind.makeJudger(CommonData.configxml.keybind.ifilterscreenname) 288 ]; 275 289 } 276 290 … … 474 488 <!-- post欄 --> 475 489 <mx:HBox id="postcontainer" width="100%" height="40" horizontalGap="0" horizontalScrollPolicy="off" verticalScrollPolicy="off" verticalAlign="middle"> 476 <uwi:TextAreaEx id="postarea" styleName="postareastyle" width="100%" height="40" horizontalScrollBarStyleName="postareascrollbarstyle" />490 <uwi:TextAreaEx id="postarea" styleName="postareastyle" width="100%" height="40" horizontalScrollBarStyleName="postareascrollbarstyle" restrict=" -○" /> 477 491 <mx:Label id="charleft" styleName="charleftstyle" width="40" height="20" text="" textAlign="center"/> 478 492 <mx:Button id="postbtn" width="60" height="40" label="post" /> air/TLife/trunk/src/uwi/thread/InitialMovementThread.as
r2624 r2626 80 80 // new Friends().open(true); 81 81 82 CommonData.state = 1; 82 83 var rt : ReloadThread = new ReloadThread(true); 83 84 rt.start(); air/TLife/trunk/src/uwi/thread/MainThread.as
r2624 r2626 6 6 import flash.system.Security; 7 7 import flash.text.TextFormat; 8 import flash.ui.Keyboard; 8 9 import flash.utils.getTimer; 9 10 import ken39arg.logging.Logger; … … 36 37 import uwi.util.FileIO; 37 38 import uwi.ui.globalconfig.GlobalConfig; 39 import uwi.util.KeyBind; 38 40 import uwi.util.TabRuleUtility; 39 41 air/TLife/trunk/src/uwi/thread/event/IncrementalSearchThread.as
r2621 r2626 13 13 import uwi.ui.DataGridEx; 14 14 import uwi.util.CommonData; 15 import uwi.util.KeyBind; 15 16 import uwi.util.LazyExecutor; 16 17 … … 68 69 } 69 70 70 private static const STR_SEARCH : Array = ["", " userid検索:", "useridでフィルタ:", "本文でフィルタ:"];71 private static const STR_SEARCH : Array = ["", "本文で検索:", "userid検索:", "本文でフィルタ:", "useridでフィルタ:"]; 71 72 72 73 private function onKeyDown(e : KeyboardEvent) : void 73 74 { 74 // postareaの場合は無効 75 if (!Application.application.postarea.contains(e.target)) { 76 switch(mode) { 77 case 0: 78 if (e.keyCode == Keyboard.SLASH) { 79 mode = 1; 75 if (mode != 0) { 76 e.preventDefault(); 77 } 78 79 switch(mode) { 80 case 0: 81 for (var i : int = 1; i <= 4; i++) { 82 if (CommonData.incrementalSearchJudgers[i].apply(null, [e])) { 83 mode = i; 80 84 CommonData.mainstatusbar.write(STR_SEARCH[mode], DEPTH_IST); 85 break; 81 86 } 82 if (e.keyCode == Keyboard.PERIOD) { 83 mode = 2; 84 CommonData.mainstatusbar.write(STR_SEARCH[mode], DEPTH_IST); 85 } 86 if (e.keyCode == Keyboard.COMMA) { 87 mode = 3; 88 CommonData.mainstatusbar.write(STR_SEARCH[mode], DEPTH_IST); 89 } 90 break; 91 case 1: 92 switch(e.keyCode) { 93 case Keyboard.ENTER: 94 CommonData.searcher.searchTimeline( { posterid : query }, { forward : !e.shiftKey, fromnext : true, idFullMatch : false } ); 95 break; 96 case Keyboard.ESCAPE: 97 eraseQuery(); 98 mode = 0; 99 break; 100 case Keyboard.BACKSPACE: 101 if (query.length <= 1) { 102 eraseQuery(); 103 mode = 0; 104 }else{ 105 query = query.substring(0, query.length - 1); 106 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 107 } 108 break; 109 default: 110 // 日本語受け付けない・・ 111 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 112 query += String.fromCharCode(e.charCode); 113 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 114 CommonData.searcher.searchTimeline( { posterid : query }, { forward : true, fromnext : false } ); 115 } 116 break; 117 } 118 119 if(query != "" && timeoutManager != null){ 120 timeoutManager.reset(); 121 timeoutManager.start(); 122 } 123 break; 124 case 2: 125 switch(e.keyCode) { 126 case Keyboard.ESCAPE: 87 } 88 break; 89 case 1: // search content 90 switch(e.keyCode) { 91 case Keyboard.ENTER: 92 // 次を検索 93 CommonData.searcher.searchTimeline( { content : query }, { forward : !e.shiftKey, fromnext : true, idFullMatch : false } ); 94 break; 95 case Keyboard.ESCAPE: 96 // 検索中止 97 eraseQuery(); 98 mode = 0; 99 break; 100 case Keyboard.BACKSPACE: 101 if (query.length <= 1) { 102 eraseQuery(); 103 mode = 0; 104 }else{ 105 query = query.substring(0, query.length - 1); 106 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 107 } 108 break; 109 default: 110 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 111 query += String.fromCharCode(e.charCode); 112 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 113 CommonData.searcher.searchTimeline( { content : query }, { forward : true, fromnext : false } ); 114 } 115 break; 116 } 117 118 if(query != "" && timeoutManager != null){ 119 timeoutManager.reset(); 120 timeoutManager.start(); 121 } 122 break; 123 case 2: 124 switch(e.keyCode) { 125 case Keyboard.ENTER: 126 // 次を検索 127 CommonData.searcher.searchTimeline( { posterid : query }, { forward : !e.shiftKey, fromnext : true, idFullMatch : false } ); 128 break; 129 case Keyboard.ESCAPE: 130 eraseQuery(); 131 mode = 0; 132 break; 133 case Keyboard.BACKSPACE: 134 if (query.length <= 1) { 135 eraseQuery(); 136 mode = 0; 137 }else{ 138 query = query.substring(0, query.length - 1); 139 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 140 } 141 break; 142 default: 143 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 144 query += String.fromCharCode(e.charCode); 145 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 146 CommonData.searcher.searchTimeline( { posterid : query }, { forward : true, fromnext : false } ); 147 } 148 break; 149 } 150 151 if(query != "" && timeoutManager != null){ 152 timeoutManager.reset(); 153 timeoutManager.start(); 154 } 155 break; 156 case 3: 157 switch(e.keyCode) { 158 case Keyboard.ESCAPE: 159 eraseQuery(); 160 le.impulse(null); 161 mode = 0; 162 break; 163 case Keyboard.BACKSPACE: 164 if (query.length <= 1) { 127 165 eraseQuery(); 128 166 le.impulse(null); 129 167 mode = 0; 130 break; 131 case Keyboard.BACKSPACE: 132 if (query.length <= 1) { 133 eraseQuery(); 134 le.impulse(null); 135 mode = 0; 136 }else{ 137 query = query.substring(0, query.length - 1); 138 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 139 le.impulse(function(item : Object) : Boolean { 140 // 前方一致 141 return item.posterid.substring(0, query.length) == query; 142 }); 143 } 144 break; 145 default: 146 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 147 query += String.fromCharCode(e.charCode); 148 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 149 le.impulse(function(item : Object) : Boolean { 150 // 前方一致 151 return item.posterid.substring(0, query.length) == query; 152 }); 153 } 154 break; 155 } 156 break; 157 case 3: 158 switch(e.keyCode) { 159 case Keyboard.ESCAPE: 160 eraseQuery(); 161 le.impulse(null); 162 mode = 0; 163 break; 164 case Keyboard.BACKSPACE: 165 if (query.length <= 1) { 166 eraseQuery(); 167 le.impulse(null); 168 mode = 0; 169 }else{ 170 query = query.substring(0, query.length - 1); 171 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 172 le.impulse(function(item : Object) : Boolean { 173 // 中間一致 174 return item.content.indexOf(query) != -1; 175 }); 176 } 177 break; 178 default: 179 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 180 query += String.fromCharCode(e.charCode); 181 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 182 } 168 }else{ 169 query = query.substring(0, query.length - 1); 170 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 183 171 le.impulse(function(item : Object) : Boolean { 184 172 // 中間一致 185 173 return item.content.indexOf(query) != -1; 186 174 }); 187 break; 188 } 189 break; 190 default: break; 191 } 175 } 176 break; 177 default: 178 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 179 query += String.fromCharCode(e.charCode); 180 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 181 } 182 le.impulse(function(item : Object) : Boolean { 183 // 中間一致 184 return item.content.indexOf(query) != -1; 185 }); 186 break; 187 } 188 break; 189 case 4: 190 switch(e.keyCode) { 191 case Keyboard.ESCAPE: 192 eraseQuery(); 193 le.impulse(null); 194 mode = 0; 195 break; 196 case Keyboard.BACKSPACE: 197 if (query.length <= 1) { 198 eraseQuery(); 199 le.impulse(null); 200 mode = 0; 201 }else{ 202 query = query.substring(0, query.length - 1); 203 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 204 le.impulse(function(item : Object) : Boolean { 205 // 前方一致 206 return item.posterid.substring(0, query.length) == query; 207 }); 208 } 209 break; 210 default: 211 if (e.charCode >= 0x20 && e.charCode < 0x7f) { 212 query += String.fromCharCode(e.charCode); 213 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST); 214 le.impulse(function(item : Object) : Boolean { 215 // 前方一致 216 return item.posterid.substring(0, query.length) == query; 217 }); 218 } 219 break; 220 } 221 break; 222 default: break; 192 223 } 193 224 next(run); 194 225 } 195 226 196 private function filterIncrementally(e : KeyboardEvent) : void197 {198 switch(mode) {199 case 2:200 case 3:201 switch(e.keyCode) {202 case Keyboard.ESCAPE:203 eraseQuery();204 Application.application.timeline.filterFunction = null;205 Application.application.timeline.refresh();206 mode = 0;207 break;208 case Keyboard.BACKSPACE:209 if (query.length <= 1) {210 eraseQuery();211 Application.application.timeline.filterFunction = null;212 Application.application.timeline.refresh();213 mode = 0;214 }else{215 query = query.substring(0, query.length - 1);216 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST);217 Application.application.timeline.filterFunction = function(item : Object) : Boolean {218 // 中間一致219 return item.content.indexOf(query) != -1;220 }221 Application.application.timeline.refresh();222 }223 break;224 default:225 if (e.charCode >= 0x20 && e.charCode < 0x7f) {226 query += String.fromCharCode(e.charCode);227 CommonData.mainstatusbar.write(STR_SEARCH[mode] + query, DEPTH_IST);228 }229 Application.application.timeline.filterFunction = function(item : Object) : Boolean {230 // 中間一致231 return item.content.indexOf(query) != -1;232 }233 Application.application.timeline.refresh();234 break;235 }236 break;237 default:238 break;239 }240 }241 242 227 private function onTimeout(e : TimerEvent) : void 243 228 { 244 229 if (timeoutManager != null) timeoutManager.stop(); 245 230 eraseQuery(); 246 if(mode == 2 || mode == 3)Application.application.timeline.filterFunction = null;231 if(mode == 3 || mode == 4)Application.application.timeline.filterFunction = null; 247 232 mode = 0; 248 233 next(run); air/TLife/trunk/src/uwi/thread/event/PostEventThread.as
r2624 r2626 82 82 return; 83 83 } 84 84 85 next(waitEvents); 85 86 } air/TLife/trunk/src/uwi/ui/TextAreaEditor.mxml
r2546 r2626 45 45 </mx:Script> 46 46 47 <mx:TextArea id="area" width="100%" height="100%" horizontalScrollPolicy="off" />47 <mx:TextArea id="area" width="100%" height="100%" horizontalScrollPolicy="off" restrict=" -○" /> 48 48 <mx:Button label="OK" click="onOK()" /> 49 49 </mx:VBox> air/TLife/trunk/src/uwi/ui/answer/Answer.mxml
r2501 r2626 9 9 > 10 10 <mx:VBox width="100%" height="100%"> 11 <mx:TextInput id="input" text="" width="100%" height="50%" enter="onOK()" />11 <mx:TextInput id="input" text="" width="100%" height="50%" enter="onOK()" restrict=" -○" /> 12 12 <mx:HBox width="100%" height="50%"> 13 13 <mx:Button id="ok" label="OK" width="100%" click="onOK()" /> air/TLife/trunk/src/uwi/ui/dbsearch/DBSearchWindow.mxml
r2546 r2626 100 100 <mx:Form width="100%" height="100%"> 101 101 <mx:FormItem label="ユーザーID条件" direction="horizontal" width="100%"> 102 <uwi:ComboBoxEx id="queryuserid" width="100%" prompt="" editable="true" dataProvider="{historyuserid}" />102 <uwi:ComboBoxEx id="queryuserid" width="100%" prompt="" editable="true" dataProvider="{historyuserid}" restrict="A-Za-z0-9_ " /> 103 103 </mx:FormItem> 104 104 <mx:FormItem label="内容条件" direction="horizontal" width="100%"> 105 <uwi:ComboBoxEx id="querycontent" width="100%" prompt="" editable="true" dataProvider="{historycontent}" />105 <uwi:ComboBoxEx id="querycontent" width="100%" prompt="" editable="true" dataProvider="{historycontent}" restrict=" -○" /> 106 106 </mx:FormItem> 107 107 <mx:FormItem label="日付条件" direction="horizontal" width="100%"> 108 <mx:ComboBox id="querydate" width="100%" prompt="∞" editable="true" />108 <mx:ComboBox id="querydate" width="100%" prompt="∞" editable="true" restrict=" -○" /> 109 109 <mx:Label text="日前から" /> 110 110 </mx:FormItem> … … 118 118 <mx:CheckBox id="condSimpleMigemo" label="簡易Migemo" /> 119 119 <mx:CheckBox id="condMigemo" label="Migemo" /> 120 <mx:CheckBox id="condSocialIME" label="SocialIME" />120 <mx:CheckBox id="condSocialIME" label="SocialIME" enabled="false" /> 121 121 <!-- <mx:CheckBox id="cond2byte" label="全角・半角を区別" />--> 122 122 <!-- <mx:CheckBox id="condHirakata" label="ひらがな・カタカナを区別" /> --> air/TLife/trunk/src/uwi/ui/friends/Friends.mxml
r2621 r2626 56 56 </mx:Script> 57 57 58 <mx:TextInput id="searchbox" width="100%" />58 <mx:TextInput id="searchbox" width="100%" restrict=" -○" /> 59 59 <mx:DataGrid id="datagrid" width="100%" height="100%" dataProvider="{friendsinfo}" 60 60 useRollOver="true" air/TLife/trunk/src/uwi/ui/globalconfig/GlobalConfig.mxml
r2621 r2626 96 96 <mx:Form width="100%" height="100%"> 97 97 <mx:FormItem width="100%" height="25" label="ユーザーID"> 98 <mx:TextInput id="userid" width="100" height="25" />98 <mx:TextInput id="userid" width="100" height="25" restrict=" -○" /> 99 99 </mx:FormItem> 100 100 <mx:FormItem width="100%" height="25" label="パスワード"> 101 <mx:TextInput id="password" width="100" height="25" displayAsPassword="true" />101 <mx:TextInput id="password" width="100" height="25" displayAsPassword="true" restrict=" -○" /> 102 102 </mx:FormItem> 103 <mx:Button id="oauthbtn" label="OAuth認証" /> 103 104 </mx:Form> 104 105 </mx:VBox> 105 106 <mx:VBox id="tn1" label="詳細設定" width="100%" height="100%"> 106 <mx:TextInput id="searchbox" width="100%" />107 <mx:TextInput id="searchbox" width="100%" restrict=" -○" /> 107 108 <mx:DataGrid id="datagrid" width="100%" height="100%" dataProvider="{setvalue}" 108 109 useRollOver="true" air/TLife/trunk/src/uwi/ui/search/SearchWindow.mxml
r2546 r2626 121 121 <mx:Form width="100%" height="100%"> 122 122 <mx:FormItem label="ユーザーID条件" direction="horizontal" width="100%"> 123 <uwi:ComboBoxEx id="queryuserid" width="100%" prompt="" editable="true" dataProvider="{historyuserid}" />123 <uwi:ComboBoxEx id="queryuserid" width="100%" prompt="" editable="true" dataProvider="{historyuserid}" restrict="A-Za-z0-9_ " /> 124 124 </mx:FormItem> 125 125 <mx:FormItem label="内容条件" direction="horizontal" width="100%"> 126 <uwi:ComboBoxEx id="querycontent" width="100%" prompt="" editable="true" dataProvider="{historycontent}" />126 <uwi:ComboBoxEx id="querycontent" width="100%" prompt="" editable="true" dataProvider="{historycontent}" restrict=" -○" /> 127 127 </mx:FormItem> 128 128 <mx:HBox> … … 142 142 <mx:CheckBox id="condSimpleMigemo" label="簡易Migemo" /> 143 143 <mx:CheckBox id="condMigemo" label="Migemo" /> 144 <mx:CheckBox id="condSocialIME" label="SocialIME" />144 <mx:CheckBox id="condSocialIME" label="SocialIME" enabled="false" /> 145 145 <!-- <mx:CheckBox id="condHirakata" label="ひらがな・カタカナを区別" /> --> 146 146 <mx:CheckBox id="closeDialog" label="検索後、ダイアログを閉じる" /> air/TLife/trunk/src/uwi/util/CommonData.as
r2621 r2626 84 84 public static var RPprevpos : int = -1; 85 85 86 public static var incrementalSearchJudgers : Array; 87 86 88 public static var urlcache : Object = { }; // URL解決用のキャッシュ 87 89

