Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add button to Retry All #499

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
10 changes: 10 additions & 0 deletions src/MEGASync/gui/MegaTransferView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -745,3 +745,13 @@ void MegaTransferView::clearAllTransferClicked()
model->removeAllTransfers();
}
}


void MegaTransferView::retryAllFailedTransferClicked()
{
QTransfersModel *model = (QTransfersModel*)this->model();
if (model)
{
model->retryAllTransfers();
}
}
1 change: 1 addition & 0 deletions src/MEGASync/gui/MegaTransferView.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ private slots:
void clearTransferClicked();
void clearAllTransferClicked();

void retryAllFailedTransferClicked();
signals:
void showContextMenu(QPoint pos);
};
Expand Down
1 change: 1 addition & 0 deletions src/MEGASync/gui/QCustomTransfersModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,7 @@ void QCustomTransfersModel::updateActiveTransfer(MegaApi *api, MegaTransfer *new
}
}


transfer_it QCustomTransfersModel::getInsertPosition(MegaTransfer *transfer)
{
transfer_it it = transferOrder.begin();
Expand Down
37 changes: 37 additions & 0 deletions src/MEGASync/gui/QFinishedTransfersModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,43 @@ void QFinishedTransfersModel::removeAllTransfers()
emit noTransfers();
}

void QFinishedTransfersModel::retryAllTransfers()
{
retryAllFailedTransfers();
}


void QFinishedTransfersModel::retryAllFailedTransfers()
{
if (transfers.size())
{
// TODO:
// Filter for failed transfers
// For each failed tx
// retry the tx
// possibly set whichever flags / state indicate its in progress
// (i think the API does this for me though)
//
// See following for how to retry.
// https://github.com/matthewstrasiotto/MEGAsync/blob/58d3ed7f4a10d08b0fa908639a65deac6a6bde1b/src/MEGASync/gui/MegaTransferDelegate.cpp#L292

for (QMap<int, TransferItemData*>::iterator it = transfers.begin(); it != transfers.end();)
{
int tag = it.key();

MegaTransfer *transfer = ((MegaApplication *)qApp)->getFinishedTransferByTag(tag);
if (transfer)
{
if (transfer->getLastError().getErrorCode())
{
((MegaApplication*)qApp)->getMegaApi()->retryTransfer(transfer);
}
}

}
}
}

MegaTransfer *QFinishedTransfersModel::getTransferByTag(int tag)
{
MegaTransfer *transfer = ((MegaApplication *)qApp)->getFinishedTransferByTag(tag);
Expand Down
2 changes: 2 additions & 0 deletions src/MEGASync/gui/QFinishedTransfersModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ class QFinishedTransfersModel : public QTransfersModel

private slots:
void refreshTransferItem(int tag);
void retryAllFailedTransfers();

public slots:
void removeAllTransfers();
void removeTransferByTag(int transferTag);
void retryAllTransfers();
};

#endif // QFINISHEDTRANSFERSMODEL_H
5 changes: 5 additions & 0 deletions src/MEGASync/gui/QTransfersModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,8 @@ QTransfersModel::~QTransfersModel()
{
qDeleteAll(transfers);
}

void QTransfersModel::retryAllTransfers()
{
// Interface stub
}
3 changes: 3 additions & 0 deletions src/MEGASync/gui/QTransfersModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ class QTransfersModel : public QAbstractItemModel, public mega::MegaTransferList

virtual void removeTransferByTag(int transferTag) = 0;
virtual void removeAllTransfers() = 0;

void retryAllTransfers();

virtual mega::MegaTransfer *getTransferByTag(int tag) = 0;

QCache<int, TransferItem> transferItems;
Expand Down
21 changes: 15 additions & 6 deletions src/MEGASync/gui/TransferManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -469,21 +469,21 @@ void TransferManager::updateState()
QWidget *w = ui->wTransfers->currentWidget();
if (w == ui->wActiveTransfers)
{
onTransfersActive(ui->wActiveTransfers->areTransfersActive());
onTransfersActive(ui->wActiveTransfers->areTransfersActive(), false);
}
else if (w == ui->wDownloads)
{
onTransfersActive(ui->wDownloads->areTransfersActive());
onTransfersActive(ui->wDownloads->areTransfersActive(), false);
ui->wDownloads->pausedTransfers(preferences->getDownloadsPaused());
}
else if (w == ui->wUploads)
{
onTransfersActive(ui->wUploads->areTransfersActive());
onTransfersActive(ui->wUploads->areTransfersActive(), false);
ui->wUploads->pausedTransfers(preferences->getUploadsPaused());
}
else if (w == ui->wCompleted)
{
onTransfersActive(ui->wCompleted->areTransfersActive());
onTransfersActive(ui->wCompleted->areTransfersActive(), true);
}
}

