public static void ImportPrinter(Printer printer, ProfileManager profileData)
        {
            var printerInfo = new PrinterInfo()
            {
                Name  = printer.Name,
                ID    = printer.Id.ToString(),
                Make  = printer.Make ?? "",
                Model = printer.Model ?? "",
            };

            profileData.Profiles.Add(printerInfo);

            var printerSettings = new PrinterSettings()
            {
                OemLayer = LoadOemLayer(printer)
            };

            printerSettings.OemLayer[SettingsKey.make]  = printerInfo.Make;
            printerSettings.OemLayer[SettingsKey.model] = printerInfo.Model;

            LoadQualitySettings(printerSettings, printer);
            LoadMaterialSettings(printerSettings, printer);

            printerSettings.ID = printer.Id.ToString();

            printerSettings.UserLayer[SettingsKey.printer_name]             = printer.Name ?? "";
            printerSettings.UserLayer[SettingsKey.baud_rate]                = printer.BaudRate ?? "";
            printerSettings.UserLayer[SettingsKey.auto_connect]             = printer.AutoConnect ? "1" : "0";
            printerSettings.UserLayer[SettingsKey.default_material_presets] = printer.MaterialCollectionIds ?? "";
            printerSettings.UserLayer[SettingsKey.device_token]             = printer.DeviceToken ?? "";
            printerSettings.UserLayer[SettingsKey.device_type]              = printer.DeviceType ?? "";

            // Open the first imported printer if no active printer
            if (!ApplicationController.Instance.ActivePrinters.Any())
            {
                ApplicationController.Instance.OpenEmptyPrinter(printer.Id.ToString()).ConfigureAwait(false);
            }

            // Import macros from the database
            var allMacros = Datastore.Instance.dbSQLite.Query <CustomCommands>("SELECT * FROM CustomCommands WHERE PrinterId = " + printer.Id);

            printerSettings.Macros = allMacros.Select(macro => new GCodeMacro()
            {
                GCode        = macro.Value.Trim(),
                Name         = macro.Name,
                LastModified = macro.DateLastModified
            }).ToList();

            string query           = string.Format("SELECT * FROM PrinterSetting WHERE Name = 'PublishBedImage' and PrinterId = {0};", printer.Id);
            var    publishBedImage = Datastore.Instance.dbSQLite.Query <PrinterSetting>(query).FirstOrDefault();

            printerSettings.UserLayer[SettingsKey.publish_bed_image] = publishBedImage?.Value == "true" ? "1" : "0";

            printerSettings.UserLayer[SettingsKey.print_leveling_enabled] = printer.DoPrintLeveling ? "true" : "false";
            printerSettings.UserLayer[SettingsKey.manual_movement_speeds] = printer.ManualMovementSpeeds;

            // make sure we clear the one time settings
            printerSettings.OemLayer[SettingsKey.spiral_vase]    = "";
            printerSettings.OemLayer[SettingsKey.layer_to_pause] = "";

            // TODO: Where can we find CalibrationFiiles in the current model?
            // layeredProfile.SetActiveValue(""calibration_files"", ???);

            printerSettings.ID = printer.Id.ToString();

            printerSettings.DocumentVersion = PrinterSettings.LatestVersion;

            printerSettings.Helpers.SetComPort(printer.ComPort);

            printerSettings.ResetSettingsForNewProfile();
            printerSettings.Save(userDrivenChange: false);
        }