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