]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Improve splash screen: add margin attribute
authorvsr <vsr@opencascade.com>
Tue, 29 Jan 2008 08:44:16 +0000 (08:44 +0000)
committervsr <vsr@opencascade.com>
Tue, 29 Jan 2008 08:44:16 +0000 (08:44 +0000)
src/Qtx/QtxSplash.cxx
src/Qtx/QtxSplash.h
src/SalomeApp/resources/SalomeApp.xml

index d3244efc999968986216305ac89e8526d58f8d7b..ff48080765945cb683b5e177b16aed42a222542e 100644 (file)
@@ -66,6 +66,7 @@ QtxSplash::QtxSplash( const QPixmap& pixmap )
   myGradientType = Vertical;
   myError        = 0;
   myStartColor   = red;
+  myMargin       = 5;
 
   setPixmap( pixmap );
 }
@@ -256,6 +257,30 @@ int QtxSplash::textAlignment() const
   return myAlignment;
 }
 
+/*!
+  \brief Set margin.
+
+  Margin is used when drawing progress bar and status messages.
+  
+  \param m new margin
+  \sa margin()
+*/
+void QtxSplash::setMargin( const int m )
+{
+  myMargin = m;
+  repaint();
+}
+
+/*!
+  \brief Get margin.
+  \return current margin.
+  \sa setMargin()
+*/
+int QtxSplash::margin() const
+{
+  return myMargin;
+}
+
 /*!
   Sets message text color to \a color.
   Default is white.
@@ -382,29 +407,11 @@ void QtxSplash::clear()
 void QtxSplash::drawContents( QPainter* painter )
 {
   QRect r = rect();
+  int m = margin();
   if ( myTotal > 0 ) {
-    // draw progress bar outline rectangle
-    painter->setPen( palette().active().dark() );
-    painter->drawLine( r.x()+5, 
-                      r.height()-5-_PROGRESS_WIDTH,
-                      r.width()-5,
-                      r.height()-5-_PROGRESS_WIDTH );
-    painter->drawLine( r.x()+5,
-                      r.height()-5-_PROGRESS_WIDTH,
-                      r.x()+5,
-                      r.height()-5 );
-    painter->setPen( palette().active().light() );
-    painter->drawLine( r.x()+5,
-                      r.height()-5,
-                      r.width()-5,
-                      r.height()-5 );
-    painter->drawLine( r.width()-5,
-                      r.height()-5-_PROGRESS_WIDTH,
-                      r.width()-5,
-                      r.height()-5 );
     // draw progress bar
     if ( myGradientType == Horizontal ) {
-      int tng = r.width() - r.x() - 11;
+      int tng = r.width() - r.x() - m*2;
       int ng = (int) ( 1.0 * tng * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); 
       int h1, h2, s1, s2, v1, v2;
       myStartColor.hsv( &h1, &s1, &v1 );
@@ -415,29 +422,48 @@ void QtxSplash::drawContents( QPainter* painter )
                                 s1 + ((s2-s1)*i)/(tng-1),
                                 v1 + ((v2-v1)*i)/(tng-1), 
                                 QColor::Hsv ) );
-       painter->drawLine( r.x()+6+i,
-                          r.height()-5-_PROGRESS_WIDTH+1,
-                          r.x()+6+i,
-                          r.height()-6 );
+       painter->drawLine( r.x()+m+i,
+                          r.height()-m-_PROGRESS_WIDTH,
+                          r.x()+m+i,
+                          r.height()-m );
       }
     }
     else {
-      int ng = (int) ( 1.0 * (r.width() - r.x() - 11) * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); 
+      int ng = (int) ( 1.0 * (r.width() - r.x() - m*2 - 1) * ( myProgress > 0 ? myProgress : 0 ) / myTotal ); 
       int h1, h2, s1, s2, v1, v2;
       myStartColor.hsv( &h1, &s1, &v1 );
       myEndColor.isValid() ? myEndColor.hsv( &h2, &s2, &v2 ) :
                             myStartColor.hsv( &h2, &s2, &v2 );
-      for ( int i = 0; i < _PROGRESS_WIDTH-1; i++ ) {
-       painter->setPen( QColor( h1 + ((h2-h1)*i)/(_PROGRESS_WIDTH-2),
-                                s1 + ((s2-s1)*i)/(_PROGRESS_WIDTH-2),
-                                v1 + ((v2-v1)*i)/(_PROGRESS_WIDTH-2), 
+      for ( int i = 0; i < _PROGRESS_WIDTH; i++ ) {
+       painter->setPen( QColor( h1 + ((h2-h1)*i)/(_PROGRESS_WIDTH-1),
+                                s1 + ((s2-s1)*i)/(_PROGRESS_WIDTH-1),
+                                v1 + ((v2-v1)*i)/(_PROGRESS_WIDTH-1), 
                                 QColor::Hsv ) );
-       painter->drawLine( r.x()+6,
-                          r.height()-5-_PROGRESS_WIDTH+1+i,
-                          r.x()+6+ng-1,
-                          r.height()-5-_PROGRESS_WIDTH+1+i );
+       painter->drawLine( r.x()+m,
+                          r.height()-m-_PROGRESS_WIDTH+i,
+                          r.x()+m+ng,
+                          r.height()-m-_PROGRESS_WIDTH+i );
       }
     }
+    // draw progress bar outline rectangle
+    painter->setPen( palette().active().dark() );
+    painter->drawLine( r.x()+m, 
+                      r.height()-m-_PROGRESS_WIDTH,
+                      r.width()-m,
+                      r.height()-m-_PROGRESS_WIDTH );
+    painter->drawLine( r.x()+m,
+                      r.height()-m-_PROGRESS_WIDTH,
+                      r.x()+m,
+                      r.height()-m );
+    painter->setPen( palette().active().light() );
+    painter->drawLine( r.x()+m,
+                      r.height()-m,
+                      r.width()-m,
+                      r.height()-m );
+    painter->drawLine( r.width()-m,
+                      r.height()-m-_PROGRESS_WIDTH,
+                      r.width()-m,
+                      r.height()-m );
   }
   // draw status
   if ( !myMessage.isEmpty() ) {
@@ -447,7 +473,7 @@ void QtxSplash::drawContents( QPainter* painter )
     int i = myMessage.length() - 1;
     while( i >= 0 && myMessage[ i-- ] == '\n' )
       shift += spacing;
-    QRect r1( r.x() + 5, r.y() + 5, r.width() - 10, r.height() - 10 - shift );
+    QRect r1( r.x() + m, r.y() + m, r.width() - m*2, r.height() - m*2 - shift );
     QRect r2 = r1;
     if ( myAlignment & Qt::AlignLeft   ) r2.setLeft  ( r2.left()   + 1 );
     if ( myAlignment & Qt::AlignTop    ) r2.setTop   ( r2.top()    + 1 );
index b6ade167c8a005ac40742da5568da6a4aaaab59e..05b7088a1f9d1c2be12c5b694b72a56a67f2bcb6 100644 (file)
@@ -66,6 +66,9 @@ public:
     void              setTextAlignment( const int );
     int               textAlignment() const;
 
+    void              setMargin( const int );
+    int               margin() const;
+
     void              setTextColor( const QColor& );
     QColor            textColor() const;
     void              setTextColors( const QColor&, const QColor& = QColor() );
@@ -109,6 +112,7 @@ private:
     QColor            myEndColor;
     int               myGradientType;
     int               myError;
+    int               myMargin;
 };
 
 #endif
index 3fe19a79e5534cc7ceff41a38c0bfc97da4f4e1a..04a671cfed56da5944f1141e4c4f543c633a0d2c 100644 (file)
@@ -27,7 +27,8 @@
     <parameter name="image"           value="${GUI_ROOT_DIR}/share/salome/resources/gui/icon_about.png" />
     <parameter name="info"            value="%V" />
     <parameter name="text_colors"     value="#FFFFFF" />
-    <parameter name="progress_colors" value="#3b3e5d|#d14949|0" />
+    <parameter name="progress_colors" value="#c33232|#d1d1d1|0" />
+    <parameter name="margin"          value="26" />
   </section>
   <section name="resources">
     <!-- Resource directories (resource manager)-->