• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeio/tdeio
 

tdeio/tdeio

  • tdeio
  • tdeio
renamedlg.cpp
1 /* This file is part of the KDE libraries
2  Copyright (C) 2000 Stephan Kulow <coolo@kde.org>
3  David Faure <faure@kde.org>
4  2001 Holger Freyther <freyther@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Library General Public License for more details.
15 
16  You should have received a copy of the GNU Library General Public License
17  along with this library; see the file COPYING.LIB. If not, write to
18  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  Boston, MA 02110-1301, USA.
20 */
21 
22 #include "tdeio/renamedlg.h"
23 #include "tdeio/renamedlgplugin.h"
24 #include <stdio.h>
25 #include <assert.h>
26 
27 #include <tqfileinfo.h>
28 #include <tqlabel.h>
29 #include <tqlayout.h>
30 #include <tqlineedit.h>
31 #include <tqdir.h>
32 
33 #include <tdemessagebox.h>
34 #include <kpushbutton.h>
35 #include <tdeapplication.h>
36 #include <tdeio/global.h>
37 #include <ktrader.h>
38 #include <klibloader.h>
39 #include <kdialog.h>
40 #include <tdelocale.h>
41 #include <tdeglobal.h>
42 #include <kdebug.h>
43 #include <kurl.h>
44 #include <kmimetype.h>
45 #include <kseparator.h>
46 #include <kstringhandler.h>
47 #include <kstdguiitem.h>
48 #include <kguiitem.h>
49 #include <ksqueezedtextlabel.h>
50 
51 #ifdef Q_WS_X11
52 #include <twin.h>
53 #endif
54 
55 using namespace TDEIO;
56 
57 class RenameDlg::RenameDlgPrivate
58 {
59  public:
60  RenameDlgPrivate(){
61  bCancel = 0;
62  bRename = bSkip = bAutoSkip = bOverwrite = bOverwriteAll = 0;
63  bResume = bResumeAll = bSuggestNewName = 0;
64  m_pLineEdit = 0;
65  }
66  KPushButton *bCancel;
67  TQPushButton *bRename;
68  TQPushButton *bSkip;
69  TQPushButton *bAutoSkip;
70  TQPushButton *bOverwrite;
71  TQPushButton *bOverwriteAll;
72  TQPushButton *bResume;
73  TQPushButton *bResumeAll;
74  TQPushButton *bSuggestNewName;
75  TQLineEdit* m_pLineEdit;
76  KURL src;
77  KURL dest;
78  TQString mimeSrc;
79  TQString mimeDest;
80  bool modal;
81  bool plugin;
82 };
83 
84 RenameDlg::RenameDlg(TQWidget *parent, const TQString & _caption,
85  const TQString &_src, const TQString &_dest,
86  RenameDlg_Mode _mode,
87  TDEIO::filesize_t sizeSrc,
88  TDEIO::filesize_t sizeDest,
89  time_t ctimeSrc,
90  time_t ctimeDest,
91  time_t mtimeSrc,
92  time_t mtimeDest,
93  bool _modal)
94  : TQDialog ( parent, "TDEIO::RenameDialog" , _modal )
95 {
96  d = new RenameDlgPrivate( );
97  d->modal = _modal;
98 #if 0
99  // Set "StaysOnTop", because this dialog is typically used in tdeio_uiserver,
100  // i.e. in a separate process.
101  // ####### This isn't the case anymore - remove?
102 #if !defined(Q_WS_QWS) && !defined(Q_WS_WIN) //FIXME(E): Implement for QT Embedded & win32
103  if (d->modal)
104  KWin::setState( winId(), NET::StaysOnTop );
105 #endif
106 #endif
107 
108  d->src = _src;
109  d->dest = _dest;
110  d->plugin = false;
111 
112 
113  setCaption( _caption );
114 
115  d->bCancel = new KPushButton( KStdGuiItem::cancel(), this );
116  connect(d->bCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(b0Pressed()));
117 
118  if ( ! (_mode & M_NORENAME ) ) {
119  d->bRename = new TQPushButton( i18n( "&Rename" ), this );
120  d->bRename->setEnabled(false);
121  d->bSuggestNewName = new TQPushButton( i18n( "Suggest New &Name" ), this );
122  connect(d->bSuggestNewName, TQT_SIGNAL(clicked()), this, TQT_SLOT(b8Pressed()));
123  connect(d->bRename, TQT_SIGNAL(clicked()), this, TQT_SLOT(b1Pressed()));
124  }
125 
126  if ( ( _mode & M_MULTI ) && ( _mode & M_SKIP ) ) {
127  d->bSkip = new TQPushButton( i18n( "&Skip" ), this );
128  connect(d->bSkip, TQT_SIGNAL(clicked()), this, TQT_SLOT(b2Pressed()));
129 
130  d->bAutoSkip = new TQPushButton( i18n( "&Auto Skip" ), this );
131  connect(d->bAutoSkip, TQT_SIGNAL(clicked()), this, TQT_SLOT(b3Pressed()));
132  }
133 
134  if ( _mode & M_OVERWRITE ) {
135  d->bOverwrite = new TQPushButton( i18n( "&Overwrite" ), this );
136  connect(d->bOverwrite, TQT_SIGNAL(clicked()), this, TQT_SLOT(b4Pressed()));
137 
138  if ( _mode & M_MULTI ) {
139  d->bOverwriteAll = new TQPushButton( i18n( "O&verwrite All" ), this );
140  connect(d->bOverwriteAll, TQT_SIGNAL(clicked()), this, TQT_SLOT(b5Pressed()));
141  }
142  }
143 
144  if ( _mode & M_RESUME ) {
145  d->bResume = new TQPushButton( i18n( "&Resume" ), this );
146  connect(d->bResume, TQT_SIGNAL(clicked()), this, TQT_SLOT(b6Pressed()));
147 
148  if ( _mode & M_MULTI )
149  {
150  d->bResumeAll = new TQPushButton( i18n( "R&esume All" ), this );
151  connect(d->bResumeAll, TQT_SIGNAL(clicked()), this, TQT_SLOT(b7Pressed()));
152  }
153  }
154 
155  TQVBoxLayout* pLayout = new TQVBoxLayout( this, KDialog::marginHint(),
156  KDialog::spacingHint() );
157  pLayout->addStrut( 360 ); // makes dlg at least that wide
158 
159  // User tries to overwrite a file with itself ?
160  if ( _mode & M_OVERWRITE_ITSELF ) {
161  TQLabel *lb = new TQLabel( i18n( "This action would overwrite '%1' with itself.\n"
162  "Please enter a new file name:" ).arg( KStringHandler::csqueeze( d->src.pathOrURL(),100 ) ), this );
163  d->bRename->setText(i18n("C&ontinue"));
164  pLayout->addWidget( lb );
165  }
166  else if ( _mode & M_OVERWRITE ) {
167 
168  // Figure out the mimetype and load one plugin
169  // (This is the only mode that is handled by plugins)
170  pluginHandling();
171  TDETrader::OfferList plugin_offers;
172  if( d->mimeSrc != KMimeType::defaultMimeType() ){
173  plugin_offers = TDETrader::self()->query(d->mimeSrc, "'RenameDlg/Plugin' in ServiceTypes");
174 
175  }else if(d->mimeDest != KMimeType::defaultMimeType() ) {
176  plugin_offers = TDETrader::self()->query(d->mimeDest, "'RenameDlg/Plugin' in ServiceTypes");
177  }
178  if(!plugin_offers.isEmpty() ){
179  kdDebug(7024) << "Offers" << endl;
180  TDETrader::OfferList::ConstIterator it = plugin_offers.begin();
181  TDETrader::OfferList::ConstIterator end = plugin_offers.end();
182  for( ; it != end; ++it ){
183  TQString libName = (*it)->library();
184  if( libName.isEmpty() ){
185  kdDebug(7024) << "lib is empty" << endl;
186  continue;
187  }
188  KLibrary *lib = KLibLoader::self()->library(libName.local8Bit() );
189  if(!lib) {
190  continue;
191  }
192  KLibFactory *factory = lib->factory();
193  if(!factory){
194  lib->unload();
195  continue;
196  }
197  TQObject *obj = factory->create( TQT_TQOBJECT(this), (*it)->name().latin1() );
198  if(!obj) {
199  lib->unload();
200  continue;
201  }
202  RenameDlgPlugin *plugin = static_cast<RenameDlgPlugin *>(TQT_TQWIDGET(obj));
203  if(!plugin ){
204  delete obj;
205  continue;
206  }
207  if( plugin->initialize( _mode, _src, _dest, d->mimeSrc,
208  d->mimeDest, sizeSrc, sizeDest,
209  ctimeSrc, ctimeDest,
210  mtimeSrc, mtimeDest ) ) {
211  d->plugin = true;
212  pLayout->addWidget(plugin );
213  kdDebug(7024) << "RenameDlgPlugin" << endl;
214  break;
215  } else {
216  delete obj;
217  }
218  }
219 
220  }
221 
222  if( !d->plugin ){
223  // No plugin found, build default dialog
224  TQGridLayout * gridLayout = new TQGridLayout( 0L, 9, 2, KDialog::marginHint(),
225  KDialog::spacingHint() );
226  pLayout->addLayout(TQT_TQLAYOUT(gridLayout));
227  gridLayout->setColStretch(0,0);
228  gridLayout->setColStretch(1,10);
229 
230  TQString sentence1;
231  if (mtimeDest < mtimeSrc)
232  sentence1 = i18n("An older item named '%1' already exists.");
233  else if (mtimeDest == mtimeSrc)
234  sentence1 = i18n("A similar file named '%1' already exists.");
235  else
236  sentence1 = i18n("A newer item named '%1' already exists.");
237 
238  TQLabel * lb1 = new KSqueezedTextLabel( sentence1.arg(d->dest.pathOrURL() ), this );
239  gridLayout->addMultiCellWidget( lb1, 0, 0, 0, 1 ); // takes the complete first line
240 
241  lb1 = new TQLabel( this );
242  lb1->setPixmap( KMimeType::pixmapForURL( d->dest ) );
243  gridLayout->addMultiCellWidget( lb1, 1, 3, 0, 0 ); // takes the first column on rows 1-3
244 
245  int row = 1;
246  if ( sizeDest != (TDEIO::filesize_t)-1 )
247  {
248  TQLabel * lb = new TQLabel( i18n("size %1").arg( TDEIO::convertSize(sizeDest) ), this );
249  gridLayout->addWidget( lb, row, 1 );
250  row++;
251 
252  }
253  if ( ctimeDest != (time_t)-1 )
254  {
255  TQDateTime dctime; dctime.setTime_t( ctimeDest );
256  TQLabel * lb = new TQLabel( i18n("created on %1").arg( TDEGlobal::locale()->formatDateTime(dctime) ), this );
257  gridLayout->addWidget( lb, row, 1 );
258  row++;
259  }
260  if ( mtimeDest != (time_t)-1 )
261  {
262  TQDateTime dmtime; dmtime.setTime_t( mtimeDest );
263  TQLabel * lb = new TQLabel( i18n("modified on %1").arg( TDEGlobal::locale()->formatDateTime(dmtime) ), this );
264  gridLayout->addWidget( lb, row, 1 );
265  row++;
266  }
267 
268  if ( !d->src.isEmpty() )
269  {
270  // rows 1 to 3 are the details (size/ctime/mtime), row 4 is empty
271  gridLayout->addRowSpacing( 4, 20 );
272 
273  TQLabel * lb2 = new KSqueezedTextLabel( i18n("The source file is '%1'").arg(d->src.pathOrURL()), this );
274  gridLayout->addMultiCellWidget( lb2, 5, 5, 0, 1 ); // takes the complete first line
275 
276  lb2 = new TQLabel( this );
277  lb2->setPixmap( KMimeType::pixmapForURL( d->src ) );
278  gridLayout->addMultiCellWidget( lb2, 6, 8, 0, 0 ); // takes the first column on rows 6-8
279 
280  row = 6;
281 
282  if ( sizeSrc != (TDEIO::filesize_t)-1 )
283  {
284  TQLabel * lb = new TQLabel( i18n("size %1").arg( TDEIO::convertSize(sizeSrc) ), this );
285  gridLayout->addWidget( lb, row, 1 );
286  row++;
287  }
288  if ( ctimeSrc != (time_t)-1 )
289  {
290  TQDateTime dctime; dctime.setTime_t( ctimeSrc );
291  TQLabel * lb = new TQLabel( i18n("created on %1").arg( TDEGlobal::locale()->formatDateTime(dctime) ), this );
292  gridLayout->addWidget( lb, row, 1 );
293  row++;
294  }
295  if ( mtimeSrc != (time_t)-1 )
296  {
297  TQDateTime dmtime; dmtime.setTime_t( mtimeSrc );
298  TQLabel * lb = new TQLabel( i18n("modified on %1").arg( TDEGlobal::locale()->formatDateTime(dmtime) ), this );
299  gridLayout->addWidget( lb, row, 1 );
300  row++;
301  }
302  }
303  }
304  }
305  else
306  {
307  // This is the case where we don't want to allow overwriting, the existing
308  // file must be preserved (e.g. when renaming).
309  TQString sentence1;
310  if (mtimeDest < mtimeSrc)
311  sentence1 = i18n("An older item named '%1' already exists.");
312  else if (mtimeDest == mtimeSrc)
313  sentence1 = i18n("A similar file named '%1' already exists.");
314  else
315  sentence1 = i18n("A newer item named '%1' already exists.");
316 
317  TQLabel *lb = new KSqueezedTextLabel( sentence1.arg(d->dest.pathOrURL()), this );
318  pLayout->addWidget(lb);
319  }
320  TQHBoxLayout* layout2 = new TQHBoxLayout();
321  pLayout->addLayout( layout2 );
322 
323  d->m_pLineEdit = new TQLineEdit( this );
324  layout2->addWidget( d->m_pLineEdit );
325  TQString fileName = d->dest.fileName();
326  d->m_pLineEdit->setText( TDEIO::decodeFileName( fileName ) );
327  if ( d->bRename || d->bOverwrite )
328  connect(d->m_pLineEdit, TQT_SIGNAL(textChanged(const TQString &)),
329  TQT_SLOT(enableRenameButton(const TQString &)));
330  if ( d->bSuggestNewName )
331  {
332  layout2->addWidget( d->bSuggestNewName );
333  setTabOrder( d->m_pLineEdit, d->bSuggestNewName );
334  }
335 
336  KSeparator* separator = new KSeparator( this );
337  pLayout->addWidget( separator );
338 
339  TQHBoxLayout* layout = new TQHBoxLayout();
340  pLayout->addLayout( layout );
341 
342  layout->addStretch(1);
343 
344  if ( d->bRename )
345  {
346  layout->addWidget( d->bRename );
347  setTabOrder( d->bRename, d->bCancel );
348  }
349  if ( d->bSkip )
350  {
351  layout->addWidget( d->bSkip );
352  setTabOrder( d->bSkip, d->bCancel );
353  }
354  if ( d->bAutoSkip )
355  {
356  layout->addWidget( d->bAutoSkip );
357  setTabOrder( d->bAutoSkip, d->bCancel );
358  }
359  if ( d->bOverwrite )
360  {
361  layout->addWidget( d->bOverwrite );
362  setTabOrder( d->bOverwrite, d->bCancel );
363  }
364  if ( d->bOverwriteAll )
365  {
366  layout->addWidget( d->bOverwriteAll );
367  setTabOrder( d->bOverwriteAll, d->bCancel );
368  }
369  if ( d->bResume )
370  {
371  layout->addWidget( d->bResume );
372  setTabOrder( d->bResume, d->bCancel );
373  }
374  if ( d->bResumeAll )
375  {
376  layout->addWidget( d->bResumeAll );
377  setTabOrder( d->bResumeAll, d->bCancel );
378  }
379 
380  d->bCancel->setDefault( true );
381  layout->addWidget( d->bCancel );
382 
383  resize( sizeHint() );
384 
385  d->m_pLineEdit->setFocus();
386 }
387 
388 RenameDlg::~RenameDlg()
389 {
390  delete d;
391  // no need to delete Pushbuttons,... qt will do this
392 }
393 
394 void RenameDlg::enableRenameButton(const TQString &newDest)
395 {
396  if ( newDest != TDEIO::decodeFileName( d->dest.fileName() ) && !newDest.isEmpty() )
397  {
398  d->bRename->setEnabled( true );
399  d->bRename->setDefault( true );
400  if ( d->bOverwrite )
401  d->bOverwrite->setEnabled( false ); // prevent confusion (#83114)
402  }
403  else
404  {
405  d->bRename->setEnabled( false );
406  if ( d->bOverwrite )
407  d->bOverwrite->setEnabled( true );
408  }
409 }
410 
411 KURL RenameDlg::newDestURL()
412 {
413  KURL newDest( d->dest );
414  TQString fileName = d->m_pLineEdit->text();
415  newDest.setFileName( TDEIO::encodeFileName( fileName ) );
416  return newDest;
417 }
418 
419 void RenameDlg::b0Pressed()
420 {
421  done( 0 );
422 }
423 
424 // Rename
425 void RenameDlg::b1Pressed()
426 {
427  if ( d->m_pLineEdit->text().isEmpty() )
428  return;
429 
430  KURL u = newDestURL();
431  if ( !u.isValid() )
432  {
433  KMessageBox::error( this, i18n( "Malformed URL\n%1" ).arg( u.url() ) );
434  return;
435  }
436 
437  done( 1 );
438 }
439 
440 TQString RenameDlg::suggestName(const KURL& baseURL, const TQString& oldName)
441 {
442  TQString dotSuffix, suggestedName;
443  TQString basename = oldName;
444 
445  int index = basename.find( '.' );
446  if ( index != -1 ) {
447  dotSuffix = basename.mid( index );
448  basename.truncate( index );
449  }
450 
451  int pos = basename.findRev( '_' );
452  if(pos != -1 ){
453  TQString tmp = basename.mid( pos+1 );
454  bool ok;
455  int number = tmp.toInt( &ok );
456  if ( !ok ) {// ok there is no number
457  suggestedName = basename + "1" + dotSuffix;
458  }
459  else {
460  // yes there's already a number behind the _ so increment it by one
461  basename.replace( pos+1, tmp.length(), TQString::number(number+1) );
462  suggestedName = basename + dotSuffix;
463  }
464  }
465  else // no underscore yet
466  suggestedName = basename + "_1" + dotSuffix ;
467 
468  // Check if suggested name already exists
469  bool exists = false;
470  // TODO: network transparency. However, using NetAccess from a modal dialog
471  // could be a problem, no? (given that it uses a modal widget itself....)
472  if ( baseURL.isLocalFile() )
473  exists = TQFileInfo( baseURL.path(+1) + suggestedName ).exists();
474 
475  if ( !exists )
476  return suggestedName;
477  else // already exists -> recurse
478  return suggestName( baseURL, suggestedName );
479 }
480 
481 // Propose button clicked
482 void RenameDlg::b8Pressed()
483 {
484  /* no name to play with */
485  if ( d->m_pLineEdit->text().isEmpty() )
486  return;
487 
488  KURL destDirectory( d->dest );
489  destDirectory.setPath( destDirectory.directory() );
490  d->m_pLineEdit->setText( suggestName( destDirectory, d->m_pLineEdit->text() ) );
491  return;
492 }
493 
494 void RenameDlg::b2Pressed()
495 {
496  done( 2 );
497 }
498 
499 void RenameDlg::b3Pressed()
500 {
501  done( 3 );
502 }
503 
504 void RenameDlg::b4Pressed()
505 {
506  done( 4 );
507 }
508 
509 void RenameDlg::b5Pressed()
510 {
511  done( 5 );
512 }
513 
514 void RenameDlg::b6Pressed()
515 {
516  done( 6 );
517 }
518 
519 void RenameDlg::b7Pressed()
520 {
521  done( 7 );
522 }
523 
524 static TQString mime( const KURL& src )
525 {
526  KMimeType::Ptr type = KMimeType::findByURL( src );
527  //if( type->name() == KMimeType::defaultMimeType() ){ // ok no mimetype
528  // TQString ty = TDEIO::NetAccess::mimetype(d->src );
529  // return ty;
530  return type->name();
531 }
532 
539 void RenameDlg::pluginHandling()
540 {
541  d->mimeSrc = mime( d->src );
542  d->mimeDest = mime(d->dest );
543 
544  kdDebug(7024) << "Source Mimetype: "<< d->mimeSrc << endl;
545  kdDebug(7024) << "Dest Mimetype: "<< d->mimeDest << endl;
546 }
547 
548 
549 RenameDlg_Result TDEIO::open_RenameDlg( const TQString & _caption,
550  const TQString & _src, const TQString & _dest,
551  RenameDlg_Mode _mode,
552  TQString& _new,
553  TDEIO::filesize_t sizeSrc,
554  TDEIO::filesize_t sizeDest,
555  time_t ctimeSrc,
556  time_t ctimeDest,
557  time_t mtimeSrc,
558  time_t mtimeDest)
559 {
560  Q_ASSERT(kapp);
561 
562  RenameDlg dlg( 0L, _caption, _src, _dest, _mode,
563  sizeSrc, sizeDest, ctimeSrc, ctimeDest, mtimeSrc, mtimeDest,
564  true /*modal*/ );
565  int i = dlg.exec();
566  _new = dlg.newDestURL().path();
567 
568  return (RenameDlg_Result)i;
569 }
570 
571 #include "renamedlg.moc"
572 
573 
574 
575 
576 
TDEIO::convertSize
TDEIO_EXPORT TQString convertSize(TDEIO::filesize_t size)
Converts size from bytes to the string representation.
Definition: global.cpp:53
KMimeType::pixmapForURL
static TQPixmap pixmapForURL(const KURL &_url, mode_t _mode=0, TDEIcon::Group _group=TDEIcon::Desktop, int _force_size=0, int _state=0, TQString *_path=0L)
Convenience method to find the pixmap for a URL.
Definition: kmimetype.cpp:489
TDETrader::self
static TDETrader * self()
This is a static pointer to a TDETrader instance.
Definition: ktrader.cpp:90
TDEIO::filesize_t
TQ_ULLONG filesize_t
64-bit file size
Definition: global.h:39
RenameDlgPlugin
This is the base class for all RenameDlg plugins.
Definition: renamedlgplugin.h:34
TDEIO
A namespace for TDEIO globals.
Definition: authinfo.h:29
TDEIO::RenameDlg::b0Pressed
void b0Pressed()
KDE4: rename to cancelPressed(), renamePressed() etc.
Definition: renamedlg.cpp:419
TDEIO::encodeFileName
TDEIO_EXPORT TQString encodeFileName(const TQString &str)
Encodes (from the text displayed to the real filename) This translates % into %% and / into ∕ (U+221...
Definition: global.cpp:165
TDEIO::decodeFileName
TDEIO_EXPORT TQString decodeFileName(const TQString &str)
Decodes (from the filename to the text displayed) This translates %2[fF] into /, %% into %...
Definition: global.cpp:191
TDETrader::query
virtual OfferList query(const TQString &servicetype, const TQString &constraint=TQString::null, const TQString &preferences=TQString::null) const
The main function in the TDETrader class.
Definition: ktrader.cpp:106
RenameDlgPlugin::initialize
virtual bool initialize(TDEIO::RenameDlg_Mode, const TQString &, const TQString &, const TQString &, const TQString &, TDEIO::filesize_t, TDEIO::filesize_t, time_t, time_t, time_t, time_t)
This function will be called by RenameDlg.
Definition: renamedlgplugin.h:46
KMimeType::defaultMimeType
static const TQString & defaultMimeType()
Returns the name of the default mimetype.
Definition: kmimetype.cpp:1160
TDEIO::number
TDEIO_EXPORT TQString number(TDEIO::filesize_t size)
Converts a size to a string representation Not unlike TQString::number(...)
Definition: global.cpp:96
KMimeType::findByURL
static Ptr findByURL(const KURL &_url, mode_t _mode=0, bool _is_local_file=false, bool _fast_mode=false)
Finds a KMimeType with the given _url.
Definition: kmimetype.cpp:165
TDEIO::RenameDlg::newDestURL
KURL newDestURL()
Definition: renamedlg.cpp:411
TDEIO::RenameDlg::suggestName
static TQString suggestName(const KURL &baseURL, const TQString &oldName)
Given a directory path and a filename (which usually exists already), this function returns a suggest...
Definition: renamedlg.cpp:440
TDETrader::OfferList
TQValueList< KService::Ptr > OfferList
A list of services.
Definition: ktrader.h:92
TDEIO::RenameDlg_Result
RenameDlg_Result
The result of open_RenameDlg().
Definition: renamedlg.h:40
TDEIO::RenameDlg::RenameDlg
RenameDlg(TQWidget *parent, const TQString &caption, const TQString &src, const TQString &dest, RenameDlg_Mode mode, TDEIO::filesize_t sizeSrc=(TDEIO::filesize_t)-1, TDEIO::filesize_t sizeDest=(TDEIO::filesize_t)-1, time_t ctimeSrc=(time_t)-1, time_t ctimeDest=(time_t)-1, time_t mtimeSrc=(time_t)-1, time_t mtimeDest=(time_t)-1, bool modal=false)
Construct a "rename" dialog.
Definition: renamedlg.cpp:84
TDEIO::RenameDlg
A dialog for the options to rename two files.
Definition: renamedlg.h:48

tdeio/tdeio

Skip menu "tdeio/tdeio"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeio/tdeio

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