Changeset 23528 in webkit


Ignore:
Timestamp:
Jun 14, 2007 10:13:54 AM (17 years ago)
Author:
staikos
Message:

Implement the javascript dialogs and file chooser dialog, along with some
cleanups.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r23527 r23528  
     12007-06-14  George Staikos  <staikos@kde.org>
     2
     3        Reviewed by Lars.
     4
     5        Implement the file chooser for Qt.
     6
     7        * platform/qt/FileChooserQt.cpp:
     8        (WebCore::FileChooser::openFileChooser):
     9        (WebCore::FileChooser::basenameForWidth):
     10
    1112007-06-14  George Staikos  <staikos@kde.org>
    212
  • trunk/WebCore/platform/qt/FileChooserQt.cpp

    r21827 r23528  
    2222#include "FileChooser.h"
    2323
     24#include "Document.h"
     25#include "Frame.h"
     26#include "FrameLoaderClientQt.h"
    2427#include "Icon.h"
    25 #include "NotImplemented.h"
     28#include "Page.h"
     29
     30#include <QFontMetrics>
    2631
    2732namespace WebCore {
     
    3843}
    3944
    40 void FileChooser::openFileChooser(Document*)
     45void FileChooser::openFileChooser(Document* doc)
    4146{
    42     notImplemented();
     47    Page *page = doc->page();
     48    Frame *frame = doc->frame();
     49    if (!page || !frame)
     50        return;
     51
     52    FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(frame->loader()->client());
     53    if (!fl)
     54        return;
     55
     56    QString f = fl->chooseFile(m_filename);
     57    if (!f.isEmpty())
     58        chooseFile(f);
    4359}
    4460
    45 String FileChooser::basenameForWidth(const Font&, int width) const
     61String FileChooser::basenameForWidth(const Font& f, int width) const
    4662{
    47     notImplemented();
    48     return String();
     63    QFontMetrics fm((QFont)f);
     64    return fm.elidedText(m_filename, Qt::ElideLeft, width);
    4965}
    5066
  • trunk/WebKitQt/Api/qwebpage.cpp

    r23519 r23528  
    4949#include <QDragMoveEvent>
    5050#include <QDropEvent>
     51#include <QFileDialog>
     52#include <QHttpRequestHeader>
     53#include <QInputDialog>
     54#include <QMessageBox>
    5155#include <QUndoStack>
    5256#include <QUrl>
    5357#include <QVBoxLayout>
    54 #include <QHttpRequestHeader>
    5558
    5659using namespace WebCore;
     
    5962    : q(qq), modified(false)
    6063{
     64    q->setFocusPolicy(Qt::ClickFocus);
    6165    chromeClient = new ChromeClientQt(q);
    6266    contextMenuClient = new ContextMenuClientQt();
     
    217221}
    218222
    219 void QWebPage::statusTextChanged(const QString& text)
    220 {
    221 }
    222 
    223 void QWebPage::runJavaScriptAlert(QWebFrame *frame, const QString& msg)
    224 {
     223void QWebPage::javaScriptAlert(QWebFrame *frame, const QString& msg)
     224{
     225    QMessageBox::information(frame, title(), msg, QMessageBox::Ok);
     226}
     227
     228bool QWebPage::javaScriptConfirm(QWebFrame *frame, const QString& msg)
     229{
     230    return 0 == QMessageBox::information(frame, title(), msg, QMessageBox::Yes, QMessageBox::No);
     231}
     232
     233bool QWebPage::javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result)
     234{
     235    bool ok = false;
     236    QString x = QInputDialog::getText(frame, title(), msg, QLineEdit::Normal, defaultValue, &ok);
     237    if (ok && result) {
     238        *result = x;
     239    }
     240    return ok;
    225241}
    226242
     
    407423    return settings;
    408424}
     425
     426QString QWebPage::chooseFile(QWebFrame *parentFrame, const QString& oldFile)
     427{
     428    return QFileDialog::getOpenFileName(parentFrame, QString::null, oldFile);
     429}
     430
  • trunk/WebKitQt/Api/qwebpage.h

    r23497 r23528  
    6161    ~QWebPage();
    6262
    63 
    6463    void open(const QUrl &url);
    6564    void open(const QWebNetworkRequest &request);
     
    8079    bool isModified() const;
    8180
    82     virtual void javaScriptConsoleMessage(const QString& message, unsigned int lineNumber, const QString& sourceID);
    83 
    84     virtual void statusTextChanged(const QString& text);
    85 
    86     virtual void runJavaScriptAlert(QWebFrame *frame, const QString& msg);
    87 
    8881    QUndoStack *undoStack();
    8982   
    90     virtual void dragEnterEvent(QDragEnterEvent *);
    91     virtual void dragLeaveEvent(QDragLeaveEvent *);
    92     virtual void dragMoveEvent(QDragMoveEvent *);
    93     virtual void dropEvent(QDropEvent *);
    94 
    9583    void setNetworkInterface(QWebNetworkInterface *interface);
    9684    QWebNetworkInterface *networkInterface() const;
     
    138126     */
    139127    void hoveringOverLink(const QString &link, const QString &title);
     128    /**
     129     * Signal is emitted when the statusbar text is changed by the page.
     130     */
     131    void statusBarTextChanged(const QString& text);
    140132
    141133protected:
     
    144136
    145137    virtual NavigationRequestResponse navigationRequested(QWebFrame *frame, const QWebNetworkRequest &request);
     138    virtual QString chooseFile(QWebFrame *frame, const QString& oldFile);
     139    virtual void javaScriptAlert(QWebFrame *frame, const QString& msg);
     140    virtual bool javaScriptConfirm(QWebFrame *frame, const QString& msg);
     141    virtual bool javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result);
     142    virtual void javaScriptConsoleMessage(const QString& message, unsigned int lineNumber, const QString& sourceID);
     143
     144    virtual void dragEnterEvent(QDragEnterEvent *);
     145    virtual void dragLeaveEvent(QDragLeaveEvent *);
     146    virtual void dragMoveEvent(QDragMoveEvent *);
     147    virtual void dropEvent(QDropEvent *);
    146148
    147149private:
  • trunk/WebKitQt/ChangeLog

    r23525 r23528  
     12007-06-14  George Staikos  <staikos@kde.org>
     2
     3        Reviewed by Lars.
     4
     5        Implement all of the Javascript dialogs and file chooser.
     6        Also makes the statusbar virtual into a signal and shuffles some
     7        virtuals around a bit.  The helper in FrameLoaderClientQt may go away
     8        shortly.
     9
     10        * Api/qwebpage.cpp:
     11        (QWebPagePrivate::QWebPagePrivate):
     12        (QWebPage::javaScriptAlert):
     13        (QWebPage::javaScriptConfirm):
     14        (QWebPage::javaScriptPrompt):
     15        (QWebPage::chooseFile):
     16        * Api/qwebpage.h:
     17        * WebCoreSupport/ChromeClientQt.cpp:
     18        (WebCore::ChromeClientQt::canRunBeforeUnloadConfirmPanel):
     19        (WebCore::ChromeClientQt::runBeforeUnloadConfirmPanel):
     20        (WebCore::ChromeClientQt::runJavaScriptAlert):
     21        (WebCore::ChromeClientQt::runJavaScriptConfirm):
     22        (WebCore::ChromeClientQt::runJavaScriptPrompt):
     23        (WebCore::ChromeClientQt::setStatusbarText):
     24        * WebCoreSupport/FrameLoaderClientQt.cpp:
     25        (WebCore::FrameLoaderClientQt::chooseFile):
     26        * WebCoreSupport/FrameLoaderClientQt.h:
     27
    1282007-06-14  Simon Hausmann  <hausmann@kde.org>
    229
  • trunk/WebKitQt/WebCoreSupport/ChromeClientQt.cpp

    r21827 r23528  
    3030
    3131#include "Frame.h"
     32#include "FrameLoadRequest.h"
     33#include "FrameLoader.h"
     34#include "FrameLoaderClientQt.h"
    3235#include "FrameView.h"
    33 #include "FrameLoadRequest.h"
    3436#include "NotImplemented.h"
    3537
     
    223225bool ChromeClientQt::canRunBeforeUnloadConfirmPanel()
    224226{
    225     notImplemented();
    226     return false;
     227    return true;
    227228}
    228229
    229230bool ChromeClientQt::runBeforeUnloadConfirmPanel(const String& message, Frame* frame)
    230231{
    231     notImplemented();
    232     return false;
     232    return runJavaScriptConfirm(frame, message);
    233233}
    234234
     
    238238}
    239239
    240 void ChromeClientQt::runJavaScriptAlert(Frame*, const String& msg)
     240void ChromeClientQt::runJavaScriptAlert(Frame* f, const String& msg)
    241241{
    242242    QString x = msg;
    243     m_webPage->runJavaScriptAlert(0, x);
    244 }
    245 
    246 bool ChromeClientQt::runJavaScriptConfirm(Frame*, const String&)
    247 {
    248     notImplemented();
    249     return false;
    250 }
    251 
    252 bool ChromeClientQt::runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result)
    253 {
    254     notImplemented();
    255     return false;
    256 }
    257 
    258 void ChromeClientQt::setStatusbarText(const String&)
    259 {
    260     notImplemented();
     243    FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(f->loader()->client());
     244    m_webPage->javaScriptAlert(fl->webFrame(), x);
     245}
     246
     247bool ChromeClientQt::runJavaScriptConfirm(Frame* f, const String& msg)
     248{
     249    QString x = msg;
     250    FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(f->loader()->client());
     251    return m_webPage->javaScriptConfirm(fl->webFrame(), x);
     252}
     253
     254bool ChromeClientQt::runJavaScriptPrompt(Frame* f, const String& message, const String& defaultValue, String& result)
     255{
     256    QString x = result;
     257    FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(f->loader()->client());
     258    bool rc = m_webPage->javaScriptPrompt(fl->webFrame(), (QString)message, (QString)defaultValue, &x);
     259    result = x;
     260    return rc;
     261}
     262
     263void ChromeClientQt::setStatusbarText(const String& msg)
     264{
     265    QString x = msg;
     266    emit m_webPage->statusBarTextChanged(x);
    261267}
    262268
  • trunk/WebKitQt/WebCoreSupport/FrameLoaderClientQt.cpp

    r23494 r23528  
    949949}
    950950
    951 }
     951QString FrameLoaderClientQt::chooseFile(const QString& oldFile)
     952{
     953    return webFrame()->page()->chooseFile(webFrame(), oldFile);
     954}
     955
     956}
  • trunk/WebKitQt/WebCoreSupport/FrameLoaderClientQt.h

    r21567 r23528  
    223223        virtual void windowObjectCleared() const;
    224224
     225        QString chooseFile(const QString& oldFile);
     226
    225227    private:
    226228        Frame *m_frame;
Note: See TracChangeset for help on using the changeset viewer.