diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp index 53cb8145f..e4cf13f10 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp @@ -389,9 +389,11 @@ IdDialog::IdDialog(QWidget *parent) menu->addAction(CreateCircleAction); ui->toolButton_New->setMenu(menu); + QFontMetricsF fm(ui->idTreeWidget->font()) ; + /* Set initial section sizes */ QHeaderView * circlesheader = ui->treeWidget_membership->header () ; - circlesheader->resizeSection (CIRCLEGROUP_CIRCLE_COL_GROUPNAME, QFontMetricsF(ui->idTreeWidget->font()).width("Circle name")*1.5) ; + circlesheader->resizeSection (CIRCLEGROUP_CIRCLE_COL_GROUPNAME, fm.width("Circle name")*1.5) ; ui->treeWidget_membership->setColumnWidth(CIRCLEGROUP_CIRCLE_COL_GROUPNAME, 270); /* Setup tree */ @@ -406,12 +408,13 @@ IdDialog::IdDialog(QWidget *parent) /* Set header resize modes and initial section sizes */ QHeaderView * idheader = ui->idTreeWidget->header(); - QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_NAME, QHeaderView::ResizeToContents); - QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_ID, QHeaderView::ResizeToContents); - QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_OWNER_ID, QHeaderView::ResizeToContents); - QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_OWNER_NAME, QHeaderView::ResizeToContents); - QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_REPUTATION, QHeaderView::ResizeToContents); - idheader->setStretchLastSection(true); + QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_NAME, QHeaderView::Stretch); + QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_ID, QHeaderView::Stretch); + QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_OWNER_ID, QHeaderView::Stretch); + QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_OWNER_NAME, QHeaderView::Stretch); + QHeaderView_setSectionResizeModeColumn(idheader, RsIdentityListModel::COLUMN_THREAD_REPUTATION, QHeaderView::Fixed); + ui->idTreeWidget->setColumnWidth(RsIdentityListModel::COLUMN_THREAD_REPUTATION,fm.height()); + idheader->setStretchLastSection(false); mStateHelper->setActive(IDDIALOG_IDDETAILS, false); mStateHelper->setActive(IDDIALOG_REPLIST, false); @@ -1294,12 +1297,12 @@ void IdDialog::processSettings(bool load) { Settings->beginGroup("IdDialog"); - // state of peer tree - // ui->idTreeWidget->processSettings(load); - if (load) { // load settings + ui->idTreeWidget->header()->restoreState(Settings->value(objectName()).toByteArray()); + ui->idTreeWidget->header()->setHidden(Settings->value(objectName()+"HiddenHeader", false).toBool()); + // filterColumn //ui->filterLineEdit->setCurrentFilter(Settings->value("filterColumn", RsIdentityListModel::COLUMN_THREAD_NAME).toInt()); @@ -1322,6 +1325,9 @@ void IdDialog::processSettings(bool load) { // save settings + Settings->setValue(objectName(), ui->idTreeWidget->header()->saveState()); + Settings->setValue(objectName()+"HiddenHeader", ui->idTreeWidget->header()->isHidden()); + // filterColumn //Settings->setValue("filterColumn", ui->filterLineEdit->currentFilter()); @@ -1414,19 +1420,14 @@ void IdDialog::updateIdList() { std::cerr << "Updating identity list in widget." << std::endl; - applyWhileKeepingTree( [ids,this]() { + applyWhileKeepingTree( [ids,this]() + { std::cerr << "setting new identity in model." << std::endl; mIdListModel->setIdentities(*ids) ; delete ids; ui->label_count->setText("("+QString::number(mIdListModel->count())+")"); - - ui->idTreeWidget->resizeColumnToContents(RsIdentityListModel::COLUMN_THREAD_REPUTATION); - ui->idTreeWidget->resizeColumnToContents(RsIdentityListModel::COLUMN_THREAD_ID); - ui->idTreeWidget->resizeColumnToContents(RsIdentityListModel::COLUMN_THREAD_NAME); - ui->idTreeWidget->resizeColumnToContents(RsIdentityListModel::COLUMN_THREAD_OWNER_ID); - ui->idTreeWidget->resizeColumnToContents(RsIdentityListModel::COLUMN_THREAD_OWNER_NAME); }); }); }); diff --git a/retroshare-gui/src/gui/Identity/IdDialog.h b/retroshare-gui/src/gui/Identity/IdDialog.h index 938abdee3..c9c1df995 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.h +++ b/retroshare-gui/src/gui/Identity/IdDialog.h @@ -35,6 +35,7 @@ class IdDialog; } class UIStateHelper; +class QStyledItemDelegate; class QTreeWidgetItem; class RsIdentityListModel; class IdListSortFilterProxyModel; @@ -166,6 +167,10 @@ private: RsGxsGroupId mId; RsGxsGroupId mIdToNavigate; int filter; + bool mColumnSizeAlreadySet; // remembers if we already did some size set. If not, automatically stretch to content. + + QStyledItemDelegate *mElidedLabelDelegate; + QStyledItemDelegate *mReputationDelegate; RsIdentityListModel *mIdListModel; IdListSortFilterProxyModel *mProxyModel; diff --git a/retroshare-gui/src/gui/Identity/IdentityListModel.cpp b/retroshare-gui/src/gui/Identity/IdentityListModel.cpp index 0b6c6be22..2726d5a32 100644 --- a/retroshare-gui/src/gui/Identity/IdentityListModel.cpp +++ b/retroshare-gui/src/gui/Identity/IdentityListModel.cpp @@ -462,6 +462,7 @@ QVariant RsIdentityListModel::sizeHintRole(const EntryIndex& e,int col) const if(e.type == ENTRY_TYPE_CATEGORY) y_factor *= 1.5; + std::cerr << "sizeHintRole()" << std::endl; switch(col) { default: