contentstorage/caclient/src/caitemmodellist.cpp
author hgs
Wed, 24 Mar 2010 03:15:43 +0200
changeset 89 1e87eb3b400f
parent 87 9d806967057c
child 92 782e3408c2ab
permissions -rw-r--r--
201011
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
85
7feec50967db 201003_02
hgs
parents:
diff changeset
     1
/*
7feec50967db 201003_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
7feec50967db 201003_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
7feec50967db 201003_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
7feec50967db 201003_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
7feec50967db 201003_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
7feec50967db 201003_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
7feec50967db 201003_02
hgs
parents:
diff changeset
     8
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
7feec50967db 201003_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
7feec50967db 201003_02
hgs
parents:
diff changeset
    11
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    12
 * Contributors:
7feec50967db 201003_02
hgs
parents:
diff changeset
    13
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    14
 * Description: caitemmodel_p.cpp
7feec50967db 201003_02
hgs
parents:
diff changeset
    15
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    16
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    17
7feec50967db 201003_02
hgs
parents:
diff changeset
    18
#include <QIcon>
7feec50967db 201003_02
hgs
parents:
diff changeset
    19
7feec50967db 201003_02
hgs
parents:
diff changeset
    20
#include "caitemmodellist.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    21
#include "caitemmodel_p.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    22
#include "canotifier.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    23
#include "canotifierfilter.h"
87
hgs
parents: 86
diff changeset
    24
#include "caclienttest_global.h"
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    25
7feec50967db 201003_02
hgs
parents:
diff changeset
    26
// ======== MEMBER FUNCTIONS ========
7feec50967db 201003_02
hgs
parents:
diff changeset
    27
7feec50967db 201003_02
hgs
parents:
diff changeset
    28
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    29
 Constructor
7feec50967db 201003_02
hgs
parents:
diff changeset
    30
 \param aService content arsenall service provider
7feec50967db 201003_02
hgs
parents:
diff changeset
    31
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    32
CaItemModelList::CaItemModelList(QSharedPointer<CaService> service) :
7feec50967db 201003_02
hgs
parents:
diff changeset
    33
    mOrderedList(), mEntriesHash(), mService(service)
7feec50967db 201003_02
hgs
parents:
diff changeset
    34
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    35
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    36
7feec50967db 201003_02
hgs
parents:
diff changeset
    37
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    38
 Destructor
7feec50967db 201003_02
hgs
parents:
diff changeset
    39
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    40
CaItemModelList::~CaItemModelList()
7feec50967db 201003_02
hgs
parents:
diff changeset
    41
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    42
    clear();
7feec50967db 201003_02
hgs
parents:
diff changeset
    43
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    44
7feec50967db 201003_02
hgs
parents:
diff changeset
    45
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    46
 Clears list
7feec50967db 201003_02
hgs
parents:
diff changeset
    47
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    48
void CaItemModelList::clear()
7feec50967db 201003_02
hgs
parents:
diff changeset
    49
{
87
hgs
parents: 86
diff changeset
    50
    CACLIENTTEST_FUNC_ENTRY("CaItemModelList::clear");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    51
    mOrderedList.clear();
7feec50967db 201003_02
hgs
parents:
diff changeset
    52
    qDeleteAll(mEntriesHash);
7feec50967db 201003_02
hgs
parents:
diff changeset
    53
    mEntriesHash.clear();
87
hgs
parents: 86
diff changeset
    54
    CACLIENTTEST_FUNC_EXIT("CaItemModelList::clear");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    55
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    56
7feec50967db 201003_02
hgs
parents:
diff changeset
    57
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    58
 List count
7feec50967db 201003_02
hgs
parents:
diff changeset
    59
 \retval list count
7feec50967db 201003_02
hgs
parents:
diff changeset
    60
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    61
int CaItemModelList::count() const
7feec50967db 201003_02
hgs
parents:
diff changeset
    62
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    63
    return mOrderedList.count();
7feec50967db 201003_02
hgs
parents:
diff changeset
    64
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    65
7feec50967db 201003_02
hgs
parents:
diff changeset
    66
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    67
 Returns entry at aRow
7feec50967db 201003_02
hgs
parents:
diff changeset
    68
 \param row of model list
7feec50967db 201003_02
hgs
parents:
diff changeset
    69
 \retval entry at row
7feec50967db 201003_02
hgs
parents:
diff changeset
    70
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    71
CaEntry *CaItemModelList::at(int row) const
7feec50967db 201003_02
hgs
parents:
diff changeset
    72
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    73
    int id = mOrderedList[row];
7feec50967db 201003_02
hgs
parents:
diff changeset
    74
    return mEntriesHash.value(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
    75
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    76
7feec50967db 201003_02
hgs
parents:
diff changeset
    77
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    78
 Reloads entries
7feec50967db 201003_02
hgs
parents:
diff changeset
    79
 \param query needed to reload model list
7feec50967db 201003_02
hgs
parents:
diff changeset
    80
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    81
void CaItemModelList::reloadEntries(const CaQuery &query)
7feec50967db 201003_02
hgs
parents:
diff changeset
    82
{
87
hgs
parents: 86
diff changeset
    83
    CACLIENTTEST_FUNC_ENTRY("CaItemModelList::reloadEntries");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    84
    clear();
86
hgs
parents: 85
diff changeset
    85
    int id=0;
87
hgs
parents: 86
diff changeset
    86
    QList<CaEntry *> eList = mService->getEntries(query);
86
hgs
parents: 85
diff changeset
    87
    for (int i = 0; i < eList.count(); i++) {
hgs
parents: 85
diff changeset
    88
        id = eList[i]->id();
hgs
parents: 85
diff changeset
    89
        mOrderedList << id;
hgs
parents: 85
diff changeset
    90
        mEntriesHash.insert(id, eList[i]);
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    91
    }
87
hgs
parents: 86
diff changeset
    92
    CACLIENTTEST_FUNC_EXIT("CaItemModelList::reloadEntries");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    93
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    94
7feec50967db 201003_02
hgs
parents:
diff changeset
    95
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    96
 Updates entry with given id
7feec50967db 201003_02
hgs
parents:
diff changeset
    97
 \param id of item in the list
7feec50967db 201003_02
hgs
parents:
diff changeset
    98
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    99
void CaItemModelList::updateEntry(int id)
7feec50967db 201003_02
hgs
parents:
diff changeset
   100
{
87
hgs
parents: 86
diff changeset
   101
    CACLIENTTEST_FUNC_ENTRY("CaItemModelList::updateEntry");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   102
    if (mEntriesHash.contains(id)) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   103
        delete mEntriesHash.take(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   104
        mEntriesHash.insert(id, mService->getEntry(id));
7feec50967db 201003_02
hgs
parents:
diff changeset
   105
    }
87
hgs
parents: 86
diff changeset
   106
    CACLIENTTEST_FUNC_EXIT("CaItemModelList::updateEntry");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   107
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   108
7feec50967db 201003_02
hgs
parents:
diff changeset
   109
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   110
 Updates entries
7feec50967db 201003_02
hgs
parents:
diff changeset
   111
 \param query with sort order
7feec50967db 201003_02
hgs
parents:
diff changeset
   112
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   113
void CaItemModelList::updateEntries(const CaQuery &query)
7feec50967db 201003_02
hgs
parents:
diff changeset
   114
{
87
hgs
parents: 86
diff changeset
   115
    CACLIENTTEST_FUNC_ENTRY("CaItemModelList::updateEntries");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   116
    mOrderedList = mService->getEntryIds(query);
7feec50967db 201003_02
hgs
parents:
diff changeset
   117
    for (int i = 0; i < mOrderedList.count(); i++) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   118
        if (!mEntriesHash.contains(mOrderedList[i])) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   119
            mEntriesHash.insert(mOrderedList[i], mService->getEntry(
87
hgs
parents: 86
diff changeset
   120
                                    mOrderedList[i]));
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   121
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   122
    }
87
hgs
parents: 86
diff changeset
   123
    CACLIENTTEST_FUNC_EXIT("CaItemModelList::updateEntries");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   124
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   125
7feec50967db 201003_02
hgs
parents:
diff changeset
   126
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   127
 Returns index with given id value
7feec50967db 201003_02
hgs
parents:
diff changeset
   128
 \param id item id
7feec50967db 201003_02
hgs
parents:
diff changeset
   129
 \retval index of item with given aId
7feec50967db 201003_02
hgs
parents:
diff changeset
   130
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   131
int CaItemModelList::indexOf(const int &id) const
7feec50967db 201003_02
hgs
parents:
diff changeset
   132
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   133
    return mOrderedList.indexOf(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   134
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   135
7feec50967db 201003_02
hgs
parents:
diff changeset
   136
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   137
 Inserts item with given id at row
7feec50967db 201003_02
hgs
parents:
diff changeset
   138
 (entry for given id is created and inserted in list)
7feec50967db 201003_02
hgs
parents:
diff changeset
   139
 \param row at which item is to be inserted
7feec50967db 201003_02
hgs
parents:
diff changeset
   140
 \param id of item to be inserted
7feec50967db 201003_02
hgs
parents:
diff changeset
   141
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   142
void CaItemModelList::insert(int row, int id)
7feec50967db 201003_02
hgs
parents:
diff changeset
   143
{
87
hgs
parents: 86
diff changeset
   144
    CACLIENTTEST_FUNC_ENTRY("CaItemModelList::insert");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   145
    mOrderedList.insert(row, id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   146
    mEntriesHash.insert(id, mService->getEntry(id));
87
hgs
parents: 86
diff changeset
   147
    CACLIENTTEST_FUNC_EXIT("CaItemModelList::insert");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   148
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   149
7feec50967db 201003_02
hgs
parents:
diff changeset
   150
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   151
 Removes item with given id
7feec50967db 201003_02
hgs
parents:
diff changeset
   152
 \param id of item to remove
7feec50967db 201003_02
hgs
parents:
diff changeset
   153
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   154
void CaItemModelList::remove(int id)
7feec50967db 201003_02
hgs
parents:
diff changeset
   155
{
87
hgs
parents: 86
diff changeset
   156
    CACLIENTTEST_FUNC_ENTRY("CaItemModelList::remove");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   157
    if (mEntriesHash.contains(id)) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   158
        delete mEntriesHash.take(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   159
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   160
    mOrderedList.removeOne(id);
87
hgs
parents: 86
diff changeset
   161
    CACLIENTTEST_FUNC_EXIT("CaItemModelList::remove");
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   162
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   163
7feec50967db 201003_02
hgs
parents:
diff changeset
   164
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   165
 Returns the item id at row position - aRow
7feec50967db 201003_02
hgs
parents:
diff changeset
   166
 \param row item row
7feec50967db 201003_02
hgs
parents:
diff changeset
   167
 \retval id of item at given row
7feec50967db 201003_02
hgs
parents:
diff changeset
   168
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   169
const int &CaItemModelList::operator[](int row) const
7feec50967db 201003_02
hgs
parents:
diff changeset
   170
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   171
    return mOrderedList[row];
7feec50967db 201003_02
hgs
parents:
diff changeset
   172
}
89
hgs
parents: 87
diff changeset
   173
hgs
parents: 87
diff changeset
   174
/*!
hgs
parents: 87
diff changeset
   175
 Returns on ordered list of entry IDs
hgs
parents: 87
diff changeset
   176
 \retval Copy of the internal ID list
hgs
parents: 87
diff changeset
   177
 */
hgs
parents: 87
diff changeset
   178
QList<int> CaItemModelList::orderedIdList()
hgs
parents: 87
diff changeset
   179
{
hgs
parents: 87
diff changeset
   180
    return mOrderedList;
hgs
parents: 87
diff changeset
   181
}