! LATEST

* フォーカスはどこに行くべきか
Title, Content, Focus
    O,       O, Title
    X,       O, Title
    O,       X, Content
    X,       X, Title

* 編集画面でのアクションバーの自動非表示設定のデフォルト
** small-port  => on
** small-land  => on
** medium-port => off
** medium-land => on
** large-port  => off
** large-land  => off
** xlarge-port => off
** xlarge-land => off

#############################
!! notepad-app

* テンプレートから新規作成して回転した際に未編集でも保存されてしまうバグ

* NoteDetailActivity のリファクタリング
*** NoteDetailViewer
*** NoteDetailEditor

* ノート表示画面のタイトルや本文のクリック処理で編集画面へ遷移

* ノート表示画面にコンテキストメニューの実装
** コピー
** 共有

* ノートのエクスポート機能
* ノートのインポート機能

* ソート順を変更指定可能にする
** 作成日時 ≒ ID 
** 変更日時
** タイトル(?)
* 設定:ノート一覧画面のソート順


#############################
!! notepad-app-level-11

* テンプレートから新規作成して回転した際に未編集でも保存されてしまうバグ

* アクションバー自動非表示時にジェスチャーで表示できるようにする

* 設定:ノート一覧画面のソート順追加


#############################
!! notepad-common

* TimeFormatUtils 修正
** 西暦部分のないフォーマットにできないか？

* NoteSearchQueryParser に日付記法とかもあってもいいかも
** 書式
*** mt:<yyyymmdd[HH[MM[SS]]]>
*** ct:<yyyymmdd[HH[MM[SS]]]>
** 手順
*** ContentProvider 側で処理できるようなURIを決める
    -> contents://org.routine_work.notepad.noteprovider/notes?mt=<yyyymmddHHMMSS>-<yyyymmddHHMMSS>
    -> contents://org.routine_work.notepad.noteprovider/notes?ct=<yyyymmddHHMMSS>-<yyyymmddHHMMSS>
*** ContentProvider 側の処理を実装
*** NoteSearchQueryParser にパース機能を実装
*** NoteSearchQueryParser を利用するコードの修正

############################################################
! 1.0.2

------------------------------
!! notepad-app

* ノート編集画面の EditText でスクロールバーが出ない
** ScrollView にタイトルと本文のものを入れた

------------------------------
!! notepad-app-level-11

* ノート編集中に新規作成後に回転すると編集内容が前に
  編集していたものになってしまうバグ

* ノート編集画面の EditText でスクロールバーが出ない
** ScrollView にタイトルと本文のものを入れた


------------------------------
!! notepad-common


############################################################
! 0.1.7

#############################
!! notepad-app

#* ノート一覧の ListView でファーストスクロールを有効化

#* デバッグ用機能
#** デバッグ用画面を設定画面内に作成
#** データ大量作成機能

#* 日本語リソース作成

#* テンプレートの初期データを修正
#** Daily Report を追加

#* テンプレートの初期データ作成時に作成済みかをチェックするように修正
#** 現在はテンプレートデータがなければ作成するようになっている
#** SharedPreference に作成したかどうかを記録するようにする

#* NotepadActivity#onDestroy() で NoteDBOptimizer を10回に1回くらい自動起動する

#* ノート一覧のタイトルや本文の TextView にヒントを設定

#* テンプレート編集画面に edit_same_title を追加
#** 手順(notepad-app)
#*** テンプレートの初期データに項目を追加
#**** data_note_template.xml
#**** string.xml
#**** NoteTemplateInitializer.java
#*** テンプレート編集画面を修正
#**** note_template_detail_item.xml
#**** NoteTemplateDetailActivity.java


#############################
!! notepad-app-level-11

#* デバッグ用機能
#** デバッグ用画面を設定画面内に作成
#** データ大量作成機能

#* ノート一覧の ListView でファーストスクロールを有効化

#* 日本語リソース作成

#* テンプレートの初期データを修正
#** Daily Report を追加

#* テンプレートの初期データ作成時に作成済みかをチェックするように修正
#** 現在はテンプレートデータがなければ作成するようになっている
#** SharedPreference に作成したかどうかを記録するようにする

#* NotepadActivity#onDestroy() で NoteDBOptimizer を10回に1回くらい自動起動する

#* ノート一覧のタイトルや本文の TextView にヒントを設定

#* テンプレート編集画面に edit_same_title を追加
#** 手順(notepad-app-level-11)
#*** テンプレートの初期データに項目を追加
#**** data_note_template.xml
#**** string.xml
#**** NoteTemplateInitializer.java
#*** テンプレート編集画面を修正
#**** note_template_detail_item.xml
#**** NoteTemplateDetailActivity.java


#############################
!! notepad-common

#* ノート用データベース最適化機能
#** NoteDBOptimizer
#** IntentService として実装
#** vacuum して reindex

#* NoteTemplate コンテントプロバイダになカラムを追加
#** 名前
#*** edit_same_title 
#** 意味
#*** テンプレートからノートを作成する際に同じ名前のノートを検索してあればそれを
#    編集しているが、その動作を制御する値。
#*** true => 同じ名前のタイトルのノートを編集する
#*** false => タイトルをチェックせずに常に新規ノートを作成する
#** 手順(notepad-common)
#*** NoteStore.NoteTemplate.Columns にて定数を追加
#*** NoteTemplate モデルクラスを修正
#*** NoteDBConstans の DB バージョンを更新
#*** NoteDBConstans でテーブル作成 SQL 修正
#*** NoteDBHelper にデータコンバート処理を追加
#*** NoteUtils.startNoteDetailActivityWithTemplate() を修正

