contentstorage/caclient/src/caitemmodellist.cpp
author hgs
Tue, 23 Mar 2010 23:28:12 +0200
changeset 86 e492551a0d54
parent 85 7feec50967db
child 87 9d806967057c
permissions -rw-r--r--
201005
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"
7feec50967db 201003_02
hgs
parents:
diff changeset
    24
7feec50967db 201003_02
hgs
parents:
diff changeset
    25
// ======== MEMBER FUNCTIONS ========
7feec50967db 201003_02
hgs
parents:
diff changeset
    26
7feec50967db 201003_02
hgs
parents:
diff changeset
    27
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    28
 Constructor
7feec50967db 201003_02
hgs
parents:
diff changeset
    29
 \param aService content arsenall service provider
7feec50967db 201003_02
hgs
parents:
diff changeset
    30
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    31
CaItemModelList::CaItemModelList(QSharedPointer<CaService> service) :
7feec50967db 201003_02
hgs
parents:
diff changeset
    32
    mOrderedList(), mEntriesHash(), mService(service)
7feec50967db 201003_02
hgs
parents:
diff changeset
    33
{
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
 Destructor
7feec50967db 201003_02
hgs
parents:
diff changeset
    38
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    39
CaItemModelList::~CaItemModelList()
7feec50967db 201003_02
hgs
parents:
diff changeset
    40
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    41
    clear();
7feec50967db 201003_02
hgs
parents:
diff changeset
    42
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    43
7feec50967db 201003_02
hgs
parents:
diff changeset
    44
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    45
 Clears list
7feec50967db 201003_02
hgs
parents:
diff changeset
    46
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    47
void CaItemModelList::clear()
7feec50967db 201003_02
hgs
parents:
diff changeset
    48
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    49
    mOrderedList.clear();
7feec50967db 201003_02
hgs
parents:
diff changeset
    50
    qDeleteAll(mEntriesHash);
7feec50967db 201003_02
hgs
parents:
diff changeset
    51
    mEntriesHash.clear();
7feec50967db 201003_02
hgs
parents:
diff changeset
    52
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    53
7feec50967db 201003_02
hgs
parents:
diff changeset
    54
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    55
 List count
7feec50967db 201003_02
hgs
parents:
diff changeset
    56
 \retval list count
7feec50967db 201003_02
hgs
parents:
diff changeset
    57
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    58
int CaItemModelList::count() const
7feec50967db 201003_02
hgs
parents:
diff changeset
    59
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    60
    return mOrderedList.count();
7feec50967db 201003_02
hgs
parents:
diff changeset
    61
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    62
7feec50967db 201003_02
hgs
parents:
diff changeset
    63
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    64
 Returns entry at aRow
7feec50967db 201003_02
hgs
parents:
diff changeset
    65
 \param row of model list
7feec50967db 201003_02
hgs
parents:
diff changeset
    66
 \retval entry at row
7feec50967db 201003_02
hgs
parents:
diff changeset
    67
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    68
CaEntry *CaItemModelList::at(int row) const
7feec50967db 201003_02
hgs
parents:
diff changeset
    69
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    70
    int id = mOrderedList[row];
7feec50967db 201003_02
hgs
parents:
diff changeset
    71
    return mEntriesHash.value(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
    72
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    73
7feec50967db 201003_02
hgs
parents:
diff changeset
    74
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    75
 Reloads entries
7feec50967db 201003_02
hgs
parents:
diff changeset
    76
 \param query needed to reload model list
7feec50967db 201003_02
hgs
parents:
diff changeset
    77
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    78
void CaItemModelList::reloadEntries(const CaQuery &query)
7feec50967db 201003_02
hgs
parents:
diff changeset
    79
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    80
    clear();
86
hgs
parents: 85
diff changeset
    81
    int id=0;
hgs
parents: 85
diff changeset
    82
    QList<CaEntry*> eList = mService->getEntries(query);
hgs
parents: 85
diff changeset
    83
    for (int i = 0; i < eList.count(); i++) {
hgs
parents: 85
diff changeset
    84
        id = eList[i]->id();
hgs
parents: 85
diff changeset
    85
        mOrderedList << id;
hgs
parents: 85
diff changeset
    86
        mEntriesHash.insert(id, eList[i]);
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    87
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    88
}
7feec50967db 201003_02
hgs
parents:
diff changeset
    89
7feec50967db 201003_02
hgs
parents:
diff changeset
    90
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
    91
 Updates entry with given id
7feec50967db 201003_02
hgs
parents:
diff changeset
    92
 \param id of item in the list
7feec50967db 201003_02
hgs
parents:
diff changeset
    93
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    94
void CaItemModelList::updateEntry(int id)
7feec50967db 201003_02
hgs
parents:
diff changeset
    95
{
7feec50967db 201003_02
hgs
parents:
diff changeset
    96
    if (mEntriesHash.contains(id)) {
7feec50967db 201003_02
hgs
parents:
diff changeset
    97
        delete mEntriesHash.take(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
    98
        mEntriesHash.insert(id, mService->getEntry(id));
7feec50967db 201003_02
hgs
parents:
diff changeset
    99
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   100
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   101
7feec50967db 201003_02
hgs
parents:
diff changeset
   102
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   103
 Updates entries
7feec50967db 201003_02
hgs
parents:
diff changeset
   104
 \param query with sort order
7feec50967db 201003_02
hgs
parents:
diff changeset
   105
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   106
void CaItemModelList::updateEntries(const CaQuery &query)
7feec50967db 201003_02
hgs
parents:
diff changeset
   107
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   108
    mOrderedList = mService->getEntryIds(query);
7feec50967db 201003_02
hgs
parents:
diff changeset
   109
    for (int i = 0; i < mOrderedList.count(); i++) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   110
        if (!mEntriesHash.contains(mOrderedList[i])) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   111
            mEntriesHash.insert(mOrderedList[i], mService->getEntry(
7feec50967db 201003_02
hgs
parents:
diff changeset
   112
                mOrderedList[i]));
7feec50967db 201003_02
hgs
parents:
diff changeset
   113
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   114
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   115
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   116
7feec50967db 201003_02
hgs
parents:
diff changeset
   117
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   118
 Returns index with given id value
7feec50967db 201003_02
hgs
parents:
diff changeset
   119
 \param id item id
7feec50967db 201003_02
hgs
parents:
diff changeset
   120
 \retval index of item with given aId
7feec50967db 201003_02
hgs
parents:
diff changeset
   121
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   122
int CaItemModelList::indexOf(const int &id) const
7feec50967db 201003_02
hgs
parents:
diff changeset
   123
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   124
    return mOrderedList.indexOf(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   125
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   126
7feec50967db 201003_02
hgs
parents:
diff changeset
   127
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   128
 Inserts item with given id at row
7feec50967db 201003_02
hgs
parents:
diff changeset
   129
 (entry for given id is created and inserted in list)
7feec50967db 201003_02
hgs
parents:
diff changeset
   130
 \param row at which item is to be inserted
7feec50967db 201003_02
hgs
parents:
diff changeset
   131
 \param id of item to be inserted
7feec50967db 201003_02
hgs
parents:
diff changeset
   132
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   133
void CaItemModelList::insert(int row, int id)
7feec50967db 201003_02
hgs
parents:
diff changeset
   134
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   135
    mOrderedList.insert(row, id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   136
    mEntriesHash.insert(id, mService->getEntry(id));
7feec50967db 201003_02
hgs
parents:
diff changeset
   137
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   138
7feec50967db 201003_02
hgs
parents:
diff changeset
   139
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   140
 Removes item with given id
7feec50967db 201003_02
hgs
parents:
diff changeset
   141
 \param id of item to remove
7feec50967db 201003_02
hgs
parents:
diff changeset
   142
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   143
void CaItemModelList::remove(int id)
7feec50967db 201003_02
hgs
parents:
diff changeset
   144
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   145
    if (mEntriesHash.contains(id)) {
7feec50967db 201003_02
hgs
parents:
diff changeset
   146
        delete mEntriesHash.take(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   147
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   148
    mOrderedList.removeOne(id);
7feec50967db 201003_02
hgs
parents:
diff changeset
   149
}
7feec50967db 201003_02
hgs
parents:
diff changeset
   150
7feec50967db 201003_02
hgs
parents:
diff changeset
   151
/*!
7feec50967db 201003_02
hgs
parents:
diff changeset
   152
 Returns the item id at row position - aRow
7feec50967db 201003_02
hgs
parents:
diff changeset
   153
 \param row item row
7feec50967db 201003_02
hgs
parents:
diff changeset
   154
 \retval id of item at given row
7feec50967db 201003_02
hgs
parents:
diff changeset
   155
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
   156
const int &CaItemModelList::operator[](int row) const
7feec50967db 201003_02
hgs
parents:
diff changeset
   157
{
7feec50967db 201003_02
hgs
parents:
diff changeset
   158
    return mOrderedList[row];
7feec50967db 201003_02
hgs
parents:
diff changeset
   159
}