-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainApp.py
More file actions
96 lines (74 loc) · 3.07 KB
/
mainApp.py
File metadata and controls
96 lines (74 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import os
# from kivy.app import App
from kivymd.app import MDApp # replace karena sekarang menggunakan kivymd
from kivy.uix.screenmanager import ScreenManager
from kivy.uix.floatlayout import FloatLayout
# page module
from page.dashboard.dashboard import DashboardScreen
from page.share.share import ShareScreen
from page.profil.profil import ProfilScreen
from components.infoPopup import InfoPopup
from database.session import session
from database.database import database
from user.signIn import SignIn
from user.signUp import SignUp
from page.profil.screenItems.settings import Settings
from page.profil.screenItems.daftarFile import DaftarFile
daftarScreen = {
"dashboard": DashboardScreen, # akan muncul sebagai tampilan utama
"share": ShareScreen,
"profil": ProfilScreen,
# daftar screen untuk user
"signIn": SignIn,
"signUp": SignUp,
# screen yang akan di gunakan di profile
"settings": Settings,
"daftar-file": DaftarFile,
}
class mainApp(MDApp):
def __init__(self, **kywargs):
super().__init__(*kywargs)
self.screenManager = ScreenManager()
self.root_layout = FloatLayout() # layout utama untuk menghandle popup
self.root_layout.add_widget(self.screenManager)
def build(self):
self.title = "P share"
for name, screen_class in daftarScreen.items():
# name adalah nama screen yg aktif ,
#!perhatian screen_manager akan di kirim ke setiap componets
# jadi perhaikan agar tidak masuk ke parameter **kywargs
self.screenManager.add_widget(
screen_class(name=name, screen_manager=self.screenManager))
return self.root_layout
# Saat aplikais pertama kali di jalankan
def on_start(self):
database.start(database.databasePath)
# AUTH cache sesion
# di sini saya validari Aut karena di gunakan di banyak screen nantik
if session.cek_data():
self.screenManager.current = "dashboard"
else:
self.screenManager.current = "signIn"
# Saat aplikasi di Tutup (tidak secara pakasa)
def on_stop(self):
print("palikasi di tutup")
session.save()
database.save()
# gunakan untuk di pangggil nantik di setiap sub
def show_popup(self, title: str, type: str, timer: float = 1.5):
'''akses dengan app =
from kivymd.app import MDApp
MDApp.get_running_app()
app.show_popup("Ini dari Komponen lain!","sucess",1.4)'''
infoPopup = InfoPopup(title=title, type=type, timer=timer)
infoPopup.show_popup()
# Pastikan popup berada di layer teratas dengan menambahkannya terakhir
# Jika ada popup lama, hapus dulu untuk mencegah penumpukan
existing_popups = [
child for child in self.root_layout.children if isinstance(child, InfoPopup)]
for popup in existing_popups:
self.root_layout.remove_widget(popup)
# Tambahkan popup baru ke layer teratas
self.root_layout.add_widget(infoPopup)
if __name__ == "__main__":
mainApp().run()