From 5163336b8e9f5e34a5d07ba38b59aa0dad72fb1b Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Tue, 18 May 2010 02:22:57 +0200 Subject: This commit let encoding handling being a bit easier. It is anyway a bit tricky :) Hope no-one blame about.. BUG:237518 --- src/mainwindow.cpp | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 527e5020..1aa4374a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1292,11 +1292,12 @@ void MainWindow::setEncoding(QAction *qa) void MainWindow::populateEncodingMenu() { - QList byteCodecs = QTextCodec::availableCodecs(); QStringList codecs; - Q_FOREACH(const QByteArray &b, byteCodecs) + QList mibs = QTextCodec::availableMibs(); + Q_FOREACH (const int &mib, mibs) { - codecs << QString(b); + QString codec = QLatin1String(QTextCodec::codecForMib(mib)->name()); + codecs.append(codec); } codecs.sort(); @@ -1304,13 +1305,36 @@ void MainWindow::populateEncodingMenu() kDebug() << "Current Codec: " << currentCodec; m_encodingMenu->clear(); + KMenu *isoMenu = new KMenu( QL1S("ISO"), m_encodingMenu); + KMenu *winMenu = new KMenu( QL1S("windows"), m_encodingMenu); + KMenu *isciiMenu = new KMenu( QL1S("Iscii"), m_encodingMenu); + KMenu *uniMenu = new KMenu( QL1S("UNICODE"), m_encodingMenu); + KMenu *otherMenu = new KMenu( QL1S("Other"), m_encodingMenu); + + QAction *a; Q_FOREACH(const QString &codec, codecs) { - QAction *action = m_encodingMenu->addAction(codec); - action->setCheckable(true); + + if( codec.startsWith( QL1S("ISO"), Qt::CaseInsensitive ) ) + a = isoMenu->addAction(codec); + else if( codec.startsWith( QL1S("win") ) ) + a = winMenu->addAction(codec); + else if( codec.startsWith( QL1S("Iscii") ) ) + a = isciiMenu->addAction(codec); + else if( codec.startsWith( QL1S("UT") ) ) + a = uniMenu->addAction(codec); + else + a = otherMenu->addAction(codec); + + a->setCheckable(true); if (currentCodec == codec) - action->setChecked(true); + a->setChecked(true); } + m_encodingMenu->addMenu( isoMenu ); + m_encodingMenu->addMenu( winMenu ); + m_encodingMenu->addMenu( isciiMenu ); + m_encodingMenu->addMenu( uniMenu ); + m_encodingMenu->addMenu( otherMenu ); } -- cgit v1.2.1