summaryrefslogtreecommitdiffstats
path: root/krename/encodingplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'krename/encodingplugin.cpp')
-rw-r--r--krename/encodingplugin.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/krename/encodingplugin.cpp b/krename/encodingplugin.cpp
new file mode 100644
index 0000000..1bbabce
--- /dev/null
+++ b/krename/encodingplugin.cpp
@@ -0,0 +1,144 @@
+/***************************************************************************
+ encodingplugin.cpp - description
+ -------------------
+ begin : Tue Jul 06 2004
+ copyright : (C) 2004 by Dominik Seichter
+ email : domseichter@web.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "encodingplugin.h"
+
+// QT includes
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtextcodec.h>
+#include <qvgroupbox.h>
+
+
+// KDE includes
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+
+const QString EncodingPlugin::getName() const
+{
+ return i18n("Encoding Conversion Plugin");
+}
+
+const QString EncodingPlugin::getAccelName() const
+{
+ return i18n("&Encoding Conversion Plugin");
+}
+
+const int EncodingPlugin::type() const
+{
+ return TYPE_FINAL_FILENAME;
+}
+
+void EncodingPlugin::drawInterface( QWidget* w, QVBoxLayout* l )
+{
+ // build a list of all available TextCodecs
+ QStringList codecs;
+ QTextCodec *codec;
+ for( int i=0; (codec = QTextCodec::codecForIndex(i));i++)
+ codecs.append( codec->name() );
+
+ m_widget = w;
+
+ codec = QTextCodec::codecForLocale();
+ m_locale_codec = codec->name();
+
+ QLabel* label = new QLabel(
+ i18n("<qt>This plugin is able to convert filenames between different "
+ "encodings. For example you can convert filenames from KOI8-R "
+ "to UTF-8 encoding.</qt>"), w );
+ l->addWidget( label );
+
+ QVGroupBox* groupInput = new QVGroupBox( i18n("Encoding of Input Files:"), w );
+ checkInput = new QCheckBox( i18n("&Use local encoding: %1").arg( m_locale_codec), groupInput );
+ comboInput = new KComboBox( false, groupInput );
+ comboInput->insertStringList( codecs );
+
+ QVGroupBox* groupOutput = new QVGroupBox( i18n("Encoding of Output Files:"), w );
+ checkOutput = new QCheckBox( i18n("&Use local encoding: %1").arg( m_locale_codec), groupOutput );
+ checkOutput->setChecked( true );
+ comboOutput = new KComboBox( false, groupOutput );
+ comboOutput->insertStringList( codecs );
+
+ l->addWidget( groupInput );
+ l->addWidget( groupOutput );
+
+ connect( checkInput, SIGNAL( clicked() ), this, SLOT( enableControls() ) );
+ connect( checkOutput, SIGNAL( clicked() ), this, SLOT( enableControls() ) );
+
+ connect( comboOutput, SIGNAL( activated(int) ),this, SLOT( updatePreview() ) );
+ connect( comboInput, SIGNAL( activated(int) ),this, SLOT( updatePreview() ) );
+
+ setLocale( comboInput );
+ setLocale( comboOutput );
+
+ enableControls();
+}
+
+void EncodingPlugin::fillStructure()
+{
+ m_input_codec = (checkInput->isChecked() ? m_locale_codec : comboInput->currentText() );
+ m_output_codec = (checkOutput->isChecked() ? m_locale_codec : comboOutput->currentText() );
+}
+
+bool EncodingPlugin::checkError()
+{
+ return true;
+}
+
+QString EncodingPlugin::processFile( BatchRenamer*, int, QString token, int )
+{
+ QString input = token;
+ QString unicode = QString::null;
+
+ QTextCodec* toUnicode = QTextCodec::codecForName(m_input_codec); // get the codec for KOI8-R
+ QTextCodec* fromUnicode = QTextCodec::codecForName(m_output_codec);
+
+ unicode = toUnicode->toUnicode( input );
+ return fromUnicode->fromUnicode( unicode );
+}
+
+void EncodingPlugin::finished()
+{
+}
+
+
+const QPixmap EncodingPlugin::getIcon() const
+{
+ return kapp->iconLoader()->loadIcon( "fonts", KIcon::Small );
+}
+
+void EncodingPlugin::enableControls()
+{
+ comboInput->setEnabled( !checkInput->isChecked() );
+ comboOutput->setEnabled( !checkOutput->isChecked() );
+
+ //updatePreview();
+}
+
+void EncodingPlugin::setLocale( KComboBox* combo )
+{
+ for(int i=0;i<combo->count();i++)
+ if( combo->text(i) == m_locale_codec )
+ {
+ combo->setCurrentItem( i );
+ break;
+ }
+}