・(キーワード検索) テーブル上の条件行の編集方法の改善\r
・(りもこん、ステータスビュー) "DBR-Z*"のレコーダIDを持つレコーダも選択対象となるようにした(>>497.)\r
・(各種ダイアログ) ESCキーでのキャンセル動作(閉じる)を実装 ※全部ではない\r
+ ・(ツールバー) 新聞軽視の番組枠の高さの倍率スライダーを1.0~3.0倍→0.5~3.0倍に変更\r
+ ・(ツールバー) 新聞軽視の番組枠の高さの倍率スライダーをダブルクリックしたら1.0倍に戻るようにした\r
+ ・(予約ダイアログ) 裏番組情報のグラフィカル表示を実装\r
■バグ修正\r
・(その他) SwingWorkerで生成したサブスレッド内で想定外のruntime exceptionが発生するとサブスレッドがログも出さずに死んでしまってエラー原因を調査できなかったが、ログが出るように仕掛けをしたのでその仕掛けがうまく動くようなら今後改善が進んでいくはず\r
・(予約ダイアログ) 類似予約テーブルで「類似予約を選択しない」を選んでも、番組ID取得ボタンがリセットされない場合がある問題を修正\r
-# 2013/03/14 22:26
+# 2013/07/29 22:19
"NHK総合","NHK総合","地上波:NHK総合"
"NHK Eテレ","NHK教育","地上波:NHK教育"
"日本テレビ","日本テレビ","地上波:日本テレビ"
"TBSニュースバード","TBSニュースバード","CS:TBSニュースバード"
"FOXムービー","FOXムービー","CS:FOXムービー"
"スペースシャワーTV プラス","スペシャプラス","CS:スペシャプラス"
+"BS236 BSアニマックス","BSアニマックス","BS:BSアニマックス"
}\r
\r
/**\r
+ * ツールバーから過去ログへのジャンプ\r
+ */\r
+ public boolean jumpToPassed(String passed) {\r
+ \r
+ // ページャーは効くよ\r
+ if ( env.isPagerEnabled() ) {\r
+ setPagerEnabled(true);\r
+ }\r
+ \r
+ // タイマーは止める\r
+ stopTimer();\r
+ \r
+ GregorianCalendar c = CommonUtils.getCalendar(passed);\r
+ String adate = CommonUtils.getDate(c);\r
+ \r
+ // 指定日付に移動して放送局の位置を確認する\r
+ TVProgramIterator pli = redrawByDateWithCenter(null,adate);\r
+ if ( pli == null ) {\r
+ // どちらにもない\r
+ MWin.appendError(ERRID+"ジャンプ先の日付がみつかりません: "+adate);\r
+ ringBeep();\r
+ return false;\r
+ }\r
+ \r
+ // 新聞形式に移動\r
+ if ( ! isTabSelected(MWinTab.PAPER) ) {\r
+ setSelectedTab(MWinTab.PAPER);\r
+ }\r
+ \r
+ return true;\r
+ }\r
+ \r
+ /**\r
* リスト形式・本体予約一覧からの目的の番組へジャンプ\r
*/\r
public boolean jumpToBangumi(String center, String startdt) {\r
\r
// 日付群\r
GregorianCalendar c = CommonUtils.getCalendar(startdt);\r
+ int hour = c.get(Calendar.HOUR_OF_DAY);\r
+ int min = c.get(Calendar.MINUTE);\r
+ \r
String adate = CommonUtils.getDate(c);\r
- String atime = CommonUtils.getTime(c);\r
String adate529 = CommonUtils.getDate529(c,true);\r
\r
+ \r
// 指定日付に移動して放送局の位置を確認する\r
TVProgramIterator pli = redrawByDateWithCenter(center,adate529);\r
if ( pli == null ) {\r
if ( ! isTabSelected(MWinTab.PAPER) ) {\r
setSelectedTab(MWinTab.PAPER);\r
}\r
- \r
+ \r
+ /*\r
+ * マウスカーソル移動\r
+ */\r
+ \r
// 横の列\r
int crindex = pli.getIndex(center);\r
if ( crindex == -1 ) {\r
}\r
\r
// 縦の列\r
- int h = 0;\r
- int m = 0;\r
int y = 0;\r
- Matcher ma = Pattern.compile("^(\\d\\d):(\\d\\d)$").matcher(atime);\r
- if (ma.find()) {\r
- h = Integer.valueOf(ma.group(1));\r
- m = Integer.valueOf(ma.group(2));\r
- }\r
if (adate529.equals(adate)) {\r
- if (h < TIMEBAR_START) {\r
- h = TIMEBAR_START;\r
- m = 0;\r
+ if (hour < TIMEBAR_START) {\r
+ hour = TIMEBAR_START;\r
+ min = 0;\r
}\r
}\r
else {\r
- h += 24;\r
+ hour += 24;\r
}\r
- y = Math.round((float)((h-TIMEBAR_START)*60+m)*bounds.getPaperHeightMultiplier()*paperHeightZoom);\r
+ y = Math.round((float)((hour-TIMEBAR_START)*60+min)*bounds.getPaperHeightMultiplier()*paperHeightZoom);\r
\r
// 新聞面を移動する\r
{\r
jCBP_calendar.setSelected(rec.getUseCalendar());\r
\r
// 主にDIGA用\r
- jCBX_tunernum.setText("-");\r
+ jCBX_tunernum.setLabelText("-");\r
if ( rl.get(0).getTunerNum() > 0 ) {\r
- jCBX_tunernum.setText("最大同時録画数の手動設定");\r
+ jCBX_tunernum.setLabelText("最大同時録画数の手動設定");\r
jCBX_tunernum.setEnabled(true);\r
jCBX_tunernum.setSelectedItem(String.valueOf(rl.get(0).getTunerNum()));\r
}\r
package tainavi;\r
\r
import java.awt.BorderLayout;\r
+import java.awt.Color;\r
import java.awt.Component;\r
import java.awt.Dimension;\r
-import java.awt.event.ActionEvent;\r
import java.awt.event.WindowAdapter;\r
import java.awt.event.WindowEvent;\r
import java.awt.event.WindowListener;\r
import java.util.Calendar;\r
import java.util.GregorianCalendar;\r
\r
-import javax.swing.AbstractAction;\r
-import javax.swing.JDialog;\r
import javax.swing.JOptionPane;\r
import javax.swing.JPanel;\r
import javax.swing.JScrollPane;\r
+import javax.swing.border.LineBorder;\r
\r
import tainavi.TitleEditorPanel.TimeVal;\r
import tainavi.HDDRecorder.RecType;\r
private JPanel jContentPane_rsv = null;\r
\r
private TitleEditorPanel jPane_title = null; // 番組設定\r
- private RecSettingEditorPanel jPane_recsetting = null; // 録画設定\r
+ private RecSettingEditorPanel jPane_recsetting = null; // 録画設定\r
private LikeReserveEditorPanel jPane_likersv = null; // 類似予約\r
+ private OverlapReserveViewPanel jPane_overlap = null;\r
\r
\r
/*\r
/**\r
* 番組情報から予約情報を生成する\r
*/\r
- private ReserveList getReserveList(HDDRecorder recorder, String enc) {\r
+ private ReserveList getReserveList(HDDRecorder recorder, ProgDetailList tvd, TimeVal tVal, String enc) {\r
\r
ReserveList r = new ReserveList();\r
\r
+ // 開始・終了時刻\r
+ if ( tvd != null ) {\r
+ r.setTitle(tvd.title);\r
+ r.setCh_name(tvd.center);\r
+ GregorianCalendar ca = CommonUtils.getCalendar(tVal!=null ? tVal.startDateTime : tvd.startDateTime);\r
+ GregorianCalendar cz = CommonUtils.getCalendar(tVal!=null ? tVal.endDateTime : tvd.endDateTime);\r
+ r.setAhh(String.format("%02d",ca.get(Calendar.HOUR_OF_DAY)));\r
+ r.setAmm(String.format("%02d",ca.get(Calendar.MINUTE)));\r
+ r.setZhh(String.format("%02d",cz.get(Calendar.HOUR_OF_DAY)));\r
+ r.setZmm(String.format("%02d",cz.get(Calendar.MINUTE)));\r
+ }\r
+ \r
// チューナー\r
r.setTuner(enc);\r
\r
* これはグラフで描画するようになるまでの仮置き\r
* @param urabanlist\r
*/\r
- private void showUrabanList(ArrayList<ReserveList> urabanlist) {\r
+ private void showUrabanList(ReserveList myrsv, ArrayList<ReserveList> urabanlist) {\r
+ \r
+ jPane_overlap.putOverlap(myrsv, urabanlist);\r
+ \r
+ if ( ! debug ) {\r
+ return;\r
+ }\r
+ \r
if ( urabanlist == null ) {\r
return;\r
}\r
String MID = MSGID+"[裏番組チェック] ";\r
+ System.out.println(MID+"----------");\r
if ( urabanlist.size() > 0 ) {\r
for ( ReserveList ura : urabanlist ) {\r
- MWin.appendMessage(String.format("%s裏番組あり: %s:%s-%s:%s, %-10s, %-12s, %s", MID, ura.getAhh(), ura.getAmm(), ura.getZhh(), ura.getZmm(), ura.getTuner(), ura.getCh_name(), ura.getTitle()));\r
+ System.out.println(String.format("%s裏番組あり: %s:%s-%s:%s, %-10s, %-12s, %s", MID, ura.getAhh(), ura.getAmm(), ura.getZhh(), ura.getZmm(), ura.getTuner(), ura.getCh_name(), ura.getTitle()));\r
}\r
}\r
else {\r
// 裏番組がない場合に分かりにくかったので追加\r
- MWin.appendMessage(MID+"裏番組はありません");\r
+ System.out.println(MID+"裏番組はありません");\r
}\r
}\r
\r
jContentPane_rsv = new JPanel();\r
\r
jContentPane_rsv.setLayout(new BorderLayout());\r
+\r
+ JPanel panel = new JPanel();\r
+ panel.setLayout(new BorderLayout());\r
+ jContentPane_rsv.add(panel,BorderLayout.CENTER);\r
+ jContentPane_rsv.add(getJPane_overlap(),BorderLayout.EAST);\r
\r
- jContentPane_rsv.add(getJPane_title(),BorderLayout.NORTH);\r
- jContentPane_rsv.add(getJPane_recsetting(),BorderLayout.CENTER);\r
- jContentPane_rsv.add(getJPane_likersv(),BorderLayout.SOUTH);\r
+ panel.add(getJPane_title(),BorderLayout.NORTH);\r
+ panel.add(getJPane_recsetting(),BorderLayout.CENTER);\r
+ panel.add(getJPane_likersv(),BorderLayout.SOUTH);\r
}\r
return jContentPane_rsv;\r
}\r
return jPane_likersv;\r
}\r
\r
+ /**\r
+ * 重複予約のエリア\r
+ */\r
+ private JScrollPane getJPane_overlap() {\r
+ if ( jPane_overlap == null ) {\r
+ jPane_overlap = new OverlapReserveViewPanel();\r
+ jPane_overlap.setBorder(new LineBorder(Color.BLACK));\r
+ }\r
+ return jPane_overlap;\r
+ }\r
\r
/*******************************************************************************\r
* ハンドラ―メソッドの実装\r
\r
// 選択\r
String enc = myrec.getEmptyEncorder(tvd.center, tVal.startDateTime, tVal.endDateTime, null, null);\r
- ReserveList myrsv = getReserveList(myrec, enc);\r
+ ReserveList myrsv = getReserveList(myrec, tvd, tVal, enc);\r
jPane_recsetting.setSelectedValues(tvd, myrsv);\r
- showUrabanList(myrec.getUrabanList());\r
+ \r
+ showUrabanList(myrsv, myrec.getUrabanList());\r
\r
return true;\r
}\r
\r
// 録画設定の選択\r
setSelectedRecorder(myrec);\r
+ jPane_recsetting.setFlexItems(myrec, tvd.center);\r
\r
String enc = myrec.getEmptyEncorder(tvd.center, tVal.startDateTime, tVal.endDateTime, null, vrate);\r
- ReserveList myrsv = getReserveList(myrec, enc);\r
+ ReserveList myrsv = getReserveList(myrec, tvd, tVal, enc);\r
jPane_recsetting.setSelectedValues(tvd, myrsv);\r
- showUrabanList(myrec.getUrabanList());\r
+ showUrabanList(myrsv, myrec.getUrabanList());\r
\r
if ( myavs != null ) {\r
// ジャンル別AV設定から追加で選択する\r
// 録画設定の選択\r
myrec.getEmptyEncorder(tvd.center, myrsv.getStartDateTime(), myrsv.getEndDateTime(), myrsv, null);\r
setSelectedRecorder(myrec);\r
- showUrabanList(myrec.getUrabanList());\r
+ jPane_recsetting.setFlexItems(myrec, tvd.center);\r
+ \r
+ {\r
+ TimeVal tVal = getTimeValue(tvd);\r
+ jPane_title.setTimeValue(tVal);\r
+ jPane_title.setDateItems(tvd, tVal);\r
+ \r
+ ReserveList modrsv = getReserveList(myrec, tvd, tVal, myrsv.getTuner());\r
+ showUrabanList(modrsv, myrec.getUrabanList());\r
+ }\r
\r
jPane_recsetting.setSelectedValues(myrsv);\r
}\r
JSlider sl = (JSlider) e.getSource();\r
setPaperZoom(sl.getValue());\r
}\r
+ \r
+ @Override\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getClickCount() == 2) {\r
+ JSlider sl = (JSlider) e.getSource();\r
+ sl.setValue(100);\r
+ setPaperZoom(sl.getValue());\r
+ }\r
+ }\r
};\r
\r
// スナップショットをとる\r
\r
private JSlider getJSlider_paperZoom(String s) {\r
if ( jSlider_paperZoom == null ) {\r
- jSlider_paperZoom = new JSlider(100,300,100);\r
+ jSlider_paperZoom = new JSlider(50,300,100);\r
jSlider_paperZoom.setToolTipText(TIPS_PAPERZOOM);\r
\r
Dimension d = jSlider_paperZoom.getPreferredSize();\r
- d.width = 32;\r
+ d.width = 45;\r
jSlider_paperZoom.setPreferredSize(d);\r
jSlider_paperZoom.setMaximumSize(d);\r
jSlider_paperZoom.setMinimumSize(d);\r
}\r
\r
/**\r
+ * 1440分中の何分目か返す\r
+ */\r
+ public static int getMinOfDate(String ahh, String amm) {\r
+ try {\r
+ return getMinOfDate(Integer.valueOf(ahh),Integer.valueOf(amm));\r
+ }\r
+ catch (NumberFormatException e) {\r
+ return -1;\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * 1440分中の何分目か返す\r
+ */\r
+ public static int getMinOfDate(int ahh, int amm) {\r
+ return ahh*60+amm;\r
+ }\r
+ \r
+ /**\r
* @see #getCritDateTime(int)\r
*/\r
public static String getCritDateTime() {\r
return dst;\r
}\r
\r
+ public static String enEscape(String src) {\r
+ StringBuilder sb = new StringBuilder();\r
+ for ( int index=0; index<src.length(); index++ ) {\r
+ char c = src.charAt(index);\r
+ if ( c == '<' ) {\r
+ sb.append("<");\r
+ }\r
+ else if ( c == '>' ) {\r
+ sb.append(">");\r
+ }\r
+ else if ( c == '&' ) {\r
+ sb.append("&");\r
+ }\r
+ else {\r
+ sb.append(c);\r
+ }\r
+ }\r
+ return sb.toString();\r
+ }\r
+ \r
+ \r
/**\r
* Unicodeエスケープをデコードします。\r
*/\r
return sb.toString();\r
}\r
\r
+ \r
+ public static String getVerticalSplittedHTML(String text) {\r
+ if ( text == null ) {\r
+ return null;\r
+ }\r
+ \r
+ String html = "<HTML>";\r
+ for ( String s : text.split("") ) {\r
+ html += s+"<BR>";\r
+ }\r
+ html += "</HTML>";\r
+ \r
+ return html;\r
+ }\r
+ \r
+ \r
/*******************************************************************************\r
* オブジェクト操作関連\r
******************************************************************************/\r
this.jlabel.setToolTipText(s);\r
}\r
\r
- public void setText(String s) {\r
+ public void setLabelText(String s) {\r
this.jlabel.setText(s);\r
}\r
\r
+ public String getLabelText() {\r
+ return this.jlabel.getText();\r
+ }\r
+ \r
public ComboBoxModel getModel() {\r
return this.jcombobox.getModel();\r
}\r
--- /dev/null
+package tainavi;\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Color;\r
+import java.awt.Dimension;\r
+import java.util.ArrayList;\r
+\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.ScrollPaneConstants;\r
+import javax.swing.SpringLayout;\r
+import javax.swing.border.LineBorder;\r
+\r
+\r
+public class OverlapReserveViewPanel extends JScrollPane {\r
+\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ /*******************************************************************************\r
+ * 定数\r
+ ******************************************************************************/\r
+ \r
+ private static final int BAR_WIDTH = 20;\r
+ private static final float BAR_NUM = 6.5F;\r
+ \r
+ private static final int BAR_REG = 2;\r
+ \r
+ /*******************************************************************************\r
+ * コンポーネント\r
+ ******************************************************************************/\r
+ \r
+ JPanel jpanel = null;\r
+ \r
+ \r
+ /*******************************************************************************\r
+ * コンストラクタ\r
+ ******************************************************************************/\r
+\r
+ public OverlapReserveViewPanel() {\r
+ super();\r
+ \r
+ setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);\r
+ setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);\r
+ \r
+ getHorizontalScrollBar().setUnitIncrement(BAR_WIDTH);\r
+ \r
+ setViewportView(getJPanel());\r
+\r
+ Dimension d = new Dimension((int)(BAR_NUM*BAR_WIDTH+2.0),0); // +2はBorder分\r
+ setPreferredSize(d);\r
+ }\r
+\r
+ \r
+ /*******************************************************************************\r
+ * コンポーネント\r
+ ******************************************************************************/\r
+\r
+ public JPanel getJPanel() {\r
+ if ( jpanel == null ) {\r
+ jpanel = new JPanel();\r
+ }\r
+ return jpanel;\r
+ }\r
+ \r
+ \r
+ /*******************************************************************************\r
+ * メソッド\r
+ ******************************************************************************/\r
+\r
+ public void putOverlap(ReserveList myrsv, ArrayList<ReserveList> overlaps) {\r
+\r
+ jpanel.removeAll();\r
+ jpanel.repaint();\r
+ \r
+ if ( overlaps == null || overlaps.size() == 0 ) {\r
+ // 裏番組ないよ\r
+ jpanel.setPreferredSize(getPreferredSize());\r
+ jpanel.setLayout(new BorderLayout());\r
+ jpanel.add(new JLabel("裏番組なし", JLabel.CENTER),BorderLayout.CENTER);\r
+ return;\r
+ }\r
+ \r
+ jpanel.setLayout(new SpringLayout());\r
+ \r
+ //int height = jpanel.getSize().height;\r
+ int height = getSize().height - getHorizontalScrollBar().getSize().height;\r
+ \r
+ int min = CommonUtils.getMinOfDate(myrsv.getAhh(),myrsv.getAmm());\r
+ int len = CommonUtils.getRecMinVal(myrsv.getAhh(),myrsv.getAmm(),myrsv.getZhh(),myrsv.getZmm());\r
+ float mul = (float)height / (len*BAR_REG);\r
+ int topmin = min-len/2;\r
+ int bottommin = topmin+len*BAR_REG;\r
+ \r
+ int n = 0;\r
+ _putOverlap(jpanel,myrsv,height,topmin,bottommin,n++,mul);\r
+ for ( ReserveList r : overlaps ) {\r
+ if ( r == myrsv ) {\r
+ continue;\r
+ }\r
+ _putOverlap(jpanel,r,height,topmin,bottommin,n++,mul);\r
+ }\r
+ \r
+ jpanel.setPreferredSize(new Dimension(BAR_WIDTH*n,height));\r
+ }\r
+ \r
+ private void _putOverlap(JPanel p, ReserveList r, int height, int topmin, int bottommin, int n, float mul) {\r
+ int amin = CommonUtils.getMinOfDate(r.getAhh(),r.getAmm());\r
+ int len = CommonUtils.getRecMinVal(r.getAhh(),r.getAmm(),r.getZhh(),r.getZmm());\r
+ int zmin = amin+len;\r
+ \r
+ // 描画枠からはみ出ていたら\r
+ if ( zmin < topmin ) {\r
+ amin = amin+1440;\r
+ zmin = zmin+1440;\r
+ }\r
+ else if ( bottommin < amin ) {\r
+ amin = amin-1440;\r
+ zmin = zmin-1440;\r
+ }\r
+ \r
+ int h = (int)(mul*len);\r
+ int x = n*BAR_WIDTH;\r
+ int y = (int)(mul*(amin-topmin));\r
+\r
+ //System.err.println("bbb "+topmin+", "+bottommin+" : "+amin+", "+zmin+" : "+y);\r
+ \r
+ JLabel label = new JLabel(CommonUtils.getVerticalSplittedHTML(r.getTuner()));\r
+ label.setHorizontalAlignment(JLabel.CENTER);\r
+ label.setOpaque(true);\r
+ label.setBackground(n==0 ? Color.WHITE : Color.LIGHT_GRAY);\r
+ label.setBorder(new LineBorder(n==0 ? Color.RED : Color.BLACK));\r
+ label.setToolTipText(String.format("<HTML>[%s]<BR>%s:%s - %s:%s<BR>(%s)<BR>%s</HTML>",r.getTuner(),r.getAhh(),r.getAmm(),r.getZhh(),r.getZmm(),r.getCh_name(),CommonUtils.enEscape(r.getTitle())));\r
+ \r
+ CommonSwingUtils.putComponentOn(p, label, BAR_WIDTH, h, x, y);\r
+ \r
+ JLabel bdr = new JLabel();\r
+ bdr.setOpaque(true);\r
+ bdr.setBackground(Color.GRAY);\r
+ //bdr.setBorder(new DashBorder(Color.GRAY, 1, 5, 5));\r
+ \r
+ CommonSwingUtils.putComponentOn(p, bdr, BAR_WIDTH, height, x, 0);\r
+ }\r
+ \r
+}\r
GregorianCalendar cfz = CommonUtils.getCalendar(f.getDate()+" "+f.getAhh()+":"+f.getAmm());\r
cfz.add(Calendar.MINUTE, f.getLength());\r
Long dz = CommonUtils.getCompareDateTime(cea, cfz);\r
- if ( (dz<=0L && dz>-86400000L*7L) &&\r
+ if (\r
+ (dz<=0L && dz>-86400000L*7L) &&\r
(f.getTitle().equals(e.getTitle()) || (e.getDetail()!=null && f.getTitle().equals(e.getDetail()))) ) {\r
- f.setDetail(f.getDetail()+e.getResult()+"\n");\r
- cea = null;\r
+ // 一週間以内に、タイトルが同じor変更前のタイトルと一致したものに追加しよう\r
+ for ( String msg : f.getDetail().split("\n") ) {\r
+ if ( msg.equals(e.getResult()) ) {\r
+ // 重複メッセージは要らね\r
+ cea = null;\r
+ }\r
+ }\r
+ if ( cea != null ) {\r
+ f.setDetail(f.getDetail()+e.getResult()+"\n");\r
+ cea = null;\r
+ }\r
break;\r
}\r
}\r
}\r
\r
private void setLabel(JComboBoxPanel combo, String overrideLabel, String defaultLabel) {\r
- combo.setText((overrideLabel!=null)?overrideLabel:defaultLabel);\r
+ combo.setLabelText((overrideLabel!=null)?overrideLabel:defaultLabel);\r
}\r
\r
/*******************************************************************************\r
\r
/**\r
* レコーダのアイテム選択(中から呼んじゃだめだよ)\r
- * <P>これを呼び出した場合、レコーダ選択イベントは起きないので選択結果は呼び出し元で保存しておく必要がある\r
- * <P>これは他のコンポーネントがトリガーとなって起きるイベントから呼び出されるのでリスナーは動かしておかないといけない \r
*/\r
public String setSelectedRecorderValue(String myself) {\r
- return setSelectedValue(jCBXPanel_recorder, myself);\r
+ setEnabledListenerAll(false);\r
+ String s = setSelectedValue(jCBXPanel_recorder, myself);\r
+ setEnabledListenerAll(true);\r
+ return s;\r
}\r
\r
/**\r
return;\r
}\r
\r
-\r
String pgtype = (String) jCBXPanel_audiorate.getSelectedItem();\r
if ( pgtype == HDDRecorder.ITEM_REC_TYPE_PROG ) {\r
// "プラグラム予約"なら触る必要なし\r
}\r
};\r
private void checkMarginTop(boolean check) {\r
- Color c = Color.BLACK;\r
- try {\r
- if ( check && Integer.valueOf((String) jCBXPanel_msChapter.getSelectedItem()) <= 0) {\r
- c = Color.RED;\r
- }\r
- }\r
- catch (NumberFormatException ev) {\r
- }\r
- jCBXPanel_msChapter.setLabelForeground(c); // 開始マージン0は危ないよね\r
+ _checkMargin(jCBXPanel_msChapter,check); // 開始マージン0は危ないよね\r
}\r
private void checkMarginBottom(boolean check) {\r
+ _checkMargin(jCBXPanel_mvChapter,check); // 終了マージン0は危ないよね\r
+ }\r
+ private void _checkMargin(JComboBoxPanel comp, boolean check) {\r
Color c = Color.BLACK;\r
try {\r
- if ( check && Integer.valueOf((String) jCBXPanel_msChapter.getSelectedItem()) <= 0) {\r
+ if ( check && comp.getLabelText().startsWith("録画") && Integer.valueOf((String) comp.getSelectedItem()) <= 0) {\r
c = Color.RED;\r
}\r
}\r
catch (NumberFormatException ev) {\r
}\r
- jCBXPanel_mvChapter.setLabelForeground(c); // 終了マージン0は危ないよね\r
+ comp.setLabelForeground(c);\r
}\r
\r
/**\r
* イベントトリガーでアイテムを操作する際に、さらにイベントをキックされてはたまらないのでリスナーを付けたり外したりする\r
*/\r
private void setEnabledListenerAll(boolean enabled) {\r
-\r
- // あとで削除\r
- if ( debug ) {\r
- if ( enabled ) {\r
- Object o = null;\r
- for ( ItemListener il : jCBXPanel_recorder.getJComboBox().getItemListeners() ) {\r
- if ( il == il_recorderChanged ) {\r
- System.out.println(DBGID+"****** リスナーの重複登録 ******");\r
- //CommonUtils.printStackTrace();\r
- o = il;\r
- break;\r
- }\r
- }\r
- if ( o == null ) {\r
- System.out.println("+++ リスナーの登録 +++");\r
- //CommonUtils.printStackTrace();\r
- }\r
- }\r
- else {\r
- System.out.println("... リスナーの削除 ...");\r
- }\r
- }\r
- \r
setEnabledItemListener(jCBXPanel_recorder, il_recorderChanged, enabled);\r
setEnabledItemListener(jCBXPanel_encoder, il_encoderChanged, enabled);\r
setEnabledItemListener(jCBXPanel_videorate, il_vrateChanged, enabled);\r
@Override\r
protected boolean jumpToPassed(String passed) {\r
timer_now.pause();\r
- boolean b = paper.jumpToBangumi(null,passed);\r
+ boolean b = paper.jumpToPassed(passed);\r
timer_now.start();\r
return b;\r
}\r
// ほにゃらら\r
toolBar.setDebug(env.getDebug());\r
autores.setDebug(env.getDebug());\r
+ rdialog.setDebug(env.getDebug());\r
\r
// PassedProgramListの設定変更\r
tvprograms.getPassed().setPassedDir(env.getPassedDir());\r
// 設定\r
toolBar.setDebug(env.getDebug());\r
autores.setDebug(env.getDebug());\r
+ rdialog.setDebug(env.getDebug());\r
\r
// ページャーの設定\r
toolBar.setPagerItems();\r
---バグとおぼしき現象\r
\r
-【過去ログ】検索ボックスでの日付指定と表示される日付があわない\r
\r
【レコーダ対応】RD-X5プラグインのバグ調査依頼への対応\r
\r
【予約ダイアログ】類似予約対応で、類似予約なしを選択しても番組IDがリセットされない →直したはず\r
【予約ダイアログ】類似予約対応で、類似予約なしを選択してもタイトルがリセットされない →直したはず\r
\r
-【予約ダイアログ】TvRockで外部入力が空きチューナー自動選択選択の対象になってしまった!!?\r
+【予約ダイアログ】TvRockで外部入力が空きチューナー自動選択選択の対象になってしまった!!? →空きエンコーダ選択に"外部"ではじまるものを追加する余計なコードをつけたしてしまっていた\r
【キーワード検索】ダイアログがなんかおかしい(条件の二重登録?) →登録ラベルの重複チェックが行えていない既存バグのせいだった\r
+【過去ログ】検索ボックスでの日付指定と表示される日付があわない →paper#jump()の統廃合時のコーディングミス\r
+\r
+【レコーダ対応】TvRockで録画結果一覧の時刻調整ログが取得のたびに増える問題の修正 →重複チェックをしてなかったので取得のたびに適当なエントリに付け加えられていた\r
\r
---以上\r