messagingapp/msgui/unifiededitor/src/msgunieditorattachmentcontainer.cpp
author hgs
Tue, 19 Oct 2010 11:30:16 +0530
changeset 76 60a8a215b0ec
parent 37 518b245aa84c
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 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: attachment container class
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
// INCLUDES
hgs
parents:
diff changeset
    20
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    21
#include <QFileInfo>
hgs
parents:
diff changeset
    22
#include <HbFrameItem>
hgs
parents:
diff changeset
    23
#include <HbFrameDrawer>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// USER INCLUDES
hgs
parents:
diff changeset
    26
#include "msgunieditorattachmentcontainer.h"
hgs
parents:
diff changeset
    27
#include "UniEditorGenUtils.h"
hgs
parents:
diff changeset
    28
#include "msgunieditormonitor.h"
hgs
parents:
diff changeset
    29
#include "mmsconformancecheck.h"
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// Constants
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
//---------------------------------------------------------------
hgs
parents:
diff changeset
    34
// MsgAttachmentContainer::MsgAttachmentContainer
hgs
parents:
diff changeset
    35
// @see header file
hgs
parents:
diff changeset
    36
//---------------------------------------------------------------
hgs
parents:
diff changeset
    37
MsgAttachmentContainer::MsgAttachmentContainer( QGraphicsItem *parent ) :
76
hgs
parents: 37
diff changeset
    38
MsgUnifiedEditorBaseWidget(parent),
37
hgs
parents:
diff changeset
    39
mIsMMContent(false)
hgs
parents:
diff changeset
    40
{
76
hgs
parents: 37
diff changeset
    41
    this->setObjectName("attachmentContainer");
hgs
parents: 37
diff changeset
    42
    
37
hgs
parents:
diff changeset
    43
    mLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
hgs
parents:
diff changeset
    44
    mLayout->setContentsMargins(0,0,0,0);
hgs
parents:
diff changeset
    45
    mLayout->setSpacing(0);
76
hgs
parents: 37
diff changeset
    46
    mMmsConformanceCheck = new MmsConformanceCheck;   
37
hgs
parents:
diff changeset
    47
}
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
//---------------------------------------------------------------
hgs
parents:
diff changeset
    50
// MsgAttachmentContainer::~MsgAttachmentContainer
hgs
parents:
diff changeset
    51
// @see header file
hgs
parents:
diff changeset
    52
//---------------------------------------------------------------
hgs
parents:
diff changeset
    53
MsgAttachmentContainer::~MsgAttachmentContainer()
hgs
parents:
diff changeset
    54
{
hgs
parents:
diff changeset
    55
    delete mMmsConformanceCheck;
hgs
parents:
diff changeset
    56
}
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
//---------------------------------------------------------------
hgs
parents:
diff changeset
    59
// MsgAttachmentContainer::addAttachment
hgs
parents:
diff changeset
    60
// @see header file
hgs
parents:
diff changeset
    61
//---------------------------------------------------------------
hgs
parents:
diff changeset
    62
MsgAttachmentContainer::AddAttachmentStatus 
hgs
parents:
diff changeset
    63
    MsgAttachmentContainer::addAttachment(const QString& filepath)