############################################################
! 0.1.6

!! notepad-app

#* 追記時にテンプレートの内容を追記するように修正
#** ノートのテンプレートから作成時に既存ノートを開く際に
#   本文テンプレートを展開して本文に追記するように修正した。

#* 設定:ノート一覧画面の本文の表示行数を設定変更可能にする
#** レイアウトファイルに設定してあるものをロジックで上書きする必要がある
#** xml/notepad_preferences.xml に設定項目を定義
#** preference.xml にキーを定義
#** strings_preference.xml にメッセージを定義
#** strings_note_list_item.xml を preferences_note_list_item.xml に
#   変更してデフォルト値を記述する(ファイルはスクリーンサイズ毎)
#** NotepadPreferenceUtils に読み出しメソッドを作成
#** NoteCursorAdapter の View 初期化時に設定を読み出して設定するよう修正


#* アクションバー自動非表示の設定のデフォルト値をスクリーンサイズ毎に定義

#* ノート編集画面にアクションバー表示、非表示のオプションメニューを追加

#* Dialog 用のテーマを作成
#** Theme.Notepad.Dark.Dialog
#** Theme.Notepad.Light.Dialog

#* AddNewNoteActivity をリファクタリング
#** NoteUtils のメソッドを呼ぶように修正
#** 不要になったメソッドの削除

#* 新規ノート作成時にテンプレートを選ぶ処理を変更
#** 現在は NoteTemplateListActivity に ACTION_PICK を送って選択している
#** 元のアクティビティで完結したい
#   -> NoteTemplatePickerDialog を実装


#############################
!! notepad-app-level-11

#* 追記時にテンプレートの内容を追記するように修正
#** ノートのテンプレートから作成時に既存ノートを開く際に
#   本文テンプレートを展開して本文に追記するように修正した。

#* 設定:ノート一覧画面の本文の表示行数を設定変更可能にする
#** レイアウトファイルに設定してあるものをロジックで上書きする必要がある
#** xml/notepad_preferences.xml に設定項目を定義
#** preference.xml にキーを定義
#** strings_preference.xml にメッセージを定義
#** strings_note_list_item.xml を preferences_note_list_item.xml に
#   変更してデフォルト値を記述する(ファイルはスクリーンサイズ毎)
#** NotepadPreferenceUtils に読み出しメソッドを作成
#** NoteCursorAdapter の View 初期化時に設定を読み出して設定するよう修正


#* 各レイアウトのリファクタリング
#** 不要なコンテナを削除
#** @layout/*_activity.xml のルートに @style/body を設定する。
#** @layout/*_fragment.xml に設定してある @style/body は削除する
#** small-land 用の 設定値を定義
#** 余白の値を微修正

#* テンプレート一覧、編集画面のホームボタンの処理を実装
#** ホームボタンを押した際に NotepadActivity に戻る様に実装

#* 新規ノート作成時にテンプレートを選ぶ処理を変更
#** 現在は NoteTemplateListActivity に ACTION_PICK を送って選択している
#** 元のアクティビティで完結したい
#** 実現方法 
#*** Dialog + ListView
#*** PopupMenu 
#*** ActionProvider (Android 4.0 以降)
#*** ListPopupWindow 
#** とりあえず Dialog + ListView で実装

#* NotepadConstants から未使用の定数を削除
#** NOTE_LIST_MAPPING_FROM
#** NOTE_LIST_MAPPING_TO

#* NoteListItemViewBinder を NoteCursorAdapter に変更


#############################
!! notepad-common

#* 設定関連のファイル名の修正
#** values/preferences_key_value.xml -> values/preference.xml
#** values/preferences_key_value_actionbar.xml -> values/preference_actionbar.xml

#* テンプレートの書式を変更
#** 変数名を変更、変数名の大文字小文字は無視する
#*** #{date} : 日付
#*** #{time} : 時間

#* 定数定義用インターフェースを notepad-comon に移動
#** NotepadConstants
#** NoteTemplateConstants

#* ノートの複数削除をループではなく SQL 一つで行うようにする

#* isNoteItemUri() が2か所にあるのでどちらか削除
#** NoteStore.isNoteItemUri(Uri uri) : boolean
#** NoteUtils.isNoteItemUri(Uri uri) : boolean

#* NoteStore の未使用のユーティリティーメソッドを削除
#** NoteStore.insertNote() : Uri
#** NoteStore.updateNote() : int


############################################################
! 0.1.5

!! notepad-app

#* OptionMenu から検索を開くとソフトウェアキーボードが開かないバグを修正
#** 検索ボタンからだと正常にソフトウェアキーボードが開く

#* ノートの編集開始時にフォーカスを修正する

#* 設定 : 編集画面で本文編集時のアクションバーの非表示の有効無効

#* view_notes_activity.xml を notepad_activity.xml に名前を変更

#* ic_lock と ic_unlock のアイコンが区別しにくいのを修正

