#ifndef INCLUDES_WINDOWS_H
#define INCLUDES_WINDOWS_H
#include <QDir>
#include <string>
#include <windows.h>
#include "AppPath.h"
#include "Application.h"
#include "FileSystem.h"
#include "ResourcePaths.h"
#include "UserPaths.h"
#include "logging.h"
#include "utility.h"
#include "utilityApp.h"
void setupPlatform(int argc, char* argv[]) {}
void setupApp(int argc, char* argv[])
{
{
HMODULE hModule = GetModuleHandleW(NULL);
WCHAR path[MAX_PATH];
GetModuleFileNameW(hModule, path, MAX_PATH);
std::wstring appPath(path);
size_t pos = appPath.find_last_of(L"/");
if (pos == std::wstring::npos)
{
pos = appPath.find_last_of(L"\\");
}
if (pos != std::wstring::npos)
{
appPath = appPath.substr(0, pos + 1);
}
AppPath::setSharedDataDirectoryPath(FilePath(appPath));
}
{
FilePath userDataPath = AppPath::getSharedDataDirectoryPath().concatenate(L"user/");
if (!userDataPath.exists())
{
#pragma warning(push)
#pragma warning(disable : 4996)
FilePath userLocalPath = FilePath(std::string(std::getenv("LOCALAPPDATA")));
if (!userLocalPath.exists())
{
userLocalPath = FilePath(std::string(std::getenv("APPDATA")) + "/../local");
}
#pragma warning(pop)
if (userLocalPath.exists())
{
userDataPath = userLocalPath.getConcatenated(L"Coati Software/");
if (utility::getApplicationArchitectureType() == APPLICATION_ARCHITECTURE_X86_64)
{
userDataPath.concatenate(L"Sourcetrail 64-bit/");
}
else
{
userDataPath.concatenate(L"Sourcetrail/");
}
userDataPath.makeCanonical();
}
else
{
userDataPath = AppPath::getSharedDataDirectoryPath().concatenate(L"user_fallback/");
LOG_ERROR(
L"The \"%LOCALAPPDATA%\" path could not be found. Falling back to \"" +
userDataPath.wstr() + L"\" to store settings data.");
FileSystem::createDirectory(userDataPath);
}
}
UserPaths::setUserDataDirectoryPath(userDataPath);
}
FileSystem::copyFile(
ResourcePaths::getFallbackDirectoryPath().concatenate(L"ApplicationSettings.xml"),
UserPaths::getAppSettingsFilePath());
FileSystem::copyFile(
ResourcePaths::getFallbackDirectoryPath().concatenate(L"window_settings.ini"),
UserPaths::getWindowSettingsFilePath());
}
#endif