00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef _KJS_WINDOW_H_
00023
#define _KJS_WINDOW_H_
00024
00025
#include <qobject.h>
00026
#include <qguardedptr.h>
00027
#include <qmap.h>
00028
#include <qptrlist.h>
00029
#include <qdatetime.h>
00030
00031
#include "kjs_binding.h"
00032
00033
class QTimer;
00034
class KHTMLView;
00035
class KHTMLPart;
00036
00037
namespace KJS {
00038
00039
class WindowFunc;
00040
class WindowQObject;
00041
class Location;
00042
class History;
00043
class External;
00044
class FrameArray;
00045
class JSEventListener;
00046
00047
class Screen :
public ObjectImp {
00048
public:
00049 Screen(ExecState *exec);
00050
enum {
00051 Height, Width, ColorDepth, PixelDepth, AvailLeft, AvailTop, AvailHeight,
00052 AvailWidth
00053 };
00054
virtual Value
get(ExecState *exec,
const Identifier &propertyName)
const;
00055 Value getValueProperty(ExecState *exec,
int token)
const;
00056
private:
00057
KHTMLView *view;
00058
virtual const ClassInfo* classInfo()
const {
return &info; }
00059
static const ClassInfo info;
00060 };
00061
00062
class Window :
public ObjectImp {
00063
friend QGuardedPtr<KHTMLPart> getInstance();
00064
friend class Location;
00065
friend class WindowFunc;
00066
friend class WindowQObject;
00067
friend class ScheduledAction;
00068
public:
00069 Window(
KHTMLPart *p);
00070
public:
00071 ~Window();
00077
static Value retrieve(
KHTMLPart *p);
00081
static Window *retrieveWindow(
KHTMLPart *p);
00086
static Window *retrieveActive(ExecState *exec);
00087
QGuardedPtr<KHTMLPart> part()
const {
return m_part; }
00088
virtual void mark();
00089
virtual bool hasProperty(ExecState *exec,
const Identifier &p)
const;
00090
virtual Value
get(ExecState *exec,
const Identifier &propertyName)
const;
00091
virtual void put(ExecState *exec,
const Identifier &propertyName,
const Value &value,
int attr = None);
00092
virtual bool toBoolean(ExecState *exec)
const;
00093
void scheduleClose();
00094
void closeNow();
00095
void delayedGoHistory(
int steps);
00096
void goHistory(
int steps);
00097
void goURL(ExecState* exec,
const QString& url,
bool lockHistory);
00098 Value openWindow(ExecState *exec,
const List &args);
00099
void resizeTo(
QWidget* tl,
int width,
int height);
00100
void afterScriptExecution();
00101
bool isSafeScript(ExecState *exec)
const {
00102
KHTMLPart *activePart = static_cast<KJS::ScriptInterpreter *>( exec->interpreter() )->part();
00103
if ( activePart == m_part )
return true;
00104
return checkIsSafeScript( activePart );
00105 }
00106 Location *location() const;
00107 ObjectImp* frames( ExecState* exec ) const;
00108 JSEventListener *getJSEventListener(const Value &val,
bool html = false);
00109
void clear( ExecState *exec );
00110 virtual UString toString(ExecState *exec) const;
00111
00112
00113
void setCurrentEvent( DOM::
Event *evt );
00114
00115
QPtrDict<JSEventListener> jsEventListeners;
00116 virtual const ClassInfo* classInfo()
const {
return &info; }
00117
static const ClassInfo info;
00118
enum { Closed, Crypto, DefaultStatus, Status,
Document,
Node, EventCtor, Range,
00119
NodeFilter,
DOMException,
CSSRule, Frames, _History, _External,
Event, InnerHeight,
00120 InnerWidth, Length, _Location, Navigate, Name, _Navigator, _Konqueror, ClientInformation,
00121 OffscreenBuffering, Opener, OuterHeight, OuterWidth, PageXOffset, PageYOffset,
00122 Parent, Personalbar, ScreenX, ScreenY, Scrollbars, Scroll, ScrollBy,
00123 ScreenTop, ScreenLeft,
00124 ScrollTo, ScrollX, ScrollY, MoveBy, MoveTo, ResizeBy, ResizeTo, Self, _Window, Top, _Screen,
00125 Image, Option, Alert, Confirm, Prompt, Open, SetTimeout, ClearTimeout, XMLHttpRequest,
00126 Focus, Blur, Close, SetInterval, ClearInterval, CaptureEvents, ReleaseEvents,
00127 Print, AddEventListener, RemoveEventListener, SideBar,
00128 Onabort, Onblur,
00129 Onchange, Onclick, Ondblclick, Ondragdrop, Onerror, Onfocus,
00130 Onkeydown, Onkeypress, Onkeyup, Onload, Onmousedown, Onmousemove,
00131 Onmouseout, Onmouseover, Onmouseup, Onmove, Onreset, Onresize,
00132 Onselect, Onsubmit, Onunload };
00133 WindowQObject *winq;
00134
protected:
00135
enum DelayedActionId { NullAction, DelayedClose, DelayedGoHistory };
00136
00137 Value getListener(ExecState *exec,
int eventId)
const;
00138
void setListener(ExecState *exec,
int eventId, Value func);
00139
private:
00140
struct DelayedAction;
00141
friend struct DelayedAction;
00142
00143
bool checkIsSafeScript(
KHTMLPart* activePart )
const;
00144
00145
QGuardedPtr<KHTMLPart> m_part;
00146 Screen *screen;
00147 History *history;
00148 External *external;
00149 FrameArray *m_frames;
00150 Location *loc;
00151
DOM::Event *m_evt;
00152
00153
struct DelayedAction {
00154 DelayedAction() : actionId(NullAction) {}
00155 DelayedAction( DelayedActionId
id,
QVariant p =
QVariant() ) : actionId(id), param(p) {}
00156 DelayedActionId actionId;
00157
QVariant param;
00158 };
00159
QValueList<DelayedAction> m_delayed;
00160 };
00161
00167 class ScheduledAction {
00168
public:
00169
ScheduledAction(Object _func, List _args,
QTime _nextTime,
int _interval,
bool _singleShot,
int _timerId);
00170
ScheduledAction(
QString _code,
QTime _nextTime,
int _interval,
bool _singleShot,
int _timerId);
00171 ~
ScheduledAction();
00172
void execute(Window *window);
00173
void mark();
00174
00175 ObjectImp *func;
00176 List args;
00177
QString code;
00178
bool isFunction;
00179
bool singleShot;
00180
00181
QTime nextTime;
00182
int interval;
00183
bool executing;
00184
int timerId;
00185 };
00186
00187
class WindowQObject :
public QObject {
00188 Q_OBJECT
00189
public:
00190 WindowQObject(Window *w);
00191 ~WindowQObject();
00192
int installTimeout(
const Identifier &handler,
int t,
bool singleShot);
00193
int installTimeout(
const Value &func, List args,
int t,
bool singleShot);
00194
void clearTimeout(
int timerId);
00195
void mark();
00196
public slots:
00197
void timeoutClose();
00198
protected slots:
00199
void parentDestroyed();
00200
protected:
00201
void timerEvent(
QTimerEvent *e);
00202
void setNextTimer();
00203
private:
00204 Window *parent;
00205
KHTMLPart *part;
00206
QPtrList<ScheduledAction> scheduledActions;
00207
int pausedTime;
00208
int lastTimerId;
00209 };
00210
00211
class Location :
public ObjectImp {
00212
public:
00213 ~Location();
00214
virtual Value get(ExecState *exec,
const Identifier &propertyName)
const;
00215
virtual void put(ExecState *exec,
const Identifier &propertyName,
const Value &value,
int attr = None);
00216
virtual Value toPrimitive(ExecState *exec, Type preferred)
const;
00217
virtual UString toString(ExecState *exec)
const;
00218
enum { Hash, Href, Hostname, Host, Pathname, Port, Protocol, Search, EqualEqual,
00219 Assign, Replace, Reload, ToString };
00220
KHTMLPart *part()
const {
return m_part; }
00221
virtual const ClassInfo* classInfo()
const {
return &info; }
00222
static const ClassInfo info;
00223
private:
00224
friend class Window;
00225 Location(
KHTMLPart *p);
00226
QGuardedPtr<KHTMLPart> m_part;
00227 };
00228
00229
#ifdef Q_WS_QWS
00230
class Konqueror :
public ObjectImp {
00231
friend class KonquerorFunc;
00232
public:
00233 Konqueror(
KHTMLPart *p) : part(p) { }
00234
virtual Value
get(ExecState *exec,
const Identifier &propertyName)
const;
00235
virtual bool hasProperty(ExecState *exec,
const Identifier &p)
const;
00236
virtual UString toString(ExecState *exec)
const;
00237
virtual const ClassInfo* classInfo()
const {
return &info; }
00238
static const ClassInfo info;
00239
private:
00240
KHTMLPart *part;
00241 };
00242
#endif
00243
00244 }
00245
00246
#endif