#* ノート編集時のロックを ToggleButton から Button + ダイアログに変更
#** ToggleButton はキーボードでオンオフ操作できない
#** ロック解除操作が簡単すぎるのはよくない
#** ロック、アンロックメッセージを作成

#* NoteDetailActivity1 をテスト実装
#** 表示モードでは ScrollView + TextView で表示
#** 編集モードは従来通り

#* ノート編集画面のリファクタリング
#** モデルクラス Note を利用するように修正

#* ロックボタン用アイコンの作成
#** drawable/ic_lock_dark
#** drawable/ic_lock_light
#** drawable/ic_unlock_dark
#** drawable/ic_unlock_light

#* プリファレンス関連の画面も設定されたテーマを使うように修正

#* dimens/editText_textSize を削除
# dimens/note_template_detail_item_value_textSize を定義

#* ノート一覧画面のリストアイテムのレイアウトを変更
#** 日時をタイトルと同じ並びにする

#* ノート編集画面にタイトルロック機能対応
#** ロック状態に応じて EditText の有効無効を設定
#** ロック状態を変更する機能

#* ListView の listSelector 変更
#** 端末固有の色で表示されていたものを ActionBar の色に合わせるように修正
#** theme に設定して全アクティビティに反映

#* テンプレート編集画面で TextView をクリックしても EditTextActivity が
#起動しないバグを修正

#* EditDailyActivity を削除

#* 新規作成のショートカット作成画面
#** テンプレートを選択して新規ノートを作成するショートカットを作成する機能
#** AddNewNoteActivity を直接呼び出す

#* ランチャーアイコンを作成
#** ic_launcher_notepad_edit
#** ic_launcher_notepad_add

#* テンプレートから新規ノート作成のショートカット作成画面
#** 特定のテンプレートから新規ノートを作成するショートカットを作成する機能
#   -> CreateNoteTemplateShortcut

#* ショートカット作成アクティビティを別パッケージに分離

#* EditTextActivity を修正
#** ホームボタン削除
#** キャンセルボタンを左に
#** EXTRA_TITLE を EditTextの ヒントにも表示するように修正
#** マルチラインとシングルラインで別の EditText を用意して切り替えるように修正

#* テンプレート選択画面作成 (NoteTemplateActivity に実装)
#** テンプレートが2つのときに新規ノート作成でなにもない画面になるバグを修正

#* テンプレートを元に新規ノートを作成する画面 (AddNewNoteActivity に実装)
#** ノート追加からテンプレート選択画面を開いた際に、バックで戻ると何もない画面になるバグを修正

#* テンプレートデータ初期化処理を作成

#* ノート詳細画面の ACTION_EDIT 時のノート存在チェック処理のバグを修正
#** 再現手順
#*** ノートが存在しない状態
#*** ノート新規作成
#*** 編集せずに画面を回転
#*** 「The specified note does not exist.」と表示されてアクティビティが終了

#* テンプレート編集画面作成

#* テンプレート一覧画面作成
#** テンプレート一覧のソート順をID昇順に変更

#* Theme.Notepad.Black を Theme.Notepad.Dark に変更

#* Theme 設定で summary を表示させる

#* 設定:テーマ選択機能

#* Theme.Light ベースのテーマを追加
#** Theme.Notepad.Light を作成
#** drawable/edit_text_holo_light.xml を作成
#*** textfield_holo_light_default.9.png
#*** textfield_holo_light_disabled.9.png
#*** textfield_holo_light_disabled_focused.9.png
#*** textfield_holo_light_focused.9.png
#** アイコンが黒背景を前提に作ってあるので白背景用を作成する
#*** 白背景 : #333333 で 60% の透過度
#*** 黒背景 : #FFFFFF で 80% の透過度
#*** ic_add.png
#*** ic_clear.png
#*** ic_delete.png
#*** ic_edit.png
#*** ic_home.png
#*** ic_search.png


#* 設定画面作成
#** AboutApp 作成

#* ノートをインテントで送信する機能を追加
#** ノート一覧のコンテキストメニュー
#*** note_list_context_menu.xml
#*** NotepadActivity 
#** ノート表示画面のオプションメニュー
#*** share_note_option_menu.xml を追加
#*** NoteDetailActivity を修正



!! notepad-app-level-11

#* ノート編集画面にタイトルロック機能対応
#** ロック状態に応じて EditText の有効無効を設定
#** ロック状態を変更する機能

#* 設定 : 編集画面で本文編集時のアクションバーの非表示の有効無効
#** デフォルト値を画面サイズ別、画面の向き別に定義
#*** small => on
#*** small-land => on
#*** medium => off
#*** medium-land => on
#*** large => off
#*** xlarge => off

#* ノートの編集開始時のフォーカスを修正する

#* NoteDetailActivity の実装変更
#** EditNoteFragment を NoteDetailFragment から分離
#** NoteDetailFragment を ScrollView + TextView で表示するように修正

#* ic_lock と ic_unlock のアイコンが区別しにくいのを修正

#* NoteDetailActivity のフラグメントのタグを EDIT と DELETE 時で分離
#** 廃止 NOTE_DETAIL_TAG 
#** 追加 FT_NOTE_EDIT 
#** 追加 FT_NOTE_DELETE 

#* プリファレンス関連の画面も設定されたテーマを使うように修正

#* EditDailyActivity を削除

