94ffb236e296f2dcfa3b71f2e9cc1b1a9bf6823b
[WebKit-https.git] / WebCore / platform / qt / FrameQt.h
1 /*
2  * Copyright (C) 2006 Dirk Mueller <mueller@kde.org>
3  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
4  * Copyright (C) 2006 George Staikos <staikos@kde.org>
5  * Copyright (C) 2006 Simon Hausmann <hausmann@kde.org>
6  * Copyright (C) 2006 Rob Buis <buis@kde.org>
7  * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
8  * 
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
21  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
28  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #ifndef FrameQt_H
34 #define FrameQt_H
35
36 #include "Frame.h"
37 #include "FrameQtClient.h"
38 #include "WindowFeatures.h"
39
40 class QWidget;
41 class QPaintEvent;
42
43 namespace WebCore {
44
45 class EditorClient;
46
47 class FrameQt : public Frame {
48 public:
49     FrameQt(Page*, HTMLFrameOwnerElement*, FrameQtClient*, FrameLoaderClient*);
50     virtual ~FrameQt();
51
52     virtual KJS::Bindings::Instance* getEmbedInstanceForWidget(Widget*);
53     virtual KJS::Bindings::Instance* getObjectInstanceForWidget(Widget*);
54     virtual KJS::Bindings::Instance* getAppletInstanceForWidget(Widget*);
55     virtual KJS::Bindings::RootObject* bindingRootObject();
56
57     //should be in Chrome
58     virtual void runJavaScriptAlert(const String& message);
59     virtual bool runJavaScriptConfirm(const String& message);
60     virtual bool runJavaScriptPrompt(const String& message, const String& defaultValue,
61                                      String& result);
62     virtual bool shouldInterruptJavaScript();
63     virtual void scheduleClose();
64     virtual void focusWindow();
65     virtual void unfocusWindow();
66     virtual void print();
67
68     //should be in Editor
69     virtual Range* markedTextRange() const;
70     virtual void issueCutCommand();
71     virtual void issueCopyCommand();
72     virtual void issuePasteCommand();
73     virtual void issuePasteAndMatchStyleCommand();
74     virtual void issueTransposeCommand();
75     virtual void respondToChangedSelection(const Selection& oldSelection, bool closeTyping);
76     virtual bool shouldChangeSelection(const Selection& oldSelection, const Selection& newSelection,
77                                        EAffinity, bool stillSelecting) const;
78
79     //should be somewhere in platform
80     virtual String mimeTypeForFileName(const String&) const;
81
82     bool keyEvent(const PlatformKeyboardEvent& keyEvent);
83
84     void setFrameGeometry(const IntRect&);
85
86     FrameQtClient* client() const;
87
88     void createNewWindow(const FrameLoadRequest&, const WindowFeatures&, Frame*&);
89     void goBackOrForward(int);
90
91     KURL historyURL(int distance);
92 private:
93     void init();
94
95     virtual bool isLoadTypeReload();
96     virtual bool passMouseDownEventToWidget(Widget*);
97
98     FrameQtClient* m_client;
99     bool m_beginCalled : 1;    
100
101     KJS::Bindings::RootObject* m_bindingRoot;  // The root object used for objects
102                                                // bound outside the context of a plugin.
103
104     Vector<KJS::Bindings::RootObject*> m_rootObjects;
105
106 };
107
108 inline FrameQt* QtFrame(Frame* frame) { return static_cast<FrameQt*>(frame); }
109 inline const FrameQt* QtFrame(const Frame* frame) { return static_cast<const FrameQt*>(frame); }
110
111 }
112
113 #endif 
114 // vim: ts=4 sw=4 et