merge Huha's ydialog changes
authorcoolo <coolo@e0cc52ee-31ee-0310-8b87-e83c4596d67c>
Sun, 2 Dec 2007 15:50:25 +0000 (15:50 +0000)
committercoolo <coolo@e0cc52ee-31ee-0310-8b87-e83c4596d67c>
Sun, 2 Dec 2007 15:50:25 +0000 (15:50 +0000)
git-svn-id: http://svn.opensuse.org/svn/yast/branches/tmp/coolo/qt4-port@42570 e0cc52ee-31ee-0310-8b87-e83c4596d67c

13 files changed:
VERSION
package/yast2-qt4.changes
src/CMakeLists.txt
src/YQDialog.cc
src/YQDialog.h
src/YQInputField.cc
src/YQUI.h
src/YQUI_core.cc
src/YQWidgetFactory.cc
src/YQWidgetFactory.h
src/pkg/YQPkgConflictDialog.cc
src/pkg/YQPkgRepoFilterView.cc
yast2-qt4.spec.in

diff --git a/VERSION b/VERSION
index ffa5fee..3c5d010 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.16.5
+2.16.6
index ab2235e..a3b49de 100644 (file)
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Fri Nov 30 17:20:49 CET 2007 - sh@suse.de
+
+- Migrated YQDialog to mod-ui
+- V 2.16.6 
+
 -------------------------------------------------------------------
 Tue Nov 27 19:08:00 CET 2007 - sh@suse.de
 
index b726c28..bc2fa33 100644 (file)
@@ -47,7 +47,7 @@ SET_TARGET_PROPERTIES( py2qt4 PROPERTIES SOVERSION 2 )
 
 INSTALL(TARGETS py2qt4 LIBRARY DESTINATION ${YAST_PLUGIN_DIR} )
 
-ADD_SUBDIRECTORY(pkg)
+#ADD_SUBDIRECTORY(pkg)
 
 
 #SET_TARGET_PROPERTIES( y2lang_qt4 PROPERTIES PREFIX "" )
index bc5f1e1..8468e74 100644 (file)
 // like "Above", "Below" etc. that clash with some Qt headers.
 #include <X11/Xlib.h>
 
+#define YQMainDialogWFlags     Qt::Window
 
