Merge pull request #1402 from vector-im/meta_riot_22

Prepare Dark theme
This commit is contained in:
giomfo 2017-07-19 15:42:00 +02:00 committed by GitHub
commit 097d2a37ef
3 changed files with 80 additions and 1 deletions

View file

@ -288,6 +288,7 @@
"settings_user_settings" = "USER SETTINGS";
"settings_notifications_settings" = "NOTIFICATION SETTINGS";
"settings_user_interface" = "USER INTERFACE";
"settings_ignored_users" = "IGNORED USERS";
"settings_contacts" = "LOCAL CONTACTS";
"settings_advanced" = "ADVANCED";
@ -328,6 +329,9 @@
//"settings_join_leave_rooms" = "When people join or leave rooms";
//"settings_call_invitations" = "Call invitations";
"settings_ui_light_theme" = "Light theme";
"settings_ui_dark_theme" = "Dark theme";
"settings_unignore_user" = "Show all messages from %@?";
"settings_contacts_discover_matrix_users" = "Use emails and phone numbers to discover users";

View file

@ -19,8 +19,9 @@
#import "DeviceView.h"
#import "MediaPickerViewController.h"
#import "TableViewCellWithCheckBoxes.h"
@interface SettingsViewController : MXKTableViewController<UITextFieldDelegate, MediaPickerViewControllerDelegate, MXKDeviceViewDelegate, UIDocumentInteractionControllerDelegate, MXKCountryPickerViewControllerDelegate>
@interface SettingsViewController : MXKTableViewController<UITextFieldDelegate, MediaPickerViewControllerDelegate, MXKDeviceViewDelegate, UIDocumentInteractionControllerDelegate, MXKCountryPickerViewControllerDelegate, TableViewCellWithCheckBoxesDelegate>
@end

View file

@ -43,6 +43,7 @@ enum
SETTINGS_SECTION_SIGN_OUT_INDEX = 0,
SETTINGS_SECTION_USER_SETTINGS_INDEX,
SETTINGS_SECTION_NOTIFICATIONS_SETTINGS_INDEX,
SETTINGS_SECTION_USER_INTERFACE_INDEX,
SETTINGS_SECTION_IGNORED_USERS_INDEX,
SETTINGS_SECTION_CONTACTS_INDEX,
SETTINGS_SECTION_ADVANCED_INDEX,
@ -68,6 +69,12 @@ enum
NOTIFICATION_SETTINGS_COUNT
};
enum
{
USER_INTERFACE_THEME_INDEX = 0,
USER_INTERFACE_COUNT
};
enum
{
OTHER_VERSION_INDEX = 0,
@ -181,6 +188,9 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
BOOL keepNewEmailEditing;
BOOL keepNewPhoneNumberEditing;
// The user interface theme cell
TableViewCellWithCheckBoxes *uiThemeCell;
}
/**
@ -224,6 +234,7 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
[self.tableView registerClass:MXKTableViewCellWithLabelAndSwitch.class forCellReuseIdentifier:[MXKTableViewCellWithLabelAndSwitch defaultReuseIdentifier]];
[self.tableView registerClass:MXKTableViewCellWithLabelAndMXKImageView.class forCellReuseIdentifier:[MXKTableViewCellWithLabelAndMXKImageView defaultReuseIdentifier]];
[self.tableView registerClass:TableViewCellWithPhoneNumberTextField.class forCellReuseIdentifier:[TableViewCellWithPhoneNumberTextField defaultReuseIdentifier]];
[self.tableView registerClass:TableViewCellWithCheckBoxes.class forCellReuseIdentifier:[TableViewCellWithCheckBoxes defaultReuseIdentifier]];
// Enable self sizing cells
self.tableView.rowHeight = UITableViewAutomaticDimension;
@ -1083,6 +1094,10 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
{
count = NOTIFICATION_SETTINGS_COUNT;
}
else if (section == SETTINGS_SECTION_USER_INTERFACE_INDEX)
{
count = USER_INTERFACE_COUNT;
}
else if (section == SETTINGS_SECTION_IGNORED_USERS_INDEX)
{
if ([AppDelegate theDelegate].mxSessions.count > 0)
@ -1548,6 +1563,40 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
cell = labelAndSwitchCell;
}
}
else if (section == SETTINGS_SECTION_USER_INTERFACE_INDEX)
{
if (row == USER_INTERFACE_THEME_INDEX)
{
uiThemeCell = [tableView dequeueReusableCellWithIdentifier:[TableViewCellWithCheckBoxes defaultReuseIdentifier] forIndexPath:indexPath];
uiThemeCell.mainContainerLeadingConstraint.constant = uiThemeCell.separatorInset.left;
uiThemeCell.checkBoxesNumber = 2;
uiThemeCell.allowsMultipleSelection = NO;
uiThemeCell.delegate = self;
NSArray *labels = uiThemeCell.labels;
UILabel *label;
label = labels[0];
label.text = NSLocalizedStringFromTable(@"settings_ui_light_theme", @"Vector", nil);
label = labels[1];
label.text = NSLocalizedStringFromTable(@"settings_ui_dark_theme", @"Vector", nil);
NSString *selectedTheme = [[NSUserDefaults standardUserDefaults] stringForKey:@"userInterfaceTheme"];
if (selectedTheme && [selectedTheme isEqualToString:@"dark"])
{
[uiThemeCell setCheckBoxValue:YES atIndex:1];
}
else
{
// Consider the light theme by default.
[uiThemeCell setCheckBoxValue:YES atIndex:0];
}
cell = uiThemeCell;
}
}
else if (section == SETTINGS_SECTION_IGNORED_USERS_INDEX)
{
MXKTableViewCell *ignoredUserCell = [self getDefaultTableViewCell:tableView];
@ -1850,6 +1899,10 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
{
return NSLocalizedStringFromTable(@"settings_notifications_settings", @"Vector", nil);
}
else if (section == SETTINGS_SECTION_USER_INTERFACE_INDEX)
{
return NSLocalizedStringFromTable(@"settings_user_interface", @"Vector", nil);
}
else if (section == SETTINGS_SECTION_IGNORED_USERS_INDEX)
{
// Check whether this section is visible
@ -3428,4 +3481,25 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
[countryPickerViewController withdrawViewControllerAnimated:YES completion:nil];
}
#pragma mark - TableViewCellWithCheckBoxesDelegate
- (void)tableViewCellWithCheckBoxes:(TableViewCellWithCheckBoxes *)tableViewCellWithCheckBoxes didTapOnCheckBoxAtIndex:(NSUInteger)index
{
if (tableViewCellWithCheckBoxes == uiThemeCell)
{
NSString *theme = (index == 0) ? @"light" : @"dark";
BOOL isCurrentlySelected = [uiThemeCell checkBoxValueAtIndex:index];
if (!isCurrentlySelected)
{
// The user wants to select this theme
[[NSUserDefaults standardUserDefaults] setObject:theme forKey:@"userInterfaceTheme"];
[[NSUserDefaults standardUserDefaults] synchronize];
// Select the tapped tag
[uiThemeCell setCheckBoxValue:YES atIndex:index];
}
}
}
@end