]> err.no Git - scalable-opengroupware.org/blobdiff - UI/MailPartViewers/UIxMailPartMessageViewer.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1153 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / MailPartViewers / UIxMailPartMessageViewer.m
index 4f05c58f08d2cdceb99d0a9e0e1727eaf18f713f..3a18cb76fdedb7c7dc98a72bba5651e903191b83 100644 (file)
 
   OGo is distributed in the hope that it will be useful, but WITHOUT ANY
   WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
   License for more details.
 
   You should have received a copy of the GNU Lesser General Public
-  License along with OGo; see the file COPYING.  If not, write to the
+  License along with OGo; see the file COPYING. If not, write to the
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
 
-#include "UIxMailPartViewer.h"
+#import <NGImap4/NGImap4Envelope.h>
+#import <NGImap4/NGImap4EnvelopeAddress.h>
+
+#import <UI/MailerUI/WOContext+UIxMailer.h>
+#import "UIxMailRenderingContext.h"
+
+#import "UIxMailPartViewer.h"
 
 /*
   UIxMailPartMessageViewer
 
 Show message/rfc822 mail parts. Note that the IMAP4 server already returns a
 proper body structure of the message.
-
 Relevant body-info keys:
   to/sender/from/cc/bcc/in-reply-to/reply-to - array of addr-dicts
   type/subtype          - message/RFC822
   size
   subject
   parameterList         - dict (eg 'name')
-    messageId     
   date
   encoding              - 7BIT
   bodyLines             - 83
   bodyId                - (empty string?)
   description           - (empty string?, content-description?)
-    
   body                  - a body structure?
-  
 Addr-Dict:
   hostName / mailboxName / personalName / sourceRoute
+ Show message/rfc822 mail parts. Note that the IMAP4 server already returns a
+ proper body structure of the message.
+
+ Relevant body-info keys:
+ to/sender/from/cc/bcc/in-reply-to/reply-to - array of addr-dicts
type/subtype - message/RFC822
+ size
+ subject
parameterList - dict (eg 'name')
+ messageId 
+ date
encoding - 7BIT
bodyLines - 83
bodyId - (empty string?)
description - (empty string?, content-description?)
body - a body structure?
+ Addr-Dict:
+ hostName / mailboxName / personalName / sourceRoute
 */
 
 @class NGImap4Envelope;
 @interface UIxMailPartMessageViewer : UIxMailPartViewer
 {
   NGImap4Envelope *envelope;
-  id currentAddress;
 }
 
 @end
 
-#include <UI/MailerUI/WOContext+UIxMailer.h>
-#include "UIxMailRenderingContext.h"
-#include <NGImap4/NGImap4Envelope.h>
-#include <NGImap4/NGImap4EnvelopeAddress.h>
-#include "common.h"
-
 @implementation UIxMailPartMessageViewer
 
-- (void)dealloc {
-  [self->currentAddress release];
-  [self->envelope       release];
+- (void) dealloc
+{
+  [envelope release];
   [super dealloc];
 }
 
 /* cache maintenance */
 
-- (void)resetBodyInfoCaches {
+- (void) resetBodyInfoCaches
+{
   [super resetBodyInfoCaches];
-  [self->envelope       release]; self->envelope       = nil;
-  [self->currentAddress release]; self->currentAddress = nil;
-}
-
-/* notifications */
-
-- (void)sleep {
-  [self->currentAddress release]; self->currentAddress = nil;
-  [super sleep];
-}
-
-/* accessors */
-
-- (void)setCurrentAddress:(id)_addr {
-  ASSIGN(self->currentAddress, _addr);
-}
-- (id)currentAddress {
-  return self->currentAddress;
+  [envelope release]; envelope = nil;
 }
 
 /* nested body structure */
 
-- (id)contentInfo {
+- (id) contentInfo
+{
   return [[self bodyInfo] valueForKey:@"body"];
 }
 
-- (id)contentPartPath {
+- (id) contentPartPath
+{
   /*
     Path processing is a bit weird in the context of message/rfc822. If we have
     a multipart, the multipart itself has no own identifier! Instead the
     children of the multipart are directly mapped into the message namespace.
-    
     If the message has just a plain content, ids seems to be as expected (that
     is, its just a "1").
   */
-  NSArray  *pp;
+  NSArray *pp;
   NSString *mt;
-  
   mt = [[[self contentInfo] valueForKey:@"type"] lowercaseString];
   if ([mt isEqualToString:@"multipart"])
     return [self partPath];
-  
   pp = [self partPath];
-  return [pp count] > 0
-    ? [pp arrayByAddingObject:@"1"]
-    : [NSArray arrayWithObject:@"1"];
+  return (([pp count] > 0)
+         ? [pp arrayByAddingObject: @"1"]
+         : [NSArray arrayWithObject: @"1"]);
 }
 
-- (id)contentViewerComponent {
-  id info;
-  
-  info = [self contentInfo];
-  return [[[self context] mailRenderingContext] viewerForBodyInfo:info];
+- (id) contentViewerComponent
+{
+  UIxMailRenderingContext *mailContext;
+
+  mailContext = [[self context] mailRenderingContext];
+
+  return [mailContext viewerForBodyInfo: [self contentInfo]];
 }
 
 /* generating envelope */
 
-- (NGImap4Envelope *)envelope {
-  if (self->envelope == nil) {
-    self->envelope = [[NGImap4Envelope alloc] initWithBodyStructureInfo:
-                                               [self bodyInfo]];
-  }
-  return self->envelope;
+- (NGImap4Envelope *) envelope
+{
+  if (!envelope)
+    envelope = [[NGImap4Envelope alloc] initWithBodyStructureInfo:
+                                         [self bodyInfo]];
+
+  return envelope;
+}
+
+- (NSString *) formattedComponents: (NSArray *) components
+{
+  NSMutableArray *formattedComponents;
+  unsigned int count, max;
+  NSString *component;
+
+  max = [components count];
+  formattedComponents = [NSMutableArray arrayWithCapacity: max];
+  for (count = 0; count < max; count++)
+    {
+      component = [[components objectAtIndex: count] email];
+      [formattedComponents addObject: component];
+    }
+
+  return [formattedComponents componentsJoinedByString: @", "];
+}
+
+- (NSString *) fromAddresses
+{
+  NSArray *from;
+
+  from = [[self envelope] from];
+
+  return [self formattedComponents: from];
+}
+
+- (NSString *) toAddresses
+{
+  NSArray *to;
+
+  to = [[self envelope] to];
+
+  return [self formattedComponents: to];
+}
+
+- (NSString *) ccAddresses
+{
+  NSArray *cc;
+
+  cc = [[self envelope] cc];
+
+  return [self formattedComponents: cc];
 }
 
 /* links to recipients */
 
-- (NSString *)linkToEnvelopeAddress:(NGImap4EnvelopeAddress *)_address {
+- (NSString *) linkToEnvelopeAddress: (NGImap4EnvelopeAddress *) _address
+{
   // TODO: make some web-link, eg open a new compose panel?
   return [@"mailto:" stringByAppendingString:[_address baseEMail]];
 }
 
-- (NSString *)currentAddressLink {
-  return [self linkToEnvelopeAddress:[self currentAddress]];
-}
-
 @end /* UIxMailPartMessageViewer */