www.pudn.com > chap06.rar > preferencedialog.cpp


#include  
 
#include "preferencedialog.h" 
 
PreferenceDialog::PreferenceDialog(QWidget *parent) 
    : QDialog(parent) 
{ 
    createAppearancePage(); 
    createWebBrowserPage(); 
    createMailAndNewsPage(); 
    createAdvancedPage(); 
 
    okButton = new QPushButton(tr("OK")); 
    cancelButton = new QPushButton(tr("Cancel")); 
    okButton->setDefault(true); 
 
    listWidget = new QListWidget; 
    listWidget->addItem(tr("Appearance")); 
    listWidget->addItem(tr("Web Browser")); 
    listWidget->addItem(tr("Mail & News")); 
    listWidget->addItem(tr("Advanced")); 
 
    stackedLayout = new QStackedLayout; 
    stackedLayout->addWidget(appearancePage); 
    stackedLayout->addWidget(webBrowserPage); 
    stackedLayout->addWidget(mailAndNewsPage); 
    stackedLayout->addWidget(advancedPage); 
    connect(listWidget, SIGNAL(currentRowChanged(int)), 
            stackedLayout, SLOT(setCurrentIndex(int))); 
 
    QHBoxLayout *buttonLayout = new QHBoxLayout; 
    buttonLayout->addStretch(); 
    buttonLayout->addWidget(okButton); 
    buttonLayout->addWidget(cancelButton); 
 
    QGridLayout *mainLayout = new QGridLayout; 
    mainLayout->setColumnStretch(0, 1); 
    mainLayout->setColumnStretch(1, 3); 
    mainLayout->addWidget(listWidget, 0, 0); 
    mainLayout->addLayout(stackedLayout, 0, 1); 
    mainLayout->addLayout(buttonLayout, 1, 0, 1, 2); 
    setLayout(mainLayout); 
 
    connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); 
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); 
 
    setWindowTitle(tr("Preferences")); 
    listWidget->setCurrentRow(0); 
} 
 
void PreferenceDialog::createAppearancePage() 
{ 
    appearancePage = new QWidget; 
 
    openGroupBox = new QGroupBox(tr("Open at startup")); 
    webBrowserCheckBox = new QCheckBox(tr("Web browser")); 
    mailEditorCheckBox = new QCheckBox(tr("Mail editor")); 
    newsgroupCheckBox = new QCheckBox(tr("Newsgroups")); 
 
    toolbarsGroupBox = new QGroupBox(tr("Show toolbars as")); 
    picturesAndTextRadioButton = new QRadioButton(tr("Pictures and " 
                                                     "text")); 
    picturesOnlyRadioButton = new QRadioButton(tr("Pictures only")); 
    textOnlyRadioButton = new QRadioButton(tr("Text only")); 
 
    tooltipsCheckBox = new QCheckBox(tr("Show tooltips")); 
    webSiteIconsCheckBox = new QCheckBox(tr("Show web site icons")); 
    resizeImagesCheckBox = new QCheckBox(tr("Resize large images to " 
                                            "fit in the window")); 
 
    QVBoxLayout *openLayout = new QVBoxLayout; 
    openLayout->addWidget(webBrowserCheckBox); 
    openLayout->addWidget(mailEditorCheckBox); 
    openLayout->addWidget(newsgroupCheckBox); 
    openGroupBox->setLayout(openLayout); 
 
    QVBoxLayout *toolbarsLayout = new QVBoxLayout; 
    toolbarsLayout->addWidget(picturesAndTextRadioButton); 
    toolbarsLayout->addWidget(picturesOnlyRadioButton); 
    toolbarsLayout->addWidget(textOnlyRadioButton); 
    toolbarsGroupBox->setLayout(toolbarsLayout); 
 
    QVBoxLayout *pageLayout = new QVBoxLayout; 
    pageLayout->setMargin(0); 
    pageLayout->addWidget(openGroupBox); 
    pageLayout->addWidget(toolbarsGroupBox); 
    pageLayout->addWidget(tooltipsCheckBox); 
    pageLayout->addWidget(webSiteIconsCheckBox); 
    pageLayout->addWidget(resizeImagesCheckBox); 
    pageLayout->addStretch(); 
    appearancePage->setLayout(pageLayout); 
 
    webBrowserCheckBox->setChecked(true); 
    mailEditorCheckBox->setChecked(true); 
    picturesAndTextRadioButton->setChecked(true); 
    tooltipsCheckBox->setChecked(true); 
    webSiteIconsCheckBox->setChecked(true); 
} 
 
void PreferenceDialog::createWebBrowserPage() 
{ 
    webBrowserPage = new QWidget; 
 
    displayGroupBox = new QGroupBox(tr("Display on startup")); 
    blankRadioButton = new QRadioButton(tr("Blank page")); 
    homeRadioButton = new QRadioButton(tr("Blank page")); 
    lastRadioButton = new QRadioButton(tr("Last page visited")); 
 
    homeGroupBox = new QGroupBox(tr("Home Page")); 
    locationLabel = new QLabel(tr("Location:")); 
    locationLineEdit = new QLineEdit; 
 
    webButtonsGroupBox = new QGroupBox(tr("Select the buttons you want " 
                                          "in the toolbar")); 
    bookmarksCheckBox = new QCheckBox(tr("Bookmarks")); 
    goCheckBox = new QCheckBox(tr("Go")); 
    homeCheckBox = new QCheckBox(tr("Home")); 
    searchCheckBox = new QCheckBox(tr("Search")); 
    printCheckBox = new QCheckBox(tr("Print")); 
 
    QVBoxLayout *displayLayout = new QVBoxLayout; 
    displayLayout->addWidget(blankRadioButton); 
    displayLayout->addWidget(homeRadioButton); 
    displayLayout->addWidget(lastRadioButton); 
    displayGroupBox->setLayout(displayLayout); 
 
    QHBoxLayout *homeLayout = new QHBoxLayout; 
    homeLayout->addWidget(locationLabel); 
    homeLayout->addWidget(locationLineEdit); 
    homeGroupBox->setLayout(homeLayout); 
 
    QGridLayout *webButtonsLayout = new QGridLayout; 
    webButtonsLayout->addWidget(bookmarksCheckBox, 0, 0); 
    webButtonsLayout->addWidget(goCheckBox, 1, 0); 
    webButtonsLayout->addWidget(homeCheckBox, 2, 0); 
    webButtonsLayout->addWidget(searchCheckBox, 0, 1); 
    webButtonsLayout->addWidget(printCheckBox, 1, 1); 
    webButtonsGroupBox->setLayout(webButtonsLayout); 
 
    QVBoxLayout *pageLayout = new QVBoxLayout; 
    pageLayout->setMargin(0); 
    pageLayout->addWidget(displayGroupBox); 
    pageLayout->addWidget(homeGroupBox); 
    pageLayout->addWidget(webButtonsGroupBox); 
    pageLayout->addStretch(); 
    webBrowserPage->setLayout(pageLayout); 
 
    homeRadioButton->setChecked(true); 
    locationLineEdit->setText("http://www.trolltech.com/"); 
    bookmarksCheckBox->setChecked(true); 
    homeCheckBox->setChecked(true); 
    searchCheckBox->setChecked(true); 
    printCheckBox->setChecked(true); 
} 
 
void PreferenceDialog::createMailAndNewsPage() 
{ 
    mailAndNewsPage = new QWidget; 
 
    generalGroupBox = new QGroupBox(tr("General settings")); 
    confirmCheckBox = new QCheckBox(tr("Warn when moving folders to " 
                                       "the Trash")); 
    rememberCheckBox = new QCheckBox(tr("Remember the last selected " 
                                        "message")); 
 
    mailButtonsGroupBox = new QGroupBox(tr("Select the buttons you " 
                                           "want in the toolbar")); 
    fileCheckBox = new QCheckBox(tr("File")); 
    nextCheckBox = new QCheckBox(tr("Next")); 
    stopCheckBox = new QCheckBox(tr("Stop")); 
    junkCheckBox = new QCheckBox(tr("Junk")); 
 
    QVBoxLayout *generalLayout = new QVBoxLayout; 
    generalLayout->addWidget(confirmCheckBox); 
    generalLayout->addWidget(rememberCheckBox); 
    generalGroupBox->setLayout(generalLayout); 
 
    QGridLayout *mailButtonsLayout = new QGridLayout; 
    mailButtonsLayout->addWidget(fileCheckBox, 0, 0); 
    mailButtonsLayout->addWidget(nextCheckBox, 1, 0); 
    mailButtonsLayout->addWidget(stopCheckBox, 0, 1); 
    mailButtonsLayout->addWidget(junkCheckBox, 1, 1); 
    mailButtonsGroupBox->setLayout(mailButtonsLayout); 
 
    QVBoxLayout *pageLayout = new QVBoxLayout; 
    pageLayout->setMargin(0); 
    pageLayout->addWidget(generalGroupBox); 
    pageLayout->addWidget(mailButtonsGroupBox); 
    pageLayout->addStretch(); 
    mailAndNewsPage->setLayout(pageLayout); 
 
    confirmCheckBox->setChecked(true); 
    rememberCheckBox->setChecked(true); 
    nextCheckBox->setChecked(true); 
    junkCheckBox->setChecked(true); 
} 
 
void PreferenceDialog::createAdvancedPage() 
{ 
    advancedPage = new QWidget; 
 
    featuresGroupBox = new QGroupBox(tr("Features that help " 
                                        "interpret web pages")); 
    javaCheckBox = new QCheckBox(tr("Enable Java")); 
    ftpCheckBox = new QCheckBox(tr("Use this email address for " 
                                   "anonymous FTP:")); 
    ftpLineEdit = new QLineEdit; 
 
    connect(ftpCheckBox, SIGNAL(toggled(bool)), 
            ftpLineEdit, SLOT(setEnabled(bool))); 
 
    QGridLayout *featuresLayout = new QGridLayout; 
    featuresLayout->addWidget(javaCheckBox, 0, 0, 1, 2); 
    featuresLayout->addWidget(ftpCheckBox, 1, 0, 1, 2); 
    featuresLayout->addWidget(ftpLineEdit, 2, 1); 
    featuresGroupBox->setLayout(featuresLayout); 
 
    QVBoxLayout *pageLayout = new QVBoxLayout; 
    pageLayout->setMargin(0); 
    pageLayout->addWidget(featuresGroupBox); 
    pageLayout->addStretch(); 
    advancedPage->setLayout(pageLayout); 
 
    javaCheckBox->setChecked(true); 
    ftpLineEdit->setEnabled(false); 
}