File indexing completed on 2024-04-21 16:32:35

0001 /***************************************************************************
0002                         progressdialog.h  -  description
0003                              -------------------
0004     begin                : Sun Jul 1 2007
0005     copyright            : (C) 2007 by Dominik Seichter
0006     email                : domseichter@web.de
0007 ***************************************************************************/
0008 
0009 /***************************************************************************
0010  *                                                                         *
0011  *   This program is free software; you can redistribute it and/or modify  *
0012  *   it under the terms of the GNU General Public License as published by  *
0013  *   the Free Software Foundation; either version 2 of the License, or     *
0014  *   (at your option) any later version.                                   *
0015  *                                                                         *
0016  ***************************************************************************/
0017 
0018 #ifndef PROGRESS_DIALOG_H
0019 #define PROGRESS_DIALOG_H
0020 
0021 #include <QDialog>
0022 
0023 #include "ui_progressdialog.h"
0024 
0025 #include "krenamefile.h"
0026 
0027 class BatchRenamer;
0028 
0029 class ProgressDialog : public QDialog
0030 {
0031     Q_OBJECT
0032 
0033 public:
0034     ProgressDialog(ESplitMode eSplitMode, unsigned int dot, QWidget *parent = nullptr);
0035 
0036     /** Set the destination of the files
0037      *  so that the user can easily open a file browser
0038      *  theres.
0039      *
0040      *  @param dest the destination directory
0041      */
0042     inline void setDestination(const QUrl &dest);
0043 
0044     /** Set the number of total steps in the progressbar
0045      *  which is displayed to the user.
0046      *
0047      *  @param t the number of steps
0048      */
0049     inline void setProgressTotalSteps(int t);
0050 
0051     /** Set the current progress
0052      *
0053      *  @param p current progress (must be smaller
0054      *           than the total number of steps and bigger than 0)
0055      *
0056      *  \see setProgressTotalSteps
0057      */
0058     inline void setProgress(int p);
0059 
0060     /**
0061      * @returns true if the user has cancelled the operation (otherwise false)
0062      */
0063     inline bool wasCancelled() const;
0064 
0065     /*
0066     inline void setDestination( const KURL & dir );
0067     inline void setRenamedFiles( RenamedList* list, unsigned int size ) ;
0068     inline void setCreatedDirectories( const KURL::List & list );
0069     *    */
0070 
0071     //void done( int errors, int successful, bool allowundo );
0072 
0073     /** Print an information message to the user
0074      *
0075      *  @param text message
0076      *  @param pixmap an optional icon
0077      */
0078     void print(const QString &text, const QString &pixmap = nullptr);
0079 
0080     /** Print an error message to the user
0081      *
0082      *  @param text message
0083      */
0084     void error(const QString &text);
0085 
0086     /** Print a warning message to the user
0087      *
0088      *  @param text message
0089      */
0090     void warning(const QString &text);
0091 
0092     /** Renaming is done.
0093      *
0094      *  Mostly used to disable the cancel button
0095      *  and enable other buttons
0096      *
0097      *  @param enableMore if ture the more button will be enabled
0098      *  @param enableUndo if true the undo button will be enabled
0099      *  @param batchRename is a handle to a batchrenamer instance that can be used to undo the operation and
0100      *                     to determine URLs for a new renaming session
0101      *  @param errros the number of errors that have occurred. If errors have occurred the user
0102      *                has the extra possibility to only rename files with errors again
0103      */
0104     void renamingDone(bool enableMore, bool enableUndo, BatchRenamer *renamer, int errors);
0105 
0106 protected:
0107     void closeEvent(QCloseEvent *event) override;
0108 
0109 private Q_SLOTS:
0110     /** Called when the user cancels the operation
0111      */
0112     void slotCancelled();
0113 
0114     /** Called when the users presses the "Open Destination..." button
0115      */
0116     void slotOpenDestination();
0117 
0118     /** Called when the user wants to rename some more files
0119      */
0120     void slotRestartKRename();
0121 
0122     /** Called when the user wants to rename all files again
0123      *  that have been processed without an error.
0124      */
0125     void slotRenameProcessedAgain();
0126 
0127     /** Called when the user wants to rename all files again
0128      *  that have been processed with an error.
0129      */
0130     void slotRenameUnprocessedAgain();
0131 
0132     /** Called when the user wants to rename all files again.
0133      */
0134     void slotRenameAllAgain();
0135 
0136     /** Called when the user wants instant undo
0137      */
0138     void slotUndo();
0139 
0140 private:
0141     Ui::ProgressDialog m_widget;
0142 
0143     bool m_canceled;         ///< the current canceled state
0144     BatchRenamer *m_renamer; ///< A BatchRenamer that can undo the operation
0145     QUrl m_dest;             ///< files destination
0146 
0147     QPushButton *m_buttonUndo;
0148     QPushButton *m_buttonMore;
0149     QPushButton *m_buttonDest;
0150     QPushButton *m_buttonClose;
0151 
0152     QAction     *m_actProcessed;
0153     QAction     *m_actUnprocessed;
0154 
0155     ESplitMode   m_eSplitMode;
0156     unsigned int m_dot;
0157 };
0158 
0159 void ProgressDialog::setDestination(const QUrl &dest)
0160 {
0161     m_dest = dest;
0162 }
0163 
0164 void ProgressDialog::setProgressTotalSteps(int t)
0165 {
0166     m_widget.bar->setMaximum(t);
0167 }
0168 
0169 void ProgressDialog::setProgress(int p)
0170 {
0171     m_widget.bar->setValue(p);
0172 }
0173 
0174 bool ProgressDialog::wasCancelled() const
0175 {
0176     return m_canceled;
0177 }
0178 
0179 #endif // PROGRESS_DIALOG_H