| # khtml Library API Documentation
Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# 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  *  Copyright (C) 2003 Apple Computer, Inc.
    00006  *
    00007  *  This library is free software; you can redistribute it and/or
    00008  *  modify it under the terms of the GNU Library General Public
    00009  *  License as published by the Free Software Foundation; either
    00010  *  version 2 of the License, or (at your option) any later version.
    00011  *
    00012  *  This library is distributed in the hope that it will be useful,
    00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00015  *  Library General Public License for more details.
    00016  *
    00017  *  You should have received a copy of the GNU Library General Public
    00018  *  License along with this library; if not, write to the Free Software
    00019  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    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 KParts {
    00038   class ReadOnlyPart;
    00039 }
    00040
    00041 namespace khtml {
    00042   class ChildFrame;
    00043 }
    00044
    00045 namespace KJS {
    00046
    00047   class WindowFunc;
    00048   class WindowQObject;
    00049   class Location;
    00050   class History;
    00051   class External;
    00052   class FrameArray;
    00053   class JSEventListener;
    00054   class JSLazyEventListener;
    00055
    00056   class Screen : public ObjectImp {
    00057   public:
    00058     Screen(ExecState *exec);
    00059     enum {
    00060       Height, Width, ColorDepth, PixelDepth, AvailLeft, AvailTop, AvailHeight,
    00061       AvailWidth
    00062     };
    00063     virtual Value get(ExecState *exec, const Identifier &propertyName) const;
    00064     Value getValueProperty(ExecState *exec, int token) const;
    00065   private:
    00066     KHTMLView *view;
    00067     virtual const ClassInfo* classInfo() const { return &info; }
    00068     static const ClassInfo info;
    00069   };
    00070
    00071   class Window : public ObjectImp {
    00072     friend QGuardedPtr<KHTMLPart> getInstance();
    00073     friend class Location;
    00074     friend class WindowFunc;
    00075     friend class WindowQObject;
    00076     friend class ScheduledAction;
    00077   public:
    00078     Window(khtml::ChildFrame *p);
    00079   public:
    00080     ~Window();
    00086     static Value retrieve(KParts::ReadOnlyPart *p);
    00090     static Window *retrieveWindow(KParts::ReadOnlyPart *p);
    00095     static Window *retrieveActive(ExecState *exec);
    00096     KParts::ReadOnlyPart *part() const;
    00097     virtual void mark();
    00098     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
    00099     virtual Value get(ExecState *exec, const Identifier &propertyName) const;
    00100     virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
    00101     virtual bool toBoolean(ExecState *exec) const;
    00102     void scheduleClose();
    00103     void closeNow();
    00104     void delayedGoHistory(int steps);
    00105     void goHistory(int steps);
    00106     void goURL(ExecState* exec, const QString& url, bool lockHistory);
    00107     Value openWindow(ExecState *exec, const List &args);
    00108     void resizeTo(QWidget* tl, int width, int height);
    00109     void afterScriptExecution();
    00110     bool isSafeScript(ExecState *exec) const {
    00111         KParts::ReadOnlyPart *activePart = static_cast<KJS::ScriptInterpreter *>(  exec->interpreter() )->part();
    00112       if ( activePart == part() ) return true;
    00113       return checkIsSafeScript( activePart );
    00114     }
    00115     Location *location() const;
    00116     ObjectImp* frames( ExecState* exec ) const;
    00117     JSEventListener *getJSEventListener(const Value &val, bool html = false);
    00118     JSLazyEventListener *getJSLazyEventListener(const QString &code, const QString &name, bool html = false);
    00119     void clear( ExecState *exec );
    00120     virtual UString toString(ExecState *exec) const;
    00121
    00122     // Set the current "event" object
    00123     void setCurrentEvent( DOM::Event *evt );
    00124
    00125     QPtrDict<JSEventListener> jsEventListeners;
    00126     virtual const ClassInfo* classInfo() const { return &info; }
    00127     static const ClassInfo info;
    00128     enum { Closed, Crypto, DefaultStatus, Status, Document, Node, EventCtor, Range,
    00129            NodeFilter, DOMException, CSSRule, Frames, _History, _External, Event, InnerHeight,
    00130            InnerWidth, Length, _Location, Navigate, Name, _Navigator, _Konqueror, ClientInformation,
    00131            OffscreenBuffering, Opener, OuterHeight, OuterWidth, PageXOffset, PageYOffset,
    00132            Parent, Personalbar, ScreenX, ScreenY, Scrollbars, Scroll, ScrollBy,
    00133            ScreenTop, ScreenLeft,
    00134            ScrollTo, ScrollX, ScrollY, MoveBy, MoveTo, ResizeBy, ResizeTo, Self, _Window, Top, _Screen,
    00135            Image, Option, Alert, Confirm, Prompt, Open, SetTimeout, ClearTimeout, XMLHttpRequest, XMLSerializer,
    00136            Focus, Blur, Close, SetInterval, ClearInterval, CaptureEvents, ReleaseEvents,
    00137            Print, AddEventListener, RemoveEventListener, SideBar,
    00138            Onabort, Onblur,
    00139            Onchange, Onclick, Ondblclick, Ondragdrop, Onerror, Onfocus,
    00140            Onkeydown, Onkeypress, Onkeyup, Onload, Onmousedown, Onmousemove,
    00141            Onmouseout, Onmouseover, Onmouseup, Onmove, Onreset, Onresize,
    00142            Onselect, Onsubmit, Onunload };
    00143     WindowQObject *winq;
    00144   protected:
    00145     enum DelayedActionId { NullAction, DelayedClose, DelayedGoHistory };
    00146
    00147     Value getListener(ExecState *exec, int eventId) const;
    00148     void setListener(ExecState *exec, int eventId, Value func);
    00149   private:
    00150     struct DelayedAction;
    00151     friend struct DelayedAction;
    00152
    00153     bool checkIsSafeScript( KParts::ReadOnlyPart* activePart ) const;
    00154
    00155     QGuardedPtr<khtml::ChildFrame> m_frame;
    00156     Screen *screen;
    00157     History *history;
    00158     External *external;
    00159     FrameArray *m_frames;
    00160     Location *loc;
    00161     DOM::Event *m_evt;
    00162
    00163     struct DelayedAction {
    00164       DelayedAction() : actionId(NullAction) {} // for QValueList
    00165       DelayedAction( DelayedActionId id, QVariant p = QVariant() ) : actionId(id), param(p) {}
    00166       DelayedActionId actionId;
    00167       QVariant param; // just in case
    00168     };
    00169     QValueList<DelayedAction> m_delayed;
    00170   };
    00171
    00177   class ScheduledAction {
    00178   public:
    00179     ScheduledAction(Object _func, List _args, QTime _nextTime, int _interval, bool _singleShot, int _timerId);
    00180     ScheduledAction(QString _code, QTime _nextTime, int _interval, bool _singleShot, int _timerId);
    00181     ~ScheduledAction();
    00182     bool execute(Window *window);
    00183     void mark();
    00184
    00185     ObjectImp *func;
    00186     List args;
    00187     QString code;
    00188     bool isFunction;
    00189     bool singleShot;
    00190
    00191     QTime nextTime;
    00192     int interval;
    00193     bool executing;
    00194     int timerId;
    00195   };
    00196
    00197   class WindowQObject : public QObject {
    00198     Q_OBJECT
    00199   public:
    00200     WindowQObject(Window *w);
    00201     ~WindowQObject();
    00202     int installTimeout(const Identifier &handler, int t, bool singleShot);
    00203     int installTimeout(const Value &func, List args, int t, bool singleShot);
    00204     void clearTimeout(int timerId);
    00205     void mark();
    00206     bool hasTimers() const;
    00207   public slots:
    00208     void timeoutClose();
    00209   protected slots:
    00210     void parentDestroyed();
    00211   protected:
    00212     void timerEvent(QTimerEvent *e);
    00213     void setNextTimer();
    00214   private:
    00215     Window *parent;
    00216     QPtrList<ScheduledAction> scheduledActions;
    00217     int pausedTime;
    00218     int lastTimerId;
    00219   };
    00220
    00221   class Location : public ObjectImp {
    00222   public:
    00223     ~Location();
    00224     virtual Value get(ExecState *exec, const Identifier &propertyName) const;
    00225     virtual void put(ExecState *exec, const Identifier &propertyName, const Value &value, int attr = None);
    00226     virtual Value toPrimitive(ExecState *exec, Type preferred) const;
    00227     virtual UString toString(ExecState *exec) const;
    00228     enum { Hash, Href, Hostname, Host, Pathname, Port, Protocol, Search, EqualEqual,
    00229            Assign, Replace, Reload, ToString };
    00230     KParts::ReadOnlyPart *part() const;
    00231     virtual const ClassInfo* classInfo() const { return &info; }
    00232     static const ClassInfo info;
    00233   private:
    00234     friend class Window;
    00235     Location(khtml::ChildFrame *f);
    00236     QGuardedPtr<khtml::ChildFrame> m_frame;
    00237   };
    00238
    00239 #ifdef Q_WS_QWS
    00240   class Konqueror : public ObjectImp {
    00241     friend class KonquerorFunc;
    00242   public:
    00243     Konqueror(KHTMLPart *p) : part(p) { }
    00244     virtual Value get(ExecState *exec, const Identifier &propertyName) const;
    00245     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
    00246     virtual UString toString(ExecState *exec) const;
    00247     virtual const ClassInfo* classInfo() const { return &info; }
    00248     static const ClassInfo info;
    00249   private:
    00250     KHTMLPart *part;
    00251   };
    00252 #endif
    00253
    00254 } // namespace
    00255
    00256 #endif

This file is part of the documentation for khtml Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:33:19 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003