messagingappbase/msgeditor/modelsrc/MsgEditorCommon.cpp
author hgs
Wed, 03 Nov 2010 22:55:44 +0530
changeset 80 8b14b30db193
parent 79 2981cb3aa489
permissions -rw-r--r--
201044_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Contains collection of commonly used 'utility' functions.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// INCLUDE FILES
hgs
parents:
diff changeset
    22
#include <aknenv.h>
hgs
parents:
diff changeset
    23
#include <AknUtils.h>
hgs
parents:
diff changeset
    24
#include <aknlayout.cdl.h>
hgs
parents:
diff changeset
    25
#include <applayout.cdl.h>
hgs
parents:
diff changeset
    26
#include <aknlayoutscalable_apps.cdl.h>
hgs
parents:
diff changeset
    27
#include <AknStatuspaneUtils.h>     // for AknStatuspaneUtils
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#include "MsgEditorCommon.h"
hgs
parents:
diff changeset
    30
#include "MsgEditorModelPanic.h"        // Panics
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// ---------------------------------------------------------
hgs
parents:
diff changeset
    35
// MsgEditorCommons::MaxBodyHeight
hgs
parents:
diff changeset
    36
//
hgs
parents:
diff changeset
    37
// Gets the value for maximum body height for variants.
hgs
parents:
diff changeset
    38
// Replaces const TInt KMsgMaxBodyHeight definition in msgeditorcommon.h
hgs
parents:
diff changeset
    39
// ---------------------------------------------------------
hgs
parents:
diff changeset
    40
//
hgs
parents:
diff changeset
    41
EXPORT_C TInt MsgEditorCommons::MaxBodyHeight()
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    return ( EditorViewHeigth() / MsgBaseLineDelta() ) * MsgBaseLineDelta();
hgs
parents:
diff changeset
    44
    }
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
// ---------------------------------------------------------
hgs
parents:
diff changeset
    47
// MsgEditorCommons::MsgBaseLineDelta
hgs
parents:
diff changeset
    48
//
hgs
parents:
diff changeset
    49
// Gets the value for maximum base line for variants.
hgs
parents:
diff changeset
    50
// Replaces const TInt KMsgBaseLineDelta definition in msgeditorcommon.h
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------
hgs
parents:
diff changeset
    52
//
hgs
parents:
diff changeset
    53
EXPORT_C TInt MsgEditorCommons::MsgBaseLineDelta()
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
    TInt baseLine = 0;
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
    TAknLayoutRect msgTextPane;
hgs
parents:
diff changeset
    58
    msgTextPane.LayoutRect(
hgs
parents:
diff changeset
    59
        MsgEditorCommons::MsgDataPane(),
hgs
parents:
diff changeset
    60
        AknLayoutScalable_Apps::msg_text_pane( 0 ).LayoutLine() );
hgs
parents:
diff changeset
    61
    baseLine = msgTextPane.Rect().Height();
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
    // We cannot handle non-positive baseLine values. Panic
hgs
parents:
diff changeset
    64
    // intentionally if such baseLine is present! This indicates
hgs
parents:
diff changeset
    65
    // serious problems with the layout data.
hgs
parents:
diff changeset
    66
    __ASSERT_ALWAYS( baseLine > 0, Panic( EMsgLayoutUndetermined ) );
hgs
parents:
diff changeset
    67
    return baseLine;
hgs
parents:
diff changeset
    68
    }
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
// ---------------------------------------------------------
hgs
parents:
diff changeset
    71
// MsgEditorCommons::MsgBaseLineOffset
hgs
parents:
diff changeset
    72
// ---------------------------------------------------------
hgs
parents:
diff changeset
    73
//
hgs
parents:
diff changeset
    74
EXPORT_C TInt MsgEditorCommons::MsgBaseLineOffset()
hgs
parents:
diff changeset
    75
    {
hgs
parents:
diff changeset
    76
    TInt baseLineOffset = 0;
hgs
parents:
diff changeset
    77
    TInt baseLine = MsgEditorCommons::MsgBaseLineDelta();
hgs
parents:
diff changeset
    78
    baseLineOffset = MsgEditorCommons::MsgMainPane().Height() % baseLine;
hgs
parents:
diff changeset
    79
        
hgs
parents:
diff changeset
    80
    return baseLineOffset;
hgs
parents:
diff changeset
    81
    }
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
EXPORT_C TInt MsgEditorCommons::ScreenWidth()
hgs
parents:
diff changeset
    85
    {
hgs
parents:
diff changeset
    86
    TRect screen;
hgs
parents:
diff changeset
    87
    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
hgs
parents:
diff changeset
    88
    return screen.Width();
hgs
parents:
diff changeset
    89
    }
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
EXPORT_C TInt MsgEditorCommons::ScreenHeigth()
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
    TRect screen;
hgs
parents:
diff changeset
    94
    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
