von ag » 12 Jun 2012, 16:29
ich bin seit kurzem stolzer Besitzer eines Vu+-Uno Recorders (enigma2). Es ist begeisternd, wie gut der TV-Brower (den ich schon lange nutze) damit zusammenspielt. Aber wie der Mensch so ist, gibt es nichts, bei dem nicht weitere Wünsche geweckt werden ...
Bei der Programmierung von kollidierenden Timern fände ich es besser, die Fehlermeldung des Recorders zu sehen. Diese Meldung wird zwar nicht in der passenden Sprache angezeigt, aber ich finde sie trotzdem aussagekräftiger als nichts - und ihr habt die Meldung auch schon so schön aus der http-response extrahiert.
- Screenshot gewünschte Fehlermeldung
- scrennshot-klein.jpg (81.21 KiB) 6516 mal betrachtet
Ich habe es mal eingebaut... Anbei die Änderungen zur Version 3.1. Es würde mich sehr freuen, wenn diese Änderung euer Gefallen findet (nur mal so als Vorschlag)
Code: Alles auswählen
Index: src/main/java/captureplugin/drivers/dreambox/connector/DreamboxConnector.java
===================================================================
--- src/main/java/captureplugin/drivers/dreambox/connector/DreamboxConnector.java (revision 7350)
+++ src/main/java/captureplugin/drivers/dreambox/connector/DreamboxConnector.java (working copy)
@@ -68,6 +68,7 @@
private final static String BOUQUET_LIST = "1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25)FROM BOUQUET \"bouquets.tv\" ORDER BY bouquet";
/** Config of the Dreambox */
private DreamboxConfig mConfig;
+ private String mLastStateText="";
private static final int WEBIF_MINIMUM_VERSION = 20070701;
@@ -82,6 +83,12 @@
}
/**
+ * @return Text of last state query
+ */
+ public String getLastStateText() {
+ return mLastStateText;
+ }
+ /**
* @param service
* Service-ID
* @return Data of specific service
@@ -359,6 +366,7 @@
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
DreamboxStateHandler handler = new DreamboxStateHandler();
saxParser.parse(stream, handler);
+ mLastStateText=handler.getStatetext();
return (Boolean.valueOf(handler.getState()));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
@@ -420,6 +428,7 @@
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
DreamboxStateHandler handler = new DreamboxStateHandler();
saxParser.parse(stream, handler);
+ mLastStateText=handler.getStatetext();
return Boolean.valueOf(handler.getState());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
Index: src/main/java/captureplugin/drivers/dreambox/DreamboxDevice.java
===================================================================
--- src/main/java/captureplugin/drivers/dreambox/DreamboxDevice.java (revision 7350)
+++ src/main/java/captureplugin/drivers/dreambox/DreamboxDevice.java (working copy)
@@ -220,7 +220,14 @@
if (dialog.getPrgTime() != null) {
DreamboxConnector connector = new DreamboxConnector(mConfig);
- return connector.addRecording(channel, dialog.getPrgTime(), box.getSelectedIndex(), mConfig.getTimeZone());
+ if (!connector.addRecording(channel, dialog.getPrgTime(), box.getSelectedIndex(), mConfig.getTimeZone())) {
+ JOptionPane.showMessageDialog(parent,
+ mLocalizer.msg("failedText","Programming operation failed:\n") + connector.getLastStateText(),
+ mLocalizer.msg("failedTitle","Failed"),
+ JOptionPane.INFORMATION_MESSAGE);
+ return false;
+ }
+ return true;
}
}
@@ -236,8 +243,13 @@
ExternalChannelIf channel = mConfig.getExternalChannel(program.getChannel());
if (channel != null) {
DreamboxConnector connector = new DreamboxConnector(mConfig);
- return connector.removeRecording((DreamboxChannel) channel, time, mConfig.getTimeZone());
- }
+ if (!connector.removeRecording((DreamboxChannel) channel, time, mConfig.getTimeZone())) {
+ JOptionPane.showMessageDialog(parent,
+ mLocalizer.msg("failedText","Programming operation failed:\n") + connector.getLastStateText(),
+ mLocalizer.msg("failedTitle","Failed"),
+ JOptionPane.INFORMATION_MESSAGE);
+ }
+ return true; }
}
}
Index: src/main/resources/captureplugin/drivers/dreambox/dreambox.properties
===================================================================
--- src/main/resources/captureplugin/drivers/dreambox/dreambox.properties (revision 7350)
+++ src/main/resources/captureplugin/drivers/dreambox/dreambox.properties (working copy)
@@ -37,6 +37,8 @@
DreamboxDevice.afterEventTitle = After recording
DreamboxDevice.expiredText = This program has expired. It's not possible to record it.\nWell, unless you have a time-machine.
DreamboxDevice.expiredTitle = Expired
+DreamboxDevice.failedText = Programming operation failed:\n
+DreamboxDevice.failedTitle = Timer failed
DreamboxDevice.mediaplayerNotConfiguredText = Unfortunately, a problem occurred during executing the mediaplayer,\ndo you want to correct the configuration now?
DreamboxDevice.mediaplayerNotConfiguredTitle = Configure
DreamboxDevice.notConfiguredText = Channel not configured, do\nyou want to do this now?
Index: src/main/resources/captureplugin/drivers/dreambox/dreambox_de.properties
===================================================================
--- src/main/resources/captureplugin/drivers/dreambox/dreambox_de.properties (revision 7350)
+++ src/main/resources/captureplugin/drivers/dreambox/dreambox_de.properties (working copy)
@@ -36,6 +36,8 @@
DreamboxDevice.afterEventTitle = Nach der Aufnahme
DreamboxDevice.expiredText = Diese Sendung ist leider vorbei. Es ist nicht m\u00F6glich, diese aufzunehmen,\nes sei denn du besitzt eine Zeitmaschine.
DreamboxDevice.expiredTitle = Sendung vorbei
+DreamboxDevice.failedText = Timer-Programmierung nicht m\u00F6glich:\n
+DreamboxDevice.failedTitle = Timer Fehler
DreamboxDevice.mediaplayerNotConfiguredText = Leider ist ein Problem beim Starten des Medienplayers aufgetreten.\nWollen Sie die Einstellungen korrigieren?
DreamboxDevice.mediaplayerNotConfiguredTitle = Konfigurieren
DreamboxDevice.notConfiguredText = Der Sender ist noch nicht konfiguriert.\nWollen Sie dies nun nachholen?
Vielen Dank für euer tolles Programm
ag
ich bin seit kurzem stolzer Besitzer eines Vu+-Uno Recorders (enigma2). Es ist begeisternd, wie gut der TV-Brower (den ich schon lange nutze) damit zusammenspielt. Aber wie der Mensch so ist, gibt es nichts, bei dem nicht weitere Wünsche geweckt werden ...
Bei der Programmierung von kollidierenden Timern fände ich es besser, die Fehlermeldung des Recorders zu sehen. Diese Meldung wird zwar nicht in der passenden Sprache angezeigt, aber ich finde sie trotzdem aussagekräftiger als nichts - und ihr habt die Meldung auch schon so schön aus der http-response extrahiert.
[attachment=0]scrennshot-klein.jpg[/attachment]
Ich habe es mal eingebaut... Anbei die Änderungen zur Version 3.1. Es würde mich sehr freuen, wenn diese Änderung euer Gefallen findet (nur mal so als Vorschlag)
[code]
Index: src/main/java/captureplugin/drivers/dreambox/connector/DreamboxConnector.java
===================================================================
--- src/main/java/captureplugin/drivers/dreambox/connector/DreamboxConnector.java (revision 7350)
+++ src/main/java/captureplugin/drivers/dreambox/connector/DreamboxConnector.java (working copy)
@@ -68,6 +68,7 @@
private final static String BOUQUET_LIST = "1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25)FROM BOUQUET \"bouquets.tv\" ORDER BY bouquet";
/** Config of the Dreambox */
private DreamboxConfig mConfig;
+ private String mLastStateText="";
private static final int WEBIF_MINIMUM_VERSION = 20070701;
@@ -82,6 +83,12 @@
}
/**
+ * @return Text of last state query
+ */
+ public String getLastStateText() {
+ return mLastStateText;
+ }
+ /**
* @param service
* Service-ID
* @return Data of specific service
@@ -359,6 +366,7 @@
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
DreamboxStateHandler handler = new DreamboxStateHandler();
saxParser.parse(stream, handler);
+ mLastStateText=handler.getStatetext();
return (Boolean.valueOf(handler.getState()));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
@@ -420,6 +428,7 @@
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
DreamboxStateHandler handler = new DreamboxStateHandler();
saxParser.parse(stream, handler);
+ mLastStateText=handler.getStatetext();
return Boolean.valueOf(handler.getState());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
Index: src/main/java/captureplugin/drivers/dreambox/DreamboxDevice.java
===================================================================
--- src/main/java/captureplugin/drivers/dreambox/DreamboxDevice.java (revision 7350)
+++ src/main/java/captureplugin/drivers/dreambox/DreamboxDevice.java (working copy)
@@ -220,7 +220,14 @@
if (dialog.getPrgTime() != null) {
DreamboxConnector connector = new DreamboxConnector(mConfig);
- return connector.addRecording(channel, dialog.getPrgTime(), box.getSelectedIndex(), mConfig.getTimeZone());
+ if (!connector.addRecording(channel, dialog.getPrgTime(), box.getSelectedIndex(), mConfig.getTimeZone())) {
+ JOptionPane.showMessageDialog(parent,
+ mLocalizer.msg("failedText","Programming operation failed:\n") + connector.getLastStateText(),
+ mLocalizer.msg("failedTitle","Failed"),
+ JOptionPane.INFORMATION_MESSAGE);
+ return false;
+ }
+ return true;
}
}
@@ -236,8 +243,13 @@
ExternalChannelIf channel = mConfig.getExternalChannel(program.getChannel());
if (channel != null) {
DreamboxConnector connector = new DreamboxConnector(mConfig);
- return connector.removeRecording((DreamboxChannel) channel, time, mConfig.getTimeZone());
- }
+ if (!connector.removeRecording((DreamboxChannel) channel, time, mConfig.getTimeZone())) {
+ JOptionPane.showMessageDialog(parent,
+ mLocalizer.msg("failedText","Programming operation failed:\n") + connector.getLastStateText(),
+ mLocalizer.msg("failedTitle","Failed"),
+ JOptionPane.INFORMATION_MESSAGE);
+ }
+ return true; }
}
}
Index: src/main/resources/captureplugin/drivers/dreambox/dreambox.properties
===================================================================
--- src/main/resources/captureplugin/drivers/dreambox/dreambox.properties (revision 7350)
+++ src/main/resources/captureplugin/drivers/dreambox/dreambox.properties (working copy)
@@ -37,6 +37,8 @@
DreamboxDevice.afterEventTitle = After recording
DreamboxDevice.expiredText = This program has expired. It's not possible to record it.\nWell, unless you have a time-machine.
DreamboxDevice.expiredTitle = Expired
+DreamboxDevice.failedText = Programming operation failed:\n
+DreamboxDevice.failedTitle = Timer failed
DreamboxDevice.mediaplayerNotConfiguredText = Unfortunately, a problem occurred during executing the mediaplayer,\ndo you want to correct the configuration now?
DreamboxDevice.mediaplayerNotConfiguredTitle = Configure
DreamboxDevice.notConfiguredText = Channel not configured, do\nyou want to do this now?
Index: src/main/resources/captureplugin/drivers/dreambox/dreambox_de.properties
===================================================================
--- src/main/resources/captureplugin/drivers/dreambox/dreambox_de.properties (revision 7350)
+++ src/main/resources/captureplugin/drivers/dreambox/dreambox_de.properties (working copy)
@@ -36,6 +36,8 @@
DreamboxDevice.afterEventTitle = Nach der Aufnahme
DreamboxDevice.expiredText = Diese Sendung ist leider vorbei. Es ist nicht m\u00F6glich, diese aufzunehmen,\nes sei denn du besitzt eine Zeitmaschine.
DreamboxDevice.expiredTitle = Sendung vorbei
+DreamboxDevice.failedText = Timer-Programmierung nicht m\u00F6glich:\n
+DreamboxDevice.failedTitle = Timer Fehler
DreamboxDevice.mediaplayerNotConfiguredText = Leider ist ein Problem beim Starten des Medienplayers aufgetreten.\nWollen Sie die Einstellungen korrigieren?
DreamboxDevice.mediaplayerNotConfiguredTitle = Konfigurieren
DreamboxDevice.notConfiguredText = Der Sender ist noch nicht konfiguriert.\nWollen Sie dies nun nachholen?
[/code]
Vielen Dank für euer tolles Programm
ag