#* テンプレートから新規ノート作成をするショートカット作成画面
#** 特定のテンプレートから新規ノートを作成するショートカットを作成する機能
#   -> CreateNoteTemplateShortcut

#* 新規作成のショートカット作成画面
#** テンプレートを選択して新規ノートを作成するショートカットを作成する機能
#** AddNewNoteActivity を直接呼び出す
#   -> CreateAddNewNoteShortcutActivity

#* ショートカット作成アクティビティを別パッケージに分離

#* テンプレートを元に新規ノートを作成する画面
#  -> AddNewNoteActivity

#* ListView の listSelector 変更
#** 端末固有の色で表示されていたものを ActionBar の色に合わせるように修正
#   -> ActionBar を OS のものを使っているので不要
#** theme に設定して全アクティビティに反映

#* テンプレート編集画面作成 (NoteDetailActivity)
#** フルスクリーンテキスト編集画面作成(EditTextActivity)

#* テンプレート一覧画面作成
#** ソート順はID昇順
#** テンプレート選択(ACTION_PICK 対応)機能

#* ノートのテンプレートデータを初期化する処理を実装
#** IntentService として実装
#   -> NoteTemplateInitializer

#* ノート詳細画面の ACTION_EDIT 時のノート存在チェック処理のバグを修正
#** 再現手順
#*** ノートが存在しない状態
#*** ノート新規作成
#*** 編集せずに画面を回転
#*** 「The specified note does not exist.」と表示されてアクティビティが終了
#** notepad-app-level-11 でも再現した
#   -> 修正

#* ランチャーアイコンを追加
#** ic_launcher_notepad_edit
#** ic_launcher_notepad_add

#* Theme.Holo.Light ベースのテーマを追加
#* 設定:テーマ選択

#* 設定:ノート一覧のレイアウト設定
#** シングルペインモード
#** マルチペインモード
#** 縦画面時の設定
#** 横画面時の設定

#* 設定:設定初期化画面の作成

#* 設定画面の作成
#** とりあえず AboutApp だけの設定画面を作成
#** 手順
#*** NotepadPreferenceActivity ?
#*** xml/notepad_preference.xml 
#*** AboutAppActivity 実装
#*** AndroidManifest.xml に NotepadPreferenceActivity を登録

#* ノート表示画面の EditText のスタイルを設定
#** 文字をもう少し明るくする

#* ノート編集画面のオプションメニューに Share を追加

#* ノートをインテントで送信する機能を追加
#** ノート一覧のコンテキストメニュー
#*** menu/note_list_context_menu.xml を変更
#*** NoteListFragment.java を変更
#** ノート表示画面のオプションメニュー
#*** menu/share_note_option_menu.xml を追加
#*** ViewNoteFragment.java を変更


#* PickNoteActivity のデータロードを CursorLoader を使うように修正

#* ショートカット作成時に PickNoteActivity を開いた際にタイトルが表示されないバグ

!! notepad-common

#* DB とコンテントプロバイダののリファクタリング
#** Note と NoteTemplate の content_locked を削除
#** Note と NoteTemplate のフィールドのカプセル化

#* Uri タイプチェックユーティリティをリファクタリング
#** 旧 : NoteDetailActivity#isNoteItemUri(Uri uri) : boolean 
#** 新 : NoteStore.isNoteItemUri(Context context, Uri uri) : boolean 

#* Content Provider のノートテンプレートに名前のカラムを追加

#* Content Provider にノートテンプレートを追加

#* NoteStore の未使用メソッドを削除
#** NoteStore.getAllNotes(ContentResolver cr) : Cursor
#** NoteStore.selectByText(ContentResolver cr, String queryText) : Cursor

#* タイトルや本文の編集の可不可のフラグを導入
#** カラム名
#*** title_locked
#*** text_locked
#** EditDailyNoteActivity などで作成した場合、デフォルトで title_locked を true にする
#** テーブル構成変更なので SQLite のコンバートロジックが必要
#*** とりあえず TSV に出力してインポートでいいのかな？
#*** テキストにタブが入っているか…
#*** 行毎にオブジェクトに変換して1行を1ファイルにシリアライズしてバックアップ

############################################################
! 0.1.4

!! notepad-app

#* ハードウェアキーボード利用時のIMEの制御を修正
#** EditText フォーカス時に適時IMEがオンオフするように

#* 編集画面の編集領域の修正
#** ソフトウェアキーボード表示時にViewをリサイズするように修正
#** 編集画面の本文編集部分にフォーカスが当たった際にアクションバーを非表示に修正

#* ボタンやオプションメニューから検索を選んだ場合に EditText にフォーカスが
#  移るがソフトウェアキーボードが表示されない。表示されるように修正。

#* 検索用 EditText を閉じた際に、ソフトウェアキーボードが閉じないバグ。

#* 検索用 EditText の actionSearch 時にソフトウェアキーボードを閉じるように修正

#* 検索用 EditText のアクションを検索用に設定する

#* 検索機能の見直し
#** NotepadActivity が検索処理を行うようにするべきか検討
#** する場合、検索状態を解除する手段が必要？
#   -> NotepadActivity で検索する

