/// <summary>
        /// Gets chosen printer and its' settings
        /// </summary>
        /// <returns>chosen printer</returns>
        public Printer GetChosenPrinterWithSettings(bool colored)
        {
            if (IsBlockedMode)
            {
                return(ChosenPrinter);
            }

            // check the selected index
            if (SelectedPrinterIndex < 0)
            {
                return(null);
            }

            try
            {
                LogHelper.LogDebug();

                // get chosen printer
                Printer PrinterX = null;
                if (IsTestMode)
                {
                    PrinterX = demoPrinters.ByColor(colored)[SelectedPrinterIndex];
                }
                else
                {
                    PrinterX = MainController.Singleton.AvailablePrinters.ByColor(colored)[SelectedPrinterIndex];
                }

                // set chosen printer
                ChosenPrinter = PrinterX;

                // check settings
                if (PrinterX.Settings == null)
                {
                    // first time settings set

                    // fullfill some important settings values
                    PrinterSettings = new PrinterSettings()
                    {
                        PrinterName = ChosenPrinter.Name, Duplex = PrintDuplex, DefaultPageSettings = { Color = colored }
                    };

                    // validate settings
                    if (!PrinterSettings.IsValid)
                    {
                        if (!IsTestMode)
                        {
                            throw new NotSupportedException("Wrong printer settings");
                        }
                    }

                    // set settings
                    PrinterX.Settings = PrinterSettings;
                }
                else
                {
                    // set settings by saved settings set
                    PrinterSettings        = PrinterX.Settings;
                    PrinterSettings.Duplex = PrintDuplex;
                    PrinterSettings.DefaultPageSettings.Color = colored;
                    PrinterSettings.Copies = NumberOfCopies;
                }

                return(PrinterX);
            }
            catch (Exception ex)
            {
                WPFNotifier.Error(ex);
            }

            return(null);
        }