--- a/emailuis/nmailui/src/nmviewerview.cpp Thu May 27 12:43:55 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerview.cpp Fri Jun 11 13:27:14 2010 +0300
@@ -73,6 +73,8 @@
mViewReady(false),
mWaitNoteCancelled(false)
{
+ NM_FUNCTION;
+
// Create documentloader
mDocumentLoader = new NmUiDocumentLoader(mMainWindow);
// Get screensize
@@ -93,6 +95,8 @@
*/
NmViewerView::~NmViewerView()
{
+ NM_FUNCTION;
+
delete mWebView;
mWebView = NULL;
delete mMessage;
@@ -112,6 +116,8 @@
*/
void NmViewerView::aboutToExitView()
{
+ NM_FUNCTION;
+
// View is about to exit, for safety, stop
// loading of content before closing the view
if (mWebView){
@@ -127,6 +133,8 @@
*/
void NmViewerView::loadViewLayout()
{
+ NM_FUNCTION;
+
// Use document loader to load the view
bool ok = false;
setObjectName(QString(NMUI_MESSAGE_VIEWER_VIEW));
@@ -134,10 +142,9 @@
objectList.append(this);
// Pass the view to documentloader. Document loader uses this view
// when docml is parsed, instead of creating new view.
- if (mDocumentLoader) {
- mDocumentLoader->setObjectTree(objectList);
- mWidgetList = mDocumentLoader->load(NMUI_MESSAGE_VIEWER_XML, &ok);
- }
+ // documentloader is created in constructor
+ mDocumentLoader->setObjectTree(objectList);
+ mWidgetList = mDocumentLoader->load(NMUI_MESSAGE_VIEWER_XML, &ok);
int widgetCount = mWidgetList.count();
if (ok == true && widgetCount)
{
@@ -161,16 +168,18 @@
// Get scroll area contents and set layout margins
mScrollAreaContents = qobject_cast<HbWidget *>(
mDocumentLoader->findObject(NMUI_MESSAGE_VIEWER_SCROLL_AREA_CONTENTS));
- if (mScrollAreaContents->layout()){
- mScrollAreaContents->layout()->setContentsMargins(0,0,0,0);
+ if (mScrollAreaContents) {
+ QGraphicsLayout *layout = mScrollAreaContents->layout();
+ if (layout){
+ layout->setContentsMargins(0,0,0,0);
+ }
+ // Set white pixmap to backgrounditem
+ QPixmap whitePixmap(10,10);
+ whitePixmap.fill(Qt::white);
+ QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(whitePixmap);
+ mScrollAreaContents->setBackgroundItem(pixmapItem);
}
- // Set white pixmap to backgrounditem
- QPixmap whitePixmap(10,10);
- whitePixmap.fill(Qt::white);
- QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(whitePixmap);
- mScrollAreaContents->setBackgroundItem(pixmapItem);
-
// Load headerwidget
mHeaderWidget = qobject_cast<NmViewerHeader *>(
mDocumentLoader->findObject(NMUI_MESSAGE_VIEWER_HEADER));
@@ -187,21 +196,26 @@
if (mWebView) {
mWebView->setParentView(this);
// Set auto load images and private browsing(no history) attributes
- mWebView->settings()->setAttribute(QWebSettings::AutoLoadImages, true);
- mWebView->settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
+ QWebSettings *settings = mWebView->settings();
+ if (settings) {
+ settings->setAttribute(QWebSettings::AutoLoadImages, true);
+ settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
+ }
HbEditorInterface editorInterface(mWebView);
editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
mWebView->setAcceptedMouseButtons(Qt::NoButton);
- if (mWebView->page()){
- mWebView->page()->mainFrame()->setScrollBarPolicy(Qt::Vertical,
- Qt::ScrollBarAlwaysOff);
- mWebView->page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal,
- Qt::ScrollBarAlwaysOff);
- connect(mWebView->page()->mainFrame(),
- SIGNAL(contentsSizeChanged(const QSize&)),
- this, SLOT(scaleWebViewWhenLoading(const QSize&)));
+ QWebPage *page = mWebView->page();
+ if (page) {
+ QWebFrame *frame = page->mainFrame();
+ if (frame) {
+ frame->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff);
+ frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+ connect(mWebView->page()->mainFrame(),
+ SIGNAL(contentsSizeChanged(const QSize&)),
+ this, SLOT(scaleWebViewWhenLoading(const QSize&)));
+ }
}
- }
+ }
}
}
}
@@ -211,14 +225,15 @@
*/
void NmViewerView::viewReady()
{
+ NM_FUNCTION;
+
if (!mViewReady){
// Set mailbox name to title
setMailboxName();
// Create toolbar if needed
if (mToolbarEnabled) {
createToolBar();
- }
- else {
+ } else {
// Connect options menu about to show to create options menu function
QObject::connect(menu(), SIGNAL(aboutToShow()),
this, SLOT(createOptionsMenu()));
@@ -226,12 +241,11 @@
NmAction *dummy = new NmAction(0);
menu()->addAction(dummy);
}
-
-
- if (mHeaderWidget){
+
+ if (mHeaderWidget) {
QPointF contentWidgetPos = mScrollArea->pos();
qreal headerHeight = mHeaderWidget->geometry().height();
- if(mMainWindow->orientation()==Qt::Horizontal) {
+ if (mMainWindow->orientation() == Qt::Horizontal) {
const QPointF pointToWebView(contentWidgetPos.x(), headerHeight+NmHeaderMargin);
mScrollArea->scrollContentsTo(pointToWebView,0);
}
@@ -240,7 +254,7 @@
// Run fetchmessage in queue
QMetaObject::invokeMethod(this, "fetchMessage", Qt::QueuedConnection);
// Set view ready
- mViewReady=true;
+ mViewReady = true;
}
}
@@ -249,18 +263,17 @@
*/
void NmViewerView::loadMessage()
{
+ NM_FUNCTION;
+
if (mMessage) {
delete mMessage;
mMessage = NULL;
}
- NmId mailboxId;
- NmId folderId;
- NmId msgId;
// Read start params and message object
if (mStartParam){
- mailboxId = mStartParam->mailboxId();
- folderId = mStartParam->folderId();
- msgId = mStartParam->messageId();
+ NmId mailboxId = mStartParam->mailboxId();
+ NmId folderId = mStartParam->folderId();
+ NmId msgId = mStartParam->messageId();
mMessage = mUiEngine.message(mailboxId, folderId, msgId);
}
}
@@ -271,7 +284,8 @@
*/
void NmViewerView::fetchMessage()
{
-#ifdef Q_OS_SYMBIAN
+ NM_FUNCTION;
+
if (mMessage) {
NmId mailboxId = mStartParam->mailboxId();
NmId folderId = mStartParam->folderId();
@@ -295,28 +309,13 @@
SIGNAL(operationCompleted(int)),
this,
SLOT(messageFetched(int)));
-
- delete mWaitDialog;
- mWaitDialog = NULL;
- // Create new wait dialog and set it to me modal with dimmed background
- mWaitDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
- mWaitDialog->setModal(true);
- mWaitDialog->setBackgroundFaded(true);
- connect(mWaitDialog, SIGNAL(cancelled()), this, SLOT(waitNoteCancelled()));
- mWaitDialog->setText(hbTrId("txt_mail_dialog_loading_mail_content"));
- // Display wait dialog
- mWaitDialog->show();
+ createAndShowWaitDialog();
}
- }
- else {
+ } else {
// message is fetched
setMessageData();
}
-
}
-#else
- setMessageData();
-#endif
}
/*!
@@ -324,6 +323,8 @@
*/
void NmViewerView::messageFetched(int result)
{
+ NM_FUNCTION;
+
mWaitDialog->close();
if (result == NmNoError && mMessageFetchingOperation) {
@@ -331,14 +332,11 @@
delete mMessage;
mMessage = NULL;
}
- NmId mailboxId;
- NmId folderId;
- NmId msgId;
// Read start params and message object
if (mStartParam) {
- mailboxId = mStartParam->mailboxId();
- folderId = mStartParam->folderId();
- msgId = mStartParam->messageId();
+ NmId mailboxId = mStartParam->mailboxId();
+ NmId folderId = mStartParam->folderId();
+ NmId msgId = mStartParam->messageId();
mMessage = mUiEngine.message(mailboxId, folderId, msgId);
}
setMessageData();
@@ -355,6 +353,8 @@
*/
void NmViewerView::waitNoteCancelled()
{
+ NM_FUNCTION;
+
if (!mWaitNoteCancelled) {
if (mMessageFetchingOperation && mMessageFetchingOperation->isRunning()) {
mMessageFetchingOperation->cancelOperation();
@@ -370,6 +370,8 @@
*/
void NmViewerView::setMessageData()
{
+ NM_FUNCTION;
+
// Connect to observe orientation change events
connect(mApplication.mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
this, SLOT(orientationChanged(Qt::Orientation)));
@@ -411,6 +413,8 @@
*/
void NmViewerView::setAttachmentList()
{
+ NM_FUNCTION;
+
// Load headerwidget
mAttaWidget = qobject_cast<NmAttachmentListWidget *>(
mDocumentLoader->findObject(NMUI_MESSAGE_VIEWER_ATTALIST));
@@ -464,11 +468,16 @@
*/
void NmViewerView::openAttachment(int index)
{
+ NM_FUNCTION;
+
NmId attaId = mAttaIdList.at(index);
// reload message to get updates part sizes
loadMessage();
QList<NmMessagePart*> messageParts;
mMessage->attachmentList(messageParts);
+ NmId mailboxId = mMessage->envelope().mailboxId();
+ NmId folderId = mMessage->envelope().folderId();
+ NmId messageId = mMessage->envelope().messageId();
for (int i = 0; i < messageParts.count(); i++) {
// message part found have to found
// and its fetched size is smaller than size, then start part fetch
@@ -477,20 +486,14 @@
// do not start if there's already ongoing fetch
if (mAttaIndexUnderFetch == NmNotFoundError) {
mAttaIndexUnderFetch = index;
- mAttaManager.fetchAttachment(
- mMessage->envelope().mailboxId(),
- mMessage->envelope().folderId(),
- mMessage->envelope().messageId(),
- attaId);
+ mAttaManager.fetchAttachment(mailboxId, folderId,
+ messageId, attaId);
}
}
// attachment is fetched, open file
else if (messageParts[i]->partId() == attaId) {
- XQSharableFile file = mUiEngine.messagePartFile(
- mMessage->envelope().mailboxId(),
- mMessage->envelope().folderId(),
- mMessage->envelope().messageId(),
- attaId);
+ XQSharableFile file = mUiEngine.messagePartFile(mailboxId, folderId,
+ messageId, attaId);
NmUtilities::openFile(file);
file.close();
}
@@ -502,8 +505,13 @@
*/
QString NmViewerView::formatMessage()
{
+ NM_FUNCTION;
+
QString msg = "";
// null pointer check for mMessage is done before calling this function
+ NmId mailboxId = mMessage->envelope().mailboxId();
+ NmId folderId = mMessage->envelope().folderId();
+ NmId messageId = mMessage->envelope().messageId();
NmMessagePart *html = mMessage->htmlBodyPart();
if (html) {
QList<NmMessagePart*> parts;
@@ -512,26 +520,24 @@
NmMessagePart *child = parts[i];
// Browse through embedded image parts and add those
// the web view.
- quint32 fetchedSize = child->fetchedSize();
- quint32 size = child->size();
- if (fetchedSize >= size &&
- child->contentType().startsWith("image", Qt::CaseInsensitive)) {
+ bool isFetched = child->fetchedSize() >= child->size();
+ if (child->contentType().startsWith("image", Qt::CaseInsensitive)) {
QString contentId = child->contentId();
- int ret = mUiEngine.contentToMessagePart(
- mMessage->envelope().mailboxId(),
- mMessage->envelope().folderId(),
- mMessage->envelope().messageId(),
- *child);
- if (ret == NmNoError) {
- mWebView->addContent(contentId, QVariant::fromValue(child->binaryContent()));
+ if (isFetched) {
+ int ret = mUiEngine.contentToMessagePart(
+ mailboxId, folderId, messageId, *child);
+ if (ret == NmNoError) {
+ mWebView->addContent(contentId, QVariant::fromValue(child->binaryContent()),
+ child->partId(), isFetched);
+ }
+ }
+ else {
+ mWebView->addContent(contentId, QVariant::fromValue(QByteArray()),
+ child->partId(), isFetched);
}
}
}
- int ret = mUiEngine.contentToMessagePart(
- mMessage->envelope().mailboxId(),
- mMessage->envelope().folderId(),
- mMessage->envelope().messageId(),
- *html);
+ int ret = mUiEngine.contentToMessagePart(mailboxId, folderId, messageId, *html);
if (ret == NmNoError) {
msg = html->textContent();
}
@@ -539,15 +545,12 @@
else {
NmMessagePart *plain = mMessage->plainTextBodyPart();
if (plain) {
- int ret = mUiEngine.contentToMessagePart(
- mMessage->envelope().mailboxId(),
- mMessage->envelope().folderId(),
- mMessage->envelope().messageId(),
- *plain);
+ int ret = mUiEngine.contentToMessagePart(mailboxId, folderId,
+ messageId, *plain);
if (ret == NmNoError) {
- QTextDocument doku;
+ QTextDocument document;
// set font
- QFont currentFont = doku.defaultFont();
+ QFont currentFont = document.defaultFont();
currentFont.setWeight(QFont::Normal);
qreal secondarySize;
HbStyle myStyle;
@@ -557,10 +560,10 @@
fontSpec.setTextHeight(secondarySize);
currentFont.setPixelSize(fontSpec.font().pixelSize());
}
- doku.setDefaultFont(currentFont);
+ document.setDefaultFont(currentFont);
// convert to html
- doku.setPlainText(plain->textContent());
- msg = doku.toHtml();
+ document.setPlainText(plain->textContent());
+ msg = document.toHtml();
if (qApp->layoutDirection()==Qt::RightToLeft){
// add right alignment to document css section
@@ -589,6 +592,8 @@
*/
void NmViewerView::reloadViewContents(NmUiStartParam* startParam)
{
+ NM_FUNCTION;
+
// Check start parameter validity, message view cannot
// be updated if given parameter is zero.
if (startParam && startParam->viewId() == NmUiViewMessageViewer &&
@@ -613,6 +618,8 @@
*/
NmUiViewId NmViewerView::nmailViewId() const
{
+ NM_FUNCTION;
+
return NmUiViewMessageViewer;
}
@@ -621,6 +628,8 @@
*/
void NmViewerView::webFrameLoaded(bool loaded)
{
+ NM_FUNCTION;
+
if (loaded){
webFrameloadingCompleted = true;
// Scale web view after loading the
@@ -634,31 +643,29 @@
*/
void NmViewerView::scaleWebViewWhenLoading(const QSize &size)
{
+ NM_FUNCTION;
+
// Try to scale web view while mainframe is being loaded.
// So that screen is scrollable even before images are fully loaded
// First check that new size is different than previous, no need to react if
// same size value is received more than once.
- if (size!=mLatestLoadingSize){
- if (!webFrameloadingCompleted&&mWebView&&mWebView->page()&&
- (size.width()>mScreenSize.width()||size.height()>mScreenSize.height())) {
+ if (size != mLatestLoadingSize) {
+ if (!webFrameloadingCompleted && mWebView && mWebView->page() &&
+ (size.width() > mScreenSize.width() || size.height() > mScreenSize.height())) {
int width = (int)size.width();
int height = (int)size.height();
// Set content (webview) width
if (mDisplayingPlainText){
- mWebView->setMaximumWidth(mScreenSize.width());
- mWebView->setMinimumWidth(mScreenSize.width());
- mWebView->setPreferredWidth(mScreenSize.width());
+ setWebViewWidth(mScreenSize.width());
}
else {
- mWebView->setMaximumWidth(width);
- mWebView->setMinimumWidth(width);
- mWebView->setPreferredWidth(width);
+ setWebViewWidth(width);
}
mWebView->setMinimumHeight(height);
mWebView->setPreferredHeight(height);
}
}
- mLatestLoadingSize=size;
+ mLatestLoadingSize = size;
}
/*!
@@ -666,21 +673,18 @@
*/
void NmViewerView::scaleWebViewWhenLoaded()
{
+ NM_FUNCTION;
+
if (mWebView&&mWebView->page()) {
QSizeF contentSize = mWebView->page()->mainFrame()->contentsSize();
int width = (int)contentSize.width();
int height = (int)contentSize.height();
// Set content (webview) width
- if (mDisplayingPlainText){
+ if (mDisplayingPlainText) {
mWebView->page()->setPreferredContentsSize(mScreenSize);
- mWebView->setMinimumWidth(mScreenSize.width());
- mWebView->setMaximumWidth(mScreenSize.width());
- mWebView->setPreferredWidth(mScreenSize.width());
- }
- else {
- mWebView->setMinimumWidth(width);
- mWebView->setMaximumWidth(width);
- mWebView->setPreferredWidth(width);
+ setWebViewWidth(mScreenSize.width());
+ } else {
+ setWebViewWidth(width);
}
// Set content (webview) height
if (mScrollAreaContents){
@@ -689,14 +693,9 @@
contentRect.setHeight(geometry().height());
mViewerContent->setPreferredHeight(contentRect.height());
qreal webViewHeight = geometry().height()-mHeaderWidget->geometry().height();
- mWebView->setMinimumHeight(webViewHeight);
- mWebView->setMaximumHeight(webViewHeight);
- mWebView->setPreferredHeight(webViewHeight);
- }
- else{
- mWebView->setMinimumHeight(height);
- mWebView->setMaximumHeight(height);
- mWebView->setPreferredHeight(height);
+ setWebViewHeighth(webViewHeight);
+ } else {
+ setWebViewHeighth(height);
}
}
}
@@ -708,6 +707,8 @@
*/
void NmViewerView::adjustViewDimensions()
{
+ NM_FUNCTION;
+
// Update current screensize
mScreenSize = mApplication.screenSize();
// Scale header to screen width
@@ -758,6 +759,8 @@
*/
void NmViewerView::orientationChanged(Qt::Orientation orientation)
{
+ NM_FUNCTION;
+
Q_UNUSED(orientation);
QTimer::singleShot(NmOrientationTimer, this, SLOT(adjustViewDimensions()));
}
@@ -767,7 +770,8 @@
*/
void NmViewerView::linkClicked(const QUrl& link)
{
- NMLOG("link clicked");
+ NM_FUNCTION;
+
if (link.scheme() == "http" ||
link.scheme() == "https" ) {
QDesktopServices::openUrl(link);
@@ -794,19 +798,9 @@
*/
void NmViewerView::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
- NmMailViewerWK* view = webView();
- if (event&& view && mHeaderWidget && mScrollAreaContents) {
- QPointF lastReleasePoint = event->pos();
- QPointF contentWidgetPos = mScrollAreaContents->pos();
- qreal headerHeight = mHeaderWidget->geometry().height();
- qreal y = lastReleasePoint.y()-headerHeight;
- y -= contentWidgetPos.y();
- qreal x = lastReleasePoint.x()-contentWidgetPos.x();
- const QPointF pointToWebView(x, y);
- event->setPos(pointToWebView);
- event->setAccepted(true);
- view->sendMouseReleaseEvent(event);
- }
+ NM_FUNCTION;
+ handleMouseEvent(event, false);
+
}
/*!
@@ -814,19 +808,8 @@
*/
void NmViewerView::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
{
- NmMailViewerWK* view = webView();
- if (event&& view && mHeaderWidget && mScrollAreaContents) {
- QPointF lastPressPoint = event->pos();
- QPointF contentWidgetPos = mScrollAreaContents->pos();
- qreal headerHeight = mHeaderWidget->geometry().height();
- qreal y = lastPressPoint.y()-headerHeight;
- y -= contentWidgetPos.y();
- qreal x = lastPressPoint.x()-contentWidgetPos.x();
- const QPointF pointToWebView(x, y);
- event->setPos(pointToWebView);
- event->setAccepted(true);
- view->sendMousePressEvent(event);
- }
+ NM_FUNCTION;
+ handleMouseEvent(event, true);
}
/*!
@@ -835,12 +818,14 @@
*/
bool NmViewerView::eventOnTopOfHeaderArea(QGraphicsSceneMouseEvent *event)
{
+ NM_FUNCTION;
+
bool ret(false);
- if (event && mHeaderWidget){
+ if (event && mHeaderWidget) {
QPointF lastReleasePoint = event->lastPos();
QPointF contentWidgetPos = mScrollAreaContents->pos();
int headerHeight = (int)mHeaderWidget->geometry().height();
- if (lastReleasePoint.y()<headerHeight+contentWidgetPos.y()){
+ if (lastReleasePoint.y()<headerHeight+contentWidgetPos.y()) {
ret=true;
}
}
@@ -852,18 +837,30 @@
*/
NmMailViewerWK* NmViewerView::webView()
{
+ NM_FUNCTION;
+
return mWebView;
}
/*!
+
+*/
+NmMessage* NmViewerView::message()
+{
+ return mMessage;
+}
+
+/*!
Function to set message read status
*/
void NmViewerView::changeMessageReadStatus(bool read)
{
+ NM_FUNCTION;
+
QList<const NmMessageEnvelope*> envelopeList;
NmMessageEnvelope *envelope = &mMessage->envelope();
QPointer<NmStoreEnvelopesOperation> op(NULL);
- if (envelope){
+ if (envelope) {
if ( read != envelope->isRead() ){
if (read){
envelope->setRead(true);
@@ -892,9 +889,11 @@
*/
void NmViewerView::setMailboxName()
{
+ NM_FUNCTION;
+
if (mStartParam){
NmMailboxMetaData *meta = mUiEngine.mailboxById(mStartParam->mailboxId());
- if (meta){
+ if (meta) {
setTitle(meta->name());
}
}
@@ -907,21 +906,23 @@
*/
void NmViewerView::contentScrollPositionChanged(const QPointF &newPosition)
{
+ NM_FUNCTION;
+
if (mWebView&&mHeaderWidget){
QRectF webViewRect = mWebView->geometry();
QTransform tr;
qreal leftMovementThreshold(webViewRect.width()-mHeaderWidget->geometry().width());
- if (newPosition.x()<0){
+ if (newPosition.x()<0) {
tr.translate(webViewRect.topLeft().x() ,0);
}
- else if (newPosition.x()>=0 && newPosition.x()<leftMovementThreshold){
+ else if (newPosition.x()>=0 && newPosition.x()<leftMovementThreshold) {
tr.translate(mHeaderStartScenePos.x()+newPosition.x() ,0);
}
else {
tr.translate(webViewRect.topLeft().x()+leftMovementThreshold ,0);
}
mHeaderWidget->setTransform(tr);
- if (mAttaWidget){
+ if (mAttaWidget) {
mAttaWidget->setTransform(tr);
}
}
@@ -934,6 +935,8 @@
*/
void NmViewerView::createToolBar()
{
+ NM_FUNCTION;
+
HbToolBar *tb = toolBar();
NmUiExtensionManager &extMngr = mApplication.extManager();
if (tb && &extMngr && mStartParam) {
@@ -954,6 +957,8 @@
*/
void NmViewerView::createOptionsMenu()
{
+ NM_FUNCTION;
+
HbMenu *optionsMenu = menu();
NmUiExtensionManager &extMngr = mApplication.extManager();
if (optionsMenu && &extMngr && mStartParam) {
@@ -975,6 +980,8 @@
*/
void NmViewerView::handleActionCommand(NmActionResponse &actionResponse)
{
+ NM_FUNCTION;
+
bool showSendInProgressNote = false;
// Handle options menu or toolbar
@@ -1015,10 +1022,7 @@
}
break;
case NmActionResponseCommandDeleteMail: {
- HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
- messageBox->setText(hbTrId("txt_mail_dialog_delete_mail"));
- messageBox->setAttribute(Qt::WA_DeleteOnClose);
- messageBox->open(this, SLOT(deleteButton(HbAction*)));
+ deleteMessage();
}
break;
default:
@@ -1039,25 +1043,23 @@
}
/*!
- Slot. Signaled when delete button is pressed
+ Deletes the currently open message
*/
-void NmViewerView::deleteButton(HbAction* result)
+void NmViewerView::deleteMessage()
{
- HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
- if(result == dlg->actions().at(0))
- {
- QList<NmId> messageList;
- messageList.append(mStartParam->messageId());
+ NM_FUNCTION;
+
+ QList<NmId> messageList;
+ messageList.append(mStartParam->messageId());
- int err = mUiEngine.deleteMessages(mStartParam->mailboxId(),
- mStartParam->folderId(),
- messageList);
+ int err = mUiEngine.deleteMessages(mStartParam->mailboxId(),
+ mStartParam->folderId(),
+ messageList);
- messageList.clear();
- if (NmNoError != err) {
- // Failed to delete the messages!
- NMLOG(QString("NmViewerView::handleActionCommand(): failed err=%1").arg(err));
- }
+ messageList.clear();
+ if (NmNoError != err) {
+ // Failed to delete the messages!
+ NMLOG(QString("NmViewerView::handleActionCommand(): failed err=%1").arg(err));
}
}
@@ -1067,6 +1069,8 @@
*/
void NmViewerView::progressChanged(int value)
{
+ NM_FUNCTION;
+
if (mAttaIndexUnderFetch != NmNotFoundError) {
// emit signal
if (mAttaWidget && mAttaWidget->progressValue(mAttaIndexUnderFetch) < value) {
@@ -1080,12 +1084,13 @@
*/
void NmViewerView::fetchCompleted(int result)
{
+ NM_FUNCTION;
+
if (mAttaWidget && mAttaIndexUnderFetch != NmNotFoundError) {
if (result == NmNoError) {
progressValueChanged(mAttaIndexUnderFetch, 100);
openAttachment(mAttaIndexUnderFetch);
- }
- else {
+ } else {
mAttaWidget->hideProgressBar(mAttaIndexUnderFetch);
}
}
@@ -1097,12 +1102,82 @@
*/
void NmViewerView::messageDeleted(const NmId &mailboxId, const NmId &folderId, const NmId &messageId)
{
- NMLOG("NmViewerView::messageDeleted");
+ NM_FUNCTION;
+
if ((mStartParam->viewId() == NmUiViewMessageViewer)
&& (mStartParam->mailboxId()== mailboxId)
&& (mStartParam->folderId()== folderId)
- && (mStartParam->messageId()== messageId)){
+ && (mStartParam->messageId()== messageId)) {
mApplication.prepareForPopView();
}
}
+/*!
+ Helper function for wait dialog creation.
+*/
+void NmViewerView::createAndShowWaitDialog()
+{
+ NM_FUNCTION;
+
+ delete mWaitDialog;
+ mWaitDialog = NULL;
+ // Create new wait dialog and set it to me modal with dimmed background
+ mWaitDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+ mWaitDialog->setModal(true);
+ mWaitDialog->setBackgroundFaded(true);
+ connect(mWaitDialog, SIGNAL(cancelled()), this, SLOT(waitNoteCancelled()));
+ mWaitDialog->setText(hbTrId("txt_mail_dialog_loading_mail_content"));
+ // Display wait dialog
+ mWaitDialog->show();
+}
+
+/*!
+ Helper function for width.
+*/
+void NmViewerView::setWebViewWidth(int width)
+{
+ NM_FUNCTION;
+
+ // null pointer check for mWebView in calling function
+ mWebView->setMinimumWidth(width);
+ mWebView->setMaximumWidth(width);
+ mWebView->setPreferredWidth(width);
+}
+
+/*!
+ Helper function for heigth.
+*/
+void NmViewerView::setWebViewHeighth(int height)
+{
+ NM_FUNCTION;
+
+ // null pointer check for mWebView in calling function
+ mWebView->setMinimumHeight(height);
+ mWebView->setMaximumHeight(height);
+ mWebView->setPreferredHeight(height);
+}
+
+/*!
+ Helper function for mouse events.
+*/
+void NmViewerView::handleMouseEvent(QGraphicsSceneMouseEvent *event, bool pressed)
+{
+ NM_FUNCTION;
+ NmMailViewerWK* view = webView();
+ if (event && view && mHeaderWidget && mScrollAreaContents) {
+ QPointF lastReleasePoint = event->pos();
+ QPointF contentWidgetPos = mScrollAreaContents->pos();
+ qreal headerHeight = mHeaderWidget->geometry().height();
+ qreal y = lastReleasePoint.y()-headerHeight;
+ y -= contentWidgetPos.y();
+ qreal x = lastReleasePoint.x()-contentWidgetPos.x();
+ const QPointF pointToWebView(x, y);
+ event->setPos(pointToWebView);
+ event->setAccepted(true);
+ if (pressed) {
+ view->sendMousePressEvent(event);
+ } else {
+ view->sendMouseReleaseEvent(event);
+ }
+ }
+}