Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Added Region setting

  • Loading branch information
mahmoud-adam85 authored and Tim Palade committed Mar 26, 2018
1 parent 67c8484 commit c7c668968c6efa48c5c540e6504f02d95a5ee164
@@ -59,6 +59,7 @@
1EAFE4E5205BD88A006A36B4 /* LocalResourceSetting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EAFE4E4205BD88A006A36B4 /* LocalResourceSetting.swift */; };
1EAFE4EC205BDB51006A36B4 /* Eula.html in Resources */ = {isa = PBXBuildFile; fileRef = 1EAFE4EB205BDB50006A36B4 /* Eula.html */; };
1EAFE4F0205BDEC0006A36B4 /* cliqz.json in Resources */ = {isa = PBXBuildFile; fileRef = 1EAFE4EF205BDEC0006A36B4 /* cliqz.json */; };
1EAFE4F6205C18C8006A36B4 /* RegionalSettingsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EAFE4F5205C18C8006A36B4 /* RegionalSettingsTableViewController.swift */; };
2805F5A61B8BCA7A00268FD1 /* ReadingList.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4D567181ADECE2700F1EFE7 /* ReadingList.framework */; };
28078A471B1507EF0053B46A /* ReadingList.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4D567181ADECE2700F1EFE7 /* ReadingList.framework */; };
280CB1371C20E0A3005AF147 /* BookmarksSynchronizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 280CB1361C20E0A3005AF147 /* BookmarksSynchronizer.swift */; };
@@ -1475,6 +1476,7 @@
1EAFE4E4205BD88A006A36B4 /* LocalResourceSetting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalResourceSetting.swift; sourceTree = "<group>"; };
1EAFE4EB205BDB50006A36B4 /* Eula.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Eula.html; sourceTree = "<group>"; };
1EAFE4EF205BDEC0006A36B4 /* cliqz.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = cliqz.json; path = "node_modules/browser-core/build/config/cliqz.json"; sourceTree = SOURCE_ROOT; };
1EAFE4F5205C18C8006A36B4 /* RegionalSettingsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegionalSettingsTableViewController.swift; sourceTree = "<group>"; };
280CB1361C20E0A3005AF147 /* BookmarksSynchronizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BookmarksSynchronizer.swift; path = Sync/Synchronizers/Bookmarks/BookmarksSynchronizer.swift; sourceTree = SOURCE_ROOT; };
28126F471C2F948E006466CC /* SQLiteBookmarksHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteBookmarksHelpers.swift; sourceTree = "<group>"; };
28126F6D1C2F94F9006466CC /* SQLiteBookmarksModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteBookmarksModel.swift; sourceTree = "<group>"; };
@@ -2505,6 +2507,7 @@
1EAFE4CE205A5C0A006A36B4 /* LimitMobileDataUsageTableViewController.swift */,
1EAFE4DE205A604F006A36B4 /* AdBlockerSettingsTableViewController.swift */,
1EAFE4E2205BC7D9006A36B4 /* AboutSettingsTableViewController.swift */,
1EAFE4F5205C18C8006A36B4 /* RegionalSettingsTableViewController.swift */,
);
path = Settings;
sourceTree = "<group>";
@@ -5998,6 +6001,7 @@
1EAFE4DF205A604F006A36B4 /* AdBlockerSettingsTableViewController.swift in Sources */,
745DAB301CDAAFAA00D44181 /* RecentlyClosedTabsPanel.swift in Sources */,
C45F44691D087DB600CB7EF0 /* TopTabsViewController.swift in Sources */,
1EAFE4F6205C18C8006A36B4 /* RegionalSettingsTableViewController.swift in Sources */,
4F0445DB203333BF00E2C0C7 /* TopSitesViewController.swift in Sources */,
0BF0DB941A8545800039F300 /* URLBarView.swift in Sources */,
C817B34D1FC609500086018E /* UIScrollViewSwizzled.swift in Sources */,
@@ -183,7 +183,7 @@ class CliqzSearchViewController : UIViewController, KeyboardHelperDelegate, UIAl
let subscriptions = SubscriptionsHandler.sharedInstance.getSubscriptions()
let params = ["adultContentFilter" : isBlocked ? "conservative" : "liberal",
"incognito" : self.privateMode,
"backend_country" : "DE",//self.getCountry(),
"backend_country" : SettingsPrefs.shared.getRegionPref(),
"suggestionsEnabled" : QuerySuggestions.isEnabled(),
"subscriptions" : subscriptions] as [String : Any]

@@ -202,13 +202,6 @@ class CliqzSearchViewController : UIViewController, KeyboardHelperDelegate, UIAl
}
}

fileprivate func getCountry() -> String {
if let country = SettingsPrefs.shared.getRegionPref() {
return country
}
return SettingsPrefs.shared.getDefaultRegion()
}

