bool CreateLinkOperation::undoOperation()
{
    QStringList args = arguments();

    const QString& linkPath = args.at(0);
    const QString& targetPath = args.at(1);

    Link link = Link(linkPath);
    if (!link.exists()) {
        return true;
    }
    if (!link.remove()) {
        setError(UserDefinedError);
        setErrorString(QObject::tr("Could not remove link from %1 to %2.").arg(linkPath, targetPath));
        return false;
    }

    return !QFileInfo(linkPath).exists();
}
bool CreateLinkOperation::performOperation()
{
    QStringList args = arguments();

    if (args.count() != 2) {
        setError(InvalidArguments);
        setErrorString(tr("Invalid arguments in %0: %1 arguments given, %2 expected%3.")
            .arg(name()).arg(arguments().count()).arg(tr("exactly 2"), QLatin1String("")));
        return false;
    }

    const QString& linkPath = args.at(0);
    const QString& targetPath = args.at(1);
    Link link = Link::create(linkPath, targetPath);

    if (!link.exists()) {
        setError(UserDefinedError);
        setErrorString(QObject::tr("Could not create link from %1 to %2.").arg(linkPath, targetPath));
        return false;
    }

    return true;
}