!7 sclass LatestGMails extends DynTable { int numMsgs = 20; L data; void start { ownTimer(doEvery(60.0, r actualUpdate)); } void actualUpdate { setField(data := null); calc(); updateMe(); } L calc() ctex { lock lock; if (data != null) ret data; Folder inbox = gmail_inbox(); new L l; inbox.open(Folder.READ_ONLY); int count = inbox.getMessageCount(); int n = max(1, count-numMsgs+1); for (int i = count; i >= n; i--) { new LinkedHashMap map; //print("\nLoading message " + i + "\n"); IMAPMessage msg = cast inbox.getMessage(i); map.put("From", InternetAddress.toString(msg.getFrom())); map.put("Subject", msg.getSubject()); //map.put("Message number: " + msg.getMessageNumber()); map.put("Sent/Received", msg.getSentDate() + "/" + msg.getReceivedDate()); map.put("Class", getClassName(msg)); //O content = msg.getContent(); //print(" Content type: " + getClassName(content)); map.put("Size", toK(msg.getSize()) + " K"); map.put("ID", msg.getMessageID()); //print(" Content type: " + msg.getContentType()); l.add(map); } ret setFieldAndReturn(data := l); } }