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