Hi Pritpal!

I have followed their work using hbQt and I think it is great!
In my personal tests here, I developed a  ALERT() function ... I would
send you in the hope of contributing to the project, I will be
grateful if you can consider:

#include <QMessageBox>

/*
 * ALERT() function basead on QT MessageBox. By Vailton Renato
<[email protected]>
 * Syntax: Alert( <xText>, [<aOptions>|<cOption>], [<xTitle>],
[<nIcon>] ) -> nSelectedOption
 * 15/04/2009 - 09:47:01
 */
HB_FUNC( ALERT )
{
 QString text;
 QMessageBox  msgBox;
 QList<QAbstractButton *> btnList;

 char *szText;
 PHB_ITEM pItem;
 BOOL fFree;
 ULONG ulSize, ulLen, ul;

 /* Text of window .. */
 if (!HB_ISNIL(1))
 {
  szText = hb_itemString( hb_param( 1, HB_IT_ANY ), &ulLen, &fFree );
  if (ulLen)
    text.append( szText );
  if( fFree )
    hb_xfree( szText );
 }

 if (text.isEmpty())
 {
  hb_retni(0);
  return;
 }

 text.replace( ';', '\n' );

 if (ISARRAY(2))
 {
  pItem  = hb_param( 2, HB_IT_ARRAY );
  ulSize = hb_arrayLen( pItem );

  for( ul = 1; ul <= ulSize; ++ul )
  {
     szText = hb_itemString( hb_arrayGetItemPtr( pItem, ul ), &ulLen,
&fFree );
     if (ulLen)
        btnList << msgBox.addButton( szText, QMessageBox::ActionRole );
     if( fFree )
        hb_xfree( szText );
  }
 } else {
  if (!HB_ISNIL(2))
  {
     szText = hb_itemString( hb_param( 2, HB_IT_ANY ), &ulLen, &fFree );

     if (ulLen)
        btnList << msgBox.addButton( szText, QMessageBox::ActionRole );
     if( fFree )
        hb_xfree( szText );
  }
 }

 if (btnList.isEmpty())
   btnList << msgBox.addButton( QMessageBox::Ok );

 /* Title of window */
 if (!HB_ISNIL(3))
 {
  szText = hb_itemString( hb_param( 3, HB_IT_ANY ), &ulLen, &fFree );
  if (ulLen)
     msgBox.setWindowTitle( szText );
  if( fFree )
     hb_xfree( szText );
 }

 if (ISNUM(4))
 {
  int nIcon = hb_parni(4);

  if ((nIcon >= 0) && (nIcon <= 4 ))
     msgBox.setIcon( QMessageBox::Icon( nIcon ) );
 }

 msgBox.setTextFormat( Qt::PlainText );
 msgBox.setText( text );
 msgBox.exec();

 hb_retni( btnList.indexOf( msgBox.clickedButton() ) +1 );
}


I would appreciate any comments!

Best regards,
Vailton Renato
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to