hgs
parents:
diff changeset
    64
{
hgs
parents:
diff changeset
    65
    //check for insert conformance
hgs
parents:
diff changeset
    66
    if(EInsertSuccess != mMmsConformanceCheck->checkModeForInsert(filepath))
hgs
parents:
diff changeset
    67
        return EAddNotSupported;
hgs
parents:
diff changeset
    68
76
hgs
parents: 37
diff changeset
    69
    int msgSize = MsgUnifiedEditorMonitor::messageSize();
hgs
parents: 37
diff changeset
    70
    
37
hgs
parents:
diff changeset
    71
    QFileInfo fileinfo(filepath);
hgs
parents:
diff changeset
    72
    int fileSize = fileinfo.size() + KEstimatedMimeHeaderSize;
hgs
parents:
diff changeset
    73
    
hgs
parents:
diff changeset
    74
    if( (fileSize + msgSize) <= MsgUnifiedEditorMonitor::maxMmsSize())
hgs
parents:
diff changeset
    75
    {
hgs
parents:
diff changeset
    76
        MsgUnifiedEditorAttachment* att = new MsgUnifiedEditorAttachment(
hgs
parents:
diff changeset
    77
            filepath, fileSize, this);
hgs
parents:
diff changeset
    78
        if( ((mAttachmentList.count() == 0) && att->isMultimediaContent()) ||
hgs
parents:
diff changeset
    79
                ((mAttachmentList.count() == 1) && !mIsMMContent) )
hgs
parents:
diff changeset
    80
        {
hgs
parents:
diff changeset
    81
            mIsMMContent = true;
hgs
parents:
diff changeset
    82
        }
hgs
parents:
diff changeset
    83
        mAttachmentList << att;
hgs
parents:
diff changeset
    84
        int index = mLayout->count();
hgs
parents:
diff changeset
    85
        mLayout->insertItem(index,att);
hgs
parents:
diff changeset
    86
        connect(att, SIGNAL(deleteMe(MsgUnifiedEditorAttachment*)),
76
hgs
parents: 37
diff changeset
    87
                this, SLOT(deleteAttachment(MsgUnifiedEditorAttachment*)));
37
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
        // emit to signal that container content & size changed
76
hgs
parents: 37
diff changeset
    90
        QVariantList data;
hgs
parents: 37
diff changeset
    91
        data << containerSize() << mIsMMContent;        
hgs
parents: 37
diff changeset
    92
        emit contentsChanged(data);
37
hgs
parents:
diff changeset
    93
    }
hgs
parents:
diff changeset
    94
    else
hgs
parents:
diff changeset
    95
    {
hgs
parents:
diff changeset
    96
        return EAddSizeExceed;
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
    return EAddSuccess;
hgs
parents:
diff changeset
    99
}
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
//---------------------------------------------------------------
hgs
parents:
diff changeset
   102
// MsgAttachmentContainer::deleteAttachment
hgs
parents:
diff changeset
   103
// @see header file
hgs
parents:
diff changeset
   104
//---------------------------------------------------------------
hgs
parents:
diff changeset
   105
void MsgAttachmentContainer::deleteAttachment(MsgUnifiedEditorAttachment* attachment)
hgs
parents:
diff changeset
   106
{
hgs
parents:
diff changeset
   107
    mAttachmentList.removeOne(attachment);
hgs
parents:
diff changeset
   108
    mLayout->removeItem(attachment);
hgs
parents:
diff changeset
   109
    attachment->setParent(NULL);
hgs
parents:
diff changeset
   110
    delete attachment;
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    if( ((mAttachmentList.count() == 1) && !mAttachmentList.first()->isMultimediaContent()) ||
hgs
parents:
diff changeset
   113
        ((mAttachmentList.count() == 0) && mIsMMContent) )
hgs
parents:
diff changeset
   114
    {
hgs
parents:
diff changeset
   115
        mIsMMContent = false;
hgs
parents:
diff changeset
   116
    }
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
    // emit to indicate change in container content & size
76
hgs
parents: 37
diff changeset
   119
    QVariantList data;
hgs
parents: 37
diff changeset
   120
    data << containerSize() << mIsMMContent;
hgs
parents: 37
diff changeset
   121
    emit contentsChanged(data);
hgs
parents: 37
diff changeset
   122
    
37
hgs
parents:
diff changeset
   123
    if(mAttachmentList.count() == 0)
hgs
parents:
diff changeset
   124
    {
hgs
parents:
diff changeset
   125
        emit emptyAttachmentContainer();
hgs
parents:
diff changeset
   126
    }
hgs
parents:
diff changeset
   127
}
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
//---------------------------------------------------------------
hgs
parents:
diff changeset
   130
// MsgAttachmentContainer::count
hgs
parents:
diff changeset
   131
// @see header file
hgs
parents:
diff changeset
   132
//---------------------------------------------------------------
hgs
parents:
diff changeset
   133
int MsgAttachmentContainer::count()
hgs
parents:
diff changeset
   134
{
hgs
parents:
diff changeset
   135
    return mAttachmentList.count();
hgs
parents:
diff changeset
   136
}
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
//---------------------------------------------------------------
hgs
parents:
diff changeset
   139
// MsgAttachmentContainer::attachmentList
hgs
parents:
diff changeset
   140
// @see header file
hgs
parents:
diff changeset
   141
//---------------------------------------------------------------
hgs
parents:
diff changeset
   142
MsgUnifiedEditorAttachmentList MsgAttachmentContainer::attachmentList()
hgs
parents:
diff changeset
   143
{
hgs
parents:
diff changeset
   144
    return mAttachmentList;
hgs
parents:
diff changeset
   145
}
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
//---------------------------------------------------------------
hgs
parents:
diff changeset
   148
// MsgAttachmentContainer::containerSize
hgs
parents:
diff changeset
   149
// @see header file
hgs
parents:
diff changeset
   150
//---------------------------------------------------------------
hgs
parents:
diff changeset
   151
int MsgAttachmentContainer::containerSize()
hgs
parents:
diff changeset
   152
{
hgs
parents:
diff changeset
   153
    int attCount = count();
hgs
parents:
diff changeset
   154
    int containerSize = 0;
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    for(int i=0; i<attCount; i++)
hgs
parents:
diff changeset
   157
    {
hgs
parents:
diff changeset
   158
        containerSize += mAttachmentList.at(i)->size();
hgs
parents:
diff changeset
   159
    }
hgs
parents:
diff changeset
   160
    return containerSize;
hgs
parents:
diff changeset
   161
}
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
//---------------------------------------------------------------
hgs
parents:
diff changeset
   164
// MsgAttachmentContainer::hasMMContent
hgs
parents:
diff changeset
   165
// @see header file
hgs
parents:
diff changeset
   166
//---------------------------------------------------------------
hgs
parents:
diff changeset
   167
bool MsgAttachmentContainer::hasMMContent()
hgs
parents:
diff changeset
   168
{
hgs
parents:
diff changeset
   169
    return mIsMMContent;
hgs
parents:
diff changeset
   170
}
hgs
parents:
diff changeset
   171
76
hgs
parents: 37
diff changeset
   172
//---------------------------------------------------------------
hgs
parents: 37
diff changeset
   173
// MsgAttachmentContainer::fileNameInUse
hgs
parents: 37
diff changeset
   174
// @see header file
hgs
parents: 37
diff changeset
   175
//---------------------------------------------------------------
hgs
parents: 37
diff changeset
   176
bool MsgAttachmentContainer::fileNameInUse(const QString& fileName)
hgs
parents: 37
diff changeset
   177
{
hgs
parents: 37
diff changeset
   178
    bool alreadyExists = false;
hgs
parents: 37
diff changeset
   179
    
hgs
parents: 37
diff changeset
   180
    for(int i=0; i<mAttachmentList.count(); i++)
hgs
parents: 37
diff changeset
   181
    {
hgs
parents: 37
diff changeset
   182
        QFileInfo fileinfo(mAttachmentList.at(i)->path());
hgs
parents: 37
diff changeset
   183
        if(fileName == fileinfo.fileName())
hgs
parents: 37
diff changeset
   184
        {
hgs
parents: 37
diff changeset
   185
            alreadyExists = true;
hgs
parents: 37
diff changeset
   186
            break;
hgs
parents: 37
diff changeset
   187
        }
hgs
parents: 37
diff changeset
   188
    } 
hgs
parents: 37
diff changeset
   189
    
hgs
parents: 37
diff changeset
   190
    return alreadyExists;
hgs
parents: 37
diff changeset
   191
}
hgs
parents: 37
diff changeset
   192
37
hgs
parents:
diff changeset
   193
//EOF
hgs
parents:
diff changeset
   194