File indexing completed on 2024-05-12 16:33:27

0001 /* This file is part of the KDE project
0002 
0003    Copyright 2008 Johannes Simon <johannes.simon@gmail.com>
0004 
0005    This library is free software; you can redistribute it and/or
0006    modify it under the terms of the GNU Library General Public
0007    License as published by the Free Software Foundation; either
0008    version 2 of the License, or (at your option) any later version.
0009 
0010    This library is distributed in the hope that it will be useful,
0011    but WITHOUT ANY WARRANTY; without even the implied warranty of
0012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013    Library General Public License for more details.
0014 
0015    You should have received a copy of the GNU Library General Public License
0016    along with this library; see the file COPYING.LIB.  If not, write to
0017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018  * Boston, MA 02110-1301, USA.
0019 */
0020 
0021 // Own
0022 #include "CellRegionStringValidator.h"
0023 
0024 // KoChart
0025 #include "CellRegion.h"
0026 
0027 using namespace KoChart;
0028 
0029 class CellRegionStringValidator::Private
0030 {
0031 public:
0032     Private();
0033     ~Private();
0034 
0035     KoChart::ChartModel* model;
0036     // A regular expression that characterizes any possible
0037     // intermediate state of a valid cell region string
0038     QRegExp intermediatelyCorrectRegion;
0039 };
0040 
0041 CellRegionStringValidator::Private::Private()
0042     : intermediatelyCorrectRegion("[a-zA-Z0-9$.:;]*")
0043 {
0044 }
0045 
0046 CellRegionStringValidator::Private::~Private()
0047 {
0048 }
0049 
0050 CellRegionStringValidator::CellRegionStringValidator(KoChart::ChartModel *model)
0051     : QValidator(0),
0052       d(new Private)
0053 {
0054     d->model = model;
0055 }
0056 
0057 CellRegionStringValidator::~CellRegionStringValidator()
0058 {
0059     delete d;
0060 }
0061 
0062 QValidator::State CellRegionStringValidator::validate(QString &string, int &pos) const
0063 {
0064     Q_UNUSED(pos);
0065 
0066     if (!d->intermediatelyCorrectRegion.exactMatch(string))
0067         return QValidator::Invalid;
0068 
0069     if (d->model->isCellRegionValid(string))
0070        return QValidator::Acceptable;
0071 
0072     return QValidator::Intermediate;
0073 }