• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

タイニー番組ナビゲータ本体


コミットメタ情報

リビジョン713ebeeaef3d07edf28a788630a6c903a7905cd5 (tree)
日時2018-06-23 12:52:55
作者Masahiko Kimura <mkimura@u01....>
コミッターMasahiko Kimura

ログメッセージ

Ver.1.6.1 (2018/06/23)
1. [DBR-T2007]エンコーダがすべて「R1」になる不具合の修正
2. [DBR-T2007]BDの詳細情報が取得できない不具合の修正
3. [タイトル一覧]フォルダコンボの右端の描画が乱れる不具合の修正
4. [新聞形式]放送局別のノードを選択した状態でレコーダを切り替えると再描画されない不具合の修正
5. [予約情報]フォルダコンボの展開幅を広げる
6. [タイトル情報]第<n>話「<サブタイトル>」形式を個別処理する

変更サマリ

差分

--- a/TinyBannavi/src/tainavi/AbsPaperView.java
+++ b/TinyBannavi/src/tainavi/AbsPaperView.java
@@ -596,26 +596,105 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
596596 return true;
597597 }
598598
599- /**
600- * ページャーによる再描画
599+ /*
600+ * 現在の選択状態で再描画する
601601 */
602- public boolean redrawByPager() {
602+ public void redrawByCurrentSelection() {
603+ TreePath path = jTree_tree.getSelectionPath();
603604
604- //JTreeLabel.Nodes node = jLabel_tree.getNode();
605- String value = jLabel_tree.getValue();
605+ if ( path != null && path.getPathCount() == 2 ) {
606+ // 親ノードとか触られても…
607+ return;
608+ }
606609
607- if ( value != null ) {
608- if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
609- redrawByNow(cur_tuner);
610- }
611- else {
612- redrawByDate(value, cur_tuner);
610+ if ( path != null && path.getPathCount() == 3 ) {
611+
612+ if (env.getDebug()) System.out.println(DBGID+"SELECTED treeSelListner "+path);
613+
614+ stopTimer();
615+
616+ JTreeLabel.Nodes node = JTreeLabel.Nodes.getNode(path.getPathComponent(1).toString());
617+ String value = path.getLastPathComponent().toString();
618+
619+ switch ( node ) {
620+ case DATE:
621+ if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
622+ // 現在日時に移動する
623+ redrawByNow(IterationType.ALL);
624+ }
625+ else {
626+ redrawByDate(value,IterationType.ALL);
627+ }
628+ if ( env.isPagerEnabled() ) {
629+ setPagerEnabled(true);
630+ }
631+ break;
632+ case TERRA:
633+ if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
634+ redrawByNow(IterationType.TERRA);
635+ }
636+ else {
637+ redrawByDate(value,IterationType.TERRA);
638+ }
639+ if ( env.isPagerEnabled() ) {
640+ setPagerEnabled(true);
641+ }
642+ break;
643+ case BS:
644+ if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
645+ redrawByNow(IterationType.BS);
646+ }
647+ else {
648+ redrawByDate(path.getLastPathComponent().toString(),IterationType.BS);
649+ }
650+ if ( env.isPagerEnabled() ) {
651+ setPagerEnabled(true);
652+ }
653+ break;
654+ case CS:
655+ if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
656+ redrawByNow(IterationType.CS);
657+ }
658+ else {
659+ redrawByDate(path.getLastPathComponent().toString(),IterationType.CS);
660+ }
661+ if ( env.isPagerEnabled() ) {
662+ setPagerEnabled(true);
663+ }
664+ break;
665+ case BCAST:
666+ redrawByCenter(value);
667+ if ( env.isPagerEnabled() ) {
668+ setPagerEnabled(false);
669+ }
670+ break;
671+ case PASSED:
672+ PassedProgram passed = tvprograms.getPassed();
673+ if ( passed.loadAllCenters(value) ) {
674+ redrawByDate(value, IterationType.PASSED);
675+ }
676+ else {
677+ MWin.appendError(ERRID+"過去ログが存在しません: "+value);
678+ ringBeep();
679+ }
680+ if ( env.isPagerEnabled() ) {
681+ setPagerEnabled(true);
682+ }
683+ break;
684+ default:
685+ break;
613686 }
614687
615- return true;
688+ jLabel_tree.setView(node, value);
689+ return;
616690 }
617691
618- return false;
692+ // なんかおかしいのでデフォルト選択にまわす
693+ CommonUtils.printStackTrace();
694+ MWin.appendError(DBGID+"デバッグまで仮置き");
695+ //redrawByNow(IterationType.ALL);
696+ //jLabel_tree.setView(JTreeLabel.Nodes.DATE, JTreeLabel.Nodes.NOW.getLabel());
697+
619698 }
620699
621700 /**
@@ -2646,100 +2725,7 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
26462725 @Override
26472726 public void valueChanged(TreeSelectionEvent e){
26482727
2649- TreePath path = jTree_tree.getSelectionPath();
2650-
2651- if ( path != null && path.getPathCount() == 2 ) {
2652- // 親ノードとか触られても…
2653- return;
2654- }
2655-
2656- if ( path != null && path.getPathCount() == 3 ) {
2657-
2658- if (env.getDebug()) System.out.println(DBGID+"SELECTED treeSelListner "+path);
2659-
2660- stopTimer();
2661-
2662- JTreeLabel.Nodes node = JTreeLabel.Nodes.getNode(path.getPathComponent(1).toString());
2663- String value = path.getLastPathComponent().toString();
2664-
2665- switch ( node ) {
2666- case DATE:
2667- if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
2668- // 現在日時に移動する
2669- redrawByNow(IterationType.ALL);
2670- }
2671- else {
2672- redrawByDate(value,IterationType.ALL);
2673- }
2674- if ( env.isPagerEnabled() ) {
2675- setPagerEnabled(true);
2676- }
2677- break;
2678- case TERRA:
2679- if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
2680- redrawByNow(IterationType.TERRA);
2681- }
2682- else {
2683- redrawByDate(value,IterationType.TERRA);
2684- }
2685- if ( env.isPagerEnabled() ) {
2686- setPagerEnabled(true);
2687- }
2688- break;
2689- case BS:
2690- if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
2691- redrawByNow(IterationType.BS);
2692- }
2693- else {
2694- redrawByDate(path.getLastPathComponent().toString(),IterationType.BS);
2695- }
2696- if ( env.isPagerEnabled() ) {
2697- setPagerEnabled(true);
2698- }
2699- break;
2700- case CS:
2701- if ( JTreeLabel.Nodes.NOW.getLabel().equals(value) ) {
2702- redrawByNow(IterationType.CS);
2703- }
2704- else {
2705- redrawByDate(path.getLastPathComponent().toString(),IterationType.CS);
2706- }
2707- if ( env.isPagerEnabled() ) {
2708- setPagerEnabled(true);
2709- }
2710- break;
2711- case BCAST:
2712- redrawByCenter(value);
2713- if ( env.isPagerEnabled() ) {
2714- setPagerEnabled(false);
2715- }
2716- break;
2717- case PASSED:
2718- PassedProgram passed = tvprograms.getPassed();
2719- if ( passed.loadAllCenters(value) ) {
2720- redrawByDate(value, IterationType.PASSED);
2721- }
2722- else {
2723- MWin.appendError(ERRID+"過去ログが存在しません: "+value);
2724- ringBeep();
2725- }
2726- if ( env.isPagerEnabled() ) {
2727- setPagerEnabled(true);
2728- }
2729- break;
2730- default:
2731- break;
2732- }
2733-
2734- jLabel_tree.setView(node, value);
2735- return;
2736- }
2737-
2738- // なんかおかしいのでデフォルト選択にまわす
2739- CommonUtils.printStackTrace();
2740- MWin.appendError(DBGID+"デバッグまで仮置き");
2741- //redrawByNow(IterationType.ALL);
2742- //jLabel_tree.setView(JTreeLabel.Nodes.DATE, JTreeLabel.Nodes.NOW.getLabel());
2728+ redrawByCurrentSelection();
27432729 }
27442730 };
27452731
--- a/TinyBannavi/src/tainavi/AbsTitleDialog.java
+++ b/TinyBannavi/src/tainavi/AbsTitleDialog.java
@@ -366,13 +366,15 @@ abstract class AbsTitleDialog extends JDialog {
366366 for (String pat : patterns){
367367 Matcher m = Pattern.compile(pat).matcher(otitle);
368368 if (m.find()){
369+ String pre = m.group(1);
370+ String post = m.groupCount() > 2 ? m.group(3) : "";
369371 Matcher mw = Pattern.compile("(0-9)*").matcher(m.group(2));
370372 if (mw.find()){
371373 String zno = CommonUtils.toZENNUM(no);
372- return m.group(1) + zno + m.group(3);
374+ return pre + zno + post;
373375 }
374376 else
375- return m.group(1) + no + m.group(3);
377+ return pre + no + post;
376378 }
377379 }
378380
@@ -387,6 +389,7 @@ abstract class AbsTitleDialog extends JDialog {
387389 "(「)(.*?)(」)",
388390 "(『)(.*?)(』)",
389391 "([)(.*?)(])",
392+ "(【)(.*?)(】)",
390393 "(\\[)(.*?)(\\])"
391394 };
392395
@@ -403,6 +406,10 @@ abstract class AbsTitleDialog extends JDialog {
403406 * サブタイトルを取得する
404407 */
405408 protected String getSubtitle(String title, ProgDetailList pdl){
409+ String subc = searchSubtitleCombo(pdl.title + " " + pdl.detail);
410+ if (subc != null)
411+ return subc;
412+
406413 String sub1 = searchSubtitle(title);
407414 if (sub1 != null)
408415 return sub1;
@@ -417,6 +424,21 @@ abstract class AbsTitleDialog extends JDialog {
417424 /*
418425 * サブタイトルを抽出する
419426 */
427+ protected String searchSubtitleCombo(String title){
428+ String[] patternsCombo = {
429+ "(第|#|#)([0-90-9]{1,3})(話|回)?( | )?「(.*?)」",
430+ "(第|#|#)([0-90-9]{1,3})(話|回)?( | )?『(.*?)』",
431+ "(第|#|#)([0-90-9]{1,3})(話|回)?( | )?【(.*?)】"};
432+
433+ for (String pat : patternsCombo){
434+ Matcher m = Pattern.compile(pat).matcher(title);
435+ if (m.find())
436+ return m.group(5);
437+ }
438+
439+ return null;
440+ }
441+
420442 protected String searchSubtitle(String title){
421443 String[] patterns = {"「(.*?)」", "『(.*?)』", "【(.*?)】"};
422444
--- a/TinyBannavi/src/tainavi/AbsTitleListView.java
+++ b/TinyBannavi/src/tainavi/AbsTitleListView.java
@@ -37,8 +37,6 @@ import javax.swing.KeyStroke;
3737 import javax.swing.SpringLayout;
3838 import javax.swing.event.ListSelectionEvent;
3939 import javax.swing.event.ListSelectionListener;
40-import javax.swing.event.PopupMenuEvent;
41-import javax.swing.event.PopupMenuListener;
4240 import javax.swing.event.TableModelEvent;
4341 import javax.swing.table.DefaultTableColumnModel;
4442 import javax.swing.table.DefaultTableModel;
@@ -511,8 +509,9 @@ public abstract class AbsTitleListView extends JPanel {
511509 removeListeners();
512510
513511 if (setting){
514- if (rec.GetRdSettings(force))
515- MWin.appendMessage(MSGID+"レコーダから設定情報が正常に取得できました");
512+ if (rec.GetRdSettings(force)){
513+// MWin.appendMessage(MSGID+"レコーダから設定情報が正常に取得できました");
514+ }
516515 else
517516 MWin.appendError(ERRID+"レコーダからの設定情報の取得に失敗しました");
518517 }
@@ -527,7 +526,7 @@ public abstract class AbsTitleListView extends JPanel {
527526
528527 StWin.appendMessage(MSGID+"レコーダからタイトル一覧を取得します(force=" + String.valueOf(force) + ",details=" + String.valueOf(details) + "):"+devId);
529528 if (rec.GetRdTitles(devId, force, details, devId.equals(HDDRecorder.DEVICE_ALL))){
530- MWin.appendMessage(MSGID+"レコーダからタイトル一覧が正常に取得できました:"+devId);
529+// MWin.appendMessage(MSGID+"レコーダからタイトル一覧が正常に取得できました:"+devId);
531530 }
532531 else
533532 MWin.appendError(ERRID+"レコーダからのタイトル一覧の取得に失敗しました:"+devId);
@@ -1697,41 +1696,15 @@ public abstract class AbsTitleListView extends JPanel {
16971696 private JComboBoxPanel getFolderComboPanel() {
16981697 if (jCBXPanel_folder == null){
16991698 jCBXPanel_folder = new JComboBoxPanel("フォルダ:", FLABEL_WIDTH, FCOMBO_WIDTH, true);
1699+ jCBXPanel_folder.addPopupWidth(FCOMBO_OPEN_WIDTH-FCOMBO_WIDTH);
1700+
17001701 JComboBox combo = jCBXPanel_folder.getJComboBox();
17011702 combo.setMaximumRowCount(32);
1702- combo.setPreferredSize(new Dimension(FCOMBO_WIDTH, PARTS_HEIGHT));
1703- combo.addPopupMenuListener(new FolderPopupMenuListener());
17041703 }
17051704
17061705 return jCBXPanel_folder;
17071706 }
17081707
1709- /*
1710- * フォルダ用コンボボックスのリスナークラス
1711- */
1712- private class FolderPopupMenuListener implements PopupMenuListener {
1713- private boolean adjusting;
1714- @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
1715- JComboBox combo = (JComboBox) e.getSource();
1716- Dimension size = combo.getSize();
1717- if ( size.width >= FCOMBO_OPEN_WIDTH) {
1718- return;
1719- }
1720-
1721- if (!adjusting) {
1722- adjusting = true;
1723- combo.setSize(FCOMBO_OPEN_WIDTH, size.height);
1724- combo.showPopup();
1725- }
1726-
1727- combo.setSize(size);
1728- adjusting = false;
1729- }
1730-
1731- @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
1732- @Override public void popupMenuCanceled(PopupMenuEvent e) {}
1733- }
1734-
17351708 /*******************************************************************************
17361709 * 表表示
17371710 ******************************************************************************/
--- a/TinyBannavi/src/tainavi/AbsToolBar.java
+++ b/TinyBannavi/src/tainavi/AbsToolBar.java
@@ -79,7 +79,7 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
7979 // 新聞形式
8080 protected abstract boolean jumpToNow();
8181 protected abstract boolean jumpToPassed(String passed);
82- protected abstract boolean redrawByPager();
82+ protected abstract void redrawByPager();
8383 protected abstract void toggleMatchBorder(boolean b);
8484 protected abstract void setPaperColorDialogVisible(boolean b);
8585 protected abstract void setPaperZoom(int n);
--- a/TinyBannavi/src/tainavi/RecSettingEditorPanel.java
+++ b/TinyBannavi/src/tainavi/RecSettingEditorPanel.java
@@ -178,6 +178,7 @@ public class RecSettingEditorPanel extends JPanel {
178178 CommonSwingUtils.putComponentOn(this, jCBXPanel_dvdcompat = new JComboBoxPanel("",110,110), COMBO_WIDTH, COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);
179179 CommonSwingUtils.putComponentOn(this, jCBXPanel_aspect = new JComboBoxPanel("",110,110), COMBO_WIDTH, COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);
180180 CommonSwingUtils.putComponentOn(this, jCBXPanel_mvChapter = new JComboBoxPanel("",110,110), COMBO_WIDTH, COMBO_HEIGHT, x+=(COMBO_WIDTH+SEP_WIDTH), y);
181+ jCBXPanel_folder.addPopupWidth(300);
181182
182183 y += COMBO_HEIGHT;
183184 x = SEP_WIDTH_NARROW;
--- a/TinyBannavi/src/tainavi/VersionInfo.java
+++ b/TinyBannavi/src/tainavi/VersionInfo.java
@@ -5,7 +5,7 @@ import java.util.regex.Pattern;
55
66
77 public class VersionInfo {
8- private static final String Version = "タイニー番組ナビゲータ for DBR-T2007 3.22.18β+1.6";
8+ private static final String Version = "タイニー番組ナビゲータ for DBR-T2007 3.22.18β+1.6.1";
99
1010 private static final String OSname = System.getProperty("os.name");
1111 private static final String OSvers = System.getProperty("os.version");
--- a/TinyBannavi/src/tainavi/Viewer.java
+++ b/TinyBannavi/src/tainavi/Viewer.java
@@ -1806,11 +1806,10 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
18061806 }
18071807
18081808 @Override
1809- protected boolean redrawByPager() {
1809+ protected void redrawByPager() {
18101810 timer_now.pause();
1811- boolean b = paper.redrawByPager();
1811+ paper.redrawByCurrentSelection();
18121812 timer_now.start();
1813- return b;
18141813 }
18151814
18161815 @Override
@@ -3231,6 +3230,7 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
32313230 if ( succeeded ) {
32323231 reserved.redrawReservedList();
32333232 recorded.redrawRecordedList();
3233+ paper.redrawByCurrentSelection();
32343234
32353235 mwin.appendMessage(String.format("【予約詳細の取得処理が完了しました】 所要時間: %.2f秒",tc.end()));
32363236 }
--- a/TinyBannavi/src/tainavi/pluginrec/PlugIn_RecDBR_T2007.java
+++ b/TinyBannavi/src/tainavi/pluginrec/PlugIn_RecDBR_T2007.java
@@ -1146,7 +1146,10 @@ public class PlugIn_RecDBR_T2007 extends HDDRecorderUtils implements HDDRecorder
11461146 // recording
11471147
11481148 // 基本情報をセットする
1149+ String tuner = r.getTuner();
11491150 setReserveBasicInfo(r, exec, option, eventname, network, ch, repeat, datetime, duration);
1151+ // チューナはそのまま
1152+ r.setTuner(tuner);
11501153
11511154 // 保存先ドライブ
11521155 String device_name = value2text(device, device_id);
@@ -1898,7 +1901,7 @@ public class PlugIn_RecDBR_T2007 extends HDDRecorderUtils implements HDDRecorder
18981901 "\"datetime\":(\\d+)," + // 8
18991902 "\"duration\":(\\d+)," + // 9
19001903 "\"copycount\":(\\d+)," + // 10
1901- "\"dlnaObjectID\":\"([^\"]+)\"," + // 11
1904+ "\"dlnaObjectID\":\"([^\"]*)\"," + // 11
19021905 "\"recording\":(false|true)," + // 12
19031906 "\"chapter\":\\[([^\\]]*)\\]\\}") // 13
19041907 .matcher(response);