previewform.cpp Example File
tools/codecs/previewform.cpp
/****************************************************************************
**
** Copyright (C) 2004-2005 Trolltech AS. All rights reserved.
**
** This file is part of the documentation of the Qt Toolkit.
**
** Licensees holding valid Qt Preview licenses may use this file in
** accordance with the Qt Preview License Agreement provided with the
** Software.
**
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
** information about Qt Commercial License Agreements.
**
** 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 "previewform.h"
PreviewForm::PreviewForm(QWidget *parent)
: QDialog(parent)
{
encodingComboBox = new QComboBox;
encodingLabel = new QLabel(tr("&Encoding:"));
encodingLabel->setBuddy(encodingComboBox);
textEdit = new QTextEdit;
textEdit->setLineWrapMode(QTextEdit::NoWrap);
textEdit->setReadOnly(true);
okButton = new QPushButton(tr("OK"));
cancelButton = new QPushButton(tr("Cancel"));
okButton->setDefault(true);
connect(encodingComboBox, SIGNAL(activated(int)),
this, SLOT(updateTextEdit()));
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch(1);
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(cancelButton);
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(encodingLabel, 0, 0);
mainLayout->addWidget(encodingComboBox, 0, 1);
mainLayout->addWidget(textEdit, 1, 0, 1, 2);
mainLayout->addLayout(buttonLayout, 2, 0, 1, 2);
setLayout(mainLayout);
setWindowTitle(tr("Choose Encoding"));
resize(400, 300);
}
void PreviewForm::setCodecList(const QList<QTextCodec *> &list)
{
encodingComboBox->clear();
foreach (QTextCodec *codec, list)
encodingComboBox->addItem(codec->name(), codec->mibEnum());
}
void PreviewForm::setEncodedData(const QByteArray &data)
{
encodedData = data;
updateTextEdit();
}
void PreviewForm::updateTextEdit()
{
int mib = encodingComboBox->itemData(
encodingComboBox->currentIndex()).toInt();
QTextCodec *codec = QTextCodec::codecForMib(mib);
QTextStream in(&encodedData);
in.setAutoDetectUnicode(false);
in.setCodec(codec);
decodedStr = in.readAll();
textEdit->setPlainText(decodedStr);
}