void TestOpenDocument( void ) { Err err; DocumentInfo docInfo; OS_Init(); ReadPrefs(); SetStandardFunctions(); DeleteMetaDocument( TEST_DOCUMENT, 0 ); StrCopy( docInfo.name, TEST_DOCUMENT ); docInfo.cardNo = 0; docInfo.size = 550; docInfo.created = -1139389298; docInfo.attributes = 512; docInfo.categories = 1; docInfo.location = 0; docInfo.active = true; docInfo.timestamp = 0; docInfo.volumeRef = 0; docInfo.numRecords = 0; err = OpenDocument( &docInfo ); ASSERT_MSG( "UnitTest.pdb must be installed", err == errNone ); CloseDocument(); OS_Release(); }
OP_STATUS OpFolderListing::EndFolderListing() { // FIXME: OOM - not reported, not checked if (m_list_open) { m_url.WriteDocumentData(URL::KNormal, UNI_L("</table>\n")); } return CloseDocument(); }
void CloseTestDocument ( Char* name ) { DeleteMetaDocument( name, 0 ); CloseDocument(); OS_Release(); }
void DocRoot::OnCloseDocument() { if (bIsOpen) { gs_pCmd->ProcessAStr("\x1b"); //Ensure there are no half complete commands gs_pCmd->ProcessAStr("\x1b"); //Ensure there are no half complete commands, call more than once! //KGA : 7/5/96 : document sometimes not active ??? causes cmd to go to wrong document/window!!! if (pFirstDoc!=this) OnActivate(True); gs_pCmd->ProcessAStr("\x1b"); //Ensure there are no half complete commands, call more than once! //if (gs_pPrj->pPrjDoc) // AfxMessageBox("Are you sure you want to remove the document from the project?"); //gs_pCmd->ProcessAStr("CLOSE DOCUMENT \r"); CloseDocument(); } }
void CDocumentPreview::NewDocPreview(LPCSTR pszFileName, LPCSTR pszFriendlyName /*=NULL*/) { // Get rid of any existing preview. ErasePreview(); // Close any existing document. if (m_pDoc != NULL) { CloseDocument(); } // Open the new document. CString strName = GetGlobalPathManager()->LocatePath(pszFileName); m_pDoc = GET_PMWAPP()->OpenHiddenDocument(strName); m_fCloseDoc = TRUE; m_fForceToFront = TRUE; m_fEncloseObjects = FALSE; SetDescription(pszFileName, pszFriendlyName); SizeDocPreview(); }
OP_STATUS OperaSpeedDial::GenerateData() { RETURN_IF_ERROR(OpenDocument(Str::S_SPEED_DIAL, PrefsCollectionFiles::StyleSpeedDialFile)); // Localized strings // FIXME!! Actually turn these into localized strings OpString add_text, enter_address_text, no_thumbnail_text; RETURN_IF_ERROR(add_text.Set(UNI_L("Click to add a Web page"))); RETURN_IF_ERROR(enter_address_text.Set(UNI_L("Enter Web address here"))); RETURN_IF_ERROR(no_thumbnail_text.Set(UNI_L("Failed to generate thumbnail"))); OpString line; // Scripts RETURN_IF_ERROR(line.Append("<script type=\"text/javascript\">\n")); #if defined SPEEDDIAL_DRAGNDROP || defined SPEEDDIAL_CONTEXT_MENU RETURN_IF_ERROR(line.Append( "function mc(ev) {\n" " return {\n" " x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,\n" " y:ev.clientY + document.body.scrollTop - document.body.clientTop\n" " }\n" "}\n" )); #endif // defined SPEEDDIAL_DRAGNDROP || defined SPEEDDIAL_CONTEXT_MENU #ifdef SPEEDDIAL_DRAGNDROP RETURN_IF_ERROR(line.Append( "var dragObject, dragIndex, dragOffset;\n" "function drag(ev, obj) {\n" " document.body.onmousedown=function(){return false};\n" // Disable selection while dragging " dragIndex = parseInt(obj.id[1]);\n" " var dragSource = document.getElementsByClassName('thumbnail-cont')[dragIndex];\n" // Get the drag offset " var objPos = pos(dragSource);\n" " var mousePos = mc(ev);\n" " dragOffset = {x:mousePos.x - objPos.x, y:mousePos.y - objPos.y};\n" // Set up the drag object " dragObject = dragSource.cloneNode(true);\n" " dragObject.className = 'drag';\n" " dragObject.style.position = 'absolute';\n" " dragObject.style.margin = 0;\n" " dragObject.style.display = 'none';\n" " document.body.appendChild(dragObject);\n" "}\n" "function drop(index) {\n" " if (dragObject) {\n" " document.body.onmousedown=function(){return true};\n" // Enable text selection again " opera.swapSpeedDials(dragIndex, index);\n" " }\n" "}\n" // OnMouseMove; if we have a dragobject, move it to the mouse pointer "document.onmousemove = function(ev) {\n" " if (dragObject) {\n" " var mousePos = mc(ev)\n" " dragObject.style.left = (mousePos.x - dragOffset.x) + 'px';\n" " dragObject.style.top = (mousePos.y - dragOffset.y) + 'px';\n" " dragObject.style.display = 'block';\n" " }\n" " return true;\n" "}\n" // OnMouseUp; drop drag object "document.onmouseup = function(ev) {\n" " if (dragObject) {\n" " var mousePos = mc(ev);\n" " var sds = document.getElementsByClassName('spdial');\n" " for (var i=0; i<sds.length; i++) {\n" " var targPos = pos(sds[i]);\n" " var w = parseInt(sds[i].offsetWidth);\n" " var h = parseInt(sds[i].offsetHeight);\n" " if ((mousePos.x >= targPos.x) && (mousePos.x <= (targPos.x + w)) && (mousePos.y >= targPos.y) && (mousePos.y <= (targPos.y + h)))\n" " drop(i);\n" " }\n" " document.body.removeChild(dragObject);\n" " dragObject = null;\n" " }\n" "}\n" )); #endif #ifdef SPEEDDIAL_CONTEXT_MENU RETURN_IF_ERROR(line.Append( "var p;\n" "function hidePopup() { document.body.removeChild(p); p = null; }\n" "function popup(index, set) {\n" " var i = index;\n" " var isSet = set;\n" " this.trig = function(ev) {\n" " if (p)\n" " document.body.removeChild(p);\n" " p = document.createElement('div');\n" " p.className = 'popup';\n" " var ul = document.createElement('ul');\n" " p.appendChild(ul);\n" " var l = new Array(\n" " {title: 'Edit...', fn: function() { hidePopup(); onSetSpeedDial(i);}},\n" " {title: 'Reload', d: !isSet, fn: function() { hidePopup(); opera.reloadSpeedDial(i);}},\n" " {title: 'Reload every...', d: !isSet, fn: function() { hidePopup(); opera.setSpeedDialReloadInterval(i, 60);}},\n" " {title: 'Clear', d: !isSet, fn: function() { hidePopup(); reset(i);}}\n" " );\n" " for (var j=0;j<l.length;j++) {\n" " var li = document.createElement('li');\n" " li.innerText = l[j].title\n" " if (!l[j].d) \n" " li.onclick = l[j].fn;\n" " else\n" " li.setAttribute('grayed', '');\n" " ul.appendChild(li);\n" " }\n" " document.body.appendChild(p);\n" " var m = mc(ev);\n" " p.style.left = (m.x + p.offsetWidth >= window.innerWidth ? window.innerWidth - p.offsetWidth : m.x) + 'px';\n" " p.style.top = (m.y + p.offsetHeight >= window.innerHeight ? window.innerHeight - p.offsetHeight : m.y) + 'px';\n" " return false;\n" " }\n" "}\n" "document.onmousedown = function(ev) {\n" " var m = mc(ev);\n" " if (p && (m.x < p.offsetLeft || m.x >= (p.offsetLeft+p.offsetWidth) || m.y < p.offsetTop || m.y >= (p.offsetTop+p.offsetHeight))) {\n" " hidePopup();\n" " }\n" "}\n" )); #endif // SPEEDDIAL_CONTEXT_MENU OP_STATUS st = line.Append( "var w, h;\n" // Set size of a thumbnail object "function ss(o) {\n" " o.style.width = w + 'px';\n" " o.style.height = h + 'px';\n" "}\n" // Force layout to set correct sizes for thumbnails // FIXME! Cleanup hardcoded values "function fl() {\n" " var s = window.innerWidth <= 460;\n" " var t = document.getElementsByTagName('table')[0];\n" " w = t.offsetWidth / 3 - (s ? 6 : 44);\n" " if (w > 256) w = 256;\n" // Don't scale up " h = w*3/4;\n" " var sds = document.getElementsByClassName('spdial');\n" " for (var i = 0; i < sds.length; i++){\n" " var cont = document.getElementsByClassName('thumbnail-cont')[i]\n" " ss(cont);\n" " var thumb = document.getElementsByClassName('thumbnail')[i];\n" " ss(thumb);\n" " thumb.style.marginLeft = -w/2 + 'px';\n" " thumb.style.marginTop = (s ? 0 : -h/2) + 'px';\n" " sds[i].style.height = (h + (s ? 14 : 38)) + 'px';\n" " }\n" "}\n" // Get the absolute position of an element "function pos(obj) {\n" " var l=0, t=0;\n" " do {\n" " l+=obj.offsetLeft;\n" " t+=obj.offsetTop;\n" " } while (obj = obj.offsetParent);\n" " return {x:l, y:t};\n" "}\n" // Called from opera when a speed dial has changed "function onUpdate(index, title, url, tnUrl, loading) {\n" " var a = document.getElementById('a'+index);\n" " var u = document.getElementsByClassName('empty')[index];\n" " var sd = document.getElementsByClassName('spdial')[index];\n" " if (url == '') {\n" " u.style.display = 'block';\n" " a.style.display = 'none';\n" " document.getElementsByClassName('thumbnail-cont')[index].innerText = '';\n" " sd.onclick = 'onSetSpeedDial('+index+')';\n" #ifdef SPEEDDIAL_CONTEXT_MENU " sd.oncontextmenu = new popup(index, false).trig;\n" #endif " }\n" " else {\n" " if (loading) \n" " sd.setAttribute('loading', tnUrl ? 'tn' : 'notn');\n" " else\n" " sd.removeAttribute('loading');\n" " u.style.display = 'none';\n" " a.style.display = 'block';\n" " document.getElementsByClassName('title-small')[index].innerText = title ? title : url;\n" " document.links[index].href = url;\n" " var nn;\n" " if (tnUrl) {\n" " var nn = document.createElement('img');\n" " nn.src = tnUrl + '?' + new Date().getTime();\n" " }\n" " else {\n" " nn = document.createElement('div');\n" " nn.innerText = loading ? '' : '" ); RETURN_IF_ERROR(st); RETURN_IF_ERROR(line.Append(no_thumbnail_text)); st = line.Append("';\n" " }\n" " nn.className = 'thumbnail-cont';\n" " ss(nn);\n" " var cont = document.getElementsByClassName('thumbnail')[index];\n" " cont.innerText = '';\n" " cont.appendChild(nn);\n" " sd.onclick = '';\n" #ifdef SPEEDDIAL_CONTEXT_MENU " sd.oncontextmenu = new popup(index, true).trig;\n" #endif " }\n" "}\n" "function onSetSpeedDial(index) {\n" ); RETURN_IF_ERROR(st); RETURN_IF_ERROR(line.AppendFormat(UNI_L( " var url = prompt('Enter Web address here');\n"), enter_address_text.CStr() )); RETURN_IF_ERROR(line.Append( " if (url != undefined)\n" " opera.setSpeedDial(index, url);\n" "}\n" "function reset(index) {\n" " opera.setSpeedDial(index, '')\n" "}\n" "function onReloadSpeedDial(index) {\n" " opera.reloadSpeedDial(index);\n" "}\n" "document.onresize = fl;\n" )); // Onload event listener st = line.Append( "window.addEventListener(\n" " 'load',\n" " function()\n" " {\n" " fl();\n" " opera.connectSpeedDial(onUpdate)\n" " var sds = document.getElementsByClassName('spdial');\n" " var fs = document.getElementsByClassName('full');\n" " for(var i=0; i<sds.length; i++) {\n" #ifdef SPEEDDIAL_DRAGNDROP " fs[i].onmousedown = function(ev) {\n" " if (ev.button == 0)\n" // Left mouse button " drag(ev, this);\n" " }\n" #endif // SPEEDDIAL_DRAGNDROP #ifdef SPEEDDIAL_CONTEXT_MENU " sds[i].oncontextmenu = new popup(i, false).trig;\n" #endif // SPEEDDIAL_CONTEXT_MENU " }\n" ); RETURN_IF_ERROR(st); RETURN_IF_ERROR(line.Append( " },\n" " false);\n" "</script>\n" )); // End of scripts // HTML part RETURN_IF_ERROR(line.Append("<body><table>\n")); for (unsigned cols = 0; cols < SPEEDDIAL_COLS; cols++) { RETURN_IF_ERROR(line.Append("<tr>\n")); for (unsigned rows = 0; rows < SPEEDDIAL_ROWS; rows++) { const unsigned index = cols * SPEEDDIAL_ROWS + rows; RETURN_IF_ERROR(line.AppendFormat(UNI_L("<td class='spdial' onclick = 'onSetSpeedDial(%i)'>\n"), index)); // Unassigned RETURN_IF_ERROR( line.AppendFormat(UNI_L("<div class='empty' style='display: block'>\n<div class='index-big'>%i</div>\n<div class='text-big'>%s</div>\n</div>\n"), index + 1, add_text.CStr())); RETURN_IF_ERROR(line.AppendFormat(UNI_L("<div class='full' id='a%i' style='display: none'>\n"), index)); RETURN_IF_ERROR(line.AppendFormat(UNI_L(" <div class='index-small'>%i</div>\n"), index+1)); // The thumbnail image RETURN_IF_ERROR(line.AppendFormat(UNI_L(" <a href='dummy' class='thumbnail'><div class='thumbnail-cont'></div></a>\n"), index)); RETURN_IF_ERROR(line.AppendFormat(UNI_L(" <div class='reset' onClick='reset(%i)'></div>\n"), index)); // Preview title RETURN_IF_ERROR(line.Append(" <div class='title-small'></div>\n")); RETURN_IF_ERROR(line.Append("</div>")); RETURN_IF_ERROR(line.Append("</td>")); } RETURN_IF_ERROR(line.Append("</tr>")); } RETURN_IF_ERROR(line.Append("</table>")); RETURN_IF_ERROR(line.AppendFormat(UNI_L("<span class='btn' onclick='for (var i=0;i<%i;i++) {opera.reloadSpeedDial(i)}'>Refresh</span>"), NUM_SPEEDDIALS)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); return CloseDocument(); }
CDocumentPreview::~CDocumentPreview() { CloseDocument(); }
OP_STATUS OperaUnite::GenerateData() { #ifdef _LOCALHOST_SUPPORT_ RETURN_IF_ERROR(OpenDocument(Str::S_UNITE_TITLE, PrefsCollectionFiles::StyleWidgetsFile)); #else RETURN_IF_ERROR(OpenDocument(Str::S_UNITE_TITLE)); #endif RETURN_IF_ERROR(OpenBody()); OpString line; OpString start_app, stop_app, open_app, delete_widget, widget_properties, logged_out, creating_account, logging_in, success, log_in, create_account, log_out, cancel; #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON OpString update_widget; RETURN_IF_ERROR(JSSafeLocaleString(&update_widget, Str::S_WIDGET_UPDATE_BUTTON)); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(JSSafeLocaleString(&start_app, Str::S_WEBSERVER_START_SERVICE)); RETURN_IF_ERROR(JSSafeLocaleString(&stop_app, Str::S_WEBSERVER_STOP_SERVICE)); RETURN_IF_ERROR(JSSafeLocaleString(&open_app, Str::MI_IDM_MENU_GOTO_PUBLIC_SERVICE_PAGE)); RETURN_IF_ERROR(JSSafeLocaleString(&delete_widget, Str::S_WGTMGR_CMD_DELETE_WIDGET)); RETURN_IF_ERROR(JSSafeLocaleString(&widget_properties, Str::D_WIDGET_PROPERTIES)); RETURN_IF_ERROR(JSSafeLocaleString(&logged_out, Str::D_FEATURE_SETTINGS_LOGGED_OUT)); RETURN_IF_ERROR(JSSafeLocaleString(&creating_account, Str::D_FEATURE_SETUP_CREATING_ACCOUNT)); RETURN_IF_ERROR(JSSafeLocaleString(&logging_in, Str::D_FEATURE_SETUP_LOGGING_IN)); RETURN_IF_ERROR(JSSafeLocaleString(&success, Str::S_MINI_SYNC_SUCCESS)); RETURN_IF_ERROR(JSSafeLocaleString(&log_in, Str::D_FEATURE_SETUP_LOGIN)); RETURN_IF_ERROR(JSSafeLocaleString(&create_account, Str::D_FEATURE_SETUP_CREATE_ACCOUNT)); RETURN_IF_ERROR(JSSafeLocaleString(&log_out, Str::D_FEATURE_SETTINGS_LOGOUT)); RETURN_IF_ERROR(JSSafeLocaleString(&cancel, Str::DI_IDCANCEL)); RETURN_IF_ERROR(line.Append( "\n" "<script type='text/javascript'>\n" " window.addEventListener('load', init, false);\n" " function init(){\n" " if(opera && opera.uniteApplicationManager){\n" " var wmgr = opera.uniteApplicationManager;\n" " var wdgts = wmgr.widgets;\n" "\n" " var list = document.getElementById('gadget_list');\n" " var olay = document.getElementById('overlay');\n" " var info = document.getElementById('info');\n" " var btn_open = document.getElementById('btn_open');\n" " var btn_close = document.getElementById('btn_close');\n" " var btn_go = document.getElementById('btn_go');\n" " var btn_del = document.getElementById('btn_del');\n" " var btn_info = document.getElementById('btn_info');\n")); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " var btn_update = document.getElementById('btn_update');\n")); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( "\n" " btn_open.addEventListener('click', hndl_click, false);\n" " btn_close.addEventListener('click', hndl_click, false);\n" " btn_go.addEventListener('click', hndl_click, false);\n" " btn_del.addEventListener('click', hndl_click, false);\n" " btn_info.addEventListener('click', hndl_click, false);\n")); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " btn_update.addEventListener('click', hndl_click, false);\n")); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " list.addEventListener('keyup', hndl_keyup, false);\n" "\n" " list_gadgets();\n" " }\n" " function list_gadgets(){\n" " list.innerHTML = ''; //remove the option elements already there.\n" " list.style.height = '' + parseInt(window.innerHeight * 0.3) + 'px';\n" " for (var i = 0; wdgts[i]; ++i){\n" " var item = document.createElement('option');\n" " witem = wdgts[i];\n" " item.id = 'wdgt_' + i;\n" " item.value = i;\n" " item.appendChild(document.createTextNode(witem.name));\n" " list.appendChild(item);\n" " }\n" " }\n" "\n" " function hndl_click(evt){\n" " if (evt.target && evt.target.nodeType == 1){\n" " var el_id = evt.target.id;\n" " var ar_act = new Array();\n" " for (var i = 0; list.options[i]; ++i){\n" " var opt = list.options[i];\n" " if (opt.selected){\n" " ar_act.push(opt.value);\n" " }\n" " }\n" " var action;\n" " switch (el_id){\n" " case 'btn_open':\n" " action = 'run';\n" " break;\n" " case 'btn_close':\n" " action = 'kill';\n" " break;\n" " case 'btn_go':\n" " action = 'open';\n" " break;\n" " case 'btn_del':\n" " action = 'uninstall';\n" " break;\n" " case 'btn_info':\n" " action = 'info';\n" " break;\n")); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " case 'btn_update':\n" " action = 'checkForUpdate';\n" " break;\n")); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " }\n" " if (action != 'info' && action != 'open'){\n" " for (var i=ar_act.length - 1; ar_act[i]; --i){\n" " eval ('wmgr.' + action + '(wdgts[' + ar_act[i] + '])');\n" " }\n" " if (action == 'uninstall'){\n" " list_gadgets();\n" " list.selectedIndex = !ar_act[0] ? 0 : (ar_act[0] - 1);\n" " }\n" " }else if (action == 'info'){\n" " // show info box for a single widget only\n" " show_gadget_info(ar_act[0]);\n" " }else if (action == 'open'){\n" " for (var i=ar_act.length - 1; ar_act[i]; --i){\n" " if (opera.uniteDeviceManager.range == 3)" " window.open('http://' + opera.uniteDeviceManager.hostName + '/' + wdgts[ar_act[i]].servicePath + '/');\n" " else" " window.open('http://' + opera.uniteDeviceManager.hostName + ':' + opera.uniteDeviceManager.port + '/' + wdgts[ar_act[i]].servicePath + '/');\n" " }\n" " }\n" " }\n" " }\n" "\n" " function hndl_keyup(e)\n" " {\n" " if (e.keyCode == 46)\n" " {\n" " btn_del.click();\n" " }\n" " else if (e.keyCode == 13)\n" " {\n" " // open the widget\n" " // TODO: also don't submit the form\n" " btn_open.click();\n" " }\n" " }\n" "\n" " function show_gadget_info(idx){\n" " var wdgt = wdgts[idx];\n" " if (!wdgt) return;\n" " info.innerHTML = '';\n" " var btnc = document.createElement('input');\n" " btnc.type = 'button';\n" " btnc.value = 'x';\n" " btnc.addEventListener('click', function () {olay.style.display = 'none';}, false);\n" " document.getElementById('dtitle').innerHTML = '' ;\n" " document.getElementById('dtitle').appendChild(btnc);\n" " var tbl = document.createElement('table');\n" " var trow = tbl.appendChild(document.createElement('tr'));\n" " for (x in wdgt){\n" " var item = document.createElement('tr');\n" " item.appendChild(document.createElement('th')).appendChild(document.createTextNode(x));\n" " item.appendChild(document.createElement('td')).appendChild(document.createTextNode(wdgt[x]));\n" " tbl.appendChild(item);\n" " }\n" " info.appendChild(tbl);\n" " olay.style.display = 'block';\n" " }\n" " }\n" "</script>\n" "<div id='header'><h1>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::M_WEBSERVER_MANAGE_SERVICES)); RETURN_IF_ERROR(line.Append("</h1></div>\n" "<div id='content'>\n" " <form>\n" " <div id='btn_wrapper'>\n" " <input id='btn_open' value='")); RETURN_IF_ERROR(line.Append(start_app)); RETURN_IF_ERROR(line.Append("' type='button'>\n" " <input id='btn_close' value='")); RETURN_IF_ERROR(line.Append(stop_app)); RETURN_IF_ERROR(line.Append("' type='button'>\n" " <input id='btn_go' value='")); RETURN_IF_ERROR(line.Append(open_app)); RETURN_IF_ERROR(line.Append("' type='button'>\n" " <input id='btn_del' value='")); RETURN_IF_ERROR(line.Append(delete_widget)); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append("' type='button'>\n" " <input id='btn_update' value='")); RETURN_IF_ERROR(line.Append(update_widget)); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append("' type='button'>\n" " <input id='btn_info' value='")); RETURN_IF_ERROR(line.Append(widget_properties)); RETURN_IF_ERROR(line.Append("' type='button'>\n" " </div>\n" " <fieldset>\n" " <legend>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::M_VIEW_HOTLIST_MENU_UNITE_SERVICES)); RETURN_IF_ERROR(line.Append("</legend>\n" " <select multiple='multiple' id='gadget_list'>\n" " <option>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::D_GENERIC_ERROR)); RETURN_IF_ERROR(line.Append("</option>\n" " </select>\n" " </fieldset>\n" " </form>\n" "</div>\n" "<h2>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_MANAGE_ACCOUNTS)); RETURN_IF_ERROR(line.Append("</h2>\n" "<div id='content'>\n" " <script type='text/javascript'>\n" " window.addEventListener('load', initialize, false);\n" " var account = opera.operaAccountManager;\n" " var currentOp = '';\n" " function initialize() {\n" " account.onauthenticationchange = onAuthenticationChange;\n" " onAuthenticationChange();\n" " }\n" " function onAuthenticationChange() {\n" " document.login.username.value = account.username;\n" " document.login.savePassword.checked = account.rememberMe;\n" " if (account.authState == 0)\n" " {\n" " document.login.username.disabled = false;\n" " document.login.password.disabled = false;\n" " document.login.email.disabled = false;\n" " document.login.savePassword.disabled = false;\n" " document.login.login.disabled = false;\n" " document.login.create.disabled = false;\n" " document.login.logout.disabled = true;\n" " document.login.abort.disabled = true;\n" " if (currentOp != 'Login' && currentOp != 'Create account')\n" " document.login.password.value = '';\n" " document.getElementById('status').innerHTML = '[")); RETURN_IF_ERROR(line.Append(logged_out)); RETURN_IF_ERROR(line.Append("]';\n" " }\n" " else if (account.authState == 1)\n" " {\n" " document.login.username.disabled = true;\n" " document.login.password.disabled = true;\n" " document.login.email.disabled = true;\n" " document.login.savePassword.disabled = true;\n" " document.login.login.disabled = true;\n" " document.login.create.disabled = true;\n" " document.login.logout.disabled = true;\n" " document.login.abort.disabled = false;\n" " if (currentOp == 'Create account')\n" " document.getElementById('status').innerHTML = '[")); RETURN_IF_ERROR(line.Append(creating_account)); RETURN_IF_ERROR(line.Append("]';\n" " else\n" " document.getElementById('status').innerHTML = '[")); RETURN_IF_ERROR(line.Append(logging_in)); RETURN_IF_ERROR(line.Append("]';\n" " }\n" " else if (account.authState == 2)\n" " {\n" " document.login.username.disabled = true;\n" " document.login.password.disabled = true;\n" " document.login.email.disabled = true;\n" " document.login.savePassword.disabled = true;\n" " document.login.login.disabled = true;\n" " document.login.create.disabled = true;\n" " document.login.logout.disabled = false;\n" " document.login.abort.disabled = true;\n" " if (document.login.password.value == '')\n" " document.login.password.value = '********';\n" " document.getElementById('status').innerHTML = '[")); RETURN_IF_ERROR(line.Append(success)); RETURN_IF_ERROR(line.Append("]';\n" " }\n" " if (currentOp == '' || account.authState == 1)\n" " document.getElementById('message').innerHTML = '';\n" " else if (account.authStatus == account.OK)\n" " document.getElementById('message').innerHTML = currentOp+': ")); RETURN_IF_ERROR(line.Append(success)); RETURN_IF_ERROR(line.Append("';\n" " else\n" " document.getElementById('message').innerHTML = currentOp+': '+account.authStatus;\n" " if (account.authState != 1)\n" " currentOp = '';\n" " }\n" " function doLogin() {\n" " var username = document.login.username.value;\n" " var password = document.login.password.value;\n" " var savePassword = document.login.savePassword.checked;\n" " currentOp = 'Login';\n" " account.login(username, password, savePassword);\n" " }\n" " function doCreateAccount() {\n" " var username = document.login.username.value;\n" " var password = document.login.password.value;\n" " var email = document.login.email.value;\n" " var savePassword = document.login.savePassword.checked;\n" " currentOp = 'Create account';\n" " account.createAccount(username,password,email,savePassword);\n" " }\n" " function doLogout() {\n" " currentOp = 'Logout';\n" " document.login.password.value = '';\n" " account.logout();\n" " }\n" " function doAbort() {\n" " account.abort();\n" " }\n" " </script>\n" " <form name='login'>\n" " <p><label>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::D_FEATURE_USERNAME)); RETURN_IF_ERROR(line.Append(": <input type='text' name='username';'></label>\n" " <label>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::D_FEATURE_PASSWORD)); RETURN_IF_ERROR(line.Append(": <input type='password' name='password'></label></p>\n" " <p><label>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::D_FEATURE_EMAIL)); RETURN_IF_ERROR(line.Append(": <input type='text' name='email'></label>\n" " <label>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_REMEMBER_LOGIN)); RETURN_IF_ERROR(line.Append(": <input type='checkbox' name='savePassword' checked='true'></label></p>\n" " <p><input type='button' name='login' value='")); RETURN_IF_ERROR(line.Append(log_in)); RETURN_IF_ERROR(line.Append("' onclick='doLogin();'>\n" " <input type='button' name='create' value='")); RETURN_IF_ERROR(line.Append(create_account)); RETURN_IF_ERROR(line.Append("' onclick='doCreateAccount();'>\n" " <input type='button' name='logout' value='")); RETURN_IF_ERROR(line.Append(log_out)); RETURN_IF_ERROR(line.Append("' onclick='doLogout();'>\n" " <input type='button' name='abort' value='")); RETURN_IF_ERROR(line.Append(cancel)); RETURN_IF_ERROR(line.Append("' onclick = 'doAbort();'></p>\n" " <p><span id='status'></span> <span id='message'></span></p>\n" " </form>\n" "</div>\n" "<div id='footer'>\n" " <a href='http://unite.opera.com/applications/'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::M_WEBSERVER_NEW_SERVICE)); RETURN_IF_ERROR(line.Append("</a>\n" "</div>\n" "<div id='overlay'><div id='dwrapper'><div id='dtitle'></div><div id='info'></div></div></div>\n" )); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); RETURN_IF_ERROR(CloseDocument()); return OpStatus::OK; }
/* Perform action for specified select type */ void DoSelectTypeAction ( SelectType selection /* selection type */ ) { if ( IsMainFormWinActive() || IsFullscreenformActive() || FrmGetActiveFormID() == frmLibrary ) { if ( IsMainFormWinActive() && selection != SELECT_TOGGLE_AUTOSCROLL && selection != SELECT_INCREASE_AUTOSCROLL && selection != SELECT_DECREASE_AUTOSCROLL && selection != SELECT_FULL_PAGE_UP && selection != SELECT_FULL_PAGE_DOWN && selection != SELECT_HALF_PAGE_UP && selection != SELECT_HALF_PAGE_DOWN && selection != SELECT_ONE_LINE_UP && selection != SELECT_ONE_LINE_DOWN ) { DoAutoscrollToggle( AUTOSCROLL_OFF ); } switch ( selection ) { case SELECT_NONE: break; #ifdef SUPPORT_WORD_LOOKUP #ifdef SUPPORT_PPI case SELECT_WORD_LOOKUP_PPI: isSelectWordTapMode = ! isSelectWordTapMode; selectedWordAction = SELECT_WORD_PPI; ShowSelectWordTapIcon(); break; #endif #ifdef SUPPORT_ANNOTATION case SELECT_WORD_LOOKUP_ANNOTATE: isSelectWordTapMode = ! isSelectWordTapMode; selectedWordAction = SELECT_WORD_ANNOTATE; ShowSelectWordTapIcon(); break; #endif case SELECT_WORD_LOOKUP_SEARCH_FORM: isSelectWordTapMode = ! isSelectWordTapMode; selectedWordAction = SELECT_WORD_SEARCH_FORM; ShowSelectWordTapIcon(); break; case SELECT_WORD_LOOKUP_TO_CLIPBOARD: isSelectWordTapMode = ! isSelectWordTapMode; selectedWordAction = SELECT_WORD_TO_CLIPBOARD; ShowSelectWordTapIcon(); break; #endif case SELECT_SAVE_POSITION: AddToHistory( GetCurrentRecordId() ); break; case SELECT_BRIGHTNESS_ADJUST: EmitKey( vchrBrightness, commandKeyMask ); break; case SELECT_TOGGLE_BACKLIGHT: EmitKey( vchrBacklight, commandKeyMask ); break; case SELECT_CONTRAST_ADJUST: EmitKey( vchrContrast, commandKeyMask ); break; case SELECT_ONE_LINE_UP: DoPageMove( GetDefaultMainStyleHeight() ); break; case SELECT_ONE_LINE_DOWN: DoPageMove( -GetDefaultMainStyleHeight() ); break; case SELECT_FULL_PAGE_UP: if ( Prefs()->autoscrollEnabled && Prefs()->autoscrollDir == AUTOSCROLL_UP ) DoAutoscrollIncr(); else if ( Prefs()->autoscrollEnabled ) DoAutoscrollDecr(); else if ( Prefs()->pageControlsLink && OnFirstScreen() && NO_RECORD == GetSequentialRecordId( DIRECTION_UP ) ) GoToFirstAnchor(); else DoPageMove( RotGetScrollValue() ); break; case SELECT_HALF_PAGE_UP: if ( Prefs()->autoscrollEnabled && Prefs()->autoscrollDir == AUTOSCROLL_UP ) DoAutoscrollIncr(); else if ( Prefs()->autoscrollEnabled ) DoAutoscrollDecr(); else if ( Prefs()->pageControlsLink && OnFirstScreen() && NO_RECORD == GetSequentialRecordId( DIRECTION_UP ) ) GoToFirstAnchor(); else DoPageMove( RotGetScrollValue() / 2 ); break; case SELECT_FULL_PAGE_DOWN: if ( Prefs()->autoscrollEnabled && Prefs()->autoscrollDir == AUTOSCROLL_UP ) DoAutoscrollDecr(); else if ( Prefs()->autoscrollEnabled ) DoAutoscrollIncr(); else if ( Prefs()->pageControlsLink && OnLastScreen() ) GoToLastAnchor(); else DoPageMove( -RotGetScrollValue() ); break; case SELECT_HALF_PAGE_DOWN: if ( Prefs()->autoscrollEnabled && Prefs()->autoscrollDir == AUTOSCROLL_UP ) DoAutoscrollDecr(); else if ( Prefs()->autoscrollEnabled ) DoAutoscrollIncr(); else if ( Prefs()->pageControlsLink && OnLastScreen() ) GoToLastAnchor(); else DoPageMove( -RotGetScrollValue() / 2 ); break; case SELECT_GO_BACK: if ( IsFullscreenformActive() ) FsDoControlAction( -( LEFTCONTROL + 1 ) ); else DoControlAction( -( LEFTCONTROL + 1 ) ); break; case SELECT_GO_FORWARD: if ( IsFullscreenformActive() ) FsDoControlAction( -( RIGHTCONTROL + 1 ) ); else DoControlAction( -( RIGHTCONTROL + 1 ) ); break; case SELECT_GO_HOME: if ( IsFullscreenformActive() ) FsDoControlAction( -( HOMECONTROL + 1 ) ); else DoControlAction( -( HOMECONTROL + 1 ) ); break; case SELECT_GO_TO_TOP: if ( IsFullscreenformActive() ) FsAdjustVerticalOffset( FULLSCREEN_TOP ); else GotoLocation( TOP ); break; case SELECT_GO_TO_BOTTOM: if ( IsFullscreenformActive() ) FsAdjustVerticalOffset( FULLSCREEN_BOTTOM ); else GotoLocation( BOTTOM ); break; case SELECT_FIND: FrmPopupForm( frmSearch ); break; case SELECT_FIND_AGAIN: SearchAgain(); break; case SELECT_ADD_BOOKMARK: DoAddBookmark(); break; case SELECT_VIEW_BOOKMARKS: FrmPopupForm( frmBookmarks ); break; case SELECT_OPEN_LIBRARY: CloseDocument(); FrmGotoForm( GetValidForm( frmLibrary ) ); break; case SELECT_DETAILS: FrmPopupForm( frmDetails ); break; case SELECT_PREFS: FrmGotoForm( frmPrefs ); break; case SELECT_BUTTON_ACTION: PrefsButtonShowFirst(); FrmGotoForm( frmPrefs ); break; case SELECT_TAP_ACTION: PrefsControlShowFirst(); FrmGotoForm( frmPrefs ); break; case SELECT_GESTURE_ACTION: PrefsGestureShowFirst(); FrmGotoForm( frmPrefs ); break; case SELECT_TOGGLE_AUTOSCROLL: DoAutoscrollToggle( AUTOSCROLL_TOGGLE ); break; case SELECT_INCREASE_AUTOSCROLL: DoAutoscrollIncr(); break; case SELECT_DECREASE_AUTOSCROLL: DoAutoscrollDecr(); break; case SELECT_NEXT_ANCHOR: HandleNextControl(); break; case SELECT_PREV_ANCHOR: HandlePrevControl(); break; case SELECT_GO_TO_LINK: if ( IsFullscreenformActive() ) { if ( 0 < actualAnchor ) FsDoControlAction( actualAnchor ); } else { DoControlAction( actualAnchor ); } break; case SELECT_COPY_TO_MEMO: DoHardcopy(); break; case SELECT_DELETE_DOCUMENT: DoDeleteDocument(); break; case SELECT_FONT: PrefsFontShowFirst(); FrmGotoForm( frmPrefs ); break; case SELECT_COMMAND_STROKE: EmitKey( vchrCommand, commandKeyMask ); break; case SELECT_MENU: EmitKey( vchrMenu, commandKeyMask ); break; #ifdef HAVE_ROTATE case SELECT_ROTATE_LEFT: { RotateType angle; angle = Prefs()->rotate; switch ( angle ) { case ROTATE_ZERO: angle = ROTATE_PLUS90; break; case ROTATE_PLUS90: angle = ROTATE_MINUS90; break; case ROTATE_MINUS90: angle = ROTATE_ZERO; } if ( Prefs()->individualDocumentLayout ) GetHistoryPtr()->rotate = angle; else Prefs()->rotate = angle; FrmUpdateForm( Prefs()->lastForm, frmRedrawUpdateCode ); break; } case SELECT_ROTATE_RIGHT: { RotateType angle; angle = Prefs()->rotate; switch ( angle ) { case ROTATE_PLUS90: angle = ROTATE_ZERO; break; case ROTATE_MINUS90: angle = ROTATE_PLUS90; break; case ROTATE_ZERO: angle = ROTATE_MINUS90; break; } if ( Prefs()->individualDocumentLayout ) GetHistoryPtr()->rotate = angle; else Prefs()->rotate = angle; FrmUpdateForm( Prefs()->lastForm, frmRedrawUpdateCode ); break; } #endif case SELECT_TOGGLE_TOOLBAR: if ( ! IsFormMain( Prefs()->lastForm ) ) break; if ( Prefs()->toolbar != TOOLBAR_NONE ) { Prefs()->savedToolbar = Prefs()->toolbar; Prefs()->toolbar = TOOLBAR_NONE; } else { if ( Prefs()->savedToolbar == TOOLBAR_NONE ) Prefs()->toolbar = TOOLBAR_TOP; else Prefs()->toolbar = Prefs()->savedToolbar; } #ifdef HAVE_SILKSCREEN if ( GetDIAState() == DIA_STATE_NO_STATUS_BAR && Prefs()->toolbar != TOOLBAR_NONE ) SetDIAState( Prefs()->savedSilkscreen ); #endif FrmUpdateForm( Prefs()->lastForm, frmRedrawUpdateCode ); break; case SELECT_TOGGLE_FULLSCREEN: { UInt16 newToolbarState; UInt16 newScrollbarState; DIAStateType newDIAState; if ( Prefs()->toolbar == TOOLBAR_NONE && Prefs()->scrollbar == SCROLLBAR_NONE ) { /* From fullscreen to non-fullscreen */ if ( Prefs()->savedToolbar == TOOLBAR_NONE && Prefs()->savedScrollbar == SCROLLBAR_NONE ) { Prefs()->savedToolbar = TOOLBAR_TOP; Prefs()->savedScrollbar = SCROLLBAR_RIGHT; } if ( Prefs()->savedSilkscreen == DIA_STATE_NO_STATUS_BAR ) { Prefs()->savedSilkscreen = DIA_STATE_MIN; } newToolbarState = Prefs()->savedToolbar; newScrollbarState = Prefs()->savedScrollbar; newDIAState = Prefs()->savedSilkscreen; } else { /* From non-fullscreen to fullscreen */ newToolbarState = TOOLBAR_NONE; newScrollbarState = SCROLLBAR_NONE; newDIAState = DIA_STATE_NO_STATUS_BAR; } Prefs()->savedToolbar = Prefs()->toolbar; Prefs()->savedScrollbar = Prefs()->scrollbar; Prefs()->savedSilkscreen = GetDIAState(); Prefs()->toolbar = newToolbarState; Prefs()->scrollbar = newScrollbarState; SetDIAState( newDIAState ); FrmUpdateForm( Prefs()->lastForm, frmRedrawUpdateCode ); break; } default: break; } } }
bool MobiBookReader::OpenDocument(const string &_strFilename) { DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() Start", __FUNCTION__); if (m_pBook) { CloseDocument(); } m_strBookPath = _strFilename; DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() DKM_OpenDocument %s", __FUNCTION__, m_strBookPath.c_str()); DK_WCHAR *wsFilePath = EncodingUtil::CharToWChar(m_strBookPath.c_str()); if (NULL == wsFilePath) { DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() CharToWChar Error", __FUNCTION__); return false; } m_pBook = (IDKMBook *)DKM_OpenDocument(wsFilePath, NULL); DK_FREE(wsFilePath); if (NULL == m_pBook) { DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() DKM_OpenDocument fail", __FUNCTION__); return false; } #ifdef KINDLE_FOR_TOUCH m_pBookTextController = new SelectedControler(); #else m_pBookTextController = new CursorControler(); #endif if (NULL == m_pBookTextController) { DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() Get CursorControler Fail", __FUNCTION__); } DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() Initialize", __FUNCTION__); if (DK_FAILED(m_pBook->Initialize())) { DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() Initialize fail", __FUNCTION__); CloseDocument(); return false; } DK_ARGBCOLOR tTextColor; m_pBook->SetTextColor(tTextColor); DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() GetMainFileLength", __FUNCTION__); m_uFileLength = m_pBook->GetMainFileLength(); m_lLogicPageCount = (long)(m_uFileLength / MAX_FILE_LENGTH_PER_PAGE); DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() m_uFileLength %d", __FUNCTION__, m_uFileLength); m_uNewPagePosition = m_pBook->GetTextOffset(); m_ePositionType = IDKMBook::LOCATION_PAGE; DebugPrintf(DLC_ZHAIGH, "MobiBookReader::%s() Finish", __FUNCTION__); PageTable pageTableData; pageTableData.pageCount = GetTotalPageNumber(); CPageTable pageTable(m_strBookPath, DK_GetKernelVersion(), -1); pageTableData.strMD5 = SystemSettingInfo::GetInstance()->GetDuokanBookMD5(-1, -1); pageTable.SavePageTable(pageTableData); return true; };
PDFDocumentTagger::~PDFDocumentTagger() { LOG_WS_FUNCTION_SCOPE(); CloseDocument(); }
OP_STATUS OpCrossNetworkError::GenerateData() { OpString ignore, always_ignore, line; #ifdef _LOCALHOST_SUPPORT_ RETURN_IF_ERROR(OpenDocument(Str::S_MSG_CROSS_NETWORK_TITLE, PrefsCollectionFiles::StyleErrorFile)); #else RETURN_IF_ERROR(OpenDocument(Str::S_MSG_CROSS_NETWORK_TITLE)); #endif switch (m_error) { case Str::S_MSG_CROSS_NETWORK_INTERNET_INTRANET: RETURN_IF_ERROR(g_languageManager->GetString(Str::S_MSG_CROSS_NETWORK_INTERNET_INTRANET_CONTINUE, always_ignore)); break; case Str::S_MSG_CROSS_NETWORK_INTERNET_LOCALHOST: RETURN_IF_ERROR(g_languageManager->GetString(Str::S_MSG_CROSS_NETWORK_INTERNET_LOCALHOST_CONTINUE, always_ignore)); break; case Str::S_MSG_CROSS_NETWORK_INTRANET_LOCALHOST: RETURN_IF_ERROR(g_languageManager->GetString(Str::S_MSG_CROSS_NETWORK_INTRANET_LOCALHOST_CONTINUE, always_ignore)); break; default: OP_ASSERT(FALSE); } RETURN_IF_ERROR(OpenBody(Str::S_MSG_WARNING, UNI_L("cross"))); OpString ref_url_name; RETURN_IF_ERROR(m_ref_url.GetAttribute(URL::KUniName, ref_url_name)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<h2>"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, ref_url_name)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</h2>\n<p>"))); RETURN_IF_ERROR(OpGeneratedDocument::AppendLocaleString(&line, m_error)); RETURN_IF_ERROR(line.Append("</p>\n<p>")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_MSG_CONTINUE, ignore)); RETURN_IF_ERROR(line.Set("<a href=\"opera:proceed\" title=\"")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, ref_url_name)); RETURN_IF_ERROR(line.Set("\">")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, ignore.CStr())); RETURN_IF_ERROR(line.Set("</a></p>\n")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); #ifdef PREFS_HOSTOVERRIDE //this piece needs to be ifdefed because it adds the link that sets the preference, per domain RETURN_IF_ERROR(line.Set("<p><small><a href=\"opera:proceed/override\" title=\"")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, ref_url_name)); RETURN_IF_ERROR(line.Set("\">")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, always_ignore.CStr())); RETURN_IF_ERROR(line.Set("</a></small></p>\n")); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); #endif // PREFS_HOSTOVERRIDE RETURN_IF_ERROR(GeneratedByOpera()); return CloseDocument(); }
void TestWSChangeInterface::tearDown() { CloseDocument(); }
void FB_Frame::OnClose( wxCommandEvent& event ) { CloseDocument(); }
OP_STATUS OperaConfig::GenerateData() { // Check if opera:config support is disabled if (!g_pccore->GetIntegerPref(PrefsCollectionCore::OperaConfigEnabled)) return OpStatus::ERR_NOT_SUPPORTED; // If running in kiosk mode and opera:config is not disabled, at least // prohibit the user from changing anything. #ifdef _KIOSK_MANAGER_ BOOL disable_settings = KioskManager::GetInstance()->GetEnabled(); #else static const BOOL disable_settings = FALSE; #endif unsigned int len; OP_STATUS rc; TRAP_AND_RETURN_VALUE_IF_ERROR(rc, m_settings = g_prefsManager->GetPreferencesL(TRUE, len), rc); OpString line; // Set up document and create the HEAD section #ifdef _LOCALHOST_SUPPORT_ OpenDocument(Str::S_CONFIG_TITLE, PrefsCollectionFiles::StyleConfigFile); #else OpenDocument(Str::S_CONFIG_TITLE); #endif // Add the script magic // Author: Tarquin Wilton-Jones OpString settings_saved, no_settings_saved, need_restart; RETURN_IF_ERROR(JSSafeLocaleString(&settings_saved, Str::S_SETTINGS_SAVED)); RETURN_IF_ERROR(JSSafeLocaleString(&no_settings_saved, Str::S_NO_SETTINGS_SAVED)); RETURN_IF_ERROR(JSSafeLocaleString(&need_restart, Str::S_CONFIG_RESTART)); #ifndef USE_MINIMAL_OPERA_CONFIG OpString no_information; RETURN_IF_ERROR(JSSafeLocaleString(&no_information, Str::S_CONFIG_NO_INFORMATION)); #endif line.Append(" <script type=\"text/javascript\">\n" /* Reset a preference to default. * Parameters: * t = The button pressed, i = id for the fieldset */ "function d(t,n)\n" "{\n" " var f=document.getElementById('s'+n);\n" " var s=f.getElementsByTagName('legend')[0].firstChild.nodeValue;\n" " var k=t.parentNode.parentNode.getElementsByTagName('label')[0].firstChild.nodeValue;\n" " var i=t.parentNode.getElementsByTagName('input')[0];\n" " if(i.type=='checkbox')\n" " {\n" " i.checked=(opera.getPreferenceDefault(s,k)=='1');\n" " }\n" " else if(i.type=='file')\n" " {\n" " i.value=\"\\\"\"+opera.getPreferenceDefault(s,k)+\"\\\"\";\n" " }\n" " else\n" " {\n" " i.value=opera.getPreferenceDefault(s,k);\n" " }\n" "}\n" /* Submit or reset a fieldset. * Parameters: * t = The button pressed, a = action code * Actions: * 0 = reset, 1 = save */ "function o(t,a)\n" "{\n" #ifdef _KIOSK_MANAGER_ ); if (!disable_settings) { line.Append( #endif " var f=t.parentNode.parentNode;\n" " var s=f.getElementsByTagName('legend')[0].firstChild.nodeValue;\n" " var i=f.getElementsByTagName('input');\n" " var isd=f.className.match(/\\bdirty\\b/);\n" " for(var n=0,m,us='';m=i[n];n++)\n" " {\n" " var k=m.parentNode.parentNode.getElementsByTagName('label')[0].firstChild.nodeValue;\n" " if(a)\n" " {\n" " var v=(m.type=='checkbox')?(m.checked?'1':'0'):m.value;\n" " if((!isd||(m.parentNode.parentNode.className=='wasmatch'))&&(v!=opera.getPreference(s,k))" "&&(((m.type=='file')&&!m.hasAttribute('required'))||m.checkValidity()))\n" " {\n" " opera.setPreference(s,k,v);\n" " us+='\\n'+k;\n" " }\n" " }\n" " else\n" " {\n" " if(m.type=='checkbox')\n" " {\n" " m.checked=(opera.getPreference(s,k)!='0');\n" " }\n" " else\n" " {\n" " m.value=opera.getPreference(s,k);\n" " }\n" " }\n" " }\n" " if(a)\n" " {\n" " if(us!='')\n" " {\n" " opera.commitPreferences();\n" " alert(\""); line.Append( settings_saved); line.Append( "\\n\"+us+\"\\n\\n"); line.Append( need_restart); line.Append( "\");\n" " }\n" " else\n" " {\n" " alert(s+\"\\n"); line.Append( no_settings_saved); line.Append( "\");\n" " }\n" " }\n" #ifdef _KIOSK_MANAGER_ ); } line.Append( #endif "}\n" /* Magic for making stuff appear or disappear */ "window.addEventListener(\n" " 'load',\n" " function()\n" " {\n" " var il={};\n" " document.getElementById('showall').parentNode.className='hasscript';\n" " var al=document.getElementsByTagName('legend');\n" " for(var i=0,j;j=al[i];i++)\n" " {\n" " j.parentNode.className='notexpanded';\n" " il[j.firstChild.nodeValue.replace(/\\s+/g,'').toLowerCase()]=j;\n" " j.addEventListener('click',function()\n" " {\n" " if(this.parentNode.anyhits&&!this.parentNode.className.match(/\\bdirty\\b/))\n" " {\n" " this.parentNode.className='dirty expanded';\n" " return;\n" " }\n" " this.parentNode.className=(this.parentNode.className=='expanded')?'notexpanded':'expanded';\n" " document.getElementById('showall').getElementsByTagName('input')[0].checked=false;\n" " window.chkbxtck=false;\n" " },false);\n" " }\n" " var tb=document.getElementById('showall').getElementsByTagName('input')[0];\n" " tb.addEventListener('click',function()\n" " {\n" " window.chkbxtck=this.checked;\n" " var sf=document.getElementById('searchbox').getElementsByTagName('input')[0];\n" " var flds=document.getElementsByTagName('fieldset');\n" " sf.value=sf.defaultValue;\n" " for(var i=0,j;j=flds[i];i++)\n" " {\n" " j.className=this.checked?'expanded':'notexpanded';\n" " j.anyhits=false;\n" " }\n" " },false);\n" " var sf=document.getElementById('searchbox').getElementsByTagName('input')[0];\n" " sf.addEventListener('focus',function()\n" " {\n" " if(this.value==this.defaultValue)\n" " {\n" " this.value='';\n" " }\n" " },false);\n" " sf.addEventListener('blur',function()\n" " {\n" " if(!this.value)\n" " {\n" " this.value=this.defaultValue;\n" " }\n" " },false);\n" // Perform the actual search " function s(e)\n" " {\n" " if((e.type=='keyup')&&(this!=kwd))\n" " {\n" " return;\n" " }\n" " var tc=document.getElementById('showall').getElementsByTagName('input')[0];\n" " if((e.type=='change')&&tc.checked&&!window.chkbxtck)\n" " {\n" " return;\n" " }\n" " window.chkbxtck=false;\n" " tc.checked=false;\n" " tc.disabled=true;\n" " var flds=document.getElementsByTagName('fieldset');\n" " var lc=this.value.toLowerCase();\n" " for(var i=0,j,k=false;j=flds[i];i++)\n" " {\n" " j.anyhits=false;\n" " if(lc&&(j.getElementsByTagName('legend')[0].firstChild.nodeValue.toLowerCase().indexOf(lc)+1))\n" " {\n" " j.anyhits=true;\n" " }\n" " var rows=j.getElementsByTagName('tr');\n" " for(var n=0,m;m=rows[n];n++)\n" " {\n" " var val1=m.cells[0].firstChild.firstChild.nodeValue+'\\n' +\n" " m.cells[1].getElementsByTagName('input')[0].value;\n" " if(lc&&(val1.toLowerCase().indexOf(lc)+1))\n" " {\n" " if(!m.className||m.className=='match')\n" " {\n" " m.className='wasmatch';\n" " }\n" " j.anyhits=true;\n" " }\n" " else\n" " {\n" " if(m.className)\n" " {\n" " m.className='';\n" " }\n" " }\n" " }\n" " if(j.anyhits)\n" " {\n" " k=true;\n" " }\n" " var nv=lc?(j.anyhits?'dirty expanded':'dirty'):'notexpanded';\n" " if(nv!=j.className)\n" " {\n" " j.className=nv;\n" " }\n" " if(!lc)\n" " {\n" " j.anyhits = false;\n" " }\n" " }\n" " document.getElementById('nohits').className=(k||!lc)?'':'nonefound';\n" " tc.disabled=false;\n" " }\n" " var kwd;\n" " document.addEventListener('keydown',function(e){kwd=e.target;},false);\n" " sf.addEventListener('keyup',s,false);\n" " sf.addEventListener('change',s,false);\n" " if(location.hash)\n" " {\n" " var sf=location.hash.replace(/^#/,'');\n" " var tf=sf.split('|');\n" " if(tf[0])\n" " {\n" " tf[0]=unescape(tf[0]).toLowerCase().replace(/\\s+/g,'');\n" " }\n" " if(il[tf[0]])\n" " {\n" " var oe=document.createEvent('MouseEvents');\n" " oe.initMouseEvent('click',false,true,window,0,0,0,0,0,false,false,false,false,0,il[tf[0]]);\n" " il[tf[0]].dispatchEvent(oe);\n" " var st=il[tf[0]];\n" " if(tf[1])\n" " {\n" " tf[1]=unescape(tf[1]).toLowerCase().replace(/\\s+/g,'');\n" " var ar=il[tf[0]].parentNode.getElementsByTagName('label');\n" " for(var ro=0,ra;ra=ar[ro];ro++)\n" " {\n" " if(ra.firstChild.nodeValue.replace(/\\s+/g,'').toLowerCase()==tf[1])\n" " {\n" " st=ra.parentNode;\n" " ra.parentNode.parentNode.getElementsByTagName('input')[0].focus();\n" " ra.parentNode.parentNode.className='match';\n" " break;\n" " }\n" " }\n" " }\n" " var posl=0;\n" " while(st)\n" " {\n" " posl+=st.offsetTop;\n" " st=st.offsetParent;\n" " }\n" " window.scrollTo(0,posl-4);\n" " }\n" " else\n" " {\n" " var sb=document.getElementById('searchbox').getElementsByTagName('input')[0];\n" " sb.value=unescape(sf);\n" " sb.focus();\n" " var oe=document.createEvent('HTMLEvents');\n" " oe.initEvent('change',false,true);\n" " sb.dispatchEvent(oe);\n" " }\n" " }\n" " },\n" " false\n" ");\n" #ifndef USE_MINIMAL_OPERA_CONFIG /* Scroll-to-position for internal links */ "function sct(ln)\n" "{\n" " var lps=0,sln=ln;\n" " ln=ln.parentNode;\n" " while(ln)\n" " {\n" " lps+=ln.offsetTop;\n" " ln=ln.offsetParent;\n" " }\n" " window.scrollTo(0,lps-4);\n" " sln.parentNode.parentNode.getElementsByTagName('input')[0].focus();\n" "};\n" "var xhr=new XMLHttpRequest(),queued=[],helpdisp;\n" "function hlp(oLink,n)\n" "{\n" " var lps,ln=oLink.parentNode;\n" " if(!helpdisp)\n" " {\n" " helpdisp=document.getElementById('helpdisp');\n" " }\n" " queued=[\n" " document.getElementById('s'+n).getElementsByTagName('legend')[0].firstChild.nodeValue,\n" " oLink.parentNode.parentNode.getElementsByTagName('label')[0].firstChild.nodeValue,\n" " oLink.parentNode.parentNode\n" " ];\n" " lps=ln.offsetHeight;\n" " while(ln)\n" " {\n" " lps+=ln.offsetTop;\n" " ln=ln.offsetParent;\n" " }\n" " helpdisp.style.top=lps+'px';\n" " helpdisp.className='showtip';\n" " if(xhr.readyState==0)\n" " {\n" " xhr.onreadystatechange=function()\n" " {\n" " if(this.readyState==4)\n" " {\n" " proq(this.responseXML);\n" " }\n" " };\n" " xhr.open('GET','http://help.opera.com/operaconfig/?version='+encodeURIComponent(opera.version())+'&opsys='+encodeURIComponent(navigator.platform)+'&lang='+encodeURIComponent(navigator.language),true);\n" " xhr.send(null);\n" " }\n" " else if(xhr.readyState==4)\n" " {\n" " proq(xhr.responseXML);\n" " }\n" " return false;\n" "}\n" "function proq(xhr)\n" "{\n" " if(xhr)\n" " {\n" " var p=xhr.evaluate('//x:caption[normalize-space(text())=\\'['+queued[0]+']\\']/parent::x:table//*[normalize-space(text())=\\''+queued[1]+'\\']/ancestor::x:tr/x:td[position()=2]',xhr,function (a) { return 'http://www.w3.org/1999/xhtml'; },XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;\n" " if(p)\n" " {\n" " while(helpdisp.lastChild.firstChild)\n" " {\n" " helpdisp.lastChild.removeChild(helpdisp.lastChild.firstChild);\n" " }\n" " for(var i=0;i<p.childNodes.length;i++)\n" " {\n" " helpdisp.lastChild.appendChild(cpy(p.childNodes[i]));\n" " }\n" " return;\n" " }\n" " }\n" " helpdisp.lastChild.textContent='"); line.Append(no_information); line.Append("';\n" "}\n" "function clhlp()\n" "{\n" " if(helpdisp)\n" " {\n" " helpdisp.className='';\n" " }\n" "}\n" "function cpy(n)\n" "{\n" " var l;\n" " if(n.nodeType==1)\n" " {\n" " if(n.tagName.match(/^(a|address|b|bdo|blockquote|br|cite|code|dd|del|dfn|div|dl|dt|em|hr|i|ins|kbd|li|ol|p|pre|q|samp|span|strong|sub|sup|ul|var)$/i))\n" " {\n" " l=document.createElement(n.tagName);\n" " if(n.tagName.toLowerCase()=='a'&&n.hasAttribute('href')&&!n.getAttribute('href').match(/^(#|(opera|javascript|mailto|news|nntp|gopher|wais):)/))\n" " {\n" " l.setAttribute('href',(n.getAttribute('href').match(/^(https?|ftp):\\/\\//)?'':'http://www.opera.com')+n.getAttribute('href'));\n" " l.setAttribute('target','_blank');\n" " }\n" " }\n" " else\n" " {\n" " l=document.createDocumentFragment();\n" " }\n" " for(var i=0;i<n.childNodes.length;i++)\n" " {\n" " l.appendChild(cpy(n.childNodes[i]));\n" " }\n" " return l;\n" " }\n" " if(n.nodeType==3)\n" " {\n" " return document.createTextNode(n.nodeValue);\n" " }\n" " return document.createTextNode('');\n" "}\n" "Node.prototype.hasPart = function (l)\n" "{\n" " while(l)\n" " {\n" " if(l==this)\n" " {\n" " return true;\n" " }\n" " l=l.parentNode;\n" " }\n" " return false;\n" "};\n" "function acl(e)\n" "{\n" " if(!e.target||(e.type!='resize'&&e.target==document)||(e.type=='focus'&&(e.target==document.documentElement||e.target==document.body))||(queued[2]&&queued[2].hasPart(e.target))||(helpdisp&&helpdisp.hasPart(e.target)))\n" " {\n" " return;\n" " }\n" " clhlp();\n" "}\n" "document.addEventListener('resize',acl,true);\n" "document.addEventListener('focus',acl,true);\n" "document.addEventListener('click',acl,true);\n" #endif // !USE_MINIMAL_OPERA_CONFIG " </script>\n" "</head>\n" "<body id=\"opera-config\">\n" "<h1>"); AppendLocaleString(&line, Str::S_CONFIG_TITLE); line.Append("</h1>\n"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); line.Set("<div>\n" " <p id=\"help\">\n" " <a href=\"" #if defined _NO_HELP_ || defined PREFS_OPERACONFIG_EXTERNAL_HELP "http://redir.opera.com/www.opera.com/support/usingopera/operaini/" #else "opera:/help/config.html" #endif "\" target=\"_blank\">"); AppendLocaleString(&line, Str::DI_IDHELP); line.Append("</a>\n" " </p>\n" " <p id=\"showall\">\n" " <label><input type=\"checkbox\"> "); AppendLocaleString(&line, Str::S_CONFIG_SHOW_ALL); line.Append("</label>\n" " </p>\n" " <p id=\"searchbox\">\n" " <label><input type=\"text\" value=\""); AppendLocaleString(&line, Str::S_QUICK_FIND); line.Append("\"></label>\n" " </p>\n" "</div>\n"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); // Captions for buttons; these are re-used, so only get them once OpString save_button, reset_button, defaults_button; g_languageManager->GetString(Str::SI_SAVE_BUTTON_TEXT, save_button); g_languageManager->GetString(Str::SI_IDFORM_RESET, reset_button); g_languageManager->GetString(Str::S_CONFIG_DEFAULT, defaults_button); // We need log(256)/log(10) * sizeof(value) characters to store // the number, adding one for the rounding, one for the sign // and one for the terminator. 53/22 is a good approximation // of this. static const int formidlen = 3 + sizeof (int) * 53 / 22; char secid[formidlen]; /* ARRAY OK 2009-04-23 adame */ char formid[formidlen]; /* ARRAY OK 2009-04-23 adame */ // Iterate over the preferences to generate the big list of settings const char *cursection = NULL; BOOL ignore = FALSE, hasenabled = FALSE; int formnum = 0, secnum = 0; for (unsigned int i = 0; i < len; ++ i) { if (!i || op_strcmp(cursection, m_settings[i].section)) { cursection = m_settings[i].section; // Ignore certain sections: // RM* (ERA settings not publically known) // State (these are state information, not settings) // Opera Sync Server (policy decision) if ((ignore = ((cursection[0] == 'R' && cursection[1] == 'M') #if defined PREFS_HAVE_DESKTOP_UI || defined PREFS_HAVE_UNIX_PLUGIN || !op_strcmp(cursection, "State") #endif #ifdef SUPPORT_DATA_SYNC || !op_strcmp(cursection, "Opera Sync Server") #endif ))) { continue; } // Id number for this section op_itoa(secnum ++, secid, 10); // Start a new fieldset for this section line.Set("<fieldset id=\"s"); line.Append(secid); line.Append("\">\n <legend>"); line.Append(m_settings[i].section); line.Append("</legend>\n <table>\n"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); hasenabled = FALSE; } // Skip entry if we're in an ignored section if (ignore) { continue; } // Id number for this key op_itoa(formnum ++, formid, 10); line.Set(" <tr>\n <th><label for=\"f"); line.Append(formid); line.Append("\">"); line.Append(m_settings[i].key); line.Append("</label></th>\n <td>\n <input type=\""); // Flags BOOL required = FALSE; // Bug#196702: File names should be quoted, to be consistent with // what Opera does when you select a value in the file selector. BOOL quote_value = FALSE; switch (m_settings[i].type) { default: OP_ASSERT(!"Unknown data type"); // FALLTHROUGH case prefssetting::string: line.Append("text\" class=\"string"); break; case prefssetting::directory: line.Append("text\" class=\"directory"); break; case prefssetting::integer: line.Append("number\" class=\"integer\" step=\"1"); break; case prefssetting::boolean: line.Append("checkbox"); break; case prefssetting::requiredfile: required = TRUE; case prefssetting::file: quote_value = TRUE; line.Append("file\" class=\"file"); break; case prefssetting::color: line.Append("color\" class=\"color"); break; } if (m_settings[i].type == prefssetting::boolean) { // Checkbox if (m_settings[i].value.CStr()[0] != '0') { line.Append("\" checked=\"checked"); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); line.Empty(); } else { // Normal value line.Append("\" value=\""); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); line.Empty(); if (quote_value) { line.Append("""); // Gets added both before and after RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, m_settings[i].value)); } line.Append("\" id=\"f"); line.Append(formid); if (required) { line.Append("\" required=\"required"); } if (disable_settings # ifdef PREFSFILE_CASCADE || !m_settings[i].enabled # endif ) { line.Append("\" disabled=\"disabled\">\n"); } else { line.Append("\">\n <button type=\"button\" onclick=\"d(this,"); line.Append(secid); line.Append(")\">"); line.Append(defaults_button); line.Append("</button>\n"); hasenabled = TRUE; } #ifndef USE_MINIMAL_OPERA_CONFIG // Scroll-to-position link line.Append(" <a href=\"#"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); // Kill all spaces in the link anchor name line.Set(m_settings[i].section); line.Append("|"); line.Append(m_settings[i].key); uni_char *source = line.CStr(), *dest = source; do { if (*source != ' ') { *(dest ++) = *source; } ++ source; } while(*source); *dest = 0; RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); line.Set("\" onclick=\"sct(this);\">\xBB</a>\n"); line.Append("<a href=\"#\" onclick=\"return hlp(this,"); line.Append(secid); line.Append(")\">?</a>\n"); #endif // !USE_MINIMAL_OPERA_CONFIG line.Append("</td>\n </tr>\n"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); if (i == len - 1 || op_strcmp(cursection, m_settings[i + 1].section)) { // Add OK and Reset button for section. On some platforms, // the OK button should be on the right and on some it should // be on the left. if (g_op_ui_info->DefaultButtonOnRight()) { line.Set(" </table>\n" " <div>\n" " <button type=\"button\" onclick=\"o(this,0)\">"); line.Append(reset_button); line.Append("</button>\n" " <button type=\"button\" onclick=\"o(this,1)\""); if (hasenabled) line.Append(">"); else line.Append(" disabled=\"disabled\">"); line.Append(save_button); line.Append("</button>\n" " </div>\n" "</fieldset>\n"); } else { line.Set(" </table>\n" " <div>\n" " <button type=\"button\" onclick=\"o(this,1)\""); if (hasenabled) line.Append(">"); else line.Append(" disabled=\"disabled\">"); line.Append(save_button); line.Append("</button>\n" " <button type=\"button\" onclick=\"o(this,0)\">"); line.Append(reset_button); line.Append("</button>\n" " </div>\n" "</fieldset>\n"); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); } } // String to display if search fails line.Set("<p id=\"nohits\">"); AppendLocaleString(&line, Str::S_NO_MATCHES_FOUND); line.Append("</p>\n"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); #ifndef USE_MINIMAL_OPERA_CONFIG line.Set("<div id=\"helpdisp\"><div><a href=\"#\" onclick=\"clhlp();return false;\">X</a></div><div>"); AppendLocaleString(&line, Str::S_CONFIG_LOADING); line.Append("</div></div>"); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); #endif // !USE_MINIMAL_OPERA_CONFIG // Finish the document and close the document return CloseDocument(); }
void XMLReader::OpenDocument(const std::string& aFilePath) { CloseDocument(); myDoc = new tinyxml2::XMLDocument(); tinyxml2::XMLError error = myDoc->LoadFile(aFilePath.c_str()); if (error == tinyxml2::XMLError::XML_SUCCESS) { myHasOpenedDoc = true; myFilePath = aFilePath; } else { #pragma region Error-Codes switch (error) { case tinyxml2::XML_NO_ATTRIBUTE: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_NO_ATTRIBUTE", aFilePath.c_str()); break; case tinyxml2::XML_WRONG_ATTRIBUTE_TYPE: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_WRONG_ATTRIBUTE_TYPE", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_FILE_NOT_FOUND: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_FILE_NOT_FOUND", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_FILE_COULD_NOT_BE_OPENED: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_FILE_COULD_NOT_BE_OPENED", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_FILE_READ_ERROR: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_FILE_READ_ERROR", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_ELEMENT_MISMATCH: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_ELEMENT_MISMATCH", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_ELEMENT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_ELEMENT", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_ATTRIBUTE: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_ATTRIBUTE", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_IDENTIFYING_TAG: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_IDENTIFYING_TAG", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_TEXT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_TEXT", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_CDATA: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_CDATA", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_COMMENT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_COMMENT", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_DECLARATION: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_DECLARATION", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING_UNKNOWN: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING_UNKNOWN", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_EMPTY_DOCUMENT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_EMPTY_DOCUMENT", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_MISMATCHED_ELEMENT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_MISMATCHED_ELEMENT", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_PARSING: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_PARSING", aFilePath.c_str()); break; case tinyxml2::XML_CAN_NOT_CONVERT_TEXT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_CAN_NOT_CONVERT_TEXT", aFilePath.c_str()); break; case tinyxml2::XML_NO_TEXT_NODE: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_NO_TEXT_NODE", aFilePath.c_str()); break; case tinyxml2::XML_ERROR_COUNT: DL_DEBUG("Failed to Open XML File. File: %s, Error: XML_ERROR_COUNT", aFilePath.c_str()); break; default: DL_DEBUG("Failed to Open XML File. File: %s, Error: Unknown, non of tinyxml's error codes caught it :(", aFilePath.c_str()); break; } #pragma endregion DL_ASSERT("[XMLReader]: Failed to Open XML File. Check Debuglog for error"); } }
XMLReader::~XMLReader() { CloseDocument(); }
OP_STATUS OperaWidgets::GenerateData() { #ifdef OPERAEXTENSIONS_URL if (Widgets == m_pagetype) { #endif #ifdef _LOCALHOST_SUPPORT_ RETURN_IF_ERROR(OpenDocument(Str::S_WIDGETS_TITLE, PrefsCollectionFiles::StyleWidgetsFile)); #else RETURN_IF_ERROR(OpenDocument(Str::S_WIDGETS_TITLE)); #endif #ifdef OPERAEXTENSIONS_URL } else { # ifdef _LOCALHOST_SUPPORT_ RETURN_IF_ERROR(OpenDocument(Str::S_EXTENSIONS_TITLE, PrefsCollectionFiles::StyleWidgetsFile)); # else RETURN_IF_ERROR(OpenDocument(Str::S_EXTENSIONS_TITLE)); # endif } #endif RETURN_IF_ERROR(OpenBody()); OpString line; OpString open_widget, close_widget, delete_widget, widget_properties, widget_options; #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON OpString widget_check_update; #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON #ifdef OPERAEXTENSIONS_URL if (Widgets == m_pagetype) { #endif RETURN_IF_ERROR(JSSafeLocaleString(&open_widget, Str::S_WGTMGR_CMD_OPEN_WIDGET)); RETURN_IF_ERROR(JSSafeLocaleString(&close_widget, Str::S_WM_CLOSE_WIDGET)); #ifdef OPERAEXTENSIONS_URL } else { RETURN_IF_ERROR(JSSafeLocaleString(&open_widget, Str::S_WEBSERVER_START_SERVICE)); RETURN_IF_ERROR(JSSafeLocaleString(&close_widget, Str::S_WEBSERVER_STOP_SERVICE)); RETURN_IF_ERROR(JSSafeLocaleString(&widget_options, Str::S_WGTMGR_TITLE_OPTIONS)); } #endif RETURN_IF_ERROR(JSSafeLocaleString(&delete_widget, Str::S_WGTMGR_CMD_DELETE_WIDGET)); RETURN_IF_ERROR(JSSafeLocaleString(&widget_properties, Str::D_WIDGET_PROPERTIES)); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(JSSafeLocaleString(&widget_check_update, Str::S_WIDGET_UPDATE_BUTTON)); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( "\n<script type='text/javascript'>\n" " window.addEventListener('load', init, false);\n\n" " function init()" " {\n")); #ifdef OPERAEXTENSIONS_URL if (Widgets == m_pagetype) { #endif RETURN_IF_ERROR(line.Append( " if(opera && opera.widgetManager)" " {\n" " var wmgr = opera.widgetManager;\n")); #ifdef OPERAEXTENSIONS_URL } else { OP_ASSERT(Extensions == m_pagetype); RETURN_IF_ERROR(line.Append( " if(opera && opera.extensionManager)" " {\n" " var wmgr = opera.extensionManager;\n")); } #endif RETURN_IF_ERROR(line.Append( " var wdgts = wmgr.widgets;\n" "\n" " var list = document.getElementById('gadget_list');\n" " var olay = document.getElementById('overlay');\n" " var info = document.getElementById('info');\n" " var btn_open = document.getElementById('btn_open');\n" " var btn_close = document.getElementById('btn_close');\n" " var btn_del = document.getElementById('btn_del');\n" " var btn_info = document.getElementById('btn_info');\n")); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append(" var btn_update = document.getElementById('btn_update');\n")); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append(" var btn_update_url = document.getElementById('btn_update_url');\n")); #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) RETURN_IF_ERROR(line.Append( " var btn_options = document.getElementById('btn_options');\n")); #endif RETURN_IF_ERROR(line.Append( " var sel_wmode = document.getElementById('sel_wmode');\n" "\n" " btn_open.addEventListener('click', hndl_click, false);\n" " btn_close.addEventListener('click', hndl_click, false);\n" " btn_del.addEventListener('click', hndl_click, false);\n" " btn_info.addEventListener('click', hndl_click, false);\n" " list.addEventListener('keyup', hndl_keyup, false);\n")); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " btn_update.addEventListener('click', hndl_click, false);\n")); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " btn_update_url.addEventListener('click', hndl_click, false);\n")); #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) RETURN_IF_ERROR(line.Append( " var btn_https = document.getElementById('btn_https');\n" " var btn_private = document.getElementById('btn_private');\n" " btn_https.addEventListener('click', hndl_https, false);\n" " btn_private.addEventListener('click', hndl_private, false);\n" " list.addEventListener('change', hndl_list_select, false);\n")); #endif #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) RETURN_IF_ERROR(line.Append( " btn_options.addEventListener('click', hndl_click, false);\n")); #endif if (Widgets == m_pagetype) RETURN_IF_ERROR(line.Append( " sel_wmode.addEventListener('change', set_wmode, false);\n")); RETURN_IF_ERROR(line.Append( "\n" " list_gadgets();\n" " }\n" " function list_gadgets()" " {\n" " list.innerHTML = '';\n" " list.style.height = '' + parseInt(window.innerHeight * 0.6) + 'px';\n" " for (var i = 0; wdgts[i]; ++i)" " {\n" " var item = document.createElement('option');\n" " witem = wdgts[i];\n" " item.id = 'wdgt_' + i;\n" " item.value = i;\n")); #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) RETURN_IF_ERROR(line.Append( " item.allow_https = true;\n" " item.allow_private = false;\n")); #endif RETURN_IF_ERROR(line.Append( " item.appendChild(document.createTextNode(witem.name));\n" " list.appendChild(item);\n" " }\n" " }\n" "\n")); #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) RETURN_IF_ERROR(line.Append( " function colourCode(priv_enabled, https_enabled) {\n" " var colour = priv_enabled ? 'green' : (!https_enabled ? 'lightgreen' : 'white');\n" " return colour;\n" " }\n" " function hndl_https(evt){\n" " var list = document.getElementById('gadget_list');\n" " if (list.selectedIndex >= 0) {\n" " var elt = list.options[list.selectedIndex];\n" " elt.allow_https = !elt.allow_https;\n" " wdgts[list.selectedIndex].setExtensionProperty('allow_https', elt.allow_https);\n" " elt.style.backgroundColor = colourCode(elt.allow_private, elt.allow_https);\n" " }\n" " }\n" " function hndl_private(evt){\n" " var list = document.getElementById('gadget_list');\n" " if (list.selectedIndex >= 0) {\n" " var elt = list.options[list.selectedIndex];\n" " elt.allow_private = !elt.allow_private;\n" " wdgts[list.selectedIndex].setExtensionProperty('allow_private', elt.allow_private);\n" " elt.style.backgroundColor = colourCode(elt.allow_private, elt.allow_https);\n" " }\n" " }\n" " function hndl_list_select(evt){\n" " if (evt.target && evt.target.selectedIndex >= 0) {\n" " var el_id = evt.target.selectedIndex;\n" " var is_https = evt.target.options[el_id].allow_https;\n" " var is_priv = evt.target.options[el_id].allow_private;\n" " document.getElementById('btn_https').checked = is_https;\n" " document.getElementById('btn_private').checked = is_priv;\n" " }\n" " }\n")); #endif RETURN_IF_ERROR(line.Append( " function hndl_click(evt)" " {\n" " if (evt.target && evt.target.nodeType == 1)" " {\n" " var el_id = evt.target.id;\n" " var ar_act = new Array();\n" " for (var i = 0; list.options[i]; ++i)" " {\n" " var opt = list.options[i];\n" " if (opt.selected)" " {\n" " ar_act.push(opt.value);\n" " }\n" " }\n" " var action;\n" " var extra_args = '';\n" " switch (el_id)" " {\n" " case 'btn_open':\n" " action = 'run';\n")); #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) RETURN_IF_ERROR(line.Append( " extra_args = list.selectedIndex < 0 ? '' : (', ' + list.options[list.selectedIndex].allow_https + ', ' + list.options[list.selectedIndex].allow_private);\n")); #endif RETURN_IF_ERROR(line.Append( " break;\n" " case 'btn_close':\n" " action = 'kill';\n" " break;\n" " case 'btn_del':\n" " action = 'uninstall';\n" " break;\n" " case 'btn_info':\n" " action = 'info';\n" " break;\n")); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " case 'btn_update':\n" " action = 'checkForUpdate';\n" " break;\n")); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append( " case 'btn_update_url':\n" " //action = 'checkForUpdateByUrl';\n" " //extra_args = ', '+document.getElementById('update_url').value\n" " wmgr.checkForUpdateByUrl(document.getElementById('update_url').value)\n" " break;\n")); RETURN_IF_ERROR(line.Append( " case 'btn_options':\n" " action = 'options';\n" " break;\n" " }\n" " if (action != 'info')" " {\n" " if (action == 'options' && !wmgr.options) return;\n" " for (var i=ar_act.length - 1; ar_act[i]; --i){\n" " eval ('wmgr.' + action + '(wdgts[' + ar_act[i] + ']' + extra_args + ')');\n" " }\n" " if (action == 'uninstall')" " {\n" " list_gadgets();\n" " list.selectedIndex = !ar_act[0] ? 0 : (ar_act[0] - 1);\n" " }\n" " }" " else" " {\n" " // show info box for a single widget only\n" " show_gadget_info(ar_act[0]);\n" " }\n" " }\n" " }\n" "\n" " function hndl_keyup(e)\n" " {\n" " if (e.keyCode == 46)\n" " {\n" " btn_del.click();\n" " }\n" " else if (e.keyCode == 13)\n" " {\n" " btn_open.click();\n" " }\n" " }\n" "\n" " function set_wmode(e)\n" " {\n" " var wmodes = e.target.value;\n" " var ar_act = new Array();\n" " for (var i = 0; list.options[i]; ++i){\n" " var opt = list.options[i];\n" " if (opt.selected){\n" " ar_act.push(opt.value);\n" " }\n" " }\n" " for (var i=ar_act.length - 1; ar_act[i]; --i){\n" " while (wmodes.length > 0){\n" " var space_index = wmodes.indexOf(' ');\n" " space_index = space_index > 0 ? space_index : wmodes.length;\n" " var wmode = wmodes.substr(0, space_index);\n" " wmgr.setWidgetMode(wdgts[ar_act[i]], wmode);\n" " wmodes = wmodes.substr(space_index+1);\n" " }\n" " }\n" " }\n" "\n" " function show_gadget_info(idx){\n" " var wdgt = wdgts[idx];\n" " if (!wdgt) return;\n" " info.innerHTML = '';\n" " var btnc = document.createElement('button');\n" " btnc.textContent = 'x';\n" " btnc.addEventListener('click', function () {olay.style.display = 'none';}, false);\n" " document.getElementById('dtitle').innerHTML = '' ;\n" " document.getElementById('dtitle').appendChild(btnc);\n" " var tbl = document.createElement('table');\n" " var trow = tbl.appendChild(document.createElement('tr'));\n" " for (x in wdgt){\n" " var item = document.createElement('tr');\n" " item.appendChild(document.createElement('th')).appendChild(document.createTextNode(x));\n" " item.appendChild(document.createElement('td')).appendChild(document.createTextNode(wdgt[x]));\n" " tbl.appendChild(item);\n" " }\n" " var icon_item = document.createElement('tr');\n" " icon_item.appendChild(document.createElement('th')).appendChild(document.createTextNode('icon'));\n" " var icon_img = document.createElement('img');\n" " icon_img.src = wmgr.getWidgetIconURL(wdgt);\n" " icon_item.appendChild(document.createElement('td')).appendChild(icon_img);\n" " tbl.appendChild(icon_item);\n" " info.appendChild(tbl);\n" " olay.style.display = 'block';\n" " }\n" " }\n" "</script>\n" "<div id='header'>\n" " <h1>")); #ifdef OPERAEXTENSIONS_URL if (Widgets == m_pagetype) { #endif RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_MANAGE_WIDGETS)); RETURN_IF_ERROR(line.Append(" </h1>\n" " <p style='text-align:right'><a href='http://widgets.opera.com/'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_ADD_WIDGETS)); RETURN_IF_ERROR(line.Append("</a></p>\n")); #ifdef OPERAEXTENSIONS_URL } else { RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_MANAGE_EXTENSIONS)); RETURN_IF_ERROR(line.Append(" </h1>\n" " <p style='text-align:right'><a href='https://addons.labs.opera.com/addons/extensions/'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_ADD_EXTENSIONS)); RETURN_IF_ERROR(line.Append("</a></p>\n")); } #endif RETURN_IF_ERROR(line.Append("</h1>" "</div>\n" "<div id='content'>\n" " <div id='btn_wrapper'>\n" " <button id='btn_open'>")); RETURN_IF_ERROR(line.Append(open_widget)); RETURN_IF_ERROR(line.Append("</button>\n" " <button id='btn_close'>")); RETURN_IF_ERROR(line.Append(close_widget)); RETURN_IF_ERROR(line.Append("</button>\n" " <button id='btn_del'>")); RETURN_IF_ERROR(line.Append(delete_widget)); RETURN_IF_ERROR(line.Append("</button>\n" " <button id='btn_info'>")); RETURN_IF_ERROR(line.Append(widget_properties)); #ifdef GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append("</button>\n" " <button id='btn_update'>")); RETURN_IF_ERROR(line.Append(widget_check_update)); #endif // GADGETS_OPERAWIDGETS_UPDATE_BUTTON RETURN_IF_ERROR(line.Append("</button>\n")); #ifdef OPERAEXTENSIONS_URL if (Extensions == m_pagetype) { RETURN_IF_ERROR(line.Append( " <button id='btn_options'>")); RETURN_IF_ERROR(line.Append(widget_options)); RETURN_IF_ERROR(line.Append("</button>\n")); RETURN_IF_ERROR(line.Append( " <input id='btn_https' type='checkbox'>https</input>" " <input id='btn_private' type='checkbox'>private</input>")); } #endif if (Widgets == m_pagetype) { RETURN_IF_ERROR(line.Append(" <label>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_WIDGET_VIEW_MODE)); RETURN_IF_ERROR(line.Append(":\n" " <select id='sel_wmode'>\n" " <option value='floating widget'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_WIDGET_VIEW_MODE_FLOATING)); RETURN_IF_ERROR(line.Append( "</option>\n" " <option value='windowed application'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_WIDGET_VIEW_MODE_WINDOWED)); RETURN_IF_ERROR(line.Append( "</option>\n" " <option value='fullscreen'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_WIDGET_VIEW_MODE_FULLSCREEN)); RETURN_IF_ERROR(line.Append( "</option>\n" " <option value='maximized'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_WIDGET_VIEW_MODE_MAXIMIZED)); RETURN_IF_ERROR(line.Append( "</option>\n" " <option value='minimized docked'>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::S_WIDGET_VIEW_MODE_MINIMIZED)); RETURN_IF_ERROR(line.Append( "</option>\n" " </select>\n" " </label>\n")); } RETURN_IF_ERROR(line.Append(" </div>\n")); RETURN_IF_ERROR(line.Append(" <div id='btn_wrapper'>\n")); RETURN_IF_ERROR(line.Append(" <input id='update_url' type='text'")); RETURN_IF_ERROR(line.Append(" value='Enter update description document URL here...' style=\"width:60%\"></input>\n")); RETURN_IF_ERROR(line.Append(" <button id='btn_update_url'>")); RETURN_IF_ERROR(line.Append(widget_check_update)); RETURN_IF_ERROR(line.Append(" </button>\n")); RETURN_IF_ERROR(line.Append(" </div>\n")); RETURN_IF_ERROR(line.Append(" <select multiple='multiple' id='gadget_list'><option>")); RETURN_IF_ERROR(AppendLocaleString(&line, Str::D_GENERIC_ERROR)); RETURN_IF_ERROR(line.Append("</option></select>\n" "</div>\n" "<div id='overlay'><div id='dwrapper'><div id='dtitle'></div><div id='info'></div></div></div>\n" )); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line)); RETURN_IF_ERROR(CloseDocument()); return OpStatus::OK; }
OP_STATUS OperaDebug::GenerateData() { OpString line, template_string; OpString c_text, f_text; OpString connect_text, disconnect_text, ip_text, port_text, manual_debug_title; OpString warning_first, warning_second; #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) OpString local_debuggers_title, no_local_debuggers_found; #endif // defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) int port; OpStringC ip; #ifdef _LOCALHOST_SUPPORT_ RETURN_IF_ERROR(OpenDocument(Str::S_OPERA_DEBUG_TITLE, PrefsCollectionFiles::StyleDebugFile)); #else RETURN_IF_ERROR(OpenDocument(Str::S_OPERA_DEBUG_TITLE)); #endif // Fetch localized strings RETURN_IF_ERROR(g_languageManager->GetString(Str::S_DEBUG_CONNECTED, c_text)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_DEBUG_WARNING_1, warning_first)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_DEBUG_DISCONNECT, disconnect_text)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_DEBUG_IP_ADDRESS, ip_text)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_DEBUG_PORT_NUMBER, port_text)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_DEBUG_WARNING_2, warning_second)); #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(g_languageManager->GetString(Str::S_FOUND_LOCAL_DEBUGGERS_TITLE, local_debuggers_title)); #endif // defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(g_languageManager->GetString(Str::S_MANUAL_ENTER_DEBUGGER_TITLE, manual_debug_title)); // Escape localized strings used in JavaScript RETURN_IF_ERROR(JSSafeLocaleString(&f_text, Str::S_DEBUG_FAILED)); RETURN_IF_ERROR(JSSafeLocaleString(&connect_text, Str::S_DEBUG_CONNECT)); #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(JSSafeLocaleString(&no_local_debuggers_found, Str::S_NO_LOCAL_DEBUGGERS_FOUND)); #endif // defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) ip = g_pctools->GetStringPref(PrefsCollectionTools::ProxyHost); port = g_pctools->GetIntegerPref(PrefsCollectionTools::ProxyPort); RETURN_IF_ERROR(line.Append("<script type=\"text/javascript\">\n" "var previousDevices = [];\n")); RETURN_IF_ERROR(line.AppendFormat(UNI_L("var lastConnectedAddress=\"%s\";\n"), ip.CStr())); RETURN_IF_ERROR(line.AppendFormat(UNI_L("var lastConnectedPort=%d;\n"), port)); RETURN_IF_ERROR(line.Append("var lastConnectElement;\n" "window.onload = function ()\n" "{\n" " opera.setConnectStatusCallback(connectionCallback);\n" " if (opera.isConnected())\n" " setConnected();\n" " else\n" " setDisconnected();\n")); #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(line.Append(" var devicelist=opera.nearbyDragonflies;\n" " opera.setDevicelistChangedCallback(discoverDragonflies, devicelist);\n" " discoverDragonflies(devicelist); // make sure we update once, since the callback above only notifies changes\n")); #endif // defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(line.Append("}\n" "function setLastConnectionDetails(ipaddress, port, element)\n" "{\n" " lastConnectedAddress = ipaddress;\n" " lastConnectedPort = port;\n" " lastConnectElement = element;\n" "}\n" "function setupAndConnectFromForm(triggerElement)\n" "{\n" " var ip = document.getElementById('ip');\n" " var port = document.getElementById('port');\n" " doConnect(ip.value, port.value, document.getElementById('form_connect_button'));\n" "}\n")); #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(line.Append("function updateListviewNoneFound(current_items)\n" "{\n" " var deviceUl = document.getElementById('detected_dragonflies');\n" " if(!deviceUl)\n" " return;\n" " var retelem = document.getElementById('none_found');\n" " if(current_items == 0 && !retelem)\n" " {\n" " li = deviceUl.appendChild(document.createElement('li'));\n" " li.textContent = '")); RETURN_IF_ERROR(line.Append(no_local_debuggers_found.CStr())); RETURN_IF_ERROR(line.Append("';\n" " li.offsetWidth; // trigger a reflow \n" " li.className = 'show';\n" " li.id = 'none_found';\n" " }\n" " else if(current_items != 0 && retelem)\n" " {\n" " deviceUl.removeChild(retelem); // remove the none_found item without transition\n" " }\n" "}\n" "function eventFunctionRemoveElement(event)\n" "{\n" " var deviceUl = document.getElementById('detected_dragonflies');\n" " deviceUl.removeChild(event.target);\n" "// check if we don't have any devices visible and show the 'not found text'\n" " updateListviewNoneFound(previousDevices.length);\n" "}\n" "// will copy the url entries from the device collection\n" "function copyDeviceList(obj)\n" "{\n" " var newObj = new Array(obj.length);\n" " for (var i=0; i<obj.length; i++)\n" " {\n" " newObj[i] = obj[i].url;\n" " }\n" " return newObj;\n" "}\n" "function removeDeviceElement(index)\n" "{\n" " var deviceUl = document.getElementById('detected_dragonflies');\n" " if(deviceUl)\n" " {\n" " var elemToRemove = deviceUl.childNodes[index];\n" " if(previousDevices.length == 1)\n" // remove the element without transition to avoid jumping from two to one list items " deviceUl.removeChild(elemToRemove);\n" " else\n" " {\n" " elemToRemove.addEventListener('transitionEnd', eventFunctionRemoveElement, false);\n" " elemToRemove.className = 'hide';\n" " }\n" " }\n" "}\n" "function updateListElement(li, button, urlstring, iconstring)\n" "{\n" " li.style.listStyleImage = \"url('\"+ iconstring + \"')\";\n" " var targetip = urlstring.substring(urlstring.lastIndexOf('/')+1, urlstring.lastIndexOf(':'));\n" " var targetport = urlstring.substring(urlstring.lastIndexOf(':')+1);\n" " var iplabel = li.querySelector('.iplabel');\n" " var portlabel = li.querySelector('.portlabel');\n" " iplabel.textContent = targetip;\n" " portlabel.textContent = targetport;\n" " button.onclick = doConnect.bind(null, targetip, targetport, button);\n" "}\n" "function updateDeviceElement(index, devices)\n" "{\n" " var deviceUl = document.getElementById('detected_dragonflies');\n" " if(!deviceUl)\n" " return;\n" " var device=devices[index];\n" " var elemToChange = deviceUl.childNodes[index];\n" " var button = elemToChange.querySelector('.push_button');\n" " // The expected form of .upnpDevicePayload is the \"http://[ip-address]:[port]\" portion of an URL\n" " updateListElement(elemToChange, button, device.upnpDevicePayload, device.upnpDeviceIcon);\n" "}\n" "function showDeviceElement(index, devices)\n" "{\n" " var deviceUl = document.getElementById('detected_dragonflies');\n" " if(!deviceUl)\n" " return;\n" " var device=devices[index];\n" " li = deviceUl.appendChild(document.createElement('li'));\n" " li.offsetWidth;\n" " li.className = 'show';\n" " dl = li.appendChild(document.createElement('dl'));\n" " iptext = dl.appendChild(document.createElement('dd'));\n" " iptext.className = 'iplabel';\n" " porttext = dl.appendChild(document.createElement('dd'));\n" " porttext.className = 'portlabel';\n" " statuslabel = li.appendChild(document.createElement('p'));\n" " statuslabel.className = 'status_label';\n" " button = li.appendChild(document.createElement('button'));\n" " button.textContent = '")); RETURN_IF_ERROR(line.Append(connect_text.CStr())); RETURN_IF_ERROR(line.Append("';\n" " button.className = 'push_button';\n" " updateListElement(li, button, device.upnpDevicePayload, device.upnpDeviceIcon);\n" "}\n" "// set up list of nearby dragonflies\n" "function discoverDragonflies(devices)\n" "{\n" " var biggest = previousDevices.length > devices.length ? previousDevices.length : devices.length;\n" " for(var i=0; i<biggest; i++)\n" " {\n" " if((previousDevices[i] && devices[i]) && (previousDevices[i] != devices[i].url))\n" " {\n" " updateDeviceElement(i, devices);\n" " }\n" " else if(!devices[i]) // device was removed\n" " {\n" " removeDeviceElement(i);\n" " }\n" " else if(!previousDevices[i]) // device was added\n" " {\n" " showDeviceElement(i, devices);\n" " }\n" " }\n" " previousDevices = copyDeviceList(devices);\n" " updateListviewNoneFound(previousDevices.length);\n" "}\n")); #endif // UPNP_SUPPORT && UPNP_SERVICE_DISCOVERY RETURN_IF_ERROR(line.Append("function setConnectionFailed()\n" "{\n" " var parentElement = lastConnectElement.parentNode;\n" " var statuslabel = parentElement.querySelector('.status_label');\n" " statuslabel.textContent = '")); RETURN_IF_ERROR(line.Append(f_text.CStr())); RETURN_IF_ERROR(line.Append("';\n" "}\n" "function setDisconnected()\n" "{\n" " document.getElementById('setup_state').style.display='block';\n" " document.getElementById('connected_state').style.display='none';\n" "}\n" "function setConnected()\n" "{\n" " document.getElementById('setup_state').style.display='none';\n" " document.getElementById('connected_state').style.display='block';\n" " var connectedto = document.getElementById('connected_to');\n" " connectedto.querySelector('.iplabel').textContent = lastConnectedAddress;\n" " connectedto.querySelector('.portlabel').textContent = lastConnectedPort;\n" "}\n" "function connectionCallback(status)\n" "{\n")); RETURN_IF_ERROR(line.AppendFormat(UNI_L(" if (status == %u)\n"), OpScopeConnectionManager::CONNECTION_OK)); RETURN_IF_ERROR(line.Append(" setConnected();\n")); RETURN_IF_ERROR(line.AppendFormat(UNI_L(" else if (status == %u)\n"), OpScopeConnectionManager::DISCONNECTION_OK)); RETURN_IF_ERROR(line.Append(" setDisconnected();\n")); RETURN_IF_ERROR(line.AppendFormat(UNI_L( " else if (status == %u)\n"), OpScopeConnectionManager::CONNECTION_FAILED)); RETURN_IF_ERROR(line.Append(" {\n" " setDisconnected();\n" " setConnectionFailed();\n" " }\n" "}\n" "function doConnect(ip, port, triggerElement)\n" "{\n" " setLastConnectionDetails(ip, port, triggerElement);\n" " if (port > 0 && port < 65536)\n" " opera.connect(ip, port);\n" " else\n" " setConnectionFailed();\n" "}\n" "function doDisconnect()\n" "{\n" " if (opera.isConnected())\n" " opera.disconnect();\n" "}\n" "</script>\n" )); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); line.Empty(); RETURN_IF_ERROR(OpenBody(Str::S_OPERA_DEBUG_TITLE)); RETURN_IF_ERROR(template_string.Set( " <div id=\"setup_state\">\n" " <p>%s</p>\n"//warning_first " <p><strong>%s</strong></p>\n"//warning_second )); #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) RETURN_IF_ERROR(template_string.Append( " <h2>%s</h2>\n"//local_debuggers_title " <ul id=\"detected_dragonflies\"><li id=\"none_found\" class=\"show\">%s</li></ul>\n"));//no_local_debuggers_found #endif // UPNP_SUPPORT && UPNP_SERVICE_DISCOVERY RETURN_IF_ERROR(template_string.Append( " <h2>%s</h2>\n"//manual_debug_title " <div class=\"manual\">\n" " <dl>\n" " <dt>%s</dt>\n"//ip_text " <dd>\n" " <input id=\"ip\" type=\"text\" value=\"%s\">\n"//ip " </dd>\n" " </dl>\n" " <dl>\n" " <dt>%s</dt>\n"//port_text " <dd>\n" " <input id=\"port\" size=\"6\" type=\"text\" value=\"%d\">\n"//port " </dd>\n" " </dl>\n" " <button id=\"form_connect_button\" onclick=\"setupAndConnectFromForm()\">%s</button>\n"//connect_text " <p class=\"status_label\"></p>\n" " </div>\n" " </div>\n" " <div id=\"connected_state\">\n" " <p><strong>%s</strong></p>\n"//warning_second " <ul id=\"connected_to\" class=\"connected\">\n" " <li class=\"show\">\n" " <dl>\n" " <dd>%s</dd>\n"//c_text " <dd class=\"iplabel\"></dd>\n" " <dd class=\"portlabel\"></dd>\n" " <dd><button onclick=\"doDisconnect()\">%s</button></dd>\n"//disconnect_text " </dl>\n" " </li>\n" " </ul>\n" " </div>\n")); OP_STATUS status = line.AppendFormat(template_string.CStr() ,warning_first.CStr() ,warning_second.CStr() #if defined(UPNP_SUPPORT) && defined (UPNP_SERVICE_DISCOVERY) ,local_debuggers_title.CStr() ,no_local_debuggers_found.CStr() #endif // UPNP_SUPPORT && UPNP_SERVICE_DISCOVERY ,manual_debug_title.CStr() ,ip_text.CStr() ,ip.CStr() ,port_text.CStr() ,port ,connect_text.CStr() ,warning_second.CStr() ,c_text.CStr() ,disconnect_text.CStr() ); RETURN_IF_ERROR(status); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, line.CStr())); return CloseDocument(); }
OP_STATUS OperaPlugins::GenerateData() { #ifdef _LOCALHOST_SUPPORT_ RETURN_IF_ERROR(OpenDocument(Str::SI_PLUGIN_LIST_TEXT, PrefsCollectionFiles::StylePluginsFile)); #else RETURN_IF_ERROR(OpenDocument(Str::SI_PLUGIN_LIST_TEXT)); #endif OpString disabled_plugin_string; RETURN_IF_ERROR(g_languageManager->GetString(Str::SI_IDSTR_PLUGIN_DISABLED, disabled_plugin_string)); BOOL global_state = g_pcdisplay->GetIntegerPref(PrefsCollectionDisplay::PluginsEnabled) != 0; OpAutoVector<OpString> plugin_path_list; OpVector<PluginViewer> filtered_viewer_list; // Get strings OpString enable, disable, details, description, refresh, global_enable; RETURN_IF_ERROR(JSSafeLocaleString(&enable, Str::S_LITERAL_ENABLE)); RETURN_IF_ERROR(JSSafeLocaleString(&disable, Str::S_LITERAL_DISABLE)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_LIST_DETAILS, details)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_LIST_PLUGIN_DESC, description)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_REFRESH, refresh)); RETURN_IF_ERROR(g_languageManager->GetString(Str::DI_IDM_PLUGINS_TOGGLE, global_enable)); #ifdef ABOUT_PLUGINS_SHOW_ARCHITECTURE OpString arch_label, arch_native, arch_non_native; RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_LIST_ARCHITECTURE, arch_label)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_LIST_ARCHITECTURE_NATIVE, arch_native)); RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_LIST_ARCHITECTURE_NON_NATIVE, arch_non_native)); #endif // ABOUT_PLUGINS_SHOW_ARCHITECTURE OpString js_code; PluginViewers *plugin_viewer_list = g_plugin_viewers; // Cache global const bool detecting = plugin_viewer_list->IsDetecting(); // TODO CORE-40424: should either consolidate non-NS4P_COMPONENT_PLUGINS and // NS4P_COMPONENT_PLUGINS code so that are handled similarly or make a clear // separation between them using ifdefery. See http://critic-dev.oslo.osa/showcomment?chain=64850. if (detecting) { RETURN_IF_ERROR(js_code.Set(" <script type=\"text/javascript\">\n" " window.onload = function()\n" " {\n" " setTimeout(\"window.location.reload()\", 3000);\n" " };\n" " </script>\n")); } else { // Force sync detection if async did not finish already. Only relevant // for the non-NS4P_COMPONENT_PLUGINS code which never handles the // if-clause above. // TODO CORE-40424: This can be handled in a same way as the "new" code // given proper implementation of IsDetecting(). plugin_viewer_list->MakeSurePluginsAreDetected(); UINT numplugins = plugin_viewer_list->GetPluginViewerCount(); RETURN_IF_ERROR(js_code.Set(" <script type=\"text/javascript\">\n var plugin_list = [")); // First loop over plug-ins to create filtered list and javascript array for use on page for (UINT i = 0; i < numplugins; ++ i) { // Get the numbered plug-in PluginViewer *candidate_viewer = plugin_viewer_list->GetPluginViewer(i); const uni_char *plugin_path = candidate_viewer ? candidate_viewer->GetPath() : NULL; if (!plugin_path) continue; // Check for duplicate registrations BOOL is_duplicate = FALSE; UINT pathlistlen = plugin_path_list.GetCount(); if (pathlistlen) { for (UINT j = 0; !is_duplicate && j < pathlistlen; ++j) { is_duplicate = !plugin_path_list.Get(j)->Compare(plugin_path); } } if (is_duplicate) continue; RETURN_IF_ERROR(filtered_viewer_list.Add(candidate_viewer)); OpString escaped_path; RETURN_IF_ERROR(escaped_path.Set(candidate_viewer->GetPath())); RETURN_IF_ERROR(escaped_path.ReplaceAll(UNI_L("\\"), UNI_L("\\\\"))); RETURN_IF_ERROR(escaped_path.ReplaceAll(UNI_L("'"), UNI_L("\\'"))); RETURN_IF_ERROR(js_code.AppendFormat(UNI_L("\n {enabled:%i, path:'%s'},"), candidate_viewer->IsEnabled(), escaped_path.CStr())); // Remember this entry OpString *s = OP_NEW(OpString, ()); RETURN_OOM_IF_NULL(s); OP_STATUS st = s->Set(plugin_path); if (OpStatus::IsError(st)) { OP_DELETE(s); return st; } plugin_path_list.Add(s); } RETURN_IF_ERROR(js_code.Append( " ];\n\n" " function togglePlugin(id, link)\n" " {\n" " var plugin = plugin_list[id], ret;\n" " if (plugin && (ret = opera.togglePlugin(plugin.path, !plugin.enabled)) != -1)\n" " {\n" " plugin.enabled = ret;\n" " document.getElementById('plug_'+id).className = ret ? '' : 'disabled';\n")); RETURN_IF_ERROR(js_code.AppendFormat( UNI_L(" link.textContent = ret ? \"%s\" : \"%s\";\n"), disable.CStr(), enable.CStr())); RETURN_IF_ERROR(js_code.Append( " }\n" " return false;\n" " }\n\n" " function toggleGlobal(enabled)\n" " {\n" " opera.setPreference('Extensions', 'Plugins', enabled ? '1' : '0');\n" " document.body.id = enabled ? 'plugins-enabled' : 'plugins-disabled';\n" " }\n\n" " function toggleAllDetails(expand)\n" " {\n" " var names = document.getElementsByTagName('legend');\n" " for (var i=0; i<names.length; i++)\n" " {\n" " toggleDetails(names[i], expand);\n" " }\n" " }\n\n" " function toggleDetails(name, expand)\n" " {\n" " name.className = name.expanded=expand ? 'expanded' : '';\n" " name.mime.style.height = name.mime.scrollHeight+'px';\n" " name.mime.offsetHeight;\n" " if (!expand)\n" " name.mime.style.height = '0';\n" " }\n\n" " window.addEventListener('load', function()\n" " {\n" " // it's guaranteed to have same number of these elements\n" " var names = document.getElementsByTagName('legend');\n" " var mimes = document.getElementsByClassName('mime');\n\n" " for (var i=0; i<names.length; i++)\n" " {\n" " /* after expanding, set height to auto so that\n" " layout is kept fluid on resizing */\n" " mimes[i].addEventListener('transitionEnd', function(e)\n" " {\n" " if (e.propertyName != 'height') return;\n" " if (parseInt(this.style.height) != '0')\n" " this.style.height = 'auto';\n" " }, false);\n\n" " // save reference to mime block in clicked element\n" " names[i].mime = mimes[i];\n" " names[i].addEventListener('click', function()\n" " {\n" " toggleDetails(this, this.expanded=!this.expanded);\n" " }, false);\n\n" " names[i].firstChild.plugin_id = i;\n" " names[i].firstChild.addEventListener('click', function(e)\n" " {\n" " togglePlugin(this.plugin_id, this);\n" " e.preventDefault();\n" " e.cancelBubble = true;\n" " }, false);\n" " }\n" " }, false);\n" " </script>\n")); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, js_code.CStr())); RETURN_IF_ERROR(OpenBody(Str::SI_PLUGIN_LIST_TEXT, global_state ? UNI_L("plugins-enabled") : UNI_L("plugins-disabled"))); UINT32 filtered_count = filtered_viewer_list.GetCount(); // Link for enabling/disabling the plugins globally RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<label><input type=\"checkbox\" onchange=\"toggleGlobal(this.checked)\""))); if (detecting) RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L(" disabled=\"disabled\""))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, global_state ? UNI_L(" checked=\"checked\">") : UNI_L(">"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, global_enable.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</label>\n"))); RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L("<p id=\"details\">"))); // Link for toggling mime type details (details are initially hidden) if (filtered_count) { RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<label><input type=\"checkbox\" onchange=\"toggleAllDetails(this.checked)\">"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, details.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</label>\n"))); } // Link for refreshing plugins directory to see if plugins were added/removed if (!detecting) { RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<a href=\"#\" onclick=\"navigator.plugins.refresh(true);return false;\">"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, refresh.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</a>"))); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</p>\n"))); // Output filtered plug-ins on page for (UINT i = 0; i < filtered_count; ++ i) { PluginViewer *candidate_viewer = filtered_viewer_list.Get(i); // Get name of plug-in and write it as header const uni_char *plugin_path = candidate_viewer->GetPath(); const uni_char *plugin_name = candidate_viewer->GetProductName(); const uni_char *plugin_description = candidate_viewer->GetDescription(); const uni_char *plugin_version = candidate_viewer->GetVersion(); BOOL disabled = !candidate_viewer->IsEnabled(); // Start plug-in block RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L("<fieldset id=\"plug_%i\"%s>\n<legend>"), i, disabled ? UNI_L(" class=\"disabled\"") : UNI_L(""))); // Link for disabling/enabling plug-in RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<a href=\"#\">"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, disabled ? enable.CStr() : disable.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</a>\n"))); // Name if (plugin_name) RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, plugin_name)); uni_char *tmp; // Version - shown if non-empty if (plugin_version && *plugin_version) { RETURN_OOM_IF_NULL(tmp = HTMLify_string(plugin_version)); ANCHOR_ARRAY(uni_char, tmp); RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L("<span> - %s</span>"), tmp)); ANCHOR_ARRAY_DELETE(tmp); } else { plugin_version = UNI_L(""); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</legend>\n<div>\n"))); /* Description - shown if non-empty and different from name and version. It's not htmlified because it contains links. Instead function for stripping html tags is used that leaves A tags only. */ if (plugin_description && uni_strlen(plugin_description) && !uni_stri_eq(plugin_name, plugin_description) && !uni_stri_eq(plugin_description, plugin_version)) { OpString desc; RETURN_IF_ERROR(desc.Set(plugin_description)); StripHTMLTags(desc.CStr(), desc.Length()); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<div>"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, description.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L(": %s</div>\n"), desc.CStr())); } #ifdef ABOUT_PLUGINS_SHOW_ARCHITECTURE // Plugin architecture. Different from COMPONENT_PLUGIN means non-native. RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<div>"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, arch_label.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L(": "))); if (candidate_viewer->GetComponentType() == COMPONENT_PLUGIN) RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, arch_native.CStr())); else RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, arch_non_native.CStr())); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</div>\n"))); #endif // ABOUT_PLUGINS_SHOW_ARCHITECTURE // Path to the plug-in RETURN_OOM_IF_NULL(tmp = HTMLify_string(plugin_path)); ANCHOR_ARRAY(uni_char, tmp); RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L("<address>%s</address>\n"), tmp)); ANCHOR_ARRAY_DELETE(tmp); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<div class=\"mime\"><table>\n"))); // Find MIME types associated with this plug-in Viewer* viewer; ChainedHashIterator* viewer_iter; g_viewers->CreateIterator(viewer_iter); if (viewer_iter != NULL) { OpAutoPtr<OpHashIterator> viewer_iter_ap(viewer_iter); while (viewer_iter && (viewer=g_viewers->GetNextViewer(viewer_iter)) != NULL) { // Iterate over all plug-ins associated with this MIME type unsigned int numpluginviewers = viewer->GetPluginViewerCount(); for (unsigned int k = 0; k < numpluginviewers; ++ k) { const PluginViewer *p = viewer->GetPluginViewer(k); if (p && p->GetPath() && uni_strcmp(p->GetPath(), plugin_path) == 0) { // This is us. // MIME type const uni_char *mime_type = viewer->GetContentTypeString(); if (mime_type) { int mimestart = 0; RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L(" <tr>\n <td>"))); // Split string at "|"s for(int i = mimestart = 0; mime_type[i]; ++ i) { if (mime_type[i] == '|') { RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, mime_type + mimestart, i - mimestart)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<br>\n "))); mimestart = i + 1; } } // Print the remainder of the string RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, &mime_type[mimestart])); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</td>\n"))); } // Description OpString description; RETURN_IF_ERROR(p->GetTypeDescription(mime_type, description)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L(" <td>"))); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, description)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</td>\n"))); // Extensions RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L(" <td>"))); const uni_char *extensions = viewer->GetExtensions(); if (extensions) { int extstart = 0; // Split string at "|"s for (int i = 0; extensions[i]; ++ i) { if(extensions[i] == '|') { RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, extensions + extstart, extstart - i)); RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("<br>\n "))); extstart = i + 1; } } // Print the remainder of the string RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KHTMLify, &extensions[extstart])); } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</td>\n </tr>\n"))); } } } } RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</table></div>\n"))); // Finish plug-in block RETURN_IF_ERROR(m_url.WriteDocumentData(URL::KNormal, UNI_L("</div>\n</fieldset>\n"))); } if (detecting) { OpString detecting_str; RETURN_IF_ERROR(g_languageManager->GetString(Str::S_PLUGIN_DETECTING, detecting_str)); RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L("<p>%s</p>\n"), detecting_str.CStr())); } else if (!filtered_viewer_list.GetCount()) { OpString none_found; RETURN_IF_ERROR(g_languageManager->GetString(Str::SI_IDSTR_NONE_FOUND, none_found)); RETURN_IF_ERROR(m_url.WriteDocumentDataUniSprintf(UNI_L("<p>%s</p>\n"), none_found.CStr())); } // Finish off return CloseDocument(); }
/* Perform action assigned to given control object */ void DoControlAction ( const Int16 control /* control value of the object */ ) { UInt16 newRecord; Int16 controlID; /* Clear location of find pattern */ ClearFindPatternData(); if ( 0 < control ) { Int16 anchorIndex; UInt16 reference; Int16 paragraphOffset; Int16 byteOffsetInPara; UInt16 image; AnchorMode type; anchorIndex = control - 1; reference = GetVisibleReference( anchorIndex ); paragraphOffset = GetVisibleParagraphOffset( anchorIndex ); byteOffsetInPara = GetVisibleByteOffset( anchorIndex ); image = GetVisibleImage( anchorIndex ); image = GetVisibleImage( anchorIndex ); type = GetVisibleMode( anchorIndex ); SndPlaySystemSound( sndClick ); if ( image != 0 ) { RectangleType bounds; ListType* list; Int16 x; Int16 y; UInt16 prevCoordSys; Int16 selection; bounds = GetVisibleImagePosition( anchorIndex ); list = GetObjectPtr( frmMainImageDialog ); x = ( bounds.extent.x - 60 ) / 2; if ( x < 0 ) x = 0; y = ( bounds.extent.y - 22 ) / 2; if ( y < 0 ) y = 0; x += bounds.topLeft.x; y += bounds.topLeft.y; LstSetPosition( list, x, y ); prevCoordSys = PalmSetCoordinateSystem( STANDARD ); selection = LstPopupList( list ); PalmSetCoordinateSystem( prevCoordSys ); if ( selection == noListSelection ) { return; } else if ( selection == 1 ) { reference = image; } } if ( type == ANCHORMODE_LINK ) { Int16 byteOffset; if ( byteOffsetInPara == 0 ) { byteOffset = NO_OFFSET; } else { byteOffset = ParagraphNumToByteOffset( paragraphOffset ) + byteOffsetInPara; paragraphOffset = NO_OFFSET; } JumpToRecord( reference, paragraphOffset, byteOffset ); } #ifdef SUPPORT_ANNOTATION else if ( type == ANCHORMODE_ANNOTATION ) { DoAnnotate( GetVisibleAnnotationIdentifier( anchorIndex ), 0, 0, 0, 0, 0, NULL ); } #endif return; } if ( control != 0 ) SndPlaySystemSound( sndClick ); controlID = -( control + 1 ); switch ( controlID ) { case HOMECONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); ViewRecord( HOME_PAGE_ID, ADD_TO_HISTORY, 0, 0, WRITEMODE_DRAW_CHAR ); SetVisitedLink( HOME_PAGE_ID ); break; case LEFTCONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); newRecord = GetHistoryPrev(); if ( newRecord != NO_RECORD ) { ViewRecord( newRecord, FROM_HISTORY, NO_OFFSET, NO_OFFSET, WRITEMODE_DRAW_CHAR ); SetVisitedLink( newRecord ); } else { FrmGotoForm( GetValidForm( frmLibrary ) ); } break; case RIGHTCONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); newRecord = GetHistoryNext(); if ( newRecord != NO_RECORD ) { ViewRecord( newRecord, FROM_HISTORY, NO_OFFSET, NO_OFFSET, WRITEMODE_DRAW_CHAR ); SetVisitedLink( newRecord ); } break; case LIBRARYCONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); CloseDocument(); FrmGotoForm( GetValidForm( frmLibrary ) ); break; case FINDCONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); FrmPopupForm( frmSearch ); break; case AGAINCONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); SearchAgain(); break; case MENUCONTROL: DoAutoscrollToggle( AUTOSCROLL_OFF ); EvtEnqueueKey( menuChr, 0, commandKeyMask ); break; case OFFSETCONTROL: { UInt16 prevCoordSys; Int16 selection; DoAutoscrollToggle( AUTOSCROLL_OFF ); prevCoordSys = PalmSetCoordinateSystem( STANDARD ); selection = LstPopupList( GetObjectPtr( frmMainPercentList ) ); PalmSetCoordinateSystem( prevCoordSys ); if ( selection != noListSelection ) GotoLocation( selection ); break; } case BOOKMARKCONTROL: { UInt16 prevCoordSys; ListType* list; Int16 selection; UInt16 numOfBookmarks; DoAutoscrollToggle( AUTOSCROLL_OFF ); prevCoordSys = PalmSetCoordinateSystem( STANDARD ); list = GetObjectPtr( frmMainBookmarkList ); numOfBookmarks = CreatePopupBookmarkList( list ); if ( numOfBookmarks == 0 ) { PalmSetCoordinateSystem( prevCoordSys ); break; } selection = LstPopupList( GetObjectPtr( frmMainBookmarkList ) ); if ( 0 <= selection ) { BookmarkListEntry e; MemMove( &e, GetBookmarkListEntry( selection ), sizeof( BookmarkListEntry ) ); ReleaseBookmarkList(); PalmSetCoordinateSystem( prevCoordSys ); switch ( e.kind ) { case BOOKMARK_ADD_BOOKMARK: DoAddBookmark(); break; case BOOKMARK_EDIT_BOOKMARK: FrmPopupForm( frmBookmarks ); break; #ifdef SUPPORT_ANNOTATION case BOOKMARK_ADD_ANNOTATION: isSelectWordTapMode = true; selectedWordAction = SELECT_WORD_ANNOTATE; ShowSelectWordTapIcon(); break; #endif case BOOKMARK_BOOKMARK: case BOOKMARK_ANNOTATION: SendBookmarkGoToEvent( &e, false ); break; case BOOKMARK_EXT_BOOKMARK: GoToExtBookmark( e.recordNum ); break; case BOOKMARK_INVALID: break; } } else { ReleaseBookmarkList(); PalmSetCoordinateSystem( prevCoordSys ); } break; } case AUTOSCROLLSTARTCONTROL: case AUTOSCROLLSTOPCONTROL: DoAutoscrollToggle( AUTOSCROLL_TOGGLE ); break; case AUTOSCROLLINCRCONTROL: DoAutoscrollIncr(); break; case AUTOSCROLLDECRCONTROL: DoAutoscrollDecr(); break; case COPYTOMEMOCONTROL: DoHardcopy(); break; #ifdef SUPPORT_WORD_LOOKUP case SELECTEDWORDCONTROL: { EventType newEvent; MemSet( &newEvent, sizeof( newEvent ), 0 ); newEvent.eType = pluckerSelectedWordEvent; newEvent.data.generic.datum[ 0 ] = selectedWordAction; EvtAddEventToQueue( &newEvent ); break; } #endif default: break; } }
MobiBookReader::~MobiBookReader() { CloseDocument(); }