-YQDialog::YQDialog( const YWidgetOpt & opt,
-                   QWidget *           qt_parent,
-                   bool                default_size )
-    : QWidget( qt_parent,
-              default_size ? Qt::Widget : Qt::Window ) // WFlags
-    , YDialog( opt )
+#define YQPopupDialogWFlags    Qt::Widget
+
+YQDialog::YQDialog( QWidget *          qParent,
+                   YDialogType         dialogType,
+                   YDialogColorMode    colorMode )
+    : QWidget( qParent,
+              dialogType == YMainDialog ? YQMainDialogWFlags : YQPopupDialogWFlags )
+    , YDialog( dialogType, colorMode )
 {
     _userResized       = false;
     _focusButton       = 0;
     _defaultButton     = 0;
 
     setWidgetRep( this );
-    setWindowTitle( hasDefaultSize() ? "YaST2" : "" );
+    setWindowTitle( dialogType == YMainDialog ? "YaST2" : "" );
     setFocusPolicy( Qt::StrongFocus );
 
-    if ( ! default_size )
-       setWindowModality( Qt::WindowModal );
-
-    if ( hasWarnColor() || hasInfoColor() )
+    if ( colorMode != YDialogNormalColor )
     {
        QColor normalBackground     ( 0, 128, 0 );
        QColor inputFieldBackground ( 0,  96, 0 );
        QColor text = Qt::white;
 
-       if ( hasInfoColor() )
+       if ( colorMode == YDialogInfoColor )
        {
            normalBackground = QColor ( 238, 232, 170 ); // PaleGoldenrod
        }
@@ -76,31 +76,6 @@ YQDialog::YQDialog( const YWidgetOpt &       opt,
        warnPalette.setCurrentColorGroup(QPalette::Active);
        setPalette( warnPalette );
     }
-
-    _qFrame = new Q3Frame ( this );
-    bool decorate = ! hasDefaultSize() && ! YQUI::ui()->haveWM();
-
-#if 0
-    if ( hasSmallDecorations() )
-    {
-       // None of this works (yet). :-((
-
-       clearWFlags( getWFlags() );
-       setWFlags( Qt::WStyle_Customize | Qt::WStyle_DialogBorder | Qt::WStyle_StaysOnTop );
-       // decorate = true;
-    }
-#endif
-
-    if ( decorate )
-    {
-       _qFrame->setFrameStyle ( Q3Frame::Box | Q3Frame::Raised );
-       _qFrame->setLineWidth(2);
-       _qFrame->setMidLineWidth(3);
-    }
-    else
-    {
-       _qFrame->setFrameStyle ( Q3Frame::NoFrame );
-    }
 }
 
 
@@ -113,7 +88,7 @@ int YQDialog::preferredWidth()
 {
     int preferredWidth;
 
-    if ( hasDefaultSize() )
+    if ( dialogType() == YMainDialog )
     {
        if ( userResized() )
            preferredWidth = _userSize.width();
@@ -122,7 +97,7 @@ int YQDialog::preferredWidth()
     }
     else
     {
-       preferredWidth = YDialog::preferredWidth() + 2 * decorationWidth();
+       preferredWidth = YDialog::preferredWidth();
     }
 
     int screenWidth = qApp->desktop()->width();
@@ -141,7 +116,7 @@ int YQDialog::preferredHeight()
 {
     int preferredHeight;
 
-    if ( hasDefaultSize() )
+    if ( dialogType() == YMainDialog )
     {
        if ( userResized() )
            preferredHeight = _userSize.height();
@@ -150,7 +125,7 @@ int YQDialog::preferredHeight()
     }
     else
     {
-       preferredHeight = YDialog::preferredHeight() + 2 * decorationWidth();
+       preferredHeight = YDialog::preferredHeight();
     }
 
     int screenHeight = qApp->desktop()->height();
@@ -165,19 +140,10 @@ int YQDialog::preferredHeight()
 }
 
 
-int YQDialog::decorationWidth()
-{
-    if ( ! hasDefaultSize() && _qFrame )
-       return _qFrame->frameWidth();
-    else
-       return 0;
-}
-
-
 void YQDialog::setEnabled( bool enabled )
 {
     QWidget::setEnabled( enabled );
-    YWidget::setEnabled( enabled );
+    YDialog::setEnabled( enabled );
 }
 
 
@@ -191,16 +157,9 @@ void YQDialog::setSize( int newWidth, int newHeight )
 
     if ( hasChildren() )
     {
-       firstChild()->setSize( newWidth  - 2 * decorationWidth(),
-                              newHeight - 2 * decorationWidth() );
-
-       QWidget * qChild = (QWidget *) firstChild()->widgetRep();
-       qChild->move( decorationWidth(), decorationWidth() );
+       firstChild()->setSize( newWidth, newHeight );
     }
 
-    if ( _qFrame )
-       _qFrame->resize( newWidth, newHeight );
-
     resize( newWidth, newHeight );
 }
 
@@ -243,6 +202,9 @@ YQDialog::findDefaultButton()
 
     _defaultButton = findDefaultButton( childrenBegin(), childrenEnd() );
 
+    YDialog::setDefaultButton( 0 ); // prevent complaints about multiple default buttons
+    YDialog::setDefaultButton( _defaultButton );
+
     return _defaultButton;
 }
 
@@ -349,6 +311,13 @@ YQDialog::ensureOnlyOneDefaultButton()
        _defaultButton = wizardDefaultButton( wizard );
     }
 
+    if ( _defaultButton )
+    {
+       YDialog::setDefaultButton( 0 ); // prevent complaints about multiple default buttons
+       YDialog::setDefaultButton( _defaultButton );
+    }
+
+    
     YQGenericButton * def  = _focusButton ? _focusButton : _defaultButton;
 
     if ( def )
@@ -427,7 +396,7 @@ YQDialog::wizardDefaultButton( YQWizard * wizard ) const
 
 
 void
-YQDialog::setDefaultButton( YQGenericButton * newDefaultButton )
+YQDialog::setDefaultButton( YPushButton * newDefaultButton )
 {
     if ( _defaultButton          &&
         newDefaultButton &&
@@ -441,13 +410,13 @@ YQDialog::setDefaultButton( YQGenericButton * newDefaultButton )
        else
        {
            y2error( "Too many `opt(`default) PushButtons: [%s]",
-                    qPrintable(newDefaultButton->text()) );
+                    newDefaultButton->label().c_str() );
            newDefaultButton->setDefaultButton( false );
            return;
        }
     }
 
-    _defaultButton = newDefaultButton;
+    _defaultButton = dynamic_cast<YQGenericButton*>(newDefaultButton);
 
     if ( _defaultButton )
     {
@@ -457,6 +426,10 @@ YQDialog::setDefaultButton( YQGenericButton * newDefaultButton )
        if ( _defaultButton && ! _focusButton )
            _defaultButton->showAsDefault( true );
     }
+
+    
+    YDialog::setDefaultButton( 0 ); // prevent complaints about multiple default buttons
+    YDialog::setDefaultButton( _defaultButton );
 }
 
 