#* 検索機能をNotepadActivityで実行するように修正
#* 手順
#** NotepadActivity を修正
#*** 検索用EditText とボタンを設定
#*** 通常モードと検索モードの2モード作成する
#*** 検索用インテントに対する処理を実装
#*** NotepadActivity 内部の検索ボタンやメニューアイテムで検索用UIを表示
#*** 検索用インテントでクエリーが設定された場合も検索用UIを自動で表示
#*** 検索モードでバックキーが押された場合に通常モードに戻るようにする
#** AndroidManifest.xml を編集
#** SearchNoteActivity を削除

#* リファクタリング
#** id:add_button を add_new_note_button に変更
#** id:delete_button を delete_note_button に変更
#** id:edit_button を edit_note_button に変更
#** id:add_menuitem を add_new_note_menuitem に変更
#** id:edit_menuitem を edit_note_menuitem に変更
#** id:delete_menuitem を delete_note_menuitem に変更
#** id:view_menuitem を view_note_menuitem に変更
#** string:add を new_note に変更 内容を 「New Note」

#* 検索キャンセルボタン用のアイコンを作成

#* NoteDetailActivity で検索を受け付けないように修正
#** 理由
#*** 受け付けると NotepadActivity -> NoteDetailActivity -> NotepadActivity とループする
#*** NotepadActivity を singleInstance にしてみたが NoteDetailActivity -> NotepadActivity となってしまった
#** 手順
#*** AndroidManifest.xml で default_searchable の指定を削除
#*** NoteDetailActivity のオプションメニューの検索を削除
#*** 検索ボタンのある端末で検索が起動しないことを確認

#* NoteDetailActivity のオプションメニューを整理
#** 共通
#*** 終了
#** ノート一覧画面
#*** 新規 O
#*** 編集 X
#*** 削除 O
#*** 検索 O
#** ノート表示画面
#*** 新規 O
#*** 編集 O
#*** 削除 O
#** ノート編集画面
#*** 新規 O
#*** 編集 X
#*** 削除 X
#** ノート削除画面
#*** 新規 X
#*** 編集 X
#*** 削除 X

#* ActionBar のボタンの整理
#** ノート一覧画面
#*** 検索 O
#*** 新規 O
#*** 編集 X
#*** 削除 X
#** 表示画面
#*** 新規 X
#*** 編集 O
#*** 削除 O
#** 編集画面
#*** 新規 O
#*** 編集 X
#*** 削除 X
#** 削除画面
#*** 削除実行ボタン

#* 日記モード(?)
#** 日時に基づいたタイトルのノートを編集画面で開くようなショートカットを作成できるようにする。
#*** 日付をタイトルにしたノートを探して編集画面で開く
#*** ノートがなければ作成する。
#** 手順
#*** EditDailyNoteActivity を作成
#*** AndroidManifest.xml に EditDailyNoteActivity を登録

#* EditText 部分の複数行の場合のスタイルを変更する。
#  -> 却下
#** 手順
#*** 画像を用意
#**** textfield_holo_dark_multiline_default.9.png
#**** textfield_holo_dark_multiline_disabled.9.png
#**** textfield_holo_dark_multiline_disabled_focused.9.png
#**** textfield_holo_dark_multiline_focused.9.png
#*** edit_text_holo_dark.xml を修正
#** 結果
#*** android:state_multiline 属性は Android 3.0 以降からしか使えない

#* NotepadActivity にホームボタンを追加
#** 検索条件をリセットして一覧をリロードする？

#* NotepadActivity#goHomeActivity() の名前変更
#** NotepadActivity#goNoteListActivity() とか？
#   -> やっぱりなし

#* NoteDetailActivity を直接開いた際に、オプションメニューのQUITが機能していない
#  -> NotepadActivity.quitApplication() 後にfinish()を呼び出ス用に修正

!! notepad-app-level-11

#* ハードウェアキーボード利用時の IME 振る舞いを修正

#* 削除画面の新規ノートのオプションメニューを削除したい
#** NoteDetailActivity で追加しているので削除時にも追加されてしまう
#** ViewNoteFragment, EditNoteFragment, DeleteNoteFragment のうち
#   使うのは EditNoteFragment のみ？
#** EditNoteFragment で追加するように修正する

#* NotepadActivity のバックボタンの動作変更
#** SearchView 表示時なら SearchView を閉じる
#** SearchView 非表示ならデフォルト動作させる

#* NotepadActivity の SearchView で検索時に詳細画面を表示する際に
#  SearchView がアイコン化されるが、ソフトウェアキーボードが表示された
#  ままになるバグを修正。

#* グローバル検索から来た動作がおかしい
#** 再現手順
#*** NotepadActivity を起動
#*** ホームに戻る
#*** でグローバル検索ノートを選択して NotepadActivity にくる
#*** NotepadActivity で検索されていない
#** 原因
#*** 現状クエリーは initialQueryString に設定して SearchView 初期化時に設定
#*** SearchView はすでに初期化済みなので initialQueryString の値が反映されない
#** 対策
#*** SearchView が初期化済みかどうかで処理を分岐

#* SearchView の OnQueryTextSubmit でソフトウェアキーボードを非表示にする

#* Split Action Bar を設定
#  -> 不採用
#** pom.xml でビルドに使う SDK を Level 14 に修正
#** AndroidManifest.xml で activity 要素に
#   android:uiOption="splitActionBarWhenNarrow"
#   を設定
#*** 3.0 で実行した場合はこの属性は単に無視されるはず…
#** 4.x と 3.x でテスト
#** 結果
#*** 4.x の Phone で試したけど SearchView も下に行ってしまう
#*** SearchView を開いた際に SearchView の「×」ボタンとオプション
#    メニューが重なって×ボタンを押すことができない。

