• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeprint
 

tdeprint

  • tdeprint
kmprinter.cpp
1 /*
2  * This file is part of the KDE libraries
3  * Copyright (c) 2001 Michael Goffioul <tdeprint@swing.be>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License version 2 as published by the Free Software Foundation.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB. If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  **/
19 
20 #include "kmprinter.h"
21 #include "kprinter.h"
22 #include "driver.h"
23 
24 #include <tdelocale.h>
25 #include <tdefiledialog.h>
26 
27 KMPrinter::KMPrinter()
28 : KMObject()
29 {
30  m_type = KMPrinter::Printer;
31  m_dbentry = 0;
32  m_harddefault = m_softdefault = m_ownsoftdefault = false;
33  m_driver = 0;
34  m_isedited = false;
35  m_printercap = 0;
36 }
37 
38 KMPrinter::KMPrinter(const KMPrinter& p)
39 : KMObject()
40 {
41  m_driver = 0; // don't copy driver structure
42  m_harddefault = m_softdefault = m_ownsoftdefault = false;
43  m_isedited = false;
44  copy(p);
45 }
46 
47 KMPrinter::~KMPrinter()
48 {
49  delete m_driver;
50 }
51 
52 void KMPrinter::copy(const KMPrinter& p)
53 {
54  m_name = p.m_name;
55  m_printername = p.m_printername;
56  m_instancename = p.m_instancename;
57  m_type = p.m_type;
58  m_state = p.m_state;
59  m_device = p.m_device;
60  m_members = p.m_members;
61  m_description = p.m_description;
62  m_location = p.m_location;
63  m_manufacturer = p.m_manufacturer;
64  m_model = p.m_model;
65  m_uri = p.m_uri;
66  m_driverinfo = p.m_driverinfo;
67  m_dbentry = p.m_dbentry;
68  m_pixmap = p.m_pixmap;
69  //m_harddefault = p.m_harddefault;
70  //m_softdefault = p.m_softdefault;
71  m_options = p.m_options;
72  m_printercap = p.m_printercap;
73  setDiscarded(false);
74 }
75 
76 void KMPrinter::setDriver(DrMain *driver)
77 {
78  delete m_driver;
79  m_driver = driver;
80 }
81 
82 DrMain* KMPrinter::takeDriver()
83 {
84  DrMain *dr = m_driver;
85  m_driver = 0;
86  return dr;
87 }
88 
89 TQString KMPrinter::pixmap()
90 {
91  if (!m_pixmap.isEmpty()) return m_pixmap;
92 
93  TQString str("tdeprint_printer");
94  if (!isValid()) str.append("_defect");
95  else
96  {
97  //if (isHardDefault()) str.append("_default");
98  if (isClass(true)) str.append("_class");
99  else if (isRemote()) str.append("_remote");
100  switch (state())
101  {
102  case KMPrinter::Stopped:
103  str.append("_stopped");
104  break;
105  case KMPrinter::Processing:
106  str.append("_process");
107  break;
108  default:
109  break;
110  }
111  }
112  return str;
113 }
114 
115 int KMPrinter::compare(KMPrinter *p1, KMPrinter *p2)
116 {
117  if (p1 && p2)
118  {
119  bool s1(p1->isSpecial()), s2(p2->isSpecial());
120  if (s1 && s2) return TQString::compare(p1->name(),p2->name());
121  else if (s1) return 1;
122  else if (s2) return -1;
123  else
124  {
125  bool c1(p1->isClass(false)), c2(p2->isClass(false));
126  if (c1 == c2) return TQString::compare(p1->name(),p2->name());
127  else if (c1 && !c2) return -1;
128  else if (!c1 && c2) return 1;
129  }
130  }
131  return 0;
132 }
133 
134 TQString KMPrinter::stateString() const
135 {
136  TQString s;
137  switch (state())
138  {
139  case KMPrinter::Idle: s = i18n("Idle"); break;
140  case KMPrinter::Processing: s = i18n("Processing..."); break;
141  case KMPrinter::Stopped: s = i18n("Stopped"); break;
142  default: return i18n("Unknown State", "Unknown");
143  }
144  s += (" " + (m_state & Rejecting ? i18n("(rejecting jobs)") : i18n("(accepting jobs)")));
145  return s;
146 }
147 
148 bool KMPrinter::autoConfigure(KPrinter *printer, TQWidget *parent)
149 {
150  // standard settings
151  printer->setPrinterName(printerName());
152  printer->setSearchName(name());
153  // printer default settings (useful for instances)
154  printer->setOptions(defaultOptions());
155  // special printer case:
156  // - add command
157  // - ask for output file (if needed) using default extension.
158  if (isSpecial())
159  {
160  if (option("kde-special-file") == "1")
161  {
162  // build-up default filename/directory
163  TQString fName = printer->docFileName(), ext = option( "kde-special-extension" );
164  if ( fName.isEmpty() )
165  fName = ( printer->docName() + "." + ext );
166  else
167  {
168  int p = fName.findRev( '.' );
169  if ( p == -1 )
170  fName.append( "." ).append( ext );
171  else
172  {
173  fName.truncate( p+1 );
174  fName.append( ext );
175  }
176  }
177  fName.prepend( "/" ).prepend( printer->docDirectory() );
178 
179  // build-up file dialog
180  KFileDialog *dialog = new KFileDialog (fName,
181  TQString::null,
182  parent,
183  "filedialog",
184  true);
185  dialog->setOperationMode (KFileDialog::Saving);
186 
187  TQString mimetype = option("kde-special-mimetype");
188 
189  if (!mimetype.isEmpty())
190  {
191  TQStringList filter;
192  filter << mimetype;
193  filter << "all/allfiles";
194  dialog->setMimeFilter (filter, mimetype);
195  }
196  else if (!ext.isEmpty())
197  dialog->setFilter ("*." + ext + "\n*|" + i18n ("All Files"));
198 
199  if (dialog->exec ())
200  {
201  printer->setOutputToFile(true);
202  printer->setOutputFileName(dialog->selectedFile ());
203  }
204  else
205  {
206  // action canceled
207  return false;
208  }
209  }
210  printer->setOption( "kde-isspecial", "1" );
211  printer->setOption( "kde-special-command", option( "kde-special-command" ) );
212  }
213 
214  return true;
215 }
216 
217 TQString KMPrinter::deviceProtocol() const
218 {
219  int p = m_device.find( ':' );
220  if ( p != -1 )
221  return m_device.left( p );
222  else
223  return TQString::null;
224 }
KPrinter
This class is the main interface to access the TDE print framework.
Definition: kprinter.h:89
KPrinter::docName
TQString docName() const
See TQPrinter::docName().
Definition: kprinter.cpp:797
KPrinter::setPrinterName
void setPrinterName(const TQString &)
See TQPrinter::setPrinterName().
Definition: kprinter.cpp:873
KPrinter::docDirectory
TQString docDirectory() const
Get the default document directory, that is the directory used for any output file.
Definition: kprinter.cpp:1038
KPrinter::setOutputToFile
void setOutputToFile(bool)
See TQPrinter::setOutputToFile().
Definition: kprinter.cpp:928
KPrinter::setOutputFileName
void setOutputFileName(const TQString &)
See TQPrinter::setOutputFileName().
Definition: kprinter.cpp:922
KPrinter::setOption
void setOption(const TQString &key, const TQString &value)
Adds or modifies an option in the KPrinter object.
Definition: kprinter.cpp:794
KPrinter::docFileName
TQString docFileName() const
Get the default document filename, that is the default basename used for the output file.
Definition: kprinter.cpp:1032
KPrinter::setOptions
void setOptions(const TQMap< TQString, TQString > &opts)
Sets the option set in one operation.
Definition: kprinter.cpp:628
KPrinter::setSearchName
void setSearchName(const TQString &n)
Sets the search name of the KPrinter object.
Definition: kprinter.cpp:909

tdeprint

Skip menu "tdeprint"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

tdeprint

Skip menu "tdeprint"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeprint by doxygen 1.9.1
This website is maintained by Timothy Pearson.