MVVM pattern finished, adding multiple location provider
This commit is contained in:
@@ -10,91 +10,123 @@ class Cinnamon_Pref_Handler:
|
||||
|
||||
self.load_preferences()
|
||||
|
||||
|
||||
def extract_json(self, parameter: str) -> str:
|
||||
""" Get a parameter from the json dictionary safely
|
||||
|
||||
Args:
|
||||
parameter (str): Parameter to request
|
||||
|
||||
Returns:
|
||||
str: Value of the parameter (or "" if not existing)
|
||||
"""
|
||||
try:
|
||||
return self.pref_data[parameter]['value']
|
||||
except:
|
||||
return ""
|
||||
|
||||
|
||||
def load_preferences(self):
|
||||
""" Load the JSON preferences to the Preference object
|
||||
"""
|
||||
with open(self.pref_location, "r") as pref_file:
|
||||
pref_data = json.load(pref_file)
|
||||
self.pref_data = json.load(pref_file)
|
||||
|
||||
self.picture_aspect = pref_data['picture_aspect']['value']
|
||||
self.dynamic_background_color = pref_data['dynamic_background_color']['value']
|
||||
self.image_source = pref_data['image_source']['value']
|
||||
self.selected_image_set = pref_data['selected_image_set']['value']
|
||||
self.source_folder = pref_data['source_folder']['value']
|
||||
self.picture_aspect = self.extract_json('picture_aspect')
|
||||
self.dynamic_background_color = self.extract_json('dynamic_background_color')
|
||||
self.image_source = self.extract_json('image_source')
|
||||
self.selected_image_set = self.extract_json('selected_image_set')
|
||||
self.source_folder = self.extract_json('source_folder')
|
||||
|
||||
self.period_images = [
|
||||
pref_data['period_0_image']['value'],
|
||||
pref_data['period_1_image']['value'],
|
||||
pref_data['period_2_image']['value'],
|
||||
pref_data['period_3_image']['value'],
|
||||
pref_data['period_4_image']['value'],
|
||||
pref_data['period_5_image']['value'],
|
||||
pref_data['period_6_image']['value'],
|
||||
pref_data['period_7_image']['value'],
|
||||
pref_data['period_8_image']['value'],
|
||||
pref_data['period_9_image']['value']
|
||||
self.extract_json('period_0_image'),
|
||||
self.extract_json('period_1_image'),
|
||||
self.extract_json('period_2_image'),
|
||||
self.extract_json('period_3_image'),
|
||||
self.extract_json('period_4_image'),
|
||||
self.extract_json('period_5_image'),
|
||||
self.extract_json('period_6_image'),
|
||||
self.extract_json('period_7_image'),
|
||||
self.extract_json('period_8_image'),
|
||||
self.extract_json('period_9_image')
|
||||
]
|
||||
|
||||
self.period_source = pref_data['period_source']['value']
|
||||
self.location_refresh_intervals = pref_data['location_refresh_intervals']['value']
|
||||
self.latitude_auto = pref_data['latitude_auto']['value']
|
||||
self.longitude_auto = pref_data['longitude_auto']['value']
|
||||
self.latitude_custom = pref_data['latitude_custom']['value']
|
||||
self.longitude_custom = pref_data['longitude_custom']['value']
|
||||
self.period_source =self.extract_json('period_source')
|
||||
self.location_refresh_intervals =self.extract_json('location_refresh_intervals')
|
||||
self.network_location_provider =self.extract_json('network_location_provider')
|
||||
self.latitude_auto =self.extract_json('latitude_auto')
|
||||
self.longitude_auto =self.extract_json('longitude_auto')
|
||||
self.latitude_custom =self.extract_json('latitude_custom')
|
||||
self.longitude_custom =self.extract_json('longitude_custom')
|
||||
|
||||
self.period_custom_start_time = [
|
||||
pref_data['period_0_custom_start_time']['value'],
|
||||
pref_data['period_1_custom_start_time']['value'],
|
||||
pref_data['period_2_custom_start_time']['value'],
|
||||
pref_data['period_3_custom_start_time']['value'],
|
||||
pref_data['period_4_custom_start_time']['value'],
|
||||
pref_data['period_5_custom_start_time']['value'],
|
||||
pref_data['period_6_custom_start_time']['value'],
|
||||
pref_data['period_7_custom_start_time']['value'],
|
||||
pref_data['period_8_custom_start_time']['value'],
|
||||
pref_data['period_9_custom_start_time']['value']
|
||||
]
|
||||
self.extract_json('period_0_custom_start_time'),
|
||||
self.extract_json('period_1_custom_start_time'),
|
||||
self.extract_json('period_2_custom_start_time'),
|
||||
self.extract_json('period_3_custom_start_time'),
|
||||
self.extract_json('period_4_custom_start_time'),
|
||||
self.extract_json('period_5_custom_start_time'),
|
||||
self.extract_json('period_6_custom_start_time'),
|
||||
self.extract_json('period_7_custom_start_time'),
|
||||
self.extract_json('period_8_custom_start_time'),
|
||||
self.extract_json('period_9_custom_start_time')
|
||||
]
|
||||
|
||||
|
||||
def value_to_json(self, parameter: str, value: str):
|
||||
""" Storing safely a value to the dictionary
|
||||
|
||||
Args:
|
||||
parameter (str): Parameter to write
|
||||
value (str): Value to write
|
||||
"""
|
||||
try:
|
||||
self.pref_data[parameter]['value'] = value
|
||||
except:
|
||||
self.pref_data[parameter] = {
|
||||
'type': 'generic',
|
||||
'value': value
|
||||
}
|
||||
print(self.pref_data)
|
||||
|
||||
|
||||
def store_preferences(self):
|
||||
""" Store the values of the Preference object to the JSON file
|
||||
"""
|
||||
with open(self.pref_location, "r") as pref_file:
|
||||
pref_data = json.load(pref_file)
|
||||
self.value_to_json('picture_aspect', self.picture_aspect)
|
||||
self.value_to_json('dynamic_background_color', self.dynamic_background_color)
|
||||
self.value_to_json('image_source', self.image_source)
|
||||
self.value_to_json('selected_image_set', self.selected_image_set)
|
||||
self.value_to_json('source_folder', self.source_folder)
|
||||
self.value_to_json('period_0_image', self.period_images[0])
|
||||
self.value_to_json('period_1_image', self.period_images[1])
|
||||
self.value_to_json('period_2_image', self.period_images[2])
|
||||
self.value_to_json('period_3_image', self.period_images[3])
|
||||
self.value_to_json('period_4_image', self.period_images[4])
|
||||
self.value_to_json('period_5_image', self.period_images[5])
|
||||
self.value_to_json('period_6_image', self.period_images[6])
|
||||
self.value_to_json('period_7_image', self.period_images[7])
|
||||
self.value_to_json('period_8_image', self.period_images[8])
|
||||
self.value_to_json('period_9_image', self.period_images[9])
|
||||
self.value_to_json('period_source', self.period_source)
|
||||
self.value_to_json('location_refresh_intervals', self.location_refresh_intervals)
|
||||
self.value_to_json('network_location_provider', self.network_location_provider)
|
||||
self.value_to_json('latitude_auto', self.latitude_auto)
|
||||
self.value_to_json('longitude_auto', self.longitude_auto)
|
||||
self.value_to_json('latitude_custom', self.latitude_custom)
|
||||
self.value_to_json('longitude_custom', self.longitude_custom)
|
||||
self.value_to_json('period_0_custom_start_time', self.period_custom_start_time[0])
|
||||
self.value_to_json('period_1_custom_start_time', self.period_custom_start_time[1])
|
||||
self.value_to_json('period_2_custom_start_time', self.period_custom_start_time[2])
|
||||
self.value_to_json('period_3_custom_start_time', self.period_custom_start_time[3])
|
||||
self.value_to_json('period_4_custom_start_time', self.period_custom_start_time[4])
|
||||
self.value_to_json('period_5_custom_start_time', self.period_custom_start_time[5])
|
||||
self.value_to_json('period_6_custom_start_time', self.period_custom_start_time[6])
|
||||
self.value_to_json('period_7_custom_start_time', self.period_custom_start_time[7])
|
||||
self.value_to_json('period_8_custom_start_time', self.period_custom_start_time[8])
|
||||
self.value_to_json('period_9_custom_start_time', self.period_custom_start_time[9])
|
||||
|
||||
pref_data['picture_aspect']['value'] = self.picture_aspect
|
||||
pref_data['dynamic_background_color']['value'] = self.dynamic_background_color
|
||||
pref_data['image_source']['value'] = self.image_source
|
||||
pref_data['selected_image_set']['value'] = self.selected_image_set
|
||||
pref_data['source_folder']['value'] = self.source_folder
|
||||
pref_data['period_0_image']['value'] = self.period_images[0]
|
||||
pref_data['period_1_image']['value'] = self.period_images[1]
|
||||
pref_data['period_2_image']['value'] = self.period_images[2]
|
||||
pref_data['period_3_image']['value'] = self.period_images[3]
|
||||
pref_data['period_4_image']['value'] = self.period_images[4]
|
||||
pref_data['period_5_image']['value'] = self.period_images[5]
|
||||
pref_data['period_6_image']['value'] = self.period_images[6]
|
||||
pref_data['period_7_image']['value'] = self.period_images[7]
|
||||
pref_data['period_8_image']['value'] = self.period_images[8]
|
||||
pref_data['period_9_image']['value'] = self.period_images[9]
|
||||
pref_data['period_source']['value'] = self.period_source
|
||||
pref_data['location_refresh_intervals']['value'] = self.location_refresh_intervals
|
||||
pref_data['latitude_auto']['value'] = self.latitude_auto
|
||||
pref_data['longitude_auto']['value'] = self.longitude_auto
|
||||
pref_data['latitude_custom']['value'] = self.latitude_custom
|
||||
pref_data['longitude_custom']['value'] = self.longitude_custom
|
||||
pref_data['period_0_custom_start_time']['value'] = self.period_custom_start_time[0]
|
||||
pref_data['period_1_custom_start_time']['value'] = self.period_custom_start_time[1]
|
||||
pref_data['period_2_custom_start_time']['value'] = self.period_custom_start_time[2]
|
||||
pref_data['period_3_custom_start_time']['value'] = self.period_custom_start_time[3]
|
||||
pref_data['period_4_custom_start_time']['value'] = self.period_custom_start_time[4]
|
||||
pref_data['period_5_custom_start_time']['value'] = self.period_custom_start_time[5]
|
||||
pref_data['period_6_custom_start_time']['value'] = self.period_custom_start_time[6]
|
||||
pref_data['period_7_custom_start_time']['value'] = self.period_custom_start_time[7]
|
||||
pref_data['period_8_custom_start_time']['value'] = self.period_custom_start_time[8]
|
||||
pref_data['period_9_custom_start_time']['value'] = self.period_custom_start_time[9]
|
||||
|
||||
# Write to file
|
||||
with open(self.pref_location, "w") as pref_file:
|
||||
json.dump(pref_data, pref_file, separators=(',', ':'), indent=4)
|
||||
json.dump(self.pref_data, pref_file, separators=(',', ':'), indent=4)
|
||||
|
||||
Reference in New Issue
Block a user