You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
/* |
|
SPDX-FileCopyrightText: 2003-2007 Craig Drummond <craig@kde.org> |
|
SPDX-License-Identifier: GPL-2.0-or-later |
|
*/ |
|
|
|
#include "PreviewSelectAction.h" |
|
#include "UnicodeBlocks.h" |
|
#include "UnicodeScripts.h" |
|
|
|
namespace KFI |
|
{ |
|
CPreviewSelectAction::CPreviewSelectAction(QObject *parent, Mode mode) |
|
: KSelectAction(QIcon::fromTheme("character-set"), i18n("Preview Type"), parent) |
|
, m_numUnicodeBlocks(0) |
|
{ |
|
setMode(mode); |
|
|
|
connect(this, SIGNAL(triggered(int)), SLOT(selected(int))); |
|
} |
|
|
|
void CPreviewSelectAction::setStd() |
|
{ |
|
setCurrentItem(0); |
|
selected(0); |
|
} |
|
|
|
void CPreviewSelectAction::setMode(Mode mode) |
|
{ |
|
QStringList items; |
|
|
|
items.append(i18n("Standard Preview")); |
|
items.append(i18n("All Characters")); |
|
|
|
switch (mode) { |
|
default: |
|
case Basic: |
|
break; |
|
case BlocksAndScripts: |
|
for (m_numUnicodeBlocks = 0; !constUnicodeBlocks[m_numUnicodeBlocks].blockName.isEmpty(); ++m_numUnicodeBlocks) { |
|
items.append(i18n("Unicode Block: %1", constUnicodeBlocks[m_numUnicodeBlocks].blockName.toString())); |
|
} |
|
|
|
for (int i = 0; !constUnicodeScriptList[i].isEmpty(); ++i) { |
|
items.append(i18n("Unicode Script: %1", constUnicodeScriptList[i].toString())); |
|
} |
|
break; |
|
case ScriptsOnly: |
|
for (int i = 0; !constUnicodeScriptList[i].isEmpty(); ++i) { |
|
items.append(constUnicodeScriptList[i].toString()); |
|
} |
|
} |
|
|
|
setItems(items); |
|
setStd(); |
|
} |
|
|
|
void CPreviewSelectAction::selected(int index) |
|
{ |
|
QList<CFcEngine::TRange> list; |
|
|
|
if (0 == index) { |
|
; |
|
} else if (1 == index) { |
|
list.append(CFcEngine::TRange()); |
|
} else if (index < m_numUnicodeBlocks + 2) { |
|
list.append(CFcEngine::TRange(constUnicodeBlocks[index - 2].start, constUnicodeBlocks[index - 2].end)); |
|
} else { |
|
int script(index - (2 + m_numUnicodeBlocks)); |
|
|
|
for (int i = 0; constUnicodeScripts[i].scriptIndex >= 0; ++i) { |
|
if (constUnicodeScripts[i].scriptIndex == script) { |
|
list.append(CFcEngine::TRange(constUnicodeScripts[i].start, constUnicodeScripts[i].end)); |
|
} |
|
} |
|
} |
|
|
|
Q_EMIT range(list); |
|
} |
|
|
|
}
|
|
|