[freenet-cvs] r13501 - in trunk/freenet/src/freenet: l10n node

toad at freenetproject.org toad at freenetproject.org
Sat Jun 9 17:36:34 UTC 2007


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) {




More information about the cvs mailing list