css_ruleimpl.h00001
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, const DOM::DOMString &charset);
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
|