2 * Subtitles control panel applet.
3 * Copyright (C) 2011 Roman Moravcik
5 * encodings structure imported from totem-subtitle-encoding.c
6 * Copyright (C) 2001-2006 Bastien Nocera <hadess@hadess.net>
8 * Based on Battery applet from meegotouch-controlpanelapplets
9 * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 #include "subtitleswidget.h"
28 #include <QGraphicsLinearLayout>
34 #include <MWidgetCreator>
35 M_REGISTER_WIDGET_NO_CREATE (SubtitlesWidget);
37 #include <pango/pango-font.h>
39 const QString RENDERER_PLUGIN_CONFIG_FILE = "/usr/share/qmafw/mafw-gst-renderer-plugin.conf";
46 FONT_STYLE_ITALIC_BOLD,
55 static FontStyle font_styles[] = {
56 {FONT_STYLE_REGULAR, qtTrId ("Regular")},
57 {FONT_STYLE_ITALIC, qtTrId ("Italic")},
58 {FONT_STYLE_BOLD, qtTrId ("Bold")},
59 {FONT_STYLE_ITALIC_BOLD, qtTrId ("Italic Bold")},
62 static const int font_sizes[] =
64 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, -1
69 SUBTITLE_ENCODING_ISO_8859_6,
70 SUBTITLE_ENCODING_IBM_864,
71 SUBTITLE_ENCODING_MAC_ARABIC,
72 SUBTITLE_ENCODING_WINDOWS_1256,
74 SUBTITLE_ENCODING_ARMSCII_8,
76 SUBTITLE_ENCODING_ISO_8859_4,
77 SUBTITLE_ENCODING_ISO_8859_13,
78 SUBTITLE_ENCODING_WINDOWS_1257,
80 SUBTITLE_ENCODING_ISO_8859_14,
82 SUBTITLE_ENCODING_ISO_8859_2,
83 SUBTITLE_ENCODING_IBM_852,
84 SUBTITLE_ENCODING_MAC_CE,
85 SUBTITLE_ENCODING_WINDOWS_1250,
87 SUBTITLE_ENCODING_GB18030,
88 SUBTITLE_ENCODING_GB2312,
89 SUBTITLE_ENCODING_GBK,
92 SUBTITLE_ENCODING_BIG5,
93 SUBTITLE_ENCODING_BIG5_HKSCS,
94 SUBTITLE_ENCODING_EUC_TW,
96 SUBTITLE_ENCODING_MAC_CROATIAN,
98 SUBTITLE_ENCODING_ISO_8859_5,
99 SUBTITLE_ENCODING_IBM_855,
100 SUBTITLE_ENCODING_ISO_IR_111,
101 SUBTITLE_ENCODING_KOI8_R,
102 SUBTITLE_ENCODING_MAC_CYRILLIC,
103 SUBTITLE_ENCODING_WINDOWS_1251,
105 SUBTITLE_ENCODING_CP_866,
107 SUBTITLE_ENCODING_MAC_UKRAINIAN,
108 SUBTITLE_ENCODING_KOI8_U,
110 SUBTITLE_ENCODING_GEOSTD8,
112 SUBTITLE_ENCODING_ISO_8859_7,
113 SUBTITLE_ENCODING_MAC_GREEK,
114 SUBTITLE_ENCODING_WINDOWS_1253,
116 SUBTITLE_ENCODING_MAC_GUJARATI,
118 SUBTITLE_ENCODING_MAC_GURMUKHI,
120 SUBTITLE_ENCODING_ISO_8859_8_I,
121 SUBTITLE_ENCODING_IBM_862,
122 SUBTITLE_ENCODING_MAC_HEBREW,
123 SUBTITLE_ENCODING_WINDOWS_1255,
125 SUBTITLE_ENCODING_ISO_8859_8,
127 SUBTITLE_ENCODING_MAC_DEVANAGARI,
129 SUBTITLE_ENCODING_MAC_ICELANDIC,
131 SUBTITLE_ENCODING_EUC_JP,
132 SUBTITLE_ENCODING_ISO_2022_JP,
133 SUBTITLE_ENCODING_SHIFT_JIS,
135 SUBTITLE_ENCODING_EUC_KR,
136 SUBTITLE_ENCODING_ISO_2022_KR,
137 SUBTITLE_ENCODING_JOHAB,
138 SUBTITLE_ENCODING_UHC,
140 SUBTITLE_ENCODING_ISO_8859_10,
142 SUBTITLE_ENCODING_MAC_FARSI,
144 SUBTITLE_ENCODING_ISO_8859_16,
145 SUBTITLE_ENCODING_MAC_ROMANIAN,
147 SUBTITLE_ENCODING_ISO_8859_3,
149 SUBTITLE_ENCODING_TIS_620,
151 SUBTITLE_ENCODING_ISO_8859_9,
152 SUBTITLE_ENCODING_IBM_857,
153 SUBTITLE_ENCODING_MAC_TURKISH,
154 SUBTITLE_ENCODING_WINDOWS_1254,
156 SUBTITLE_ENCODING_UTF_7,
157 SUBTITLE_ENCODING_UTF_8,
158 SUBTITLE_ENCODING_UTF_16,
159 SUBTITLE_ENCODING_UCS_2,
160 SUBTITLE_ENCODING_UCS_4,
162 SUBTITLE_ENCODING_ISO_8859_1,
163 SUBTITLE_ENCODING_ISO_8859_15,
164 SUBTITLE_ENCODING_IBM_850,
165 SUBTITLE_ENCODING_MAC_ROMAN,
166 SUBTITLE_ENCODING_WINDOWS_1252,
168 SUBTITLE_ENCODING_TCVN,
169 SUBTITLE_ENCODING_VISCII,
170 SUBTITLE_ENCODING_WINDOWS_1258,
172 SUBTITLE_ENCODING_CURRENT_LOCALE,
174 SUBTITLE_ENCODING_LAST
175 } SubtitleEncodingIndex;
179 const QString charset;
183 static SubtitleEncoding encodings[] = {
184 {SUBTITLE_ENCODING_ISO_8859_6, "ISO-8859-6", qtTrId ("Arabic")},
185 {SUBTITLE_ENCODING_IBM_864, "IBM864", qtTrId ("Arabic")},
186 {SUBTITLE_ENCODING_MAC_ARABIC, "MAC_ARABIC", qtTrId ("Arabic")},
187 {SUBTITLE_ENCODING_WINDOWS_1256, "WINDOWS-1256", qtTrId ("Arabic")},
189 {SUBTITLE_ENCODING_ARMSCII_8, "ARMSCII-8", qtTrId ("Armenian")},
191 {SUBTITLE_ENCODING_ISO_8859_4, "ISO-8859-4", qtTrId ("Baltic")},
192 {SUBTITLE_ENCODING_ISO_8859_13, "ISO-8859-13", qtTrId ("Baltic")},
193 {SUBTITLE_ENCODING_WINDOWS_1257, "WINDOWS-1257", qtTrId ("Baltic")},
195 {SUBTITLE_ENCODING_ISO_8859_14, "ISO-8859-14", qtTrId ("Celtic")},
197 {SUBTITLE_ENCODING_ISO_8859_2, "ISO-8859-2", qtTrId ("Central European")},
198 {SUBTITLE_ENCODING_IBM_852, "IBM852", qtTrId ("Central European")},
199 {SUBTITLE_ENCODING_MAC_CE, "MAC_CE", qtTrId ("Central European")},
200 {SUBTITLE_ENCODING_WINDOWS_1250, "WINDOWS-1250", qtTrId ("Central European")},
202 {SUBTITLE_ENCODING_GB18030, "GB18030", qtTrId ("Chinese Simplified")},
203 {SUBTITLE_ENCODING_GB2312, "GB2312", qtTrId ("Chinese Simplified")},
204 {SUBTITLE_ENCODING_GBK, "GBK", qtTrId ("Chinese Simplified")},
205 {SUBTITLE_ENCODING_HZ, "HZ", qtTrId ("Chinese Simplified")},
207 {SUBTITLE_ENCODING_BIG5, "BIG5", qtTrId ("Chinese Traditional")},
208 {SUBTITLE_ENCODING_BIG5_HKSCS, "BIG5-HKSCS", qtTrId ("Chinese Traditional")},
209 {SUBTITLE_ENCODING_EUC_TW, "EUC-TW", qtTrId ("Chinese Traditional")},
211 {SUBTITLE_ENCODING_MAC_CROATIAN, "MAC_CROATIAN", qtTrId ("Croatian")},
213 {SUBTITLE_ENCODING_ISO_8859_5, "ISO-8859-5", qtTrId ("Cyrillic")},
214 {SUBTITLE_ENCODING_IBM_855, "IBM855", qtTrId ("Cyrillic")},
215 {SUBTITLE_ENCODING_ISO_IR_111, "ISO-IR-111", qtTrId ("Cyrillic")},
216 {SUBTITLE_ENCODING_KOI8_R, "KOI8-R", qtTrId ("Cyrillic")},
217 {SUBTITLE_ENCODING_MAC_CYRILLIC, "MAC-CYRILLIC", qtTrId ("Cyrillic")},
218 {SUBTITLE_ENCODING_WINDOWS_1251, "WINDOWS-1251", qtTrId ("Cyrillic")},
220 {SUBTITLE_ENCODING_CP_866, "CP866", qtTrId ("Cyrillic/Russian")},
222 {SUBTITLE_ENCODING_MAC_UKRAINIAN, "MAC_UKRAINIAN", qtTrId ("Cyrillic/Ukrainian")},
223 {SUBTITLE_ENCODING_KOI8_U, "KOI8-U", qtTrId ("Cyrillic/Ukrainian")},
225 {SUBTITLE_ENCODING_GEOSTD8, "GEORGIAN-PS", qtTrId ("Georgian")},
227 {SUBTITLE_ENCODING_ISO_8859_7, "ISO-8859-7", qtTrId ("Greek")},
228 {SUBTITLE_ENCODING_MAC_GREEK, "MAC_GREEK", qtTrId ("Greek")},
229 {SUBTITLE_ENCODING_WINDOWS_1253, "WINDOWS-1253", qtTrId ("Greek")},
231 {SUBTITLE_ENCODING_MAC_GUJARATI, "MAC_GUJARATI", qtTrId ("Gujarati")},
233 {SUBTITLE_ENCODING_MAC_GURMUKHI, "MAC_GURMUKHI", qtTrId ("Gurmukhi")},
235 {SUBTITLE_ENCODING_ISO_8859_8_I, "ISO-8859-8-I", qtTrId ("Hebrew")},
236 {SUBTITLE_ENCODING_IBM_862, "IBM862", qtTrId ("Hebrew")},
237 {SUBTITLE_ENCODING_MAC_HEBREW, "MAC_HEBREW", qtTrId ("Hebrew")},
238 {SUBTITLE_ENCODING_WINDOWS_1255, "WINDOWS-1255", qtTrId ("Hebrew")},
240 {SUBTITLE_ENCODING_ISO_8859_8, "ISO-8859-8", qtTrId ("Hebrew Visual")},
242 {SUBTITLE_ENCODING_MAC_DEVANAGARI, "MAC_DEVANAGARI", qtTrId ("Hindi")},
244 {SUBTITLE_ENCODING_MAC_ICELANDIC, "MAC_ICELANDIC", qtTrId ("Icelandic")},
246 {SUBTITLE_ENCODING_EUC_JP, "EUC-JP", qtTrId ("Japanese")},
247 {SUBTITLE_ENCODING_ISO_2022_JP, "ISO2022JP", qtTrId ("Japanese")},
248 {SUBTITLE_ENCODING_SHIFT_JIS, "SHIFT-JIS", qtTrId ("Japanese")},
250 {SUBTITLE_ENCODING_EUC_KR, "EUC-KR", qtTrId ("Korean")},
251 {SUBTITLE_ENCODING_ISO_2022_KR, "ISO2022KR", qtTrId ("Korean")},
252 {SUBTITLE_ENCODING_JOHAB, "JOHAB", qtTrId ("Korean")},
253 {SUBTITLE_ENCODING_UHC, "UHC", qtTrId ("Korean")},
255 {SUBTITLE_ENCODING_ISO_8859_10, "ISO-8859-10", qtTrId ("Nordic")},
257 {SUBTITLE_ENCODING_MAC_FARSI, "MAC_FARSI", qtTrId ("Persian")},
259 {SUBTITLE_ENCODING_ISO_8859_16, "ISO-8859-16", qtTrId ("Romanian")},
260 {SUBTITLE_ENCODING_MAC_ROMANIAN, "MAC_ROMANIAN", qtTrId ("Romanian")},
262 {SUBTITLE_ENCODING_ISO_8859_3, "ISO-8859-3", qtTrId ("South European")},
264 {SUBTITLE_ENCODING_TIS_620, "TIS-620", qtTrId ("Thai")},
266 {SUBTITLE_ENCODING_ISO_8859_9, "ISO-8859-9", qtTrId ("Turkish")},
267 {SUBTITLE_ENCODING_IBM_857, "IBM857", qtTrId ("Turkish")},
268 {SUBTITLE_ENCODING_MAC_TURKISH, "MAC_TURKISH", qtTrId ("Turkish")},
269 {SUBTITLE_ENCODING_WINDOWS_1254, "WINDOWS-1254", qtTrId ("Turkish")},
271 {SUBTITLE_ENCODING_UTF_7, "UTF-7", qtTrId ("Unicode")},
272 {SUBTITLE_ENCODING_UTF_8, "UTF-8", qtTrId ("Unicode")},
273 {SUBTITLE_ENCODING_UTF_16, "UTF-16", qtTrId ("Unicode")},
274 {SUBTITLE_ENCODING_UCS_2, "UCS-2", qtTrId ("Unicode")},
275 {SUBTITLE_ENCODING_UCS_4, "UCS-4", qtTrId ("Unicode")},
277 {SUBTITLE_ENCODING_ISO_8859_1, "ISO-8859-1", qtTrId ("Western")},
278 {SUBTITLE_ENCODING_ISO_8859_15, "ISO-8859-15", qtTrId ("Western")},
279 {SUBTITLE_ENCODING_IBM_850, "IBM850", qtTrId ("Western")},
280 {SUBTITLE_ENCODING_MAC_ROMAN, "MAC_ROMAN", qtTrId ("Western")},
281 {SUBTITLE_ENCODING_WINDOWS_1252, "WINDOWS-1252", qtTrId ("Western")},
283 {SUBTITLE_ENCODING_TCVN, "TCVN", qtTrId ("Vietnamese")},
284 {SUBTITLE_ENCODING_VISCII, "VISCII", qtTrId ("Vietnamese")},
285 {SUBTITLE_ENCODING_WINDOWS_1258, "WINDOWS-1258", qtTrId ("Vietnamese")},
287 {SUBTITLE_ENCODING_CURRENT_LOCALE, NULL, qtTrId ("Current Locale")}
290 /******************************************************************************
291 * SubtitlesWidget implementation.
293 SubtitlesWidget::SubtitlesWidget (QGraphicsWidget *parent) :
294 DcpStylableWidget (parent),
297 m_AutoloadSubtitlesSwitch (0),
298 m_FontStyleLabel (0),
299 m_RegularStyleButton (0),
300 m_ItalicStyleButton (0),
301 m_BoldStyleButton (0),
302 m_SubtitlesFontSizeCombo (0),
303 m_SubtitlesEncodingCombo (0),
304 m_SubtitlesSettings (0)
306 m_SubtitlesSettings = new QSettings (RENDERER_PLUGIN_CONFIG_FILE, QSettings::NativeFormat);
307 m_SubtitlesSettings->beginGroup ("pipeline");
309 setContentsMargins (0.0, 0.0, 0.0, 0.0);
314 SubtitlesWidget::~SubtitlesWidget ()
319 SubtitlesWidget::back ()
321 return true; // back is handled by main window by default
325 SubtitlesWidget::initWidget ()
330 layout = new MLayout (this);
331 m_MainLayout = new MLinearLayoutPolicy (layout, Qt::Vertical);
332 m_MainLayout->setContentsMargins (0.0, 0.0, 0.0, 0.0);
333 m_MainLayout->setSpacing (0.0);
336 addHeaderContainer ();
338 addAutoloadSubtitlesContainer ();
339 addSubtitlesFontStyleContainer ();
340 addSubtitlesFontSizeContainer ();
341 addSubtitlesEncodingContainer ();
343 m_MainLayout->addStretch ();
345 bool autoload_subtitles = m_SubtitlesSettings->value ("autoload_subtitles").toBool ();
346 m_AutoloadSubtitlesSwitch->setChecked (autoload_subtitles);
348 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
349 PangoFontDescription *font_desc = pango_font_description_from_string (
350 (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, 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, 0.0, 0.0);
421 layout->setSpacing (0.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, 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, 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, 0.0, 14.0, 0.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 ()
574 SubtitlesWidget::AutoloadSubtitlesToggled (bool enabled)
576 m_SubtitlesSettings->setValue ("autoload_subtitles", enabled);
580 SubtitlesWidget::RegularStyleButtonToggled (bool toggled)
583 if (m_ItalicStyleButton->isChecked ())
584 m_ItalicStyleButton->setChecked (false);
586 m_ItalicStyleButton->setChecked (true);
589 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
590 PangoFontDescription *font_desc = pango_font_description_from_string (
591 (const char *) subtitle_font.toAscii ().data ());
594 pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL);
596 pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC);
599 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
600 pango_font_description_free (font_desc);
605 SubtitlesWidget::ItalicStyleButtonToggled (bool toggled)
608 if (m_RegularStyleButton->isChecked ())
609 m_RegularStyleButton->setChecked (false);
611 m_RegularStyleButton->setChecked (true);
614 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
615 PangoFontDescription *font_desc = pango_font_description_from_string (
616 (const char *) subtitle_font.toAscii ().data ());
619 pango_font_description_set_style (font_desc, PANGO_STYLE_ITALIC);
621 pango_font_description_set_style (font_desc, PANGO_STYLE_NORMAL);
624 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
625 pango_font_description_free (font_desc);
630 SubtitlesWidget::BoldStyleButtonToggled (bool toggled)
632 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
633 PangoFontDescription *font_desc = pango_font_description_from_string (
634 (const char *) subtitle_font.toAscii ().data ());
637 pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
639 pango_font_description_set_weight (font_desc, PANGO_WEIGHT_NORMAL);
642 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
643 pango_font_description_free (font_desc);
648 SubtitlesWidget::SubtitlesFontSizeActivated (int index)
650 QString subtitle_font = m_SubtitlesSettings->value ("subtitle_font").toString ();
651 PangoFontDescription *font_desc = pango_font_description_from_string (
652 (const char *) subtitle_font.toAscii ().data ());
654 if (pango_font_description_get_size (font_desc) != (font_sizes[index] * PANGO_SCALE)) {
655 pango_font_description_set_size (font_desc, font_sizes[index] * PANGO_SCALE);
656 m_SubtitlesSettings->setValue ("subtitle_font", pango_font_description_to_string (font_desc));
658 pango_font_description_free (font_desc);
663 SubtitlesWidget::SubtitlesEncodingActivated (int index)
665 m_SubtitlesSettings->setValue ("subtitle_encoding", encodings[index].charset);