Bug #: 4154
[WebKit-https.git] / SVGSupport / kdom / css / MediaList.cpp
1 /*
2     Copyright (C) 2004 Nikolas Zimmermann <wildfox@kde.org>
3                                   2004 Rob Buis <buis@kde.org>
4
5     This file is part of the KDE project
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20     Boston, MA 02111-1307, USA.
21 */
22
23 #include "Ecma.h"
24 #include "DOMString.h"
25 #include "MediaList.h"
26 #include "DOMException.h"
27 #include "MediaListImpl.h"
28 #include "DOMExceptionImpl.h"
29
30 #include "kdom/data/CSSConstants.h"
31 #include "MediaList.lut.h"
32 using namespace KDOM;
33 using namespace KJS;
34
35 /*
36 @begin MediaList::s_hashTable 3
37  mediaText              MediaListConstants::MediaText         DontDelete
38  length                 MediaListConstants::Length            DontDelete|ReadOnly
39 @end
40 @begin MediaListProto::s_hashTable 5
41  item                   MediaListConstants::Item              DontDelete|Function 1
42  deleteMedium   MediaListConstants::DeleteMedium      DontDelete|Function 1
43  appendMedium   MediaListConstants::AppendMedium      DontDelete|Function 1
44 @end
45 */
46
47 KDOM_IMPLEMENT_PROTOTYPE("MediaList", MediaListProto, MediaListProtoFunc)
48
49 Value MediaList::getValueProperty(ExecState *, int token) const
50 {
51         switch(token)
52         {
53                 case MediaListConstants::MediaText:
54                         return getDOMString(mediaText());
55                 case MediaListConstants::Length:
56                         return Number(length());
57                 default:
58                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
59         }
60
61         return Undefined();
62 };
63
64 void MediaList::putValueProperty(ExecState *exec, int token, const Value &value, int)
65 {
66         KDOM_ENTER_SAFE
67
68         switch(token)
69         {
70                 case MediaListConstants::MediaText:
71                         setMediaText(toDOMString(exec, value));
72                         break;
73                 default:
74                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
75         }
76
77         KDOM_LEAVE_SAFE(DOMException)
78 }
79
80 Value MediaListProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
81 {
82         KDOM_CHECK_THIS(MediaList)
83         KDOM_ENTER_SAFE
84
85         switch(id)
86         {
87                 case MediaListConstants::Item:
88                 {
89                         unsigned long index = args[0].toUInt32(exec);
90                         return getDOMString(obj.item(index));
91                 }
92                 case MediaListConstants::DeleteMedium:
93                 {
94                         DOMString oldMedium = toDOMString(exec, args[0]);
95                         obj.deleteMedium(oldMedium);
96                         return Undefined();
97                 }
98                 case MediaListConstants::AppendMedium:
99                 {
100                         DOMString newMedium = toDOMString(exec, args[0]);
101                         obj.appendMedium(newMedium);
102                         return Undefined();
103                 }
104                 default:
105                         kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
106                         break;
107         }
108
109         KDOM_LEAVE_SAFE(DOMException)
110         return Undefined();
111 }
112
113 MediaList MediaList::null;
114
115 MediaList::MediaList() : d(0)
116 {
117 }
118
119 MediaList::MediaList(const MediaList &other) : d(other.d)
120 {
121         if(d)
122                 d->ref();
123 }
124
125 MediaList::MediaList(MediaListImpl *i) : d(i)
126 {
127         if(d)
128                 d->ref();
129 }
130
131 KDOM_IMPL_DTOR_ASSIGN_OP(MediaList)
132
133 void MediaList::setMediaText(const DOMString &mediatext)
134 {
135         if(d)
136                 return d->setMediaText(mediatext);
137 }
138
139 DOMString MediaList::mediaText() const
140 {
141         if(!d)
142                 return DOMString();
143
144         return d->mediaText();
145 }
146
147 unsigned long MediaList::length() const
148 {
149         if(!d)
150                 return 0;
151
152         return d->length();
153 }
154
155 DOMString MediaList::item(unsigned long index) const
156 {
157         if(!d)
158                 return DOMString();
159
160         return d->item(index);
161 }
162
163 void MediaList::deleteMedium(const DOMString &oldMedium)
164 {
165         if(d)
166                 d->deleteMedium(oldMedium);
167 }
168
169 void MediaList::appendMedium(const DOMString &newMedium)
170 {
171         if(d)
172                 d->appendMedium(newMedium);
173 }
174
175 // vim:ts=4:noet