Skip to content
Permalink
Browse files

FolderDelegate: put the progressbar in place of the remote or local f…

…older #3403 #3569

So the size of the delegate does not change
  • Loading branch information...
ogoffart committed Oct 27, 2015
1 parent fac0034 commit 3f2a2cb14b3e67d45c8d8d2161220a87dc6726e8
Showing with 19 additions and 26 deletions.
  1. +17 −20 src/gui/folderstatusdelegate.cpp
  2. +0 −1 src/gui/folderstatusdelegate.h
  3. +2 −5 src/gui/folderstatusmodel.cpp
@@ -79,12 +79,6 @@ QSize FolderStatusDelegate::sizeHint(const QStyleOptionViewItem & option ,
h += aliasMargin*2 + errMsgs.count()*fm.height();
}

if( qvariant_cast<bool>(index.data(AddProgressSpace)) ) {
int margin = fm.height()/4;
h += (5 * margin); // All the margins
h += 2* fm.boundingRect(tr("File")).height();
}

return QSize( 0, h);
}

@@ -221,20 +215,23 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
painter->setFont(aliasFont);
painter->drawText(aliasRect, elidedAlias);

painter->setFont(subFont);
QString elidedRemotePathText;
const bool showProgess = !overallString.isEmpty() || !itemString.isEmpty();
if(!showProgess) {
painter->setFont(subFont);
QString elidedRemotePathText;

if (remotePath.isEmpty() || remotePath == QLatin1String("/")) {
elidedRemotePathText = subFm.elidedText(tr("Syncing selected files in your account with"),
Qt::ElideRight, remotePathRect.width());
} else {
elidedRemotePathText = subFm.elidedText(tr("Remote path: %1").arg(remotePath),
Qt::ElideMiddle, remotePathRect.width());
}
painter->drawText(remotePathRect, elidedRemotePathText);

if (remotePath.isEmpty() || remotePath == QLatin1String("/")) {
elidedRemotePathText = subFm.elidedText(tr("Syncing selected files in your account with"),
Qt::ElideRight, remotePathRect.width());
} else {
elidedRemotePathText = subFm.elidedText(tr("Remote path: %1").arg(remotePath),
Qt::ElideMiddle, remotePathRect.width());
QString elidedPathText = subFm.elidedText(pathText, Qt::ElideMiddle, localPathRect.width());
painter->drawText(localPathRect, elidedPathText);
}
painter->drawText(remotePathRect, elidedRemotePathText);

QString elidedPathText = subFm.elidedText(pathText, Qt::ElideMiddle, localPathRect.width());
painter->drawText(localPathRect, elidedPathText);

// paint an error overlay if there is an error string

@@ -270,7 +267,7 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
h += aliasMargin;

// Sync File Progress Bar: Show it if syncFile is not empty.
if( !overallString.isEmpty() || !itemString.isEmpty()) {
if (showProgess) {
int fileNameTextHeight = subFm.boundingRect(tr("File")).height();
int barHeight = qMax(fileNameTextHeight, aliasFm.height()+4); ;
int overallWidth = option.rect.width()-aliasMargin-nextToIcon;
@@ -283,7 +280,7 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &

// Overall Progress Bar.
QRect pBRect;
pBRect.setTop( h );
pBRect.setTop( remotePathRect.top() );
pBRect.setLeft( nextToIcon );
pBRect.setHeight(barHeight);
pBRect.setWidth( overallWidth - progressTextWidth - 2 * margin );
@@ -41,7 +41,6 @@ class FolderStatusDelegate : public QStyledItemDelegate
SyncProgressOverallPercent,
SyncProgressOverallString,
SyncProgressItemString,
AddProgressSpace,
WarningCount,
SyncRunning,

@@ -212,8 +212,6 @@ QVariant FolderStatusModel::data(const QModelIndex &index, int role) const
} else {
return Theme::instance()->folderOfflineIcon();
}
case FolderStatusDelegate::AddProgressSpace:
return !progress.isNull();
case FolderStatusDelegate::SyncProgressItemString:
return progress._progressString;
case FolderStatusDelegate::WarningCount:
@@ -658,7 +656,7 @@ void FolderStatusModel::slotUpdateFolderState(Folder *folder)
for (int i = 0; i < _folders.count(); ++i) {
if (_folders.at(i)._folder == folder) {
emit dataChanged(index(i), index(i),
QVector<int>() << FolderStatusDelegate::AddProgressSpace);
QVector<int>() << FolderStatusDelegate::FolderStatus);
}
}
}
@@ -751,8 +749,7 @@ void FolderStatusModel::slotSetProgress(const ProgressInfo &progress)
auto *pi = &_folders[folderIndex]._progress;

QVector<int> roles;
roles << FolderStatusDelegate::AddProgressSpace << FolderStatusDelegate::SyncProgressItemString
<< FolderStatusDelegate::WarningCount;
roles << FolderStatusDelegate::SyncProgressItemString << FolderStatusDelegate::WarningCount;

if (!progress._currentDiscoveredFolder.isEmpty()) {
pi->_progressString = tr("Checking for changes in '%1'").arg(progress._currentDiscoveredFolder);

0 comments on commit 3f2a2cb

Please sign in to comment.
You can’t perform that action at this time.