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

Class Index

kdelibs'KAboutContainerBase (./kdelibs/kdeui/kaboutdialog.h:111)

class KAboutContainerBase : public QWidget
{
  Q_OBJECT

  public:
    enum LayoutType
    {
      AbtPlain         = 0x0001,
      AbtTabbed        = 0x0002,
      AbtTitle         = 0x0004,
      AbtImageLeft     = 0x0008,
      AbtImageRight    = 0x0010,
      AbtImageOnly     = 0x0020,
      AbtProduct       = 0x0040,
      AbtKDEStandard   = AbtTabbed|AbtTitle|AbtImageLeft,
      AbtAppStandard   = AbtTabbed|AbtTitle|AbtProduct,
      AbtImageAndTitle = AbtPlain|AbtTitle|AbtImageOnly
    };

  public:
    KAboutContainerBase( int layoutType, QWidget *parent = 0, char *name = 0 );
    virtual void show( void );
    virtual QSize sizeHint( void ) const;

    void setTitle( const QString &title );
    void setImage( const QString &fileName );
    void setImageBackgroundColor( const QColor &color );
    void setImageFrame( bool state );
    void setProduct( const QString &appName, const QString &version,
		     const QString &author, const QString &year );

    QFrame *addTextPage( const QString &title, const QString &text,
			 bool richText=false, int numLines=10 );
    KAboutContainer *addContainerPage( const QString &title,
      int childAlignment = AlignCenter, int innerAlignment = AlignCenter );
    QFrame *addEmptyPage( const QString &title );

    KAboutContainer *addContainer( int childAlignment, int innerAlignment );

  public slots:
    virtual void slotMouseTrack( int mode, const QMouseEvent *e );
    virtual void slotUrlClick( const QString &url );
    virtual void slotMailClick( const QString &name, const QString &address );

  protected:
    virtual void fontChange( const QFont &oldFont );

  signals:
    void mouseTrack( int mode, const QMouseEvent *e );
    void urlClick( const QString &url );
    void mailClick( const QString &name, const QString &address );

  private:
    QArray<QWidget*>  mContainerList;

    QVBoxLayout *mTopLayout;
    KImageTrackLabel *mImageLabel;
    QLabel  *mTitleLabel;
    QLabel  *mIconLabel;
    QLabel  *mVersionLabel;
    QLabel  *mAuthorLabel;
    QFrame  *mImageFrame;
    QTabWidget *mPageTab;
    QFrame  *mPlainSpace;

    KAboutContainerBasePrivate *d;
};


kdelibs'KAboutContainerBase::KAboutContainerBase() (./kdelibs/kdeui/kaboutdialog.cpp:282)

