Oh my God, what an expression.... How about:
public:
void fixup
(QString &input
) const {} State validate
(QString &input,
int &pos
) const { if(input.isEmpty()) return Acceptable;
int s = slist.size();
if(s>4) return Invalid;
bool emptyGroup = false;
for(int i=0;i<s;i++){
bool ok;
if(slist[i].isEmpty()){
emptyGroup = true;
continue;
}
int val = slist[i].toInt(&ok);
if(!ok || val<0 || val>255) return Invalid;
}
if(s<4 || emptyGroup) return Intermediate;
return Acceptable;
}
};
class IP4Validator : public QValidator {
public:
IP4Validator(QObject *parent=0) : QValidator(parent){}
void fixup(QString &input) const {}
State validate(QString &input, int &pos) const {
if(input.isEmpty()) return Acceptable;
QStringList slist = input.split(".");
int s = slist.size();
if(s>4) return Invalid;
bool emptyGroup = false;
for(int i=0;i<s;i++){
bool ok;
if(slist[i].isEmpty()){
emptyGroup = true;
continue;
}
int val = slist[i].toInt(&ok);
if(!ok || val<0 || val>255) return Invalid;
}
if(s<4 || emptyGroup) return Intermediate;
return Acceptable;
}
};
To copy to clipboard, switch view to plain text mode
Bookmarks