const char *aff_part_aux(const unsigned int newline, const disk_t *disk_car, const partition_t *partition) { char status=' '; static char msg[200]; unsigned int pos=0; const arch_fnct_t *arch=partition->arch; if(arch==NULL) { log_error("BUG: No arch for a partition\n"); msg[0]='\0'; return msg; } msg[sizeof(msg)-1]=0; if((newline&AFF_PART_ORDER)==AFF_PART_ORDER) { if(partition->status!=STATUS_EXT_IN_EXT && partition->order!=NO_ORDER) pos+=snprintf(&msg[pos],sizeof(msg)-pos-1,"%2u ", partition->order); else pos+=snprintf(&msg[pos],sizeof(msg)-pos-1," "); } if((newline&AFF_PART_STATUS)==AFF_PART_STATUS) { status=get_partition_status(partition); /* Don't marked as D(eleted) an entry that is not a partition */ if((newline&AFF_PART_ORDER)==AFF_PART_ORDER && partition->order==NO_ORDER && partition->status==STATUS_DELETED) status=' '; } pos+=snprintf(&msg[pos],sizeof(msg)-pos-1,"%c", status); if(arch->get_partition_typename(partition)!=NULL) pos+=snprintf(&msg[pos],sizeof(msg)-pos-1, " %-20s ", arch->get_partition_typename(partition)); else if(arch->get_part_type) pos+=snprintf(&msg[pos],sizeof(msg)-pos-1, " Sys=%02X ", arch->get_part_type(partition)); else pos+=snprintf(&msg[pos],sizeof(msg)-pos-1, " Unknown "); if(disk_car->unit==UNIT_SECTOR) { pos+=snprintf(&msg[pos],sizeof(msg)-pos-1, " %10llu %10llu ", (long long unsigned)(partition->part_offset/disk_car->sector_size), (long long unsigned)((partition->part_offset+partition->part_size-1)/disk_car->sector_size)); } else { pos+=snprintf(&msg[pos],sizeof(msg)-pos-1,"%5u %3u %2u %5u %3u %2u ", offset2cylinder(disk_car,partition->part_offset), offset2head( disk_car,partition->part_offset), offset2sector( disk_car,partition->part_offset), offset2cylinder(disk_car,partition->part_offset+partition->part_size-1), offset2head( disk_car,partition->part_offset+partition->part_size-1), offset2sector( disk_car,partition->part_offset+partition->part_size-1)); } pos+=snprintf(&msg[pos],sizeof(msg)-pos-1,"%10llu", (long long unsigned)(partition->part_size/disk_car->sector_size)); if(partition->partname[0]!='\0') pos+=snprintf(&msg[pos],sizeof(msg)-pos-1, " [%s]",partition->partname); if(partition->fsname[0]!='\0') snprintf(&msg[pos],sizeof(msg)-pos-1, " [%s]",partition->fsname); return msg; }
void QPhotorec::PartListWidget_updateUI() { list_part_t *element; PartListWidget->setRowCount(0); PartListWidget->setSortingEnabled(false); for(element=list_part; element!=NULL; element=element->next) { const partition_t *partition=element->part; if(partition->status!=STATUS_EXT_IN_EXT) { const arch_fnct_t *arch=partition->arch; const int currentRow = PartListWidget->rowCount(); PartListWidget->setRowCount(currentRow + 1); if(partition->order==NO_ORDER) { QTableWidgetItem *item = new QTableWidgetItem(); item->setData(0, ""); PartListWidget->setItem(currentRow, 0, item); } else { QTableWidgetItem *item = new QTableWidgetItem(); item->setData(0, partition->order); PartListWidget->setItem(currentRow, 0, item); } { QTableWidgetItem *item=new QTableWidgetItem(QString(get_partition_status(partition))); item->setTextAlignment(Qt::AlignHCenter| Qt::AlignVCenter); PartListWidget->setItem(currentRow, 1, item); } if(arch->get_partition_typename(partition)!=NULL) PartListWidget->setItem(currentRow, 2, new QTableWidgetItem(QString(arch->get_partition_typename(partition)))); else if(arch->get_part_type) PartListWidget->setItem(currentRow, 2, new QTableWidgetItem(tr("Sys=") + QString::number(arch->get_part_type(partition)))); else PartListWidget->setItem(currentRow, 2, new QTableWidgetItem(tr("Unknown"))); if(partition->upart_type>0) { QTableWidgetItem *item=new QTableWidgetItem(QString(arch_none.get_partition_typename(partition))); item->setToolTip(QString(partition->info)); PartListWidget->setItem(currentRow, 3, item); } else { PartListWidget->setItem(currentRow, 3, new QTableWidgetItem("")); } { char sizeinfo[32]; QTableWidgetItem *item; size_to_unit(partition->part_size, &sizeinfo[0]); item=new QTableWidgetItem(QString(sizeinfo)); item->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); PartListWidget->setItem(currentRow, 4, item); /* Select the partition if it's already known */ if(selected_partition == partition) PartListWidget->setCurrentItem(item); } { QString partname=""; if(partition->partname[0]!='\0') { partname.sprintf("[%s]", partition->partname); } if(partition->fsname[0]!='\0') { QString fsname; fsname.sprintf(" [%s]", partition->fsname); partname.append(fsname); } PartListWidget->setItem(currentRow, 5, new QTableWidgetItem(partname)); } } } PartListWidget->setSortingEnabled(true); PartListWidget->sortByColumn(0, Qt::AscendingOrder); PartListWidget->resizeColumnsToContents(); }