1 /****************************************************************************+
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (directui@nokia.com)
7 ** This file is part of meegotouch-controlpanelapplets.
9 ** If you have questions regarding the use of this file, please contact
10 ** Nokia at directui@nokia.com.
12 ** This library is free software; you can redistribute it and/or
13 ** modify it under the terms of the GNU Lesser General Public
14 ** License version 2.1 as published by the Free Software Foundation
15 ** and appearing in the file LICENSE.LGPL included in the packaging
18 ****************************************************************************/
19 #include "subtitleswidget.h"
20 #include "dcpsubtitles.h"
22 #include <QGraphicsLinearLayout>
26 #include <MStylableWidget>
28 #include <MLinearLayoutPolicy>
35 #include <MWidgetCreator>
36 M_REGISTER_WIDGET_NO_CREATE (SubtitlesWidget);
38 #include <pango/pango-font.h>
40 const QString RENDERER_PLUGIN_CONFIG_FILE = "/usr/share/qmafw/mafw-gst-renderer-plugin.conf";
47 FONT_STYLE_ITALIC_BOLD,
56 static FontStyle font_styles[] = {
57 {FONT_STYLE_REGULAR, qtTrId("Regular")},
58 {FONT_STYLE_ITALIC, qtTrId("Italic")},
59 {FONT_STYLE_BOLD, qtTrId("Bold")},
60 {FONT_STYLE_ITALIC_BOLD, qtTrId("Italic Bold")},
63 static const int font_sizes[] =
65 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, -1
70 SUBTITLE_ENCODING_ISO_8859_6,
71 SUBTITLE_ENCODING_IBM_864,
72 SUBTITLE_ENCODING_MAC_ARABIC,
73 SUBTITLE_ENCODING_WINDOWS_1256,
75 SUBTITLE_ENCODING_ARMSCII_8,
77 SUBTITLE_ENCODING_ISO_8859_4,
78 SUBTITLE_ENCODING_ISO_8859_13,
79 SUBTITLE_ENCODING_WINDOWS_1257,
81 SUBTITLE_ENCODING_ISO_8859_14,
83 SUBTITLE_ENCODING_ISO_8859_2,
84 SUBTITLE_ENCODING_IBM_852,
85 SUBTITLE_ENCODING_MAC_CE,
86 SUBTITLE_ENCODING_WINDOWS_1250,
88 SUBTITLE_ENCODING_GB18030,
89 SUBTITLE_ENCODING_GB2312,
90 SUBTITLE_ENCODING_GBK,
93 SUBTITLE_ENCODING_BIG5,
94 SUBTITLE_ENCODING_BIG5_HKSCS,
95 SUBTITLE_ENCODING_EUC_TW,
97 SUBTITLE_ENCODING_MAC_CROATIAN,
99 SUBTITLE_ENCODING_ISO_8859_5,
100 SUBTITLE_ENCODING_IBM_855,
101 SUBTITLE_ENCODING_ISO_IR_111,
102 SUBTITLE_ENCODING_KOI8_R,
103 SUBTITLE_ENCODING_MAC_CYRILLIC,
104 SUBTITLE_ENCODING_WINDOWS_1251,
106 SUBTITLE_ENCODING_CP_866,
108 SUBTITLE_ENCODING_MAC_UKRAINIAN,
109 SUBTITLE_ENCODING_KOI8_U,
111 SUBTITLE_ENCODING_GEOSTD8,
113 SUBTITLE_ENCODING_ISO_8859_7,
114 SUBTITLE_ENCODING_MAC_GREEK,
115 SUBTITLE_ENCODING_WINDOWS_1253,
117 SUBTITLE_ENCODING_MAC_GUJARATI,
119 SUBTITLE_ENCODING_MAC_GURMUKHI,
121 SUBTITLE_ENCODING_ISO_8859_8_I,
122 SUBTITLE_ENCODING_IBM_862,
123 SUBTITLE_ENCODING_MAC_HEBREW,
124 SUBTITLE_ENCODING_WINDOWS_1255,
126 SUBTITLE_ENCODING_ISO_8859_8,
128 SUBTITLE_ENCODING_MAC_DEVANAGARI,
130 SUBTITLE_ENCODING_MAC_ICELANDIC,
132 SUBTITLE_ENCODING_EUC_JP,
133 SUBTITLE_ENCODING_ISO_2022_JP,
134 SUBTITLE_ENCODING_SHIFT_JIS,
136 SUBTITLE_ENCODING_EUC_KR,
137 SUBTITLE_ENCODING_ISO_2022_KR,
138 SUBTITLE_ENCODING_JOHAB,
139 SUBTITLE_ENCODING_UHC,
141 SUBTITLE_ENCODING_ISO_8859_10,
143 SUBTITLE_ENCODING_MAC_FARSI,
145 SUBTITLE_ENCODING_ISO_8859_16,
146 SUBTITLE_ENCODING_MAC_ROMANIAN,
148 SUBTITLE_ENCODING_ISO_8859_3,
150 SUBTITLE_ENCODING_TIS_620,
152 SUBTITLE_ENCODING_ISO_8859_9,
153 SUBTITLE_ENCODING_IBM_857,
154 SUBTITLE_ENCODING_MAC_TURKISH,
155 SUBTITLE_ENCODING_WINDOWS_1254,
157 SUBTITLE_ENCODING_UTF_7,
158 SUBTITLE_ENCODING_UTF_8,
159 SUBTITLE_ENCODING_UTF_16,
160 SUBTITLE_ENCODING_UCS_2,
161 SUBTITLE_ENCODING_UCS_4,
163 SUBTITLE_ENCODING_ISO_8859_1,
164 SUBTITLE_ENCODING_ISO_8859_15,
165 SUBTITLE_ENCODING_IBM_850,
166 SUBTITLE_ENCODING_MAC_ROMAN,
167 SUBTITLE_ENCODING_WINDOWS_1252,
169 SUBTITLE_ENCODING_TCVN,
170 SUBTITLE_ENCODING_VISCII,
171 SUBTITLE_ENCODING_WINDOWS_1258,
173 SUBTITLE_ENCODING_CURRENT_LOCALE,
175 SUBTITLE_ENCODING_LAST
176 } SubtitleEncodingIndex;
180 const QString charset;
184 static SubtitleEncoding encodings[] = {
185 {SUBTITLE_ENCODING_ISO_8859_6, "ISO-8859-6", qtTrId("Arabic")},
186 {SUBTITLE_ENCODING_IBM_864, "IBM864", qtTrId("Arabic")},
187 {SUBTITLE_ENCODING_MAC_ARABIC, "MAC_ARABIC", qtTrId("Arabic")},
188 {SUBTITLE_ENCODING_WINDOWS_1256, "WINDOWS-1256", qtTrId("Arabic")},
190 {SUBTITLE_ENCODING_ARMSCII_8, "ARMSCII-8", qtTrId("Armenian")},
192 {SUBTITLE_ENCODING_ISO_8859_4, "ISO-8859-4", qtTrId("Baltic")},
193 {SUBTITLE_ENCODING_ISO_8859_13, "ISO-8859-13", qtTrId("Baltic")},
194 {SUBTITLE_ENCODING_WINDOWS_1257, "WINDOWS-1257", qtTrId("Baltic")},
196 {SUBTITLE_ENCODING_ISO_8859_14, "ISO-8859-14", qtTrId("Celtic")},
198 {SUBTITLE_ENCODING_ISO_8859_2, "ISO-8859-2", qtTrId("Central European")},
199 {SUBTITLE_ENCODING_IBM_852, "IBM852", qtTrId("Central European")},
200 {SUBTITLE_ENCODING_MAC_CE, "MAC_CE", qtTrId("Central European")},
201 {SUBTITLE_ENCODING_WINDOWS_1250, "WINDOWS-1250", qtTrId("Central European")},
203 {SUBTITLE_ENCODING_GB18030, "GB18030", qtTrId("Chinese Simplified")},
204 {SUBTITLE_ENCODING_GB2312, "GB2312", qtTrId("Chinese Simplified")},
205 {SUBTITLE_ENCODING_GBK, "GBK", qtTrId("Chinese Simplified")},
206 {SUBTITLE_ENCODING_HZ, "HZ", qtTrId("Chinese Simplified")},
208 {SUBTITLE_ENCODING_BIG5, "BIG5", qtTrId("Chinese Traditional")},
209 {SUBTITLE_ENCODING_BIG5_HKSCS, "BIG5-HKSCS", qtTrId("Chinese Traditional")},
210 {SUBTITLE_ENCODING_EUC_TW, "EUC-TW", qtTrId("Chinese Traditional")},
212 {SUBTITLE_ENCODING_MAC_CROATIAN, "MAC_CROATIAN", qtTrId("Croatian")},
214 {SUBTITLE_ENCODING_ISO_8859_5, "ISO-8859-5", qtTrId("Cyrillic")},
215 {SUBTITLE_ENCODING_IBM_855, "IBM855", qtTrId("Cyrillic")},
216 {SUBTITLE_ENCODING_ISO_IR_111, "ISO-IR-111", qtTrId("Cyrillic")},
217 {SUBTITLE_ENCODING_KOI8_R, "KOI8-R", qtTrId("Cyrillic")},
218 {SUBTITLE_ENCODING_MAC_CYRILLIC, "MAC-CYRILLIC", qtTrId("Cyrillic")},
219 {SUBTITLE_ENCODING_WINDOWS_1251, "WINDOWS-1251", qtTrId("Cyrillic")},
221 {SUBTITLE_ENCODING_CP_866, "CP866", qtTrId("Cyrillic/Russian")},
223 {SUBTITLE_ENCODING_MAC_UKRAINIAN, "MAC_UKRAINIAN", qtTrId("Cyrillic/Ukrainian")},
224 {SUBTITLE_ENCODING_KOI8_U, "KOI8-U", qtTrId("Cyrillic/Ukrainian")},
226 {SUBTITLE_ENCODING_GEOSTD8, "GEORGIAN-PS", qtTrId("Georgian")},
228 {SUBTITLE_ENCODING_ISO_8859_7, "ISO-8859-7", qtTrId("Greek")},
229 {SUBTITLE_ENCODING_MAC_GREEK, "MAC_GREEK", qtTrId("Greek")},
230 {SUBTITLE_ENCODING_WINDOWS_1253, "WINDOWS-1253", qtTrId("Greek")},
232 {SUBTITLE_ENCODING_MAC_GUJARATI, "MAC_GUJARATI", qtTrId("Gujarati")},
234 {SUBTITLE_ENCODING_MAC_GURMUKHI, "MAC_GURMUKHI", qtTrId("Gurmukhi")},
236 {SUBTITLE_ENCODING_ISO_8859_8_I, "ISO-8859-8-I", qtTrId("Hebrew")},
237 {SUBTITLE_ENCODING_IBM_862, "IBM862", qtTrId("Hebrew")},
238 {SUBTITLE_ENCODING_MAC_HEBREW, "MAC_HEBREW", qtTrId("Hebrew")},
239 {SUBTITLE_ENCODING_WINDOWS_1255, "WINDOWS-1255", qtTrId("Hebrew")},
241 {SUBTITLE_ENCODING_ISO_8859_8, "ISO-8859-8", qtTrId("Hebrew Visual")},
243 {SUBTITLE_ENCODING_MAC_DEVANAGARI, "MAC_DEVANAGARI", qtTrId("Hindi")},
245 {SUBTITLE_ENCODING_MAC_ICELANDIC, "MAC_ICELANDIC", qtTrId("Icelandic")},
247 {SUBTITLE_ENCODING_EUC_JP, "EUC-JP", qtTrId("Japanese")},
248 {SUBTITLE_ENCODING_ISO_2022_JP, "ISO2022JP", qtTrId("Japanese")},
249 {SUBTITLE_ENCODING_SHIFT_JIS, "SHIFT-JIS", qtTrId("Japanese")},
251 {SUBTITLE_ENCODING_EUC_KR, "EUC-KR", qtTrId("Korean")},
252 {SUBTITLE_ENCODING_ISO_2022_KR, "ISO2022KR", qtTrId("Korean")},
253 {SUBTITLE_ENCODING_JOHAB, "JOHAB", qtTrId("Korean")},
254 {SUBTITLE_ENCODING_UHC, "UHC", qtTrId("Korean")},
256 {SUBTITLE_ENCODING_ISO_8859_10, "ISO-8859-10", qtTrId("Nordic")},
258 {SUBTITLE_ENCODING_MAC_FARSI, "MAC_FARSI", qtTrId("Persian")},
260 {SUBTITLE_ENCODING_ISO_8859_16, "ISO-8859-16", qtTrId("Romanian")},
261 {SUBTITLE_ENCODING_MAC_ROMANIAN, "MAC_ROMANIAN", qtTrId("Romanian")},
263 {SUBTITLE_ENCODING_ISO_8859_3, "ISO-8859-3", qtTrId("South European")},
265 {SUBTITLE_ENCODING_TIS_620, "TIS-620", qtTrId("Thai")},
267 {SUBTITLE_ENCODING_ISO_8859_9, "ISO-8859-9", qtTrId("Turkish")},
268 {SUBTITLE_ENCODING_IBM_857, "IBM857", qtTrId("Turkish")},
269 {SUBTITLE_ENCODING_MAC_TURKISH, "MAC_TURKISH", qtTrId("Turkish")},
270 {SUBTITLE_ENCODING_WINDOWS_1254, "WINDOWS-1254", qtTrId("Turkish")},
272 {SUBTITLE_ENCODING_UTF_7, "UTF-7", qtTrId("Unicode")},
273 {SUBTITLE_ENCODING_UTF_8, "UTF-8", qtTrId("Unicode")},
274 {SUBTITLE_ENCODING_UTF_16, "UTF-16", qtTrId("Unicode")},
275 {SUBTITLE_ENCODING_UCS_2, "UCS-2", qtTrId("Unicode")},
276 {SUBTITLE_ENCODING_UCS_4, "UCS-4", qtTrId("Unicode")},
278 {SUBTITLE_ENCODING_ISO_8859_1, "ISO-8859-1", qtTrId("Western")},
279 {SUBTITLE_ENCODING_ISO_8859_15, "ISO-8859-15", qtTrId("Western")},
280 {SUBTITLE_ENCODING_IBM_850, "IBM850", qtTrId("Western")},
281 {SUBTITLE_ENCODING_MAC_ROMAN, "MAC_ROMAN", qtTrId("Western")},
282 {SUBTITLE_ENCODING_WINDOWS_1252, "WINDOWS-1252", qtTrId("Western")},
284 {SUBTITLE_ENCODING_TCVN, "TCVN", qtTrId("Vietnamese")},
285 {SUBTITLE_ENCODING_VISCII, "VISCII", qtTrId("Vietnamese")},
286 {SUBTITLE_ENCODING_WINDOWS_1258, "WINDOWS-1258", qtTrId("Vietnamese")},
288 {SUBTITLE_ENCODING_CURRENT_LOCALE, NULL, qtTrId("Current Locale")}
291 /******************************************************************************
292 * SubtitlesWidget implementation.
294 SubtitlesWidget::SubtitlesWidget (QGraphicsWidget *parent) :
295 DcpStylableWidget (parent),
298 m_AutoloadSubtitlesSwitch (0),
299 m_FontStyleLabel (0),
300 m_RegularStyleButton (0),
301 m_ItalicStyleButton (0),
302 m_BoldStyleButton (0),
303 m_SubtitlesFontSizeCombo (0),
304 m_SubtitlesEncodingCombo (0),
305 m_SubtitlesSettings (0)
307 m_SubtitlesSettings = new QSettings (RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat);
308 m_SubtitlesSettings->beginGroup ("pipeline");
310 setContentsMargins (0.0, 0.0, 0.0, 0.0);
315 SubtitlesWidget::~SubtitlesWidget ()
320 SubtitlesWidget::back ()
322 return true; // back is handled by main window by default
326 SubtitlesWidget::initWidget ()
331 layout = new MLayout (this);
332 m_MainLayout = new MLinearLayoutPolicy (layout, Qt::Vertical);
333 m_MainLayout->setContentsMargins (0.0, 0.0, 0.0, 0.0);
334 m_MainLayout->setSpacing (0.0);
337 addHeaderContainer ();
339 addAutoloadSubtitlesContainer ();
340 addSubtitlesFontStyleContainer ();
341 addSubtitlesFontSizeContainer ();
342 addSubtitlesEncodingContainer ();
344 m_MainLayout->addStretch ();
346 bool autoload_subtitles = m_SubtitlesSettings->value ("autoload_subtitles").toBool ();
347 m_AutoloadSubtitlesSwitch->setChecked (autoload_subtitles);
349 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
350 PangoFontDescription *font_desc = pango_font_description_from_string ((const char *) subtitle_font.toAscii().data());
353 while (font_sizes[index] != -1) {
354 if (font_sizes[index] == (pango_font_description_get_size (font_desc) / PANGO_SCALE)) {
355 m_SubtitlesFontSizeCombo->setCurrentIndex (index);
361 PangoStyle font_style = pango_font_description_get_style (font_desc);
362 if (font_style == PANGO_STYLE_NORMAL)
363 m_RegularStyleButton->setChecked (true);
365 m_ItalicStyleButton->setChecked (true);
367 PangoWeight font_weight = pango_font_description_get_weight (font_desc);
368 if (font_weight == PANGO_WEIGHT_BOLD)
369 m_BoldStyleButton->setChecked (true);
371 m_BoldStyleButton->setChecked (false);
373 pango_font_description_free (font_desc);
376 QString subtitle_encoding = m_SubtitlesSettings->value ("subtitle_encoding").toString ();
378 while (index < SUBTITLE_ENCODING_LAST) {
379 if (encodings[index].charset == subtitle_encoding) {
380 m_SubtitlesEncodingCombo->setCurrentIndex (index);
388 SubtitlesWidget::addHeaderContainer ()
390 QGraphicsLinearLayout *layout;
392 Q_ASSERT (m_MainLayout);
394 layout = new QGraphicsLinearLayout (Qt::Horizontal);
395 layout->setContentsMargins (0.0, 0.0, 0.0, 0.0);
397 m_TitleLabel = new MLabel (qtTrId ("Subtitles"));
398 m_TitleLabel->setStyleName ("CommonHeaderInverted");
399 layout->addItem (m_TitleLabel);
400 layout->setAlignment (m_TitleLabel, Qt::AlignLeft);
402 m_MainLayout->addItem (layout);
403 m_MainLayout->setStretchFactor (layout, 0);
407 SubtitlesWidget::addAutoloadSubtitlesContainer ()
409 MContainer *container;
410 QGraphicsLinearLayout *layout;
412 Q_ASSERT (m_MainLayout);
414 container = new MContainer (this);
415 container->setContentsMargins (0,0,0,0);
416 container->setStyleName ("CommonLargePanelInverted");
417 container->setHeaderVisible (false);
419 layout = new QGraphicsLinearLayout (Qt::Horizontal);
420 layout->setContentsMargins (0,0,0,0);
421 layout->setSpacing (0);
422 container->centralWidget()->setLayout (layout);
424 MLabel *label = new MLabel;
425 label->setWordWrap (true);
426 label->setStyleName ("CommonSingleTitleInverted");
427 label->setText (qtTrId ("Automatically load subtitles"));
428 layout->addItem (label);
429 layout->setAlignment (label, Qt::AlignVCenter);
431 m_AutoloadSubtitlesSwitch = new MButton;
432 m_AutoloadSubtitlesSwitch->setCheckable (true);
433 m_AutoloadSubtitlesSwitch->setViewType (MButton::switchType);
434 m_AutoloadSubtitlesSwitch->setStyleName ("CommonRightSwitchInverted");
436 connect (m_AutoloadSubtitlesSwitch, SIGNAL (toggled (bool)),
437 this, SLOT (AutoloadSubtitlesToggled (bool)));
439 layout->addItem (m_AutoloadSubtitlesSwitch);
440 layout->setAlignment (m_AutoloadSubtitlesSwitch, Qt::AlignVCenter | Qt::AlignRight);
442 m_MainLayout->addItem (container);
443 m_MainLayout->setStretchFactor (container, 0);
447 SubtitlesWidget::addSubtitlesFontStyleContainer ()
449 MContainer *container;
450 QGraphicsLinearLayout *layout;
451 MLayout *buttonGroup;
452 MLinearLayoutPolicy *buttonGroupLayout;
455 Q_ASSERT (m_MainLayout);
457 container = new MContainer (this);
458 container->setContentsMargins (0,0,0,0);
459 container->setStyleName ("CommonLargePanelInverted");
460 container->setHeaderVisible (false);
462 layout = new QGraphicsLinearLayout (Qt::Vertical);
463 layout->setContentsMargins (0, 0, 0, 0);
464 layout->setSpacing (0.0);
465 container->centralWidget()->setLayout (layout);
467 m_FontStyleLabel = new MLabel (qtTrId ("Font style"));
468 m_FontStyleLabel->setStyleName ("CommonTitleInverted");
470 layout->addItem (m_FontStyleLabel);
471 layout->setAlignment (m_FontStyleLabel, Qt::AlignLeft);
473 spacer = new MSeparator;
474 spacer->setStyleName ("CommonSpacer");
475 layout->addItem (spacer);
477 buttonGroup = new MLayout;
478 buttonGroupLayout = new MLinearLayoutPolicy (buttonGroup, Qt::Horizontal);
479 buttonGroupLayout->setNotifyWidgetsOfLayoutPositionEnabled (true);
480 buttonGroupLayout->setContentsMargins (14, 0, 14, 0);
481 buttonGroupLayout->setSpacing (0.0);
483 m_RegularStyleButton = new MButton ();
484 m_RegularStyleButton->setCheckable (true);
485 m_RegularStyleButton->setViewType (MButton::groupType);
486 m_RegularStyleButton->setText (font_styles[0].name);
487 buttonGroupLayout->addItem (m_RegularStyleButton);
489 connect (m_RegularStyleButton, SIGNAL (toggled (bool)),
490 this, SLOT (RegularStyleButtonToggled (bool)));
492 m_ItalicStyleButton = new MButton ();
493 m_ItalicStyleButton->setCheckable (true);
494 m_ItalicStyleButton->setViewType (MButton::groupType);
495 m_ItalicStyleButton->setText (font_styles[1].name);
496 buttonGroupLayout->addItem (m_ItalicStyleButton);
498 connect (m_ItalicStyleButton, SIGNAL (toggled (bool)),
499 this, SLOT (ItalicStyleButtonToggled (bool)));
501 m_BoldStyleButton = new MButton ();
502 m_BoldStyleButton->setCheckable (true);
503 m_BoldStyleButton->setViewType (MButton::groupType);
504 m_BoldStyleButton->setText (font_styles[2].name);
505 buttonGroupLayout->addItem (m_BoldStyleButton);
507 connect (m_BoldStyleButton, SIGNAL (toggled (bool)),
508 this, SLOT (BoldStyleButtonToggled (bool)));
510 layout->addItem (buttonGroup);
511 layout->setAlignment(buttonGroup, Qt::AlignLeft);
513 spacer = new MSeparator;
514 spacer->setStyleName ("CommonXLargeSpacer");
515 layout->addItem (spacer);
517 m_MainLayout->addItem (container);
518 m_MainLayout->setStretchFactor (container, 0);
522 SubtitlesWidget::addSubtitlesFontSizeContainer ()
526 m_SubtitlesFontSizeCombo = new MComboBox();
527 m_SubtitlesFontSizeCombo->setTitle(qtTrId ("Font size"));
528 m_SubtitlesFontSizeCombo->setStyleName ("CommonComboBoxInverted");
530 while (font_sizes[index] != -1) {
531 m_SubtitlesFontSizeCombo->addItem(QString::number(font_sizes[index]));
535 connect (m_SubtitlesFontSizeCombo, SIGNAL (activated (int)),
536 this, SLOT (SubtitlesFontSizeActivated (int)));
538 m_MainLayout->addItem (m_SubtitlesFontSizeCombo);
539 m_MainLayout->setStretchFactor (m_SubtitlesFontSizeCombo, 0);
543 SubtitlesWidget::addSubtitlesEncodingContainer ()
547 m_SubtitlesEncodingCombo = new MComboBox();
548 m_SubtitlesEncodingCombo->setTitle(qtTrId ("Encoding"));
549 m_SubtitlesEncodingCombo->setStyleName ("CommonComboBoxInverted");
551 while (index < SUBTITLE_ENCODING_LAST) {
552 if (encodings[index].charset.isNull()) {
553 m_SubtitlesEncodingCombo->addItem(encodings[index].name);
555 m_SubtitlesEncodingCombo->addItem(QString("%1 (%2)").arg(encodings[index].name)
556 .arg(encodings[index].charset));
561 connect (m_SubtitlesEncodingCombo, SIGNAL (activated (int)),
562 this, SLOT (SubtitlesEncodingActivated (int)));
564 m_MainLayout->addItem (m_SubtitlesEncodingCombo);
565 m_MainLayout->setStretchFactor (m_SubtitlesEncodingCombo, 0);
569 SubtitlesWidget::retranslateUi ()
572 m_TitleLabel->setText (qtTrId("Subtitles"));
576 SubtitlesWidget::AutoloadSubtitlesToggled (bool enabled)
578 m_SubtitlesSettings->setValue ("autoload_subtitles", enabled);
582 SubtitlesWidget::RegularStyleButtonToggled (bool toggled)
585 if (m_ItalicStyleButton->isChecked ())
586 m_ItalicStyleButton->setChecked (false);
588 m_ItalicStyleButton->setChecked (true);
591 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
592 PangoFontDescription *font_desc = pango_font_description_from_string (
593 (const char *) subtitle_font.toAscii().data());
596 pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL);
598 pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC);
601 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
602 pango_font_description_free (font_desc);
607 SubtitlesWidget::ItalicStyleButtonToggled (bool toggled)
610 if (m_RegularStyleButton->isChecked ())
611 m_RegularStyleButton->setChecked (false);
613 m_RegularStyleButton->setChecked (true);
616 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
617 PangoFontDescription *font_desc = pango_font_description_from_string (
618 (const char *) subtitle_font.toAscii().data());
621 pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC);
623 pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL);
626 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
627 pango_font_description_free (font_desc);
632 SubtitlesWidget::BoldStyleButtonToggled (bool toggled)
634 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
635 PangoFontDescription *font_desc = pango_font_description_from_string (
636 (const char *) subtitle_font.toAscii().data());
639 pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
641 pango_font_description_set_weight (font_desc, PANGO_WEIGHT_NORMAL);
644 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
645 pango_font_description_free (font_desc);
650 SubtitlesWidget::SubtitlesFontSizeActivated (int index)
652 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
653 PangoFontDescription *font_desc = pango_font_description_from_string (
654 (const char *) subtitle_font.toAscii().data());
656 if (pango_font_description_get_size (font_desc) != (font_sizes[index] * PANGO_SCALE)) {
657 pango_font_description_set_size (font_desc, font_sizes[index] * PANGO_SCALE);
658 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
660 pango_font_description_free (font_desc);
665 SubtitlesWidget::SubtitlesEncodingActivated (int index)
667 m_SubtitlesSettings->setValue ("subtitle_encoding", encodings[index].charset);