00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef _CSS_css_ruleimpl_h_
00025
#define _CSS_css_ruleimpl_h_
00026
00027
#include "dom/dom_string.h"
00028
#include "dom/css_rule.h"
00029
#include "css/css_base.h"
00030
#include "misc/loader_client.h"
00031
#include "misc/shared.h"
00032
00033
namespace khtml {
00034
class CachedCSSStyleSheet;
00035 }
00036
00037
namespace DOM {
00038
00039
class CSSRule;
00040
class CSSStyleSheet;
00041
class CSSStyleSheetImpl;
00042
class CSSStyleDeclarationImpl;
00043
class MediaListImpl;
00044
00045
class CSSRuleImpl :
public StyleBaseImpl
00046 {
00047
public:
00048 CSSRuleImpl(StyleBaseImpl *parent)
00049 : StyleBaseImpl(parent), m_type(
CSSRule::UNKNOWN_RULE) {}
00050
00051
virtual bool isRule()
const {
return true; }
00052
unsigned short type()
const {
return m_type; }
00053
00054 CSSStyleSheetImpl *parentStyleSheet() const;
00055 CSSRuleImpl *parentRule() const;
00056
00057 DOM::
DOMString cssText() const;
00058
void setCssText(DOM::
DOMString str);
00059 virtual
void init() {}
00060
00061
protected:
00062 CSSRule::RuleType m_type;
00063 };
00064
00065
00066
class CSSCharsetRuleImpl :
public CSSRuleImpl
00067 {
00068
public:
00069 CSSCharsetRuleImpl(StyleBaseImpl *parent)
00070 : CSSRuleImpl(parent) { m_type = CSSRule::CHARSET_RULE; }
00071
00072
virtual bool isCharsetRule()
const {
return true; }
00073
00074
DOMString encoding()
const {
return m_encoding; }
00075
void setEncoding(
DOMString _encoding) { m_encoding = _encoding; }
00076
00077
protected:
00078
DOMString m_encoding;
00079 };
00080
00081
00082
class CSSFontFaceRuleImpl :
public CSSRuleImpl
00083 {
00084
public:
00085 CSSFontFaceRuleImpl(StyleBaseImpl *parent);
00086
00087
virtual ~CSSFontFaceRuleImpl();
00088
00089 CSSStyleDeclarationImpl *style()
const {
return m_style; }
00090
00091
virtual bool isFontFaceRule()
const {
return true; }
00092
00093
protected:
00094 CSSStyleDeclarationImpl *m_style;
00095 };
00096
00097
00098
class CSSImportRuleImpl :
public khtml::CachedObjectClient,
public CSSRuleImpl
00099 {
00100
public:
00101 CSSImportRuleImpl( StyleBaseImpl *parent,
const DOM::DOMString &href,
00102
const DOM::DOMString &media );
00103 CSSImportRuleImpl( StyleBaseImpl *parent,
const DOM::DOMString &href,
00104 MediaListImpl *media );
00105
00106
virtual ~CSSImportRuleImpl();
00107
00108
DOM::DOMString href()
const {
return m_strHref; }
00109 MediaListImpl *media()
const {
return m_lstMedia; }
00110 CSSStyleSheetImpl *styleSheet()
const {
return m_styleSheet; }
00111
00112
virtual bool isImportRule()
const {
return true; }
00113
00114
00115
virtual void setStyleSheet(
const DOM::DOMString &url,
const DOM::DOMString &sheet);
00116
virtual void error(
int err,
const QString &text);
00117
00118
bool isLoading();
00119
virtual void init();
00120
00121
protected:
00122
DOMString m_strHref;
00123 MediaListImpl *m_lstMedia;
00124 CSSStyleSheetImpl *m_styleSheet;
00125 khtml::CachedCSSStyleSheet *m_cachedSheet;
00126
bool m_loading;
00127
bool m_done;
00128 };
00129
00130
class MediaList;
00131
00132
class CSSRuleListImpl :
public khtml::Shared<CSSRuleListImpl>
00133 {
00134
public:
00135 CSSRuleListImpl() {}
00136
00137 ~CSSRuleListImpl();
00138
00139
unsigned long length()
const {
return m_lstCSSRules.count(); }
00140 CSSRuleImpl *item (
unsigned long index ) {
return m_lstCSSRules.at( index ); }
00141
00142
00143
00144
unsigned long insertRule ( CSSRuleImpl *rule,
unsigned long index );
00145
void deleteRule (
unsigned long index );
00146
00147
void append( CSSRuleImpl *rule ) { m_lstCSSRules.append( rule ); }
00148
protected:
00149
QPtrList<CSSRuleImpl> m_lstCSSRules;
00150 };
00151
00152
class CSSMediaRuleImpl :
public CSSRuleImpl
00153 {
00154
public:
00155 CSSMediaRuleImpl( StyleBaseImpl *parent );
00156 CSSMediaRuleImpl( StyleBaseImpl *parent,
const DOM::DOMString &media );
00157 CSSMediaRuleImpl( StyleBaseImpl *parent, MediaListImpl *mediaList, CSSRuleListImpl *ruleList );
00158
00159
virtual ~CSSMediaRuleImpl();
00160
00161 MediaListImpl *media()
const {
return m_lstMedia; }
00162 CSSRuleListImpl *cssRules() {
return m_lstCSSRules; }
00163
00164
unsigned long insertRule (
const DOM::DOMString &rule,
unsigned long index );
00165
void deleteRule (
unsigned long index ) { m_lstCSSRules->deleteRule( index ); }
00166
00167
virtual bool isMediaRule()
const {
return true; }
00168
00169
00170
unsigned long append( CSSRuleImpl *rule );
00171
protected:
00172 MediaListImpl *m_lstMedia;
00173 CSSRuleListImpl *m_lstCSSRules;
00174 };
00175
00176
00177
class CSSPageRuleImpl :
public CSSRuleImpl
00178 {
00179
public:
00180 CSSPageRuleImpl(StyleBaseImpl *parent);
00181
00182
virtual ~CSSPageRuleImpl();
00183
00184 CSSStyleDeclarationImpl *style()
const {
return m_style; }
00185
00186
virtual bool isPageRule()
const {
return true; }
00187
00188
DOM::DOMString selectorText() const;
00189
void setSelectorText(DOM::
DOMString str);
00190
00191 protected:
00192 CSSStyleDeclarationImpl *m_style;
00193 };
00194
00195
00196 class CSSStyleRuleImpl : public CSSRuleImpl
00197 {
00198
public:
00199 CSSStyleRuleImpl(StyleBaseImpl *parent);
00200
00201
virtual ~CSSStyleRuleImpl();
00202
00203 CSSStyleDeclarationImpl *style()
const {
return m_style; }
00204
00205
virtual bool isStyleRule()
const {
return true; }
00206
00207
DOM::DOMString selectorText() const;
00208
void setSelectorText(DOM::
DOMString str);
00209
00210 virtual
bool parseString( const
DOMString &string,
bool = false );
00211
00212
void setSelector(
QPtrList<CSSSelector> *selector) { m_selector = selector; }
00213
void setDeclaration( CSSStyleDeclarationImpl *style);
00214
00215
QPtrList<CSSSelector> *selector() {
return m_selector; }
00216 CSSStyleDeclarationImpl *declaration() {
return m_style; }
00217
00218
void setNonCSSHints();
00219
00220
protected:
00221 CSSStyleDeclarationImpl *m_style;
00222
QPtrList<CSSSelector> *m_selector;
00223 };
00224
00225
00226
class CSSUnknownRuleImpl :
public CSSRuleImpl
00227 {
00228
public:
00229 CSSUnknownRuleImpl(StyleBaseImpl *parent) : CSSRuleImpl(parent) {}
00230
00231
virtual bool isUnknownRule()
const {
return true; }
00232 };
00233
00234
00235 }
00236
00237
#endif