OSDN Git Service

予約一覧取得ボタン押下時の処理の変更
authorpeeweedee <peeweedee@users.sourceforge.jp>
Wed, 10 Jul 2013 01:21:25 +0000 (10:21 +0900)
committerpeeweedee <peeweedee@users.sourceforge.jp>
Wed, 10 Jul 2013 01:21:25 +0000 (10:21 +0900)
17 files changed:
TinyBannavi/05_history.txt
TinyBannavi/src/tainavi/AbsAutoReserveListView.java
TinyBannavi/src/tainavi/AbsPaperView.java
TinyBannavi/src/tainavi/AbsReserveDialog.java
TinyBannavi/src/tainavi/AbsSettingView.java
TinyBannavi/src/tainavi/AbsToolBar.java
TinyBannavi/src/tainavi/Env.java
TinyBannavi/src/tainavi/HDDRecorder.java
TinyBannavi/src/tainavi/HDDRecorderSelectable.java
TinyBannavi/src/tainavi/HDDRecorderUtils.java
TinyBannavi/src/tainavi/JOptOptionPane.java
TinyBannavi/src/tainavi/PlugIn_RecDIGA_DMR_BWT2100.java
TinyBannavi/src/tainavi/PlugIn_RecRD_EDCB.java
TinyBannavi/src/tainavi/PlugIn_RecRD_TvRock.java
TinyBannavi/src/tainavi/RecSettingEditorPanel.java
TinyBannavi/src/tainavi/TitleEditorPanel.java
TinyBannavi/src/tainavi/Viewer.java

index 6dc6b98..85337ca 100644 (file)
 2chの番ナビスレ:http://toro.2ch.net/test/read.cgi/av/1352223253/\r
 ★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\r
 \r
-3.22.2β+1.5.12(2013-06-XX)\r
+3.22.2β+1.5.12(2013-07-XX)\r
 ■変更点\r
  ・(レコーダ対応[DIGA BWT2100/BZT710/720]) 録画結果一覧の取得に仮対応(最大3ページ60タイトルまでなので、仮)\r
  ・(予約ダイアログ) レイアウト変更 ※番組情報ブロックと録画設定ブロックを設定して、各コンポーネントを再配置\r
- ・(リスト形式/新聞形式) 右クリックメニューに「隣接予約の編集」を追加 ※改変期に同時間帯で番組名が変わった場合などに利用 \r
+ ・(リスト形式/新聞形式) 右クリックメニュー最上段に「隣接予約の編集」を追加 ※改変期に同時間帯で番組名が変わった場合などに利用 \r
  ・(その他) 右クリックメニューにの予約実行、予約ON・OFF、予約削除、先週へジャンプなどに開始日時の表示を追加 \r
+ ・(レコーダ対応) 予約一覧取得時の、番組詳細/自動予約一覧/録画結果一覧の同時取得有効無効の取扱いを変更 ※既存の設定は破棄、初回実行時に確認ダイアログが出るので設定しなおす \r
 ■バグ修正\r
  ・(その他) SwingWorkerで生成したサブスレッド内で想定外のruntime exceptionが発生するとサブスレッドがログも出さずに死んでしまってエラー原因を調査できなかったが、ログが出るように仕掛けをしたのでその仕掛けがうまく動くようなら今後改善が進んでいくはず\r
  ・(予約ダイアログ) 類似予約テーブルで「類似予約を選択しない」を選んでも、番組ID取得ボタンがリセットされない場合がある問題を修正\r
@@ -24,6 +25,7 @@
  ・(その他) ラベル付きチェックボックスで、ラベルをクリックしてチェック状態を変更してもActionListenerがトリガーされていなかった問題を修正\r
  ・(新聞形式) 深夜帯(24-29時)の右クリックメニューオープン時の類似/隣接予約の抽出がうまくいってなかったようなそうでもなかったようなところを修正\r
  ・(新聞形式) 改変期などで同一時間帯の番組名が変わった時、旧番組用の予約が右クリックメニューオープン時の類似予約にも近接予約にもひっからず表示されてなかったぽいようなそうでもないようなところを修正\r
+ ・(その他) 予約ダイアログを開いたとき、類似予約があると裏番組チェックが走らない問題を修正\r
 \r
 3.22.1β+1.5.12(2013-05-23)\r
 ■変更点\r
index f3a5bad..677c483 100644 (file)
@@ -251,8 +251,8 @@ public abstract class AbsAutoReserveListView extends JPanel implements HDDRecord
                redrawByRecorderSelected();\r
        }\r
        \r