#* クエリー文字列をパースする処理を notepad-common に抽出する
#** クエリー文字列から ContentProvider URI を作成するパーサクラスを作成
#*** NoteSearchQueryParser
#*** NoteSearchQueryParser#parseQuery(CharSequence queryString) : Uri
#** 記法(とりあえず２つ)
#*** ID記法 id:<note_id> -> content://org.routine_work.notepad.noteprovider/notes/<note_id>
#*** その他 <query_string> -> content://org.routine_work.notepad.noteprovider/search_notes/<query_string>


#* ノート表示画面の表示、非表示の際にアニメーションする
#** LayoutTransition を使う
#** アニメーションを設定する
#

#* 検索処理の修正
#** 検討
#*** SearchView に SearchableInfo を設定しているのをやめる
#*** notepad-app と同様に SearchView のテキストチェンジでクエリーを更新
#*** 検索系の Intent 受信時は SearchView へのクエリー設定とする？
#   -> Intent 受信時に SearchView はまだできていないのでは？
#   -> できていないことは確認
#*** Intent 受信時に queryString を確認して SearchView 生成時に設定、生成後は
#    queryString は使わずに、 SearchView のみで動作すればよい
#** 手順
#*** SearchView に SearchableInfo を設定しているのをやめる
#*** SearchView.OnQueryTextListener を実装
#*** initializeWithInitent() で initialQueryString にクエリーを設定
#*** onCreateOptionsMenu() で SearchView が作成されたら initialQueryString を setQuery() で設定する

#* 日記モード(?)
#** 日時に基づいたタイトルのノートを編集画面で開くようなショートカットを作成できるようにする。
#*** 日付をタイトルにしたノートを探して編集画面で開く
#*** ノートがなければ作成する。
#** 手順
#*** EditDailyNoteActivity を作成
#*** AndroidManifest.xml に EditDailyNoteActivity を登録

#* NoteDetailFragment のアクションアイテムに削除を追加
#  -> 却下
#** 結果
#*** ifRoom指定でもオプションメニューのQUITの下に入ってしまう…
#*** やっぱりいまいち？
#*** MultiChoiceModeListener をやめて ContextMenu に Edit と Delete を置く？

#* 削除用のアクティビティを削除?
#   -> 却下
#** 手順
#*** DeleteNotesFragment 削除
#*** DeleteNotesActivity 削除
#** 結果
#*** MultiChoiceModeListener での削除を止めたので削除アクティビティが必要になった

!! notepad-common
#* ContentProvider の検索用URLを変更
#** 変更前 : contents://org.routine_work.notepad.noteprovider/search_notes/<query_word>
#** 変更後 : contents://org.routine_work.notepad.noteprovider/notes?q=<query_word>
#** 手順
#*** NoteProvider を修正
#*** NoteStore を修正
#*** NoteSearchQueryParser を修正
#*** NoteStore.CONTENT_SEACH_URI を削除

! 0.1.3

!! notepad-app
#* 検索機能

#* 新規作成での編集中に画面を回転させると2つノートが出来るバグ
#** 再現手順
#*** 新規作成
#*** テキストを入力
#*** 画面を回転
#*** テキストを編集
#*** 編集終了
#*** で2つの別のノートとして保存される
#** 原因
#*** 現在、画面回転時にアクティビティが再生成されるようになっている。
#*** 回転前のアクティビティの onPause() で編集内容は保存されている。
#*** しかし保存した先の ノートURI そのものを保存していない
#*** 回転後に生成されたアクティビティのノートURIは null のままである。
#*** 回転後のアクティビティの onPause() で新規ノートとして保存される。
#** 対策(以下のいずれか)
#*** 画面回転時にアクティビティを再生成しないように変更する。
#*** onSaveInstanceState() で noteUri を保存して、 onCreate() で復元する。 -> 採用

#* ノート編集画面で端末を回転させるとノート表示画面になってしまうバグ
#** 再現手順
#*** ノート表示画面で編集ボタンを押す
#*** ノート編集画面が表示される
#*** 端末を傾けて画面を回転させる
#*** ノート表示画面が表示される(編集した情報は保存されている)
#** 原因
#*** 現在、NoteDetailActivity は画面回転時にアクティビティを再生成するように設定されている。
#*** ノート表示画面からノート編集画面への遷移はアクティビティの再生成ではなくて onNewIntent() による遷移となっている。
#*** 画面回転時にアクティビティを再生成される場合、最初に生成されたときに送られたIntentが再度送られる。
#*** この場合であればノート表示画面生成時に送信された ACTION_VIEW を持つ Intent となる。
#** 対策(以下のいずれか)
#*** 画面回転時にアクティビティを再生成しないように変更する。
#*** 現在、表示モードなのか編集モードなのかをアクティビティが保存しておき、再生成時にそのモードを復元する。 -> 採用
#*** ノート表示画面とノート編集画面を別アクティビティにする。
#*** ノート表示画面を撤廃する(ACTION_VIEW のときも ACTION_EDIT と同じ扱いにする)。

