diff -r dcf0eedfc1a3 -r d189ee25cf9d emailuis/nmailuiwidgets/src/nmeditortextedit.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/nmailuiwidgets/src/nmeditortextedit.cpp Tue Aug 31 15:04:17 2010 +0300 @@ -0,0 +1,165 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Message editor body text field +* +*/ + +#include "nmailuiwidgetsheaders.h" + +static const QString FILE_PATH_CSS_DEFAULT = ":nmeditortexteditblack.css"; +static const QString FILE_PATH_CSS_SECONDARY = ":nmeditortexteditblue.css"; +static const QString FILE_PATH_WIDGETML = ":nmeditortextedit.widgetml"; + +/*! + Constructor +*/ +NmEditorTextEdit::NmEditorTextEdit(QGraphicsItem *parent) : + HbTextEdit(parent) +{ + NM_FUNCTION; + + HbStyleLoader::registerFilePath(FILE_PATH_WIDGETML); + HbStyleLoader::registerFilePath(FILE_PATH_CSS_DEFAULT); + + mCustomTextColor = QPair(false, Qt::black); + + // Disable HbTextEdit scrolling. Background scroll area will handle scrolling. + setScrollable(false); + scrollArea()->setScrollDirections(0); + + // set background colour to plain white + QPixmap whitePixmap(10,10); + whitePixmap.fill(Qt::white); + QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem (whitePixmap); + setBackgroundItem(pixmapItem); + + // Create custom palette based on the current one + QPalette testPalette = QApplication::palette(); + + // Sets the selection background colour + testPalette.setColor(QPalette::Active, QPalette::Highlight, Qt::cyan); + testPalette.setColor(QPalette::Inactive, QPalette::Highlight, Qt::cyan); + + // Sets the link and visited link colours + testPalette.setColor(QPalette::Active, QPalette::Link, Qt::darkBlue); + testPalette.setColor(QPalette::Inactive, QPalette::Link, Qt::darkBlue); + testPalette.setColor(QPalette::Active, QPalette::LinkVisited, Qt::darkMagenta); + testPalette.setColor(QPalette::Inactive, QPalette::LinkVisited, Qt::darkMagenta); + + // Update custom palette for this widget + setPalette(testPalette); +} + +/*! + Destructor +*/ +NmEditorTextEdit::~NmEditorTextEdit() +{ + NM_FUNCTION; + + HbStyleLoader::unregisterFilePath(FILE_PATH_WIDGETML); + if (mCustomTextColor.first) { + HbStyleLoader::unregisterFilePath(FILE_PATH_CSS_SECONDARY); + } + else { + HbStyleLoader::unregisterFilePath(FILE_PATH_CSS_DEFAULT); + } +} + +/*! + This slot applies custom text color for user - entered text + It does not affect the text originally inserted into editor + */ +void NmEditorTextEdit::updateCustomTextColor() +{ + NM_FUNCTION; + + if (mCustomTextColor.first) { + QTextCursor tcursor = textCursor(); + QTextCharFormat fmt; + int pos = tcursor.position(); + if (pos > 0) { + // If there isn't any user-made selection - apply custom color + if (!tcursor.hasSelection() && !tcursor.hasComplexSelection()) { + // Select last added char and set its color to custom + if (tcursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, 1) + && tcursor.hasSelection()) { + fmt = tcursor.charFormat(); + fmt.setForeground(mCustomTextColor.second); + tcursor.mergeCharFormat(fmt); + } + } + } + else { + fmt = tcursor.charFormat(); + fmt.setForeground(mCustomTextColor.second); + tcursor.mergeCharFormat(fmt); + setTextCursor(tcursor); + } + } +} + +/*! + Sets flag is custom text color should be used and sets the custom color. + + Function does not affect the color of existing content, only text that will be entered later. + */ +void NmEditorTextEdit::setCustomTextColor(const QPair &customColor) +{ + NM_FUNCTION; + + mCustomTextColor = customColor; +} + +/*! + Reimplemented function \sa NmEditorTextEdit::setCustomTextColor(const QPair &customColor). + + \arg info about using of custom color + \arg color to be used as custom. If \arg useCustom is set to false then color is not changed + */ +void NmEditorTextEdit::setCustomTextColor(bool useCustom, const QColor& color) +{ + NM_FUNCTION; + + if (!mCustomTextColor.first && useCustom) { + HbStyleLoader::unregisterFilePath(FILE_PATH_CSS_DEFAULT); + HbStyleLoader::registerFilePath(FILE_PATH_CSS_SECONDARY); + + mCustomTextColor.first = useCustom; + mCustomTextColor.second = color; + } +} + +/*! + * Return current custom color and if it must be used. + * + * \return Current custem color. + */ +QPair NmEditorTextEdit::customTextColor() const +{ + NM_FUNCTION; + + return mCustomTextColor; +} + +/*! + * Returns the rectangle for the cursor. + */ +QRectF NmEditorTextEdit::rectForCursorPosition() const +{ + NM_FUNCTION; + + return HbTextEdit::rectForPosition(cursorPosition()); +} +