Expand Down Expand Up @@ -556,9 +556,9 @@ void TransferManager::refreshFinishedTime()
}
}

void TransferManager::onTransfersActive(bool exists)
void TransferManager::onTransfersActive(bool clearExists, bool retryExists)
{
ui->bClearAll->setEnabled(exists);
ui->bClearAll->setEnabled(clearExists);
}

void TransferManager::updateNumberOfCompletedTransfers(int num)
Expand Down Expand Up @@ -633,3 +633,12 @@ void TransferManager::mouseReleaseEvent(QMouseEvent *event)
dragPosition = QPoint(-1, -1);
}


void TransferManager::on_bRetryAll_clicked()
{
QWidget *w = ui->wTransfers->currentWidget();
if(w == ui->wCompleted)
{
ui->wCompleted->retryTransfers();
}
}
4 changes: 3 additions & 1 deletion src/MEGASync/gui/TransferManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class TransferManager : public QDialog, public mega::MegaTransferListener
QTimer *refreshTransferTime;

void createAddMenu();
void onTransfersActive(bool exists);
void onTransfersActive(bool clearExists, bool retryExists);

public slots:
void updateState();
Expand All @@ -76,6 +76,8 @@ private slots:

void refreshFinishedTime();

void on_bRetryAll_clicked();

protected:
void changeEvent(QEvent *event);
void mouseMoveEvent(QMouseEvent *event);
Expand Down
5 changes: 5 additions & 0 deletions src/MEGASync/gui/TransfersWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ void TransfersWidget::clearTransfers()
model->removeAllTransfers();
}

void TransfersWidget::retryTransfers()
{
model->retryAllTransfers();
}

TransfersWidget::~TransfersWidget()
{
delete ui;
Expand Down
2 changes: 2 additions & 0 deletions src/MEGASync/gui/TransfersWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class TransfersWidget : public QWidget
void setupTransfers(mega::MegaTransferData *transferData, int type);
void refreshTransferItems();
void clearTransfers();

void retryTransfers();
void pausedTransfers(bool paused);
void disableGetLink(bool disable);
QTransfersModel *getModel();
Expand Down
111 changes: 105 additions & 6 deletions src/MEGASync/gui/linux/TransferManager.ui
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
border: none;
}

#bClearAll:disabled, #bPause:disabled, #bAdd:disabled
#bClearAll:disabled, #bPause:disabled, #bAdd:disabled, bRetryAll:disabled
{
color: rgba(119, 119, 119, 30%);
}
Expand All @@ -100,7 +100,7 @@

}

#bAdd:hover, #bPause::hover, #bClearAll::hover
#bAdd:hover, #bPause::hover, #bClearAll::hover, bRetryAll:hover
{
border: 1px solid rgba(0, 0, 0, 20%);
border-radius: 3px;
Expand All @@ -109,7 +109,7 @@

}

#bAdd:pressed, #bPause::pressed, #bClearAll::pressed
#bAdd:pressed, #bPause::pressed, #bClearAll::pressed, bRetryAll:pressed
{
background-color: rgba(0, 0, 0, 10%);
border: 1px solid rgba(0, 0, 0, 20%);
Expand All @@ -129,15 +129,15 @@
font-style: normal;
color: #ffffff;
}
#bClose::hover
#bClose::hover, bRetryAll::hover
{
border: 1px solid rgba(0, 0, 0, 60%);
border-radius: 3px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #999999, stop: 1 #aaaaaa);
}

#bClose::pressed
#bClose::pressed, bRetryAll::pressed
{
border: 1px solid rgba(0, 0, 0, 60%);
border-radius: 3px;
Expand Down Expand Up @@ -292,7 +292,7 @@
<string>Add...</string>
</property>
<property name="icon">
<iconset resource="../Resources_win.qrc">
<iconset resource="../Resources_linux.qrc">
<normaloff>:/images/ico_drop_add_sync.png</normaloff>:/images/ico_drop_add_sync.png</iconset>
</property>
<property name="iconSize">
Expand Down Expand Up @@ -807,6 +807,105 @@ border-top: 1px solid rgba(0, 0, 0, 10%);
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="bRetryAll">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>120</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>32</height>
</size>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>46</red>
<green>52</green>
<blue>54</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>202</red>
<green>202</green>
<blue>202</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>231</red>
<green>231</green>
<blue>231</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>202</red>
<green>202</green>
<blue>202</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="127">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string>Retry All</string>
</property>
<property name="icon">
<iconset resource="../Resources_linux.qrc">
<normaloff>:/images/[email protected]</normaloff>:/images/[email protected]</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
Expand Down
2 changes: 1 addition & 1 deletion src/MEGASync/gui/linux/TransfersWidget.ui
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
<string notr="true"/>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="TransfersStateInfoWidget" name="pNoTransfers">
<property name="sizePolicy">
Expand Down
Loading