#* 編集、追加、回転すると最初に編集しているノートを新規ノートの内容で上書きしてしまうバグ
#** 再現手順
#*** ノート編集画面を開く
#*** 新規ボタンを押して新規ノートを作成
#*** 画面を回転
#*** バックボタンで編集を完了
#*** 最初に編集していたノートが空になる
#** 原因
#*** 現在、NoteDetailActivity は画面回転時にアクティビティを再生成するように設定されている。
#*** ノート回転前は currentNoteUri は null であり、 回転後の Intent#getData() には最初の開いたノートの URI が入っている
#*** ノート回転後 currentNoteUri は Intent#getData() が採用されて最初の開いたノートの URI が入っている
#*** 保存時には最初の開いたノートの URI に上書きしてしまう
#** 対策
#*** 新規作成時の currentNoteUri を null ではなく、特別の値にする
#*** 保存済みかどうかの判定は null チェックではなくタイプにする


#* 編集画面と表示画面の EditText 部分のスタイルを設定する
#** テーマを定義して設定した。

!! notepad-app-level-11

#* 新規作成での編集中に画面を回転させると2つノートが出来るバグ
#** 再現手順
#*** 新規作成
#*** テキストを入力
#*** 画面を回転
#*** テキストを編集
#*** 編集終了
#*** で2つの別のノートとして保存される

#* ノート表示画面からノート追加をして戻ってきたときの処理を変更
#** 状況
#*** 現在は表示していたノートが表示される
#*** データに変更があっても更新されない。
#** 編集、追加などして戻った場合に一覧が表示される様に修正
#*** NotepadActivity#onActivityResult() で常に詳細表示を閉じるように変更
#** 対策
#*** アクティビティの開始を NotepadActivity に集中させて子アクティビティの
#    終了時の処理を NotepadActivity#onActivityResult() にまとめる。
#*** NoteControlCallback インターフェースを定義 NotepadActivity に実装
#**** void startViewNote(Uri noteUri);
#**** void startEditNote(Uri noteUri);
#**** void startDeleteNote(Uri noteUri);
#**** void startAddNote();
#**** void startDeleteNotes();
#*** 各フラグメントからの子アクティビティの呼び出しをコールバック呼び出しに置き換え。

#* ViewNotesFragment を CursorLoader を使うように変更

#* Android 3.1 でノートが保存されない場合がある
#** 再現手順
#*** 新規ノートを開く
#*** ノートを編集する
#*** 新規ノートを開く(前のノートは保存される)
#*** ノートを編集する
#*** 新規ノートを開くと編集中だったノートが保存されない
#** 原因
#*** 現在、 EditNoteFragment#onPause() と EditNoteFragment#onSaveInstanceState() で保存処理をしている
#*** 画面回転時以外では EditNoteFragment#onPause() の保存処理が期待される
#*** 新規ノート作成はインテントを送信して onNewIntent() で処理している
#*** 最初の呼び出し時には EditNoteFragment#onPause() が呼ばれる
#*** なぜか2回目の呼び出し時には EditNoteFragment#onPause() が呼ばれない
#*** Android 3.1 のバグ？
#** 対策
#*** NoteDetailActivity#onPause() 内で Fragment が EditNoteFragment の場合に保存処理を呼ぶようにする

#* ショートカットから編集アクティビティが呼ばれた場合に古い内容が表示される場合がある。
#** 再現手順
#*** 事前に「ノートA」のショートカットを作成する。
#*** ノート一覧から「ノートA」を選び詳細表示する。
#*** ホームボタンを押してホーム画面に戻る。
#*** 「ノートA」のショートカットを起動して編集画面を開く
#*** 「ノートA」を編集して戻るボタンを押す。
#*** 「ノートA」の詳細表示画面に戻るが、編集前の内容が表示されている。
#** 原因
#*** 現在の実装だと NotepadActivity#onActivityResult() でリロードを行っている。
#*** ショートカットから編集画面を呼び出した場合 startActivityForResult() による
#    アクティビティ呼び出しではないため、 onActivityResult() が呼ばれない
#*** 結果としてリロードが行われず古い情報が表示されることがある。
#** 対策
#*** NoteDetailFragment 内のロード処理を CursorLoader を使うように変更してみる
#    -> 詳細表示画面は編集後の情報に更新されるようになった
#    -> 一覧画面の方が更新されない
#*** ViewNotesFragment に コンテンツの Uri を変更せずにリロードを行う reloadNotes() を用意
#*** NotepadActivity#onResume() から reloadNotes() を呼び出す
#    -> 対策完了

# * 検索機能の追加

#* 検索機能を修正
#** NotepadActivity 自体が検索アクティビティとして動作するようにする。
#*** NotepadActivity の ActionBar に ActionView として SearchView を配置
#*** SearchView へのテキスト入力でインクリメンタルサーチできるようにする。
#**** 検索時にノート表示用のフラグメントは非表示にする
#     ->ノート表示用のフラグメントを非表示にするとアクションアイテムが再生成される。
#       それにより開いたはずの SearchView が閉じてしまう -> なし
#*** SearchActivity を削除
#** 検索キーのついたキーボードを接続して、検索キーの動作を確認する
#   -> NotepadActivity では検索キーにより SearchBox が開き検索できた．
#   -> ただし単語検索はできるがサジェストされた項目をカーソルキーで選択してもなにも反応しない
#   -> NoteDetailActivity では反応無し
#** AndroidManifest.xml でデフォルト検索アクティビティの設定をどうするべきか検討する
#*** NoteDetailActivity から検索した際に NotepadActivity が動く
#*** NotepadActivity が singleInstance であればいい？