hgs
parents:
diff changeset
    95
    return screen.Height();
hgs
parents:
diff changeset
    96
    }
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
EXPORT_C TInt MsgEditorCommons::EditorViewWidth()
hgs
parents:
diff changeset
    99
    {
hgs
parents:
diff changeset
   100
    return MsgEditorCommons::MsgMainPane().Width();
hgs
parents:
diff changeset
   101
    }
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
EXPORT_C TInt MsgEditorCommons::EditorViewHeigth()
hgs
parents:
diff changeset
   104
    {
hgs
parents:
diff changeset
   105
    return MsgEditorCommons::MsgMainPane().Height();
hgs
parents:
diff changeset
   106
    }
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
EXPORT_C TRect MsgEditorCommons::MsgMainPane()
hgs
parents:
diff changeset
   109
    {
hgs
parents:
diff changeset
   110
    TRect mainPaneRect;
hgs
parents:
diff changeset
   111
    
hgs
parents:
diff changeset
   112
    CEikonEnv* eikEnv = CEikonEnv::Static();    
hgs
parents:
diff changeset
   113
    if ( eikEnv && eikEnv->EikAppUi() )
hgs
parents:
diff changeset
   114
        {
hgs
parents:
diff changeset
   115
        mainPaneRect = eikEnv->EikAppUi()->ClientRect();    
hgs
parents:
diff changeset
   116
        }
hgs
parents:
diff changeset
   117
    else
hgs
parents:
diff changeset
   118
        {
hgs
parents:
diff changeset
   119
        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
hgs
parents:
diff changeset
   120
        }
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    TAknLayoutRect msgMainLayout;
hgs
parents:
diff changeset
   123
    msgMainLayout.LayoutRect( mainPaneRect,
hgs
parents:
diff changeset
   124
                              AknLayoutScalable_Apps::main_msg_pane().LayoutLine() );
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    return msgMainLayout.Rect();
hgs
parents:
diff changeset
   127
    }
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
EXPORT_C TRect MsgEditorCommons::MsgDataPane()
hgs
parents:
diff changeset
   130
    {
hgs
parents:
diff changeset
   131
    TRect msgMainPane = MsgEditorCommons::MsgMainPane();
hgs
parents:
diff changeset
   132
    
hgs
parents:
diff changeset
   133
#ifdef RD_SCALABLE_UI_V2
hgs
parents:
diff changeset
   134
    msgMainPane.Move( -msgMainPane.iTl );
hgs
parents:
diff changeset
   135
#endif // RD_SCALABLE_UI_V2
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
    TAknLayoutRect msgDataLayout;
hgs
parents:
diff changeset
   138
    msgDataLayout.LayoutRect(
hgs
parents:
diff changeset
   139
        msgMainPane,
hgs
parents:
diff changeset
   140
        AknLayoutScalable_Apps::msg_data_pane().LayoutLine() );
hgs
parents:
diff changeset
   141
        
hgs
parents:
diff changeset
   142
    return msgDataLayout.Rect();
hgs
parents:
diff changeset
   143
    }
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
EXPORT_C TRect MsgEditorCommons::MsgHeaderPane()
hgs
parents:
diff changeset
   146
    {
hgs
parents:
diff changeset
   147
    return MsgEditorCommons::MsgDataPane();
hgs
parents:
diff changeset
   148
    }
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
EXPORT_C TRect MsgEditorCommons::MsgBodyPane()
hgs
parents:
diff changeset
   151
    {
hgs
parents:
diff changeset
   152
    return MsgEditorCommons::MsgDataPane();
hgs
parents:
diff changeset
   153
    }
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
EXPORT_C void MsgEditorCommons::RoundToNextLine( TInt& aValue, TInt aLineHeight )
hgs
parents:
diff changeset
   156
    {
hgs
parents:
diff changeset
   157
    TInt remainder( aValue % aLineHeight );
hgs
parents:
diff changeset
   158
    if ( remainder != 0 )
hgs
parents:
diff changeset
   159
        {
hgs
parents:
diff changeset
   160
        aValue < 0 ? aValue -= aLineHeight + remainder :
hgs
parents:
diff changeset
   161
                     aValue += aLineHeight - remainder;
hgs
parents:
diff changeset
   162
        }
hgs
parents:
diff changeset
   163
    }
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
EXPORT_C void MsgEditorCommons::RoundToPreviousLine( TInt& aValue, TInt aLineHeight )
hgs
parents:
diff changeset
   166
    {
hgs
parents:
diff changeset
   167
    TInt remainder( aValue % aLineHeight );
hgs
parents:
diff changeset
   168
    if ( remainder != 0 )
hgs
parents:
diff changeset
   169
        {
hgs
parents:
diff changeset
   170
        aValue -= remainder;
hgs
parents:
diff changeset
   171
        }
hgs
parents:
diff changeset
   172
    }
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
//  End of File