@@ -621,9 +594,9 @@ YQDialog::keyPressEvent( QKeyEvent * event )
 
 void YQDialog::closeEvent( QCloseEvent * event )
 {
-    // The window manager "close window" button ( and menu, e.g. Alt-F4 ) will be
+    // The window manager "close window" button (and WM menu, e.g. Alt-F4) will be
     // handled just like the user had clicked on the `id`( `cancel ) button in
-    // that dialog. It's up to the YCP application to handle this ( if desired ).
+    // that dialog. It's up to the YCP application to handle this (if desired).
 
     y2debug( "Ignoring window manager close button." );
     event->ignore();
@@ -656,16 +629,11 @@ void YQDialog::focusInEvent( QFocusEvent * event )
 void
 YQDialog::show()
 {
-    //if ( ! hasDefaultSize() && qApp->mainWidget()->isVisible() )
-    if ( ! hasDefaultSize() )
-    {
-      // will use topwidget anyway
-      center( this, 0 );
-    }
-    else if ( isCentered() )
-    {
-      center( this, qApp->desktop() );
-    }
+#if FIXME
+    if ( ! dialogType() == YMainDialog && qApp->mainWidget()->isVisible() )
+       center( this, qApp->mainWidget() );
+#endif
+
     QWidget::show();
 }
 
index 1260464..669ddb9 100644 (file)
@@ -28,8 +28,6 @@
 
 class YQGenericButton;
 class YQWizard;
-class Q3Frame;
-
 
 class YQDialog : public QWidget, public YDialog
 {
@@ -37,17 +35,27 @@ class YQDialog : public QWidget, public YDialog
 
 public:
     /**
-     * Constructor: Constructor.
+     * Constructor.
+     *
+     * 'dialogType' is one of YMainDialog or YPopupDialog.
+     *
+     * 'colorMode' can be set to YDialogWarnColor to use very bright "warning"
+     * colors or YDialogInfoColor to use more prominent, yet not quite as
+     * bright as "warning" colors. Use both only very rarely.
      **/
-    YQDialog( const YWidgetOpt &       opt,
-             QWidget *                 qt_parent       = 0,
-             bool                      default_size    = false );
+    YQDialog( QWidget *                qParent,
+             YDialogType       dialogType,
+             YDialogColorMode  colorMode = YDialogNormalColor );
+
+protected:
 
     /**
-     * Destructor: Cleans up.
+     * Destructor.
+     * Don't delete a dialog directly, use YDialog::deleteTopmostDialog().
      **/
-    ~YQDialog();
+    virtual ~YQDialog();
 
+public:
     /**
      * Makes this dialog        active or inactive
      **/
@@ -87,12 +95,6 @@ public:
      **/
     virtual void setSize( int newWidth, int newHeight );
 
-    /**
-     * Returns the size of (artificial) window manager decorations, depending
-     * on the value of YDialog::isDecorated().
-     **/
-    int decorationWidth();
-
     /**
      * Return this dialog's (first) default button or 0 if none
      **/
@@ -136,7 +138,7 @@ public:
      * [Return] if no other button has the keyboard focus.
      * 'newDefaultButton' may be 0 if the former default button is destroyed.
      **/
-    void setDefaultButton( YQGenericButton * newDefaultButton );
+    void setDefaultButton( YPushButton * newDefaultButton );
 
     /**
      * Ensure presence of no more than one single default button.
@@ -230,8 +232,6 @@ protected:
     // Data members
     //
 
-    Q3Frame *          _qFrame;
-
     bool               _userResized;
     QSize              _userSize;
 
index 9161f95..60adc88 100644 (file)
@@ -14,7 +14,7 @@
 
   Author:     Stefan Hundhammer <sh@suse.de>
 
-  textdomain "packages-qt"
+  Textdomain "packages-qt"
 
 /-*/
 
index 5141e08..7752184 100644 (file)
@@ -340,13 +340,6 @@ protected:
      **/
     YEvent * pollInput();
 
-    /**
-     * Create a dialog.
-     *
-     * Reimplemented from YUI.
-     **/
-    YDialog * createDialog( YWidgetOpt & opt );
-
     /**
      * Show and activate a dialog.
      *
index e8ed2d4..9e58fac 100644 (file)
@@ -516,6 +516,8 @@ void YQUI::userInputTimeout()
 }
 
 
+#warning obsolete
+#if 0
 YDialog * YQUI::createDialog( YWidgetOpt & opt )
 {
     init_ui();
@@ -537,6 +539,7 @@ YDialog * YQUI::createDialog( YWidgetOpt & opt )
 
     return dialog;
 }
+#endif
 
 
 void YQUI::showDialog( YDialog * dialog )
@@ -549,7 +552,7 @@ void YQUI::showDialog( YDialog * dialog )
        return;
     }
 
-    if ( dialog->hasDefaultSize() )
+    if ( dialog->dialogType() == YMainDialog )
     {
        _widget_stack->addWidget  ( qw );
        _widget_stack->setCurrentWidget( qw );
@@ -587,7 +590,7 @@ void YQUI::closeDialog( YDialog * dialog )
        return;
     }
 
-    if ( dialog->hasDefaultSize() )
+    if ( dialog->dialogType() == YMainDialog )
     {
        _widget_stack->removeWidget( qw );
     }
@@ -595,6 +598,8 @@ void YQUI::closeDialog( YDialog * dialog )
     {
        qw->hide();
 
+#warning FIXME
+#if 0
        // Clean up the popup stack. libyui guarantees that a dialog will be
        // deleted after closeDialog() so it is safe to pop that dialog from
        // the popup stack here.
@@ -603,6 +608,7 @@ void YQUI::closeDialog( YDialog * dialog )
            _popup_stack.pop_back();
        else
            y2error( "Popup dialog stack corrupted!" );
+#endif
     }
 }
 
index d1b9f5a..f47c27c 100644 (file)
@@ -48,22 +48,17 @@ YQWidgetFactory::~YQWidgetFactory()
 //
 
 YQDialog *
-YQWidgetFactory::createMainDialog()
+YQWidgetFactory::createDialog( YDialogType dialogType, YDialogColorMode colorMode )
 {
-    return 0; // FIXME: TO DO
-}
-
-
+    QWidget * qParent = 0;
+    YQDialog * dialog = new YQDialog( qParent, dialogType, colorMode );
+    YUI_CHECK_NEW( dialog );
 
-YQDialog *
-YQWidgetFactory::createPopupDialog()
-{
-    return 0; // FIXME: TO DO
+    return dialog;
 }
 
 
 
-
 //
 // Layout Boxes
 //
index a278c6e..8f9c204 100644 (file)
@@ -70,14 +70,13 @@ public:
     // Dialogs
     //
 
-    virtual YQDialog *         createMainDialog();
-    virtual YQDialog *         createPopupDialog();
+    virtual YQDialog *         createDialog            ( YDialogType dialogType, YDialogColorMode colorMode = YDialogNormalColor );
 
     //
     // Layout Boxes
     //
 
-    virtual YQLayoutBox *      createLayoutBox( YWidget * parent, YUIDimension dim );
+    virtual YQLayoutBox *      createLayoutBox         ( YWidget * parent, YUIDimension dim );
 
     //
     // Common Leaf Widgets
index cceba1a..3f671a1 100644 (file)
@@ -361,7 +361,7 @@ YQPkgConflictDialog::askCreateSolverTestCase()
     QString heading = QString( "<h2>%1</h2>" ).arg( _( "Create Dependency Resolver Test Case" ) );
 
     QString msg =
-       _( "<p>Use this to generate extensive logs to help tracking down bugs in the dependency resolver."
+       _( "<p>Use this to generate extensive logs to help tracking down bugs in the dependency resolver. "
           "The logs will be stored in directory <br><tt>%1</tt></p>" ).arg( testCaseDir );
 
     int button_no = QMessageBox::information( 0,                       // parent
index 9e65c8b..0ec8fe5 100644 (file)
@@ -97,7 +97,11 @@ YQPkgRepoFilterView::layoutSecondaryFilters( QWidget * parent )
 
     // Translators: This is a combo box where the user can apply a secondary filter
     // in addition to the primary filter by repository - one of
-    // "all packages", "RPM groups", "search", "summary"
+    // "All packages", "RPM groups", "search", "summary"
+    //
+    // And yes, the colon really belongs there since this is one of the very
+    // few cases where a combo box label is left to the combo box rather than
+    // above it.
     _secondaryFilters = new QY2ComboTabWidget( _( "&Secondary Filter:" ), vbox );
     Q_CHECK_PTR( _secondaryFilters );
 
index 73945f8..50a079d 100644 (file)
@@ -5,8 +5,8 @@
 BuildRequires: dbus-1-devel boost-devel libzypp-devel curl-devel docbook-xsl-stylesheets doxygen libdrm-devel libjpeg-devel libxcrypt-devel libxslt perl-XML-Writer libqt4-devel rpm-devel sgml-skel update-desktop-files yast2-devtools yast2-core-devel hal-devel
 
 Summary:       -
-BuildRequires: yast2-core-devel >= 2.16.10
-Requires:      yast2-core >= 2.16.10
+BuildRequires:  yast2-core-devel >= 2.16.11
+Requires:       yast2-core >= 2.16.11
 Requires:      libzypp >= 3.11.8
 Provides:      yast2_ui
 Provides:      y2base:/usr/lib/YaST2/servers/qt