From 94c64a9dec915ccbe061baf9b47a8a2bd617731a Mon Sep 17 00:00:00 2001 From: ske087 Date: Mon, 2 Jun 2025 16:16:16 +0300 Subject: [PATCH] updated with main screen --- __pycache__/utils.cpython-311.pyc | Bin 0 -> 9908 bytes info.txt | 3 ++ main.py | 44 +++++++++++++++++++++++--- resources/credentials.enc | 2 +- traccar.kv | 51 ++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 __pycache__/utils.cpython-311.pyc create mode 100644 info.txt diff --git a/__pycache__/utils.cpython-311.pyc b/__pycache__/utils.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a557f482e77f3afda4699c3dd3ac64b4a27ae611 GIT binary patch literal 9908 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 X45(Qp4y~h literal 0 HcmV?d00001 diff --git a/info.txt b/info.txt new file mode 100644 index 0000000..a91ad01 --- /dev/null +++ b/info.txt @@ -0,0 +1,3 @@ +python -m venv track +source track/bin/activate +pip install -r reqirements.txt \ No newline at end of file diff --git a/main.py b/main.py index ee330bf..f69639c 100644 --- a/main.py +++ b/main.py @@ -148,8 +148,8 @@ class SettingsScreen(Screen): self.ids.result_label.text = f"Failed to save settings: {str(e)}" -# Home Screen -class HomeScreen(Screen): +# Get Trip From Server Screen +class GetTripFromServer(Screen): # Renamed from HomeScreen server_info_text = StringProperty("LOADING DATA...") # Default text for the label server_box_color = ListProperty([0.984, 0.553, 0.078, 1]) # Default yellow color (#FB8D14) device_mapping = {} # Store the mapping of device names to IDs @@ -255,8 +255,6 @@ class HomeScreen(Screen): popup = Popup(title="Select a Date", content=layout, size_hint=(0.8, 0.8)) popup.open() - - def get_trip_server_data(self): """Handle the Get trip server data button press.""" selected_device = self.ids.devices_spinner.text @@ -331,6 +329,43 @@ class RegisterScreen(Screen): except Exception as e: self.ids.result_label.text = f"Error checking user: {str(e)}" return False + + +# Home Screen +class HomeScreen(Screen): + def on_pre_enter(self): + """Load existing projects/trips when the screen is entered.""" + self.load_existing_projects() + + def load_existing_projects(self): + """Load the list of existing projects/trips.""" + projects_folder = os.path.join(RESOURCES_FOLDER, "projects") + if not os.path.exists(projects_folder): + os.makedirs(projects_folder) + + # Clear the list area + self.ids.projects_list.clear_widgets() + + # Populate the list with existing projects/trips + for project in os.listdir(projects_folder): + project_button = Button( + text=project, + size_hint_y=None, + height=40, + on_press=lambda instance: self.open_project(instance.text) + ) + self.ids.projects_list.add_widget(project_button) + + def open_project(self, project_name): + """Handle opening an existing project/trip.""" + print(f"Opening project: {project_name}") + self.ids.result_label.text = f"Opened project: {project_name}" + + def create_new_project(self): + """Navigate to the GetTripFromServer screen to create a new project/trip.""" + self.manager.current = "get_trip_from_server" + + # Main App class TraccarApp(App): def build(self): @@ -345,6 +380,7 @@ class TraccarApp(App): sm = ScreenManager() sm.add_widget(LoginScreen(name="login")) sm.add_widget(HomeScreen(name="home")) # Add the HomeScreen + sm.add_widget(GetTripFromServer(name="get_trip_from_server")) # Updated reference sm.add_widget(SettingsScreen(name="settings")) # Add the renamed SettingsScreen sm.add_widget(RegisterScreen(name="register")) # Add the RegisterScreen diff --git a/resources/credentials.enc b/resources/credentials.enc index c7d9fe0..7a996ee 100644 --- a/resources/credentials.enc +++ b/resources/credentials.enc @@ -1 +1 @@ -gAAAAABoPZqrY8gNIQXxQ_TAwdtbkZWX-zhwrx7hLuBFXH0M47fThQkAAG0vi8pMJhRnFipZ7t2Nj7SoVhjQqwHo4WOs7IH7lJCKSReeQT-1MdB0fYG16foBJpxK29kz-F9YRjCELQ0m \ No newline at end of file +gAAAAABoPaPrItydUFVvwuzoJNOIF45pusZlJtW62JzZ74gfMb04ZfpUkkZq2Vl7TVSruG0_vH9b-ig_WFInrvwSTcxxN1hRN3Xz9yLdgZ_7qfE3qFS_KZpNtjW_5l9Fj5gpDAXJwX2v \ No newline at end of file diff --git a/traccar.kv b/traccar.kv index cbe4143..69243c6 100644 --- a/traccar.kv +++ b/traccar.kv @@ -145,6 +145,47 @@ size_hint: (1, 0.2) : + BoxLayout: + orientation: "vertical" + padding: 10 + spacing: 10 + canvas.before: + Color: + rgba: 0.11, 0.10, 0.15, 1 # Background color: #1C1A27 + Rectangle: + pos: self.pos + size: self.size + + Label: + text: "Welcome to Home Screen" + font_size: 24 + size_hint_y: None + height: 50 + color: 1, 1, 1, 1 # White text color + + ScrollView: + size_hint: (1, 0.6) + GridLayout: + id: projects_list + cols: 1 + size_hint_y: None + height: self.minimum_height + + Button: + text: "Create New Project / Trip" + size_hint_y: None + height: 50 + background_color: 0.341, 0.235, 0.980, 1 # Purple color (#573CFA) + on_press: root.create_new_project() + + Label: + id: result_label + text: "" + size_hint_y: None + height: 30 + color: 1, 1, 1, 1 # White text color + +: BoxLayout: orientation: "vertical" padding: 20 @@ -242,6 +283,16 @@ font_size: 14 # Reduced font size size_hint: (1, 0.8) + # Fourth row: Back to Home button + Button: + text: "Back to Home" + size_hint_y: None + height: 50 + size_hint_x: 0.8 + pos_hint: {"center_x": 0.5} + background_color: 0.341, 0.235, 0.980, 1 # Purple color (#573CFA) + on_press: app.root.current = "home" + : BoxLayout: orientation: "vertical"