diff options
Diffstat (limited to 'src/gui/itemviews/qstringlistmodel.cpp')
-rw-r--r-- | src/gui/itemviews/qstringlistmodel.cpp | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/src/gui/itemviews/qstringlistmodel.cpp b/src/gui/itemviews/qstringlistmodel.cpp deleted file mode 100644 index d2e4c2204e..0000000000 --- a/src/gui/itemviews/qstringlistmodel.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* - A simple model that uses a QStringList as its data source. -*/ - -#include "qstringlistmodel.h" - -#ifndef QT_NO_STRINGLISTMODEL - -QT_BEGIN_NAMESPACE - -/*! - \class QStringListModel - \brief The QStringListModel class provides a model that supplies strings to views. - - \ingroup model-view - - - QStringListModel is an editable model that can be used for simple - cases where you need to display a number of strings in a view - widget, such as a QListView or a QComboBox. - - The model provides all the standard functions of an editable - model, representing the data in the string list as a model with - one column and a number of rows equal to the number of items in - the list. - - Model indexes corresponding to items are obtained with the - \l{QAbstractListModel::index()}{index()} function, and item flags - are obtained with flags(). Item data is read with the data() - function and written with setData(). The number of rows (and - number of items in the string list) can be found with the - rowCount() function. - - The model can be constructed with an existing string list, or - strings can be set later with the setStringList() convenience - function. Strings can also be inserted in the usual way with the - insertRows() function, and removed with removeRows(). The contents - of the string list can be retrieved with the stringList() - convenience function. - - An example usage of QStringListModel: - - \snippet doc/src/snippets/qstringlistmodel/main.cpp 0 - - \sa QAbstractListModel, QAbstractItemModel, {Model Classes} -*/ - -/*! - Constructs a string list model with the given \a parent. -*/ - -QStringListModel::QStringListModel(QObject *parent) - : QAbstractListModel(parent) -{ -} - -/*! - Constructs a string list model containing the specified \a strings - with the given \a parent. -*/ - -QStringListModel::QStringListModel(const QStringList &strings, QObject *parent) - : QAbstractListModel(parent), lst(strings) -{ -} - -/*! - Returns the number of rows in the model. This value corresponds to the - number of items in the model's internal string list. - - The optional \a parent argument is in most models used to specify - the parent of the rows to be counted. Because this is a list if a - valid parent is specified, the result will always be 0. - - \sa insertRows(), removeRows(), QAbstractItemModel::rowCount() -*/ - -int QStringListModel::rowCount(const QModelIndex &parent) const -{ - if (parent.isValid()) - return 0; - - return lst.count(); -} - -/*! - Returns data for the specified \a role, from the item with the - given \a index. - - If the view requests an invalid index, an invalid variant is returned. - - \sa setData() -*/ - -QVariant QStringListModel::data(const QModelIndex &index, int role) const -{ - if (index.row() < 0 || index.row() >= lst.size()) - return QVariant(); - - if (role == Qt::DisplayRole || role == Qt::EditRole) - return lst.at(index.row()); - - return QVariant(); -} - -/*! - Returns the flags for the item with the given \a index. - - Valid items are enabled, selectable, editable, drag enabled and drop enabled. - - \sa QAbstractItemModel::flags() -*/ - -Qt::ItemFlags QStringListModel::flags(const QModelIndex &index) const -{ - if (!index.isValid()) - return QAbstractItemModel::flags(index) | Qt::ItemIsDropEnabled; - - return QAbstractItemModel::flags(index) | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled; -} - -/*! - Sets the data for the specified \a role in the item with the given - \a index in the model, to the provided \a value. - - The dataChanged() signal is emitted if the item is changed. - - \sa Qt::ItemDataRole, data() -*/ - -bool QStringListModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - if (index.row() >= 0 && index.row() < lst.size() - && (role == Qt::EditRole || role == Qt::DisplayRole)) { - lst.replace(index.row(), value.toString()); - emit dataChanged(index, index); - return true; - } - return false; -} - -/*! - Inserts \a count rows into the model, beginning at the given \a row. - - The \a parent index of the rows is optional and is only used for - consistency with QAbstractItemModel. By default, a null index is - specified, indicating that the rows are inserted in the top level of - the model. - - \sa QAbstractItemModel::insertRows() -*/ - -bool QStringListModel::insertRows(int row, int count, const QModelIndex &parent) -{ - if (count < 1 || row < 0 || row > rowCount(parent)) - return false; - - beginInsertRows(QModelIndex(), row, row + count - 1); - - for (int r = 0; r < count; ++r) - lst.insert(row, QString()); - - endInsertRows(); - - return true; -} - -/*! - Removes \a count rows from the model, beginning at the given \a row. - - The \a parent index of the rows is optional and is only used for - consistency with QAbstractItemModel. By default, a null index is - specified, indicating that the rows are removed in the top level of - the model. - - \sa QAbstractItemModel::removeRows() -*/ - -bool QStringListModel::removeRows(int row, int count, const QModelIndex &parent) -{ - if (count <= 0 || row < 0 || (row + count) > rowCount(parent)) - return false; - - beginRemoveRows(QModelIndex(), row, row + count - 1); - - for (int r = 0; r < count; ++r) - lst.removeAt(row); - - endRemoveRows(); - - return true; -} - -static bool ascendingLessThan(const QPair<QString, int> &s1, const QPair<QString, int> &s2) -{ - return s1.first < s2.first; -} - -static bool decendingLessThan(const QPair<QString, int> &s1, const QPair<QString, int> &s2) -{ - return s1.first > s2.first; -} - -/*! - \reimp -*/ -void QStringListModel::sort(int, Qt::SortOrder order) -{ - emit layoutAboutToBeChanged(); - - QList<QPair<QString, int> > list; - for (int i = 0; i < lst.count(); ++i) - list.append(QPair<QString, int>(lst.at(i), i)); - - if (order == Qt::AscendingOrder) - qSort(list.begin(), list.end(), ascendingLessThan); - else - qSort(list.begin(), list.end(), decendingLessThan); - - lst.clear(); - QVector<int> forwarding(list.count()); - for (int i = 0; i < list.count(); ++i) { - lst.append(list.at(i).first); - forwarding[list.at(i).second] = i; - } - - QModelIndexList oldList = persistentIndexList(); - QModelIndexList newList; - for (int i = 0; i < oldList.count(); ++i) - newList.append(index(forwarding.at(oldList.at(i).row()), 0)); - changePersistentIndexList(oldList, newList); - - emit layoutChanged(); -} - -/*! - Returns the string list used by the model to store data. -*/ -QStringList QStringListModel::stringList() const -{ - return lst; -} - -/*! - Sets the model's internal string list to \a strings. The model will - notify any attached views that its underlying data has changed. - - \sa dataChanged() -*/ -void QStringListModel::setStringList(const QStringList &strings) -{ - emit beginResetModel(); - lst = strings; - emit endResetModel(); -} - -/*! - \reimp -*/ -Qt::DropActions QStringListModel::supportedDropActions() const -{ - return QAbstractItemModel::supportedDropActions() | Qt::MoveAction; -} - -QT_END_NAMESPACE - -#endif // QT_NO_STRINGLISTMODEL |