Author: toad
Date: 2007-06-09 17:36:34 +0000 (Sat, 09 Jun 2007)
New Revision: 13501

Modified:
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Notify user when f2f transfers succeed or fail

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2007-06-09 
17:23:49 UTC (rev 13500)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2007-06-09 
17:36:34 UTC (rev 13501)
@@ -325,15 +325,19 @@
 FetchException.shortError.7=Too many metadata levels
 FetchException.shortError.8=Too many archive restarts
 FetchException.shortError.9=Too much recursion
-FileOfferUserAlert.title=Direct file transfer
-FileOfferUserAlert.offeredFileHeader=The node ${name} has offered a file:
-FileOfferUserAlert.fileLabel=File:
-FileOfferUserAlert.senderLabel=Sender:
-FileOfferUserAlert.commentLabel=Comment:
-FileOfferUserAlert.mimeLabel=MIME Type:
-FileOfferUserAlert.sizeLabel=Size:
-FileOfferUserAlert.acceptTransferButton=Accept Transfer
-FileOfferUserAlert.rejectTransferButton=Reject Transfer
+FileOffer.askUserTitle=Direct file transfer
+FileOffer.offeredFileHeader=The node ${name} has offered a file:
+FileOffer.fileLabel=File:
+FileOffer.senderLabel=Sender:
+FileOffer.commentLabel=Comment:
+FileOffer.mimeLabel=MIME Type:
+FileOffer.sizeLabel=Size:
+FileOffer.acceptTransferButton=Accept Transfer
+FileOffer.rejectTransferButton=Reject Transfer
+FileOffer.failedFileHeader=The transfer of the file ${filename} from ${node} 
has failed.
+FileOffer.failedReceiveTitle=Failed to receive file
+FileOffer.succeededReceiveTitle=Successfully received file
+FileOffer.succeededReceiveHeader=The transfer of the file ${filename} from 
${node} was a success.
 GIFFilter.invalidHeader=The file does not contain a valid GIF header.
 GIFFilter.invalidHeaderTitle=Invalid header
 GIFFilter.notGif=The file you tried to fetch is not a GIF. It might be some 
other file format, and your browser may do something dangerous with it, 
therefore we have blocked it.

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2007-06-09 17:23:49 UTC 
(rev 13500)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2007-06-09 17:36:34 UTC 
(rev 13501)
@@ -3292,6 +3292,9 @@
                                                        String err = "Failed to 
send "+uid+" for "+FileOffer.this;
                                                        Logger.error(this, err);
                                                        System.err.println(err);
+                                                       onReceiveFailure();
+                                               } else {
+                                                       onReceiveSuccess();
                                                }
                                        } catch (Throwable t) {
                                                Logger.error(this, "Caught 
"+t+" sending file", t);
@@ -3299,6 +3302,7 @@
                                        if(logMINOR)
                                                Logger.minor(this, "Sent file");
                                }
+
                        }, "Sender for bulk transfer "+uid+":"+filename);
                        t.setDaemon(true);
                        t.start();
@@ -3315,6 +3319,203 @@
                        prb.abort(RetrievalException.CANCELLED_BY_RECEIVER, 
"Cancelled by receiver");
                }

