taskswitcher/utils/src/tsscreenshotmsg.cpp
author hgs
Mon, 13 Sep 2010 13:26:33 +0300
changeset 116 305818acdca4
permissions -rw-r--r--
201036
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
116
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 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:  Task list entry
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
#include <s32mem.h>
hgs
parents:
diff changeset
    18
#include <fbs.h>
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include "tsscreenshotmsg.h"
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    23
CTsScreenshotMsg* CTsScreenshotMsg::NewLC(RReadStream& aStream)
hgs
parents:
diff changeset
    24
    {
hgs
parents:
diff changeset
    25
    CTsScreenshotMsg *self = new(ELeave)CTsScreenshotMsg();
hgs
parents:
diff changeset
    26
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    27
    self->ConstructL(aStream);
hgs
parents:
diff changeset
    28
    return self;
hgs
parents:
diff changeset
    29
    }
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    32
CTsScreenshotMsg* CTsScreenshotMsg::NewLC( TInt aWindowGroupId, 
hgs
parents:
diff changeset
    33
                                           const CFbsBitmap& aBitmap, 
hgs
parents:
diff changeset
    34
                                           UpdatePriority aPrior, 
hgs
parents:
diff changeset
    35
                                           TInt aRotation )
hgs
parents:
diff changeset
    36
    {
hgs
parents:
diff changeset
    37
    CTsScreenshotMsg *self = new(ELeave)CTsScreenshotMsg();
hgs
parents:
diff changeset
    38
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    39
    self->ConstructL(aWindowGroupId, aBitmap, aPrior, aRotation);
hgs
parents:
diff changeset
    40
    return self;
hgs
parents:
diff changeset
    41
    }
hgs
parents:
diff changeset
    42
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    43
TInt CTsScreenshotMsg::CTsScreenshotMsg::Size()
hgs
parents:
diff changeset
    44
    {
hgs
parents:
diff changeset
    45
    return sizeof(TInt) * 4;
hgs
parents:
diff changeset
    46
    }
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    49
CTsScreenshotMsg::~CTsScreenshotMsg()
hgs
parents:
diff changeset
    50
    {
hgs
parents:
diff changeset
    51
    delete iBitmap;
hgs
parents:
diff changeset
    52
    }
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    55
TInt CTsScreenshotMsg::WindowGroupId() const
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    return iWindowGroupId;
hgs
parents:
diff changeset
    58
    }
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
const CFbsBitmap& CTsScreenshotMsg::Screenshot() const
hgs
parents:
diff changeset
    62
    {
hgs
parents:
diff changeset
    63
    return *iBitmap;
hgs
parents:
diff changeset
    64
    }
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    67
UpdatePriority CTsScreenshotMsg::Priority() const
hgs
parents:
diff changeset
    68
    {
hgs
parents:
diff changeset
    69
    return iPriority;
hgs
parents:
diff changeset
    70
    }
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    73
TInt CTsScreenshotMsg::Rotation() const
hgs
parents:
diff changeset
    74
    {
hgs
parents:
diff changeset
    75
    return iRotation;
hgs
parents:
diff changeset
    76
    }
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    79
HBufC8* CTsScreenshotMsg::ExternalizeLC() const
hgs
parents:
diff changeset
    80
    {
hgs
parents:
diff changeset
    81
    HBufC8* retVal = HBufC8::NewLC(Size());
hgs
parents:
diff changeset
    82
    TPtr8 des(retVal->Des());
hgs
parents:
diff changeset
    83
    RDesWriteStream stream(des);
hgs
parents:
diff changeset
    84
    CleanupClosePushL(stream);
hgs
parents:
diff changeset
    85
    stream << (*this);
hgs
parents:
diff changeset
    86
    CleanupStack::PopAndDestroy(&stream);
hgs
parents:
diff changeset
    87
    return retVal;
hgs
parents:
diff changeset
    88
    }
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
void CTsScreenshotMsg::ExternalizeL(RWriteStream &stream) const
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
    stream.WriteInt32L(iWindowGroupId);
hgs
parents:
diff changeset
    94
    stream.WriteInt32L(iBitmap->Handle());
hgs
parents:
diff changeset
    95
    stream.WriteInt32L(iPriority);
hgs
parents:
diff changeset
    96
    stream.WriteInt32L(iRotation);
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    99
void CTsScreenshotMsg::InternalizeL(RReadStream &stream)
hgs
parents:
diff changeset
   100
    {
hgs
parents:
diff changeset
   101
    iWindowGroupId = stream.ReadInt32L();
hgs
parents:
diff changeset
   102
    User::LeaveIfError(iBitmap->Duplicate(stream.ReadInt32L()));
hgs
parents:
diff changeset
   103
    iPriority = static_cast<UpdatePriority>(stream.ReadInt32L());
hgs
parents:
diff changeset
   104
    iRotation = stream.ReadInt32L();
hgs
parents:
diff changeset
   105
    }
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   108
CTsScreenshotMsg::CTsScreenshotMsg()
hgs
parents:
diff changeset
   109
    {
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
void CTsScreenshotMsg::ConstructL(RReadStream &stream)
hgs
parents:
diff changeset
   113
    {
hgs
parents:
diff changeset
   114
    iBitmap = new(ELeave)CFbsBitmap();
hgs
parents:
diff changeset
   115
    stream >> (*this);
hgs
parents:
diff changeset
   116
    }
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   119
void CTsScreenshotMsg::ConstructL(TInt windowGroupId, const CFbsBitmap& bitmap, UpdatePriority prior, TInt aRotation)
hgs
parents:
diff changeset
   120
    {
hgs
parents:
diff changeset
   121
    iBitmap = new(ELeave)CFbsBitmap();
hgs
parents:
diff changeset
   122
    User::LeaveIfError(iBitmap->Duplicate(bitmap.Handle()));
hgs
parents:
diff changeset
   123
    iWindowGroupId = windowGroupId;
hgs
parents:
diff changeset
   124
    iPriority = prior;
hgs
parents:
diff changeset
   125
    iRotation = aRotation;
hgs
parents:
diff changeset
   126
    }