From 700637ca1dd675ce18f2e9e56387dab86020a623 Mon Sep 17 00:00:00 2001 From: rootavish Date: Thu, 14 Aug 2014 07:41:35 +0530 Subject: Inverted colors(night) viewing mode for ePub Added the capability to view and epub document with inverted colors, yet to test for documents where we write the stylesheet, although the code is there. --- libview/ev-web-view.c | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) (limited to 'libview/ev-web-view.c') diff --git a/libview/ev-web-view.c b/libview/ev-web-view.c index b1fe3b08..5d1f5034 100644 --- a/libview/ev-web-view.c +++ b/libview/ev-web-view.c @@ -58,7 +58,7 @@ struct _EvWebView EvDocument *document; EvDocumentModel *model; gint current_page; - gboolean inverted_colors ; + gboolean inverted_stylesheet ; gboolean fullscreen; SearchParams *search; #if GTK_CHECK_VERSION (3, 0, 0) @@ -157,7 +157,7 @@ ev_web_view_init (EvWebView *webview) webview->search->search_jump = TRUE ; webview->fullscreen = FALSE; - + webview->inverted_stylesheet = FALSE; webview->hlink = NULL; } @@ -262,29 +262,28 @@ ev_web_view_inverted_colors_changed_cb (EvDocumentModel *model, GParamSpec *pspec, EvWebView *webview) { - guint inverted_colors = ev_document_model_get_inverted_colors (model); - inverted_colors = !inverted_colors; - /*TODO*/ + EvDocument *document = ev_document_model_get_document(model); + + if (ev_document_model_get_inverted_colors(model) == TRUE) { + if (document == NULL) { + ev_document_model_set_inverted_colors(model,FALSE); + return; + } + if (webview->inverted_stylesheet == FALSE) { + ev_document_check_add_night_sheet(document); + webview->inverted_stylesheet = TRUE; + } + ev_document_toggle_night_mode(document,TRUE); + webkit_web_view_reload(WEBKIT_WEB_VIEW(webview)); + } + else { + if (document != NULL) { + ev_document_toggle_night_mode(document,FALSE); + webkit_web_view_reload(WEBKIT_WEB_VIEW(webview)); + } + } } -static void -ev_web_view_fullscreen_changed_cb (EvDocumentModel *model, - GParamSpec *pspec, - EvWebView *webview) -{ - gboolean fullscreen = ev_document_model_get_fullscreen (model); - - webview->fullscreen = fullscreen; -#if GTK_CHECK_VERSION (3, 0, 0) - WebKitWindowProperties *window_properties = - webkit_web_view_get_window_properties (WEBKIT_WEB_VIEW(webview)); - - webkit_window_properties_get_fullscreen(window_properties); - /*TODO*/ -#else - webkit_web_view_set_view_mode(WEBKIT_WEB_VIEW(webview), WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN); -#endif -} void ev_web_view_set_model (EvWebView *webview, EvDocumentModel *model) @@ -309,7 +308,7 @@ ev_web_view_set_model (EvWebView *webview, /* Initialize webview from model */ webview->fullscreen = ev_document_model_get_fullscreen (webview->model); webview->document = ev_document_model_get_document(webview->model); - webview->inverted_colors = ev_document_model_get_inverted_colors(webview->model); + ev_web_view_document_changed_cb (webview->model, NULL, webview); g_signal_connect (webview->model, "notify::document", -- cgit v1.2.1