Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- constructor()
- {
- var settings = new WebKit.Settings();
- settings.set_enable_accelerated_2d_canvas(true);
- settings.set_enable_html5_database(false);
- settings.set_enable_html5_local_storage(false);
- settings.set_enable_java(false);
- settings.set_enable_media_stream(false);
- settings.set_enable_page_cache(false);
- settings.set_enable_plugins(false);
- settings.set_enable_private_browsing(true);
- settings.set_enable_smooth_scrolling(true);
- settings.set_javascript_can_access_clipboard(false);
- settings.set_javascript_can_open_windows_automatically(false);
- settings.set_media_playback_requires_user_gesture(true);
- settings.set_user_agent_with_application_details("FeedReader", AboutInfo.version);
- m_view = new WebKit.WebView();
- m_view.set_settings(settings);
- m_view.load_changed.connect(open_link);
- m_view.context_menu.connect(() => { return true; });
- m_view.set_events(Gdk.EventMask.POINTER_MOTION_MASK);
- m_view.set_events(Gdk.EventMask.BUTTON_PRESS_MASK);
- m_view.set_events(Gdk.EventMask.BUTTON_RELEASE_MASK);
- m_view.button_press_event.connect(onClick);
- m_view.button_release_event.connect(onRelease);
- m_view.enter_fullscreen.connect(() => { enterFullscreen(); return false;});
- m_view.leave_fullscreen.connect(() => { leaveFullscreen(); return false;});
- m_search = m_view.get_find_controller();
- WebKit.WebContext.get_default().set_cache_model(WebKit.CacheModel.DOCUMENT_BROWSER);
- }
- public void fillContent(string articleID)
- {
- m_currentArticle = articleID;
- logger.print(LogMessage.DEBUG, "ArticleView: load article %s".printf(articleID));
- if(isLoading())
- {
- m_view.load_failed.connect(loadFailed);
- m_view.stop_loading();
- return;
- }
- //.........................
- // load article
- //.........................
- m_view.load_html(
- html
- "file://" + GLib.Environment.get_home_dir() + "/.local/share/feedreader/data/images/");
- }
- public bool isLoading()
- {
- return m_view.is_loading;
- }
- public void open_link(WebKit.LoadEvent load_event)
- {
- switch (load_event)
- {
- case WebKit.LoadEvent.STARTED:
- logger.print(LogMessage.DEBUG, "ArticleView: load STARTED");
- string url = m_view.get_uri();
- // sometimes these "file://"-urls appear when opening lots of articles very fast oO no idea why
- if(url != "file://" + GLib.Environment.get_home_dir() + "/.local/share/feedreader/data/images/")
- {
- logger.print(LogMessage.DEBUG, "ArticleView: open external url: %s".printf(url));
- try{
- Gtk.show_uri(Gdk.Screen.get_default(), url, Gdk.CURRENT_TIME);
- }
- catch(GLib.Error e){
- logger.print(LogMessage.DEBUG, "could not open the link in an external browser: %s".printf(e.message));
- }
- m_view.stop_loading();
- }
- break;
- case WebKit.LoadEvent.COMMITTED:
- logger.print(LogMessage.DEBUG, "ArticleView: load COMMITTED");
- if(m_searchTerm != "")
- m_search.search(m_searchTerm, WebKit.FindOptions.CASE_INSENSITIVE, 99);
- break;
- case WebKit.LoadEvent.FINISHED:
- logger.print(LogMessage.DEBUG, "ArticleView: load FINISHED");
- break;
- }
- }
- private bool loadFailed(WebKit.LoadEvent event, string failing_uri, void* error)
- {
- GLib.Error e = (GLib.Error)error;
- logger.print(LogMessage.DEBUG, "ArticleView: load failed: message: \"%s\", domain \"%s\", code \"%i\"".printf(e.message, e.domain.to_string(), e.code));
- if(e.matches(WebKit.NetworkError.quark(), 302))
- {
- logger.print(LogMessage.DEBUG, "ArticleView: loading canceled " + m_currentArticle);
- WebKit.WebContext.get_default().clear_cache();
- m_view.load_failed.disconnect(loadFailed);
- fillContent(m_currentArticle);
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement