⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 browserextension.cpp

📁 konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版本源码包.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  // Set the initial status of the actions depending on whether  // they're supported or not  ActionSlotMap::ConstIterator it = s_actionSlotMap->begin();  ActionSlotMap::ConstIterator itEnd = s_actionSlotMap->end();  QStrList slotNames = metaObject()->slotNames();  for ( int i=0 ; it != itEnd ; ++it, ++i )  {      // Does the extension have a slot with the name of this action ?      d->m_actionStatus.setBit( i, slotNames.contains( it.key()+"()" ) );  }  connect( m_part, SIGNAL( completed() ),           this, SLOT( slotCompleted() ) );  connect( this, SIGNAL( openURLRequest( const KURL &, const KParts::URLArgs & ) ),           this, SLOT( slotOpenURLRequest( const KURL &, const KParts::URLArgs & ) ) );  connect( this, SIGNAL( enableAction( const char *, bool ) ),           this, SLOT( slotEnableAction( const char *, bool ) ) );  connect( this, SIGNAL( setActionText( const char *, const QString& ) ),           this, SLOT( slotSetActionText( const char *, const QString& ) ) );}BrowserExtension::~BrowserExtension(){  //kdDebug() << "BrowserExtension::~BrowserExtension() " << this << endl;  delete d;}void BrowserExtension::setURLArgs( const URLArgs &args ){  m_args = args;}URLArgs BrowserExtension::urlArgs() const{  return m_args;}int BrowserExtension::xOffset(){  return 0;}int BrowserExtension::yOffset(){  return 0;}void BrowserExtension::saveState( QDataStream &stream ){  stream << m_part->url() << (Q_INT32)xOffset() << (Q_INT32)yOffset();}void BrowserExtension::restoreState( QDataStream &stream ){  KURL u;  Q_INT32 xOfs, yOfs;  stream >> u >> xOfs >> yOfs;  URLArgs args( urlArgs() );  args.xOffset = xOfs;  args.yOffset = yOfs;  setURLArgs( args );  m_part->openURL( u );}bool BrowserExtension::isURLDropHandlingEnabled() const{    return d->m_urlDropHandlingEnabled;}void BrowserExtension::setURLDropHandlingEnabled( bool enable ){    d->m_urlDropHandlingEnabled = enable;}void BrowserExtension::slotCompleted(){  //empty the argument stuff, to avoid bogus/invalid values when opening a new url  setURLArgs( URLArgs() );}void BrowserExtension::pasteRequest(){#ifndef QT_NO_CLIPBOARD    QCString plain( "plain" );    QString url = QApplication::clipboard()->text(plain, QClipboard::Selection).stripWhiteSpace();    // Remove linefeeds and any whitespace surrounding it.    url.remove(QRegExp("[\\ ]*\\n+[\\ ]*"));    // Check if it's a URL    QStringList filters = KURIFilter::self()->pluginNames();    filters.remove( "kuriikwsfilter" );    filters.remove( "localdomainurifilter" );    KURIFilterData filterData;    filterData.setData( url );    filterData.setCheckForExecutables( false );    if ( KURIFilter::self()->filterURI( filterData, filters ) )    {        switch ( filterData.uriType() )	{	    case KURIFilterData::LOCAL_FILE:	    case KURIFilterData::LOCAL_DIR:	    case KURIFilterData::NET_PROTOCOL:	        slotOpenURLRequest( filterData.uri(), KParts::URLArgs() );		break;	    case KURIFilterData::ERROR:		KMessageBox::sorry( m_part->widget(), filterData.errorMsg() );		break;	    default:		break;	}    }    else if ( KURIFilter::self()->filterURI( filterData, "kuriikwsfilter" ) && url.length() < 250 )    {        if ( KMessageBox::questionYesNo( m_part->widget(),		    i18n( "<qt>Do you want to search the Internet for <b>%1</b>?" ).arg( QStyleSheet::escape(url) ),		    i18n( "Internet Search" ), KGuiItem( i18n( "&Search" ), "find"),		    KStdGuiItem::cancel(), "MiddleClickSearch" ) == KMessageBox::Yes)          slotOpenURLRequest( filterData.uri(), KParts::URLArgs() );    }#endif // QT_NO_CLIPBOARD}void BrowserExtension::slotOpenURLRequest( const KURL &url, const KParts::URLArgs &args ){    //kdDebug() << this << " BrowserExtension::slotOpenURLRequest(): url=" << url.url() << endl;    BrowserExtensionPrivate::DelayedRequest req;    req.m_delayedURL = url;    req.m_delayedArgs = args;    d->m_requests.append( req );    QTimer::singleShot( 0, this, SLOT( slotEmitOpenURLRequestDelayed() ) );}void BrowserExtension::slotEmitOpenURLRequestDelayed(){    if (d->m_requests.isEmpty()) return;    BrowserExtensionPrivate::DelayedRequest req = d->m_requests.front();    d->m_requests.pop_front();    emit openURLRequestDelayed( req.m_delayedURL, req.m_delayedArgs );    // tricky: do not do anything here! (no access to member variables, etc.)}void BrowserExtension::setBrowserInterface( BrowserInterface *impl ){    d->m_browserInterface = impl;}BrowserInterface *BrowserExtension::browserInterface() const{    return d->m_browserInterface;}void BrowserExtension::slotEnableAction( const char * name, bool enabled ){    //kdDebug() << "BrowserExtension::slotEnableAction " << name << " " << enabled << endl;    ActionNumberMap::ConstIterator it = s_actionNumberMap->find( name );    if ( it != s_actionNumberMap->end() )    {        d->m_actionStatus.setBit( it.data(), enabled );        //kdDebug() << "BrowserExtension::slotEnableAction setting bit " << it.data() << " to " << enabled << endl;    }    else        kdWarning() << "BrowserExtension::slotEnableAction unknown action " << name << endl;}bool BrowserExtension::isActionEnabled( const char * name ) const{    int actionNumber = (*s_actionNumberMap)[ name ];    return d->m_actionStatus[ actionNumber ];}void BrowserExtension::slotSetActionText( const char * name, const QString& text ){    kdDebug() << "BrowserExtension::slotSetActionText " << name << " " << text << endl;    ActionNumberMap::ConstIterator it = s_actionNumberMap->find( name );    if ( it != s_actionNumberMap->end() )    {        d->m_actionText[ it.data() ] = text;    }    else        kdWarning() << "BrowserExtension::slotSetActionText unknown action " << name << endl;}QString BrowserExtension::actionText( const char * name ) const{    int actionNumber = (*s_actionNumberMap)[ name ];    QMap<int, QString>::ConstIterator it = d->m_actionText.find( actionNumber );    if ( it != d->m_actionText.end() )        return *it;    return QString::null;}// for compatibilityBrowserExtension::ActionSlotMap BrowserExtension::actionSlotMap(){    return *actionSlotMapPtr();}BrowserExtension::ActionSlotMap * BrowserExtension::actionSlotMapPtr(){    if (!s_actionSlotMap)        createActionSlotMap();    return s_actionSlotMap;}void BrowserExtension::createActionSlotMap(){    assert(!s_actionSlotMap);    s_actionSlotMap = actionSlotMapsd.setObject( s_actionSlotMap, new ActionSlotMap );    s_actionSlotMap->insert( "cut", SLOT( cut() ) );    s_actionSlotMap->insert( "copy", SLOT( copy() ) );    s_actionSlotMap->insert( "paste", SLOT( paste() ) );    s_actionSlotMap->insert( "rename", SLOT( rename() ) );    s_actionSlotMap->insert( "trash", SLOT( trash() ) );    s_actionSlotMap->insert( "del", SLOT( del() ) );    s_actionSlotMap->insert( "properties", SLOT( properties() ) );    s_actionSlotMap->insert( "editMimeType", SLOT( editMimeType() ) );    s_actionSlotMap->insert( "print", SLOT( print() ) );    // Tricky. Those aren't actions in fact, but simply methods that a browserextension    // can have or not. No need to return them here.    //s_actionSlotMap->insert( "reparseConfiguration", SLOT( reparseConfiguration() ) );    //s_actionSlotMap->insert( "refreshMimeTypes", SLOT( refreshMimeTypes() ) );    // nothing for setSaveViewPropertiesLocally either    // Create the action-number map    assert(!s_actionNumberMap);    s_actionNumberMap = actionNumberMapsd.setObject( s_actionNumberMap, new ActionNumberMap );    ActionSlotMap::ConstIterator it = s_actionSlotMap->begin();    ActionSlotMap::ConstIterator itEnd = s_actionSlotMap->end();    for ( int i=0 ; it != itEnd ; ++it, ++i )    {        //kdDebug(1202) << " action " << it.key() << " number " << i << endl;        s_actionNumberMap->insert( it.key(), i );    }}BrowserExtension *BrowserExtension::childObject( QObject *obj ){    if ( !obj || !obj->children() )        return 0L;    // we try to do it on our own, in hope that we are faster than    // queryList, which looks kind of big :-)    const QObjectList *children = obj->children();    QObjectListIt it( *children );    for (; it.current(); ++it )        if ( it.current()->inherits( "KParts::BrowserExtension" ) )            return static_cast<KParts::BrowserExtension *>( it.current() );    return 0L;}namespace KParts{class BrowserHostExtension::BrowserHostExtensionPrivate{public:  BrowserHostExtensionPrivate()  {  }  ~BrowserHostExtensionPrivate()  {  }  KParts::ReadOnlyPart *m_part;};}BrowserHostExtension::BrowserHostExtension( KParts::ReadOnlyPart *parent, const char *name ) : QObject( parent, name ){  d = new BrowserHostExtensionPrivate;  d->m_part = parent;}BrowserHostExtension::~BrowserHostExtension(){  delete d;}QStringList BrowserHostExtension::frameNames() const{  return QStringList();}const QPtrList<KParts::ReadOnlyPart> BrowserHostExtension::frames() const{  return QPtrList<KParts::ReadOnlyPart>();}bool BrowserHostExtension::openURLInFrame( const KURL &, const KParts::URLArgs & ){  return false;}BrowserHostExtension *BrowserHostExtension::childObject( QObject *obj ){    if ( !obj || !obj->children() )        return 0L;    // we try to do it on our own, in hope that we are faster than    // queryList, which looks kind of big :-)    const QObjectList *children = obj->children();    QObjectListIt it( *children );    for (; it.current(); ++it )        if ( it.current()->inherits( "KParts::BrowserHostExtension" ) )            return static_cast<KParts::BrowserHostExtension *>( it.current() );    return 0L;}void BrowserExtension::virtual_hook( int, void* ){ /*BASE::virtual_hook( id, data );*/ }BrowserHostExtension *BrowserHostExtension::findFrameParent(KParts::ReadOnlyPart *callingPart, const QString &frame){    FindFrameParentParams param;    param.parent = 0;    param.callingPart = callingPart;    param.frame = frame;    virtual_hook(VIRTUAL_FIND_FRAME_PARENT, &param);    return param.parent;}void BrowserHostExtension::virtual_hook( int, void* ){ /*BASE::virtual_hook( id, data );*/ }LiveConnectExtension::LiveConnectExtension( KParts::ReadOnlyPart *parent, const char *name ) : QObject( parent, name) {}bool LiveConnectExtension::get( const unsigned long, const QString &, Type &, unsigned long &, QString & ) {    return false;}bool LiveConnectExtension::put( const unsigned long, const QString &, const QString & ) {      return false;}bool LiveConnectExtension::call( const unsigned long, const QString &, const QStringList &, Type &, unsigned long &, QString & ) {      return false;}void LiveConnectExtension::unregister( const unsigned long ) {}LiveConnectExtension *LiveConnectExtension::childObject( QObject *obj ){    if ( !obj || !obj->children() )        return 0L;    // we try to do it on our own, in hope that we are faster than    // queryList, which looks kind of big :-)    const QObjectList *children = obj->children();    QObjectListIt it( *children );    for (; it.current(); ++it )        if ( it.current()->inherits( "KParts::LiveConnectExtension" ) )            return static_cast<KParts::LiveConnectExtension *>( it.current() );    return 0L;}#include "browserextension.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -