|  | Home · All Classes · Main Classes · Annotated · Grouped Classes · Functions |

# configdialog.cpp Example File
dialogs/configdialog/configdialog.cpp

        /****************************************************************************
        **
        ** Copyright (C) 2005-2005 Trolltech AS. All rights reserved.
        **
        ** This file is part of the documentation of the Qt Toolkit.
        **
        ** This file may be distributed and/or modified under the terms of the
    ** GNU General Public License version 2 as published by the Free Software
    ** Foundation and appearing in the file LICENSE.GPL included in the
    ** packaging of this file.
    **
    ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
    ** information about Qt Commercial License Agreements.
    ** See http://www.trolltech.com/gpl/ for GPL licensing information.
    **
    ** Contact info@trolltech.com if any conditions of this licensing are
    ** not clear to you.
        **
        ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
        ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        **
        ****************************************************************************/

        #include <QtGui>

        #include "configdialog.h"
        #include "pages.h"

        ConfigDialog::ConfigDialog()
        {
            contentsWidget = new QListWidget;
            contentsWidget->setViewMode(QListView::IconMode);
            contentsWidget->setIconSize(QSize(96, 84));
            contentsWidget->setMovement(QListView::Static);
            contentsWidget->setMaximumWidth(128);
            contentsWidget->setSpacing(12);

            pagesWidget = new QStackedWidget;
            pagesWidget->addWidget(new ConfigurationPage);
            pagesWidget->addWidget(new UpdatePage);
            pagesWidget->addWidget(new QueryPage);

            QPushButton *closeButton = new QPushButton(tr("Close"));

            createIcons();
            contentsWidget->setCurrentRow(0);

            connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));

            QHBoxLayout *horizontalLayout = new QHBoxLayout;
            horizontalLayout->addWidget(contentsWidget);
            horizontalLayout->addWidget(pagesWidget, 1);

            QHBoxLayout *buttonsLayout = new QHBoxLayout;
            buttonsLayout->addStretch(1);
            buttonsLayout->addWidget(closeButton);

            QVBoxLayout *mainLayout = new QVBoxLayout;
            mainLayout->addLayout(horizontalLayout);
            mainLayout->addStretch(1);
            mainLayout->addSpacing(12);
            mainLayout->addLayout(buttonsLayout);
            setLayout(mainLayout);

            setWindowTitle(tr("Config Dialog"));
        }

        void ConfigDialog::createIcons()
        {
            QListWidgetItem *configButton = new QListWidgetItem(contentsWidget);
            configButton->setIcon(QIcon(":/images/config.png"));
            configButton->setText(tr("Configuration"));
            configButton->setTextAlignment(Qt::AlignHCenter);
            configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

            QListWidgetItem *updateButton = new QListWidgetItem(contentsWidget);
            updateButton->setIcon(QIcon(":/images/update.png"));
            updateButton->setText(tr("Update"));
            updateButton->setTextAlignment(Qt::AlignHCenter);
            updateButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

            QListWidgetItem *queryButton = new QListWidgetItem(contentsWidget);
            queryButton->setIcon(QIcon(":/images/query.png"));
            queryButton->setText(tr("Query"));
            queryButton->setTextAlignment(Qt::AlignHCenter);
            queryButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

            connect(contentsWidget,
                    SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
                    this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*)));
        }

        void ConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
        {
            if (!current)
                current = previous;

            pagesWidget->setCurrentIndex(contentsWidget->row(current));
        }