//MARK: - Reset TopSites
func showBlockedTopSites(_ notification: Notification) {
Engine.sharedInstance.getBridge().publishEvent("mobile-browser:restore-blocked-topsites", args: [])
@@ -15,14 +15,8 @@ class QuerySuggestions: NSObject {

//MARK:- public APIs
class func querySuggestionEnabledForCurrentRegion() -> Bool {
var region: String
if let userRegion = SettingsPrefs.shared.getRegionPref() {
region = userRegion
} else {
region = SettingsPrefs.shared.getDefaultRegion()
}

return region == "DE"
let userRegion = SettingsPrefs.shared.getRegionPref()
return userRegion == "DE"
}

class func isEnabled() -> Bool {
@@ -126,19 +126,13 @@ class SettingsPrefs {
self.updatePref(SettingsPrefs.blockPopupsPrefKey, value: newValue as AnyObject)
}

func getRegionPref() -> String? {
return self.getStringPref(SettingsPrefs.countryPrefKey)
}

func getDefaultRegion() -> String {
let currentLocale = Locale.current
let langToRegionMapping = ["de": "DE", "en": "US", "fr": "FR"]
if let languageCode = currentLocale.languageCode,
langToRegionMapping.keys.contains(languageCode),
let val = langToRegionMapping[languageCode] {
return val
func getRegionPref() -> String {
if let countryPref = self.getStringPref(SettingsPrefs.countryPrefKey) {
return countryPref
}
return "DE"
let defaultRegion = getDefaultRegion()
updateRegionPref(defaultRegion)
return defaultRegion
}

func updateRegionPref(_ newValue: String) {
@@ -222,4 +216,18 @@ class SettingsPrefs {
return nil
}

fileprivate func getDefaultRegion() -> String {
if let regioncode = Locale.current.regionCode {
switch regioncode {
case "DE", "AT", "CH": // Germany, Austria, Switzerland
return "DE"
case "FR":
return "FR"
default:
return "US"
}
}
return "US"
}

}
@@ -9,6 +9,41 @@
import Foundation

// MARK:- cliqz settings
class RegionalSetting: Setting {
let profile: Profile

override var accessoryType: UITableViewCellAccessoryType { return .disclosureIndicator }

override var style: UITableViewCellStyle { return .value1 }

override var status: NSAttributedString {
let region = SettingsPrefs.shared.getRegionPref()
let localizedRegionName = RegionalSettingsTableViewController.getLocalizedRegionName(region)
return NSAttributedString(string: localizedRegionName)
}

override var accessibilityIdentifier: String? { return "Search Results for" }

init(settings: SettingsTableViewController) {
self.profile = settings.profile
let title = NSLocalizedString("Search Results for", tableName: "Cliqz" , comment: "[Settings] Search Results for")
super.init(title: NSAttributedString(string: title, attributes: [NSForegroundColorAttributeName: SettingsUX.TableViewRowTextColor]))
}

override func onClick(_ navigationController: UINavigationController?) {
let viewController = RegionalSettingsTableViewController()
viewController.title = self.title?.string
navigationController?.pushViewController(viewController, animated: true)

// TODO: Telemetry
/*
// log Telemerty signal
let blcokAdsSingal = TelemetryLogEventType.Settings("main", "click", "search_results_from", nil, nil)
TelemetryLogger.sharedInstance.logEvent(blcokAdsSingal)
*/
}
}

class HumanWebSetting: CliqzOnOffSetting {

override func getTitle() -> String {
@@ -52,6 +52,7 @@ class CliqzAppSettingsTableViewController: AppSettingsTableViewController {

// MARK:- Helper methods
private func generateSearchSettings(prefs: Prefs) -> [Setting] {
let regionalSetting = RegionalSetting(settings: self)
let cliqzSearchSetting = CliqzSearchSetting(settings: self)

let querySuggestionTitle = NSLocalizedString("Search Query Suggestions", tableName: "Cliqz", comment: "[Settings] Search Query Suggestions")
@@ -71,9 +72,9 @@ class CliqzAppSettingsTableViewController: AppSettingsTableViewController {

var searchSettings: [Setting]!
if QuerySuggestions.querySuggestionEnabledForCurrentRegion() {
searchSettings = [querySuggestionSettings, blockExplicitContentSettings, humanWebSetting, cliqzSearchSetting]
searchSettings = [regionalSetting, querySuggestionSettings, blockExplicitContentSettings, humanWebSetting, cliqzSearchSetting]
} else {
searchSettings = [blockExplicitContentSettings, humanWebSetting, cliqzSearchSetting]
searchSettings = [regionalSetting, blockExplicitContentSettings, humanWebSetting, cliqzSearchSetting]
}
return searchSettings
}
@@ -0,0 +1,83 @@
//
// RegionalSettingsTableViewController.swift
// Client
//
// Created by Mahmoud Adam on 3/16/18.
// Copyright © 2018 Mozilla. All rights reserved.
//
import UIKit

class RegionalSettingsTableViewController: SubSettingsTableViewController {

let regions = SettingsPrefs.SearchBackendOptions
let telemetrySignalViewName = "search_results_from"
static let regionsLocalizedStrings = ["region-DE" : NSLocalizedString("region-DE", tableName: "Cliqz", value: "Germany", comment: "Localized String for German region"),
"region-FR" : NSLocalizedString("region-FR", tableName: "Cliqz", value: "France", comment: "Localized String for France region"),
"region-US" : NSLocalizedString("region-US", tableName: "Cliqz", value: "United States", comment: "Localized String for United States region")]
var selectedRegion: String {
get {
return SettingsPrefs.shared.getRegionPref()
}
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return regions.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let region = regions[indexPath.item]
let cell = getUITableViewCell()

cell.textLabel?.text = RegionalSettingsTableViewController.getLocalizedRegionName(region)

if region == selectedRegion {
// Cliqz: Mark selected the row of default search engine
self.tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
cell.accessoryType = UITableViewCellAccessoryType.checkmark
}
cell.selectionStyle = .none
return cell
}

override func getViewName() -> String {
return telemetrySignalViewName
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let region = regions[indexPath.item]
SettingsPrefs.shared.updateRegionPref(region)
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark

// TODO: Telemetry
/*
let settingsBackSignal = TelemetryLogEventType.Settings(telemetrySignalViewName, "click", region, nil, nil)
TelemetryLogger.sharedInstance.logEvent(settingsBackSignal)
*/

}

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none
}

static func getLocalizedRegionName(_ region: String) -> String {
let regionKey = "region-\(region)"
if let localizedRegion = regionsLocalizedStrings[regionKey] {
return localizedRegion
}
return "Undefined Region"
}

}

0 comments on commit c7c6689

Please sign in to comment.