~ubuntu-branches/ubuntu/edgy/sope/edgy

« back to all changes in this revision

Viewing changes to sope-appserver/WEExtensions/WExCalElemBuilder.m

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Ley
  • Date: 2005-08-19 16:53:31 UTC
  • Revision ID: james.westby@ubuntu.com-20050819165331-hs683wz1osm708pw
Tags: upstream-4.4rc.2
ImportĀ upstreamĀ versionĀ 4.4rc.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
  Copyright (C) 2000-2005 SKYRIX Software AG
 
3
 
 
4
  This file is part of SOPE.
 
5
 
 
6
  SOPE is free software; you can redistribute it and/or modify it under
 
7
  the terms of the GNU Lesser General Public License as published by the
 
8
  Free Software Foundation; either version 2, or (at your option) any
 
9
  later version.
 
10
 
 
11
  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
 
12
  WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
13
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
 
14
  License for more details.
 
15
 
 
16
  You should have received a copy of the GNU Lesser General Public
 
17
  License along with SOPE; see the file COPYING.  If not, write to the
 
18
  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
19
  02111-1307, USA.
 
20
*/
 
21
 
 
22
#include <NGObjWeb/WOxElemBuilder.h>
 
23
 
 
24
/*
 
25
  This builder builds various calendaring elements from the WEExtensions
 
26
  library.
 
27
 
 
28
  All tags are mapped into the <var:> namespace (XMLNS_OD_BIND).
 
29
 
 
30
  Supported tags:
 
31
    <var:month-overview .../> to WEMonthOverview
 
32
    <var:month-label    .../> to WEMonthLabel
 
33
    <var:month-title    .../> to WEMonthTitle
 
34
    <var:month-info     .../> to WEMonthOverviewInfoMode
 
35
    <var:month          .../> to WEMonthOverviewContentMode
 
36
 
 
37
    <var:week-overview  .../> to WEWeekOverview
 
38
    <var:week-title     .../> to WEWeekOverviewTitleMode
 
39
    <var:week-info      .../> to WEWeekOverviewInfoMode
 
40
    <var:week-pminfo    .../> to WEWeekOverviewPMInfoMode
 
41
    <var:week           .../> to WEWeekOverviewContentMode
 
42
    <var:week-header    .../> to WEWeekOverviewHeaderMode
 
43
    <var:week-footer    .../> to WEWeekOverviewFooterMode
 
44
 
 
45
    <var:weekcol-view   .../> to WEWeekColumnView
 
46
    <var:weekcol-title  .../> to WEWeekColumnViewTitleMode
 
47
    <var:weekcol-info   .../> to WEWeekColumnViewInfoMode
 
48
    <var:weekcol        .../> to WEWeekColumnViewContentMode
 
49
*/
 
50
 
 
51
@interface WExCalElemBuilder : WOxTagClassElemBuilder
 
52
{
 
53
}
 
54
 
 
55
@end
 
56
 
 
57
#include <SaxObjC/XMLNamespaces.h>
 
58
#include "common.h"
 
59
 
 
60
@implementation WExCalElemBuilder
 
61
 
 
62
- (Class)classForElement:(id<DOMElement>)_element {
 
63
  NSString *tagName;
 
64
  unsigned tl;
 
65
  unichar  c1;
 
66
  
 
67
  if (![[_element namespaceURI] isEqualToString:XMLNS_OD_BIND])
 
68
    return Nil;
 
69
  
 
70
  tagName = [_element tagName];
 
71
  if ((tl = [tagName length]) < 4)
 
72
    return Nil;
 
73
 
 
74
  c1 = [tagName characterAtIndex:0];
 
75
 
 
76
  if (c1 == 'm') {
 
77
    /* month stuff */
 
78
 
 
79
    if (![tagName hasPrefix:@"month"])
 
80
      return Nil;
 
81
    
 
82
    switch (tl) {
 
83
      case 5:
 
84
        return NSClassFromString(@"WEMonthOverviewContentMode");
 
85
 
 
86
      case 10:
 
87
        if ([tagName isEqualToString:@"month-info"])
 
88
          return NSClassFromString(@"WEMonthOverviewInfoMode");
 
89
        break;
 
90
        
 
91
      case 11:
 
92
        if ([tagName isEqualToString:@"month-label"])
 
93
          return NSClassFromString(@"WEMonthLabel");
 
94
        if ([tagName isEqualToString:@"month-title"])
 
95
          return NSClassFromString(@"WEMonthTitle");
 
96
        break;
 
97
        
 
98
      case 14:
 
99
        if ([tagName isEqualToString:@"month-overview"])
 
100
          return NSClassFromString(@"WEMonthOverview");
 
101
        break;
 
102
    }
 
103
  }
 
104
  else if (c1 == 'w') {
 
105
    /* week stuff */
 
106
    
 
107
    if (![tagName hasPrefix:@"week"])
 
108
      return Nil;
 
109
    
 
110
    switch (tl) {
 
111
      case 4:
 
112
        return NSClassFromString(@"WEWeekOverviewContentMode");
 
113
        
 
114
      case 7:
 
115
        if ([tagName isEqualToString:@"weekcol"])
 
116
          return NSClassFromString(@"WEWeekColumnViewContentMode");
 
117
        break;
 
118
 
 
119
      case 9:
 
120
        if ([tagName isEqualToString:@"week-info"])
 
121
          return NSClassFromString(@"WEWeekOverviewInfoMode");
 
122
        break;
 
123
        
 
124
      case 10:
 
125
        if ([tagName isEqualToString:@"week-title"])
 
126
          return NSClassFromString(@"WEWeekOverviewTitleMode");
 
127
        break;
 
128
        
 
129
      case 11:
 
130
        if ([tagName isEqualToString:@"week-header"])
 
131
          return NSClassFromString(@"WEWeekOverviewHeaderMode");
 
132
        if ([tagName isEqualToString:@"week-footer"])
 
133
          return NSClassFromString(@"WEWeekOverviewFooterMode");
 
134
        if ([tagName isEqualToString:@"week-pminfo"])
 
135
          return NSClassFromString(@"WEWeekOverviewPMInfoMode");
 
136
        break;
 
137
 
 
138
      case 12:
 
139
        if ([tagName isEqualToString:@"weekcol-view"])
 
140
          return NSClassFromString(@"WEWeekColumnView");
 
141
        if ([tagName isEqualToString:@"weekcol-info"])
 
142
          return NSClassFromString(@"WEWeekColumnViewInfoMode");
 
143
        break;
 
144
 
 
145
      case 13:
 
146
        if ([tagName isEqualToString:@"weekcol-title"])
 
147
          return NSClassFromString(@"WEWeekColumnViewTitleMode");
 
148
        if ([tagName isEqualToString:@"week-overview"])
 
149
          return NSClassFromString(@"WEWeekOverview");
 
150
        break;
 
151
    }
 
152
  }
 
153
  
 
154
  return Nil;
 
155
}
 
156
 
 
157
@end /* WExCalElemBuilder */