//
// Created by Krad on 2021/12/16.
//

#include "GUIErrorFactory.h"
#include "GUIErrorLE.h"
#include "GUIErrorLW.h"

GUIErrorBase *GUIErrorFactory::getError(const QString &errorMsg) {

    if (errorMsg.isEmpty()) return new GUIErrorBase;
    //新模式，分级
    if (errorMsg.length()>1 && errorMsg[1] == ' ') {
        char c = errorMsg[0].toLower().toLatin1();
        switch (c) {
            //WARN 级别
            case 'w': {
                auto error = new GUIErrorLW;
                error->parse(errorMsg.right(errorMsg.length()-2));
                return error;
            }
            //ERROR 级别
            case 'e':
            default:
                auto error =  new GUIErrorLE;
                error->parse(errorMsg);
                return error;
        }
    }
    auto error = new GUIErrorLE;
    error->parse(errorMsg);
    return error;
}
