- Timestamp:
- Feb 18, 2010, 12:24:18 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gui/dialogs/qprintdialog_unix.cpp
r573 r575 740 740 widget.filename->setEnabled(true); 741 741 widget.lOutput->setEnabled(true); 742 widget.fileBrowser->setEnabled(true); 742 743 } 743 744 … … 754 755 delete cups; 755 756 #endif 757 } 758 759 static QString defaultOutputFileName(const QString &docName, QPrinter::OutputFormat format) 760 { 761 if (format == QPrinter::PostScriptFormat || format == QPrinter::PdfFormat) { 762 QString cur = QDir::currentPath(); 763 #ifndef Q_WS_PM 764 QString home = QDir::homePath(); 765 if (home.at(home.length()-1) != QLatin1Char('/')) 766 home += QLatin1Char('/'); 767 if (cur.at(cur.length()-1) != QLatin1Char('/')) 768 cur += QLatin1Char('/'); 769 if (cur.left(home.length()) != home) 770 cur = home; 771 #endif 772 #if defined(Q_WS_X11) || defined(Q_WS_PM) 773 if (docName.isEmpty()) { 774 if (format == QPrinter::PostScriptFormat) 775 cur += QLatin1String("print.ps"); 776 else 777 cur += QLatin1String("print.pdf"); 778 } else { 779 QRegExp re(QString::fromLatin1("(.*)\\.\\S+")); 780 if (re.exactMatch(docName)) 781 cur += re.cap(1); 782 else 783 cur += docName; 784 if (format == QPrinter::PostScriptFormat) 785 cur += QLatin1String(".ps"); 786 else 787 cur += QLatin1String(".pdf"); 788 } 789 #endif 790 return cur; 791 } 792 return QString::null; 756 793 } 757 794 … … 763 800 widget.filename->setEnabled(false); 764 801 widget.lOutput->setEnabled(false); 802 widget.fileBrowser->setEnabled(false); 765 803 766 804 if (filePrintersAdded) { … … 774 812 widget.filename->setEnabled(true); 775 813 QString filename = widget.filename->text(); 776 QString suffix = QFileInfo(filename).suffix(); 777 if (pdfPrinter && suffix == QLatin1String("ps")) 778 filename = filename.replace(QLatin1String(".ps"), QLatin1String(".pdf")); 779 if (!pdfPrinter && suffix == QLatin1String("pdf")) 780 filename = filename.replace(QLatin1String(".pdf"), QLatin1String(".ps")); 781 widget.filename->setText(filename); 814 if (filename.isEmpty()) 815 filename = defaultOutputFileName(printer->docName(), pdfPrinter ? QPrinter::PdfFormat : 816 QPrinter::PostScriptFormat); 817 else { 818 QFileInfo fileInfo = QFileInfo(filename); 819 QString suffix = fileInfo.suffix(); 820 if (pdfPrinter && suffix == QLatin1String("ps")) 821 filename = fileInfo.path() + QDir::separator() + 822 fileInfo.completeBaseName() + QLatin1String(".pdf"); 823 if (!pdfPrinter && suffix == QLatin1String("pdf")) 824 filename = fileInfo.path() + QDir::separator() + 825 fileInfo.completeBaseName() + QLatin1String(".ps"); 826 filename = QDir::cleanPath(filename); 827 } 828 widget.filename->setText(QDir::toNativeSeparators(filename)); 782 829 widget.lOutput->setEnabled(true); 830 widget.fileBrowser->setEnabled(true); 783 831 if (propertiesDialog) 784 832 propertiesDialog->selectPdfPsPrinter(printer); … … 846 894 #endif 847 895 if (!filename.isEmpty()) { 848 widget.filename->setText( filename);896 widget.filename->setText(QDir::toNativeSeparators(filename)); 849 897 if (filename.endsWith(QString::fromLatin1(".ps"), Qt::CaseInsensitive)) 850 898 widget.printers->setCurrentIndex(widget.printers->count() - 1); // the postscript one … … 861 909 return; 862 910 printer = p; 863 if (p->outputFileName().isEmpty()) { 864 QString home = QString::fromLocal8Bit(qgetenv("HOME").constData()); 865 QString cur = QDir::currentPath(); 866 if (home.at(home.length()-1) != QLatin1Char('/')) 867 home += QLatin1Char('/'); 868 if (cur.at(cur.length()-1) != QLatin1Char('/')) 869 cur += QLatin1Char('/'); 870 if (cur.left(home.length()) != home) 871 cur = home; 872 #ifdef Q_WS_X11 873 if (p->docName().isEmpty()) { 874 if (p->outputFormat() == QPrinter::PostScriptFormat) 875 cur += QLatin1String("print.ps"); 876 else 877 cur += QLatin1String("print.pdf"); 878 } else { 879 QRegExp re(QString::fromLatin1("(.*)\\.\\S+")); 880 if (re.exactMatch(p->docName())) 881 cur += re.cap(1); 882 else 883 cur += p->docName(); 884 if (p->outputFormat() == QPrinter::PostScriptFormat) 885 cur += QLatin1String(".ps"); 886 else 887 cur += QLatin1String(".pdf"); 888 } 889 #endif 890 widget.filename->setText(cur); 891 } 911 if (p->outputFileName().isEmpty()) 912 widget.filename->setText(QDir::toNativeSeparators( 913 defaultOutputFileName(p->docName(), p->outputFormat()))); 892 914 else 893 widget.filename->setText( p->outputFileName());894 QString printer = p->printerName();895 if (!printer .isEmpty()) {915 widget.filename->setText(QDir::toNativeSeparators(p->outputFileName())); 916 QString printerName = p->printerName(); 917 if (!printerName.isEmpty()) { 896 918 for (int i = 0; i < widget.printers->count(); ++i) { 897 if (widget.printers->itemText(i) == printer ) {919 if (widget.printers->itemText(i) == printerName) { 898 920 widget.printers->setCurrentIndex(i); 899 921 break; … … 979 1001 QString path = widget.filename->text(); 980 1002 if (QDir::isRelativePath(path)) 1003 #ifndef Q_WS_PM 981 1004 path = QDir::homePath() + QDir::separator() + path; 1005 #else 1006 path = QDir::currentPath() + QDir::separator() + path; 1007 #endif 982 1008 printer->setOutputFileName(path); 983 1009 }
Note:
See TracChangeset
for help on using the changeset viewer.