khtml Library API Documentation

kjs_window.h

00001 // -*- c-basic-offset: 2 -*-
00002 /*
00003  *  This file is part of the KDE libraries
00004  *  Copyright (C) 2000 Harri Porten (porten@kde.org)
00005  *
00006  *  This library is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU Library General Public
00008  *  License as published by the Free Software Foundation; either
00009  *  version 2 of the License, or (at your option) any later version.
00010  *
00011  *  This library is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  *  Library General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU Library General Public
00017  *  License along with this library; if not, write to the Free Software
00018  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019  */
00020 
00021 #ifndef _KJS_WINDOW_H_
00022 #define _KJS_WINDOW_H_
00023 
00024 #include <qobject.h>
00025 #include <qguardedptr.h>
00026 #include <qmap.h>
00027 #include <qptrlist.h>
00028 
00029 #include "kjs_binding.h"
00030 
00031 class QTimer;
00032 class KHTMLView;
00033 class KHTMLPart;
00034 
00035 namespace KJS {
00036 
00037   class WindowFunc;
00038   class WindowQObject;
00039   class Location;
00040   class History;
00041   class FrameArray;
00042   class JSEventListener;
00043 
00044   class Screen : public ObjectImp {
00045   public:
00046     Screen(ExecState *exec);
00047     enum {
00048       Height, Width, ColorDepth, PixelDepth, AvailLeft, AvailTop, AvailHeight,
00049       AvailWidth
00050     };
00051     virtual Value get(ExecState *exec, const UString &propertyName) const;
00052     Value getValueProperty(ExecState *exec, int token) const;
00053   private:
00054     KHTMLView *view;
00055     virtual const ClassInfo* classInfo() const { return &info; }
00056     static const ClassInfo info;
00057   };
00058 
00059   class Window : public ObjectImp {
00060     friend QGuardedPtr<KHTMLPart> getInstance();
00061     friend class Location;
00062     friend class WindowFunc;
00063     friend class WindowQObject;
00064     friend class ScheduledAction;
00065   public:
00066     Window(KHTMLPart *p);
00067   public:
00068     ~Window();
00074     static Value retrieve(KHTMLPart *p);
00078     static Window *retrieveWindow(KHTMLPart *p);
00083     static Window *retrieveActive(ExecState *exec);
00084     QGuardedPtr<KHTMLPart> part() const { return m_part; }
00085     virtual void mark();
00086     virtual bool hasProperty(ExecState *exec, const UString &p) const;
00087     virtual Value get(ExecState *exec, const UString &propertyName) const;
00088     virtual void put(ExecState *exec, const UString &propertyName, const Value &value, int attr = None);
00089     virtual bool toBoolean(ExecState *exec) const;
00090     int installTimeout(const UString &handler, int t, bool singleShot);
00091     void clearTimeout(int timerId);
00092     void scheduleClose();
00093     void closeNow();
00094     void delayedGoHistory(int steps);
00095     void goHistory(int steps);
00096     void goURL(ExecState* exec, const QString& url, bool lockHistory);
00097     Value openWindow(ExecState *exec, const List &args);
00098     void resizeTo(QWidget* tl, int width, int height);
00099     void afterScriptExecution();
00100     bool isSafeScript(ExecState *exec) const;
00101     Location *location() const;
00102     ObjectImp* frames( ExecState* exec ) const;
00103     JSEventListener *getJSEventListener(const Value &val, bool html = false);
00104     void clear( ExecState *exec );
00105     virtual UString toString(ExecState *exec) const;
00106 
00107     // Set the current "event" object
00108     void setCurrentEvent( DOM::Event *evt );
00109 
00110     QPtrList<JSEventListener> jsEventListeners;
00111     virtual const ClassInfo* classInfo() const { return &info; }
00112     static const ClassInfo info;
00113     enum { Closed, Crypto, DefaultStatus, Status, Document, Node, EventCtor, Range,
00114            NodeFilter, DOMException, CSSRule, Frames, _History, Event, InnerHeight,
00115            InnerWidth, Length, _Location, Name, _Navigator, _Konqueror, ClientInformation,
00116            OffscreenBuffering, Opener, OuterHeight, OuterWidth, PageXOffset, PageYOffset,
00117            Parent, Personalbar, ScreenX, ScreenY, Scrollbars, Scroll, ScrollBy,
00118            ScreenTop, ScreenLeft,
00119            ScrollTo, ScrollX, ScrollY, MoveBy, MoveTo, ResizeBy, ResizeTo, Self, _Window, Top, _Screen,
00120            Image, Option, Alert, Confirm, Prompt, Open, SetTimeout, ClearTimeout,
00121            Focus, Blur, Close, SetInterval, ClearInterval, CaptureEvents, ReleaseEvents,
00122            Print, AddEventListener, RemoveEventListener,
00123            Onabort, Onblur,
00124            Onchange, Onclick, Ondblclick, Ondragdrop, Onerror, Onfocus,
00125            Onkeydown, Onkeypress, Onkeyup, Onload, Onmousedown, Onmousemove,
00126            Onmouseout, Onmouseover, Onmouseup, Onmove, Onreset, Onresize,
00127            Onselect, Onsubmit, Onunload };
00128   protected:
00129     enum DelayedActionId { NullAction, DelayedClose, DelayedGoHistory };
00130 
00131     Value getListener(ExecState *exec, int eventId) const;
00132     void setListener(ExecState *exec, int eventId, Value func);
00133   private:
00134     struct DelayedAction;
00135     friend struct DelayedAction;
00136 
00137     QGuardedPtr<KHTMLPart> m_part;
00138     Screen *screen;
00139     History *history;
00140     FrameArray *m_frames;
00141     Location *loc;
00142     WindowQObject *winq;
00143     DOM::Event *m_evt;
00144 
00145     struct DelayedAction {
00146       DelayedAction() : actionId(NullAction) {} // for QValueList
00147       DelayedAction( DelayedActionId id, QVariant p = QVariant() ) : actionId(id), param(p) {}
00148       DelayedActionId actionId;
00149       QVariant param; // just in case
00150     };
00151     QValueList<DelayedAction> m_delayed;
00152   };
00153 
00159   class ScheduledAction {
00160   public:
00161     ScheduledAction(Object _func, List _args, bool _singleShot);
00162     ScheduledAction(QString _code, bool _singleShot);
00163     ~ScheduledAction();
00164     void execute(Window *window);
00165 
00166     ObjectImp func;
00167     List args;
00168     QString code;
00169     bool isFunction;
00170     bool singleShot;
00171   };
00172 
00173   class WindowQObject : public QObject {
00174     Q_OBJECT
00175   public:
00176     WindowQObject(Window *w);
00177     ~WindowQObject();
00178     int installTimeout(const UString &handler, int t, bool singleShot);
00179     int installTimeout(const Value &func, List args, int t, bool singleShot);
00180     void clearTimeout(int timerId, bool delAction = true);
00181   public slots:
00182     void timeoutClose();
00183   protected slots:
00184     void parentDestroyed();
00185   protected:
00186     void timerEvent(QTimerEvent *e);
00187   private:
00188     Window *parent;
00189     KHTMLPart *part;        // not guarded, may be dangling
00190     QMap<int, ScheduledAction*> scheduledActions;
00191   };
00192 
00193   class Location : public ObjectImp {
00194   public:
00195     ~Location();
00196     virtual Value get(ExecState *exec, const UString &propertyName) const;
00197     virtual void put(ExecState *exec, const UString &propertyName, const Value &value, int attr = None);
00198     virtual Value toPrimitive(ExecState *exec, Type preferred) const;
00199     virtual UString toString(ExecState *exec) const;
00200     enum { Hash, Href, Hostname, Host, Pathname, Port, Protocol, Search, EqualEqual,
00201            Assign, Replace, Reload, ToString };
00202     KHTMLPart *part() const { return m_part; }
00203     virtual const ClassInfo* classInfo() const { return &info; }
00204     static const ClassInfo info;
00205   private:
00206     friend class Window;
00207     Location(KHTMLPart *p);
00208     QGuardedPtr<KHTMLPart> m_part;
00209   };
00210 
00211 #ifdef Q_WS_QWS
00212   class Konqueror : public ObjectImp {
00213     friend class KonquerorFunc;
00214   public:
00215     Konqueror(KHTMLPart *p) : part(p) { }
00216     virtual Value get(ExecState *exec, const UString &propertyName) const;
00217     virtual bool hasProperty(ExecState *exec, const UString &p) const;
00218     virtual UString toString(ExecState *exec) const;
00219     virtual const ClassInfo* classInfo() const { return &info; }
00220     static const ClassInfo info;
00221   private:
00222     KHTMLPart *part;
00223   };
00224 #endif
00225 
00226 } // namespace
00227 
00228 #endif
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.4.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 27 22:16:39 2005 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001