KAboutContainerBase::KAboutContainerBase( int layoutType, QWidget *parent,
					  char *name )
  : QWidget( parent, name ),
    mImageLabel(0), mTitleLabel(0), mIconLabel(0),mVersionLabel(0),
    mAuthorLabel(0), mImageFrame(0),mPageTab(0),mPlainSpace(0)
{
  mTopLayout = new QVBoxLayout( this, 0, KDialog::spacingHint() );
  if( mTopLayout == 0 ) { return; }

  if( layoutType & AbtImageOnly )
  {
    layoutType &= ~(AbtImageLeft|AbtImageRight|AbtTabbed|AbtPlain);
  }
  if( layoutType & AbtImageLeft )
  {
    layoutType &= ~AbtImageRight;
  }

  if( layoutType & AbtTitle )
  {
    mTitleLabel = new QLabel( this, "title" );
    mTitleLabel->setAlignment(AlignCenter);
    mTopLayout->addWidget( mTitleLabel );
    mTopLayout->addSpacing( KDialog::spacingHint() );
  }

  if( layoutType & AbtProduct )
  {
    QWidget *productArea = new  QWidget( this, "area" );
    mTopLayout->addWidget( productArea, 0, AlignLeft );

    QHBoxLayout *hbox = new QHBoxLayout(productArea,0,KDialog::spacingHint());
    if( hbox == 0 ) { return; }

    mIconLabel = new QLabel( productArea );
    hbox->addWidget( mIconLabel );

    QVBoxLayout *vbox = new QVBoxLayout();
    if( vbox == 0 ) { return; }
    hbox->addLayout( vbox );

    mVersionLabel = new QLabel( productArea, "version" );
    mAuthorLabel  = new QLabel( productArea, "author" );
    vbox->addWidget( mVersionLabel );
    vbox->addWidget( mAuthorLabel );
    hbox->activate();

    mTopLayout->addSpacing( KDialog::spacingHint() );
  }

  QHBoxLayout *hbox = new QHBoxLayout();
  if( hbox == 0 ) { return; }
  mTopLayout->addLayout( hbox, 10 );

  if( layoutType & AbtImageLeft )
  {
    QVBoxLayout *vbox = new QVBoxLayout();
    hbox->addLayout(vbox);
    vbox->addSpacing(1);
    mImageFrame = new QFrame( this );
    setImageFrame( true );
    vbox->addWidget( mImageFrame );
    vbox->addSpacing(1);

    vbox = new QVBoxLayout( mImageFrame, 1 );
    mImageLabel = new KImageTrackLabel( mImageFrame );
    connect( mImageLabel, SIGNAL(mouseTrack( int, const QMouseEvent * )),
	     SLOT( slotMouseTrack( int, const QMouseEvent * )) );
    vbox->addStretch(10);
    vbox->addWidget( mImageLabel );
    vbox->addStretch(10);
    vbox->activate();
  }

  if( layoutType & AbtTabbed )
  {
    mPageTab = new QTabWidget( this );
    if( mPageTab == 0 ) { return; }
    hbox->addWidget( mPageTab, 10 );
  }
  else if( layoutType & AbtImageOnly )
  {
    mImageFrame = new QFrame( this );
    setImageFrame( true );
    hbox->addWidget( mImageFrame, 10 );

    QGridLayout *gbox = new QGridLayout(mImageFrame, 3, 3, 1, 0 );
    gbox->setRowStretch( 0, 10 );
    gbox->setRowStretch( 2, 10 );
    gbox->setColStretch( 0, 10 );
    gbox->setColStretch( 2, 10 );

    mImageLabel = new KImageTrackLabel( mImageFrame );
    connect( mImageLabel, SIGNAL(mouseTrack( int, const QMouseEvent * )),
	     SLOT( slotMouseTrack( int, const QMouseEvent * )) );
    gbox->addWidget( mImageLabel, 1, 1 );
    gbox->activate();
  }
  else
  {
    mPlainSpace = new QFrame( this );
    if( mPlainSpace == 0 ) { return; }
    hbox->addWidget( mPlainSpace, 10 );
  }

  if( layoutType & AbtImageRight )
  {
    QVBoxLayout *vbox = new QVBoxLayout();
    hbox->addLayout(vbox);
    vbox->addSpacing(1);
    mImageFrame = new QFrame( this );
    setImageFrame( true );
    vbox->addWidget( mImageFrame );
    vbox->addSpacing(1);

    vbox = new QVBoxLayout( mImageFrame, 1 );
    mImageLabel = new KImageTrackLabel( mImageFrame );
    connect( mImageLabel, SIGNAL(mouseTrack( int, const QMouseEvent * )),
	     SLOT( slotMouseTrack( int, const QMouseEvent * )) );
    vbox->addStretch(10);
    vbox->addWidget( mImageLabel );
    vbox->addStretch(10);
    vbox->activate();
  }

  fontChange( font() );
}



kdelibs'KAboutContainerBase::show() (./kdelibs/kdeui/kaboutdialog.cpp:411)

void KAboutContainerBase::show( void )
{
  QWidget::show();
  // 2000-18-01 Espen Sand: The entire function will be removed
  /*
  if( mPageTab != 0 )
  {
    mPageTab->setMinimumSize( mPageTab->sizeHint() );
  }
  mTopLayout->activate(); // This must be done after everything else.
  */
}



kdelibs'KAboutContainerBase::sizeHint() (./kdelibs/kdeui/kaboutdialog.cpp:425)