#* SearchView を ActionView として設定してあるメニューアイテムが
#  カーソルキーでフォーカスしない．
#  -> どうにもならない．

#* Ctrl-F で検索が開くが SearchView ではなく SearchBox が開く．なぜ？
#  -> どうにもならないぽい．

#* Add Note を New Note に変更
#** ラベルの変更 
#** ショートカットキーの変更 A->N

#* Search のショートカットキーを Ctrl-F に変更

#* ViewNotesFragment の名前を NoteListFragment に変更
#
#* DeleteNotesActivity を廃止して NotepadActivity の ActionMode で実装する
#** ActionMode で実装可能かを調べる
#   -> 可能ぽい
#** どこに実装するか?
#*** 現在は DeleteNotesFragment で削除している
#*** ViewNotesFragment に削除処理を移動
#*** ViewNotesFragment にアクションモードを作成
#** 手順
#*** ListFragment のサブクラスでにアクションモードを設定するサンプルを作る？

!! notepad-common

#* 検索用のコンテントプロバイダでリミットのオプションを処理するように修正
#** Uri#getQueryParameter("limit") でパラメータを取得
#** SQLiteQueryBuilder#query() に渡すように修正

#* SearchBox 以外からの検索用のURIの処理を追加する
#** 定数 : NoteStore.CONTENT_SEARCH_URI : Uri
#** 文字列 : content://org.routine_work.notepad.noteprovider/search_notes/<keyword>


############################################################
! 0.1.2

!! notepad-app
#* クラス名、ファイル名のリファクタリング
#** EditNoteActivity -> NoteDetailActivity

#* Intent の取り扱いを修正？
#** 編集中にホームに戻ってショートカットから同じノートを開くと2つ同時に
#   編集状態になる。
#** singleTop にする？
#*** 自動保存が必要になる？

#* ノート編集画面で EditText にフォーカスが当たっているときだけ
#  ActionBar を非表示にしてみる
#  -> ActionBar 以外には EditText しか存在しないので常に非表示になってしまう。
#     よって却下

#* ノート一覧画面でノート選択時に文字が見えなくなるバグを修正。

#* EditNoteActivity の singleTop は必要なのか？調査
#** -> 必要
#** 自分自身から呼ぶときは FLAG_ACTIVITY_CLEAR_TOP で処理するが
#   ショートカットなどから来るときには singleTop が効く。

#* NoteDetailActivity で編集用の EditText の lines, minLines, maxLines など
#  を調整する。
#** キーボード表示したときのリサイズを有効にした場合の動作を確認する。
#   ->リサイズ時には minLines を無視して縮小されてしまった。

#* quit メニューを追加
#** NotepadActivity に ACTION_QUIT で終了する処理を追加
#** NotepadActivity に quit 項目を追加
#** DeleteNotesActivity に quit 項目を追加
#** NoteDetailActivity に quit 項目を追加

#* ActionBar と ActionBar のボタン用の背景を ninepach で用意する。

#* NoteDetailActivity のホームボタンがACTION_EDIT時しか使えないバグを修正

!! notepad-app-level-11
#* EditNoteActivity の singleTop は必要なのか？
#** -> 必要
#** 自分自身から呼ぶときは FLAG_ACTIVITY_CLEAR_TOP で処理するが
#   ショートカットなどから来るときには singleTop が効く。

#* ショートカット作成機能

#* クラス名、ファイル名のリファクタリング

#* 詳細アクティビティを singleTop に

#* オプションメニューの終了の処理方法を変更
#** NotepadActivity が ACTION_QUIT を受け取ると終了するように修正。
#** RESULT_QUIT での終了をやめて NotepadActivity を ACTION_QUIT で起動するように修正
#*** NotepadActivity.quitApplication() を実装
#*** quit メニューアイテムの処理を NotepadActivity.quitApplication() の呼び出しに変更
#*** startActivityForResult() で起動している箇所を startActivity() に修正
#*** onActivityResult() での RESULT_QUIT の処理を削除

############################################################
! 0.1.1

!! notepad-app
#* ショートカット作成機能
#** PickNoteActivity を実装
#*** ACTION_PICK に対応
#** CreateNoteShortcutActivity を実装
#** アイコンが正しく表示されない？

#* DB にインデックスを作成
#* REINDEX 機能を NoteStore に追加
#* VACUME 機能を NoteStore に追加

#* ノート削除画面の実装
#** EditNoteActivity に実装

############################################################
! 0.1.0

!! notepad-app
#* ソート順をID 降順にする(新規ノートが上に来る)

#* スクリーンサイズに対応
#** dimension に切り出し。
#** スクリーンサイズ毎にパラメータを調整
#*** small QVGA
#*** normal HVGA
#*** normal WVGA
#*** large WVGA (Galaxy Tab)
#*** large XGA 
#*** xlarge WXGA 

!! notepad-app-level-11
#* ノートの削除画面を実装
#** DeleteNoteFragment
#** DeleteNoteActivity
#** Intent.ACTION_DELETE に応答させる

#* 複数ノートの削除画面を実装
#** DeleteNotesFragment
#** DeleteNotesActivity


