• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeaccessibility API Reference
  • KDE Home
  • Contact Us
 

jovie

  • sources
  • kde-4.12
  • kdeaccessibility
  • jovie
  • libkttsd
selectlanguagedlg.cpp
Go to the documentation of this file.
1 /***************************************************** vim:set ts=4 sw=4 sts=4:
2  Description:
3  A dialog for user to select one or more languages from the list
4  of KDE global languages.
5 
6  Copyright:
7  (C) 2006 by Gary Cramblitt <garycramblitt@comcast.net>
8  -------------------
9  Original author: Gary Cramblitt <garycramblitt@comcast.net>
10 
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.
15 
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.
20 
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24  ******************************************************************************/
25 
26 #include "selectlanguagedlg.h"
27 
28 // Qt includes.
29 #include <QtGui/QTableWidget>
30 #include <QtGui/QHeaderView>
31 
32 // KDE includes.
33 #include <kdialog.h>
34 #include <kdebug.h>
35 #include <kglobal.h>
36 
37 // KTTS includes.
38 #include "talkercode.h"
39 #include "selectlanguagedlg.moc"
40 
41 SelectLanguageDlg::SelectLanguageDlg(
42  QWidget* parent,
43  const QString& caption,
44  const QStringList& languageCodes,
45  bool selectMode,
46  bool blankMode) :
47 
48  KDialog(parent)
49 {
50  setCaption(caption);
51  setButtons(KDialog::Help|KDialog::Ok|KDialog::Cancel);
52  // Create a QTableWidget and fill with all known languages.
53  m_langList = new QTableWidget( this );
54  m_langList->setColumnCount(2);
55  m_langList->verticalHeader()->hide();
56  m_langList->setHorizontalHeaderItem(0, new QTableWidgetItem(i18n("Language")));
57  m_langList->setHorizontalHeaderItem(1, new QTableWidgetItem(i18n("Code")));
58  m_langList->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
59  m_langList->setSelectionBehavior(QAbstractItemView::SelectRows);
60  if (selectMode == MultipleSelect)
61  m_langList->setSelectionMode(QAbstractItemView::ExtendedSelection);
62  else
63  m_langList->setSelectionMode(QAbstractItemView::SingleSelection);
64  QStringList allLocales = KGlobal::locale()->allLanguagesList();
65  QString locale;
66  QString language;
67  const int allLocalesCount = allLocales.count();
68  for (int ndx=0; ndx < allLocalesCount; ++ndx)
69  {
70  locale = allLocales[ndx];
71  language = locale;
72  if (!language.isEmpty()) {
73  int row = m_langList->rowCount();
74  m_langList->setRowCount(row + 1);
75  m_langList->setItem(row, 0, new QTableWidgetItem(language));
76  m_langList->setItem(row, 1, new QTableWidgetItem(locale));
77  if (languageCodes.contains(locale)) m_langList->selectRow(row);
78  }
79  }
80  // Sort by language.
81  m_langList->sortItems(0);
82  // If blank is allowed, add to top of the list.
83  if (blankMode == BlankAllowed) {
84  m_langList->insertRow(0);
85  m_langList->setItem(0, 0, new QTableWidgetItem(QLatin1String( "" )));
86  m_langList->setItem(0, 1, new QTableWidgetItem(QLatin1String( "" )));
87  }
88  setMainWidget(m_langList);
89  setHelp(QLatin1String( "select-language" ), QLatin1String( "jovie" ));
90  QSize size = m_langList->minimumSize();
91  size.setHeight(500);
92  m_langList->setMinimumSize(size);
93 }
94 
95 QString SelectLanguageDlg::selectedLanguage()
96 {
97  return firstSelectedItem(0);
98 }
99 
100 QString SelectLanguageDlg::selectedLanguageCode()
101 {
102  return firstSelectedItem(1);
103 }
104 
105 QStringList SelectLanguageDlg::selectedLanguages()
106 {
107  return allSelectedItems(0);
108 }
109 
110 QStringList SelectLanguageDlg::selectedLanguageCodes()
111 {
112  return allSelectedItems(1);
113 }
114 
115 QString SelectLanguageDlg::firstSelectedItem(int col)
116 {
117  QString s;
118  for (int row = 0; row < m_langList->rowCount(); ++row) {
119  if (m_langList->isItemSelected(m_langList->item(row, col)))
120  return m_langList->item(row, col)->text();
121  }
122  return QString();
123 }
124 
125 QStringList SelectLanguageDlg::allSelectedItems(int col)
126 {
127  QStringList sl;
128  for (int row = 0; row < m_langList->rowCount(); ++row) {
129  if (m_langList->isItemSelected(m_langList->item(row, col)))
130  sl.append(m_langList->item(row, col)->text());
131  }
132  return sl;
133 }
134 
SelectLanguageDlg::SelectLanguageDlg
SelectLanguageDlg(QWidget *parent=0, const QString &caption=i18n("Select Language"), const QStringList &languageCodes=QStringList(), bool selectMode=SingleSelect, bool blankMode=BlankAllowed)
Constructor.
Definition: selectlanguagedlg.cpp:41
SelectLanguageDlg::selectedLanguageCodes
QStringList selectedLanguageCodes()
In multiple select mode, returns the list of language codes user chose.
Definition: selectlanguagedlg.cpp:110
SelectLanguageDlg::MultipleSelect
Definition: selectlanguagedlg.h:44
QWidget
KDialog
talkercode.h
SelectLanguageDlg::selectedLanguage
QString selectedLanguage()
In single select mode, returns the language user chose.
Definition: selectlanguagedlg.cpp:95
SelectLanguageDlg::selectedLanguages
QStringList selectedLanguages()
In multiple select mode, returns list of languages user chose.
Definition: selectlanguagedlg.cpp:105
SelectLanguageDlg::BlankAllowed
Definition: selectlanguagedlg.h:49
selectlanguagedlg.h
SelectLanguageDlg::selectedLanguageCode
QString selectedLanguageCode()
In single select mode, returns the language code user chose.
Definition: selectlanguagedlg.cpp:100
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:32:25 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

jovie

Skip menu "jovie"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeaccessibility API Reference

Skip menu "kdeaccessibility API Reference"
  • jovie

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal