int ListView::findColumn(const QString& title) const { for (int i = 0; i < columns(); ++i) if (columnText(i) == title) return i; return -1; }
//Credit to amaroK for this //Seems like it can become the next plugin to do since amarok is really cool (just missing plugin arch) bool SongList::eventFilter(QObject *o, QEvent *e ) { if(o == header() && e->type() == QEvent::MouseButtonPress && static_cast<QMouseEvent*>(e)->button() == Qt::RightButton ) { KPopupMenu popup; //popup.setFont(this->font()); popup.setCheckable(true); popup.insertTitle(i18n("Available Columns")); int colcount=columns(); for( int i = 0; i < colcount; ++i ) //columns() references a property { popup.insertItem(columnText(i),i,i+1 ); popup.setItemChecked(i,columnWidth(i)!=0); } int col = popup.exec( static_cast<QMouseEvent *>(e)->globalPos() ); if( col != -1 ) { //TODO can result in massively wide column appearing! if( columnWidth( col ) == 0 ) { adjustColumn( col ); header()->setResizeEnabled( true, col ); } else hideColumn( col ); } //determine first visible column again, since it has changed //eat event return TRUE; } return KListView::eventFilter(o,e); }
void UIListView::setColumnVisible( int col, bool show ) { if ( columnVisible( col ) == show ) return ; ColumnData * data = m_data.find( col ); if ( show == false ) { data->name = columnText( col ); data->size = columnWidth( col ); data->mode = columnWidthMode( col ); setColumnText ( col, "" ); setColumnWidth( col, 0 ); setColumnWidthMode( col, QListView::Manual ); header()->setResizeEnabled( false, col ); } else { setColumnText ( col, data->name ); setColumnWidth( col, data->size ); setColumnWidthMode( col, data->mode ); header()->setResizeEnabled( true, col ); } }
/** * Provides information for constructing a header when this model is displayed * in a view. * @param section Corresponds to the column number * @param orient Horizontal or vertical header * @param role How to interpret the information * @return For a horizontal header with a display role, returns the column * title; An empty variant for all other type */ QVariant LocationModel::headerData(int section, Qt::Orientation orient, int role) const { if (orient != Qt::Horizontal || role != Qt::DisplayRole) return QVariant(); return columnText(colList_[section]); }
void KfindWindow::resetColumns(bool init) { QFontMetrics fm = fontMetrics(); if(init) { setColumnWidth(2, QMAX(fm.width(columnText(2)), fm.width("0000000")) + 15); QString sampleDate = KGlobal::locale()->formatDateTime(QDateTime::currentDateTime()); setColumnWidth(3, QMAX(fm.width(columnText(3)), fm.width(sampleDate)) + 15); setColumnWidth(4, QMAX(fm.width(columnText(4)), fm.width(i18n(perm[RO]))) + 15); setColumnWidth(5, QMAX(fm.width(columnText(5)), fm.width("some text")) + 15); } int free_space = visibleWidth() - columnWidth(2) - columnWidth(3) - columnWidth(4) - columnWidth(5); // int name_w = QMIN((int)(free_space*0.5), 150); // int dir_w = free_space - name_w; int name_w = QMAX((int)(free_space * 0.5), fm.width("some long filename")); int dir_w = name_w; setColumnWidth(0, name_w); setColumnWidth(1, dir_w); }
QSize PropertyEditor::sizeHint() const { return QSize(QFontMetrics(font()).width(columnText(0) + columnText(1) + " "), KListView::sizeHint().height()); }
void AMExporterAthena::writeMainTable() { QTextStream ts(file_); // 1. Column header. int maxTableRows = 0; if(option_->columnHeaderIncluded()) { ts << "# "; QString columnText(""); for(int c=0; c<mainTableDataSources_.count(); c++) { setCurrentDataSource(mainTableDataSources_.at(c)); AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_); if(ds->size(0) > maxTableRows) maxTableRows = ds->size(0); // convenient... lets figure this out while we're looping through anyway columnText = parseKeywordString(option_->columnHeader()); columnText.replace(" ", ""); columnText = columnText.left(columnText.indexOf("(")); // 1D data sources: if(ds->rank() == 1) { if(mainTableIncludeX_.at(c)) ts << (columnText + ".X") << option_->columnDelimiter(); ts << columnText << option_->columnDelimiter(); } else { // 2D if(mainTableIncludeX_.at(c)) ts << (columnText + ".X") << option_->columnDelimiter(); // need a loop over the second axis columns for(int cc=0; cc<ds->size(1); cc++) { setCurrentColumnIndex(cc); ts << columnText << "[" << ds->axisValue(1, cc).toString() << ds->axisInfoAt(1).units << "]" << option_->columnDelimiter(); } } } ts << option_->newlineDelimiter() << option_->columnHeaderDelimiter() << option_->newlineDelimiter(); } // 2. rows for(int r=0; r<maxTableRows; r++) { // over rows within columns for(int c=0; c<mainTableDataSources_.count(); c++) { setCurrentDataSource(mainTableDataSources_.at(c)); AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_); bool doPrint = (ds->size(0) > r); // print x column? if(mainTableIncludeX_.at(c)) { if(doPrint) ts << ds->axisValue(0,r).toString(); ts << option_->columnDelimiter(); } // 1D data sources: if(ds->rank() == 1) { if(doPrint) ts << ds->value(r).toString(); ts << option_->columnDelimiter(); } else if(ds->rank() == 2) { // need a loop over the second axis columns for(int cc=0; cc<ds->size(1); cc++) { if(doPrint) ts << ds->value(AMnDIndex(r,cc)).toString(); ts << option_->columnDelimiter(); } } } ts << option_->newlineDelimiter(); } }