Source: browserrun.h

# Source: browserrun.h |
Annotated List
Files
Globals
Hierarchy
Index

    /* This file is part of the KDE project
     *
     * Copyright (C) 2002 David Faure
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Library General Public
     * License version 2, as published by the Free Software Foundation.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * Library General Public License for more details.
     *
     * You should have received a copy of the GNU Library General Public License
     * along with this library; see the file COPYING.LIB.  If not, write to
     * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
     * Boston, MA 02111-1307, USA.
     */

    #ifndef kparts_browserrun_h
    #define kparts_browserrun_h

    #include
    #include
    #include

    namespace KParts {

        /**
         * This class extends KRun to provide additional functionality for browsers:
         * - "save or open" dialog boxes
         * - "save" functionality
         * - support for HTTP POST (including saving the result to a temp file if
         *   opening a separate application)
         * - warning before launching executables off the web
         * - custom error handling (i.e. treating errors as HTML pages)
         * - generation of SSL metadata depending on the previous URL shown by the part
         * @author David Faure
         */
        class BrowserRun : public KRun
        {
            Q_OBJECT
        public:
            /**
             * @param url the URL we're probing
             * @param args URL args - includes data for a HTTP POST, etc.
             * @param part the part going to open this URL - can be 0L if not created yet
             * @param window the mainwindow - passed to KIO::Job::setWindow()
             * @param removeReferrer if true, the "referrer" metadata from @p args isn't passed on
             * @param trustedSource if false, a warning will be shown before launching an executable
    	 * Always pass false for @p trustedSource, except for local directory views.
             */
            BrowserRun( const KURL& url, const KParts::URLArgs& args,
                        KParts::ReadOnlyPart *part, QWidget *window,
                        bool removeReferrer, bool trustedSource );

            // BIC: merge with above constructor
            /**
             * @param url the URL we're probing
             * @param args URL args - includes data for a HTTP POST, etc.
             * @param part the part going to open this URL - can be 0L if not created yet
             * @param window the mainwindow - passed to KIO::Job::setWindow()
             * @param removeReferrer if true, the "referrer" metadata from @p args isn't passed on
             * @param trustedSource if false, a warning will be shown before launching an executable
             * @param hideErrorDialog if true, no dialog will be shown in case of errors.
    	 * Always pass false for @p trustedSource, except for local directory views.
             */
            BrowserRun( const KURL& url, const KParts::URLArgs& args,
                        KParts::ReadOnlyPart *part, QWidget *window,
                        bool removeReferrer, bool trustedSource, bool hideErrorDialog );

            virtual ~BrowserRun();

            //KParts::URLArgs urlArgs() const { return m_args; }
            //KParts::ReadOnlyPart* part() const { return m_part; }
            KURL url() const { return m_strURL; }

            bool hideErrorDialog() const;

            enum AskSaveResult { Save, Open, Cancel };
            static AskSaveResult askSave( const KURL & url, KService::Ptr offer, const QString& mimeType, const QString & suggestedFilename = QString::null );

            // virtual so that KHTML can implement differently (HTML cache)
            virtual void save( const KURL & url, const QString & suggestedFilename );
            // static so that it can be called from other classes
            static void simpleSave( const KURL & url, const QString & suggestedFilename );

            static bool allowExecution( const QString &serviceType, const KURL &url );

            static bool isExecutable( const QString &serviceType );
            static bool isTextExecutable( const QString &serviceType );

        protected:
            /**
             * Reimplemented from KRun
             */
            virtual void scanFile();
            /**
             * Reimplemented from KRun
             */
            virtual void init();
            /**
             * Called when an error happens.
             * NOTE: @p job could be 0L, if you passed hideErrorDialog=true.
             * The default implementation shows a message box, but only when job != 0 ....
             * It is strongly recommended to reimplement this method if
             * you passed hideErrorDialog=true.
             */
            virtual void handleError( KIO::Job * job );

            /**
             * NotHandled means that foundMimeType should call KRun::foundMimeType,
             * i.e. launch an external app.
             */
            enum NonEmbeddableResult { Handled, NotHandled, Delayed };
            /**
    	 * Helper for foundMimeType: call this if the mimetype couldn't be embedded
    	 */
            NonEmbeddableResult handleNonEmbeddable( const QString& mimeType );

        protected slots:
            void slotBrowserScanFinished(KIO::Job *job);
            void slotBrowserMimetype(KIO::Job *job, const QString &type);
            void slotCopyToTempFileResult(KIO::Job *job);
            virtual void slotStatResult( KIO::Job *job );

        protected:
            KParts::URLArgs m_args;
            KParts::ReadOnlyPart *m_part; // QGuardedPtr?
            QWidget *m_window;            // QGuardedPtr?
            QString m_suggestedFilename;
            QString m_sMimeType;
            bool m_bRemoveReferrer;
            bool m_bTrustedSource;
        private:
            class BrowserRunPrivate;
            BrowserRunPrivate* d;

        };
    }
    #endif

Generated by: root on macppc.ports.openbsd.org on Sat Sep 6 10:37:24 2003, using kdoc 2.0a54.