File indexing completed on 2024-06-02 05:43:57
0001 /* 0002 SPDX-FileCopyrightText: 2003-2007 Craig Drummond <craig@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "PreviewSelectAction.h" 0007 #include "UnicodeBlocks.h" 0008 #include "UnicodeScripts.h" 0009 0010 namespace KFI 0011 { 0012 CPreviewSelectAction::CPreviewSelectAction(QObject *parent, Mode mode) 0013 : KSelectAction(QIcon::fromTheme("character-set"), i18n("Preview Type"), parent) 0014 , m_numUnicodeBlocks(0) 0015 { 0016 setMode(mode); 0017 0018 connect(this, &KSelectAction::indexTriggered, this, &CPreviewSelectAction::selected); 0019 } 0020 0021 void CPreviewSelectAction::setStd() 0022 { 0023 setCurrentItem(0); 0024 selected(0); 0025 } 0026 0027 void CPreviewSelectAction::setMode(Mode mode) 0028 { 0029 QStringList items; 0030 0031 items.append(i18n("Standard Preview")); 0032 items.append(i18n("All Characters")); 0033 0034 switch (mode) { 0035 default: 0036 case Basic: 0037 break; 0038 case BlocksAndScripts: 0039 for (m_numUnicodeBlocks = 0; !constUnicodeBlocks[m_numUnicodeBlocks].blockName.isEmpty(); ++m_numUnicodeBlocks) { 0040 items.append(i18n("Unicode Block: %1", constUnicodeBlocks[m_numUnicodeBlocks].blockName.toString())); 0041 } 0042 0043 for (int i = 0; !constUnicodeScriptList[i].isEmpty(); ++i) { 0044 items.append(i18n("Unicode Script: %1", constUnicodeScriptList[i].toString())); 0045 } 0046 break; 0047 case ScriptsOnly: 0048 for (int i = 0; !constUnicodeScriptList[i].isEmpty(); ++i) { 0049 items.append(constUnicodeScriptList[i].toString()); 0050 } 0051 } 0052 0053 setItems(items); 0054 setStd(); 0055 } 0056 0057 void CPreviewSelectAction::selected(int index) 0058 { 0059 QList<CFcEngine::TRange> list; 0060 0061 if (0 == index) { 0062 ; 0063 } else if (1 == index) { 0064 list.append(CFcEngine::TRange()); 0065 } else if (index < m_numUnicodeBlocks + 2) { 0066 list.append(CFcEngine::TRange(constUnicodeBlocks[index - 2].start, constUnicodeBlocks[index - 2].end)); 0067 } else { 0068 int script(index - (2 + m_numUnicodeBlocks)); 0069 0070 for (int i = 0; constUnicodeScripts[i].scriptIndex >= 0; ++i) { 0071 if (constUnicodeScripts[i].scriptIndex == script) { 0072 list.append(CFcEngine::TRange(constUnicodeScripts[i].start, constUnicodeScripts[i].end)); 0073 } 0074 } 0075 } 0076 0077 Q_EMIT range(list); 0078 } 0079 0080 }