-       private String getSelectedRecorderId() {\r
-               return ( src_recsel!=null ? src_recsel.getSelectedId() : null );\r
+       private String getSelectedMySelf() {\r
+               return ( src_recsel!=null ? src_recsel.getSelectedMySelf() : null );\r
        }\r
        \r
        private HDDRecorderList getSelectedRecorderList() {\r
index 4eab6d3..9c4661f 100644 (file)
@@ -1359,7 +1359,7 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
                String passedCritDateTime = CommonUtils.getCritDateTime(env.getDisplayPassedReserve());\r
                \r
                // ツールバーで選択されている実レコーダ\r
-               String myself = ( env.getEffectComboToPaper() ) ? (getSelectedRecorderId()) : (null);\r
+               String myself = ( env.getEffectComboToPaper() ) ? (getSelectedMySelf()) : (null);\r
                \r
                // 予約枠の描画\r
                drawReserveBorders(date, Center, q, topDateTime, bottomDateTime, passedCritDateTime, myself);\r
@@ -1715,8 +1715,8 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
                updateReserveBorder(null);\r
        }\r
        \r
-       private String getSelectedRecorderId() {\r
-               return ( src_recsel!=null ? src_recsel.getSelectedId() : null );\r
+       private String getSelectedMySelf() {\r
+               return ( src_recsel!=null ? src_recsel.getSelectedMySelf() : null );\r
        }\r
        \r
        private HDDRecorderList getSelectedRecorderList() {\r
index 687a0cd..72995e8 100644 (file)
@@ -3,8 +3,6 @@ package tainavi;
 import java.awt.BorderLayout;\r
 import java.awt.Component;\r
 import java.awt.Dimension;\r
-import java.awt.event.ItemEvent;\r
-import java.awt.event.ItemListener;\r
 import java.awt.event.WindowAdapter;\r
 import java.awt.event.WindowEvent;\r
 import java.awt.event.WindowListener;\r
@@ -23,6 +21,8 @@ import tainavi.TVProgram.ProgOption;
 import tainavi.TVProgram.ProgSubgenre;\r
 \r
 \r
+// ソースがもうグチャグチャでございます.\r
+\r
 /**\r
  * 予約ダイアログのクラス\r
  * @since 3.15.4β ReserveDialogからクラス名変更\r
@@ -181,18 +181,6 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
         **************************************/\r
        \r
        /**\r
-        * 実行のON/OFFだけしか操作しない場合に呼び出す(画面にウィンドウは表示しない)\r
-        * ※これがあるので、各openでは vals != null チェックの必要がある\r
-        */\r
-       public void setOnlyUpdateExec(boolean b) {\r
-               \r
-               if (vals == null) vals = new Vals();\r
-               \r
-               vals.isUpdateOnlyExec = true;\r
-               jPane_recsetting.setExecValue(b);\r
-       }\r
-       \r
-       /**\r
         * 類似予約抽出条件なしオープン\r
         * @see #doSelectLikeReserve(int)\r
         */\r
@@ -220,7 +208,7 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                if (vals == null) vals = new Vals();\r
                \r
                // 選択中のレコーダ\r
-               String myself = getSelectedRecorderId();                                // ツールバーで選択されているのはどれかな?\r
+               String myself = getSelectedMySelf();                            // ツールバーで選択されているのはどれかな?\r
                HDDRecorder myrec = getSelectedRecorderList().get(0);   // 先頭を選んでおけばおけ\r
                \r
                vals.hide_recorder = myrec;     // 隠しパラメータ\r
@@ -339,10 +327,20 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
         **************************************/\r
        \r
        /**\r
+        * 実行のON/OFFだけしか操作しない場合に呼び出す(画面にウィンドウは表示しない)\r
+        * ※これがあるので、各openでは vals != null チェックの必要がある\r
+        */\r
+       public boolean open(String myself, String rsvId) {\r
+               \r
+               return open(myself, rsvId, null);\r
+               \r
+       }\r
+       \r
+       /**\r
         * 本体予約一覧からのオープン、または予約ON/OFFメニュー\r
         * @see #doSelectLikeReserve(int)\r
         */\r
-       public boolean open(String myself, String rsvId) {\r
+       public boolean open(String myself, String rsvId, Boolean onlyupdateexec) {\r
                \r
                // 予約は行われてないよー\r
                doneReserve = false;\r
@@ -390,6 +388,14 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                jPane_title.setEnabledRecordButton(false);      // 新規ボタンは操作不能に\r
                jPane_likersv.setEnabledTable(false);           // 類似予約は選択不能に\r
                \r
+               /*\r
+                *  予約ON・OFFのみの実行かなー?\r
+                */\r
+               if ( onlyupdateexec != null ) {\r
+                       vals.isUpdateOnlyExec = true;\r
+                       jPane_recsetting.setExecValue(onlyupdateexec);\r
+               }\r
+               \r
                return true;\r
        }\r
        \r
@@ -630,199 +636,6 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
        }\r
        \r
        \r
-       /**\r
-        * コンボボックス操作によって連動して選択しなおし\r
-        */\r
-       /*\r
-       private void setSelectedVariables(HDDRecorder myrec, ReserveList myrsv, AVs myavs, String mychname, String myenc) {\r
-\r
-               // 予約実行\r
-               jPane_recsetting.setExec((myrsv==null) ? true : myrsv.getExec());\r
-               \r
-               // タイトル\r
-               if ( myrsv == null ) {\r
-                       jComboBox_title.setSelectedIndex(0);\r
-               }\r
-               else {\r
-                       for ( int i=0; i<jComboBox_title.getItemCount(); i++ ) {\r
-                               if ( myrsv.getTitle().equals(jComboBox_title.getItemAt(i)) ) {\r
-                                       jComboBox_title.setSelectedIndex(i);\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-               \r
-               // タイトル自動補完\r
-               jCheckBox_Autocomplete.setEnabled(myrec.isAutocompleteSupported());\r
-               if ( myrec.isAutocompleteSupported() ) {\r
-                       if ( myrsv == null ) {\r
-                               jCheckBox_Autocomplete.setSelected(env.getUseAutocomplete());\r
-                               jCheckBox_Autocomplete.setForeground(Color.BLACK);\r
-                       }\r
-                       else {\r
-                               jCheckBox_Autocomplete.setSelected(myrsv.getAutocomplete());\r
-                               jCheckBox_Autocomplete.setForeground((myrsv.getAutocomplete())?(Color.BLACK):(Color.RED));\r
-                       }\r
-               }\r
-               else {\r
-                       jCheckBox_Autocomplete.setSelected(false);\r
-               }\r
-               \r
-               // 番組追従\r
-               jPane_recsetting.setPursues(myrec,myrsv,vals.hide_atreservedlist,ITEM_EVIDNEEDED.equals(jButton_getEventId.getText()));\r
-\r
-               // レコーダ\r
-               jPane_recsetting.setRecorder(myrec.Myself());\r
-               \r
-               // エンコーダ(移動しました)\r
-               \r
-               // サブジャンル\r
-               jPane_recsetting.setSubgenre(myrsv, vals.hide_tvd.genre, vals.hide_tvd.subgenre);\r
-               \r
-               // 連動するAV設定\r
-               setSelectedAVItems(myrec.getRecorderId(), myrsv, myavs);\r
-               \r
-               // エンコーダ(旧RDデジは画質によって利用できるエンコーダが制限される)\r
-               {\r
-                       \r
-                       if ( vals.hide_atreservedlist ) {\r
-                               jPane_recsetting.setEncoder(myrsv.getTuner());\r
-                       }\r
-                       else if ( jCBXPanel_encoder.getItemCount() > 0 ) {\r
-                               // 裏番組チェックとかやるよ\r
-                               String vrate = ( isVARDIA(myrec.getRecorderId()) ) ? ((String) jCBXPanel_videorate.getSelectedItem()) : (null);\r
-                               String starttm = vals.hide_tvd.start;\r
-                               String endtm = vals.hide_tvd.end;\r
-                               try {\r
-                                       GregorianCalendar cal = CommonUtils.getCalendar((String) jComboBox_date.getItemAt(0));\r
-                                       cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jTextField_ahh.getText()));\r
-                                       cal.set(Calendar.MINUTE, Integer.valueOf(jTextField_amm.getText()));\r
-                                       starttm = CommonUtils.getTime(cal);\r
-                                       \r
-                                       cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(jTextField_zhh.getText()));\r
-                                       cal.set(Calendar.MINUTE, Integer.valueOf(jTextField_zmm.getText()));\r
-                                       endtm = CommonUtils.getTime(cal);\r
-                               }\r
-                               catch ( NumberFormatException e) {\r
-                                       System.err.println(ERRID+"時刻の指定が数値ではありません");\r
-                               }\r
-                               \r
-                               String enc = getEmptyEncorder(myrec, vals.hide_tvd.center, vals.hide_tvd.accurateDate, starttm, endtm, vrate);\r
-                               \r
-                               if ( myrsv != null ) {\r
-                                       // 類似予約最優先\r
-                                       jPane_recsetting.setEncoder(myrsv.getTuner());\r
-                               }\r
-                               else if ( myrec.isAutoEncSelectEnabled() && ! vals.hide_atreservedlist ) {\r
-                                       // 番組情報に近い予約を探してエンコーダを絞り込む\r
-                                       jPane_recsetting.setEncoder(enc);\r
-                                       showUraList(myrec.Myself());\r
-                               }\r
-                               else if ( jCBXPanel_encoder.getItemCount() > 0 ) {\r
-                                       // 類似予約や自動選択がない場合は極力もとのエンコーダを選択したい\r
-                                       if ( myenc != null ) {\r
-                                               jPane_recsetting.setEncoder(myenc);\r
-                                               myenc = (String) jCBXPanel_encoder.getSelectedItem();\r
-                                       }\r
-                                       if ( myenc == null ) {\r
-                                               jPane_recsetting.setEncoder(null);\r
-                                       }\r
-                                       showUraList(myrec.Myself());\r
-                               }\r
-                       }\r
-               }\r
-               \r
-               // パターン\r
-               if ( myrsv == null ) {\r
-                       jComboBox_date.setSelectedIndex(0);\r
-               }\r
-               else {\r
-                       int dateid = 0;\r
-                       if ( myrsv.getRec_pattern_id() <= HDDRecorder.RPTPTN_ID_SAT ) {\r
-                               dateid = 1;\r
-                       }\r
-                       else if ( myrsv.getRec_pattern_id() <= HDDRecorder.RPTPTN_ID_EVERYDAY ) {\r
-                               dateid = 1+myrsv.getRec_pattern_id()-HDDRecorder.RPTPTN_ID_SAT;\r
-                       }\r
-                       jComboBox_date.setSelectedIndex(dateid);\r
-               }\r
-       }\r
-        */\r
-       /*\r
-       private void setSelectedAVItems(String myrecid, ReserveList myrsv, AVs myavs) {\r
-               if ( myrsv != null ) {\r
-                       jPane_recsetting.setSelectedAVSettings(myrsv);\r
-               }\r
-               else if ( myavs != null ) {\r
-                       jPane_recsetting.setSelectedAVSettings(myavs);\r
-               }\r
-               else {\r
-                       // 特殊アイテム\r
-                       if ( isRD(myrecid) ) {\r
-                               setSelectedFolder();\r
-                       }\r
-               }\r
-       }\r
-       */\r
-       \r
-       /**\r
-        *  <P>指定したレコーダによってフォルダを変える\r
-        *  <P>うーん、folderを他の用途に転用してるけど問題おきないかな?\r
-        */\r
-       /*\r
-       private void setSelectedFolder() {\r
-\r
-               // タイトルに連動\r
-               if ( env.getAutoFolderSelect() ) {\r
-                       String titlePop = TraceProgram.replacePop((String) jComboBox_title.getSelectedItem());\r
-                       for (int i=0; i<jCBXPanel_folder.getItemCount(); i++) {\r
-                               String folderPop = TraceProgram.replacePop(((String) jCBXPanel_folder.getItemAt(i)).replaceFirst("^\\[(HDD|USB)\\] ",""));\r
-                               if (folderPop.equals(titlePop)) {\r
-                                       jCBXPanel_folder.setSelectedIndex(i);\r
-                                       return;\r
-                               }\r
-                       }\r
-               }\r
-               \r
-               // デバイス名に連動\r
-               int defaultFolderIdx = -1;\r
-               int defaultHDDFolderIdx = -1;\r
-               int defaultDVDFolderIdx = -1;\r
-               for (int i=0; i<jCBXPanel_folder.getItemCount(); i++ ) {\r
-                       String folderName = (String) jCBXPanel_folder.getItemAt(i);\r
-                       if (folderName.indexOf("指定なし") != -1) {\r
-                               if (defaultFolderIdx == -1) {\r
-                                       defaultFolderIdx = i;\r
-                               }\r
-                               if (folderName.startsWith("[HDD] ")) {\r
-                                       defaultHDDFolderIdx = i;\r
-                               }\r
-                               else if (folderName.startsWith("[USB] ")) {\r
-                                       defaultDVDFolderIdx = i;\r
-                               }\r
-                       }\r
-               }\r
-               if (jCBXPanel_device.getItemCount() > 0) {\r
-                       if (((String) jCBXPanel_device.getSelectedItem()).equals("HDD")) {\r
-                               if (defaultHDDFolderIdx != -1) {\r
-                                       jCBXPanel_folder.setSelectedIndex(defaultHDDFolderIdx);\r
-                                       return;\r
-                               }\r
-                       }\r
-                       else {\r
-                               if (defaultDVDFolderIdx != -1) {\r
-                                       jCBXPanel_folder.setSelectedIndex(defaultDVDFolderIdx);\r
-                                       return;\r
-                               }\r
-                       }\r
-               }\r
-               if (defaultFolderIdx != -1) {\r
-                       jCBXPanel_folder.setSelectedIndex(defaultFolderIdx);\r
-               }\r
-       }\r
-       */\r
-\r
-       \r
        /*******************************************************************************\r
         * ネットから番組IDを取得する\r
         ******************************************************************************/\r
@@ -859,6 +672,10 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
         * 自動エンコーダ選択と裏番組抽出\r
         ******************************************************************************/\r
 \r
+       /**\r
+        * これはグラフで描画するようになるまでの仮置き\r
+        * @param urabanlist\r
+        */\r
        private void showUrabanList(ArrayList<ReserveList> urabanlist) {\r
                if ( urabanlist == null ) {\r
                        return;\r
@@ -877,38 +694,6 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
        \r
        \r
        /*******************************************************************************\r
-        * エンコーダコンボボックスのリフレッシュ\r
-        ******************************************************************************/\r
-       \r
-       /*\r
-        * 項目連動のためのメソッド群\r
-        */\r
-\r
-       \r
-       /**\r
-        * 画質に連動してエンコーダを変える(RD系)\r
-        */\r
-       /*\r
-       private void setEncoderComboBoxByVrate(String enc1, String enc2) {\r
-               int index = -1;\r
-               for (int i=0; i<jCBXPanel_encoder.getItemCount(); i++) {\r
-                       if (enc1 != null && jCBXPanel_encoder.getItemAt(i).equals(enc1)) {\r
-                               index = i;\r
-                               break;\r
-                       }\r
-                       if (enc2 != null && jCBXPanel_encoder.getItemAt(i).equals(enc2)) {\r
-                               index = i;\r
-                               break;\r
-                       }\r
-               }\r
-               if (index >= 0) {\r
-                       jCBXPanel_encoder.setSelectedIndex(index);\r
-               }\r
-       }\r
-       */\r
-       \r
-       \r
-       /*******************************************************************************\r
         * リスナー\r
         ******************************************************************************/\r
        \r
@@ -944,59 +729,6 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                vals = null;\r
        }\r
        \r
-       /**\r
-        *  画質にエンコーダと音質が連動\r
-        */\r
-       private final ItemListener il_videorateChanged = new ItemListener() {\r
-               @Override\r
-               public void itemStateChanged(ItemEvent e) {\r
-                       /*\r
-                       if (e.getStateChange() != ItemEvent.SELECTED) {\r
-                               return;\r
-                       }\r
-\r
-                       String myself = jPane_recsetting.getSelectedRecorder();\r
-                       if ( myself == null ) {\r
-                               return;\r
-                       }\r
-                       String myrecId = recorders.findInstance(myself).get(0).getRecorderId();\r
-                       if ( ! isVARDIA(myrecId) ) {\r
-                               return;\r
-                       }\r
-                       \r
-                       String vrate = jPane_recsetting.getSelectedVideorate(); \r
-                       if (vrate == null) {\r
-                               return;\r
-                       }\r
-\r
-                       setEnabledSelectionListeners(false);\r
-                       \r
-                       // レコーダに連動する画質・音質・エンコーダ・フォルダコンボボックスの設定\r
-                       if (vrate.equals("[TS]")) {\r
-                               setEncoderComboBoxByVrate("TS1", null);\r
-                       }\r
-                       else if (vrate.equals("[DR]")) {\r
-                               setEncoderComboBoxByVrate("DR1", null);\r
-                       }\r
-                       else {\r
-                               setEncoderComboBoxByVrate("RE", "VR");\r
-                       }\r
-                       \r
-                       // RDのデジタル系では音質は選択不可\r
-                       if (jCBXPanel_audiorate.getItemCount() > 0) {\r
-                               if (vrate.startsWith("[TS") || vrate.startsWith("[DR]") || vrate.startsWith("[AVC]")) {\r
-                                       jCBXPanel_audiorate.setEnabled(false);\r
-                               }\r
-                               else {\r
-                                       jCBXPanel_audiorate.setEnabled(true);\r
-                               }\r
-                       }\r
-                       \r
-                       setEnabledSelectionListeners(true);\r
-                       */\r
-               }\r
-       };\r
-       \r
        \r
        /*******************************************************************************\r
         * コンポーネント\r
@@ -1070,8 +802,8 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
        /**\r
         * ツールバーの操作によって選択されたレコーダのIDを取得する\r
         */\r
-       private String getSelectedRecorderId() {\r
-               return ( src_recsel!=null ? src_recsel.getSelectedId() : null );\r
+       private String getSelectedMySelf() {\r
+               return ( src_recsel!=null ? src_recsel.getSelectedMySelf() : null );\r
        }\r
        \r
        /**\r
@@ -1490,7 +1222,7 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                }\r
                \r
                // チューナーにあった画質を探そう\r
-               String vrate = myrec.getPreferredVardiaVrate(encoder);\r
+               String vrate = myrec.getPreferredVrate_VARDIA(encoder);\r
                if ( vrate == null ) {\r
                        // 対象外だわ\r
                        return true;\r
@@ -1514,13 +1246,12 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                        return false;\r
                }\r
                \r
-               ArrayList<TextValueSet> tuners = myrec.getPreferredVardiaTuners(vrate);\r
+               // 画質にあったチューナーのリストを探してコンボボックスを並べ替える\r
+               ArrayList<TextValueSet> tuners = myrec.getPreferredTuners_VARDIA(vrate);\r
                if ( tuners == null ) {\r
                        // 対象外だわ\r
                        return true;\r
                }\r
-               \r
-               // ちょっと並べ替えてみっか\r
                jPane_recsetting.sortEncoderItems(tuners);\r
                \r
                // 画質にあったチューナーを探そう\r
@@ -1615,6 +1346,7 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                return true;\r
        }\r
 \r
+       \r
        /*******************************************************************************\r
         * コールバックメソッドの実装(類似予約)\r
         ******************************************************************************/\r
@@ -1657,12 +1389,13 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                        jPane_title.setTimeValue(tVal);\r
                        jPane_title.setDateItems(tvd, tVal);\r
                        \r
+                       // RDだと画質でエンコーダの種類が絞られちまうンですよ\r
+                       String vrate = myavs != null ? myavs.getVideorate() : null;\r
+                       \r
                        // 録画設定の選択\r
-                       if ( jPane_recsetting.setSelectedRecorderValue(myrec.Myself()) != null ) {\r
-                               vals.selected_recorder = myrec;\r
-                       }\r
-       //selectedVrate\r
-                       String enc = myrec.getEmptyEncorder(tvd.center, tVal.startDateTime, tVal.endDateTime, null, null);\r
+                       setSelectedRecorder(myrec);\r
+                       \r
+                       String enc = myrec.getEmptyEncorder(tvd.center, tVal.startDateTime, tVal.endDateTime, null, vrate);\r
                        ReserveList myrsv = getReserveList(myrec, enc);\r
                        jPane_recsetting.setSelectedValues(tvd, myrsv);\r
                        showUrabanList(myrec.getUrabanList());\r
@@ -1704,9 +1437,7 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                        \r
                        // 録画設定の選択\r
                        myrec.getEmptyEncorder(tvd.center, myrsv.getStartDateTime(), myrsv.getEndDateTime(), myrsv, null);\r
-                       if ( jPane_recsetting.setSelectedRecorderValue(myrec.Myself()) != null ) {\r
-                               vals.selected_recorder = myrec;\r
-                       }\r
+                       setSelectedRecorder(myrec);\r
                        showUrabanList(myrec.getUrabanList());\r
                        \r
                        jPane_recsetting.setSelectedValues(myrsv);\r
@@ -1718,4 +1449,74 @@ abstract class AbsReserveDialog extends JDialog implements HDDRecorderListener,R
                \r
                return true;\r
        }\r
+       \r
+       \r
+       /*******************************************************************************\r
+        * 直し残し\r
+        ******************************************************************************/\r
+       \r
+       private HDDRecorder setSelectedRecorder(HDDRecorder myrec) {\r
+               if ( jPane_recsetting.setSelectedRecorderValue(myrec.Myself()) != null ) {\r
+                       vals.selected_recorder = myrec;\r
+                       return myrec;\r
+               }\r
+               return null;\r
+       }\r
+       \r
+       /**\r
+        *  <P>指定したレコーダによってフォルダを変える\r
+        *  <P>うーん、folderを他の用途に転用してるけど問題おきないかな?\r
+        */\r
+       private void setSelectedFolder() {\r
+/*\r
+               // タイトルに連動\r
+               if ( env.getAutoFolderSelect() ) {\r
+                       String titlePop = TraceProgram.replacePop((String) jComboBox_title.getSelectedItem());\r
+                       for (int i=0; i<jCBXPanel_folder.getItemCount(); i++) {\r
+                               String folderPop = TraceProgram.replacePop(((String) jCBXPanel_folder.getItemAt(i)).replaceFirst("^\\[(HDD|USB)\\] ",""));\r
+                               if (folderPop.equals(titlePop)) {\r
+                                       jCBXPanel_folder.setSelectedIndex(i);\r
+                                       return;\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               // デバイス名に連動\r
+               int defaultFolderIdx = -1;\r
+               int defaultHDDFolderIdx = -1;\r
+               int defaultDVDFolderIdx = -1;\r
+               for (int i=0; i<jCBXPanel_folder.getItemCount(); i++ ) {\r
+                       String folderName = (String) jCBXPanel_folder.getItemAt(i);\r
+                       if (folderName.indexOf("指定なし") != -1) {\r
+                               if (defaultFolderIdx == -1) {\r
+                                       defaultFolderIdx = i;\r
+                               }\r
+                               if (folderName.startsWith("[HDD] ")) {\r
+                                       defaultHDDFolderIdx = i;\r
+                               }\r
+                               else if (folderName.startsWith("[USB] ")) {\r
+                                       defaultDVDFolderIdx = i;\r
+                               }\r
+                       }\r
+               }\r
+               if (jCBXPanel_device.getItemCount() > 0) {\r
+                       if (((String) jCBXPanel_device.getSelectedItem()).equals("HDD")) {\r
+                               if (defaultHDDFolderIdx != -1) {\r
+                                       jCBXPanel_folder.setSelectedIndex(defaultHDDFolderIdx);\r
+                                       return;\r
+                               }\r
+                       }\r
+                       else {\r
+                               if (defaultDVDFolderIdx != -1) {\r
+                                       jCBXPanel_folder.setSelectedIndex(defaultDVDFolderIdx);\r
+                                       return;\r
+                               }\r
+                       }\r
+               }\r
+               if (defaultFolderIdx != -1) {\r
+                       jCBXPanel_folder.setSelectedIndex(defaultFolderIdx);\r
+               }\r
+*/\r
+       }\r
+       \r
 }\r
index b93ad48..dbaa58c 100644 (file)
@@ -243,7 +243,8 @@ public abstract class AbsSettingView extends JScrollPane {
        \r
        // レコーダ対応\r
        private JRadioButtonPanel jRBP_getRdReserveDetails = null;\r
-       private JCheckBoxPanel jCBP_skipGetRdRecorded = null;\r
+       private JRadioButtonPanel jRBP_getRdAutoReserves = null;\r
+       private JRadioButtonPanel jRBP_getRdRecorded = null;\r
        private JComboBoxPanel jCBX_recordedSaveScope = null;\r
        \r
        // 予約\r
@@ -829,27 +830,43 @@ public abstract class AbsSettingView extends JScrollPane {
                        y+=(PARTS_HEIGHT+BLOCK_SEP_HEIGHT);\r
                        CommonSwingUtils.putComponentOn(jPanel_setting, new JLabel("<<<レコーダ対応>>>"), LABEL_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);\r
                        \r
-                       y+=(PARTS_HEIGHT+SEP_HEIGHT);\r
                        int getdetail_h = PARTS_HEIGHT*3+SEP_HEIGHT_NALLOW*2;\r
-                       CommonSwingUtils.putComponentOn(jPanel_setting, jRBP_getRdReserveDetails = new JRadioButtonPanel("予約詳細情報の取得",LABEL_WIDTH), PARTS_WIDTH, getdetail_h, SEP_WIDTH, y);\r
-                       jRBP_getRdReserveDetails.add("毎回確認する",! (env.getForceGetRdReserveDetails() || env.getNeverGetRdReserveDetails()));\r
-                       jRBP_getRdReserveDetails.add("常に取得する",(env.getForceGetRdReserveDetails()));\r
-                       jRBP_getRdReserveDetails.add("常に取得しない",(env.getNeverGetRdReserveDetails()));\r
-                       jRBP_getRdReserveDetails.addItemListener(IL_RELOAD_PROG_NEEDED);\r
                        \r
-                       y+=(getdetail_h+SEP_HEIGHT);\r
-                       CommonSwingUtils.putComponentOn(jPanel_setting, jCBP_skipGetRdRecorded = new JCheckBoxPanel("予約取得ボタンでは録画結果を取得しない",LABEL_WIDTH), PARTS_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);\r
-                       jCBP_skipGetRdRecorded.setSelected(env.getSkipGetRdRecorded());\r
+                       {\r
+                               y+=(PARTS_HEIGHT+SEP_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPanel_setting, jRBP_getRdReserveDetails = new JRadioButtonPanel("予約一覧取得時に詳細情報も取得する",LABEL_WIDTH), PARTS_WIDTH, getdetail_h, SEP_WIDTH, y);\r
+                               jRBP_getRdReserveDetails.add("毎回確認する",true);\r
+                               jRBP_getRdReserveDetails.add("常に取得する",false);\r
+                               jRBP_getRdReserveDetails.add("常に取得しない",false);\r
+                               // RELOADリスナー不要\r
+                               \r
+                               y+=(getdetail_h+SEP_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPanel_setting, jRBP_getRdAutoReserves = new JRadioButtonPanel("予約一覧取得時に自動予約一覧も取得する",LABEL_WIDTH), PARTS_WIDTH, getdetail_h, SEP_WIDTH, y);\r
+                               jRBP_getRdAutoReserves.add("毎回確認する",true);\r
+                               jRBP_getRdAutoReserves.add("常に取得する",false);\r
+                               jRBP_getRdAutoReserves.add("常に取得しない",false);\r
+                               // RELOADリスナー不要\r
+                               \r
+                               y+=(getdetail_h+SEP_HEIGHT);\r
+                               CommonSwingUtils.putComponentOn(jPanel_setting, jRBP_getRdRecorded = new JRadioButtonPanel("予約一覧取得時に録画結果一覧も取得する",LABEL_WIDTH), PARTS_WIDTH, getdetail_h, SEP_WIDTH, y);\r
+                               jRBP_getRdRecorded.add("毎回確認する",true);\r
+                               jRBP_getRdRecorded.add("常に取得する",false);\r
+                               jRBP_getRdRecorded.add("常に取得しない",false);\r
+                               // RELOADリスナー不要\r
+                               \r
+                               // 選択肢\r
+                               updateSelections();\r
+                       }\r
                        \r
-                       y+=(PARTS_HEIGHT+SEP_HEIGHT);\r
+                       y+=(getdetail_h+SEP_HEIGHT);\r
                        CommonSwingUtils.putComponentOn(jPanel_setting, jCBX_recordedSaveScope = new JComboBoxPanel("録画結果一覧の保存期間",LABEL_WIDTH,250,true), PARTS_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);\r
                        jCBX_recordedSaveScope.addItem("保存しない");\r
                        for ( int n=1; n<=HDDRecorder.SCOPEMAX; n++ ) {\r
                                jCBX_recordedSaveScope.addItem(String.format("%d日 (%d週)",n,(n/7)+1));\r
                        }\r
                        jCBX_recordedSaveScope.setSelectedIndex(env.getRecordedSaveScope());\r
-                       \r
                        // RELOADリスナー不要\r
+                       \r
                        y+=(getdetail_h+SEP_HEIGHT);\r
                        CommonSwingUtils.putComponentOn(jPanel_setting, new JLabel("NULLプラグインでのカレンダ連携設定はレコーダ設定に移動しました"), PARTS_WIDTH, PARTS_HEIGHT, SEP_WIDTH, y);\r
                        \r
@@ -1162,22 +1179,9 @@ public abstract class AbsSettingView extends JScrollPane {
                                env.setPrepPassedProgramCount(jSP_prepPassedProgramCount.getValue());\r
                                \r
                                // レコーダ対応\r
-                               idx = jRBP_getRdReserveDetails.getSelectedIndex();\r
-                               switch (idx) {\r
-                               case 1:\r
-                                       env.setForceGetRdReserveDetails(true);\r
-                                       env.setNeverGetRdReserveDetails(false);\r
-                                       break;\r
-                               case 2:\r
-                                       env.setForceGetRdReserveDetails(false);\r
-                                       env.setNeverGetRdReserveDetails(true);\r
-                                       break;\r
-                               default:\r
-                                       env.setForceGetRdReserveDetails(false);\r
-                                       env.setNeverGetRdReserveDetails(false);\r
-                                       break;\r
-                               }\r
-                               env.setSkipGetRdRecorded(jCBP_skipGetRdRecorded.isSelected());\r
+                               env.setForceLoadReserveDetails(jRBP_getRdReserveDetails.getSelectedIndex());\r
+                               env.setForceLoadAutoReserves(jRBP_getRdAutoReserves.getSelectedIndex());\r
+                               env.setForceLoadRecorded(jRBP_getRdRecorded.getSelectedIndex());\r
                                env.setRecordedSaveScope(jCBX_recordedSaveScope.getSelectedIndex());\r
        \r
                                // 予約\r
@@ -1254,15 +1258,9 @@ public abstract class AbsSettingView extends JScrollPane {
         * 各種設定タブ以外で変更したenvの内容をタブに反映する\r
         */\r
        public void updateSelections() {\r
-               if ( ! env.getForceGetRdReserveDetails() && ! env.getNeverGetRdReserveDetails() ) {\r
-                       jRBP_getRdReserveDetails.setSelectedIndex(0);\r
-               }\r
-               else if ( env.getForceGetRdReserveDetails() ) {\r
-                       jRBP_getRdReserveDetails.setSelectedIndex(1);\r
-               }\r
-               else if ( env.getNeverGetRdReserveDetails() ) {\r
-                       jRBP_getRdReserveDetails.setSelectedIndex(2);\r
-               }\r
+               jRBP_getRdReserveDetails.setSelectedIndex(env.getForceLoadReserveDetails());\r
+               jRBP_getRdAutoReserves.setSelectedIndex(env.getForceLoadAutoReserves());\r
+               jRBP_getRdRecorded.setSelectedIndex(env.getForceLoadRecorded());\r
        }\r
        \r
        /*******************************************************************************\r
index cbc7682..23aea6a 100644 (file)
@@ -102,8 +102,8 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        // 部品\r
        protected abstract boolean addKeywordSearch(SearchKey search);\r
        protected abstract boolean reLoadTVProgram(LoadFor lf);\r
-       protected abstract boolean reLoadRdReserve(String myself);\r
-       protected abstract boolean reLoadRdRecorded(String myself);\r
+       \r
+       protected abstract boolean doLoadRdRecorder(LoadRsvedFor lrf);\r
 \r
        /*******************************************************************************\r
         * 呼び出し元から引き継いだもの\r
@@ -229,7 +229,7 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        \r
        // その他\r
        \r
-       private String selectedRecorderId = null;\r
+       private String selectedMySelf = null;\r
        private HDDRecorderList selectedRecorderList = null;\r
        \r
        private boolean statusarea_shown = bounds.getShowStatus();\r
@@ -712,8 +712,8 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        }\r
        \r
        @Override\r
-       public String getSelectedId() {\r
-               return selectedRecorderId;\r
+       public String getSelectedMySelf() {\r
+               return selectedMySelf;\r
        }\r
        \r
        @Override\r
@@ -748,7 +748,7 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
                \r
                HDDRecorderSelectionEvent e = new HDDRecorderSelectionEvent(this);\r
 \r
-               if (debug) System.out.println(DBGID+"recorder selection rised.");\r
+               if (debug) System.out.println(DBGID+"recorder select rise.");\r
 \r
                for ( HDDRecorderListener l : lsnrs_recsel ) {\r
                        l.valueChanged(e);\r
@@ -756,13 +756,13 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        }\r
        \r
        /**\r
-        * レコーダ選択イベントトリガー\r
+        * レコーダ状態変更イベントトリガー\r
         */\r
        private void fireHDDRecorderChanged() {\r
                \r
                HDDRecorderChangeEvent e = new HDDRecorderChangeEvent(this);\r
 \r
-               if (debug) System.out.println(DBGID+"change rised.");\r
+               if (debug) System.out.println(DBGID+"recorder change rise.");\r
 \r
                for ( HDDRecorderListener l : lsnrs_infochg ) {\r
                        l.stateChanged(e);\r
@@ -888,15 +888,16 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        /**\r
         * 選択中のレコーダ情報を保存\r
         */\r
-       private void setSelectedRecorderInfo(String recid) {\r
-               selectedRecorderId = recid;\r
-               selectedRecorderList = recorders.findInstance(recid);\r
+       private void setSelectedRecorderInfo(String myself) {\r
+               selectedMySelf = myself;\r
+               selectedRecorderList = recorders.findInstance(myself);\r
        }\r
        \r
        // 予約一覧の再取得\r
        private final ActionListener al_reloadReserved = new ActionListener(){\r
                public void actionPerformed(ActionEvent e){\r
-                       reLoadRdReserve(getSelectedRecorder());\r
+                       \r
+                       doLoadRdRecorder(null);\r
                        \r
                        fireHDDRecorderChanged();               // 各タブへの反映\r
                }\r
@@ -906,16 +907,10 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
        private final ActionListener al_reloadReservedIndividual = new ActionListener() {\r
                @Override\r
                public void actionPerformed(ActionEvent e) {\r
-                       String selected = ((JMenuItem)e.getSource()).getText();\r
-                       LoadRsvedFor lrf = LoadRsvedFor.get(selected);\r
-                       switch (lrf) {\r
-                       case RECORDED:\r
-                               reLoadRdRecorded(getSelectedRecorder());\r
-                               break;\r
-                       case SETTING: \r
-                       default:\r
-                               break;\r
-                       }\r
+                       \r
+                       doLoadRdRecorder(LoadRsvedFor.get(((JMenuItem)e.getSource()).getText()));\r
+                       \r
+                       fireHDDRecorderChanged();               // 各タブへの反映\r
                }\r
        };\r
 \r
index 5e67821..983560c 100644 (file)
@@ -631,17 +631,40 @@ public class Env {
         */\r
        \r
        // 常に予約詳細情報を取得する\r
+       @Deprecated\r
        public boolean getForceGetRdReserveDetails() { return forceGetRdReserveDetails; }\r
+       @Deprecated\r
        public void setForceGetRdReserveDetails(boolean b) { forceGetRdReserveDetails = b; }\r
+       @Deprecated\r
        private boolean forceGetRdReserveDetails = false;\r
        // 常に予約詳細情報を取得しない\r
+       @Deprecated\r
        public boolean getNeverGetRdReserveDetails() { return neverGetRdReserveDetails; }\r
+       @Deprecated\r
        public void setNeverGetRdReserveDetails(boolean b) { neverGetRdReserveDetails = b; }\r
+       @Deprecated\r
        private boolean neverGetRdReserveDetails = false;\r
        // 予約取得ボタンで録画結果も同時に取得する\r
+       @Deprecated\r
        public boolean getSkipGetRdRecorded() { return skipGetRdRecorded; }\r
+       @Deprecated\r
        public void setSkipGetRdRecorded(boolean b) { skipGetRdRecorded = b; }\r
+       @Deprecated\r
        private boolean skipGetRdRecorded = false;\r
+\r
+       // 予約一覧取得時に番組詳細も取得する\r
+       public int getForceLoadReserveDetails() { return forceLoadReserveDetails; }\r
+       public void setForceLoadReserveDetails(int n) { forceLoadReserveDetails = n; }\r
+       private int forceLoadReserveDetails = 0;\r
+       // 予約一覧取得時に自動予約一覧も取得する\r
+       public int getForceLoadAutoReserves() { return forceLoadAutoReserves; }\r
+       public void setForceLoadAutoReserves(int n) { forceLoadAutoReserves = n; }\r
+       private int forceLoadAutoReserves = 0;\r
+       // 予約一覧取得時に録画結果一覧も取得する\r
+       public int getForceLoadRecorded() { return forceLoadRecorded; }\r
+       public void setForceLoadRecorded(int n) { forceLoadRecorded = n; }\r
+       private int forceLoadRecorded = 0;\r
+\r
        // 録画結果一覧の保存期間\r
        public void setRecordedSaveScope(int n) { recordedSaveScope = n; }\r
        public int getRecordedSaveScope() { return recordedSaveScope; }\r
index b804cc6..7d9e788 100644 (file)
@@ -141,12 +141,12 @@ public interface HDDRecorder {
        /**\r
         * 画質にあったチューナーだけ拾ってみる\r
         */\r
-       public String getPreferredVardiaVrate(String tuner);\r
+       public String getPreferredVrate_VARDIA(String tuner);\r
        \r
        /**\r
         * チューナーにあった画質だけ拾ってみる\r
         */\r
-       public ArrayList<TextValueSet> getPreferredVardiaTuners(String vrate);\r
+       public ArrayList<TextValueSet> getPreferredTuners_VARDIA(String vrate);\r
        \r
        /*\r
         * 予約一覧系\r
@@ -197,6 +197,11 @@ public interface HDDRecorder {
        public boolean isEditAutoReserveSupported();\r
        \r
        /**\r
+        * 自動予約の編集をサポートしているかどうかを返します。\r
+        */\r
+       public boolean isRecordedListSupported();\r
+       \r
+       /**\r
         * 自動エンコーダ選択を使用するかどうかを返します。\r
         */\r
        public boolean isAutoEncSelectEnabled();\r
index 6e1ca86..28757db 100644 (file)
@@ -10,7 +10,7 @@ public interface HDDRecorderSelectable {
 \r
        public void removeHDDRecorderSelectionListener(HDDRecorderListener l);\r
 \r
-       public String getSelectedId();\r
+       public String getSelectedMySelf();\r
        \r
        public HDDRecorderList getSelectedList();\r
 \r
index c02c54e..9ce1d85 100644 (file)
@@ -55,6 +55,8 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        @Override\r
        public boolean isEditAutoReserveSupported() { return false; }\r
        @Override\r
+       public boolean isRecordedListSupported() { return false; }\r
+       @Override\r
        public boolean isRepeatReserveSupported() { return true; }\r
        @Override\r
        public boolean isPursuesEditable() { return false; }\r
@@ -459,7 +461,7 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        /**\r
         * チューナーにあった画質を拾ってみる\r
         */\r
-       public String getPreferredVardiaVrate(String tuner) {\r
+       public String getPreferredVrate_VARDIA(String tuner) {\r
                \r
                if ( ! isOldVARDIA() ) {\r
                        return null;\r
@@ -497,7 +499,7 @@ public class HDDRecorderUtils implements HDDRecorder,Cloneable {
        /**\r
         * 画質にあったチューナーだけ拾ってみる\r
         */\r
-       public ArrayList<TextValueSet> getPreferredVardiaTuners(String vrate) {\r
+       public ArrayList<TextValueSet> getPreferredTuners_VARDIA(String vrate) {\r
                \r
                if ( ! isOldVARDIA() ) {\r
                        return null;\r
index 94336bc..80d91a6 100644 (file)
@@ -1,5 +1,6 @@
 package tainavi;\r
 \r
+import java.awt.Color;\r
 import java.awt.Component;\r
 \r
 import javax.swing.BoxLayout;\r
@@ -7,23 +8,35 @@ import javax.swing.JLabel;
 import javax.swing.JOptionPane;\r
 import javax.swing.JPanel;\r
 \r
+\r
 public class JOptOptionPane extends JOptionPane {\r
        \r
        private static final long serialVersionUID = 1L;\r
        \r
        private static JCheckBoxPanel jcheckbox = null;\r
 \r
-       public static int showConfirmDialog(Component parentComponent, String message, String notice, String title, int optionType) {\r
+       public static int showConfirmDialog(Component parentComponent, String message, String notice, String description, String title, int optionType) {\r
                JPanel panel = new JPanel();\r
                BoxLayout layout = new BoxLayout(panel,BoxLayout.Y_AXIS);\r
                panel.setLayout(layout);\r
+               \r
                JLabel jlabel = new JLabel(message,JLabel.CENTER);\r
                jlabel.setAlignmentX(Component.LEFT_ALIGNMENT);\r
                panel.add(jlabel);\r
+               \r
                panel.add(new JLabel(" "));     // Vgap\r
+               \r
                jcheckbox = new JCheckBoxPanel(notice, 0, true);\r
                jcheckbox.setAlignmentX(Component.LEFT_ALIGNMENT);\r
                panel.add(jcheckbox);\r
+               \r
+               if ( description != null && description.length() > 0 ) {\r
+                       JLabel desc = new JLabel(description,JLabel.CENTER);\r
+                       desc.setAlignmentX(Component.LEFT_ALIGNMENT);\r
+                       desc.setForeground(Color.RED);\r
+                       panel.add(desc);\r
+               }\r
+               \r
                return showConfirmDialog(parentComponent, panel, title, optionType);\r
        }\r
        \r
index cb13f5f..2283a20 100644 (file)
@@ -31,6 +31,9 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR
        @Override\r
        public RecType getType() { return RecType.RECORDER; }\r
 \r
+       // 録画結果一覧を取得できる\r
+       @Override\r
+       public boolean isRecordedListSupported() { return true; }\r
        // 番組追従は編集できない\r
        @Override\r
        public boolean isPursuesEditable() { return false; }\r
index 87fb83f..87416b1 100644 (file)
@@ -41,6 +41,9 @@ public class PlugIn_RecRD_EDCB extends HDDRecorderUtils implements HDDRecorder,C
        // 自動予約を編集できる\r
        @Override\r
        public boolean isEditAutoReserveSupported() { return true; }\r
+       // 録画結果一覧を取得できる\r
+       @Override\r
+       public boolean isRecordedListSupported() { return true; }\r
        // 自動エンコーダ選択は禁止\r
        @Override\r
        public boolean isAutoEncSelectEnabled() { return false; }\r
index 1eb5324..8bef9e6 100644 (file)
@@ -33,6 +33,9 @@ public class PlugIn_RecRD_TvRock extends HDDRecorderUtils implements HDDRecorder
        @Override\r
        public RecType getType() { return RecType.RECORDER; }\r
        \r
+       // 録画結果一覧を取得できる\r
+       @Override\r
+       public boolean isRecordedListSupported() { return true; }\r
        // 番組追従が可能\r
        @Override\r
        public boolean isPursuesEditable() { return true; }\r
index d00204c..695cc23 100644 (file)
@@ -116,6 +116,7 @@ public class RecSettingEditorPanel extends JPanel {
                jButton_load.addActionListener(f_al_loadAction);\r
                jButton_save.addActionListener(f_al_saveAction);\r
                jButton_savedefault.addActionListener(f_al_saveDefaultAction);\r
+               jCBXPanel_audiorate.addItemListener(f_il_arateChanged);\r
                \r
                // 付けたり外したりするリスナー\r
                setEnabledListenerAll(true);\r
@@ -444,6 +445,9 @@ public class RecSettingEditorPanel extends JPanel {
                // チューナー\r
                setSelectedEncoderValue(r.getTuner());  // encがnullかどうかはメソッドの中で確認するよ\r
                \r
+               // 番組追従(これは予約種別[arate]より先に設定しておかないといけない)\r
+               setSelectedValue(jCBXPanel_pursues, r.getPursues() ? ITEM_YES : ITEM_NO);\r
+               \r
                // 画質・音質\r
                setSelectedValue(jCBXPanel_videorate, r.getRec_mode());\r
                setSelectedValue(jCBXPanel_audiorate, r.getRec_audio());\r
@@ -463,9 +467,6 @@ public class RecSettingEditorPanel extends JPanel {
                setSelectedValue(jCBXPanel_lvoice, r.getRec_lvoice());\r
                setSelectedValue(jCBXPanel_autodel, r.getRec_autodel());\r
                \r
-               // 番組追従\r
-               setSelectedValue(jCBXPanel_pursues, r.getPursues() ? ITEM_YES : ITEM_NO);\r
-               \r
                // 実行ON・OFF\r
                setExecValue(r.getExec());\r
                \r
@@ -485,6 +486,9 @@ public class RecSettingEditorPanel extends JPanel {
                // チューナー\r
                setSelectedValue(jCBXPanel_encoder, r.getTuner());\r
                \r
+               // 番組追従(これは予約種別[arate]より先に設定しておかないといけない)\r
+               setSelectedValue(jCBXPanel_pursues, r.getPursues() ? ITEM_YES : ITEM_NO);\r
+               \r
                // 画質・音質\r
                setSelectedValue(jCBXPanel_videorate, r.getRec_mode());\r
                setSelectedValue(jCBXPanel_audiorate, r.getRec_audio());\r
@@ -504,9 +508,6 @@ public class RecSettingEditorPanel extends JPanel {
                setSelectedValue(jCBXPanel_lvoice, r.getRec_lvoice());\r
                setSelectedValue(jCBXPanel_autodel, r.getRec_autodel());\r
                \r
-               // 番組追従\r
-               setSelectedValue(jCBXPanel_pursues, r.getPursues() ? ITEM_YES : ITEM_NO);\r
-               \r
                // 実行ON・OFF\r
                setExecValue(r.getExec());\r
                \r
@@ -762,6 +763,28 @@ public class RecSettingEditorPanel extends JPanel {
                }\r
        };\r
        \r
+       /**\r
+        * EPG予約以外では番組追従が設定できないようにしたいな\r
+        */\r
+       private final ItemListener f_il_arateChanged = new ItemListener() {\r
+               @Override\r
+               public void itemStateChanged(ItemEvent e) {\r
+                       if ( e.getStateChange() != ItemEvent.SELECTED ) {\r
+                               return;\r
+                       }\r
+\r
+                       String pgtype = (String) jCBXPanel_audiorate.getSelectedItem();\r
+                       if ( pgtype == HDDRecorder.ITEM_REC_TYPE_PROG ) {\r
+                               // "プラグラム予約"なら触る必要なし\r
+                               jCBXPanel_pursues.setSelectedItem(ITEM_NO);\r
+                               jCBXPanel_pursues.setEnabled(false);\r
+                       }\r
+                       else {\r
+                               jCBXPanel_pursues.setEnabled(true);\r
+                       }\r
+               }\r
+       };\r
+       \r
 \r
        /***************************************\r
         * つけたり外したりするリスナーをつけたり外したりするメソッド\r
@@ -889,8 +912,7 @@ public class RecSettingEditorPanel extends JPanel {
                        if ( recsetsel != null ) recsetsel.doSetAVSettings();\r
                }\r
        };\r
-       \r
-       \r
+\r
        /*******************************************************************************\r
         * コンポーネント\r
         ******************************************************************************/\r
index 2ef5915..3b5633a 100644 (file)
@@ -854,7 +854,8 @@ public class TitleEditorPanel extends JPanel {
                cal.add(Calendar.MINUTE, getRecMinVal());\r
                r.setEndDateTime(CommonUtils.getDateTime(cal));                                                                 // PostRdEntry()中で取得するのでここはダミー\r
 \r
-               if ( jLabel_eventId.getText() != null && ! (jLabel_eventId.getText().endsWith("0000") ||jLabel_eventId.getText().endsWith("FFFF")) ) {\r
+               //if ( jLabel_eventId.getText() != null && ! (jLabel_eventId.getText().endsWith("0000") ||jLabel_eventId.getText().endsWith("FFFF")) ) {\r
+               if ( jLabel_eventId.getText() != null ) {\r
                        r.setContentId(jLabel_eventId.getValue());\r
                }\r
                else {\r
index c346774..10351d5 100644 (file)
@@ -78,15 +78,10 @@ import tainavi.VWUpdate.UpdateResult;
 /**\r
  * メインな感じ\r
  */\r
-public class Viewer extends JFrame implements ChangeListener,TickTimerListener {\r
+public class Viewer extends JFrame implements ChangeListener,TickTimerListener,HDDRecorderListener {\r
 \r
        private static final long serialVersionUID = 1L;\r
        \r
-       @Override\r
-       public void stateChanged(ChangeEvent e){\r
-               StdAppendMessage("イベント発生");\r
-       }\r
-\r
        \r
        /*\r
         * メソッド的な\r
@@ -201,7 +196,8 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
         */\r
        public static enum LoadRsvedFor {\r
                SETTING         ( "設定情報のみ取得(future use.)" ),\r
-               RECORDED        ( "録画結果のみ取得" ),\r
+               RECORDED        ( "録画結果一覧のみ取得" ),\r
+               AUTORESERVE     ( "自動予約一覧のみ取得" ),\r
                ;\r
                \r
                private String name;\r
@@ -971,7 +967,7 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                        toolBar.updateRecorderComboBox();\r
                        \r
                        // 予約一覧のリフレッシュ\r
-                       loadRdReserve(false, null);             // toolBarの内容がリセットされているので recId = null で\r
+                       loadRdReservesAll(false, null);         // toolBarの内容がリセットされているので recId = null で\r
                        \r
                        // レコーダのエンコーダ表示の更新\r
                        this.redrawRecorderEncoderEntry();\r
@@ -1551,23 +1547,64 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                }\r
 \r
                @Override\r
-               protected boolean reLoadRdReserve(String myself) {\r
+               protected boolean doLoadRdRecorder(LoadRsvedFor lrf) {\r
                        timer_now.pause();\r
-                       boolean b = Viewer.this.reLoadRdReserve(myself);\r
+                       \r
+                       boolean b = Viewer.this.doLoadRdRecorder(lrf);;\r
+                       \r
                        timer_now.start();\r
                        return b;\r
                }\r
+       }\r
+       \r
+       \r
+       /*******************************************************************************\r
+        * ハンドラ―メソッド\r
+        ******************************************************************************/\r
 \r
-               @Override\r
-               protected boolean reLoadRdRecorded(String myself) {\r
-                       timer_now.pause();\r
-                       boolean b = Viewer.this.reLoadRdRecorded(myself);\r
-                       timer_now.start();\r
-                       return b;\r
-               }\r
+       /**\r
+        * なんかよくわからないもの\r
+        */\r
+       @Override\r
+       public void stateChanged(ChangeEvent e){\r
+               StdAppendMessage("イベント発生");\r
+       }\r
+\r
+       /**\r
+        * ツールバーでレコーダの選択イベントが発生\r
+        */\r
+       @Override\r
+       public void valueChanged(HDDRecorderSelectionEvent e) {\r
+               // 選択中のレコーダ情報を保存する\r
+               src_recsel = (HDDRecorderSelectable) e.getSource();\r
+       }\r
+       \r
+       private String getSelectedMySelf() {\r
+               return ( src_recsel!=null ? src_recsel.getSelectedMySelf() : null );\r
+       }\r
+       \r
+       private HDDRecorderList getSelectedRecorderList() {\r
+               return ( src_recsel!=null ? src_recsel.getSelectedList() : null );\r
+       }\r
+       \r
+       private HDDRecorderSelectable src_recsel;\r
 \r
+       /**\r
+        * レコーダ情報の変更イベントが発生\r
+        */\r
+       @Override\r
+       public void stateChanged(HDDRecorderChangeEvent e) {\r
+               // 未実装\r
        }\r
        \r
+       /**\r
+        * タイマーイベントが発生\r
+        */\r
+       @Override\r
+       public void timerRised(TickTimerRiseEvent e) {\r
+               if (env.getDebug()) System.out.println("Timer Rised: now="+CommonUtils.getDateTimeYMDx(e.getCalendar()));\r
+               setTitleBar();\r
+       }\r
        \r
        \r
        /*******************************************************************************\r
@@ -2455,8 +2492,9 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                \r
                String mode = (fexec ? "ON" : "OFF");\r
                \r
-               if ( rdialog.open(recId,rsvId) ) {\r
-                       rdialog.setOnlyUpdateExec(fexec);\r
+               // 予約ON・OFFのみ\r
+               if ( rdialog.open(recId,rsvId,fexec) ) {\r
+                       \r
                        rdialog.doUpdate();\r
                        \r
                        if (rdialog.isSucceededReserve()) {\r
@@ -2509,12 +2547,11 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                menuItem.addActionListener(new ActionListener() {\r
                        public void actionPerformed(ActionEvent e) {\r
                                \r
-                               //VWReserveDialog rD = new VWReserveDialog(0, 0, env, tvprograms, recorders, avs, chavs, stwin);\r
-                               //rdialog.clear();\r
                                CommonSwingUtils.setLocationCenter(mainWindow,rdialog);\r
                                \r
-                               if ( rdialog.open(recId,rsvId) ) {\r
-                                       rdialog.setOnlyUpdateExec( ! fexec);\r
+                               // 予約ON・OFFのみ\r
+                               if ( rdialog.open(recId,rsvId, ! fexec) ) {\r
+                                       \r
                                        rdialog.doUpdate();\r
                                        \r
                                        if (rdialog.isSucceededReserve()) {\r
@@ -2579,28 +2616,39 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
         * ここからおおむね初期化処理にかかわるメソッド群\r
         ******************************************************************************/\r
        \r
-       // レコーダから取得したエンコーダ情報で、登録済みレコーダ一覧を更新する\r
-       private void setEncoderInfo2RecorderList(HDDRecorder recorder) {\r
-               for (RecorderInfo ri : recInfoList ) {\r
-                       //if (rl.getRecorderEncoderList().size() == 0)\r
-                       {\r
-                               String mySelf = ri.getRecorderIPAddr()+":"+ri.getRecorderPortNo()+":"+ri.getRecorderId();\r
-                               String myMail = "MAIL"+":"+ri.getRecorderMacAddr()+":"+ri.getRecorderId();\r
-                               if (recorder.isMyself(mySelf) || recorder.isMyself(myMail)) {\r
-                                       ri.clearEncoders();\r
-                                       for (TextValueSet enc : recorder.getEncoderList()) {\r
-                                               ri.addEncoder(enc.getText());\r
-                                       }\r
-                                       break;\r
-                               }\r
+       /***************************************\r
+        * ツールバートリガーによる\r
+        **************************************/\r
+\r
+       /**\r
+        *  レコーダの予約情報をDLする\r
+        */\r
+       private boolean doLoadRdRecorder(LoadRsvedFor lrf) {\r
+               \r
+               if ( lrf == null ) {\r
+                       return doLoadRdRecorderAll();\r
+               }\r
+               else {\r
+                       switch (lrf) {\r
+                       case RECORDED:\r
+                               return doLoadRdRecorded();\r
+                       case AUTORESERVE:\r
+                               return doLoadRdAutoReserves();\r
+                       case SETTING: \r
+                       default:\r
+                               break;\r
                        }\r
                }\r
+               return false;\r
        }\r
        \r
        /**\r
-        *  レコーダの予約情報をDLする\r
+        * レコーダの情報を全部DLする(ステータスウィンドウは自前で用意        する)\r
         */\r
-       private boolean reLoadRdReserve(final String recId) {\r
+       private boolean doLoadRdRecorderAll() {\r
+               \r
+               final String myself = getSelectedMySelf();\r
+               \r
                //\r
                StWinClear();\r
                \r
@@ -2611,7 +2659,8 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                                \r
                                TatCount tc = new TatCount();\r
                                \r
-                               loadRdReserve(true, recId);\r
+                               // 読み出せ!\r
+                               _loadRdRecorderAll(true,myself);\r
                                \r
                                // エンコーダ情報が更新されるかもしれないので、一覧のエンコーダ表示にも反映する\r
                                recsetting.redrawRecorderEncoderEntry();\r
@@ -2637,14 +2686,26 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                \r
                return true;\r
        }\r
-       private void loadRdReserve(final boolean force, final String myself) {\r
-\r
+       \r
+       /**\r
+        * 録画結果一覧をDLする\r
+        */\r
+       private boolean doLoadRdRecorded() {\r
+               \r
+               final String myself = getSelectedMySelf();\r
+               \r
                //\r
-               new SwingBackgroundWorker(true) {\r
+               StWinClear();\r
+               \r
+               new SwingBackgroundWorker(false) {\r
                        \r
                        @Override\r
                        protected Object doWorks() throws Exception {\r
                                \r
+                               TatCount tc = new TatCount();\r
+                       \r
+                               boolean succeeded = false;\r
+                               \r
                                HDDRecorderList recs;\r
                                if ( myself != null ) {\r
                                        recs = recorders.findInstance(myself);\r
@@ -2653,142 +2714,47 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                                        recs = recorders;\r
                                }\r
                                for ( HDDRecorder recorder : recs ) {\r
-                                       switch ( recorder.getType() ) {\r
-                                       case RECORDER:\r
-                                       case EPG:\r
-                                       case MAIL:\r
-                                       case NULL:\r
-                                       case TUNER:\r
-                                               loadRdReserveOnce(recorder, force);\r
-                                               break;\r
-                                       default:\r
-                                               break;\r
+                                       if ( ! recorder.isRecordedListSupported() ) {\r
+                                               continue;\r
+                                       }\r
+\r
+                                       if ( recorder.GetRdRecorded(true) ) {\r
+                                               succeeded = true;\r
                                        }\r
                                }\r
                                \r
+                               if ( succeeded ) {\r
+                                       reserved.redrawReservedList();\r
+                                       recorded.redrawRecordedList();\r
+                                       \r
+                                       mwin.appendMessage(String.format("【録画結果一覧の取得処理が完了しました】 所要時間: %.2f秒",tc.end()));\r
+                               }\r
+                               else {\r
+                                       ringBeep();\r
+                                       mwin.appendMessage(String.format("【録画結果一覧の取得処理に失敗しました】 所要時間: %.2f秒",tc.end()));\r
+                               }\r
                                return null;\r
                        }\r
                        \r
                        @Override\r
                        protected void doFinally() {\r
+                               StWinSetVisible(false);\r
                        }\r
                }.execute();\r
-       }\r
-       \r
-       private boolean loadRdReserveOnce(HDDRecorder recorder, boolean force) {\r
                \r
-               mwin.appendMessage("【レコーダ情報取得】レコーダから情報を取得します: "+recorder.getRecorderId()+"("+recorder.getIPAddr()+":"+recorder.getPortNo()+")");\r
-               if ( recorder.isThereAdditionalDetails() && ! env.getForceGetRdReserveDetails() ) {\r
-                       mwin.appendMessage("<<<注意!>>>このレコーダでは予約詳細の個別取得を実行しないと正確な情報を得られない場合があります。");\r
-               }\r
+               StWinSetLocationCenter(this);\r
+               StWinSetVisible(true);\r
                \r
-               try {\r
-                       \r
-                       // 各種設定の取得\r
-                       if ( ! recorder.GetRdSettings(force) ) {\r
-                               // 取得に失敗\r
-                               mwin.appendError(recorder.getErrmsg()+" "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
-                               ringBeep();\r
-                               return false;\r
-                       }\r
-                       \r
-                       // 予約一覧の取得\r
-                       if ( ! recorder.GetRdReserve(force) ) {\r
-                               // 取得に失敗\r
-                               mwin.appendError(recorder.getErrmsg()+" "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
-                               ringBeep();\r
-                               return false;\r
-                       }\r
-                       \r
-                       // レコーダから取得したエンコーダ情報で、登録済みレコーダ一覧を更新する\r
-                       setEncoderInfo2RecorderList(recorder);\r
-                       if ( force ) {\r
-                               recInfoList.save();\r
-                       }\r
-                       \r
-                       // 予約詳細の取得\r
-                       if ( env.getNeverGetRdReserveDetails() ) {\r
-                               mwin.appendMessage("【!】予約詳細情報の取得はスキップされました");\r
-                       }\r
-                       else if ( force && recorder.isThereAdditionalDetails() ) {\r
-                               boolean getDetails = true;\r
-                               if ( ! env.getForceGetRdReserveDetails() ) {\r
-                                       int ret = JOptOptionPane.showConfirmDialog(null, "詳細情報を取得しますか?(時間がかかります)", "今回の選択を既定の動作とする", "確認", JOptionPane.YES_NO_OPTION);\r
-                                       getDetails = (ret == JOptOptionPane.YES_OPTION);\r
-                                       if ( JOptOptionPane.isSelected() ) {\r
-                                               // 今回の選択を既定の動作とする\r
-                                               env.setForceGetRdReserveDetails(getDetails);\r
-                                               env.setNeverGetRdReserveDetails( ! getDetails);\r
-                                               env.save();\r
-                                               setting.updateSelections();\r
-                                       }\r
-                               }\r
-                               if ( ! getDetails ) {\r
-                                       mwin.appendMessage("【!】予約詳細情報の取得はスキップされました");\r
-                               }\r
-                               else {\r
-                                       if ( ! recorder.GetRdReserveDetails()) {\r
-                                               // 取得に失敗\r
-                                               mwin.appendError(recorder.getErrmsg()+" "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
-                                               ringBeep();\r
-                                       }\r
-                               }\r
-                       }\r
-                       \r
-                       // レコーダの放送局名をWeb番組表の放送局名に置き換え\r
-                       {       \r
-                               HashMap<String,String> misCN = new HashMap<String,String>();\r
-                               for ( ReserveList r : recorder.getReserves() ) {\r
-                                       if ( r.getCh_name() == null ) {\r
-                                               misCN.put(r.getChannel(),recorder.getRecorderId());\r
-                                       }\r
-                               }\r
-                               if ( misCN.size() > 0 ) {\r
-                                       for ( String cn : misCN.keySet() ) {\r
-                                               String msg = "【警告(予約一覧)】 <"+misCN.get(cn)+"> \"レコーダの放送局名\"を\"Web番組表の放送局名\"に変換できません。CHコード設定に設定を追加してください:\"レコーダの放送局名\"="+cn;\r
-                                               mwin.appendMessage(msg);\r
-                                       }\r
-                                       ringBeep();\r
-                               }\r
-                       }\r
-                       \r
-                       // 自動予約一覧の取得\r
-                       if ( recorder.isEditAutoReserveSupported() ) {\r
-                               if ( ! recorder.GetRdAutoReserve(force) ) {\r
-                                       // 取得に失敗\r
-                                       mwin.appendError(recorder.getErrmsg()+" "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
-                                       ringBeep();\r
-                                       return false;\r
-                               }\r
-                       }\r
-                       \r
-                       // 録画結果一覧の取得\r
-                       if ( env.getSkipGetRdRecorded() ) {\r
-                               mwin.appendMessage("【!】録画結果一覧の取得はスキップされました");\r
-                       }\r
-                       else {\r
-                               if ( ! recorder.GetRdRecorded(force) ) {\r
-                                       // 取得に失敗\r
-                                       mwin.appendError(recorder.getErrmsg()+" "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
-                                       ringBeep();\r
-                                       return false;\r
-                               }\r
-                       }\r
-                       \r
-               }\r
-               catch (Exception e) {\r
-                       e.printStackTrace();\r
-                       mwin.appendError("【致命的エラー】予約一覧の取得で例外が発生 "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
-                       ringBeep();\r
-                       return false;\r
-               }\r
                return true;\r
        }\r
 \r
        /**\r
         * 録画結果一覧をDLする\r
         */\r
-       private boolean reLoadRdRecorded(final String myself) {\r
+       private boolean doLoadRdAutoReserves() {\r
+               \r
+               final String myself = getSelectedMySelf();\r
+               \r
                //\r
                StWinClear();\r
                \r
@@ -2799,7 +2765,7 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                                \r
                                TatCount tc = new TatCount();\r
                        \r
-                               boolean succeeded = true;\r
+                               boolean succeeded = false;\r
                                \r
                                HDDRecorderList recs;\r
                                if ( myself != null ) {\r
@@ -2809,33 +2775,22 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                                        recs = recorders;\r
                                }\r
                                for ( HDDRecorder recorder : recs ) {\r
-                                       switch ( recorder.getType() ) {\r
-                                       case RECORDER:\r
-                                       case EPG:\r
-                                       case MAIL:\r
-                                       case NULL:\r
-                                       case TUNER:\r
-                                               if ( ! recorder.GetRdSettings(true) ) {\r
-                                                       succeeded = false;\r
-                                               }\r
-                                               if ( ! recorder.GetRdRecorded(true) ) {\r
-                                                       succeeded = false;\r
-                                               }\r
-                                               break;\r
-                                       default:\r
-                                               break;\r
+                                       if ( ! recorder.isEditAutoReserveSupported() ) {\r
+                                               continue;\r
+                                       }\r
+                                       \r
+                                       if ( recorder.GetRdAutoReserve(true) ) {\r
+                                               succeeded = true;\r
                                        }\r
                                }\r
                                \r
                                if ( succeeded ) {\r
-                                       reserved.redrawReservedList();\r
-                                       recorded.redrawRecordedList();\r
-                                       \r
-                                       mwin.appendMessage(String.format("【録画結果一覧の取得処理が完了しました】 所要時間: %.2f秒",tc.end()));\r
+                                       // 再描画はここじゃないよ\r
+                                       mwin.appendMessage(String.format("【自動予約一覧の取得処理が完了しました】 所要時間: %.2f秒",tc.end()));\r
                                }\r
                                else {\r
                                        ringBeep();\r
-                                       mwin.appendMessage(String.format("【録画結果一覧の取得処理に失敗しました】 所要時間: %.2f秒",tc.end()));\r
+                                       mwin.appendMessage(String.format("【自動予約一覧の取得処理に失敗しました】 所要時間: %.2f秒",tc.end()));\r
                                }\r
                                return null;\r
                        }\r
@@ -2851,7 +2806,292 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                \r
                return true;\r
        }\r
+       \r
+       /***************************************\r
+        * 自クラス内呼び出しによる\r
+        **************************************/\r
+       \r
+       /**\r
+        * レコーダの情報を全部DLする(ステータスウィンドウは呼び出し元が準備する)\r
+        */\r
+       private void loadRdReservesAll(final boolean force, final String myself) {\r
+\r
+               new SwingBackgroundWorker(true) {\r
+                       \r
+                       @Override\r
+                       protected Object doWorks() throws Exception {\r
+                               \r
+                               _loadRdRecorderAll(force,myself);\r
+                               \r
+                               return null;\r
+                       }\r
+                       \r
+                       @Override\r
+                       protected void doFinally() {\r
+                       }\r
+               }.execute();\r
+       }\r
+       \r
+       /***************************************\r
+        * レコーダの情報を取得する部品群\r
+        **************************************/\r
+       \r
+       private boolean _loadRdRecorderAll(final boolean force, final String myself) {\r
+\r
+               HDDRecorderList recs;\r
+               if ( myself != null ) {\r
+                       recs = recorders.findInstance(myself);\r
+               }\r
+               else {\r
+                       recs = recorders;\r
+               }\r
+               \r
+               boolean success = true;\r
+               \r
+               for ( HDDRecorder recorder : recs ) {\r
+                       switch ( recorder.getType() ) {\r
+                       case RECORDER:\r
+                       case EPG:\r
+                       case MAIL:\r
+                       case NULL:\r
+                       case TUNER:\r
+                               success = success & _loadRdRecorder(recorder, force);\r
+                       default:\r
+                               break;\r
+                       }\r
+               }\r
+               \r
+               return success;\r
+       }\r
+       \r
+       private boolean _loadRdRecorder(HDDRecorder recorder, boolean force) {\r
+               \r
+               mwin.appendMessage("【レコーダ情報取得】情報を取得します: "+recorder.Myself());\r
+               if ( recorder.isThereAdditionalDetails() && env.getForceLoadReserveDetails() == 2 ) {\r
+                       mwin.appendMessage("<<<注意!>>>このレコーダでは予約詳細の個別取得を実行しないと正確な情報を得られない場合があります。");\r
+               }\r
+               \r
+               try {\r
+                       \r
+                       // 各種設定の取得\r
+                       if ( ! _loadRdSettings(recorder,force) ) {\r
+                               return false;\r
+                       }\r
+                       \r
+                       // 予約一覧の取得\r
+                       if ( ! _loadRdReserves(recorder,force) ) {\r
+                               return false;\r
+                       }\r
+                       \r
+                       // レコーダから取得したエンコーダ情報で、登録済みレコーダ一覧を更新する\r
+                       setEncoderInfo2RecorderList(recorder,force);\r
+                       \r
+                       // 予約詳細の取得(強制取得じゃなければ処理不要)\r
+                       if ( force && ! _loadRdReserveDetails(recorder,force) ) {\r
+                               return false;\r
+                       }\r
+                       \r
+                       // レコーダの放送局名をWeb番組表の放送局名に置き換え\r
+                       checkChNameIsRight(recorder);\r
+                       \r
+                       // 自動予約一覧の取得\r
+                       if ( ! _loadRdAutoReserves(recorder,force) ) {\r
+                               return false;\r
+                       }\r
+                       \r
+                       // 録画結果一覧の取得\r
+                       if ( ! _loadRdRecorded(recorder,force) ) {\r
+                               return false;\r
+                       }\r
+               }\r
+               catch (Exception e) {\r
+                       e.printStackTrace();\r
+                       mwin.appendError("【致命的エラー】予約一覧の取得で例外が発生 "+recorder.getIPAddr()+":"+recorder.getPortNo()+":"+recorder.getRecorderId());\r
+                       ringBeep();\r
+                       return false;\r
+               }\r
+               return true;\r
+       }\r
+       \r
+       \r
+       /***************************************\r
+        * レコーダの情報を取得する部品群\r
+        **************************************/\r
+       \r
+       private boolean _loadRdSettings(HDDRecorder recorder, boolean force) {\r
+               if ( recorder.GetRdSettings(force) ) {\r
+                       return true;\r
+               }\r
+               \r
+               mwin.appendError(recorder.getErrmsg()+" "+recorder.Myself());   // 取得に失敗\r
+               ringBeep();\r
+               return false;\r
+       }\r
+       \r
+       private boolean _loadRdReserves(HDDRecorder recorder, boolean force) {\r
+               if ( recorder.GetRdReserve(force) ) {\r
+                       return true;\r
+               }\r
+               \r
+               mwin.appendError(recorder.getErrmsg()+" "+recorder.Myself());   // 取得に失敗\r
+               ringBeep();\r
+               return false;\r
+       }\r
+       \r
+       private boolean _loadRdReserveDetails(HDDRecorder recorder, boolean force) {\r
+               \r
+               if ( ! recorder.isThereAdditionalDetails() ) {\r
+                       return true;    // 非対応レコーダ\r
+               }\r
+               \r
+               boolean skip = false;\r
+               if ( force && env.getForceLoadReserveDetails() == 2 ) {\r
+                       skip = true;\r
+               }\r
+               else if ( force && env.getForceLoadReserveDetails() == 0 ) {\r
+                       int ret = JOptOptionPane.showConfirmDialog(stwin, "<HTML>詳細情報を取得しますか?(時間がかかります)<BR><BR>"+recorder.Myself()+"</HTML>", "今回の選択を既定の動作とする", "※既定動作は各種設定で変更できます", "確認", JOptionPane.YES_NO_OPTION);\r
+                       skip = (ret != JOptOptionPane.YES_OPTION);\r
+                       \r
+                       if ( JOptOptionPane.isSelected() ) {\r
+                               // 今回の選択を既定の動作とする\r
+                               env.setForceLoadReserveDetails(skip ? 2 : 1);\r
+                               env.save();\r
+                               if (setting!=null) setting.updateSelections();\r
+                       }\r
+               }\r
+               if ( skip ) {\r
+                       mwin.appendMessage("【!】予約詳細情報の取得はスキップされました");\r
+                       return true;\r
+               }\r
+               \r
+               if ( recorder.GetRdReserveDetails()) {\r
+                       return true;    // 取得成功\r
+               }\r
+               \r
+               mwin.appendError(recorder.getErrmsg()+" "+recorder.Myself());\r
+               ringBeep();\r
+               return false;           // 取得失敗\r
+       }\r
 \r
+       private boolean _loadRdAutoReserves(HDDRecorder recorder, boolean force) {\r
+\r
+               if ( ! recorder.isEditAutoReserveSupported() ) {\r
+                       return true;\r
+               }\r
+               \r
+               boolean skip = false;\r
+               if ( force && env.getForceLoadAutoReserves() == 2 ) {\r
+                       skip = true;\r
+               }\r
+               else if ( force && env.getForceLoadAutoReserves() == 0 ) {\r
+                       int ret = JOptOptionPane.showConfirmDialog(stwin, "<HTML>自動予約一覧を取得しますか?(時間がかかります)<BR><BR>"+recorder.Myself()+"</HTML>", "今回の選択を既定の動作とする", "※既定動作は各種設定で変更できます", "確認", JOptionPane.YES_NO_OPTION);\r
+                       skip = (ret != JOptOptionPane.YES_OPTION);\r
+                       \r
+                       if ( JOptOptionPane.isSelected() ) {\r
+                               // 今回の選択を既定の動作とする\r
+                               env.setForceLoadAutoReserves(skip ? 2 : 1);\r
+                               env.save();\r
+                               if (setting!=null) setting.updateSelections();\r
+                       }\r
+               }\r
+               if ( skip ) {\r
+                       mwin.appendMessage("【!】自動予約一覧の取得はスキップされました");\r
+                       return true;\r
+               }\r
+\r
+               if ( recorder.GetRdAutoReserve(force) ) {\r
+                       return true;\r
+               }\r
+               \r
+               mwin.appendError(recorder.getErrmsg()+" "+recorder.Myself());\r
+               ringBeep();\r
+               return false;\r
+       }\r
+       \r
+       private boolean _loadRdRecorded(HDDRecorder recorder, boolean force) {\r
+               \r
+               if ( ! recorder.isRecordedListSupported() ) {\r
+                       return true;\r
+               }\r
+               \r
+               boolean skip = false;\r
+               if ( force && env.getForceLoadRecorded() == 2 ) {\r
+                       skip = true;\r
+               }\r
+               if ( force && env.getForceLoadRecorded() == 0 ) {\r
+                       int ret = JOptOptionPane.showConfirmDialog(stwin, "<HTML>録画結果一覧を取得しますか?(時間がかかります)<BR><BR>"+recorder.Myself()+"</HTML>", "今回の選択を既定の動作とする", "※既定動作は各種設定で変更できます", "確認", JOptionPane.YES_NO_OPTION);\r
+                       skip = (ret != JOptOptionPane.YES_OPTION);\r
+                       \r
+                       if ( JOptOptionPane.isSelected() ) {\r
+                               // 今回の選択を既定の動作とする\r
+                               env.setForceLoadRecorded(skip ? 2 : 1);\r
+                               env.save();\r
+                               if (setting!=null) setting.updateSelections();\r
+                       }\r
+               }\r
+               if ( skip ) {\r
+                       mwin.appendMessage("【!】録画結果一覧の取得はスキップされました");\r
+                       return true;\r
+               }\r
+               \r
+               if ( recorder.GetRdRecorded(force) ) {\r
+                       return true;\r
+               }\r
+               \r
+               mwin.appendError(recorder.getErrmsg()+" "+recorder.Myself());\r
+               ringBeep();\r
+               return false;\r
+       }\r
+\r
+       /**\r
+        * レコーダから取得したエンコーダ情報で、登録済みレコーダ一覧を更新する\r
+        * @param recorder\r
+        */\r
+       private void setEncoderInfo2RecorderList(HDDRecorder recorder, boolean force) {\r
+               for (RecorderInfo ri : recInfoList ) {\r
+                       //if (rl.getRecorderEncoderList().size() == 0)\r
+                       {\r
+                               //String mySelf = ri.getRecorderIPAddr()+":"+ri.getRecorderPortNo()+":"+ri.getRecorderId();\r
+                               //String myMail = "MAIL"+":"+ri.getRecorderMacAddr()+":"+ri.getRecorderId();\r
+                               //if (recorder.isMyself(mySelf) || recorder.isMyself(myMail)) {\r
+                               if ( recorder.isMyself(ri.MySelf()) ) {\r
+                                       ri.clearEncoders();\r
+                                       for (TextValueSet enc : recorder.getEncoderList()) {\r
+                                               ri.addEncoder(enc.getText());\r
+                                       }\r
+                                       \r
+                                       if ( force ) {\r
+                                               recInfoList.save();\r
+                                       }\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       \r
+       /**\r
+        * 予約一覧の放送局名が正しい形式であるかどうかのチェック\r
+        */\r
+       private void checkChNameIsRight(HDDRecorder recorder) {\r
+               HashMap<String,String> misCN = new HashMap<String,String>();\r
+               for ( ReserveList r : recorder.getReserves() ) {\r
+                       if ( r.getCh_name() == null ) {\r
+                               misCN.put(r.getChannel(),recorder.getRecorderId());\r
+                       }\r
+               }\r
+               if ( misCN.size() > 0 ) {\r
+                       for ( String cn : misCN.keySet() ) {\r
+                               String msg = "【警告(予約一覧)】 <"+misCN.get(cn)+"> \"レコーダの放送局名\"を\"Web番組表の放送局名\"に変換できません。CHコード設定に設定を追加してください:\"レコーダの放送局名\"="+cn;\r
+                               mwin.appendMessage(msg);\r
+                       }\r
+                       ringBeep();\r
+               }\r
+       }\r
+       \r
+       /***************************************\r
+        * Web番組表を取得する\r
+        **************************************/\r
+       \r
        /**\r
         * Web番組表をDLする\r
         * <P>単体実行の場合はこちらを呼び出す\r
@@ -4353,12 +4593,6 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                );\r
        }\r
        \r
-       @Override\r
-       public void timerRised(TickTimerRiseEvent e) {\r
-               if (env.getDebug()) System.out.println("Timer Rised: now="+CommonUtils.getDateTimeYMDx(e.getCalendar()));\r
-               setTitleBar();\r
-       }\r
-       \r
        // 終了処理関連\r
        private void ExitOnClose() {\r
                // 座標・サイズ\r
@@ -4614,7 +4848,7 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                        // 放送局の並び順もロード\r
                        chsort.load();\r
                        \r
-                       loadRdReserve(runRecLoad, null);\r
+                       loadRdReservesAll(runRecLoad, null);\r
                }\r
                catch ( Exception e ) {\r
                        System.err.println("【致命的エラー】設定の初期化に失敗しました");\r
@@ -4678,6 +4912,7 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener {
                toolBar.addHDDRecorderChangeListener(autores);\r
                \r
                // [ツールバー/レコーダ選択]\r
+               toolBar.addHDDRecorderSelectionListener(this);          // 新聞形式\r
                toolBar.addHDDRecorderSelectionListener(paper);         // 新聞形式\r
                toolBar.addHDDRecorderSelectionListener(autores);       // 自動予約一覧\r
                toolBar.addHDDRecorderSelectionListener(rdialog);       // 予約ダイアログ\r