summaryrefslogtreecommitdiffstats
path: root/kio/kio/renamedlg.h
blob: 38dcac925368ebb6ae919c6101fb5d081273165a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/* This file is part of the KDE libraries
    Copyright (C) 2000 Stephan Kulow <coolo@kde.org>
                       David Faure <faure@kde.org>
                  2001 Holger Freyther <freyther@kde.org>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.
*/

#ifndef __kio_rename_dlg__
#define __kio_rename_dlg__

#include <kurl.h>
#include <tqdialog.h>
#include <tqstring.h>
#include <sys/types.h>

#include <kio/global.h>

namespace TDEIO {

// KDE4: get rid of M_OVERWRITE_ITSELF, trigger it internally if src==dest
enum RenameDlg_Mode { M_OVERWRITE = 1, M_OVERWRITE_ITSELF = 2, M_SKIP = 4, M_SINGLE = 8, M_MULTI = 16, M_RESUME = 32, M_NORENAME = 64 };

/**
 * The result of open_RenameDlg().
 */
enum RenameDlg_Result { R_RESUME = 6, R_RESUME_ALL = 7, R_OVERWRITE = 4, R_OVERWRITE_ALL = 5, R_SKIP = 2, R_AUTO_SKIP = 3, R_RENAME = 1, R_CANCEL = 0 };


/**
 * A dialog for the options to rename two files.
 * @short A dialog for renaming files.
 * @since 3.1
 */
class TDEIO_EXPORT RenameDlg : public TQDialog
{
  Q_OBJECT
public:
  /**
   * Construct a "rename" dialog.
   * @param parent parent widget (often 0)
   * @param caption the caption for the dialog box
   * @param src the url to the file/dir we're trying to copy, as it's part of the text message
   * @param dest the path to destination file/dir, i.e. the one that already exists
   * @param mode parameters for the dialog (which buttons to show...),
   * @param sizeSrc size of source file
   * @param sizeDest size of destination file
   * @param ctimeSrc creation time of source file
   * @param ctimeDest creation time of destination file
   * @param mtimeSrc modification time of source file
   * @param mtimeDest modification time of destination file
   * @param modal set to true for a modal dialog
   * @see RenameDlg_Mode
   */
  RenameDlg( TQWidget *parent, const TQString & caption,
             // KDE4: make those KURLs, and use pathOrURL() internally.
             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 );
  ~RenameDlg();

  /**
   * @return the new destination
   * valid only if RENAME was chosen
   */
  KURL newDestURL();

  /**
   * Given a directory path and a filename (which usually exists already),
   * this function returns a suggested name for a file that doesn't exist
   * in that directory. The existence is only checked for local urls though.
   * The suggested file name is of the form foo_1 foo_2 etc.
   * @since 3.4
   */
  static TQString suggestName(const KURL& baseURL, const TQString& oldName);

public slots:
  /// KDE4: rename to cancelPressed(), renamePressed() etc.
  void b0Pressed();
  void b1Pressed();
  void b2Pressed();
  void b3Pressed();
  void b4Pressed();
  void b5Pressed();
  void b6Pressed();
  void b7Pressed();
  void b8Pressed();

protected slots:
  void enableRenameButton(const TQString &);
private:
 class RenameDlgPrivate;
 RenameDlgPrivate *d;
 void pluginHandling( );
};

  /**
   * \addtogroup renamedlg "RenameDlg related Functions"
   *  @{
   * \relates TDEIO::RenameDlg
   * Construct a modal, parent-less "rename" dialog, and return
   * a result code, as well as the new dest. Much easier to use than the
   * class RenameDlg directly.

   * @param caption the caption for the dialog box
   * @param src the URL of the file/dir we're trying to copy, as it's part of the text message
   * @param dest the URL of the destination file/dir, i.e. the one that already exists
   * @param mode parameters for the dialog (which buttons to show...),
   *             see RenameDlg_Mode
   * @param newDest the new destination path, valid if R_RENAME was returned.
   * @param sizeSrc size of source file
   * @param sizeDest size of destination file
   * @param ctimeSrc creation time of source file
   * @param ctimeDest creation time of destination file
   * @param mtimeSrc modification time of source file
   * @param mtimeDest modification time of destination file
   * @return the result
   */
TDEIO_EXPORT RenameDlg_Result open_RenameDlg( const TQString & caption,
                                 // KDE4: make those KURLs
                                 const TQString& src, const TQString & dest,
                                 RenameDlg_Mode mode, TQString& newDestPath,
                                 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
                                 );

/*! @} */

}
#endif