void PublicationDashboardWindow::updateTreeWidget() {
	ui.treeWidget->clear();

	//find records in range
	QList<PublicationRecord> recordsInRange = filterByDateRange(records,
												ui.startDateSelector->date(),
												ui.endDateSelector->date());

	//count the records
	QMap<QString, int> pubTypeSummary;
	QMap<QString, QMap<QString, int>> nameSummary;
	QMap<QString, QMap<QString, QSet<QString>>> titleSummary;

	for (const PublicationRecord &record : recordsInRange) {
		++pubTypeSummary[record.type];

		++nameSummary[record.type][record.memberName];
		
		titleSummary[record.type][record.memberName].insert(record.title);
	}

	//build the view
	QTreeWidgetItem *root = new QTreeWidgetItem(ui.treeWidget, (QStringList() <<
									"Publications" << "" << "" << "" << QString::number(recordsInRange.size())));
	root->setTextAlignment(totalNumColumn, Qt::AlignRight);
	ui.treeWidget->expandItem(root);

	for (auto pubType = pubTypeSummary.begin(); pubType != pubTypeSummary.end(); ++pubType) {
		QTreeWidgetItem *pubNode = new QTreeWidgetItem(root, (QStringList() <<
											"" << pubType.key() << "" << "" << QString::number(pubType.value())));
		pubNode->setTextAlignment(totalNumColumn, Qt::AlignRight);
		
		QMap<QString, int> &currNameSummary = nameSummary[pubType.key()];
		for (auto name = currNameSummary.begin(); name != currNameSummary.end(); ++name) {
			QTreeWidgetItem *nameNode = new QTreeWidgetItem(pubNode, (QStringList() <<
												"" << "" << name.key() << "" << QString::number(name.value())));
			nameNode->setTextAlignment(totalNumColumn, Qt::AlignRight);
			
			QSet<QString> &currTitleSummary = titleSummary[pubType.key()][name.key()];
			for (QString &title : sortSet(currTitleSummary)) {
				QTreeWidgetItem *titleNode = new QTreeWidgetItem(nameNode, (QStringList() <<
												"" << "" << "" << title << ""));
				titleNode->setTextAlignment(totalNumColumn, Qt::AlignRight);
			}
		}
	}

	//set the dropdown values
	ui.visualizationFacultyNameSelector->clear();
	ui.visualizationFacultyNameSelector->addItems(listFacultyNames(recordsInRange));
	
    setColumnWidths();
}
Beispiel #2
0
PointTableWidget::PointTableWidget(QWidget * parent, const QPolygonF * const points, const Settings * const settings) : QTableWidget(parent) , points(*points) {
    if (settings == NULL)
        setDefaultSettings();
    else
        this->settings = *settings;

    setColumnCount(this->settings.colHeader.size());
    setHorizontalHeaderLabels(this->settings.colHeader);

    setColumnWidths();

    setSelectionMode(QAbstractItemView::ExtendedSelection);
    if (this->settings.autoSelectRow)
        setSelectionBehavior(QAbstractItemView::SelectRows);

    editingCell = QPoint(-1, -1);
    connect(this, SIGNAL(cellDoubleClicked(int,int)), this, SLOT(cellEditingSlot(int,int)));
    connect(this, SIGNAL(cellChanged(int,int)), this, SLOT(updateCell(int,int)));
}
void DashboardWindow::on_treeWidget_expanded() {
    setColumnWidths();
}
void DashboardWindow::on_treeWidget_collapsed() {
    setColumnWidths();
}