1 /***************************************************** vim:set ts=4 sw=4 sts=4:
3 A dialog for user to select one or more languages from the list
4 of KDE global languages.
7 (C) 2006 by Gary Cramblitt <garycramblitt@comcast.net>
9 Original author: Gary Cramblitt <garycramblitt@comcast.net>
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 ******************************************************************************/
26 #include "selectlanguagedlg.h"
29 #include <QtGui/QTableWidget>
30 #include <QtGui/QHeaderView>
38 #include "talkercode.h"
39 #include "selectlanguagedlg.moc"
41 SelectLanguageDlg::SelectLanguageDlg(
43 const QString
& caption
,
44 const QStringList
& languageCodes
,
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
);
63 m_langList
->setSelectionMode(QAbstractItemView::SingleSelection
);
64 QStringList allLocales
= KGlobal::locale()->allLanguagesList();
67 const int allLocalesCount
= allLocales
.count();
68 for (int ndx
=0; ndx
< allLocalesCount
; ++ndx
)
70 locale
= allLocales
[ndx
];
71 language
= TalkerCode::languageCodeToLanguage(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
);
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(""));
86 m_langList
->setItem(0, 1, new QTableWidgetItem(""));
88 setMainWidget(m_langList
);
89 setHelp("select-language", "kttsd");
90 QSize size
= m_langList
->minimumSize();
92 m_langList
->setMinimumSize(size
);
95 QString
SelectLanguageDlg::selectedLanguage()
97 return firstSelectedItem(0);
100 QString
SelectLanguageDlg::selectedLanguageCode()
102 return firstSelectedItem(1);
105 QStringList
SelectLanguageDlg::selectedLanguages()
107 return allSelectedItems(0);
110 QStringList
SelectLanguageDlg::selectedLanguageCodes()
112 return allSelectedItems(1);
115 QString
SelectLanguageDlg::firstSelectedItem(int col
)
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();
125 QStringList
SelectLanguageDlg::allSelectedItems(int col
)
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());