From 6e7332036e429f55e6ed19373fb7081e54204e15 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 3 Jan 2014 13:15:05 +0100 Subject: [PATCH] Newspaper mode initial implementation. --- CMakeLists.txt | 2 ++ src/gui/feedmessageviewer.cpp | 4 ++++ src/gui/messagesview.h | 2 ++ src/gui/webbrowser.cpp | 22 ++++++++++++++++++++++ src/gui/webbrowser.h | 3 +++ src/gui/webview.cpp | 24 +++++++++++++----------- 6 files changed, 46 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 34246833e..d808bfcf1 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,6 +153,8 @@ endif(CMAKE_BUILD_TYPE STREQUAL "release" OR CMAKE_BUILD_TYPE STREQUAL "Release" # Force Qt to use string builders. add_definitions(-DQT_USE_QSTRINGBUILDER) +add_definitions(-DQT_USE_FAST_CONCATENATION) +add_definitions(-DQT_USE_FAST_OPERATOR_PLUS) # Unicode settings. add_definitions(-DUNICODE -D_UNICODE) diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index aa4a36f47..d78a4170e 100644 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -136,6 +136,10 @@ void FeedMessageViewer::createConnections() { m_messagesBrowser, SLOT(clear())); connect(m_messagesView, SIGNAL(currentMessageChanged(Message)), m_messagesBrowser, SLOT(navigateToMessage(Message))); + + connect(m_messagesView, SIGNAL(openMessagesInNewspaperViewRequested(QList)), + m_messagesBrowser, SLOT(navigateToMessages(QList))); + connect(m_messagesView, SIGNAL(openMessageNewTabRequested(Message)), FormMain::getInstance()->m_ui->m_tabWidget, SLOT(addBrowserWithMessage(Message))); diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h index 8d5d1fc23..8f1854dfc 100755 --- a/src/gui/messagesview.h +++ b/src/gui/messagesview.h @@ -66,6 +66,8 @@ class MessagesView : public QTreeView { signals: void openLinkMessageNewTabRequested(const QString &link); void openMessageNewTabRequested(const Message &message); + void openMessagesInNewspaperViewRequested(const QList &messages); + void currentMessageChanged(const Message &message); void currentMessageRemoved(); diff --git a/src/gui/webbrowser.cpp b/src/gui/webbrowser.cpp index 4e74e053b..1fb959ede 100644 --- a/src/gui/webbrowser.cpp +++ b/src/gui/webbrowser.cpp @@ -182,6 +182,28 @@ void WebBrowser::navigateToMessage(const Message &message) { IconThemeFactory::getInstance()->fromTheme("mail-mark-read")); } +void WebBrowser::navigateToMessages(const QList &messages) { + QString messages_layout; + QString default_message_layout = SkinFactory::getInstance()->getCurrentMarkup(); + + foreach (const Message &message, messages) { + messages_layout.append(default_message_layout.arg(message.m_title, + tr("Written by ") + (message.m_author.isEmpty() ? + tr("uknown author") : + message.m_author), + message.m_url, + message.m_contents, + message.m_created.toString(Qt::DefaultLocaleShortDate))); + } + QString layout_wrapper = SkinFactory::getInstance()->getCurrentMarkupLayout().arg(tr("Newspaper view"), + messages_layout); + + m_webView->setHtml(layout_wrapper); + emit iconChanged(m_index, + IconThemeFactory::getInstance()->fromTheme("mail-mark-read")); + +} + void WebBrowser::updateZoomGui() { m_btnResetZoom->setText(QString("%1%").arg(QString::number(m_webView->zoomFactor() * 100, 'f', diff --git a/src/gui/webbrowser.h b/src/gui/webbrowser.h index 4702c4197..5a08379f8 100644 --- a/src/gui/webbrowser.h +++ b/src/gui/webbrowser.h @@ -63,6 +63,9 @@ class WebBrowser : public TabContent { // Navigates to message. void navigateToMessage(const Message &message); + // Navigates to messages via "newspaper" view. + void navigateToMessages(const QList &messages); + // Clears contents. void clear(); diff --git a/src/gui/webview.cpp b/src/gui/webview.cpp index dfbf38899..36e0a0024 100644 --- a/src/gui/webview.cpp +++ b/src/gui/webview.cpp @@ -107,17 +107,19 @@ void WebView::initializeActions() { } void WebView::displayErrorPage() { - setHtml(SkinFactory::getInstance()->getCurrentMarkup().arg(tr("Page not found"), - tr("Check your internet connection or website address"), - QString(), - tr("This failure can be caused by:
    " - "
  • non-functional internet connection,
  • " - "
  • incorrect website address,
  • " - "
  • bad proxy server settings,
  • " - "
  • target destination outage,
  • " - "
  • many other things.
  • " - "
"), - QDateTime::currentDateTime().toString(Qt::DefaultLocaleLongDate))); + setHtml(SkinFactory::getInstance()->getCurrentMarkupLayout().arg( + tr("Error page"), + SkinFactory::getInstance()->getCurrentMarkup().arg(tr("Page not found"), + tr("Check your internet connection or website address"), + QString(), + tr("This failure can be caused by:
    " + "
  • non-functional internet connection,
  • " + "
  • incorrect website address,
  • " + "
  • bad proxy server settings,
  • " + "
  • target destination outage,
  • " + "
  • many other things.
  • " + "
"), + QDateTime::currentDateTime().toString(Qt::DefaultLocaleLongDate)))); } void WebView::popupContextMenu(const QPoint &pos) {