{
COL_NAME,
FIRST_VISIBLE_COLUMN = COL_NAME,
+ COL_SIZE,
COL_PROGRESS,
COL_WANTED,
COL_PRIORITY,
if (column == COL_FILE_INDEX)
{
- return myFileIndex;
+ value.setValue (myFileIndex);
}
else if (role == Qt::EditRole)
{
if (column == 0)
value.setValue (name());
}
+ else if ((role == Qt::TextAlignmentRole) && column == COL_SIZE)
+ {
+ value = Qt::AlignRight + Qt::AlignVCenter;
+ }
else if (role == Qt::DisplayRole)
{
switch(column)
{
case COL_NAME:
- value.setValue (fileSizeName());
+ value.setValue (name());
+ break;
+
+ case COL_SIZE:
+ value.setValue (sizeString() + " ");
break;
case COL_PROGRESS:
}
QString
-FileTreeItem :: fileSizeName () const
+FileTreeItem :: sizeString () const
{
- uint64_t have = 0;
- uint64_t total = 0;
+ QString str;
if (myChildren.isEmpty())
- total = myTotalSize;
+ {
+ str = Formatter::sizeToString (myTotalSize);
+ }
else
- getSubtreeWantedSize (have, total);
+ {
+ uint64_t have = 0;
+ uint64_t total = 0;
+ getSubtreeWantedSize (have, total);
+ str = Formatter::sizeToString (total);
+ }
- return QString("%1 (%2)").arg(name()).arg(Formatter::sizeToString(total));
+ return str;
}
std::pair<int,int>
bool updateFields)
{
int changed_count = 0;
- int changed_columns[3];
+ int changed_columns[4];
if (myName != name)
{
changed_columns[changed_count++] = COL_NAME;
}
- if (fileIndex() != -1)
+ if (myHaveSize != haveSize)
{
- if (myHaveSize != haveSize)
- myHaveSize = haveSize;
+ myHaveSize = haveSize;
+ changed_columns[changed_count++] = COL_PROGRESS;
+ }
+ if (fileIndex() != -1)
+ {
if (updateFields)
{
if (myIsWanted != wanted)
data.setValue (tr("File"));
break;
+ case COL_SIZE:
+ data.setValue (tr("Size"));
+ break;
+
case COL_PROGRESS:
data.setValue (tr("Progress"));
break;
emit wantedChanged (file_ids, want);
// this changes the name column's parenthetical size-wanted string too...
- QModelIndex nameSibling = index.sibling (index.row(), COL_NAME);
+ QModelIndex nameSibling = index.sibling (index.row(), COL_SIZE);
dataChanged (nameSibling, nameSibling);
- parentsChanged (nameSibling, COL_NAME);
+ parentsChanged (nameSibling, COL_SIZE);
dataChanged (index, index);
parentsChanged (index, column);
case COL_NAME:
{
const QFontMetrics fm(item.font);
- const QString text = index.data().toString();
const int iconSize = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize);
size.rwidth() = HIG::PAD_SMALL + iconSize;
size.rheight() = std::max(iconSize, fm.height());
sortByColumn (COL_NAME, Qt::AscendingOrder);
installEventFilter (this);
- for (int i=0; i<FIRST_VISIBLE_COLUMN; ++i)
- hideColumn (i);
- for (int i=LAST_VISIBLE_COLUMN+1; i<NUM_COLUMNS; ++i)
- hideColumn (i);
-
- for (int i=FIRST_VISIBLE_COLUMN; i<=LAST_VISIBLE_COLUMN; ++i)
- header()->setResizeMode(i, QHeaderView::Interactive);
+ for (int i=0; i<NUM_COLUMNS; ++i)
+ {
+ setColumnHidden (i, (i<FIRST_VISIBLE_COLUMN) || (LAST_VISIBLE_COLUMN<i));
+ header()->setResizeMode(i, QHeaderView::Interactive);
+ }
connect (this, SIGNAL(clicked(const QModelIndex&)),
this, SLOT(onClicked(const QModelIndex&)));
if (isColumnHidden (column))
continue;
- const QString header = myModel.headerData (column, Qt::Horizontal).toString() + " ";
+ QString header;
+ if (column == COL_SIZE)
+ header = "999.9 KiB";
+ else
+ header = myModel.headerData (column, Qt::Horizontal).toString();
+ header += " ";
const int width = fontMetrics.size (0, header).width();
setColumnWidth (column, width);
left -= width;
l = myFreespaceLabel;
layout->addWidget (l, ++row, 0, 1, 2, Qt::Alignment (Qt::AlignRight | Qt::AlignTop));
- layout->setRowMinimumHeight (row, l->height() + HIG::PAD);
+ layout->setRowMinimumHeight (row, l->height() + HIG::PAD_SMALL);
myTree = new FileTreeView (0, false);
layout->addWidget( myTree, ++row, 0, 1, 2 );
if( !session.isLocal( ) )
- myTree->hideColumn( 1 ); // hide the % done, since we've no way of knowing
+ myTree->hideColumn( 2 ); // hide the % done, since we've no way of knowing
QComboBox * m = new QComboBox;
m->addItem( tr( "High" ), TR_PRI_HIGH );