void Workspace::AddDocument(string projectName, QString& imageFullPath, ProcessingOptions& options)
{
    QFileInfo imageFileInfo(imageFullPath);

    // Get project.
    Project* project = m_Projects[projectName].get();
    m_ProjectsPersistentState[projectName] = false;
    QString projectDirPath = QString(project->GetDocumentsPath().c_str());
    QDir projectDir(projectDirPath);

    // Copy image to project dir.
    QString dstImageFullPath = projectDir.absoluteFilePath(imageFileInfo.fileName());
    QFile::copy(imageFullPath, dstImageFullPath);

    // Get image name.
    QString docNameQ = imageFileInfo.baseName();
    std::string docName = Utils::StringQ2W(docNameQ);

    // Add image to project.
    Document* document = project->AddDocument(
                                docName,
                                Utils::StringQ2W(dstImageFullPath),
                                options);

    // Add image to view model.
    auto projRowItem = m_ProjectsModel.findItems(Utils::StringW2Q(projectName));
    ProjectItem* projectItem = (ProjectItem*) projRowItem.first();

    ProjectItem* docItem = new ProjectItem(docName, true);
    QList<QStandardItem*> docRowItem;
    docRowItem << docItem;
    projectItem->appendRow(docItem);

    SetCurrent(project, projectItem, document, docItem);
}