22
22
#include <ZLDialogManager.h>
23
23
#include <ZLOptionsDialog.h>
24
24
#include <ZLPaintContext.h>
25
#include <ZLChineseBreakingAlgorithm.h>
26
#include <ZLLanguageList.h>
26
28
#include <optionEntries/ZLToggleBooleanOptionEntry.h>
27
29
#include <optionEntries/ZLColorOptionBuilder.h>
30
#include <optionEntries/ZLLanguageOptionEntry.h>
31
#include <optionEntries/ZLSimpleOptionEntry.h>
29
33
#include <ZLTextView.h>
30
34
#include <ZLTextStyle.h>
124
128
myAngleOption.setValue(angle);
127
class DefaultLanguageEntry : public ZLComboOptionEntry {
130
std::string myRussianString;
131
std::string myChineseString;
132
std::string myCzechString;
133
std::string myOtherString;
136
DefaultLanguageEntry(const ZLResource &resource);
137
const std::string &initialValue() const;
138
const std::vector<std::string> &values() const;
139
void onAccept(const std::string &value);
142
DefaultLanguageEntry::DefaultLanguageEntry(const ZLResource &resource) {
143
myRussianString = resource["ru"].value();
144
myChineseString = resource["zh"].value();
145
myCzechString = resource["cz"].value();
146
myOtherString = resource["other"].value();
149
const std::string &DefaultLanguageEntry::initialValue() const {
150
switch (PluginCollection::instance().DefaultLanguageOption.value()) {
151
case EncodingDetector::RUSSIAN:
152
return myRussianString;
153
case EncodingDetector::CHINESE:
154
return myChineseString;
155
case EncodingDetector::CZECH:
156
return myCzechString;
158
return myOtherString;
162
const std::vector<std::string> &DefaultLanguageEntry::values() const {
163
static std::vector<std::string> _values;
164
if (_values.empty()) {
165
_values.push_back(myChineseString);
166
_values.push_back(myCzechString);
167
_values.push_back(myRussianString);
168
_values.push_back(myOtherString);
173
void DefaultLanguageEntry::onAccept(const std::string &value) {
174
EncodingDetector::Language language = EncodingDetector::OTHER;
175
if (value == myRussianString) {
176
language = EncodingDetector::RUSSIAN;
177
} else if (value == myChineseString) {
178
language = EncodingDetector::CHINESE;
179
} else if (value == myCzechString) {
180
language = EncodingDetector::CZECH;
182
PluginCollection::instance().DefaultLanguageOption.setValue(language);
185
131
class OptionsApplyRunnable : public ZLRunnable {
216
162
generalTab.addOption(ZLResourceKey("recentListSize"), new ZLSimpleSpinOptionEntry(recentBooksView.lastBooks().MaxListSizeOption, 1));
217
163
generalTab.addOption(ZLResourceKey("keyDelay"), new ZLSimpleSpinOptionEntry(fbreader.KeyDelayOption, 50));
219
ZLDialogContent &encodingTab = myDialog->createTab(ZLResourceKey("Encoding"));
165
ZLDialogContent &encodingTab = myDialog->createTab(ZLResourceKey("Language"));
166
encodingTab.addOption(ZLResourceKey("autoDetect"), new ZLSimpleBooleanOptionEntry(PluginCollection::instance().LanguageAutoDetectOption));
167
encodingTab.addOption(ZLResourceKey("defaultLanguage"), new ZLLanguageOptionEntry(PluginCollection::instance().DefaultLanguageOption, ZLLanguageList::languageCodes()));
220
168
EncodingEntry *encodingEntry = new EncodingEntry(PluginCollection::instance().DefaultEncodingOption);
221
169
EncodingSetEntry *encodingSetEntry = new EncodingSetEntry(*encodingEntry);
222
170
encodingTab.addOption(ZLResourceKey("defaultEncodingSet"), encodingSetEntry);
223
171
encodingTab.addOption(ZLResourceKey("defaultEncoding"), encodingEntry);
224
const ZLResourceKey languageKey("defaultLanguage");
225
encodingTab.addOption(languageKey, new DefaultLanguageEntry(encodingTab.resource(languageKey)));
172
encodingTab.addOption(ZLResourceKey("chineseBreakAtAnyPosition"), new ZLSimpleBooleanOptionEntry(ZLChineseBreakingAlgorithm::instance().AnyPositionBreakingOption));
227
174
myScrollingPage = new ScrollingOptionsPage(myDialog->createTab(ZLResourceKey("Scrolling")), fbreader);