QSize KAboutContainerBase::sizeHint( void ) const
{
  return( minimumSize() );
}



kdelibs'KAboutContainerBase::fontChange() (./kdelibs/kdeui/kaboutdialog.cpp:431)

void KAboutContainerBase::fontChange( const QFont &/*oldFont*/ )
{
  if( mTitleLabel != 0 )
  {
    QFont f( KGlobal::generalFont() );
    f.setBold( true );
    f.setPointSize( 14 ); // Perhaps changeable ?
    mTitleLabel->setFont(f);
  }

  if( mVersionLabel != 0 )
  {
    QFont f( KGlobal::generalFont() );
    f.setBold( true );
    mVersionLabel->setFont(f);
    mAuthorLabel->setFont(f);
    mVersionLabel->parentWidget()->layout()->activate();
  }

  update();
}







kdelibs'KAboutContainerBase::addTextPage() (./kdelibs/kdeui/kaboutdialog.cpp:458)

QFrame *KAboutContainerBase::addTextPage( const QString &title,
					  const QString &text,
					  bool richText, int numLines )
{
  QFrame *page = addEmptyPage( title );
  if( page == 0 ) { return(0); }
  if( numLines <= 0 ) { numLines = 10; }

  QVBoxLayout *vbox = new QVBoxLayout( page, KDialog::spacingHint() );

  if( richText == true )
  {
    KTextBrowser *browser = new KTextBrowser( page, "browser" );
    browser->setHScrollBarMode( QScrollView::AlwaysOff );
    browser->setText( text );
    browser->setMinimumHeight( fontMetrics().lineSpacing()*numLines );

    vbox->addWidget(browser);
    connect(browser, SIGNAL(urlClick(const QString &)),
	    SLOT(slotUrlClick(const QString &)));
    connect(browser, SIGNAL(mailClick(const QString &,const QString &)),
	    SLOT(slotMailClick(const QString &,const QString &)));
  }
  else
  {
    QMultiLineEdit *lineEdit = new QMultiLineEdit( page, "text" );
    lineEdit->setReadOnly( true );
    lineEdit->setText( text );
    lineEdit->setMinimumWidth( lineEdit->maxLineWidth() + 20 );
    lineEdit->setMinimumHeight( fontMetrics().lineSpacing()*numLines );
    vbox->addWidget( lineEdit );
  }

  return( page );
}



kdelibs'KAboutContainerBase::addContainerPage() (./kdelibs/kdeui/kaboutdialog.cpp:495)

KAboutContainer *KAboutContainerBase::addContainerPage( const QString &title,
							int childAlignment,
							int innerAlignment )
{
  if( mPageTab == 0 )
  {
    cout << "addPage: " << "Invalid layout" << endl;
    return( 0 );
  }

  KAboutContainer *container = new KAboutContainer( mPageTab, "container",
    KDialog::spacingHint(), KDialog::spacingHint(), childAlignment,
						  innerAlignment );
  mPageTab->addTab( container, title );

  if( mContainerList.resize( mContainerList.size() + 1) == true )
  {
    mContainerList[ mContainerList.size()-1 ]=container;
  }

  connect(container, SIGNAL(urlClick(const QString &)),
	  SLOT(slotUrlClick(const QString &)));
  connect(container, SIGNAL(mailClick(const QString &,const QString &)),
	  SLOT(slotMailClick(const QString &,const QString &)));

  return( container );
}



kdelibs'KAboutContainerBase::addEmptyPage() (./kdelibs/kdeui/kaboutdialog.cpp:524)

QFrame *KAboutContainerBase::addEmptyPage( const QString &title )
{
  if( mPageTab == 0 )
  {
    cout << "addPage: " << "Invalid layout" << endl;
    return( 0 );
  }

  QFrame *page = new QFrame( mPageTab, title.latin1() );
  page->setFrameStyle( QFrame::NoFrame );

  mPageTab->addTab( page, title );
  return( page );
}



kdelibs'KAboutContainerBase::addContainer() (./kdelibs/kdeui/kaboutdialog.cpp:540)

