Source Code (Use browser search to find items of interest.)

Class Index

khexedit'CCharTableDialog (./kdeutils/khexedit/chartabledialog.h:35)

class CCharTableDialog : public KDialogBase
{
  Q_OBJECT
  
  public:
    CCharTableDialog( QWidget *parent=0, const char *name=0,bool modal=false );
    ~CCharTableDialog( void );

  signals:
    void assign( const QByteArray &buf );

  protected slots:
    virtual void slotUser1( void );
    virtual void startAssign( QListViewItem * );

  protected:
    virtual void resizeEvent( QResizeEvent *e );
    virtual void showEvent( QShowEvent *e );

  private:
    void createListData( void );
    void setColumnWidth( void );

  private:
    QSpinBox  *mInputCountSpin;
    CListView *mCharacterList;
};

khexedit'CCharTableDialog::CCharTableDialog() (./kdeutils/khexedit/chartabledialog.cc:36)

CCharTableDialog::CCharTableDialog( QWidget *parent, const char *name, 
				    bool modal )
  :KDialogBase( Plain, i18n("Character Table"), Help|User1|Cancel, User1,
		parent, name, modal, true, i18n("&Insert") )
{
  updateGeometry();
  setHelp( "khexedit/khexedit.html", QString::null );

  QString text;
  QVBoxLayout *topLayout = new QVBoxLayout( plainPage(), 0, spacingHint() );
  if( topLayout == 0 ) { return; }

  mCharacterList = new CListView( plainPage(), "characterList" );
  mCharacterList->setFont( KGlobal::fixedFont() ); 
  mCharacterList->addColumn( i18n("Decimal") );
  mCharacterList->addColumn( i18n("Hexadecimal") );
  mCharacterList->addColumn( i18n("Octal") );
  mCharacterList->addColumn( i18n("Binary") );
  mCharacterList->addColumn( i18n("Text") );
  mCharacterList->setAllColumnsShowFocus( true );
  mCharacterList->setFrameStyle( QFrame::WinPanel + QFrame::Sunken );
  mCharacterList->setSorting( -1 );

  //
  // I am setting the min. size below
  //
  //connect( mCharacterList, SIGNAL(doubleClicked(QListViewItem *) ),
  //SLOT(startAssign(QListViewItem *)));

  topLayout->addWidget( mCharacterList, 10 );
  
  QHBoxLayout *hbox = new QHBoxLayout();
  if( hbox == 0 ) { return; }
  topLayout->addLayout( hbox );
  
  text = i18n("Insert this number of characters:");
  QLabel *label = new QLabel( text, plainPage() );
  label->setFixedWidth( label->sizeHint().width() );
  hbox->addWidget( label );
  
  mInputCountSpin = new QSpinBox( plainPage(), "spin" );
  mInputCountSpin->setMinimumWidth( fontMetrics().maxWidth()*7 );
  mInputCountSpin->setRange( 1, MAXINT );
  mInputCountSpin->setValue( 1 );
  hbox->addWidget( mInputCountSpin );
  
  hbox->addStretch ( 10 );  

  createListData();
  setColumnWidth();
  mCharacterList->setVisibleItem( 15 );
}




khexedit'CCharTableDialog::~CCharTableDialog() (./kdeutils/khexedit/chartabledialog.cc:91)

CCharTableDialog::~CCharTableDialog( void )
{
}



khexedit'CCharTableDialog::createListData() (./kdeutils/khexedit/chartabledialog.cc:108)

void CCharTableDialog::createListData( void )
{
  QString d, h, o, b, c;
  QListViewItem *item = 0;

  char buf[10];
  memset( buf, 0, sizeof( buf ) );
  
  for( uint i=0; i<256; i++ )
  { 
    d.sprintf("%03d", i );
    h.sprintf("0x%02x", i );
    o.sprintf("%03o", i );
    b.sprintf("%s", printBinary(i) );

    if( QChar((char)i).isPrint() == true )
    {
      c = QChar((char)i);
    }
    else
    {
      c = QChar('.');
    }

    item = new QListViewItem( mCharacterList, item, d, h, o, b, c );
    if( i == 0 )
    {
      mCharacterList->setSelected( item, true );
    } 

  }
}



khexedit'CCharTableDialog::slotUser1() (./kdeutils/khexedit/chartabledialog.cc:142)

void CCharTableDialog::slotUser1( void ) // Insert
{
 QListViewItem *item = mCharacterList->selectedItem();
 if( item != 0 )
 {
   startAssign( item );
 }

}


khexedit'CCharTableDialog::startAssign() (./kdeutils/khexedit/chartabledialog.cc:152)

void CCharTableDialog::startAssign( QListViewItem *item )
{
  QByteArray buf;
  if( buf.fill( item->text(0).toInt(), mInputCountSpin->value() ) == false )
  {
    return;
  }
  emit assign( buf );
}



khexedit'CCharTableDialog::setColumnWidth() (./kdeutils/khexedit/chartabledialog.cc:163)

void CCharTableDialog::setColumnWidth( void )
{
  const QFontMetrics &fm = mCharacterList->fontMetrics();
  int w0, w1, w2, w3, w4;

  w0 = -fm.minLeftBearing() - fm.minRightBearing() + 8 + fm.maxWidth();
  w3 = 0;

  w1  = fm.width( mCharacterList->header()->label(0) ) + w0;
  w2  = fm.width('0')*5;
  w3 += w1 > w2 ? w1 : w2;
  mCharacterList->setColumnWidth( 0, w1 > w2 ? w1 : w2 );
  
  w1  = fm.boundingRect( mCharacterList->header()->label(1) ).width() + w0;
  w2  = fm.width('0')*6;
  w3 += w1 > w2 ? w1 : w2;
  mCharacterList->setColumnWidth( 1, w1 > w2 ? w1 : w2 );

  w1  = fm.boundingRect( mCharacterList->header()->label(2) ).width() + w0;
  w2  = fm.width('0')*5;
  w3 += w1 > w2 ? w1 : w2;
  mCharacterList->setColumnWidth( 2, w1 > w2 ? w1 : w2 );

  w1  = fm.boundingRect( mCharacterList->header()->label(3) ).width() + w0;
  w2  = fm.width('0')*10;
  w3 += w1 > w2 ? w1 : w2;
  mCharacterList->setColumnWidth( 3, w1 > w2 ? w1 : w2 );

  w4 = mCharacterList->viewport()->width() - w3;
  w1 = fm.boundingRect( mCharacterList->header()->label(4) ).width() + w0;
  w2 = fm.width('0')*3;
  w1 = w1 > w2 ? w1 : w2;
  mCharacterList->setColumnWidth( 4, w1 > w4 ? w1 : w4 );
}



khexedit'CCharTableDialog::resizeEvent() (./kdeutils/khexedit/chartabledialog.cc:199)

void CCharTableDialog::resizeEvent( QResizeEvent * )
{
  setColumnWidth();
}



khexedit'CCharTableDialog::showEvent() (./kdeutils/khexedit/chartabledialog.cc:205)

void CCharTableDialog::showEvent( QShowEvent *e )
{
  KDialogBase::showEvent(e);
  setColumnWidth();
  mCharacterList->setFocus();
}