]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/renamedialog.h
[KStandardItemListWidget] Update icon when palette changes
[dolphin.git] / src / views / renamedialog.h
index eca5f4d06883f727a386373d9b37fe39136c34aa..3964c0a5c4fe05e14db941dedb22131f60189118 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at)                  *
+ *   Copyright (C) 2006-2010 by Peter Penz (peter.penz@gmx.at)             *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   Free Software Foundation, Inc.,                                       *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
+
 #ifndef RENAMEDIALOG_H
 #define RENAMEDIALOG_H
 
-#include "libdolphin_export.h"
-
-#include <kdialog.h>
-#include <kurl.h>
-
-class KFileItem;
-class KFileItemList;
-class KLineEdit;
+#include "dolphin_export.h"
 
+#include <QDialog>
+#include <KFileItem>
 #include <QString>
 
+class QLineEdit;
+class QSpinBox;
+class QPushButton;
+
 /**
  * @brief Dialog for renaming a variable number of files.
- *
- * The renaming is not done by the dialog, the invoker
- * must do this itself:
- * \code
- * RenameDialog dialog(...);
- * if (dialog.exec() == QDialog::Accepted) {
- *     const QString& newName = dialog.newName();
- *     if (newName.isEmpty()) {
- *         // an invalid name has been chosen, use
- *         // dialog.errorString() to tell the user about this
- *     }
- *     else {
- *         // rename items corresponding to the new name
- *     }
- * }
- * \endcode
  */
-class LIBDOLPHINPRIVATE_EXPORT RenameDialog : public KDialog
+class DOLPHIN_EXPORT RenameDialog : public QDialog
 {
     Q_OBJECT
 
 public:
-    explicit RenameDialog(QWidget *parent, const KFileItemList& items);
+    explicit RenameDialog(QWidgetparent, const KFileItemList& items);
     virtual ~RenameDialog();
 
-    /**
-     * Returns the new name of the items. If more than one
-     * item should be renamed, then it is assured that the # character
-     * is part of the returned string. If the returned string is empty,
-     * then RenameDialog::errorString() should be used to show the reason
-     * of having an empty string (e. g. if the # character has
-     * been deleted by the user, although more than one item should be
-     * renamed).
-     */
-    QString newName() const;
+private slots:
+    void slotAccepted();
+    void slotTextChanged(const QString& newName);
+
+protected:
+    void showEvent(QShowEvent* event) override;
+
+private:
+    void renameItems();
+    void renameItem(const KFileItem &item, const QString& newName);
 
     /**
-     * Returns the error string, if Dialog::newName() returned an empty string.
+     * @return Returns the string \p name, where the characters represented by
+     *         \p indexPlaceHolder get replaced by the index \p index.
+     *         E. g. Calling indexedName("Test #.jpg", 12, '#') returns "Test 12.jpg".
+     *         A connected sequence of placeholders results in leading zeros:
+     *         indexedName("Test ####.jpg", 12, '#') returns "Test 0012.jpg".
      */
-    QString errorString() const;
-
-protected slots:
-    virtual void slotButtonClicked(int button);
+    static QString indexedName(const QString& name, int index, const QChar& indexPlaceHolder);
 
 private:
     bool m_renameOneItem;
-    KLineEdit* m_lineEdit;
     QString m_newName;
-    QString m_errorString;
-
-    friend class RenameDialogTest; // allow access for unit testing
+    QLineEdit* m_lineEdit;
+    KFileItemList m_items;
+    bool m_allExtensionsDifferent;
+    QSpinBox* m_spinBox;
+    QPushButton* m_okButton;
 };
 
-inline QString RenameDialog::newName() const
-{
-    return m_newName;
-}
-
-inline QString RenameDialog::errorString() const
-{
-    return m_errorString;
-}
-
 #endif