diff --git a/.idea/misc.xml b/.idea/misc.xml
index e91075f..54f95cb 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -17,7 +17,14 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 854b0df..9ea7fbc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,6 +16,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.SchoolGuide">
+
{
+ boolean contains = sharedPreferences.contains(key);
+ if (!contains) return;
+
+ switch (key) {
+ case KEY_IS_DEVELOPER_FEATURES:
+ settings.isDeveloperFeatures = sharedPreferences.getBoolean(key, false);
+ break;
+
+ case KEY_IS_BUILTIN_PRESET_LIST:
+ settings.isBuiltInPresetList = sharedPreferences.getBoolean(key, false);
+ AutoGlobalUpdateService.update(app);
+ break;
+
+ case KEY_IS_SHOW_EMPTY_NOTIFICATION:
+ settings.isStopForegroundIsNone = !sharedPreferences.getBoolean(key, false);
+ break;
+ }
+ app.saveSettings();
+ app.getPresetListUpdateCallbacks().run((callbackStorage, callback) -> callback.onPresetListUpdate());
+ };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
app = SchoolGuideApp.get(this);
if (app == null) {
setContentView(SharedConstrains.getAppNullView(this));
@@ -34,63 +64,40 @@ protected void onCreate(Bundle savedInstanceState) {
}
settings = app.getSettings();
- binding = SettingsActivityBinding.inflate(getLayoutInflater());
- setContentView(binding.getRoot());
+ setContentView(R.layout.activity_settings);
+ setTitle(R.string.settings_activityTitle);
+
+ if (savedInstanceState == null) {
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settings, new SettingsFragment())
+ .commit();
+ } else {
+ Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
- setActualState(settings);
- setCallbacks();
- }
+ preferences = PreferenceManager.getDefaultSharedPreferences(this);
+ preferences.edit()
+ .putBoolean(KEY_IS_SHOW_EMPTY_NOTIFICATION, !settings.isStopForegroundIsNone)
+ .putBoolean(KEY_IS_DEVELOPER_FEATURES, settings.isDeveloperFeatures)
+ .putBoolean(KEY_IS_BUILTIN_PRESET_LIST, settings.isBuiltInPresetList)
+ .apply();
- private void setActualState(Settings settings) {
- binding.developerFeatures.setChecked(settings.developerFeatures);
- binding.stopForegroundIsNone.setChecked(settings.stopForegroundIsNone);
- binding.isFirstMonday.setChecked(settings.isFirstMonday);
- binding.syncGlobalPresetList.setChecked(settings.globalPresetListSync);
+ preferences.registerOnSharedPreferenceChangeListener(listener);
}
- private void setCallbacks() {
- binding.developerFeatures.setOnCheckedChangeListener((buttonView, isChecked) -> {
- settings.developerFeatures = isChecked;
- save();
- });
-
- binding.stopForegroundIsNone.setOnCheckedChangeListener((buttonView, isChecked) -> {
- settings.stopForegroundIsNone = isChecked;
- save();
- });
-
- binding.isFirstMonday.setOnCheckedChangeListener((buttonView, isChecked) -> {
- settings.isFirstMonday = isChecked;
- save();
- });
-
- binding.syncGlobalPresetList.setOnCheckedChangeListener((buttonView, isChecked) -> {
- settings.globalPresetListSync = isChecked;
- save();
- });
-
- binding.changeScheduleNotifyBeforeTime.setOnClickListener(v -> {
- EditText editText = new EditText(this);
- editText.setText(String.valueOf(settings.scheduleNotifyBeforeTime));
-
- new AlertDialog.Builder(this)
- .setView(editText)
- .setPositiveButton("APPLY", (ig, ign) -> {
- try {
- settings.scheduleNotifyBeforeTime = Integer.parseInt(editText.getText().toString());
- } catch (Exception e) {
- app.getAppTrace().point("changeScheduleNotifyBeforeTimeDialog", e);
- Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
- }
- save();
- })
- .show();
- });
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ preferences.unregisterOnSharedPreferenceChangeListener(listener);
}
- private void save() {
- app.saveSettings();
- Snackbar snackbar = Snackbar.make(binding.getRoot(), "Saved!", Snackbar.LENGTH_SHORT);
- snackbar.show();
+ public static class SettingsFragment extends PreferenceFragmentCompat {
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferencesFromResource(R.xml.settings_preferences, rootKey);
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/AppBuiltinSchedule.java b/app/src/main/java/ru/fazziclay/schoolguide/app/AppBuiltinSchedule.java
deleted file mode 100644
index 93ce449..0000000
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/AppBuiltinSchedule.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package ru.fazziclay.schoolguide.app;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-public class AppBuiltinSchedule {
- public List selectedAutoSyncPresets = new ArrayList<>();
-}
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/SchoolGuideApp.java b/app/src/main/java/ru/fazziclay/schoolguide/app/SchoolGuideApp.java
index a12061b..6d94f8b 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/SchoolGuideApp.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/SchoolGuideApp.java
@@ -16,9 +16,11 @@
import java.util.List;
import ru.fazziclay.schoolguide.SharedConstrains;
+import ru.fazziclay.schoolguide.app.listener.GlobalUpdateListener;
import ru.fazziclay.schoolguide.app.global.AutoGlobalUpdateService;
import ru.fazziclay.schoolguide.app.global.GlobalBuiltinPresetList;
import ru.fazziclay.schoolguide.app.global.GlobalVersionManifest;
+import ru.fazziclay.schoolguide.app.listener.PresetListUpdateListener;
import ru.fazziclay.schoolguide.app.scheduleinformator.ScheduleInformatorApp;
import ru.fazziclay.schoolguide.callback.CallbackImportance;
import ru.fazziclay.schoolguide.callback.CallbackStorage;
@@ -156,6 +158,8 @@ public static SchoolGuideApp get() {
* **/
private final CallbackStorage globalUpdateCallbacks = new CallbackStorage<>();
+ private final CallbackStorage presetListUpdateCallbacks = new CallbackStorage<>();
+
public SchoolGuideApp(Context context) {
if (context == null) {
@@ -320,4 +324,8 @@ public void setGlobalBuiltinPresetList(GlobalBuiltinPresetList globalBuiltinPres
public CallbackStorage getGlobalUpdateCallbacks() {
return globalUpdateCallbacks;
}
+
+ public CallbackStorage getPresetListUpdateCallbacks() {
+ return presetListUpdateCallbacks;
+ }
}
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/Settings.java b/app/src/main/java/ru/fazziclay/schoolguide/app/Settings.java
index ff849a6..ecc6670 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/Settings.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/Settings.java
@@ -3,11 +3,11 @@
import ru.fazziclay.schoolguide.app.scheduleinformator.android.PresetEditActivity;
public class Settings {
- public boolean developerFeatures = false;
+ public boolean isDeveloperFeatures = false;
public int scheduleNotifyBeforeTime = 2*60*60;
- public boolean stopForegroundIsNone = true;
+ public boolean isStopForegroundIsNone = true;
public boolean isFirstMonday = true;
public PresetEditActivity.ColorScheme presetEditColorScheme = PresetEditActivity.ColorScheme.DEFAULT;
- public boolean globalPresetListSync = false;
+ public boolean isBuiltInPresetList = false;
}
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/global/AutoGlobalUpdateService.java b/app/src/main/java/ru/fazziclay/schoolguide/app/global/AutoGlobalUpdateService.java
index cc98172..736b9c3 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/global/AutoGlobalUpdateService.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/global/AutoGlobalUpdateService.java
@@ -11,11 +11,10 @@
import ru.fazziclay.schoolguide.SharedConstrains;
import ru.fazziclay.schoolguide.app.SchoolGuideApp;
import ru.fazziclay.schoolguide.callback.CallbackStorage;
-import ru.fazziclay.schoolguide.app.GlobalUpdateListener;
+import ru.fazziclay.schoolguide.app.listener.GlobalUpdateListener;
public class AutoGlobalUpdateService extends Service {
private SchoolGuideApp app;
- private CallbackStorage callbacks;
private Handler handler;
private Runnable runnable;
@@ -29,21 +28,10 @@ public void onCreate() {
stopSelf();
return;
}
- callbacks = app.getGlobalUpdateCallbacks();
handler = new Handler(getMainLooper());
runnable = () -> {
- GlobalManager.get(app, new GlobalManager.GlobalManagerInterface() {
- @Override
- public void failed(Exception exception) {}
-
- @Override
- public void success(GlobalKeys keys, GlobalVersionManifest versionManifest, GlobalBuiltinPresetList builtinSchedule) {
- app.setGlobalVersionManifest(versionManifest);
- app.setGlobalBuiltinPresetList(builtinSchedule);
- callbacks.run((callbackStorage, callback) -> callback.onGlobalUpdate(keys, versionManifest, builtinSchedule));
- }
- });
+ update(app);
handler.postDelayed(runnable, 60 * 60 * 1000);
};
}
@@ -58,4 +46,18 @@ public int onStartCommand(Intent intent, int flags, int startId) {
public IBinder onBind(Intent intent) {
return null;
}
+
+ public static void update(SchoolGuideApp app) {
+ GlobalManager.get(app, new GlobalManager.GlobalManagerInterface() {
+ @Override
+ public void failed(Exception exception) {}
+
+ @Override
+ public void success(GlobalKeys keys, GlobalVersionManifest versionManifest, GlobalBuiltinPresetList builtinSchedule) {
+ app.setGlobalVersionManifest(versionManifest);
+ app.setGlobalBuiltinPresetList(builtinSchedule);
+ app.getGlobalUpdateCallbacks().run((callbackStorage, callback) -> callback.onGlobalUpdate(keys, versionManifest, builtinSchedule));
+ }
+ });
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/GlobalUpdateListener.java b/app/src/main/java/ru/fazziclay/schoolguide/app/listener/GlobalUpdateListener.java
similarity index 91%
rename from app/src/main/java/ru/fazziclay/schoolguide/app/GlobalUpdateListener.java
rename to app/src/main/java/ru/fazziclay/schoolguide/app/listener/GlobalUpdateListener.java
index a2522a6..65c8aca 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/GlobalUpdateListener.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/listener/GlobalUpdateListener.java
@@ -1,4 +1,4 @@
-package ru.fazziclay.schoolguide.app;
+package ru.fazziclay.schoolguide.app.listener;
import ru.fazziclay.schoolguide.app.global.GlobalBuiltinPresetList;
import ru.fazziclay.schoolguide.app.global.GlobalKeys;
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/listener/PresetListUpdateListener.java b/app/src/main/java/ru/fazziclay/schoolguide/app/listener/PresetListUpdateListener.java
new file mode 100644
index 0000000..0adfe2e
--- /dev/null
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/listener/PresetListUpdateListener.java
@@ -0,0 +1,8 @@
+package ru.fazziclay.schoolguide.app.listener;
+
+import ru.fazziclay.schoolguide.callback.Callback;
+import ru.fazziclay.schoolguide.callback.Status;
+
+public interface PresetListUpdateListener extends Callback {
+ Status onPresetListUpdate();
+}
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/ScheduleInformatorApp.java b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/ScheduleInformatorApp.java
index becf87b..8e52542 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/ScheduleInformatorApp.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/ScheduleInformatorApp.java
@@ -29,7 +29,7 @@ public class ScheduleInformatorApp {
public static final String NOTIFICATION_CHANNEL_ID_NOW = "scheduleinformator_now";
public static final int NOTIFICATION_ID = 1000;
- public Notification notification;
+ private Notification notification;
private final SchoolGuideApp app;
private final AppTrace appTrace;
@@ -42,7 +42,7 @@ public class ScheduleInformatorApp {
private final AppPresetList schedule;
private InformatorService informatorService = null;
- boolean isServiceForeground = false;
+ private boolean isServiceForeground = false;
public ScheduleInformatorApp(SchoolGuideApp app) {
this.app = app;
@@ -59,23 +59,22 @@ public ScheduleInformatorApp(SchoolGuideApp app) {
saveAppSchedule();
app.getGlobalUpdateCallbacks().addCallback(CallbackImportance.DEFAULT, (globalKeys, globalVersionManifest, globalBuiltinPresetList) -> {
- if (globalBuiltinPresetList != null && settings.globalPresetListSync && globalBuiltinPresetList.presets != null) {
+ if (globalBuiltinPresetList != null && globalBuiltinPresetList.presets != null) {
int i = 0;
while (i < globalBuiltinPresetList.getPresetsIds().length) {
UUID gPresetUUID = globalBuiltinPresetList.getPresetsIds()[i];
Preset gPreset = globalBuiltinPresetList.getPreset(gPresetUUID);
- if (gPreset == null) {
+ if (gPreset == null || !settings.isBuiltInPresetList) {
schedule.removePreset(gPresetUUID);
} else {
- gPreset.syncedByGlobal = true;
+ gPreset.setSyncedByGlobal(true);
schedule.putPreset(gPresetUUID, gPreset);
}
i++;
}
- schedule.presets = globalBuiltinPresetList.presets;
saveAppSchedule();
}
return new Status.Builder().build();
@@ -115,7 +114,7 @@ public int tick() {
boolean isNext = nextEvent != null;
if (!isNow && !isNext) {
- if (settings.stopForegroundIsNone) {
+ if (settings.isStopForegroundIsNone) {
stopForeground();
} else {
startForeground();
@@ -126,7 +125,7 @@ public int tick() {
}
if (!isNow && nextEvent.remainsUntilStart() > settings.scheduleNotifyBeforeTime) {
- if (settings.stopForegroundIsNone) {
+ if (settings.isStopForegroundIsNone) {
stopForeground();
} else {
startForeground();
@@ -142,15 +141,15 @@ public int tick() {
notificationBuilder.smallIcon = R.drawable.planner_s;
if (isNow) {
- String title = context.getString(R.string.scheduleInformator_now_title);
- String message = context.getString(R.string.scheduleInformator_now_next_text);
+ String title = context.getString(R.string.scheduleInformator_notification_now_title);
+ String message = context.getString(R.string.scheduleInformator_notification_now_next_text);
notificationBuilder.contentTitle = String.format(title, nowEvent.getName(), TimeUtil.convertToHumanTime(nowEvent.remainsUntilEnd(), ConvertMode.hhMMSS));
if (isNext)
notificationBuilder.contentText = String.format(message, nextEvent.getName());
} else {
- String title = context.getString(R.string.scheduleInformator_next_title);
- String message = context.getString(R.string.scheduleInformator_next_text);
+ String title = context.getString(R.string.scheduleInformator_notification_next_title);
+ String message = context.getString(R.string.scheduleInformator_notification_next_text);
notificationBuilder.contentTitle = String.format(title, TimeUtil.convertToHumanTime(nextEvent.remainsUntilStart(), ConvertMode.hhMMSS));
notificationBuilder.contentText = String.format(message, nextEvent.getName());
}
@@ -184,8 +183,8 @@ public void sendNotify() {
}
public Notification getNoneNotification() {
- String title = context.getString(R.string.scheduleInformator_none_title);
- String message = context.getString(R.string.scheduleInformator_none_text);
+ String title = context.getString(R.string.scheduleInformator_notification_none_title);
+ String message = context.getString(R.string.scheduleInformator_notification_none_text);
return new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID_NONE)
.setSmallIcon(R.drawable.planner_s)
.setAutoCancel(true)
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetEditActivity.java b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetEditActivity.java
index 9aa2736..5bac67b 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetEditActivity.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetEditActivity.java
@@ -87,9 +87,8 @@ protected void onCreate(Bundle savedInstanceState) {
binding = ActivityPresetEditBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
- // TODO: 2022-01-29 return
- setTitle(String.format("synced=%s deleted=%s", preset.syncedByGlobal, preset.deletedInGlobal));
- //setTitle(getString(R.string.presetEdit_activityTitle, preset.getName()));
+ //setTitle(String.format("synced=%s deleted=%s", preset.syncedByGlobal, preset.deletedInGlobal));
+ setTitle(getString(R.string.presetEdit_activityTitle, preset.getName()));
updateEventList();
}
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetListActivity.java b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetListActivity.java
index 7d87f94..7f346fc 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetListActivity.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/android/PresetListActivity.java
@@ -4,12 +4,14 @@
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
+import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;
import android.text.InputFilter;
+import android.text.SpannableString;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -36,8 +38,9 @@
import ru.fazziclay.schoolguide.SettingsActivity;
import ru.fazziclay.schoolguide.SharedConstrains;
import ru.fazziclay.schoolguide.UpdateCenterActivity;
-import ru.fazziclay.schoolguide.app.GlobalUpdateListener;
+import ru.fazziclay.schoolguide.app.listener.GlobalUpdateListener;
import ru.fazziclay.schoolguide.app.SchoolGuideApp;
+import ru.fazziclay.schoolguide.app.listener.PresetListUpdateListener;
import ru.fazziclay.schoolguide.app.multiplicationtrening.MathTreningGameActivity;
import ru.fazziclay.schoolguide.app.scheduleinformator.ScheduleInformatorApp;
import ru.fazziclay.schoolguide.app.scheduleinformator.SelectablePresetList;
@@ -46,6 +49,7 @@
import ru.fazziclay.schoolguide.callback.CallbackImportance;
import ru.fazziclay.schoolguide.callback.Status;
import ru.fazziclay.schoolguide.databinding.ActivityPresetListBinding;
+import ru.fazziclay.schoolguide.util.ColorUtil;
public class PresetListActivity extends AppCompatActivity {
public static final int PRESET_NAME_MAX_LENGTH = 25;
@@ -59,10 +63,12 @@ public static Intent getLaunchIntent(Context context) {
private ScheduleInformatorApp informatorApp;
private ActivityPresetListBinding binding;
private MenuItem openUpdateCenterMenuItem;
+ private MenuItem openDebugItem;
private PresetList presetList;
private GlobalUpdateListener globalUpdateListener;
+ private PresetListUpdateListener presetListUpdateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -89,7 +95,24 @@ protected void onCreate(Bundle savedInstanceState) {
.setDeleteCallback(activityClosed)
.build();
};
+
+ presetListUpdateListener = () -> {
+ boolean activityClosed = isFinishing();
+
+ try {
+ if (!activityClosed) {
+ runOnUiThread(this::updateList);
+ }
+ } catch (Exception ignored) {}
+
+
+ return new Status.Builder()
+ .setDeleteCallback(activityClosed)
+ .build();
+ };
+
app.getGlobalUpdateCallbacks().addCallback(CallbackImportance.LOW, globalUpdateListener);
+ app.getPresetListUpdateCallbacks().addCallback(CallbackImportance.LOW, presetListUpdateListener);
binding = ActivityPresetListBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
@@ -107,19 +130,23 @@ protected void onResume() {
}
updateOpenUpdateCenterMenuName();
updateList();
+ if (openDebugItem != null) {
+ openDebugItem.setVisible(app.getSettings().isDeveloperFeatures);
+ }
}
@Override
protected void onDestroy() {
super.onDestroy();
app.getGlobalUpdateCallbacks().deleteCallback(globalUpdateListener);
+ app.getPresetListUpdateCallbacks().deleteCallback(presetListUpdateListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
- menu.findItem(R.id.openDebugItem).setVisible(app.getSettings().developerFeatures);
openUpdateCenterMenuItem = menu.findItem(R.id.openUpdateCenterItem);
+ openDebugItem = menu.findItem(R.id.openDebugItem);
updateOpenUpdateCenterMenuName();
return true;
}
@@ -127,7 +154,7 @@ public boolean onCreateOptionsMenu(Menu menu) {
private void updateOpenUpdateCenterMenuName() {
if (openUpdateCenterMenuItem == null) return;
if (app.isUpdateAvailable()) {
- openUpdateCenterMenuItem.setTitle(String.format("(!) %s", getString(R.string.mainOptionMenu_openUpdateCenter)));
+ openUpdateCenterMenuItem.setTitle(ColorUtil.colorize(getString(R.string.mainOptionMenu_openUpdateCenter_available), Color.RED, Color.TRANSPARENT, Typeface.BOLD));
} else {
openUpdateCenterMenuItem.setTitle(R.string.mainOptionMenu_openUpdateCenter);
}
@@ -148,9 +175,6 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
} else if (id == R.id.openDebugItem) {
startActivity(DebugActivity.getLaunchIntent(this));
- } else if (id == R.id.openBuiltInPresetList) {
- // TODO: 2/1/22 add
-
}
return true;
}
@@ -208,7 +232,7 @@ private void showCreateNewPresetDialog() {
.setPositiveButton(R.string.presetList_createNew_create, (dialogInterface, which) -> {
String newName = name.getText().toString();
if (newName.isEmpty()) {
- Toast.makeText(this, R.string.presetList_presetNameIsEmptyError, Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.presetList_exception_presetNameEmpty, Toast.LENGTH_SHORT).show();
return;
}
presetList.addPreset(new Preset(newName));
@@ -285,10 +309,11 @@ private void showCopyPresetDialog(UUID uuid) {
.setPositiveButton(R.string.presetList_copy, (e, e1) -> {
String newName = name.getText().toString();
if (newName.isEmpty()) {
- Toast.makeText(this, R.string.presetList_presetNameIsEmptyError, Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.presetList_exception_presetNameEmpty, Toast.LENGTH_SHORT).show();
return;
}
Preset newPreset = preset.clone();
+ newPreset.setSyncedByGlobal(false);
newPreset.setName(newName);
presetList.addPreset(newPreset);
informatorApp.saveAppSchedule();
@@ -332,7 +357,7 @@ private void showRenamePresetDialog(UUID uuid) {
.setPositiveButton(R.string.presetList_rename, (e, e1) -> {
String newName = name.getText().toString();
if (newName.isEmpty()) {
- Toast.makeText(this, R.string.presetList_presetNameIsEmptyError, Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.presetList_exception_presetNameEmpty, Toast.LENGTH_SHORT).show();
return;
}
preset.setName(newName);
@@ -412,6 +437,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
* Получить View элемента списка
* **/
private View getPresetView(UUID presetUUID, Preset preset) {
+ boolean isGlobal = preset.isSyncedByGlobal();
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.HORIZONTAL);
@@ -430,6 +456,7 @@ private View getPresetView(UUID presetUUID, Preset preset) {
});
TextView textView = new TextView(this);
+ textView.setTextColor(isGlobal ? Color.parseColor("#ffff0000") : Color.parseColor("#ffffffff"));
PopupMenu popupMenu = new PopupMenu(this, textView);
popupMenu.inflate(R.menu.menu_preset_list_popup);
popupMenu.setOnMenuItemClickListener(item -> {
@@ -445,9 +472,17 @@ private View getPresetView(UUID presetUUID, Preset preset) {
informatorApp.saveAppSchedule();
return true;
});
- textView.setText(preset == null ? "(null)" : preset.getName());
+ popupMenu.getMenu().findItem(R.id.delete).setEnabled(!isGlobal);
+ popupMenu.getMenu().findItem(R.id.rename).setEnabled(!isGlobal);
+
+ String textR = preset == null ? "(null)" : preset.getName();
+ SpannableString string = new SpannableString(textR);
+ if (preset != null) {
+ if (isGlobal) string = ColorUtil.colorize(textR, Color.parseColor("#ffaaaaaa"), Color.TRANSPARENT, Typeface.ITALIC);
+ }
+ textView.setText(string);
textView.setTextSize(30);
- textView.setTextColor(Color.WHITE);
+ //textView.setTextColor(Color.WHITE);
textView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
textView.setOnClickListener(view -> startActivity(PresetEditActivity.getLaunchIntent(this, presetUUID)));
textView.setOnLongClickListener(v -> {
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/Preset.java b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/Preset.java
index b92772c..879592c 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/Preset.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/Preset.java
@@ -10,12 +10,10 @@
import ru.fazziclay.schoolguide.util.time.TimeUtil;
public class Preset implements Cloneable {
- String name;
- String author;
+ private String name;
+ private String author;
- // TODO: 2022-01-28 make private
- public boolean deletedInGlobal = false;
- public boolean syncedByGlobal = false;
+ private boolean syncedByGlobal = false;
public HashMap eventsInfos = new HashMap<>();
public List eventsPositions = new ArrayList<>();
@@ -65,6 +63,16 @@ public CompressedEvent compressEvent(Event event) {
return CompressedEvent.create(event, getEventInfo(event.getEventInfo()));
}
+ @NonNull
+ public Preset clone() {
+ try {
+ return (Preset) super.clone();
+ } catch (CloneNotSupportedException exception) {
+ exception.printStackTrace();
+ return null;
+ }
+ }
+
public EventInfo getEventInfo(UUID uuid) {
return eventsInfos.get(uuid);
}
@@ -85,13 +93,11 @@ public String getAuthor() {
return author;
}
- @NonNull
- public Preset clone() {
- try {
- return (Preset) super.clone();
- } catch (CloneNotSupportedException exception) {
- exception.printStackTrace();
- return null;
- }
+ public boolean isSyncedByGlobal() {
+ return syncedByGlobal;
+ }
+
+ public void setSyncedByGlobal(boolean syncedByGlobal) {
+ this.syncedByGlobal = syncedByGlobal;
}
}
diff --git a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/PresetList.java b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/PresetList.java
index 05908d7..6e805ab 100644
--- a/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/PresetList.java
+++ b/app/src/main/java/ru/fazziclay/schoolguide/app/scheduleinformator/appschedule/PresetList.java
@@ -44,14 +44,14 @@ public UUID[] getPresetsIds() {
UUID[] ids = presets.keySet().toArray(new UUID[0]);
SortUtil.sort(ids, uuid -> {
Preset preset = getPreset(uuid);
- return preset.name;
+ return preset.getName();
});
return ids;
}
public Preset[] getPresets() {
Preset[] presets = this.presets.values().toArray(new Preset[0]);
- SortUtil.sort(presets, preset -> preset.name);
+ SortUtil.sort(presets, Preset::getName);
return presets;
}
diff --git a/app/src/main/res/layout/activity_preset_edit.xml b/app/src/main/res/layout/activity_preset_edit.xml
index 12937bb..31ccc74 100644
--- a/app/src/main/res/layout/activity_preset_edit.xml
+++ b/app/src/main/res/layout/activity_preset_edit.xml
@@ -31,6 +31,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_input_add"
+ android:visibility="gone"
android:contentDescription="@string/presetEdit_addEvent_contentDescription" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_preset_list.xml b/app/src/main/res/layout/activity_preset_list.xml
index aad3e19..ff75fef 100644
--- a/app/src/main/res/layout/activity_preset_list.xml
+++ b/app/src/main/res/layout/activity_preset_list.xml
@@ -24,7 +24,7 @@
android:textSize="31sp"
android:gravity="center"
android:textColor="#ffffff"
- android:text="@string/presetList_empty_title" />
+ android:text="@string/presetList_emptyMessage_title" />
+ android:text="@string/presetList_emptyMessage_message" />
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
new file mode 100644
index 0000000..ab55623
--- /dev/null
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml
deleted file mode 100644
index 1f9a3b7..0000000
--- a/app/src/main/res/layout/settings_activity.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index be46f11..5900876 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -3,6 +3,5 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 1def966..7760767 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -6,26 +6,25 @@
Ошибка :(
$[-#ff2222]Отсутствует подключение к $[@bold]интернету$[@reset]!
Перезагрузить
- "$[@bold;-#ff0000]Сервис закрыт :($[@reset;-reset]\nПриложение не смогло найти последнюю версию, $[@bold;-#dddddd]очень рекомендуем зайти на страницу проекта:$[@reset;-reset]\nhttps://github.com/FazziCLAY/SchoolGuide"
+ $[@bold;-#ff0000]Сервис закрыт :($[@reset;-reset]\nПриложение не смогло найти последнюю версию, $[@bold;-#dddddd]очень рекомендуем зайти на страницу проекта:$[@reset;-reset]\nhttps://github.com/FazziCLAY/SchoolGuide
$[-#ffffff;@bold]Неизвестная ошибка.$[@reset;-reset]\nПриложение не смогло распознать ошибку, скорее всего сейчас технические неполадки\nОшибка: $[=#080607;-#cc0000;=#000000]%s
- Обновлено
+ Обновлено!
$[-#a0a0ff]Сейчас у вас установлена $[@bold;-#7070ff]самая последняя$[@reset;-#a0a0ff] версия, так держать!
- Доступно обновление\n%s
- Список изменений пуст.
+ Доступно обновление\n\'%s\'
+ Список изменений пуст
Загрузить
Пожалуйста установите web-браузер (например FireFox)
- Ошибка: URL-адрес пуст
+ Ошибка центра обновления: URL-адрес пуст
Доступно обновление
Пожалуйста скачайте новое обновление приложения
Центр обновлений
+ (!) ДОСТУПНО ОБНОВЛЕНИЕ (!)
Игра \'MathTrening\'
Настройки
Отладка
SchoolGuide - MathTrening
- Сбросить скорость
- Сбросить счёт
Пропустить
Настройки игры
Счёт: %s
@@ -45,13 +44,13 @@
Сбросить!
Отмена
- Добавить
+ Добавить пресет
Введите название
Создать новый пресет
Создать
Отмена
Удалить пресет \'%s\'
- Вы действительно хотите удалить пресет?\nВы сможете востановить его только если это пресет из встроенного расписания!
+ Вы действительно хотите удалить пресет?
Удалить
Отмена
Введите новое название
@@ -60,14 +59,14 @@
Копировать
Отмена
Копия \'%s\'
- Название не должно быть пустым
+ Название не должно быть пустым
Введите новое название
Переименованите \'%s\'
Переименовать
Отмена
- Нету пресетов
- Нажмите кнопку + или скопируйте из встроенного списка пресетов
+ Нету пресетов
+ Нажмите кнопку + или включите в настройках приложения встроенное расписание
Сделать копию
Удалить
@@ -102,4 +101,22 @@
ОШИБКА!
Ошибка инициализации!\nСвяжитесь с разработчиком!\nКод: %s\n\nActivity: %s
+
+ Приложение активно
+ В ближайшее время эвентов нету
+ Отдых! (%s)
+ След.: %s
+ %s! (%s)
+ След.: %s
+
+
+ SchoolGuide - Настройки
+ Уведомление
+ Показывать пустое уведомление
+ Когда уведомление пустое, оно не будет изчезать\n(помогает если после изчезновения уведомление больше не появляется)
+ Дополнительно
+ Встроенные пресеты
+ Поместить встроенный список пресетов в список пресетов приложения
+ Возможности разработчика
+ Не рекомендуем вам использовать эту функцию!
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..6cf9ed4
--- /dev/null
+++ b/app/src/main/res/values/arrays.xml
@@ -0,0 +1,12 @@
+
+
+
+ - Reply
+ - Reply to all
+
+
+
+ - reply
+ - reply_all
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 88d11b0..9f47e90 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -22,13 +22,12 @@
Please download app update
Update center
+ (!) UPDATE AVAILABLE (!)
Game \'MathTrening\'
Settings
Debug
SchoolGuide - MathTrening
- Reset speed
- Reset score
Skip
Game settings
Score: %s
@@ -38,8 +37,8 @@
Generation:
Number 1:
Number 2:
- Minimal
- Maximum
+ MINimal
+ MAXimum
Cancel
Apply
Reset score
@@ -48,13 +47,13 @@
Reset!
Cancel
- Add
+ Add preset
Enter name
Create new preset
Create
Cancel
Delete preset \'%s\'
- Do you really want to delete preset?\nYou can restore it only if it is a preset from the built-in schedule!
+ Do you really want to delete preset?
Delete
Cancel
Enter new name
@@ -63,14 +62,14 @@
Copy
Cancel
Copy of \'%s\'
- The name should not be empty
+ The name should not be empty
Enter new name
Rename \'%s\'
Rename
Cancel
- No presets
- Click + button or copy from built-in preset list
+ No presets
+ Click + button or copy from built-in preset list
Copy
Delete
@@ -105,10 +104,22 @@
ERROR!
Initialize error!\nContact to developer!\nCode: %s\n\nActivity: %s
- Application active
- There are no events in the near future
- Rest! (%s)
- Next: %s
- %s! (%s)
- Next: %s
+
+ Application active
+ There are no events in the near future
+ Rest! (%s)
+ Next: %s
+ %s! (%s)
+ Next: %s
+
+
+ SchoolGuide - Settings
+ Поместить встроенный список пресетов в список пресетов приложения
+ Built in sdchedule
+ developer feaures
+ symmaru do not user used!
+ Andanced
+ Notification
+ Когда еведомление пустое оно не будет скрыватся (помогает если после изчезновения уведомление оно больше не появляется)
+ empty notify
diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml
new file mode 100644
index 0000000..4e7dc15
--- /dev/null
+++ b/app/src/main/res/xml/settings_preferences.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 62be091..35c44bf 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,7 +6,7 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx512m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
diff --git a/manifest/v2/builtin_schedule_v2.json b/manifest/v2/builtin_schedule_v2.json
index 635b4e8..ee2d200 100644
--- a/manifest/v2/builtin_schedule_v2.json
+++ b/manifest/v2/builtin_schedule_v2.json
@@ -1 +1,887 @@
-{"key":2,"presets":{"67139158-1238-4dc0-b2c5-62e23e7c5ecb":{"deletedInGlobal":false,"eventsInfos":{"d92f04be-4e1e-4344-8036-41e1eb55b9e9":{"name":"История"},"88d4a5d9-5f9f-4ba1-9776-db8b87f61198":{"name":"Музыка"},"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859":{"name":"Химмя"},"f99ea75b-e716-41b6-b7f6-277147ca1bab":{"name":"Русский язык"},"e4882b01-f239-4f8b-b26b-aed1a89754b2":{"name":"История К."},"781c0377-cb2d-4e91-882a-b89b811ab09a":{"name":"Ф/К"},"87ca6d1e-2f70-4697-ae49-fde93e66217c":{"name":"Физика"},"d01ca7ac-7e98-47c1-b101-2167b76b3a2b":{"name":"English lang"},"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8":{"name":"География"},"b80480ed-73b8-4c4c-b0a2-85a62065b324":{"name":"Математика"},"de7bfca7-8826-4cdd-a19e-4dfef52e0393":{"name":"Литература"},"11745285-708e-4725-bc52-27e554d938ee":{"name":"Обществознание"},"98c71e8e-5f90-48e1-87da-ac392787a027":{"name":"ОБЖ"},"e2794979-3433-43b2-9487-0224dcd4aa4a":{"name":"Биология"}},"eventsPositions":[{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":119400,"start":117000},{"eventInfo":"98c71e8e-5f90-48e1-87da-ac392787a027","end":122400,"start":120000},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":126000,"start":123600},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":129600,"start":127200},{"eventInfo":"11745285-708e-4725-bc52-27e554d938ee","end":132600,"start":130200},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":135600,"start":133200},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":205800,"start":203400},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":208800,"start":206400},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":212400,"start":210000},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":216000,"start":213600},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":219000,"start":216600},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":222000,"start":219600},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":225000,"start":222600},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":292200,"start":289800},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":295200,"start":292800},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":298800,"start":296400},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":302400,"start":300000},{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":305400,"start":303000},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":308400,"start":306000},{"eventInfo":"e4882b01-f239-4f8b-b26b-aed1a89754b2","end":311400,"start":309000},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":378600,"start":376200},{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":381600,"start":379200},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":385200,"start":382800},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":388800,"start":386400},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":391800,"start":389400},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":394800,"start":392400},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":397800,"start":395400},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":464700,"start":464700},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":470100,"start":467700},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":473100,"start":470700},{"eventInfo":"88d4a5d9-5f9f-4ba1-9776-db8b87f61198","end":476100,"start":473700},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":479100,"start":476700}],"name":"8 Класс - Основное","syncedByGlobal":false},"b25a4b4a-06b4-43a3-a0c2-8392e1079d05":{"deletedInGlobal":false,"eventsInfos":{"d92f04be-4e1e-4344-8036-41e1eb55b9e9":{"name":"История"},"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859":{"name":"Химмя"},"f99ea75b-e716-41b6-b7f6-277147ca1bab":{"name":"Русский язык"},"a9131509-8e70-4eed-bb45-c5d2a4fd9409":{"name":"Информатика"},"781c0377-cb2d-4e91-882a-b89b811ab09a":{"name":"Ф/К"},"87ca6d1e-2f70-4697-ae49-fde93e66217c":{"name":"Физика"},"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8":{"name":"География"},"d01ca7ac-7e98-47c1-b101-2167b76b3a2b":{"name":"English lang"},"f8a7569d-b466-4475-a4a7-cd79d63f9d47":{"name":"Процент"},"b80480ed-73b8-4c4c-b0a2-85a62065b324":{"name":"Математика"},"de7bfca7-8826-4cdd-a19e-4dfef52e0393":{"name":"Литература"},"11745285-708e-4725-bc52-27e554d938ee":{"name":"Обществознание"},"98c71e8e-5f90-48e1-87da-ac392787a027":{"name":"ОБЖ"},"e2794979-3433-43b2-9487-0224dcd4aa4a":{"name":"Биология"}},"eventsPositions":[{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":119400,"start":117000},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":122400,"start":120000},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":126000,"start":123600},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":129600,"start":127200},{"eventInfo":"98c71e8e-5f90-48e1-87da-ac392787a027","end":132600,"start":130200},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":135600,"start":133200},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":205200,"start":202800},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":208800,"start":206400},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":212400,"start":210000},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":216000,"start":213600},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":219000,"start":216600},{"eventInfo":"a9131509-8e70-4eed-bb45-c5d2a4fd9409","end":222000,"start":219600},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":225000,"start":222600},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":292200,"start":289800},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":295200,"start":292800},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":298800,"start":296400},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":302400,"start":300000},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":305400,"start":303000},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":308400,"start":306000},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":311400,"start":309000},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":378600,"start":376200},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":381600,"start":379200},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":385200,"start":382800},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":388800,"start":386400},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":391800,"start":389400},{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":394800,"start":392400},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":397800,"start":395400},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":467100,"start":464700},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":470100,"start":467700},{"eventInfo":"11745285-708e-4725-bc52-27e554d938ee","end":473100,"start":470700},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":476100,"start":473700},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":479100,"start":476700},{"eventInfo":"f8a7569d-b466-4475-a4a7-cd79d63f9d47","end":482100,"start":479700}],"name":"9 класс - 2 группа","syncedByGlobal":false},"0efcaa21-f1fe-4af0-b5fd-581961e2609f":{"deletedInGlobal":false,"eventsInfos":{"d92f04be-4e1e-4344-8036-41e1eb55b9e9":{"name":"История"},"a6782a1f-9178-4c0d-b3e2-6f1298574f15":{"name":"Избранные вопросы математики"},"aedbd0b3-53e6-431f-aa25-c8aacd4c8ef3":{"name":"Культура речи"},"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859":{"name":"Химмя"},"f99ea75b-e716-41b6-b7f6-277147ca1bab":{"name":"Русский язык"},"a9131509-8e70-4eed-bb45-c5d2a4fd9409":{"name":"Информатика"},"781c0377-cb2d-4e91-882a-b89b811ab09a":{"name":"Ф/К"},"0018b2da-b382-4069-8dae-83b99c6e8658":{"name":"Русская Литература"},"87ca6d1e-2f70-4697-ae49-fde93e66217c":{"name":"Физика"},"d01ca7ac-7e98-47c1-b101-2167b76b3a2b":{"name":"English lang"},"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8":{"name":"География"},"b80480ed-73b8-4c4c-b0a2-85a62065b324":{"name":"Математика"},"150904a3-7fa6-4d22-bba9-069bf7b65ed3":{"name":"Астрономия"},"8a0f5672-9d44-4a71-82dd-8c750fd9a7c0":{"name":"Правильная орфография"},"11745285-708e-4725-bc52-27e554d938ee":{"name":"Обществознание"},"de7bfca7-8826-4cdd-a19e-4dfef52e0393":{"name":"Литература"},"98c71e8e-5f90-48e1-87da-ac392787a027":{"name":"ОБЖ"},"caf4f05e-e58d-45f1-bc90-fae0f3242b79":{"name":"Проект"},"e2794979-3433-43b2-9487-0224dcd4aa4a":{"name":"Биология"},"b8e68279-578e-4fc4-8d79-550606d47b60":{"name":"Простое решение задач"},"6a7a11af-0679-475d-9b41-1eaf16ce4fee":{"name":"Классный час"}},"eventsPositions":[{"eventInfo":"11745285-708e-4725-bc52-27e554d938ee","end":119400,"start":117000},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":122400,"start":120000},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":126000,"start":123600},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":129600,"start":127200},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":132600,"start":130200},{"eventInfo":"98c71e8e-5f90-48e1-87da-ac392787a027","end":135600,"start":133200},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":138600,"start":136200},{"eventInfo":"a9131509-8e70-4eed-bb45-c5d2a4fd9409","end":205800,"start":203400},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":208800,"start":206400},{"eventInfo":"caf4f05e-e58d-45f1-bc90-fae0f3242b79","end":212400,"start":210000},{"eventInfo":"150904a3-7fa6-4d22-bba9-069bf7b65ed3","end":216000,"start":213600},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":219000,"start":216600},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":222000,"start":219600},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":225000,"start":222600},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":292200,"start":289800},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":295200,"start":292800},{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":298800,"start":296400},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":302400,"start":300000},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":305400,"start":303000},{"eventInfo":"a6782a1f-9178-4c0d-b3e2-6f1298574f15","end":308400,"start":306000},{"eventInfo":"0018b2da-b382-4069-8dae-83b99c6e8658","end":311400,"start":309000},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":378600,"start":376200},{"eventInfo":"11745285-708e-4725-bc52-27e554d938ee","end":381600,"start":379200},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":385200,"start":382800},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":388800,"start":386400},{"eventInfo":"aedbd0b3-53e6-431f-aa25-c8aacd4c8ef3","end":391800,"start":389400},{"eventInfo":"8a0f5672-9d44-4a71-82dd-8c750fd9a7c0","end":394800,"start":392400},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":397800,"start":395400},{"eventInfo":"6a7a11af-0679-475d-9b41-1eaf16ce4fee","end":464100,"start":462600},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":467100,"start":464700},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":470100,"start":467700},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":473100,"start":470700},{"eventInfo":"b8e68279-578e-4fc4-8d79-550606d47b60","end":476100,"start":473700},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":479100,"start":476700},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":482100,"start":479700}],"name":"10 Класс - Основное","syncedByGlobal":false},"25d4b091-f6db-457c-9811-6e15c86b7c50":{"deletedInGlobal":false,"eventsInfos":{"d92f04be-4e1e-4344-8036-41e1eb55b9e9":{"name":"История"},"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859":{"name":"Химмя"},"f99ea75b-e716-41b6-b7f6-277147ca1bab":{"name":"Русский язык"},"a9131509-8e70-4eed-bb45-c5d2a4fd9409":{"name":"Информатика"},"781c0377-cb2d-4e91-882a-b89b811ab09a":{"name":"Ф/К"},"87ca6d1e-2f70-4697-ae49-fde93e66217c":{"name":"Физика"},"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8":{"name":"География"},"d01ca7ac-7e98-47c1-b101-2167b76b3a2b":{"name":"English lang"},"f8a7569d-b466-4475-a4a7-cd79d63f9d47":{"name":"Процент"},"b80480ed-73b8-4c4c-b0a2-85a62065b324":{"name":"Математика"},"de7bfca7-8826-4cdd-a19e-4dfef52e0393":{"name":"Литература"},"11745285-708e-4725-bc52-27e554d938ee":{"name":"Обществознание"},"98c71e8e-5f90-48e1-87da-ac392787a027":{"name":"ОБЖ"},"e2794979-3433-43b2-9487-0224dcd4aa4a":{"name":"Биология"}},"eventsPositions":[{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":119400,"start":117000},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":122400,"start":120000},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":126000,"start":123600},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":129600,"start":127200},{"eventInfo":"98c71e8e-5f90-48e1-87da-ac392787a027","end":132600,"start":130200},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":135600,"start":133200},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":205200,"start":202800},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":208800,"start":206400},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":212400,"start":210000},{"eventInfo":"a9131509-8e70-4eed-bb45-c5d2a4fd9409","end":216000,"start":213600},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":219000,"start":216600},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":222000,"start":219600},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":225000,"start":222600},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":292200,"start":289800},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":295200,"start":292800},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":298800,"start":296400},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":302400,"start":300000},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":305400,"start":303000},{"eventInfo":"d01ca7ac-7e98-47c1-b101-2167b76b3a2b","end":308400,"start":306000},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":311400,"start":309000},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":378600,"start":376200},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":381600,"start":379200},{"eventInfo":"f99ea75b-e716-41b6-b7f6-277147ca1bab","end":385200,"start":382800},{"eventInfo":"de7bfca7-8826-4cdd-a19e-4dfef52e0393","end":388800,"start":386400},{"eventInfo":"781c0377-cb2d-4e91-882a-b89b811ab09a","end":391800,"start":389400},{"eventInfo":"f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8","end":394800,"start":392400},{"eventInfo":"e2794979-3433-43b2-9487-0224dcd4aa4a","end":397800,"start":395400},{"eventInfo":"de6ddffe-ff52-4e0d-bf60-8e89d7bd9859","end":467100,"start":464700},{"eventInfo":"d92f04be-4e1e-4344-8036-41e1eb55b9e9","end":470100,"start":467700},{"eventInfo":"11745285-708e-4725-bc52-27e554d938ee","end":473100,"start":470700},{"eventInfo":"b80480ed-73b8-4c4c-b0a2-85a62065b324","end":476100,"start":473700},{"eventInfo":"87ca6d1e-2f70-4697-ae49-fde93e66217c","end":479100,"start":476700},{"eventInfo":"f8a7569d-b466-4475-a4a7-cd79d63f9d47","end":482100,"start":479700}],"name":"9 класс - 1 группа","syncedByGlobal":false}}}
\ No newline at end of file
+{
+ "key": 3,
+ "presets": {
+ "67139158-1238-4dc0-b2c5-62e23e7c5ecb": {
+ "eventsInfos": {
+ "d92f04be-4e1e-4344-8036-41e1eb55b9e9": {
+ "name": "История"
+ },
+ "88d4a5d9-5f9f-4ba1-9776-db8b87f61198": {
+ "name": "Музыка"
+ },
+ "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859": {
+ "name": "Химия"
+ },
+ "f99ea75b-e716-41b6-b7f6-277147ca1bab": {
+ "name": "Русский язык"
+ },
+ "e4882b01-f239-4f8b-b26b-aed1a89754b2": {
+ "name": "История К."
+ },
+ "781c0377-cb2d-4e91-882a-b89b811ab09a": {
+ "name": "Ф/К"
+ },
+ "87ca6d1e-2f70-4697-ae49-fde93e66217c": {
+ "name": "Физика"
+ },
+ "d01ca7ac-7e98-47c1-b101-2167b76b3a2b": {
+ "name": "English lang"
+ },
+ "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8": {
+ "name": "География"
+ },
+ "b80480ed-73b8-4c4c-b0a2-85a62065b324": {
+ "name": "Математика"
+ },
+ "de7bfca7-8826-4cdd-a19e-4dfef52e0393": {
+ "name": "Литература"
+ },
+ "11745285-708e-4725-bc52-27e554d938ee": {
+ "name": "Обществознание"
+ },
+ "98c71e8e-5f90-48e1-87da-ac392787a027": {
+ "name": "ОБЖ"
+ },
+ "e2794979-3433-43b2-9487-0224dcd4aa4a": {
+ "name": "Биология"
+ }
+ },
+ "eventsPositions": [
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 119400,
+ "start": 117000
+ },
+ {
+ "eventInfo": "98c71e8e-5f90-48e1-87da-ac392787a027",
+ "end": 122400,
+ "start": 120000
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 126000,
+ "start": 123600
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 129600,
+ "start": 127200
+ },
+ {
+ "eventInfo": "11745285-708e-4725-bc52-27e554d938ee",
+ "end": 132600,
+ "start": 130200
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 135600,
+ "start": 133200
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 205800,
+ "start": 203400
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 208800,
+ "start": 206400
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 212400,
+ "start": 210000
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 216000,
+ "start": 213600
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 219000,
+ "start": 216600
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 222000,
+ "start": 219600
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 225000,
+ "start": 222600
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 292200,
+ "start": 289800
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 295200,
+ "start": 292800
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 298800,
+ "start": 296400
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 302400,
+ "start": 300000
+ },
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 305400,
+ "start": 303000
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 308400,
+ "start": 306000
+ },
+ {
+ "eventInfo": "e4882b01-f239-4f8b-b26b-aed1a89754b2",
+ "end": 311400,
+ "start": 309000
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 378600,
+ "start": 376200
+ },
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 381600,
+ "start": 379200
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 385200,
+ "start": 382800
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 388800,
+ "start": 386400
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 391800,
+ "start": 389400
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 394800,
+ "start": 392400
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 397800,
+ "start": 395400
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 464700,
+ "start": 464700
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 470100,
+ "start": 467700
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 473100,
+ "start": 470700
+ },
+ {
+ "eventInfo": "88d4a5d9-5f9f-4ba1-9776-db8b87f61198",
+ "end": 476100,
+ "start": 473700
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 479100,
+ "start": 476700
+ }
+ ],
+ "name": "8 Класс"
+ },
+ "b25a4b4a-06b4-43a3-a0c2-8392e1079d05": {
+ "eventsInfos": {
+ "d92f04be-4e1e-4344-8036-41e1eb55b9e9": {
+ "name": "История"
+ },
+ "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859": {
+ "name": "Химия"
+ },
+ "f99ea75b-e716-41b6-b7f6-277147ca1bab": {
+ "name": "Русский язык"
+ },
+ "a9131509-8e70-4eed-bb45-c5d2a4fd9409": {
+ "name": "Информатика"
+ },
+ "781c0377-cb2d-4e91-882a-b89b811ab09a": {
+ "name": "Ф/К"
+ },
+ "87ca6d1e-2f70-4697-ae49-fde93e66217c": {
+ "name": "Физика"
+ },
+ "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8": {
+ "name": "География"
+ },
+ "d01ca7ac-7e98-47c1-b101-2167b76b3a2b": {
+ "name": "English lang"
+ },
+ "f8a7569d-b466-4475-a4a7-cd79d63f9d47": {
+ "name": "Процент"
+ },
+ "b80480ed-73b8-4c4c-b0a2-85a62065b324": {
+ "name": "Математика"
+ },
+ "de7bfca7-8826-4cdd-a19e-4dfef52e0393": {
+ "name": "Литература"
+ },
+ "11745285-708e-4725-bc52-27e554d938ee": {
+ "name": "Обществознание"
+ },
+ "98c71e8e-5f90-48e1-87da-ac392787a027": {
+ "name": "ОБЖ"
+ },
+ "e2794979-3433-43b2-9487-0224dcd4aa4a": {
+ "name": "Биология"
+ }
+ },
+ "eventsPositions": [
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 119400,
+ "start": 117000
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 122400,
+ "start": 120000
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 126000,
+ "start": 123600
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 129600,
+ "start": 127200
+ },
+ {
+ "eventInfo": "98c71e8e-5f90-48e1-87da-ac392787a027",
+ "end": 132600,
+ "start": 130200
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 135600,
+ "start": 133200
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 205200,
+ "start": 202800
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 208800,
+ "start": 206400
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 212400,
+ "start": 210000
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 216000,
+ "start": 213600
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 219000,
+ "start": 216600
+ },
+ {
+ "eventInfo": "a9131509-8e70-4eed-bb45-c5d2a4fd9409",
+ "end": 222000,
+ "start": 219600
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 225000,
+ "start": 222600
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 292200,
+ "start": 289800
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 295200,
+ "start": 292800
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 298800,
+ "start": 296400
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 302400,
+ "start": 300000
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 305400,
+ "start": 303000
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 308400,
+ "start": 306000
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 311400,
+ "start": 309000
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 378600,
+ "start": 376200
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 381600,
+ "start": 379200
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 385200,
+ "start": 382800
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 388800,
+ "start": 386400
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 391800,
+ "start": 389400
+ },
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 394800,
+ "start": 392400
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 397800,
+ "start": 395400
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 467100,
+ "start": 464700
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 470100,
+ "start": 467700
+ },
+ {
+ "eventInfo": "11745285-708e-4725-bc52-27e554d938ee",
+ "end": 473100,
+ "start": 470700
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 476100,
+ "start": 473700
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 479100,
+ "start": 476700
+ },
+ {
+ "eventInfo": "f8a7569d-b466-4475-a4a7-cd79d63f9d47",
+ "end": 482100,
+ "start": 479700
+ }
+ ],
+ "name": "9 класс(2 группа)"
+ },
+ "0efcaa21-f1fe-4af0-b5fd-581961e2609f": {
+ "eventsInfos": {
+ "d92f04be-4e1e-4344-8036-41e1eb55b9e9": {
+ "name": "История"
+ },
+ "a6782a1f-9178-4c0d-b3e2-6f1298574f15": {
+ "name": "Избранные вопросы математики"
+ },
+ "aedbd0b3-53e6-431f-aa25-c8aacd4c8ef3": {
+ "name": "Культура речи"
+ },
+ "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859": {
+ "name": "Химия"
+ },
+ "f99ea75b-e716-41b6-b7f6-277147ca1bab": {
+ "name": "Русский язык"
+ },
+ "a9131509-8e70-4eed-bb45-c5d2a4fd9409": {
+ "name": "Информатика"
+ },
+ "781c0377-cb2d-4e91-882a-b89b811ab09a": {
+ "name": "Ф/К"
+ },
+ "0018b2da-b382-4069-8dae-83b99c6e8658": {
+ "name": "Русская Литература"
+ },
+ "87ca6d1e-2f70-4697-ae49-fde93e66217c": {
+ "name": "Физика"
+ },
+ "d01ca7ac-7e98-47c1-b101-2167b76b3a2b": {
+ "name": "English lang"
+ },
+ "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8": {
+ "name": "География"
+ },
+ "b80480ed-73b8-4c4c-b0a2-85a62065b324": {
+ "name": "Математика"
+ },
+ "150904a3-7fa6-4d22-bba9-069bf7b65ed3": {
+ "name": "Астрономия"
+ },
+ "8a0f5672-9d44-4a71-82dd-8c750fd9a7c0": {
+ "name": "Правильная орфография"
+ },
+ "11745285-708e-4725-bc52-27e554d938ee": {
+ "name": "Обществознание"
+ },
+ "de7bfca7-8826-4cdd-a19e-4dfef52e0393": {
+ "name": "Литература"
+ },
+ "98c71e8e-5f90-48e1-87da-ac392787a027": {
+ "name": "ОБЖ"
+ },
+ "caf4f05e-e58d-45f1-bc90-fae0f3242b79": {
+ "name": "Проект"
+ },
+ "e2794979-3433-43b2-9487-0224dcd4aa4a": {
+ "name": "Биология"
+ },
+ "b8e68279-578e-4fc4-8d79-550606d47b60": {
+ "name": "Простое решение задач"
+ },
+ "6a7a11af-0679-475d-9b41-1eaf16ce4fee": {
+ "name": "Классный час"
+ }
+ },
+ "eventsPositions": [
+ {
+ "eventInfo": "11745285-708e-4725-bc52-27e554d938ee",
+ "end": 119400,
+ "start": 117000
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 122400,
+ "start": 120000
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 126000,
+ "start": 123600
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 129600,
+ "start": 127200
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 132600,
+ "start": 130200
+ },
+ {
+ "eventInfo": "98c71e8e-5f90-48e1-87da-ac392787a027",
+ "end": 135600,
+ "start": 133200
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 138600,
+ "start": 136200
+ },
+ {
+ "eventInfo": "a9131509-8e70-4eed-bb45-c5d2a4fd9409",
+ "end": 205800,
+ "start": 203400
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 208800,
+ "start": 206400
+ },
+ {
+ "eventInfo": "caf4f05e-e58d-45f1-bc90-fae0f3242b79",
+ "end": 212400,
+ "start": 210000
+ },
+ {
+ "eventInfo": "150904a3-7fa6-4d22-bba9-069bf7b65ed3",
+ "end": 216000,
+ "start": 213600
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 219000,
+ "start": 216600
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 222000,
+ "start": 219600
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 225000,
+ "start": 222600
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 292200,
+ "start": 289800
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 295200,
+ "start": 292800
+ },
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 298800,
+ "start": 296400
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 302400,
+ "start": 300000
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 305400,
+ "start": 303000
+ },
+ {
+ "eventInfo": "a6782a1f-9178-4c0d-b3e2-6f1298574f15",
+ "end": 308400,
+ "start": 306000
+ },
+ {
+ "eventInfo": "0018b2da-b382-4069-8dae-83b99c6e8658",
+ "end": 311400,
+ "start": 309000
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 378600,
+ "start": 376200
+ },
+ {
+ "eventInfo": "11745285-708e-4725-bc52-27e554d938ee",
+ "end": 381600,
+ "start": 379200
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 385200,
+ "start": 382800
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 388800,
+ "start": 386400
+ },
+ {
+ "eventInfo": "aedbd0b3-53e6-431f-aa25-c8aacd4c8ef3",
+ "end": 391800,
+ "start": 389400
+ },
+ {
+ "eventInfo": "8a0f5672-9d44-4a71-82dd-8c750fd9a7c0",
+ "end": 394800,
+ "start": 392400
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 397800,
+ "start": 395400
+ },
+ {
+ "eventInfo": "6a7a11af-0679-475d-9b41-1eaf16ce4fee",
+ "end": 464100,
+ "start": 462600
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 467100,
+ "start": 464700
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 470100,
+ "start": 467700
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 473100,
+ "start": 470700
+ },
+ {
+ "eventInfo": "b8e68279-578e-4fc4-8d79-550606d47b60",
+ "end": 476100,
+ "start": 473700
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 479100,
+ "start": 476700
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 482100,
+ "start": 479700
+ }
+ ],
+ "name": "10 Класс"
+ },
+ "25d4b091-f6db-457c-9811-6e15c86b7c50": {
+ "eventsInfos": {
+ "d92f04be-4e1e-4344-8036-41e1eb55b9e9": {
+ "name": "История"
+ },
+ "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859": {
+ "name": "Химия"
+ },
+ "f99ea75b-e716-41b6-b7f6-277147ca1bab": {
+ "name": "Русский язык"
+ },
+ "a9131509-8e70-4eed-bb45-c5d2a4fd9409": {
+ "name": "Информатика"
+ },
+ "781c0377-cb2d-4e91-882a-b89b811ab09a": {
+ "name": "Ф/К"
+ },
+ "87ca6d1e-2f70-4697-ae49-fde93e66217c": {
+ "name": "Физика"
+ },
+ "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8": {
+ "name": "География"
+ },
+ "d01ca7ac-7e98-47c1-b101-2167b76b3a2b": {
+ "name": "English lang"
+ },
+ "f8a7569d-b466-4475-a4a7-cd79d63f9d47": {
+ "name": "Процент"
+ },
+ "b80480ed-73b8-4c4c-b0a2-85a62065b324": {
+ "name": "Математика"
+ },
+ "de7bfca7-8826-4cdd-a19e-4dfef52e0393": {
+ "name": "Литература"
+ },
+ "11745285-708e-4725-bc52-27e554d938ee": {
+ "name": "Обществознание"
+ },
+ "98c71e8e-5f90-48e1-87da-ac392787a027": {
+ "name": "ОБЖ"
+ },
+ "e2794979-3433-43b2-9487-0224dcd4aa4a": {
+ "name": "Биология"
+ }
+ },
+ "eventsPositions": [
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 119400,
+ "start": 117000
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 122400,
+ "start": 120000
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 126000,
+ "start": 123600
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 129600,
+ "start": 127200
+ },
+ {
+ "eventInfo": "98c71e8e-5f90-48e1-87da-ac392787a027",
+ "end": 132600,
+ "start": 130200
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 135600,
+ "start": 133200
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 205200,
+ "start": 202800
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 208800,
+ "start": 206400
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 212400,
+ "start": 210000
+ },
+ {
+ "eventInfo": "a9131509-8e70-4eed-bb45-c5d2a4fd9409",
+ "end": 216000,
+ "start": 213600
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 219000,
+ "start": 216600
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 222000,
+ "start": 219600
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 225000,
+ "start": 222600
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 292200,
+ "start": 289800
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 295200,
+ "start": 292800
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 298800,
+ "start": 296400
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 302400,
+ "start": 300000
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 305400,
+ "start": 303000
+ },
+ {
+ "eventInfo": "d01ca7ac-7e98-47c1-b101-2167b76b3a2b",
+ "end": 308400,
+ "start": 306000
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 311400,
+ "start": 309000
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 378600,
+ "start": 376200
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 381600,
+ "start": 379200
+ },
+ {
+ "eventInfo": "f99ea75b-e716-41b6-b7f6-277147ca1bab",
+ "end": 385200,
+ "start": 382800
+ },
+ {
+ "eventInfo": "de7bfca7-8826-4cdd-a19e-4dfef52e0393",
+ "end": 388800,
+ "start": 386400
+ },
+ {
+ "eventInfo": "781c0377-cb2d-4e91-882a-b89b811ab09a",
+ "end": 391800,
+ "start": 389400
+ },
+ {
+ "eventInfo": "f01a4e40-60e7-4b7e-89f1-7fdc6c1998f8",
+ "end": 394800,
+ "start": 392400
+ },
+ {
+ "eventInfo": "e2794979-3433-43b2-9487-0224dcd4aa4a",
+ "end": 397800,
+ "start": 395400
+ },
+ {
+ "eventInfo": "de6ddffe-ff52-4e0d-bf60-8e89d7bd9859",
+ "end": 467100,
+ "start": 464700
+ },
+ {
+ "eventInfo": "d92f04be-4e1e-4344-8036-41e1eb55b9e9",
+ "end": 470100,
+ "start": 467700
+ },
+ {
+ "eventInfo": "11745285-708e-4725-bc52-27e554d938ee",
+ "end": 473100,
+ "start": 470700
+ },
+ {
+ "eventInfo": "b80480ed-73b8-4c4c-b0a2-85a62065b324",
+ "end": 476100,
+ "start": 473700
+ },
+ {
+ "eventInfo": "87ca6d1e-2f70-4697-ae49-fde93e66217c",
+ "end": 479100,
+ "start": 476700
+ },
+ {
+ "eventInfo": "f8a7569d-b466-4475-a4a7-cd79d63f9d47",
+ "end": 482100,
+ "start": 479700
+ }
+ ],
+ "name": "9 класс(1 группа)"
+ }
+ }
+}
\ No newline at end of file
diff --git a/manifest/v2/keys_v2.json b/manifest/v2/keys_v2.json
index eeab6cf..fa46798 100644
--- a/manifest/v2/keys_v2.json
+++ b/manifest/v2/keys_v2.json
@@ -1,4 +1,4 @@
{
- "versionManifest": 1,
- "builtinSchedule": 2
+ "versionManifest": 2,
+ "builtinSchedule": 3
}
\ No newline at end of file
diff --git a/manifest/v2/version_manifest_v2.json b/manifest/v2/version_manifest_v2.json
index 650daa8..dfc518c 100644
--- a/manifest/v2/version_manifest_v2.json
+++ b/manifest/v2/version_manifest_v2.json
@@ -1,8 +1,8 @@
{
- "key": 1,
+ "key": 2,
"latestVersion": {
- "code": 37,
- "name": "0.4 - Rewritten",
+ "code": 36,
+ "name": "0.5 - Rewritten",
"download": {
"release": "https://google.com/release",
"debug": "https://google.com/debug"