summaryrefslogtreecommitdiff
path: root/plugins-alternative/Themes/Teracopy/interface.h
blob: b2f6a704c442fb585710ffa53474d0f040ca8343 (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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/** \file interface.h
\brief Define the interface test
\author alpha_one_x86
\licence GPL3, see the file COPYING */

#ifndef INTERFACE_H
#define INTERFACE_H

#include <QObject>
#include <QWidget>
#include <QCloseEvent>
#include <QMenu>
#include <QColor>

#include "../../../interface/PluginInterface_Themes.h"

#include "ui_interface.h"
#include "Environment.h"
#include "TransferModel.h"

namespace Ui {
    class interfaceCopy;
}

/// \brief Define the interface
class Themes : public PluginInterface_Themes
{
    Q_OBJECT
private:
    struct ItemOfCopyListWithMoreInformations
    {
        quint64 currentProgression;
        Ultracopier::ItemOfCopyList generalData;
        Ultracopier::ActionTypeCopyList actionType;
        bool custom_with_progression;
    };
    struct currentTransfertItem
    {
        quint64 id;
        bool haveItem;
        QString from;
        QString to;
        QString current_file;
        int progressBar_file;
    };
    Ui::interfaceCopy *ui;
    quint64 currentFile;
    quint64 totalFile;
    quint64 currentSize;
    quint64 totalSize;
    void updateOverallInformation();
    void updateCurrentFileInformation();
    Ultracopier::EngineActionInProgress action;
    void closeEvent(QCloseEvent *event);
    QList<ItemOfCopyListWithMoreInformations> currentProgressList;
    QString speedString;
    bool storeIsInPause;
    bool modeIsForced;
    Ultracopier::CopyType type;
    Ultracopier::CopyMode mode;
    void updateModeAndType();
    bool haveStarted;
    QWidget optionEngineWidget;
    void updateTitle();
    QMenu menu;
    FacilityInterface * facilityEngine;
    int loop_size,loop_sub_size,indexAction,index;
    int index_for_loop,sub_loop_size,sub_index_for_loop;
    currentTransfertItem getCurrentTransfertItem();
    QList<quint64> startId,stopId;///< To show what is started, what is stopped
    QList<ItemOfCopyListWithMoreInformations> InternalRunningOperation;///< to have progression and stat
    /// \brief the custom transfer model
    TransferModel transferModel;
    QColor progressColorWrite;
    QColor progressColorRead;
    QColor progressColorRemaining;
public:
    //send information about the copy
    /// \brief to set the action in progress
    void actionInProgess(const Ultracopier::EngineActionInProgress &);
    /// \brief new transfer have started
    void newTransferStart(const Ultracopier::ItemOfCopyList &item);
    /** \brief one transfer have been stopped
     * is stopped, example: because error have occurred, and try later, don't remove the item! */
    void newTransferStop(const quint64 &id);
    /// \brief the new folder is listing
    void newFolderListing(const QString &path);
    /** \brief show the detected speed
     * in byte per seconds */
    void detectedSpeed(const quint64 &speed);
    /** \brief support speed limitation */
    void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool);
    /** \brief show the remaining time
     * time in seconds */
    void remainingTime(const int &remainingSeconds);
    /// \brief set the current collision action
    void newCollisionAction(const QString &action);
    /// \brief set the current error action
    void newErrorAction(const QString &action);
    /// \brief set one error is detected
    void errorDetected();
    /// \brief new error
    void errorToRetry(const QString &source,const QString &destination,const QString &error);
    //speed limitation
    /** \brief the max speed used
     * in byte per seconds, -1 if not able, 0 if disabled */
    bool setSpeedLimitation(const qint64 &speedLimitation);
    Themes(FacilityInterface * facilityEngine);
    ~Themes();
    //get information about the copy
    /// \brief show the general progression
    void setGeneralProgression(const quint64 &current,const quint64 &total);
    /// \brief show the file progression
    void setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList);
    /// \brief set collision action
    void setCollisionAction(const QList<QPair<QString,QString> > &);
    /// \brief set error action
    void setErrorAction(const QList<QPair<QString,QString> > &);
    /// \brief set the copyType -> file or folder
    void setCopyType(const Ultracopier::CopyType &);
    /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
    void forceCopyMode(const Ultracopier::CopyMode &);
    /// \brief set if transfer list is exportable/importable
    void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation);
    /** \brief set if the order is external (like file manager copy)
     * to notify the interface, which can hide add folder/filer button */
    void haveExternalOrder();
    /// \brief set if is in pause
    void isInPause(const bool &);
    /// \brief get the widget for the copy engine
    QWidget * getOptionsEngineWidget();
    /// \brief to set if the copy engine is found
    void getOptionsEngineEnabled(const bool &isEnabled);
private slots:
    void on_cancelButton_clicked();
    void on_pauseButton_clicked();
    void on_skipButton_clicked();
    void forcedModeAddFile();
    void forcedModeAddFolder();
    void forcedModeAddFileToCopy();
    void forcedModeAddFolderToCopy();
    void forcedModeAddFileToMove();
    void forcedModeAddFolderToMove();
signals:
    #ifdef ULTRACOPIER_PLUGIN_DEBUG
    /// \brief To debug source
    void debugInformation(const Ultracopier::DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
    #endif
    //set the transfer list
    /*void removeItems(QList<int> ids);
    void moveItemsOnTop(QList<int> ids);
    void moveItemsUp(QList<int> ids);
    void moveItemsDown(QList<int> ids);
    void moveItemsOnBottom(QList<int> ids);
    void exportTransferList();
    void importTransferList();
    //user ask ask to add folder (add it with interface ask source/destination)
    void userAddFolder(Ultracopier::CopyMode);
    void userAddFile(Ultracopier::CopyMode);
    void urlDropped(QList<QUrl> urls);
    //action on the copy
    void pause();
    void resume();
    void skip(quint64 id);
    void cancel();
    //edit the action
    void sendCollisionAction(QString action);
    void sendErrorAction(QString action);
    void newSpeedLimitation(qint64);*/
public slots:
    //set the translate
    void newLanguageLoaded();
    void getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions);
};

#endif // INTERFACE_H