diff -r ef0373b55136 -r 758a864f9613 tests/qtp/qtp_addressbook/addresswidget.cpp --- a/tests/qtp/qtp_addressbook/addresswidget.cpp Fri Sep 17 08:34:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples 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$ -** -****************************************************************************/ - -#include -#include "addresswidget.h" -#include "adddialog.h" - -//! [0] -AddressWidget::AddressWidget(QWidget *parent) - : QTabWidget(parent) -{ - table = new TableModel(this); - newAddressTab = new NewAddressTab(this); - connect(newAddressTab, SIGNAL(sendDetails(QString, QString)), - this, SLOT(addEntry(QString, QString))); - - addTab(newAddressTab, "Address Book"); - - setupTabs(); -} -//! [0] - -//! [2] -void AddressWidget::addEntry() -{ - AddDialog aDialog; - - if (aDialog.exec()) { - QString name = aDialog.nameText->text(); - QString address = aDialog.addressText->toPlainText(); - - addEntry(name, address); - } -} -//! [2] - -//! [3] -void AddressWidget::addEntry(QString name, QString address) -{ - QList< QPair >list = table->getList(); - QPair pair(name, address); - - if (!list.contains(pair)) { - table->insertRows(0, 1, QModelIndex()); - - QModelIndex index = table->index(0, 0, QModelIndex()); - table->setData(index, name, Qt::EditRole); - index = table->index(0, 1, QModelIndex()); - table->setData(index, address, Qt::EditRole); - removeTab(indexOf(newAddressTab)); - } else { - QMessageBox::information(this, tr("Duplicate Name"), - tr("The name \"%1\" already exists.").arg(name)); - } -} -//! [3] - -//! [4a] -void AddressWidget::editEntry() -{ - QTableView *temp = static_cast(currentWidget()); - QSortFilterProxyModel *proxy = static_cast(temp->model()); - QItemSelectionModel *selectionModel = temp->selectionModel(); - - QModelIndexList indexes = selectionModel->selectedRows(); - QModelIndex index, i; - QString name; - QString address; - int row = -1; - - foreach (index, indexes) { - row = proxy->mapToSource(index).row(); - i = table->index(row, 0, QModelIndex()); - QVariant varName = table->data(i, Qt::DisplayRole); - name = varName.toString(); - - i = table->index(row, 1, QModelIndex()); - QVariant varAddr = table->data(i, Qt::DisplayRole); - address = varAddr.toString(); - } -//! [4a] - -//! [4b] - AddDialog aDialog; - aDialog.setWindowTitle(tr("Edit a Contact")); - - aDialog.nameText->setReadOnly(true); - aDialog.nameText->setText(name); - aDialog.addressText->setText(address); - - if (aDialog.exec()) { - QString newAddress = aDialog.addressText->toPlainText(); - if (newAddress != address) { - i = table->index(row, 1, QModelIndex()); - table->setData(i, newAddress, Qt::EditRole); - } - } -} -//! [4b] - -//! [5] -void AddressWidget::removeEntry() -{ - QTableView *temp = static_cast(currentWidget()); - QSortFilterProxyModel *proxy = static_cast(temp->model()); - QItemSelectionModel *selectionModel = temp->selectionModel(); - - QModelIndexList indexes = selectionModel->selectedRows(); - QModelIndex index; - - foreach (index, indexes) { - int row = proxy->mapToSource(index).row(); - table->removeRows(row, 1, QModelIndex()); - } - - if (table->rowCount(QModelIndex()) == 0) { - insertTab(0, newAddressTab, "Address Book"); - } -} -//! [5] - -//! [1] -void AddressWidget::setupTabs() -{ - QStringList groups; - groups << "ABC" << "DEF" << "GHI" << "JKL" << "MNO" << "PQR" << "STU" << "VW" << "XYZ"; - - for (int i = 0; i < groups.size(); ++i) { - QString str = groups.at(i); - - proxyModel = new QSortFilterProxyModel(this); - proxyModel->setSourceModel(table); - proxyModel->setDynamicSortFilter(true); - - QTableView *tableView = new QTableView; - tableView->setModel(proxyModel); - tableView->setSortingEnabled(true); - tableView->setSelectionBehavior(QAbstractItemView::SelectRows); - tableView->horizontalHeader()->setStretchLastSection(true); - tableView->verticalHeader()->hide(); - tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); - tableView->setSelectionMode(QAbstractItemView::SingleSelection); - - QString newStr = QString("^[%1].*").arg(str); - - proxyModel->setFilterRegExp(QRegExp(newStr, Qt::CaseInsensitive)); - proxyModel->setFilterKeyColumn(0); - proxyModel->sort(0, Qt::AscendingOrder); - - connect(tableView->selectionModel(), - SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), - this, SIGNAL(selectionChanged(const QItemSelection &))); - - addTab(tableView, str); - } -} -//! [1] - -//! [7] -void AddressWidget::readFromFile(QString fileName) -{ - QFile file(fileName); - - if (!file.open(QIODevice::ReadOnly)) { - QMessageBox::information(this, tr("Unable to open file"), - file.errorString()); - return; - } - - QList< QPair > pairs = table->getList(); - QDataStream in(&file); - in >> pairs; - - if (pairs.isEmpty()) { - QMessageBox::information(this, tr("No contacts in file"), - tr("The file you are attempting to open contains no contacts.")); - } else { - for (int i=0; i p = pairs.at(i); - addEntry(p.first, p.second); - } - } -} -//! [7] - -//! [6] -void AddressWidget::writeToFile(QString fileName) -{ - QFile file(fileName); - - if (!file.open(QIODevice::WriteOnly)) { - QMessageBox::information(this, tr("Unable to open file"), file.errorString()); - return; - } - - QList< QPair > pairs = table->getList(); - QDataStream out(&file); - out << pairs; -} -//! [6]