--- /dev/null
+/****************************************************************************+
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of meegotouch-controlpanelapplets.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+#include "subtitleswidget.h"
+#include "dcpsubtitles.h"
+
+#include <QGraphicsLinearLayout>
+#include <QSettings>
+#include <QDebug>
+
+#include <MStylableWidget>
+#include <MLayout>
+#include <MLinearLayoutPolicy>
+#include <MButton>
+#include <MSeparator>
+#include <MContainer>
+#include <MLabel>
+#include <MComboBox>
+
+#include <MWidgetCreator>
+M_REGISTER_WIDGET_NO_CREATE (SubtitlesWidget);
+
+#include <pango/pango-font.h>
+
+const QString RENDERER_PLUGIN_CONFIG_FILE = "/usr/share/qmafw/mafw-gst-renderer-plugin.conf";
+
+typedef enum
+{
+ FONT_STYLE_REGULAR,
+ FONT_STYLE_ITALIC,
+ FONT_STYLE_BOLD,
+ FONT_STYLE_ITALIC_BOLD,
+ FONT_STYLE_LAST,
+} FontStyleIndex;
+
+typedef struct {
+ int index;
+ const QString name;
+} FontStyle;
+
+static FontStyle font_styles[] = {
+ {FONT_STYLE_REGULAR, qtTrId("Regular")},
+ {FONT_STYLE_ITALIC, qtTrId("Italic")},
+ {FONT_STYLE_BOLD, qtTrId("Bold")},
+ {FONT_STYLE_ITALIC_BOLD, qtTrId("Italic Bold")},
+};
+
+static const int font_sizes[] =
+{
+ 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, -1
+};
+
+typedef enum
+{
+ SUBTITLE_ENCODING_ISO_8859_6,
+ SUBTITLE_ENCODING_IBM_864,
+ SUBTITLE_ENCODING_MAC_ARABIC,
+ SUBTITLE_ENCODING_WINDOWS_1256,
+
+ SUBTITLE_ENCODING_ARMSCII_8,
+
+ SUBTITLE_ENCODING_ISO_8859_4,
+ SUBTITLE_ENCODING_ISO_8859_13,
+ SUBTITLE_ENCODING_WINDOWS_1257,
+
+ SUBTITLE_ENCODING_ISO_8859_14,
+
+ SUBTITLE_ENCODING_ISO_8859_2,
+ SUBTITLE_ENCODING_IBM_852,
+ SUBTITLE_ENCODING_MAC_CE,
+ SUBTITLE_ENCODING_WINDOWS_1250,
+
+ SUBTITLE_ENCODING_GB18030,
+ SUBTITLE_ENCODING_GB2312,
+ SUBTITLE_ENCODING_GBK,
+ SUBTITLE_ENCODING_HZ,
+
+ SUBTITLE_ENCODING_BIG5,
+ SUBTITLE_ENCODING_BIG5_HKSCS,
+ SUBTITLE_ENCODING_EUC_TW,
+
+ SUBTITLE_ENCODING_MAC_CROATIAN,
+
+ SUBTITLE_ENCODING_ISO_8859_5,
+ SUBTITLE_ENCODING_IBM_855,
+ SUBTITLE_ENCODING_ISO_IR_111,
+ SUBTITLE_ENCODING_KOI8_R,
+ SUBTITLE_ENCODING_MAC_CYRILLIC,
+ SUBTITLE_ENCODING_WINDOWS_1251,
+
+ SUBTITLE_ENCODING_CP_866,
+
+ SUBTITLE_ENCODING_MAC_UKRAINIAN,
+ SUBTITLE_ENCODING_KOI8_U,
+
+ SUBTITLE_ENCODING_GEOSTD8,
+
+ SUBTITLE_ENCODING_ISO_8859_7,
+ SUBTITLE_ENCODING_MAC_GREEK,
+ SUBTITLE_ENCODING_WINDOWS_1253,
+
+ SUBTITLE_ENCODING_MAC_GUJARATI,
+
+ SUBTITLE_ENCODING_MAC_GURMUKHI,
+
+ SUBTITLE_ENCODING_ISO_8859_8_I,
+ SUBTITLE_ENCODING_IBM_862,
+ SUBTITLE_ENCODING_MAC_HEBREW,
+ SUBTITLE_ENCODING_WINDOWS_1255,
+
+ SUBTITLE_ENCODING_ISO_8859_8,
+
+ SUBTITLE_ENCODING_MAC_DEVANAGARI,
+
+ SUBTITLE_ENCODING_MAC_ICELANDIC,
+
+ SUBTITLE_ENCODING_EUC_JP,
+ SUBTITLE_ENCODING_ISO_2022_JP,
+ SUBTITLE_ENCODING_SHIFT_JIS,
+
+ SUBTITLE_ENCODING_EUC_KR,
+ SUBTITLE_ENCODING_ISO_2022_KR,
+ SUBTITLE_ENCODING_JOHAB,
+ SUBTITLE_ENCODING_UHC,
+
+ SUBTITLE_ENCODING_ISO_8859_10,
+
+ SUBTITLE_ENCODING_MAC_FARSI,
+
+ SUBTITLE_ENCODING_ISO_8859_16,
+ SUBTITLE_ENCODING_MAC_ROMANIAN,
+
+ SUBTITLE_ENCODING_ISO_8859_3,
+
+ SUBTITLE_ENCODING_TIS_620,
+
+ SUBTITLE_ENCODING_ISO_8859_9,
+ SUBTITLE_ENCODING_IBM_857,
+ SUBTITLE_ENCODING_MAC_TURKISH,
+ SUBTITLE_ENCODING_WINDOWS_1254,
+
+ SUBTITLE_ENCODING_UTF_7,
+ SUBTITLE_ENCODING_UTF_8,
+ SUBTITLE_ENCODING_UTF_16,
+ SUBTITLE_ENCODING_UCS_2,
+ SUBTITLE_ENCODING_UCS_4,
+
+ SUBTITLE_ENCODING_ISO_8859_1,
+ SUBTITLE_ENCODING_ISO_8859_15,
+ SUBTITLE_ENCODING_IBM_850,
+ SUBTITLE_ENCODING_MAC_ROMAN,
+ SUBTITLE_ENCODING_WINDOWS_1252,
+
+ SUBTITLE_ENCODING_TCVN,
+ SUBTITLE_ENCODING_VISCII,
+ SUBTITLE_ENCODING_WINDOWS_1258,
+
+ SUBTITLE_ENCODING_CURRENT_LOCALE,
+
+ SUBTITLE_ENCODING_LAST
+} SubtitleEncodingIndex;
+
+typedef struct {
+ int index;
+ const QString charset;
+ const QString name;
+} SubtitleEncoding;
+
+static SubtitleEncoding encodings[] = {
+ {SUBTITLE_ENCODING_ISO_8859_6, "ISO-8859-6", qtTrId("Arabic")},
+ {SUBTITLE_ENCODING_IBM_864, "IBM864", qtTrId("Arabic")},
+ {SUBTITLE_ENCODING_MAC_ARABIC, "MAC_ARABIC", qtTrId("Arabic")},
+ {SUBTITLE_ENCODING_WINDOWS_1256, "WINDOWS-1256", qtTrId("Arabic")},
+
+ {SUBTITLE_ENCODING_ARMSCII_8, "ARMSCII-8", qtTrId("Armenian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_4, "ISO-8859-4", qtTrId("Baltic")},
+ {SUBTITLE_ENCODING_ISO_8859_13, "ISO-8859-13", qtTrId("Baltic")},
+ {SUBTITLE_ENCODING_WINDOWS_1257, "WINDOWS-1257", qtTrId("Baltic")},
+
+ {SUBTITLE_ENCODING_ISO_8859_14, "ISO-8859-14", qtTrId("Celtic")},
+
+ {SUBTITLE_ENCODING_ISO_8859_2, "ISO-8859-2", qtTrId("Central European")},
+ {SUBTITLE_ENCODING_IBM_852, "IBM852", qtTrId("Central European")},
+ {SUBTITLE_ENCODING_MAC_CE, "MAC_CE", qtTrId("Central European")},
+ {SUBTITLE_ENCODING_WINDOWS_1250, "WINDOWS-1250", qtTrId("Central European")},
+
+ {SUBTITLE_ENCODING_GB18030, "GB18030", qtTrId("Chinese Simplified")},
+ {SUBTITLE_ENCODING_GB2312, "GB2312", qtTrId("Chinese Simplified")},
+ {SUBTITLE_ENCODING_GBK, "GBK", qtTrId("Chinese Simplified")},
+ {SUBTITLE_ENCODING_HZ, "HZ", qtTrId("Chinese Simplified")},
+
+ {SUBTITLE_ENCODING_BIG5, "BIG5", qtTrId("Chinese Traditional")},
+ {SUBTITLE_ENCODING_BIG5_HKSCS, "BIG5-HKSCS", qtTrId("Chinese Traditional")},
+ {SUBTITLE_ENCODING_EUC_TW, "EUC-TW", qtTrId("Chinese Traditional")},
+
+ {SUBTITLE_ENCODING_MAC_CROATIAN, "MAC_CROATIAN", qtTrId("Croatian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_5, "ISO-8859-5", qtTrId("Cyrillic")},
+ {SUBTITLE_ENCODING_IBM_855, "IBM855", qtTrId("Cyrillic")},
+ {SUBTITLE_ENCODING_ISO_IR_111, "ISO-IR-111", qtTrId("Cyrillic")},
+ {SUBTITLE_ENCODING_KOI8_R, "KOI8-R", qtTrId("Cyrillic")},
+ {SUBTITLE_ENCODING_MAC_CYRILLIC, "MAC-CYRILLIC", qtTrId("Cyrillic")},
+ {SUBTITLE_ENCODING_WINDOWS_1251, "WINDOWS-1251", qtTrId("Cyrillic")},
+
+ {SUBTITLE_ENCODING_CP_866, "CP866", qtTrId("Cyrillic/Russian")},
+
+ {SUBTITLE_ENCODING_MAC_UKRAINIAN, "MAC_UKRAINIAN", qtTrId("Cyrillic/Ukrainian")},
+ {SUBTITLE_ENCODING_KOI8_U, "KOI8-U", qtTrId("Cyrillic/Ukrainian")},
+
+ {SUBTITLE_ENCODING_GEOSTD8, "GEORGIAN-PS", qtTrId("Georgian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_7, "ISO-8859-7", qtTrId("Greek")},
+ {SUBTITLE_ENCODING_MAC_GREEK, "MAC_GREEK", qtTrId("Greek")},
+ {SUBTITLE_ENCODING_WINDOWS_1253, "WINDOWS-1253", qtTrId("Greek")},
+
+ {SUBTITLE_ENCODING_MAC_GUJARATI, "MAC_GUJARATI", qtTrId("Gujarati")},
+
+ {SUBTITLE_ENCODING_MAC_GURMUKHI, "MAC_GURMUKHI", qtTrId("Gurmukhi")},
+
+ {SUBTITLE_ENCODING_ISO_8859_8_I, "ISO-8859-8-I", qtTrId("Hebrew")},
+ {SUBTITLE_ENCODING_IBM_862, "IBM862", qtTrId("Hebrew")},
+ {SUBTITLE_ENCODING_MAC_HEBREW, "MAC_HEBREW", qtTrId("Hebrew")},
+ {SUBTITLE_ENCODING_WINDOWS_1255, "WINDOWS-1255", qtTrId("Hebrew")},
+
+ {SUBTITLE_ENCODING_ISO_8859_8, "ISO-8859-8", qtTrId("Hebrew Visual")},
+
+ {SUBTITLE_ENCODING_MAC_DEVANAGARI, "MAC_DEVANAGARI", qtTrId("Hindi")},
+
+ {SUBTITLE_ENCODING_MAC_ICELANDIC, "MAC_ICELANDIC", qtTrId("Icelandic")},
+
+ {SUBTITLE_ENCODING_EUC_JP, "EUC-JP", qtTrId("Japanese")},
+ {SUBTITLE_ENCODING_ISO_2022_JP, "ISO2022JP", qtTrId("Japanese")},
+ {SUBTITLE_ENCODING_SHIFT_JIS, "SHIFT-JIS", qtTrId("Japanese")},
+
+ {SUBTITLE_ENCODING_EUC_KR, "EUC-KR", qtTrId("Korean")},
+ {SUBTITLE_ENCODING_ISO_2022_KR, "ISO2022KR", qtTrId("Korean")},
+ {SUBTITLE_ENCODING_JOHAB, "JOHAB", qtTrId("Korean")},
+ {SUBTITLE_ENCODING_UHC, "UHC", qtTrId("Korean")},
+
+ {SUBTITLE_ENCODING_ISO_8859_10, "ISO-8859-10", qtTrId("Nordic")},
+
+ {SUBTITLE_ENCODING_MAC_FARSI, "MAC_FARSI", qtTrId("Persian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_16, "ISO-8859-16", qtTrId("Romanian")},
+ {SUBTITLE_ENCODING_MAC_ROMANIAN, "MAC_ROMANIAN", qtTrId("Romanian")},
+
+ {SUBTITLE_ENCODING_ISO_8859_3, "ISO-8859-3", qtTrId("South European")},
+
+ {SUBTITLE_ENCODING_TIS_620, "TIS-620", qtTrId("Thai")},
+
+ {SUBTITLE_ENCODING_ISO_8859_9, "ISO-8859-9", qtTrId("Turkish")},
+ {SUBTITLE_ENCODING_IBM_857, "IBM857", qtTrId("Turkish")},
+ {SUBTITLE_ENCODING_MAC_TURKISH, "MAC_TURKISH", qtTrId("Turkish")},
+ {SUBTITLE_ENCODING_WINDOWS_1254, "WINDOWS-1254", qtTrId("Turkish")},
+
+ {SUBTITLE_ENCODING_UTF_7, "UTF-7", qtTrId("Unicode")},
+ {SUBTITLE_ENCODING_UTF_8, "UTF-8", qtTrId("Unicode")},
+ {SUBTITLE_ENCODING_UTF_16, "UTF-16", qtTrId("Unicode")},
+ {SUBTITLE_ENCODING_UCS_2, "UCS-2", qtTrId("Unicode")},
+ {SUBTITLE_ENCODING_UCS_4, "UCS-4", qtTrId("Unicode")},
+
+ {SUBTITLE_ENCODING_ISO_8859_1, "ISO-8859-1", qtTrId("Western")},
+ {SUBTITLE_ENCODING_ISO_8859_15, "ISO-8859-15", qtTrId("Western")},
+ {SUBTITLE_ENCODING_IBM_850, "IBM850", qtTrId("Western")},
+ {SUBTITLE_ENCODING_MAC_ROMAN, "MAC_ROMAN", qtTrId("Western")},
+ {SUBTITLE_ENCODING_WINDOWS_1252, "WINDOWS-1252", qtTrId("Western")},
+
+ {SUBTITLE_ENCODING_TCVN, "TCVN", qtTrId("Vietnamese")},
+ {SUBTITLE_ENCODING_VISCII, "VISCII", qtTrId("Vietnamese")},
+ {SUBTITLE_ENCODING_WINDOWS_1258, "WINDOWS-1258", qtTrId("Vietnamese")},
+
+ {SUBTITLE_ENCODING_CURRENT_LOCALE, NULL, qtTrId("Current Locale")}
+};
+
+/******************************************************************************
+ * SubtitlesWidget implementation.
+ */
+SubtitlesWidget::SubtitlesWidget (QGraphicsWidget *parent) :
+ DcpStylableWidget (parent),
+ m_MainLayout (0),
+ m_TitleLabel (0),
+ m_AutoloadSubtitlesSwitch (0),
+ m_FontStyleLabel (0),
+ m_RegularStyleButton (0),
+ m_ItalicStyleButton (0),
+ m_BoldStyleButton (0),
+ m_SubtitlesFontSizeCombo (0),
+ m_SubtitlesEncodingCombo (0),
+ m_SubtitlesSettings (0)
+{
+ m_SubtitlesSettings = new QSettings (RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat);
+ m_SubtitlesSettings->beginGroup ("pipeline");
+
+ setContentsMargins (0.0, 0.0, 0.0, 0.0);
+
+ initWidget ();
+}
+
+SubtitlesWidget::~SubtitlesWidget ()
+{
+}
+
+bool
+SubtitlesWidget::back ()
+{
+ return true; // back is handled by main window by default
+}
+
+void
+SubtitlesWidget::initWidget ()
+{
+ MLayout *layout;
+ int index = 0;
+
+ layout = new MLayout (this);
+ m_MainLayout = new MLinearLayoutPolicy (layout, Qt::Vertical);
+ m_MainLayout->setContentsMargins (0.0, 0.0, 0.0, 0.0);
+ m_MainLayout->setSpacing (0.0);
+ setLayout (layout);
+
+ addHeaderContainer ();
+
+ addAutoloadSubtitlesContainer ();
+ addSubtitlesFontStyleContainer ();
+ addSubtitlesFontSizeContainer ();
+ addSubtitlesEncodingContainer ();
+
+ m_MainLayout->addStretch ();
+
+ bool autoload_subtitles = m_SubtitlesSettings->value ("autoload_subtitles").toBool ();
+ m_AutoloadSubtitlesSwitch->setChecked (autoload_subtitles);
+
+ QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
+ PangoFontDescription *font_desc = pango_font_description_from_string ((const char *) subtitle_font.toAscii().data());
+ if (font_desc) {
+ index = 0;
+ while (font_sizes[index] != -1) {
+ if (font_sizes[index] == (pango_font_description_get_size (font_desc) / PANGO_SCALE)) {
+ m_SubtitlesFontSizeCombo->setCurrentIndex (index);
+ break;
+ }
+ index++;
+ }
+
+ PangoStyle font_style = pango_font_description_get_style (font_desc);
+ if (font_style == PANGO_STYLE_NORMAL)
+ m_RegularStyleButton->setChecked (true);
+ else
+ m_ItalicStyleButton->setChecked (true);
+
+ PangoWeight font_weight = pango_font_description_get_weight (font_desc);
+ if (font_weight == PANGO_WEIGHT_BOLD)
+ m_BoldStyleButton->setChecked (true);
+ else
+ m_BoldStyleButton->setChecked (false);
+
+ pango_font_description_free (font_desc);
+ }
+
+ QString subtitle_encoding = m_SubtitlesSettings->value ("subtitle_encoding").toString ();
+ index = 0;
+ while (index < SUBTITLE_ENCODING_LAST) {
+ if (encodings[index].charset == subtitle_encoding) {
+ m_SubtitlesEncodingCombo->setCurrentIndex (index);
+ break;
+ }
+ index++;
+ }
+}
+
+void
+SubtitlesWidget::addHeaderContainer ()
+{
+ QGraphicsLinearLayout *layout;
+
+ Q_ASSERT (m_MainLayout);
+
+ layout = new QGraphicsLinearLayout (Qt::Horizontal);
+ layout->setContentsMargins (0.0, 0.0, 0.0, 0.0);
+
+ m_TitleLabel = new MLabel (qtTrId ("Subtitles"));
+ m_TitleLabel->setStyleName ("CommonHeaderInverted");
+ layout->addItem (m_TitleLabel);
+ layout->setAlignment (m_TitleLabel, Qt::AlignLeft);
+
+ m_MainLayout->addItem (layout);
+ m_MainLayout->setStretchFactor (layout, 0);
+}
+
+void
+SubtitlesWidget::addAutoloadSubtitlesContainer ()
+{
+ MContainer *container;
+ QGraphicsLinearLayout *layout;
+
+ Q_ASSERT (m_MainLayout);
+
+ container = new MContainer (this);
+ container->setContentsMargins (0,0,0,0);
+ container->setStyleName ("CommonLargePanelInverted");
+ container->setHeaderVisible (false);
+
+ layout = new QGraphicsLinearLayout (Qt::Horizontal);
+ layout->setContentsMargins (0,0,0,0);
+ layout->setSpacing (0);
+ container->centralWidget()->setLayout (layout);
+
+ MLabel *label = new MLabel;
+ label->setWordWrap (true);
+ label->setStyleName ("CommonSingleTitleInverted");
+ label->setText (qtTrId ("Automatically load subtitles"));
+ layout->addItem (label);
+ layout->setAlignment (label, Qt::AlignVCenter);
+
+ m_AutoloadSubtitlesSwitch = new MButton;
+ m_AutoloadSubtitlesSwitch->setCheckable (true);
+ m_AutoloadSubtitlesSwitch->setViewType (MButton::switchType);
+ m_AutoloadSubtitlesSwitch->setStyleName ("CommonRightSwitchInverted");
+
+ connect (m_AutoloadSubtitlesSwitch, SIGNAL (toggled (bool)),
+ this, SLOT (AutoloadSubtitlesToggled (bool)));
+
+ layout->addItem (m_AutoloadSubtitlesSwitch);
+ layout->setAlignment (m_AutoloadSubtitlesSwitch, Qt::AlignVCenter | Qt::AlignRight);
+
+ m_MainLayout->addItem (container);
+ m_MainLayout->setStretchFactor (container, 0);
+}
+
+void
+SubtitlesWidget::addSubtitlesFontStyleContainer ()
+{
+ MContainer *container;
+ QGraphicsLinearLayout *layout;
+ MLayout *buttonGroup;
+ MLinearLayoutPolicy *buttonGroupLayout;
+ MSeparator *spacer;
+
+ Q_ASSERT (m_MainLayout);
+
+ container = new MContainer (this);
+ container->setContentsMargins (0,0,0,0);
+ container->setStyleName ("CommonLargePanelInverted");
+ container->setHeaderVisible (false);
+
+ layout = new QGraphicsLinearLayout (Qt::Vertical);
+ layout->setContentsMargins (0, 0, 0, 0);
+ layout->setSpacing (0.0);
+ container->centralWidget()->setLayout (layout);
+
+ m_FontStyleLabel = new MLabel (qtTrId ("Font style"));
+ m_FontStyleLabel->setStyleName ("CommonTitleInverted");
+
+ layout->addItem (m_FontStyleLabel);
+ layout->setAlignment (m_FontStyleLabel, Qt::AlignLeft);
+
+ spacer = new MSeparator;
+ spacer->setStyleName ("CommonSpacer");
+ layout->addItem (spacer);
+
+ buttonGroup = new MLayout;
+ buttonGroupLayout = new MLinearLayoutPolicy (buttonGroup, Qt::Horizontal);
+ buttonGroupLayout->setNotifyWidgetsOfLayoutPositionEnabled (true);
+ buttonGroupLayout->setContentsMargins (14, 0, 14, 0);
+ buttonGroupLayout->setSpacing (0.0);
+
+ m_RegularStyleButton = new MButton ();
+ m_RegularStyleButton->setCheckable (true);
+ m_RegularStyleButton->setViewType (MButton::groupType);
+ m_RegularStyleButton->setText (font_styles[0].name);
+ buttonGroupLayout->addItem (m_RegularStyleButton);
+
+ connect (m_RegularStyleButton, SIGNAL (toggled (bool)),
+ this, SLOT (RegularStyleButtonToggled (bool)));
+
+ m_ItalicStyleButton = new MButton ();
+ m_ItalicStyleButton->setCheckable (true);
+ m_ItalicStyleButton->setViewType (MButton::groupType);
+ m_ItalicStyleButton->setText (font_styles[1].name);
+ buttonGroupLayout->addItem (m_ItalicStyleButton);
+
+ connect (m_ItalicStyleButton, SIGNAL (toggled (bool)),
+ this, SLOT (ItalicStyleButtonToggled (bool)));
+
+ m_BoldStyleButton = new MButton ();
+ m_BoldStyleButton->setCheckable (true);
+ m_BoldStyleButton->setViewType (MButton::groupType);
+ m_BoldStyleButton->setText (font_styles[2].name);
+ buttonGroupLayout->addItem (m_BoldStyleButton);
+
+ connect (m_BoldStyleButton, SIGNAL (toggled (bool)),
+ this, SLOT (BoldStyleButtonToggled (bool)));
+
+ layout->addItem (buttonGroup);
+ layout->setAlignment(buttonGroup, Qt::AlignLeft);
+
+ spacer = new MSeparator;
+ spacer->setStyleName ("CommonXLargeSpacer");
+ layout->addItem (spacer);
+
+ m_MainLayout->addItem (container);
+ m_MainLayout->setStretchFactor (container, 0);
+}
+
+void
+SubtitlesWidget::addSubtitlesFontSizeContainer ()
+{
+ int index = 0;
+
+ m_SubtitlesFontSizeCombo = new MComboBox();
+ m_SubtitlesFontSizeCombo->setTitle(qtTrId ("Font size"));
+ m_SubtitlesFontSizeCombo->setStyleName ("CommonComboBoxInverted");
+
+ while (font_sizes[index] != -1) {
+ m_SubtitlesFontSizeCombo->addItem(QString::number(font_sizes[index]));
+ index++;
+ }
+
+ connect (m_SubtitlesFontSizeCombo, SIGNAL (activated (int)),
+ this, SLOT (SubtitlesFontSizeActivated (int)));
+
+ m_MainLayout->addItem (m_SubtitlesFontSizeCombo);
+ m_MainLayout->setStretchFactor (m_SubtitlesFontSizeCombo, 0);
+}
+
+void
+SubtitlesWidget::addSubtitlesEncodingContainer ()
+{
+ int index = 0;
+
+ m_SubtitlesEncodingCombo = new MComboBox();
+ m_SubtitlesEncodingCombo->setTitle(qtTrId ("Encoding"));
+ m_SubtitlesEncodingCombo->setStyleName ("CommonComboBoxInverted");
+
+ while (index < SUBTITLE_ENCODING_LAST) {
+ if (encodings[index].charset.isNull()) {
+ m_SubtitlesEncodingCombo->addItem(encodings[index].name);
+ } else {
+ m_SubtitlesEncodingCombo->addItem(QString("%1 (%2)").arg(encodings[index].name)
+ .arg(encodings[index].charset));
+ }
+ index++;
+ }
+
+ connect (m_SubtitlesEncodingCombo, SIGNAL (activated (int)),
+ this, SLOT (SubtitlesEncodingActivated (int)));
+
+ m_MainLayout->addItem (m_SubtitlesEncodingCombo);
+ m_MainLayout->setStretchFactor (m_SubtitlesEncodingCombo, 0);
+}
+
+void
+SubtitlesWidget::retranslateUi ()
+{
+ if (m_TitleLabel)
+ m_TitleLabel->setText (qtTrId("Subtitles"));
+}
+
+void
+SubtitlesWidget::AutoloadSubtitlesToggled (bool enabled)
+{
+ m_SubtitlesSettings->setValue ("autoload_subtitles", enabled);
+}
+
+void
+SubtitlesWidget::RegularStyleButtonToggled (bool toggled)
+{
+ if (toggled) {
+ if (m_ItalicStyleButton->isChecked ())
+ m_ItalicStyleButton->setChecked (false);
+ } else {
+ m_ItalicStyleButton->setChecked (true);
+ }
+
+ QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
+ PangoFontDescription *font_desc = pango_font_description_from_string (
+ (const char *) subtitle_font.toAscii().data());
+ if (font_desc) {
+ if (toggled) {
+ pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL);
+ } else {
+ pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC);
+ }
+
+ m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
+ pango_font_description_free (font_desc);
+ }
+}
+
+void
+SubtitlesWidget::ItalicStyleButtonToggled (bool toggled)
+{
+ if (toggled) {
+ if (m_RegularStyleButton->isChecked ())
+ m_RegularStyleButton->setChecked (false);
+ } else {
+ m_RegularStyleButton->setChecked (true);
+ }
+
+ QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
+ PangoFontDescription *font_desc = pango_font_description_from_string (
+ (const char *) subtitle_font.toAscii().data());
+ if (font_desc) {
+ if (toggled) {
+ pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC);
+ } else {
+ pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL);
+ }
+
+ m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
+ pango_font_description_free (font_desc);
+ }
+}
+
+void
+SubtitlesWidget::BoldStyleButtonToggled (bool toggled)
+{
+ QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
+ PangoFontDescription *font_desc = pango_font_description_from_string (
+ (const char *) subtitle_font.toAscii().data());
+ if (font_desc) {
+ if (toggled) {
+ pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
+ } else {
+ pango_font_description_set_weight (font_desc, PANGO_WEIGHT_NORMAL);
+ }
+
+ m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
+ pango_font_description_free (font_desc);
+ }
+}
+
+void
+SubtitlesWidget::SubtitlesFontSizeActivated (int index)
+{
+ QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
+ PangoFontDescription *font_desc = pango_font_description_from_string (
+ (const char *) subtitle_font.toAscii().data());
+ if (font_desc) {
+ if (pango_font_description_get_size (font_desc) != (font_sizes[index] * PANGO_SCALE)) {
+ pango_font_description_set_size (font_desc, font_sizes[index] * PANGO_SCALE);
+ m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
+ }
+ pango_font_description_free (font_desc);
+ }
+}
+
+void
+SubtitlesWidget::SubtitlesEncodingActivated (int index)
+{
+ m_SubtitlesSettings->setValue ("subtitle_encoding", encodings[index].charset);
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+ <name></name>
+ <message id="Subtitles">
+ <location filename="../subtitlesapplet.cpp" line="64"/>
+ <location filename="../subtitleswidget.cpp" line="397"/>
+ <location filename="../subtitleswidget.cpp" line="572"/>
+ <source></source>
+ <translation>Subtitles</translation>
+ </message>
+ <message id="Regular">
+ <location filename="../subtitleswidget.cpp" line="57"/>
+ <source></source>
+ <translation>Regular</translation>
+ </message>
+ <message id="Italic">
+ <location filename="../subtitleswidget.cpp" line="58"/>
+ <source></source>
+ <translation>Italic</translation>
+ </message>
+ <message id="Bold">
+ <location filename="../subtitleswidget.cpp" line="59"/>
+ <source></source>
+ <translation>Bold</translation>
+ </message>
+ <message id="Italic Bold">
+ <location filename="../subtitleswidget.cpp" line="60"/>
+ <source></source>
+ <translation>Italic Bold</translation>
+ </message>
+ <message id="Arabic">
+ <location filename="../subtitleswidget.cpp" line="185"/>
+ <location filename="../subtitleswidget.cpp" line="186"/>
+ <location filename="../subtitleswidget.cpp" line="187"/>
+ <location filename="../subtitleswidget.cpp" line="188"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Armenian">
+ <location filename="../subtitleswidget.cpp" line="190"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Baltic">
+ <location filename="../subtitleswidget.cpp" line="192"/>
+ <location filename="../subtitleswidget.cpp" line="193"/>
+ <location filename="../subtitleswidget.cpp" line="194"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Celtic">
+ <location filename="../subtitleswidget.cpp" line="196"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Central European">
+ <location filename="../subtitleswidget.cpp" line="198"/>
+ <location filename="../subtitleswidget.cpp" line="199"/>
+ <location filename="../subtitleswidget.cpp" line="200"/>
+ <location filename="../subtitleswidget.cpp" line="201"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Chinese Simplified">
+ <location filename="../subtitleswidget.cpp" line="203"/>
+ <location filename="../subtitleswidget.cpp" line="204"/>
+ <location filename="../subtitleswidget.cpp" line="205"/>
+ <location filename="../subtitleswidget.cpp" line="206"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Chinese Traditional">
+ <location filename="../subtitleswidget.cpp" line="208"/>
+ <location filename="../subtitleswidget.cpp" line="209"/>
+ <location filename="../subtitleswidget.cpp" line="210"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Croatian">
+ <location filename="../subtitleswidget.cpp" line="212"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Cyrillic">
+ <location filename="../subtitleswidget.cpp" line="214"/>
+ <location filename="../subtitleswidget.cpp" line="215"/>
+ <location filename="../subtitleswidget.cpp" line="216"/>
+ <location filename="../subtitleswidget.cpp" line="217"/>
+ <location filename="../subtitleswidget.cpp" line="218"/>
+ <location filename="../subtitleswidget.cpp" line="219"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Cyrillic/Russian">
+ <location filename="../subtitleswidget.cpp" line="221"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Cyrillic/Ukrainian">
+ <location filename="../subtitleswidget.cpp" line="223"/>
+ <location filename="../subtitleswidget.cpp" line="224"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Georgian">
+ <location filename="../subtitleswidget.cpp" line="226"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Greek">
+ <location filename="../subtitleswidget.cpp" line="228"/>
+ <location filename="../subtitleswidget.cpp" line="229"/>
+ <location filename="../subtitleswidget.cpp" line="230"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Gujarati">
+ <location filename="../subtitleswidget.cpp" line="232"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Gurmukhi">
+ <location filename="../subtitleswidget.cpp" line="234"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Hebrew">
+ <location filename="../subtitleswidget.cpp" line="236"/>
+ <location filename="../subtitleswidget.cpp" line="237"/>
+ <location filename="../subtitleswidget.cpp" line="238"/>
+ <location filename="../subtitleswidget.cpp" line="239"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Hebrew Visual">
+ <location filename="../subtitleswidget.cpp" line="241"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Hindi">
+ <location filename="../subtitleswidget.cpp" line="243"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Icelandic">
+ <location filename="../subtitleswidget.cpp" line="245"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Japanese">
+ <location filename="../subtitleswidget.cpp" line="247"/>
+ <location filename="../subtitleswidget.cpp" line="248"/>
+ <location filename="../subtitleswidget.cpp" line="249"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Korean">
+ <location filename="../subtitleswidget.cpp" line="251"/>
+ <location filename="../subtitleswidget.cpp" line="252"/>
+ <location filename="../subtitleswidget.cpp" line="253"/>
+ <location filename="../subtitleswidget.cpp" line="254"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Nordic">
+ <location filename="../subtitleswidget.cpp" line="256"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Persian">
+ <location filename="../subtitleswidget.cpp" line="258"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Romanian">
+ <location filename="../subtitleswidget.cpp" line="260"/>
+ <location filename="../subtitleswidget.cpp" line="261"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="South European">
+ <location filename="../subtitleswidget.cpp" line="263"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Thai">
+ <location filename="../subtitleswidget.cpp" line="265"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Turkish">
+ <location filename="../subtitleswidget.cpp" line="267"/>
+ <location filename="../subtitleswidget.cpp" line="268"/>
+ <location filename="../subtitleswidget.cpp" line="269"/>
+ <location filename="../subtitleswidget.cpp" line="270"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Unicode">
+ <location filename="../subtitleswidget.cpp" line="272"/>
+ <location filename="../subtitleswidget.cpp" line="273"/>
+ <location filename="../subtitleswidget.cpp" line="274"/>
+ <location filename="../subtitleswidget.cpp" line="275"/>
+ <location filename="../subtitleswidget.cpp" line="276"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Western">
+ <location filename="../subtitleswidget.cpp" line="278"/>
+ <location filename="../subtitleswidget.cpp" line="279"/>
+ <location filename="../subtitleswidget.cpp" line="280"/>
+ <location filename="../subtitleswidget.cpp" line="281"/>
+ <location filename="../subtitleswidget.cpp" line="282"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Vietnamese">
+ <location filename="../subtitleswidget.cpp" line="284"/>
+ <location filename="../subtitleswidget.cpp" line="285"/>
+ <location filename="../subtitleswidget.cpp" line="286"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Current Locale">
+ <location filename="../subtitleswidget.cpp" line="288"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Automatically load subtitles">
+ <location filename="../subtitleswidget.cpp" line="427"/>
+ <source></source>
+ <translation>Automatically load subtitles</translation>
+ </message>
+ <message id="Font style">
+ <location filename="../subtitleswidget.cpp" line="467"/>
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="Font size">
+ <location filename="../subtitleswidget.cpp" line="527"/>
+ <source></source>
+ <translation>Font size</translation>
+ </message>
+ <message id="Encoding">
+ <location filename="../subtitleswidget.cpp" line="548"/>
+ <source></source>
+ <translation>Encoding</translation>
+ </message>
+</context>
+</TS>