Changeset View
Changeset View
Standalone View
Standalone View
src/print.cpp
Show First 20 Lines • Show All 231 Lines • ▼ Show 20 Line(s) | 227 | { | |||
---|---|---|---|---|---|
232 | for (int i = 0; i <= int(QPageSize::LastPageSize); ++i) { | 232 | for (int i = 0; i <= int(QPageSize::LastPageSize); ++i) { | ||
233 | if (QLatin1String(qt_pageSizes[i].mediaOption) == ppdKey) { | 233 | if (QLatin1String(qt_pageSizes[i].mediaOption) == ppdKey) { | ||
234 | return qt_pageSizes[i].id; | 234 | return qt_pageSizes[i].id; | ||
235 | } | 235 | } | ||
236 | } | 236 | } | ||
237 | return QPageSize::Custom; | 237 | return QPageSize::Custom; | ||
238 | } | 238 | } | ||
239 | 239 | | |||
240 | Print::Print(QObject *parent) | 240 | PrintPortal::PrintPortal(QObject *parent) | ||
241 | : QObject(parent) | 241 | : QDBusAbstractAdaptor(parent) | ||
242 | { | 242 | { | ||
243 | } | 243 | } | ||
244 | 244 | | |||
245 | Print::~Print() | 245 | PrintPortal::~PrintPortal() | ||
246 | { | 246 | { | ||
247 | } | 247 | } | ||
248 | 248 | | |||
249 | uint Print::print(const QDBusObjectPath &handle, | 249 | uint PrintPortal::Print(const QDBusObjectPath &handle, | ||
250 | const QString &app_id, | 250 | const QString &app_id, | ||
251 | const QString &parent_window, | 251 | const QString &parent_window, | ||
252 | const QString &title, | 252 | const QString &title, | ||
253 | const QDBusUnixFileDescriptor &fd, | 253 | const QDBusUnixFileDescriptor &fd, | ||
254 | const QVariantMap &options, | 254 | const QVariantMap &options, | ||
255 | QVariantMap &results) | 255 | QVariantMap &results) | ||
256 | { | 256 | { | ||
257 | qCDebug(XdgDesktopPortalKdePrint) << "Print called with parameters:"; | 257 | qCDebug(XdgDesktopPortalKdePrint) << "Print called with parameters:"; | ||
▲ Show 20 Lines • Show All 89 Lines • ▼ Show 20 Line(s) | |||||
347 | } else { | 347 | } else { | ||
348 | qCDebug(XdgDesktopPortalKdePrint) << "Failed to print: couldn't not read from fd"; | 348 | qCDebug(XdgDesktopPortalKdePrint) << "Failed to print: couldn't not read from fd"; | ||
349 | return 1; | 349 | return 1; | ||
350 | } | 350 | } | ||
351 | 351 | | |||
352 | return 0; | 352 | return 0; | ||
353 | } | 353 | } | ||
354 | 354 | | |||
355 | uint Print::preparePrint(const QDBusObjectPath &handle, | 355 | uint PrintPortal::PreparePrint(const QDBusObjectPath &handle, | ||
356 | const QString &app_id, | 356 | const QString &app_id, | ||
357 | const QString &parent_window, | 357 | const QString &parent_window, | ||
358 | const QString &title, | 358 | const QString &title, | ||
359 | const QVariantMap &settings, | 359 | const QVariantMap &settings, | ||
360 | const QVariantMap &page_setup, | 360 | const QVariantMap &page_setup, | ||
361 | const QVariantMap &options, | 361 | const QVariantMap &options, | ||
362 | QVariantMap &results) | 362 | QVariantMap &results) | ||
363 | { | 363 | { | ||
▲ Show 20 Lines • Show All 325 Lines • ▼ Show 20 Line(s) | |||||
689 | } else { | 689 | } else { | ||
690 | printDialog->deleteLater(); | 690 | printDialog->deleteLater(); | ||
691 | return 1; | 691 | return 1; | ||
692 | } | 692 | } | ||
693 | 693 | | |||
694 | return 0; | 694 | return 0; | ||
695 | } | 695 | } | ||
696 | 696 | | |||
697 | QStringList Print::destination(const QPrinter *printer, const QString &version) | 697 | QStringList PrintPortal::destination(const QPrinter *printer, const QString &version) | ||
698 | { | 698 | { | ||
699 | if (version == QLatin1String("lp")) { | 699 | if (version == QLatin1String("lp")) { | ||
700 | return QStringList(QStringLiteral("-d")) << printer->printerName(); | 700 | return QStringList(QStringLiteral("-d")) << printer->printerName(); | ||
701 | } | 701 | } | ||
702 | 702 | | |||
703 | if (version.startsWith(QLatin1String("lpr"))) { | 703 | if (version.startsWith(QLatin1String("lpr"))) { | ||
704 | return QStringList(QStringLiteral("-P")) << printer->printerName(); | 704 | return QStringList(QStringLiteral("-P")) << printer->printerName(); | ||
705 | } | 705 | } | ||
706 | 706 | | |||
707 | return QStringList(); | 707 | return QStringList(); | ||
708 | } | 708 | } | ||
709 | 709 | | |||
710 | QStringList Print::copies(const QPrinter *printer, const QString &version) | 710 | QStringList PrintPortal::copies(const QPrinter *printer, const QString &version) | ||
711 | { | 711 | { | ||
712 | int cp = printer->actualNumCopies(); | 712 | int cp = printer->actualNumCopies(); | ||
713 | 713 | | |||
714 | if (version == QLatin1String("lp")) { | 714 | if (version == QLatin1String("lp")) { | ||
715 | return QStringList(QStringLiteral("-n")) << QStringLiteral("%1").arg(cp); | 715 | return QStringList(QStringLiteral("-n")) << QStringLiteral("%1").arg(cp); | ||
716 | } | 716 | } | ||
717 | 717 | | |||
718 | if (version.startsWith(QLatin1String("lpr"))) { | 718 | if (version.startsWith(QLatin1String("lpr"))) { | ||
719 | return QStringList() << QStringLiteral("-#%1").arg(cp); | 719 | return QStringList() << QStringLiteral("-#%1").arg(cp); | ||
720 | } | 720 | } | ||
721 | 721 | | |||
722 | return QStringList(); | 722 | return QStringList(); | ||
723 | } | 723 | } | ||
724 | 724 | | |||
725 | QStringList Print::jobname(const QPrinter *printer, const QString &version) | 725 | QStringList PrintPortal::jobname(const QPrinter *printer, const QString &version) | ||
726 | { | 726 | { | ||
727 | if (!printer->docName().isEmpty()) { | 727 | if (!printer->docName().isEmpty()) { | ||
728 | 728 | | |||
729 | if (version == QLatin1String("lp")) { | 729 | if (version == QLatin1String("lp")) { | ||
730 | return QStringList(QStringLiteral("-t")) << printer->docName(); | 730 | return QStringList(QStringLiteral("-t")) << printer->docName(); | ||
731 | } | 731 | } | ||
732 | 732 | | |||
733 | if (version.startsWith(QLatin1String("lpr"))) { | 733 | if (version.startsWith(QLatin1String("lpr"))) { | ||
734 | const QString shortenedDocName = QString::fromUtf8(printer->docName().toUtf8().left(255)); | 734 | const QString shortenedDocName = QString::fromUtf8(printer->docName().toUtf8().left(255)); | ||
735 | return QStringList(QStringLiteral("-J")) << shortenedDocName; | 735 | return QStringList(QStringLiteral("-J")) << shortenedDocName; | ||
736 | } | 736 | } | ||
737 | } | 737 | } | ||
738 | 738 | | |||
739 | return QStringList(); | 739 | return QStringList(); | ||
740 | } | 740 | } | ||
741 | 741 | | |||
742 | // What about Upper and MultiPurpose? And others in PPD??? | 742 | // What about Upper and MultiPurpose? And others in PPD??? | ||
743 | QString Print::mediaPaperSource(const QPrinter *printer) | 743 | QString PrintPortal::mediaPaperSource(const QPrinter *printer) | ||
744 | { | 744 | { | ||
745 | switch (printer->paperSource()) { | 745 | switch (printer->paperSource()) { | ||
746 | case QPrinter::Auto: | 746 | case QPrinter::Auto: | ||
747 | return QString(); | 747 | return QString(); | ||
748 | case QPrinter::Cassette: | 748 | case QPrinter::Cassette: | ||
749 | return QStringLiteral("Cassette"); | 749 | return QStringLiteral("Cassette"); | ||
750 | case QPrinter::Envelope: | 750 | case QPrinter::Envelope: | ||
751 | return QStringLiteral("Envelope"); | 751 | return QStringLiteral("Envelope"); | ||
Show All 19 Lines | 770 | case QPrinter::Tractor: | |||
771 | return QStringLiteral("Tractor"); | 771 | return QStringLiteral("Tractor"); | ||
772 | case QPrinter::SmallFormat: | 772 | case QPrinter::SmallFormat: | ||
773 | return QStringLiteral("SmallFormat"); | 773 | return QStringLiteral("SmallFormat"); | ||
774 | default: | 774 | default: | ||
775 | return QString(); | 775 | return QString(); | ||
776 | } | 776 | } | ||
777 | } | 777 | } | ||
778 | 778 | | |||
779 | QStringList Print::optionOrientation(const QPrinter *printer, QPrinter::Orientation documentOrientation) | 779 | QStringList PrintPortal::optionOrientation(const QPrinter *printer, QPrinter::Orientation documentOrientation) | ||
780 | { | 780 | { | ||
781 | // portrait and landscape options rotate the document according to the document orientation | 781 | // portrait and landscape options rotate the document according to the document orientation | ||
782 | // If we want to print a landscape document as one would expect it, we have to pass the | 782 | // If we want to print a landscape document as one would expect it, we have to pass the | ||
783 | // portrait option so that the document is not rotated additionally | 783 | // portrait option so that the document is not rotated additionally | ||
784 | if (printer->orientation() == documentOrientation) { | 784 | if (printer->orientation() == documentOrientation) { | ||
785 | // the user wants the document printed as is | 785 | // the user wants the document printed as is | ||
786 | return QStringList(QStringLiteral("-o")) << QStringLiteral("portrait"); | 786 | return QStringList(QStringLiteral("-o")) << QStringLiteral("portrait"); | ||
787 | } else { | 787 | } else { | ||
788 | // the user expects the document being rotated by 90 degrees | 788 | // the user expects the document being rotated by 90 degrees | ||
789 | return QStringList(QStringLiteral("-o")) << QStringLiteral("landscape"); | 789 | return QStringList(QStringLiteral("-o")) << QStringLiteral("landscape"); | ||
790 | } | 790 | } | ||
791 | } | 791 | } | ||
792 | 792 | | |||
793 | QStringList Print::optionDoubleSidedPrinting(const QPrinter *printer) | 793 | QStringList PrintPortal::optionDoubleSidedPrinting(const QPrinter *printer) | ||
794 | { | 794 | { | ||
795 | switch (printer->duplex()) { | 795 | switch (printer->duplex()) { | ||
796 | case QPrinter::DuplexNone: | 796 | case QPrinter::DuplexNone: | ||
797 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=one-sided"); | 797 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=one-sided"); | ||
798 | case QPrinter::DuplexAuto: | 798 | case QPrinter::DuplexAuto: | ||
799 | if (printer->orientation() == QPrinter::Landscape) { | 799 | if (printer->orientation() == QPrinter::Landscape) { | ||
800 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-short-edge"); | 800 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-short-edge"); | ||
801 | } else { | 801 | } else { | ||
802 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-long-edge"); | 802 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-long-edge"); | ||
803 | } | 803 | } | ||
804 | case QPrinter::DuplexLongSide: | 804 | case QPrinter::DuplexLongSide: | ||
805 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-long-edge"); | 805 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-long-edge"); | ||
806 | case QPrinter::DuplexShortSide: | 806 | case QPrinter::DuplexShortSide: | ||
807 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-short-edge"); | 807 | return QStringList(QStringLiteral("-o")) << QStringLiteral("sides=two-sided-short-edge"); | ||
808 | default: | 808 | default: | ||
809 | return QStringList(); //Use printer default | 809 | return QStringList(); //Use printer default | ||
810 | } | 810 | } | ||
811 | } | 811 | } | ||
812 | 812 | | |||
813 | QStringList Print::optionPageOrder(const QPrinter *printer) | 813 | QStringList PrintPortal::optionPageOrder(const QPrinter *printer) | ||
814 | { | 814 | { | ||
815 | if (printer->pageOrder() == QPrinter::LastPageFirst) { | 815 | if (printer->pageOrder() == QPrinter::LastPageFirst) { | ||
816 | return QStringList(QStringLiteral("-o")) << QStringLiteral("outputorder=reverse"); | 816 | return QStringList(QStringLiteral("-o")) << QStringLiteral("outputorder=reverse"); | ||
817 | } | 817 | } | ||
818 | return QStringList(QStringLiteral("-o")) << QStringLiteral("outputorder=normal"); | 818 | return QStringList(QStringLiteral("-o")) << QStringLiteral("outputorder=normal"); | ||
819 | } | 819 | } | ||
820 | 820 | | |||
821 | QStringList Print::optionCollateCopies(const QPrinter *printer) | 821 | QStringList PrintPortal::optionCollateCopies(const QPrinter *printer) | ||
822 | { | 822 | { | ||
823 | if (printer->collateCopies()) { | 823 | if (printer->collateCopies()) { | ||
824 | return QStringList(QStringLiteral("-o")) << QStringLiteral("Collate=True"); | 824 | return QStringList(QStringLiteral("-o")) << QStringLiteral("Collate=True"); | ||
825 | } | 825 | } | ||
826 | return QStringList(QStringLiteral("-o")) << QStringLiteral("Collate=False"); | 826 | return QStringList(QStringLiteral("-o")) << QStringLiteral("Collate=False"); | ||
827 | } | 827 | } | ||
828 | 828 | | |||
829 | QStringList Print::optionPageMargins(const QPrinter *printer) | 829 | QStringList PrintPortal::optionPageMargins(const QPrinter *printer) | ||
830 | { | 830 | { | ||
831 | if (printer->printEngine()->property(QPrintEngine::PPK_PageMargins).isNull()) { | 831 | if (printer->printEngine()->property(QPrintEngine::PPK_PageMargins).isNull()) { | ||
832 | return QStringList(); | 832 | return QStringList(); | ||
833 | } else { | 833 | } else { | ||
834 | qreal l, t, r, b; | 834 | qreal l, t, r, b; | ||
835 | printer->getPageMargins(&l, &t, &r, &b, QPrinter::Point); | 835 | printer->getPageMargins(&l, &t, &r, &b, QPrinter::Point); | ||
836 | return QStringList(QStringLiteral("-o")) << QStringLiteral("page-left=%1").arg(l) | 836 | return QStringList(QStringLiteral("-o")) << QStringLiteral("page-left=%1").arg(l) | ||
837 | << QStringLiteral("-o") << QStringLiteral("page-top=%1").arg(t) | 837 | << QStringLiteral("-o") << QStringLiteral("page-top=%1").arg(t) | ||
838 | << QStringLiteral("-o") << QStringLiteral("page-right=%1").arg(r) | 838 | << QStringLiteral("-o") << QStringLiteral("page-right=%1").arg(r) | ||
839 | << QStringLiteral("-o") << QStringLiteral("page-bottom=%1").arg(b) << QStringLiteral("-o") << QStringLiteral("fit-to-page"); | 839 | << QStringLiteral("-o") << QStringLiteral("page-bottom=%1").arg(b) << QStringLiteral("-o") << QStringLiteral("fit-to-page"); | ||
840 | } | 840 | } | ||
841 | } | 841 | } | ||
842 | 842 | | |||
843 | QStringList Print::optionCupsProperties(const QPrinter *printer) | 843 | QStringList PrintPortal::optionCupsProperties(const QPrinter *printer) | ||
844 | { | 844 | { | ||
845 | QStringList dialogOptions = printer->printEngine()->property(QPrintEngine::PrintEnginePropertyKey(0xfe00)).toStringList(); | 845 | QStringList dialogOptions = printer->printEngine()->property(QPrintEngine::PrintEnginePropertyKey(0xfe00)).toStringList(); | ||
846 | QStringList cupsOptions; | 846 | QStringList cupsOptions; | ||
847 | 847 | | |||
848 | for (int i = 0; i < dialogOptions.count(); i = i + 2) { | 848 | for (int i = 0; i < dialogOptions.count(); i = i + 2) { | ||
849 | // Ignore some cups properties as the pdf we get is already formatted using these | 849 | // Ignore some cups properties as the pdf we get is already formatted using these | ||
850 | if (dialogOptions[i] == QLatin1String("number-up") || dialogOptions[i] == QLatin1String("number-up-layout")) { | 850 | if (dialogOptions[i] == QLatin1String("number-up") || dialogOptions[i] == QLatin1String("number-up-layout")) { | ||
851 | continue; | 851 | continue; | ||
852 | } | 852 | } | ||
853 | 853 | | |||
854 | if (dialogOptions[i + 1].isEmpty()) { | 854 | if (dialogOptions[i + 1].isEmpty()) { | ||
855 | cupsOptions << QStringLiteral("-o") << dialogOptions[i]; | 855 | cupsOptions << QStringLiteral("-o") << dialogOptions[i]; | ||
856 | } else { | 856 | } else { | ||
857 | cupsOptions << QStringLiteral("-o") << dialogOptions[i] + QLatin1Char('=') + dialogOptions[i + 1]; | 857 | cupsOptions << QStringLiteral("-o") << dialogOptions[i] + QLatin1Char('=') + dialogOptions[i + 1]; | ||
858 | } | 858 | } | ||
859 | } | 859 | } | ||
860 | 860 | | |||
861 | return cupsOptions; | 861 | return cupsOptions; | ||
862 | } | 862 | } | ||
863 | 863 | | |||
864 | QStringList Print::optionMedia(const QPrinter *printer) | 864 | QStringList PrintPortal::optionMedia(const QPrinter *printer) | ||
865 | { | 865 | { | ||
866 | if (!qt_keyForPageSizeId(printer->pageLayout().pageSize().id()).isEmpty() && | 866 | if (!qt_keyForPageSizeId(printer->pageLayout().pageSize().id()).isEmpty() && | ||
867 | !mediaPaperSource(printer).isEmpty()) { | 867 | !mediaPaperSource(printer).isEmpty()) { | ||
868 | return QStringList(QStringLiteral("-o")) << | 868 | return QStringList(QStringLiteral("-o")) << | ||
869 | QStringLiteral("media=%1,%2").arg(qt_keyForPageSizeId(printer->pageLayout().pageSize().id()), mediaPaperSource(printer)); | 869 | QStringLiteral("media=%1,%2").arg(qt_keyForPageSizeId(printer->pageLayout().pageSize().id()), mediaPaperSource(printer)); | ||
870 | } | 870 | } | ||
871 | 871 | | |||
872 | if (!qt_keyForPageSizeId(printer->pageLayout().pageSize().id()).isEmpty()) { | 872 | if (!qt_keyForPageSizeId(printer->pageLayout().pageSize().id()).isEmpty()) { | ||
873 | return QStringList(QStringLiteral("-o")) << | 873 | return QStringList(QStringLiteral("-o")) << | ||
874 | QStringLiteral("media=%1").arg(qt_keyForPageSizeId(printer->pageLayout().pageSize().id())); | 874 | QStringLiteral("media=%1").arg(qt_keyForPageSizeId(printer->pageLayout().pageSize().id())); | ||
875 | } | 875 | } | ||
876 | 876 | | |||
877 | if (!mediaPaperSource(printer).isEmpty()) { | 877 | if (!mediaPaperSource(printer).isEmpty()) { | ||
878 | return QStringList(QStringLiteral("-o")) << | 878 | return QStringList(QStringLiteral("-o")) << | ||
879 | QStringLiteral("media=%1").arg(mediaPaperSource(printer)); | 879 | QStringLiteral("media=%1").arg(mediaPaperSource(printer)); | ||
880 | } | 880 | } | ||
881 | 881 | | |||
882 | return QStringList(); | 882 | return QStringList(); | ||
883 | } | 883 | } | ||
884 | 884 | | |||
885 | QStringList Print::pages(const QPrinter *printer, bool useCupsOptions, const QString &version) | 885 | QStringList PrintPortal::pages(const QPrinter *printer, bool useCupsOptions, const QString &version) | ||
886 | { | 886 | { | ||
887 | if (printer->printRange() == QPrinter::PageRange) { | 887 | if (printer->printRange() == QPrinter::PageRange) { | ||
888 | if (version == QLatin1String("lp")) { | 888 | if (version == QLatin1String("lp")) { | ||
889 | return QStringList(QStringLiteral("-P")) << QStringLiteral("%1-%2").arg(printer->fromPage()) | 889 | return QStringList(QStringLiteral("-P")) << QStringLiteral("%1-%2").arg(printer->fromPage()) | ||
890 | .arg(printer->toPage()); | 890 | .arg(printer->toPage()); | ||
891 | } | 891 | } | ||
892 | 892 | | |||
893 | if (version.startsWith(QLatin1String("lpr")) && useCupsOptions) { | 893 | if (version.startsWith(QLatin1String("lpr")) && useCupsOptions) { | ||
894 | return QStringList(QStringLiteral("-o")) << QStringLiteral("page-ranges=%1-%2").arg(printer->fromPage()) | 894 | return QStringList(QStringLiteral("-o")) << QStringLiteral("page-ranges=%1-%2").arg(printer->fromPage()) | ||
895 | .arg(printer->toPage()); | 895 | .arg(printer->toPage()); | ||
896 | } | 896 | } | ||
897 | } | 897 | } | ||
898 | 898 | | |||
899 | return QStringList(); // AllPages | 899 | return QStringList(); // AllPages | ||
900 | } | 900 | } | ||
901 | 901 | | |||
902 | QStringList Print::cupsOptions(const QPrinter *printer, QPrinter::Orientation documentOrientation) | 902 | QStringList PrintPortal::cupsOptions(const QPrinter *printer, QPrinter::Orientation documentOrientation) | ||
903 | { | 903 | { | ||
904 | QStringList optionList; | 904 | QStringList optionList; | ||
905 | 905 | | |||
906 | // if (!optionMedia(printer).isEmpty()) { | 906 | // if (!optionMedia(printer).isEmpty()) { | ||
907 | // optionList << optionMedia(printer); | 907 | // optionList << optionMedia(printer); | ||
908 | // } | 908 | // } | ||
909 | 909 | | |||
910 | // if (!optionOrientation(printer, documentOrientation).isEmpty()) { | 910 | // if (!optionOrientation(printer, documentOrientation).isEmpty()) { | ||
Show All 16 Lines | |||||
927 | // optionList << optionPageMargins(printer); | 927 | // optionList << optionPageMargins(printer); | ||
928 | // } | 928 | // } | ||
929 | 929 | | |||
930 | optionList << optionCupsProperties(printer); | 930 | optionList << optionCupsProperties(printer); | ||
931 | 931 | | |||
932 | return optionList; | 932 | return optionList; | ||
933 | } | 933 | } | ||
934 | 934 | | |||
935 | QStringList Print::printArguments(const QPrinter *printer, bool useCupsOptions, | 935 | QStringList PrintPortal::printArguments(const QPrinter *printer, bool useCupsOptions, | ||
936 | const QString &version, QPrinter::Orientation documentOrientation) | 936 | const QString &version, QPrinter::Orientation documentOrientation) | ||
937 | { | 937 | { | ||
938 | QStringList argList; | 938 | QStringList argList; | ||
939 | 939 | | |||
940 | if (!destination(printer, version).isEmpty()) { | 940 | if (!destination(printer, version).isEmpty()) { | ||
941 | argList << destination(printer, version); | 941 | argList << destination(printer, version); | ||
942 | } | 942 | } | ||
943 | 943 | | |||
Show All 15 Lines | |||||
959 | 959 | | |||
960 | if (version == QLatin1String("lp")) { | 960 | if (version == QLatin1String("lp")) { | ||
961 | argList << QStringLiteral("--"); | 961 | argList << QStringLiteral("--"); | ||
962 | } | 962 | } | ||
963 | 963 | | |||
964 | return argList; | 964 | return argList; | ||
965 | } | 965 | } | ||
966 | 966 | | |||
967 | bool Print::cupsAvailable() | 967 | bool PrintPortal::cupsAvailable() | ||
968 | { | 968 | { | ||
969 | // Ideally we would have access to the private Qt method | 969 | // Ideally we would have access to the private Qt method | ||
970 | // QCUPSSupport::cupsAvailable() to do this as it is very complex routine. | 970 | // QCUPSSupport::cupsAvailable() to do this as it is very complex routine. | ||
971 | // However, if CUPS is available then QPrinter::numCopies() will always return 1 | 971 | // However, if CUPS is available then QPrinter::numCopies() will always return 1 | ||
972 | // whereas if CUPS is not available it will return the real number of copies. | 972 | // whereas if CUPS is not available it will return the real number of copies. | ||
973 | // This behaviour is guaranteed never to change, so we can use it as a reliable substitute. | 973 | // This behaviour is guaranteed never to change, so we can use it as a reliable substitute. | ||
974 | QPrinter testPrinter; | 974 | QPrinter testPrinter; | ||
975 | testPrinter.setNumCopies(2); | 975 | testPrinter.setNumCopies(2); | ||
976 | return (testPrinter.numCopies() == 1); | 976 | return (testPrinter.numCopies() == 1); | ||
977 | } | 977 | } |