📄 kjs_navigator.cpp
字号:
MimeClassInfo *mime = new MimeClassInfo; QStringList::Iterator token = tokens.begin(); mime->type = (*token).lower(); //kdDebug(6070) << "mime->type=" << mime->type << endl; ++token; mime->suffixes = *token; ++token; mime->desc = *token; ++token; mime->plugin = plugin; mimes->append( mime ); plugin->mimes.append( mime ); } } }#else return;#endif } m_refCount++;}PluginBase::~PluginBase(){ m_refCount--; if ( m_refCount==0 ) { delete plugins; delete mimes; plugins = 0; mimes = 0; }}/*******************************************************************/const ClassInfo Plugins::info = { "PluginArray", 0, &PluginsTable, 0 };/*@begin PluginsTable 4 length Plugins_Length DontDelete|ReadOnly refresh Plugins_Refresh DontDelete|Function 0 item Plugins_Item DontDelete|Function 1 namedItem Plugins_NamedItem DontDelete|Function 1@end*/IMPLEMENT_PROTOFUNC_DOM(PluginsFunc)Value Plugins::get(ExecState *exec, const Identifier &propertyName) const{#ifdef KJS_VERBOSE kdDebug(6070) << "Plugins::get " << propertyName.qstring() << endl;#endif if ( propertyName == lengthPropertyName ) return Number(plugins->count()); // plugins[#] bool ok; unsigned int i = propertyName.toULong(&ok); if( ok && i<plugins->count() ) return Value( new Plugin( exec, plugins->at(i) ) ); // plugin[name] Value val = pluginByName( exec, propertyName.qstring() ); if (!val.isA(UndefinedType)) return val; return lookupGet<PluginsFunc,Plugins,ObjectImp>(exec,propertyName,&PluginsTable,this);}Value Plugins::pluginByName( ExecState* exec, const QString& name ) const{ for ( PluginInfo *pl = plugins->first(); pl!=0; pl = plugins->next() ) { if ( pl->name == name ) return Value( new Plugin( exec, pl ) ); } return Undefined();}Value Plugins::getValueProperty(ExecState* /*exec*/, int token) const{ kdDebug(6070) << "WARNING: Unhandled token in Plugins::getValueProperty : " << token << endl; return Undefined();}Value PluginsFunc::tryCall(ExecState *exec, Object &thisObj, const List &args){ KJS_CHECK_THIS( KJS::Plugins, thisObj ); KJS::Plugins* base = static_cast<KJS::Plugins *>(thisObj.imp()); switch( id ) { case Plugins_Refresh: return Undefined(); //## TODO case Plugins_Item: { bool ok; unsigned int i = args[0].toString(exec).toArrayIndex(&ok); if( ok && i<base->plugins->count() ) return Value( new Plugin( exec, base->plugins->at(i) ) ); return Undefined(); } case Plugins_NamedItem: { UString s = args[0].toString(exec); return base->pluginByName( exec, s.qstring() ); } default: kdDebug(6070) << "WARNING: Unhandled token in PluginsFunc::tryCall : " << id << endl; return Undefined(); }}/*******************************************************************/const ClassInfo MimeTypes::info = { "MimeTypeArray", 0, &MimeTypesTable, 0 };/*@begin MimeTypesTable 3 length MimeTypes_Length DontDelete|ReadOnly item MimeTypes_Item DontDelete|Function 1 namedItem MimeTypes_NamedItem DontDelete|Function 1@end*/IMPLEMENT_PROTOFUNC_DOM(MimeTypesFunc)Value MimeTypes::get(ExecState *exec, const Identifier &propertyName) const{#ifdef KJS_VERBOSE kdDebug(6070) << "MimeTypes::get " << propertyName.qstring() << endl;#endif if( propertyName==lengthPropertyName ) return Number( mimes->count() ); // mimeTypes[#] bool ok; unsigned int i = propertyName.toULong(&ok); if( ok && i<mimes->count() ) return Value( new MimeType( exec, mimes->at(i) ) ); // mimeTypes[name] Value val = mimeTypeByName( exec, propertyName.qstring() ); if (!val.isA(UndefinedType)) return val; return lookupGet<MimeTypesFunc,MimeTypes,ObjectImp>(exec,propertyName,&MimeTypesTable,this);}Value MimeTypes::mimeTypeByName( ExecState* exec, const QString& name ) const{ //kdDebug(6070) << "MimeTypes[" << name << "]" << endl; for ( MimeClassInfo *m = mimes->first(); m!=0; m = mimes->next() ) { if ( m->type == name ) return Value( new MimeType( exec, m ) ); } return Undefined();}Value MimeTypes::getValueProperty(ExecState* /*exec*/, int token) const{ kdDebug(6070) << "WARNING: Unhandled token in MimeTypes::getValueProperty : " << token << endl; return Undefined();}Value MimeTypesFunc::tryCall(ExecState *exec, Object &thisObj, const List &args){ KJS_CHECK_THIS( KJS::MimeTypes, thisObj ); KJS::MimeTypes* base = static_cast<KJS::MimeTypes *>(thisObj.imp()); switch( id ) { case MimeTypes_Item: { bool ok; unsigned int i = args[0].toString(exec).toArrayIndex(&ok); if( ok && i<base->mimes->count() ) return Value( new MimeType( exec, base->mimes->at(i) ) ); return Undefined(); } case MimeTypes_NamedItem: { UString s = args[0].toString(exec); return base->mimeTypeByName( exec, s.qstring() ); } default: kdDebug(6070) << "WARNING: Unhandled token in MimeTypesFunc::tryCall : " << id << endl; return Undefined(); }}/************************************************************************/const ClassInfo Plugin::info = { "Plugin", 0, &PluginTable, 0 };/*@begin PluginTable 7 name Plugin_Name DontDelete|ReadOnly filename Plugin_FileName DontDelete|ReadOnly description Plugin_Description DontDelete|ReadOnly length Plugin_Length DontDelete|ReadOnly item Plugin_Item DontDelete|Function 1 namedItem Plugin_NamedItem DontDelete|Function 1@end*/IMPLEMENT_PROTOFUNC_DOM(PluginFunc)Value Plugin::get(ExecState *exec, const Identifier &propertyName) const{#ifdef KJS_VERBOSE kdDebug(6070) << "Plugin::get " << propertyName.qstring() << endl;#endif if ( propertyName == lengthPropertyName ) return Number( m_info->mimes.count() ); // plugin[#] bool ok; unsigned int i = propertyName.toULong(&ok); //kdDebug(6070) << "Plugin::get plugin[" << i << "]" << endl; if( ok && i<m_info->mimes.count() ) { //kdDebug(6070) << "returning mimetype " << m_info->mimes.at(i)->type << endl; return Value(new MimeType(exec, m_info->mimes.at(i))); } // plugin["name"] Value val = mimeByName( exec, propertyName.qstring() ); if (!val.isA(UndefinedType)) return val; return lookupGet<PluginFunc,Plugin,ObjectImp>(exec, propertyName, &PluginTable, this );}Value Plugin::mimeByName(ExecState* exec, const QString& name) const{ for ( PluginBase::MimeClassInfo *m = m_info->mimes.first(); m != 0; m = m_info->mimes.next() ) { if ( m->type == name ) return Value(new MimeType(exec, m)); } return Undefined();}Value Plugin::getValueProperty(ExecState* /*exec*/, int token) const{ switch( token ) { case Plugin_Name: return String( m_info->name ); case Plugin_FileName: return String( m_info->file ); case Plugin_Description: return String( m_info->desc ); default: kdDebug(6070) << "WARNING: Unhandled token in Plugin::getValueProperty : " << token << endl; return Undefined(); }}Value PluginFunc::tryCall(ExecState *exec, Object &thisObj, const List &args){ KJS_CHECK_THIS( KJS::Plugin, thisObj ); KJS::Plugin* plugin = static_cast<KJS::Plugin *>(thisObj.imp()); switch( id ) { case Plugin_Item: { bool ok; unsigned int i = args[0].toString(exec).toArrayIndex(&ok); if( ok && i< plugin->pluginInfo()->mimes.count() ) return Value( new MimeType( exec, plugin->pluginInfo()->mimes.at(i) ) ); return Undefined(); } case Plugin_NamedItem: { UString s = args[0].toString(exec); return plugin->mimeByName( exec, s.qstring() ); } default: kdDebug(6070) << "WARNING: Unhandled token in PluginFunc::tryCall : " << id << endl; return Undefined(); }}/*****************************************************************************/const ClassInfo MimeType::info = { "MimeType", 0, &MimeTypesTable, 0 };/*@begin MimeTypeTable 4 description MimeType_Description DontDelete|ReadOnly enabledPlugin MimeType_EnabledPlugin DontDelete|ReadOnly suffixes MimeType_Suffixes DontDelete|ReadOnly type MimeType_Type DontDelete|ReadOnly@end*/Value MimeType::get(ExecState *exec, const Identifier &propertyName) const{#ifdef KJS_VERBOSE kdDebug(6070) << "MimeType::get " << propertyName.qstring() << endl;#endif return lookupGetValue<MimeType,ObjectImp>(exec, propertyName, &MimeTypeTable, this );}Value MimeType::getValueProperty(ExecState* exec, int token) const{ switch( token ) { case MimeType_Type: return String( m_info->type ); case MimeType_Suffixes: return String( m_info->suffixes ); case MimeType_Description: return String( m_info->desc ); case MimeType_EnabledPlugin: return Value(new Plugin(exec, m_info->plugin)); default: kdDebug(6070) << "WARNING: Unhandled token in MimeType::getValueProperty : " << token << endl; return Undefined(); }}Value NavigatorFunc::tryCall(ExecState *exec, Object &thisObj, const List &){ KJS_CHECK_THIS( KJS::Navigator, thisObj ); Navigator *nav = static_cast<Navigator *>(thisObj.imp()); // javaEnabled() return Boolean(nav->part()->javaEnabled());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -