コード例 #1
0
	void KviCanvasItemPropertiesWidget::editItem(QCanvasItem * it)
	{
		if(!it)
		{
			for(int i=0;i<numRows();i++)
			{
				clearCell(i,0);
				clearCell(i,1);
				clearCellWidget(i,1);
			}
			setNumRows(0);
			return;
		}

		QMap<QString,QVariant> * m = 0;

		switch(KVI_CANVAS_RTTI_CONTROL_TYPE(it))
		{
			case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
				m = ((KviCanvasRectangleItem *)it)->properties();
			break;
			case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
				m = ((KviCanvasLine *)it)->properties();
			break;
			case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
				m = ((KviCanvasPolygon *)it)->properties();
			break;
		}

		if(!m)
		{
			editItem(0);
			return;
		}

		for(int i=0;i<numRows();i++)
		{
			clearCell(i,0);
			clearCell(i,1);
			clearCellWidget(i,1);
		}

		setNumRows(m->count());

		QTableItem * item;

		int idx = 0;

		for(QMap<QString,QVariant>::ConstIterator iter = m->begin();iter != m->end();++iter)
		{
			item = new QTableItem(this,QTableItem::Never,iter.key().toUtf8().data());
			setItem(idx,0,item);
			item = new KviVariantTableItem(this,iter.data());
			setItem(idx,1,item);
			idx++;
		}

	}
コード例 #2
0
ファイル: marklist.cpp プロジェクト: serghei/kde3-kdegraphics
void MarkList::clear()
{
    for ( int i = 0; i != numRows() ; ++i ) {
	clearCellWidget( i, 0 );
    }
    setNumRows( 0 );
}
コード例 #3
0
ファイル: mtable.cpp プロジェクト: Klunkerball/EGSnrc
void MTable::endEdit( int row, int col, bool accept, bool replace )
{
    QWidget *editor = cellWidget( row, col );
    if ( !editor ) return;
    if (!editor->inherits("QComboBox")){
         QTable::endEdit( row, col, accept, replace );
         zap(editor);
         //if (editor) delete editor;// <== this seems neccessary to return control to the Table
         return;
    }
    else{
             setCellContentFromEditor( row, col );
              if ( row == currEditRow() && col == currEditCol() )
	     setEditMode( NotEditing, -1, -1 );
              viewport()->setFocus();
              updateCell( row, col );
              clearCellWidget( row, col );
              zap (editor);
              //if (editor) delete editor;// <== this seems neccessary to return control to the Table
               emit valueChanged( row, col );
    }
}
コード例 #4
0
void KWidgetListbox::clear()
{
  for(int i = 0; i < numRows(); ++i)
    clearCellWidget(i, 0);
  setNumRows(0);
}
コード例 #5
0
void CServerStatusTable::refresh()
{
  if (isBlocked())
    return;

  setBlocked(true);
  
  bool max_scroll = false;
  int scroll = is_first ? 0 : verticalScrollBar()->value();
  if (scroll >= verticalScrollBar()->maxValue() - 1 && scroll != 0)
    max_scroll = true;    

  if (is_traditional)
  {
    if (keepColumnWidth() && numCols() > 0)
      for (int i = 0; i < numCols(); i++)
        previous_columns_map.insert(i, CTable::OldColumn(horizontalHeader()->sectionSize(i), horizontalHeader()->label(i)));

    clearCellWidget(currentRow(), currentColumn());
    if (is_first)
      ensureVisible(0, 0);
    setNumRows(0);
    if (sorting())
      horizontalHeader()->setSortIndicator( -1 );
  }
  if (query()->exec("SHOW STATUS"))
  {
    uint num_rows = query()->numRows();
    uint num_fields = query()->numFields();
    bool adjust = false;

    if (is_traditional)
    {
      bool columns_ok = (keepColumnWidth() && previous_columns_map.count() == num_fields);
      if (columns_ok)
        for (uint i = 0; i < num_fields; i++)
          columns_ok &= (previous_columns_map[i].label == query()->fields(i).name);

      if (!columns_ok)
      {
        adjust = true;
        if (keepColumnWidth())
          previous_columns_map.clear();
      }

      setNumRows(num_rows);
      setNumCols(num_fields);
      if (is_first)
      {
        for (uint i = 0; i < num_fields; i++)
          if (columns_ok && previous_columns_map[i].label == query()->fields(i).name)
            horizontalHeader()->setLabel(i, query()->fields(i).name, previous_columns_map[i].size);
          else
            horizontalHeader()->setLabel(i, query()->fields(i).name);

        if (columnsWindow->isVisible())
          columnsWindow->refresh();
        is_first = false;
        adjust = true;
      }
      uint j = 0;
      while (query()->next())
      {
        for (uint i = 0; i < num_fields; i++)
        {
          const char * val = query()->row(i) ? query()->row(i) : NULL_TEXT;
          setText(j, i, val);
        }
        j++;
      }
    }
    else
    {      
      if (is_first)
      {
        setNumRows(0);
        setNumCols(num_rows);
        int i = 0;
        while (query()->next())
          horizontalHeader()->setLabel(i++, query()->row(0));
        if (columnsWindow->isVisible())
          columnsWindow->refresh();
        is_first = false;
        adjust = true;
        query()->dataSeek(0);
      }
      setNumRows(numRows() + 1);      
      ulong i = 0;    
      while (query()->next())
      {
        const char * val = query()->row(1) ? query()->row(1) : NULL_TEXT;
        setText(numRows() - 1, i++, val);
      }
    }
    if (adjust)
      for (int j = 0; j < numCols(); j++)
        adjustColumn(j);

    if (max_scroll)
      scroll = verticalScrollBar()->maxValue();
    verticalScrollBar()->setValue(scroll);
  }
  setBlocked(false);
  applyLastSort();
}
コード例 #6
0
void CProcessListTable::refresh()
{
  if (isBlocked())
    return;

  setBlocked(true);

  bool max_scroll = false;
  int scroll = is_first ? 0 : verticalScrollBar()->value();
  if (scroll >= verticalScrollBar()->maxValue() - 1 && scroll != 0)
    max_scroll = true;    

  if (keepColumnWidth() && numCols() > 0)
    for (int i = 0; i < numCols(); i++)
      previous_columns_map.insert(i, CTable::OldColumn(horizontalHeader()->sectionSize(i), horizontalHeader()->label(i)));

  clearCellWidget(currentRow(), currentColumn());
  if (is_first)
    ensureVisible(0, 0);  
  query()->freeResult();
  setNumRows(0);
  horizontalHeader()->setSortIndicator( -1 );  
  if (query()->exec(sql))
  {
    uint num_rows = qry->numRows();
    uint num_fields = qry->numFields();

    bool columns_ok = (keepColumnWidth() && previous_columns_map.count() == num_fields);
    if (columns_ok)
      for (uint i = 0; i < num_fields; i++)
        columns_ok &= (previous_columns_map[i].label == query()->fields(i).name);

    if (!columns_ok && keepColumnWidth())
      previous_columns_map.clear();

    setNumRows(num_rows);
    setNumCols(num_fields);
    if (is_first)
    {      
      for (uint i = 0; i < num_fields; i++)
      {
        if (columns_ok && previous_columns_map[i].label == query()->fields(i).name)
          horizontalHeader()->setLabel(i, qry->fields(i).name, previous_columns_map[i].size);
        else
          horizontalHeader()->setLabel(i, qry->fields(i).name);

        setColumnReadOnly (i, (i != 0));
      }
      is_first = false;
    }

    if (hasProcessEvents())
      qApp->processEvents();
    else
      updateScrollBars();

    uint j = 0;
    while (query()->next())
    {
      for (uint i = 0; i < num_fields; i++)
      {
        const char *val = query()->row(i) ? query()->row(i) : NULL_TEXT;
        if (i == 0)
          setItem (j, i, new CCheckTableItem(this, val));
        else        
          setText(j, i, val);
      }
      j++;
    }
    if (!columns_ok)
      for (j = 0; j < num_fields; j++)
        adjustColumn(j);

    if (max_scroll)
      scroll = verticalScrollBar()->maxValue();
    verticalScrollBar()->setValue(scroll);
  }  
  setBlocked(false);
  applyLastSort();
}