00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef _CSS_css_stylesheetimpl_h_
00023
#define _CSS_css_stylesheetimpl_h_
00024
00025
#include <qvaluelist.h>
00026
#include <qptrlist.h>
00027
00028
#include "dom/dom_string.h"
00029
#include "css/css_base.h"
00030
#include "misc/loader_client.h"
00031
#include "xml/dom_docimpl.h"
00032
00033
namespace khtml {
00034
class CachedCSSStyleSheet;
00035
class DocLoader;
00036 }
00037
00038
namespace DOM {
00039
00040
class StyleSheet;
00041
class CSSStyleSheet;
00042
class MediaListImpl;
00043
class CSSRuleImpl;
00044
class CSSRuleList;
00045
class CSSStyleRuleImpl;
00046
class CSSValueImpl;
00047
class NodeImpl;
00048
class DocumentImpl;
00049
00050
class StyleSheetImpl :
public StyleListImpl
00051 {
00052
public:
00053 StyleSheetImpl(DOM::NodeImpl *ownerNode,
DOM::DOMString href =
DOMString());
00054 StyleSheetImpl(StyleSheetImpl *parentSheet,
DOM::DOMString href =
DOMString());
00055 StyleSheetImpl(StyleBaseImpl *owner,
DOM::DOMString href =
DOMString());
00056 StyleSheetImpl(khtml::CachedCSSStyleSheet *cached,
DOM::DOMString href =
DOMString());
00057
virtual ~StyleSheetImpl();
00058
00059
virtual bool isStyleSheet()
const {
return true; }
00060
00061
virtual DOM::DOMString type()
const {
return DOMString(); }
00062
00063
bool disabled()
const {
return m_disabled; }
00064
void setDisabled(
bool disabled ) { m_disabled = disabled; }
00065
00066 DOM::NodeImpl *ownerNode()
const {
return m_parentNode; }
00067 StyleSheetImpl *parentStyleSheet() const;
00068 DOM::
DOMString href()
const {
return m_strHref; }
00069
DOM::DOMString title()
const {
return m_strTitle; }
00070 MediaListImpl *media()
const {
return m_media; }
00071
void setMedia( MediaListImpl *media );
00072
00073
protected:
00074 DOM::NodeImpl *m_parentNode;
00075
DOM::DOMString m_strHref;
00076
DOM::DOMString m_strTitle;
00077 MediaListImpl *m_media;
00078
bool m_disabled;
00079 };
00080
00081
class CSSStyleSheetImpl :
public StyleSheetImpl
00082 {
00083
public:
00084 CSSStyleSheetImpl(DOM::NodeImpl *parentNode,
DOM::DOMString href =
DOMString(),
bool _implicit =
false);
00085 CSSStyleSheetImpl(CSSStyleSheetImpl *parentSheet,
DOM::DOMString href =
DOMString());
00086 CSSStyleSheetImpl(CSSRuleImpl *ownerRule,
DOM::DOMString href =
DOMString());
00087
00088 CSSStyleSheetImpl(DOM::NodeImpl *parentNode, CSSStyleSheetImpl *orig);
00089 CSSStyleSheetImpl(CSSRuleImpl *ownerRule, CSSStyleSheetImpl *orig);
00090
00091
virtual bool isCSSStyleSheet()
const {
return true; }
00092
00093
virtual DOM::DOMString type()
const {
return "text/css"; }
00094
00095 CSSRuleImpl *ownerRule() const;
00096
CSSRuleList cssRules();
00097
unsigned long insertRule ( const DOM::
DOMString &rule,
unsigned long index,
int &exceptioncode );
00098
void deleteRule (
unsigned long index,
int &exceptioncode );
00099
00100 virtual
bool parseString( const
DOMString &string,
bool strict = true );
00101
00102
bool isLoading() const;
00103
void setNonCSSHints();
00104
00105 virtual
void checkLoaded() const;
00106
00107
00108 khtml::DocLoader *docLoader()
const
00109
{
return m_doc ? m_doc->docLoader() : 0; }
00110
00111 DocumentImpl *doc()
const {
return m_doc; }
00112
bool implicit()
const {
return m_implicit; }
00113
protected:
00114 DocumentImpl *m_doc;
00115
bool m_implicit;
00116 };
00117
00118
00119
00120
class StyleSheetListImpl :
public khtml::Shared<StyleSheetListImpl>
00121 {
00122
public:
00123 StyleSheetListImpl() {}
00124 ~StyleSheetListImpl();
00125
00126
00127
unsigned long length() const;
00128 StyleSheetImpl *item (
unsigned long index );
00129
00130
void add(StyleSheetImpl* s);
00131
void remove(StyleSheetImpl* s);
00132
00133
QPtrList<StyleSheetImpl> styleSheets;
00134 };
00135
00136
00137
00138 class MediaListImpl : public StyleBaseImpl
00139 {
00140
public:
00141 MediaListImpl()
00142 : StyleBaseImpl( 0 ) {}
00143 MediaListImpl( CSSStyleSheetImpl *parentSheet )
00144 : StyleBaseImpl(parentSheet) {}
00145 MediaListImpl( CSSStyleSheetImpl *parentSheet,
00146
const DOM::DOMString &media );
00147 MediaListImpl( CSSRuleImpl *parentRule,
const DOM::DOMString &media );
00148
00149
virtual bool isMediaList()
const {
return true; }
00150
00151 CSSStyleSheetImpl *parentStyleSheet() const;
00152 CSSRuleImpl *parentRule() const;
00153
unsigned long length()
const {
return m_lstMedia.count(); }
00154
DOM::DOMString item (
unsigned long index )
const {
return m_lstMedia[index]; }
00155
void deleteMedium (
const DOM::DOMString &oldMedium );
00156
void appendMedium (
const DOM::DOMString &newMedium ) { m_lstMedia.append(newMedium); }
00157
00158
DOM::DOMString mediaText() const;
00159
void setMediaText(const DOM::
DOMString &value);
00160
00169
bool contains( const DOM::
DOMString &medium ) const;
00170
00171 protected:
00172
QValueList<DOM::
DOMString> m_lstMedia;
00173 };
00174
00175
00176 }
00177
00178 #endif
00179