+               protected void onReceiveFailure() {
+                       UserAlert alert = new UserAlert() {
+                               public String dismissButtonText() {
+                                       return L10n.getString("UserAlert.hide");
+                               }
+                               public HTMLNode getHTMLText() {
+                                       HTMLNode div = new HTMLNode("div");
+                                       
+                                       // FIXME localise!!!
+                                       
+                                       div.addChild("p", 
l10n("failedFileHeader", new String[] { "filename", "node" },
+                                                       new String[] { 
filename, getName() }));
+                                       
+                                       // Descriptive table
+                                       
+                                       HTMLNode table = div.addChild("table", 
"border", "0");
+                                       HTMLNode row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("fileLabel"));
+                                       row.addChild("td").addChild("#", 
filename);
+                                       row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("sizeLabel"));
+                                       row.addChild("td").addChild("#", 
SizeUtil.formatSize(size));
+                                       row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("mimeLabel"));
+                                       row.addChild("td").addChild("#", 
mimeType);
+                                       row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("senderLabel"));
+                                       row.addChild("td").addChild("#", 
getName());
+                                       row = table.addChild("tr");
+                                       if(comment != null && comment.length() 
> 0) {
+                                               
row.addChild("td").addChild("#", l10n("commentLabel"));
+                                               
row.addChild("td").addChild("#", comment);
+                                       }
+                                       
+                                       return div;
+                               }
+
+                               public short getPriorityClass() {
+                                       return UserAlert.MINOR;
+                               }
+
+                               public String getText() {
+                                       StringBuffer sb = new StringBuffer();
+                                       sb.append(l10n("failedFileHeader", new 
String[] { "filename", "node" },
+                                                       new String[] { 
filename, getName() }));
+                                       sb.append('\n');
+                                       sb.append(l10n("fileLabel"));
+                                       sb.append(' ');
+                                       sb.append(filename);
+                                       sb.append('\n');
+                                       sb.append(l10n("sizeLabel"));
+                                       sb.append(' ');
+                                       sb.append(SizeUtil.formatSize(size));
+                                       sb.append('\n');
+                                       sb.append(l10n("mimeLabel"));
+                                       sb.append(' ');
+                                       sb.append(mimeType);
+                                       sb.append('\n');
+                                       sb.append(l10n("senderLabel"));
+                                       sb.append(' ');
+                                       sb.append(getName());
+                                       sb.append('\n');
+                                       if(comment != null && comment.length() 
> 0) {
+                                               sb.append(l10n("commentLabel"));
+                                               sb.append(' ');
+                                               sb.append(comment);
+                                       }
+                                       return sb.toString();
+                               }
+
+                               public String getTitle() {
+                                       return l10n("failedReceiveTitle");
+                               }
+
+                               public boolean isValid() {
+                                       return true;
+                               }
+
+                               public void isValid(boolean validity) {
+                                       // Ignore
+                               }
+
+                               public void onDismiss() {
+                                       // Ignore
+                               }
+
+                               public boolean shouldUnregisterOnDismiss() {
+                                       return true;
+                               }
+
+                               public boolean userCanDismiss() {
+                                       return true;
+                               }
+                               
+                       };
+                       node.clientCore.alerts.register(alert);
+               }
+
+               private void onReceiveSuccess() {
+                       UserAlert alert = new UserAlert() {
+                               public String dismissButtonText() {
+                                       return L10n.getString("UserAlert.hide");
+                               }
+                               public HTMLNode getHTMLText() {
+                                       HTMLNode div = new HTMLNode("div");
+                                       
+                                       // FIXME localise!!!
+                                       
+                                       div.addChild("p", 
l10n("succeededFileHeader", new String[] { "filename", "node" },
+                                                       new String[] { 
filename, getName() }));
+                                       
+                                       // Descriptive table
+                                       
+                                       HTMLNode table = div.addChild("table", 
"border", "0");
+                                       HTMLNode row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("fileLabel"));
+                                       row.addChild("td").addChild("#", 
filename);
+                                       row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("sizeLabel"));
+                                       row.addChild("td").addChild("#", 
SizeUtil.formatSize(size));
+                                       row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("mimeLabel"));
+                                       row.addChild("td").addChild("#", 
mimeType);
+                                       row = table.addChild("tr");
+                                       row.addChild("td").addChild("#", 
l10n("senderLabel"));
+                                       row.addChild("td").addChild("#", 
getName());
+                                       row = table.addChild("tr");
+                                       if(comment != null && comment.length() 
> 0) {
+                                               
row.addChild("td").addChild("#", l10n("commentLabel"));
+                                               
row.addChild("td").addChild("#", comment);
+                                       }
+                                       
+                                       return div;
+                               }
+
+                               public short getPriorityClass() {
+                                       return UserAlert.MINOR;
+                               }
+
+                               public String getText() {
+                                       StringBuffer sb = new StringBuffer();
+                                       sb.append(l10n("succeededFileHeader", 
new String[] { "filename", "node" },
+                                                       new String[] { 
filename, getName() }));
+                                       sb.append('\n');
+                                       sb.append(l10n("fileLabel"));
+                                       sb.append(' ');
+                                       sb.append(filename);
+                                       sb.append('\n');
+                                       sb.append(l10n("sizeLabel"));
+                                       sb.append(' ');
+                                       sb.append(SizeUtil.formatSize(size));
+                                       sb.append('\n');
+                                       sb.append(l10n("mimeLabel"));
+                                       sb.append(' ');
+                                       sb.append(mimeType);
+                                       sb.append('\n');
+                                       sb.append(l10n("senderLabel"));
+                                       sb.append(' ');
+                                       sb.append(getName());
+                                       sb.append('\n');
+                                       if(comment != null && comment.length() 
> 0) {
+                                               sb.append(l10n("commentLabel"));
+                                               sb.append(' ');
+                                               sb.append(comment);
+                                       }
+                                       return sb.toString();
+                               }
+
+                               public String getTitle() {
+                                       return l10n("succeededReceiveTitle");
+                               }
+
+                               public boolean isValid() {
+                                       return true;
+                               }
+
+                               public void isValid(boolean validity) {
+                                       // Ignore
+                               }
+
+                               public void onDismiss() {
+                                       // Ignore
+                               }
+
+                               public boolean shouldUnregisterOnDismiss() {
+                                       return true;
+                               }
+
+                               public boolean userCanDismiss() {
+                                       return true;
+                               }
+                               
+                       };
+                       node.clientCore.alerts.register(alert);
+               }
+
+               
                /** Ask the user whether (s)he wants to download a file from a 
direct peer */
                public UserAlert askUserUserAlert() {
                        return new UserAlert() {
@@ -3400,15 +3601,9 @@
                                        return sb.toString();
                                }
                                public String getTitle() {
-                                       return l10n("title");
+                                       return l10n("askUserTitle");
                                }

-                               private String l10n(String key) {
-                                       return 
L10n.getString("FileOfferUserAlert."+key);
-                               }
-                               private String l10n(String key, String pattern, 
String value) {
-                                       return 
L10n.getString("FileOfferUserAlert."+key, pattern, value);
-                               }
                                public boolean isValid() {
                                        if(acceptedOrRejected) {
                                                
node.clientCore.alerts.unregister(this);
@@ -3432,6 +3627,15 @@
                        };

                }
+               private String l10n(String key) {
+                       return L10n.getString("FileOffer."+key);
+               }
+               private String l10n(String key, String pattern, String value) {
+                       return L10n.getString("FileOffer."+key, pattern, value);
+               }
+               private String l10n(String key, String[] pattern, String[] 
value) {
+                       return L10n.getString("FileOffer."+key, pattern, value);
+               }
        }

        public int sendTextMessage(String message) {


Reply via email to