messenger finalizat
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import json
|
||||
import tkinter as tk
|
||||
from app.http import request_builder
|
||||
from app.views.chat import ChatWindow
|
||||
from app.views.user_frame import UserFrame
|
||||
|
||||
|
||||
class MainPageView(tk.Frame):
|
||||
def __init__(self, master=None):
|
||||
super().__init__(master)
|
||||
self.form_frame = None
|
||||
self.define_http_params()
|
||||
self.create_widgets()
|
||||
|
||||
def define_http_params(self):
|
||||
self.url = "http://localhost:8000/users/get_all"
|
||||
self.headers = {"Content-Type": "application/json"}
|
||||
self.method = "GET"
|
||||
self.params = None
|
||||
self.body = None
|
||||
|
||||
def create_widgets(self):
|
||||
# Create a main frame to center the user frame and button frame
|
||||
main_frame = tk.Frame(self.master)
|
||||
main_frame.pack(expand=True)
|
||||
|
||||
# Create a frame to hold the user frames
|
||||
user_frame_container = tk.Frame(main_frame)
|
||||
user_frame_container.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
|
||||
|
||||
users_data = self.get_user_list()
|
||||
users_data = [user for user in users_data if user[1] != self.master.current_logged_user['username']]
|
||||
|
||||
# Display users dynamically with two users per row
|
||||
for i in range(0, len(users_data)):
|
||||
user_data_slice = users_data[i]
|
||||
|
||||
# Calculate the row and column for the UserFrame in the grid
|
||||
row = i // 2
|
||||
column = i % 2
|
||||
|
||||
user_frame_instance = UserFrame(user_frame_container, user_data_slice, self.master.current_logged_user,
|
||||
self.open_chat)
|
||||
user_frame_instance.grid(row=row, column=column, padx=10, pady=10)
|
||||
|
||||
# Create a frame to hold the buttons
|
||||
button_frame = tk.Frame(main_frame)
|
||||
button_frame.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
|
||||
|
||||
# Create buttons in the button frame
|
||||
logout_button = tk.Button(button_frame, text="Logout", command=self.master.change_to_initial_view)
|
||||
|
||||
# Pack buttons in the button frame
|
||||
logout_button.pack(padx=5, pady=5)
|
||||
|
||||
def return_to_initial_view(self):
|
||||
self.master.change_to_initial_view()
|
||||
|
||||
def open_chat(self, user_data):
|
||||
# Pass both the clicked user data and the current logged user info to ChatWindow
|
||||
chat_window = ChatWindow(self, user_data, self.master.current_logged_user)
|
||||
chat_window.mainloop() # Main loop for the new window
|
||||
|
||||
def get_user_list(self):
|
||||
request_builder.set_url(self.url)
|
||||
request_builder.set_headers(self.headers)
|
||||
request_builder.set_method(self.method)
|
||||
request_builder.set_body(self.body)
|
||||
request_builder.set_params(self.params)
|
||||
|
||||
json_string = request_builder.build().make_request().text
|
||||
data = json.loads(json_string)
|
||||
|
||||
return data.get('users', [])
|
||||
Reference in New Issue
Block a user