KAboutContainer *KAboutContainerBase::addContainer( int childAlignment,
						    int innerAlignment )
{
  KAboutContainer *container = new KAboutContainer( this, "container",
    0, KDialog::spacingHint(), childAlignment, innerAlignment );
  mTopLayout->addWidget( container, 0, childAlignment );

  if( mContainerList.resize( mContainerList.size() + 1) == true )
  {
    mContainerList[ mContainerList.size()-1 ]=container;
  }

  connect(container, SIGNAL(urlClick(const QString &)),
	  SLOT(slotUrlClick(const QString &)));
  connect(container, SIGNAL(mailClick(const QString &,const QString &)),
	  SLOT(slotMailClick(const QString &,const QString &)));

  return( container );
}




kdelibs'KAboutContainerBase::setTitle() (./kdelibs/kdeui/kaboutdialog.cpp:562)

void KAboutContainerBase::setTitle( const QString &title )
{
  if( mTitleLabel == 0 )
  {
    cout << "setTitle: " << "Invalid layout" << endl;
    return;
  }
  mTitleLabel->setText(title);
}



kdelibs'KAboutContainerBase::setImage() (./kdelibs/kdeui/kaboutdialog.cpp:573)

void KAboutContainerBase::setImage( const QString &fileName )
{
  if( mImageLabel == 0 )
  {
    cout << "setImage: " << "Invalid layout" << endl;
    return;
  }
  if( fileName.isNull() )
  {
    return;
  }

  QImage logo( fileName );
  if( logo.isNull() == false )
  {
    QPixmap pix;
    pix = logo;
    mImageLabel->setPixmap( pix );
  }
  mImageFrame->layout()->activate();

}



kdelibs'KAboutContainerBase::setImageBackgroundColor() (./kdelibs/kdeui/kaboutdialog.cpp:597)

void KAboutContainerBase::setImageBackgroundColor( const QColor &color )
{
  if( mImageFrame != 0 )
  {
    mImageFrame->setBackgroundColor( color );
  }
}



kdelibs'KAboutContainerBase::setImageFrame() (./kdelibs/kdeui/kaboutdialog.cpp:606)

void KAboutContainerBase::setImageFrame( bool state )
{
  if( mImageFrame != 0 )
  {
    if( state == true )
    {
      mImageFrame->setFrameStyle( QFrame::Panel | QFrame::Plain );
      mImageFrame->setLineWidth(1);
    }
    else
    {
      mImageFrame->setFrameStyle( QFrame::NoFrame );
      mImageFrame->setLineWidth(0);
    }
  }
}



kdelibs'KAboutContainerBase::setProduct() (./kdelibs/kdeui/kaboutdialog.cpp:624)

void KAboutContainerBase::setProduct( const QString &appName,
				      const QString &version,
				      const QString &author,
				      const QString &year )
{
  if( mIconLabel == 0 )
  {
    cout << "setProduct: " << "Invalid layout" << endl;
    return;
  }

  mIconLabel->setPixmap( kapp->icon() );

  QString msg1 = i18n("Version: %1 %2 (KDE %3)").arg(appName).arg(version).
    arg(QString::fromLatin1(KDE_VERSION_STRING));
  QString msg2 = i18n("%1 %2, %3").arg('©').arg(year).arg(author);

  mVersionLabel->setText( msg1 );
  mAuthorLabel->setText( msg2 );
  mIconLabel->parentWidget()->layout()->activate();
}



kdelibs'KAboutContainerBase::slotMouseTrack() (./kdelibs/kdeui/kaboutdialog.cpp:647)

void KAboutContainerBase::slotMouseTrack( int mode, const QMouseEvent *e )
{
  emit mouseTrack( mode, e );
}



kdelibs'KAboutContainerBase::slotUrlClick() (./kdelibs/kdeui/kaboutdialog.cpp:653)

void KAboutContainerBase::slotUrlClick( const QString &url )
{
  emit urlClick( url );
}


kdelibs'KAboutContainerBase::slotMailClick() (./kdelibs/kdeui/kaboutdialog.cpp:658)

void KAboutContainerBase::slotMailClick( const QString &name,
					 const QString &address )
{
  emit mailClick( name, address );
}