タイムアウトしない不具合を修正した。
@@ -3,8 +3,8 @@ | ||
3 | 3 | xmlns:android="http://schemas.android.com/apk/res/android" |
4 | 4 | package="jp.gr.java_conf.kumagusu" |
5 | 5 | android:installLocation="auto" |
6 | - android:versionCode="0116" | |
7 | - android:versionName="1.16"> | |
6 | + android:versionCode="0117" | |
7 | + android:versionName="1.17"> | |
8 | 8 | |
9 | 9 | <uses-sdk |
10 | 10 | android:minSdkVersion="5" |
@@ -28,6 +28,7 @@ | ||
28 | 28 | import android.content.DialogInterface; |
29 | 29 | import android.content.Intent; |
30 | 30 | import android.database.Cursor; |
31 | +import android.graphics.drawable.Drawable; | |
31 | 32 | import android.net.Uri; |
32 | 33 | import android.os.Build; |
33 | 34 | import android.os.Bundle; |
@@ -640,6 +641,9 @@ | ||
640 | 641 | // テンポラリ使用中 |
641 | 642 | outState.putBoolean("useTemporaryFile", this.useTemporaryFile); |
642 | 643 | |
644 | + // タイマー開始値を保存 | |
645 | + MainApplication.getInstance(this).getPasswordTimer().SaveInstanceState(outState); | |
646 | + | |
643 | 647 | super.onSaveInstanceState(outState); |
644 | 648 | } |
645 | 649 |
@@ -707,6 +711,11 @@ | ||
707 | 711 | { |
708 | 712 | this.useTemporaryFile = savedInstanceState.getBoolean("useTemporaryFile"); |
709 | 713 | } |
714 | + | |
715 | + // タイマー開始値 | |
716 | + MainApplication.getInstance(this).getPasswordTimer().RestoreInstanceState(savedInstanceState); | |
717 | + | |
718 | + super.onRestoreInstanceState(savedInstanceState); | |
710 | 719 | } |
711 | 720 | |
712 | 721 | /** |
@@ -861,6 +870,8 @@ | ||
861 | 870 | return true; |
862 | 871 | } |
863 | 872 | |
873 | + MainApplication.getInstance(this).getPasswordTimer().resetTimeout(); | |
874 | + | |
864 | 875 | return false; |
865 | 876 | } |
866 | 877 |
@@ -1287,6 +1298,7 @@ | ||
1287 | 1298 | * @param edtbl 編集中のときtrue |
1288 | 1299 | * @param forceWrite 強制書き込み時 |
1289 | 1300 | */ |
1301 | + @SuppressWarnings("deprecation") | |
1290 | 1302 | private void setEditable(boolean edtbl, boolean forceWrite) |
1291 | 1303 | { |
1292 | 1304 | Log.d("EditorActivity", "*** START setEditable()"); |
@@ -1311,14 +1323,24 @@ | ||
1311 | 1323 | if (!forceWrite) |
1312 | 1324 | { |
1313 | 1325 | // 編集中はエディタの枠線を赤に設定 |
1326 | + Drawable editorFrameDrawable; | |
1314 | 1327 | if (this.editable) |
1315 | 1328 | { |
1316 | - this.memoEditText.setBackgroundDrawable(getResources().getDrawable(R.drawable.editable_border_true)); | |
1329 | + editorFrameDrawable = getResources().getDrawable(R.drawable.editable_border_true); | |
1317 | 1330 | } |
1318 | 1331 | else |
1319 | 1332 | { |
1320 | - this.memoEditText.setBackgroundDrawable(getResources().getDrawable(R.drawable.editable_border_false)); | |
1333 | + editorFrameDrawable = getResources().getDrawable(R.drawable.editable_border_false); | |
1321 | 1334 | } |
1335 | + | |
1336 | + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) | |
1337 | + { | |
1338 | + this.memoEditText.setBackground(editorFrameDrawable); | |
1339 | + } | |
1340 | + else | |
1341 | + { | |
1342 | + this.memoEditText.setBackgroundDrawable(editorFrameDrawable); | |
1343 | + } | |
1322 | 1344 | } |
1323 | 1345 | } |
1324 | 1346 |
@@ -217,17 +217,59 @@ | ||
217 | 217 | /** |
218 | 218 | * モードなし. |
219 | 219 | */ |
220 | - NONE, | |
220 | + NONE(10), | |
221 | 221 | |
222 | 222 | /** |
223 | 223 | * フォルダ表示. |
224 | 224 | */ |
225 | - FOLDER_VIEW, | |
225 | + FOLDER_VIEW(20), | |
226 | 226 | |
227 | 227 | /** |
228 | 228 | * 検索表示. |
229 | 229 | */ |
230 | - SEARCH_VIEW, | |
230 | + SEARCH_VIEW(30), ; | |
231 | + | |
232 | + /** int値 */ | |
233 | + private final int id; | |
234 | + | |
235 | + /** | |
236 | + * int値からenumを生成する。。 | |
237 | + * | |
238 | + * @param id int値 | |
239 | + */ | |
240 | + private MemoListViewMode(final int id) | |
241 | + { | |
242 | + this.id = id; | |
243 | + } | |
244 | + | |
245 | + /** | |
246 | + * enumのint値を返す。 | |
247 | + * | |
248 | + * @return enumのint値 | |
249 | + */ | |
250 | + public int getModeId() | |
251 | + { | |
252 | + return this.id; | |
253 | + } | |
254 | + | |
255 | + /** | |
256 | + * intをenumに変換する。 | |
257 | + * | |
258 | + * @param id int値 | |
259 | + * @return enum値 | |
260 | + */ | |
261 | + public static MemoListViewMode getMemoListViewMode(int id) | |
262 | + { | |
263 | + for (MemoListViewMode mode : MemoListViewMode.values()) | |
264 | + { | |
265 | + if (mode.getModeId() == id) | |
266 | + { | |
267 | + return mode; | |
268 | + } | |
269 | + } | |
270 | + | |
271 | + return FOLDER_VIEW; | |
272 | + } | |
231 | 273 | } |
232 | 274 | |
233 | 275 | /** |
@@ -754,6 +796,12 @@ | ||
754 | 796 | // Kumagusuから起動 |
755 | 797 | outState.putBoolean("executeByKumagusu", this.executeByKumagusu); |
756 | 798 | |
799 | + // リスト表示モード | |
800 | + outState.putInt("memoListViewMode", this.memoListViewMode.getModeId()); | |
801 | + | |
802 | + // タイマー開始値を保存 | |
803 | + MainApplication.getInstance(this).getPasswordTimer().SaveInstanceState(outState); | |
804 | + | |
757 | 805 | super.onSaveInstanceState(outState); |
758 | 806 | } |
759 | 807 |
@@ -816,6 +864,15 @@ | ||
816 | 864 | this.executeByKumagusu = savedInstanceState.getBoolean("executeByKumagusu"); |
817 | 865 | } |
818 | 866 | |
867 | + // リスト表示モード | |
868 | + if (savedInstanceState.containsKey("memoListViewMode")) | |
869 | + { | |
870 | + this.memoListViewMode = MemoListViewMode.getMemoListViewMode(savedInstanceState.getInt("memoListViewMode")); | |
871 | + } | |
872 | + | |
873 | + // タイマー開始値 | |
874 | + MainApplication.getInstance(this).getPasswordTimer().RestoreInstanceState(savedInstanceState); | |
875 | + | |
819 | 876 | super.onRestoreInstanceState(savedInstanceState); |
820 | 877 | } |
821 | 878 |
@@ -2,11 +2,9 @@ | ||
2 | 2 | |
3 | 3 | import java.util.Date; |
4 | 4 | |
5 | -import jp.gr.java_conf.kumagusu.MainApplication; | |
6 | 5 | import jp.gr.java_conf.kumagusu.preference.MainPreferenceActivity; |
7 | - | |
8 | -import android.app.Activity; | |
9 | 6 | import android.content.Context; |
7 | +import android.os.Bundle; | |
10 | 8 | import android.util.Log; |
11 | 9 | |
12 | 10 | /** |
@@ -40,6 +38,7 @@ | ||
40 | 38 | { |
41 | 39 | this.context = con; |
42 | 40 | |
41 | + this.startDateTime = 0; | |
43 | 42 | this.timeout = false; |
44 | 43 | } |
45 | 44 |
@@ -92,28 +91,6 @@ | ||
92 | 91 | } |
93 | 92 | |
94 | 93 | /** |
95 | - * 自動クローズ処理. | |
96 | - * | |
97 | - * @author tarshi | |
98 | - */ | |
99 | - class AutoClosure implements Runnable | |
100 | - { | |
101 | - @Override | |
102 | - public void run() | |
103 | - { | |
104 | - // 一応タイマを破棄 | |
105 | - stop(); | |
106 | - | |
107 | - // パスワードをクリア | |
108 | - MainApplication.getInstance((Activity) context).clearPasswordList(); | |
109 | - | |
110 | - // アプリケーションを終了する | |
111 | - Activity act = (Activity) context; | |
112 | - act.moveTaskToBack(true); | |
113 | - } | |
114 | - } | |
115 | - | |
116 | - /** | |
117 | 94 | * タイムアウト発生?を返す. |
118 | 95 | * |
119 | 96 | * @return タイムアウト発生のときtrue |
@@ -130,4 +107,35 @@ | ||
130 | 107 | { |
131 | 108 | this.timeout = false; |
132 | 109 | } |
110 | + | |
111 | + /** | |
112 | + * タイマー開始時刻を保存する。 | |
113 | + * @param outState バンドル | |
114 | + */ | |
115 | + public void SaveInstanceState(Bundle outState) | |
116 | + { | |
117 | + Log.d("Timer", "*** START SaveInstanceState()"); | |
118 | + | |
119 | + outState.putLong("kumagusuTimerStartDateTime", this.startDateTime); | |
120 | + outState.putBoolean("kumagusuTimerTimeout", this.timeout); | |
121 | + } | |
122 | + | |
123 | + /** | |
124 | + * タイマー開始時刻を再現する。 | |
125 | + * @param savedInstanceState バンドル | |
126 | + */ | |
127 | + public void RestoreInstanceState(Bundle savedInstanceState) | |
128 | + { | |
129 | + Log.d("Timer", "*** START RestoreInstanceState()"); | |
130 | + | |
131 | + if (savedInstanceState.containsKey("kumagusuTimerStartDateTime")) | |
132 | + { | |
133 | + this.startDateTime = savedInstanceState.getLong("kumagusuTimerStartDateTime"); | |
134 | + } | |
135 | + | |
136 | + if (savedInstanceState.containsKey("kumagusuTimerTimeout")) | |
137 | + { | |
138 | + this.timeout = savedInstanceState.getBoolean("kumagusuTimerTimeout"); | |
139 | + } | |
140 | + } | |
133 | 141 | } |