feat: add refresh functionality to UI and document future feature requests
This commit is contained in:
@@ -41,4 +41,10 @@ Den færdige fil findes i mappen `dist/`. Husk at placere `settings.json` i samm
|
||||
"tenant_id": "DIN_TENANT_ID",
|
||||
"temp_dir": "C:\\Temp_SP"
|
||||
}
|
||||
|
||||
## Feature Request
|
||||
1. Tilføj funktion til at gemme og administrere, flere tenants.
|
||||
2. Debug log til at se hvad der sker i baggrunden.
|
||||
3. Exteded log for 14 dage, som logger alle handlinger brugeren forateager sig i appen.
|
||||
4. Licens styring, så man kan licencere programmet til kunder. Der skal være mulighed for 1 år, 3 år og unlimited.
|
||||
```
|
||||
|
||||
@@ -59,6 +59,7 @@ STRINGS = {
|
||||
"btn_save_changes": "💾 Gem ændringer i SharePoint",
|
||||
"btn_login": "Log ind",
|
||||
"btn_logged_in": "Logget ind",
|
||||
"btn_refresh": "🔄 Opdater",
|
||||
"btn_upload_file": "📤 Upload Fil",
|
||||
"btn_upload_folder": "📁 Upload Mappe",
|
||||
"btn_new_folder": "➕ Ny Mappe",
|
||||
@@ -128,6 +129,7 @@ STRINGS = {
|
||||
"btn_save_changes": "💾 Save changes to SharePoint",
|
||||
"btn_login": "Login",
|
||||
"btn_logged_in": "Logged in",
|
||||
"btn_refresh": "🔄 Refresh",
|
||||
"btn_upload_file": "📤 Upload File",
|
||||
"btn_upload_folder": "📁 Upload Folder",
|
||||
"btn_new_folder": "➕ New Folder",
|
||||
@@ -315,6 +317,11 @@ class SharePointApp(wx.Frame):
|
||||
self.home_btn.Bind(wx.EVT_BUTTON, self.load_sites)
|
||||
nav_hbox.Add(self.home_btn, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
|
||||
self.refresh_btn = wx.Button(nav_panel, label=self.get_txt("btn_refresh"), size=(100, 30))
|
||||
self.refresh_btn.Disable()
|
||||
self.refresh_btn.Bind(wx.EVT_BUTTON, self.on_refresh)
|
||||
nav_hbox.Add(self.refresh_btn, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
|
||||
# NY KNAP: Gem ændringer (Vises kun ved redigering)
|
||||
self.done_btn = wx.Button(nav_panel, label=self.get_txt("btn_save_changes"), size=(200, 30))
|
||||
self.done_btn.SetBackgroundColour(wx.Colour(255, 69, 0)) # OrangeRed
|
||||
@@ -372,6 +379,7 @@ class SharePointApp(wx.Frame):
|
||||
self.tree_ctrl.AssignImageList(self.image_list)
|
||||
self.tree_ctrl.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.on_tree_expanding)
|
||||
self.tree_ctrl.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_tree_selected)
|
||||
self.tree_ctrl.Bind(wx.EVT_TREE_ITEM_MENU, self.on_tree_right_click)
|
||||
|
||||
# Right side: File Area - ListCtrl
|
||||
self.list_ctrl = wx.ListCtrl(self.splitter, style=wx.LC_REPORT | wx.BORDER_SUNKEN)
|
||||
@@ -450,8 +458,26 @@ class SharePointApp(wx.Frame):
|
||||
new_folder_item = menu.Append(wx.ID_ANY, self.get_txt("msg_new_folder_here"))
|
||||
self.Bind(wx.EVT_MENU, self.on_new_folder_clicked, new_folder_item)
|
||||
|
||||
# Tilføj altid opdater punkt til sidst
|
||||
if menu.GetMenuItemCount() > 0:
|
||||
self.PopupMenu(menu)
|
||||
menu.AppendSeparator()
|
||||
|
||||
refresh_item = menu.Append(wx.ID_ANY, self.get_txt("btn_refresh"))
|
||||
self.Bind(wx.EVT_MENU, self.on_refresh, refresh_item)
|
||||
|
||||
self.PopupMenu(menu)
|
||||
menu.Destroy()
|
||||
|
||||
def on_tree_right_click(self, event):
|
||||
if self.is_editing: return
|
||||
item = event.GetItem()
|
||||
if not item.IsOk() or item == self.tree_root: return
|
||||
|
||||
self.tree_ctrl.SelectItem(item)
|
||||
menu = wx.Menu()
|
||||
refresh_item = menu.Append(wx.ID_ANY, self.get_txt("btn_refresh"))
|
||||
self.Bind(wx.EVT_MENU, self.on_refresh, refresh_item)
|
||||
self.PopupMenu(menu)
|
||||
menu.Destroy()
|
||||
|
||||
# --- FILHÅNDTERING (Upload, Slet, Ny Mappe) ---
|
||||
@@ -686,6 +712,7 @@ class SharePointApp(wx.Frame):
|
||||
self.upload_btn.SetLabel(self.get_txt("btn_upload_file"))
|
||||
self.upload_folder_btn.SetLabel(self.get_txt("btn_upload_folder"))
|
||||
self.new_folder_btn.SetLabel(self.get_txt("btn_new_folder"))
|
||||
self.refresh_btn.SetLabel(self.get_txt("btn_refresh"))
|
||||
|
||||
if self.access_token:
|
||||
self.login_btn.SetLabel(self.get_txt("btn_logged_in"))
|
||||
@@ -721,9 +748,31 @@ class SharePointApp(wx.Frame):
|
||||
self.list_ctrl.Enable(not lock)
|
||||
self.back_btn.Enable(not lock if len(self.history) > 1 else False)
|
||||
self.home_btn.Enable(not lock)
|
||||
self.refresh_btn.Enable(not lock)
|
||||
self.login_btn.Enable(not lock)
|
||||
wx.CallAfter(_do)
|
||||
|
||||
def on_refresh(self, event=None):
|
||||
if self.is_editing: return
|
||||
|
||||
selected = self.tree_ctrl.GetSelection()
|
||||
if not selected.IsOk() or selected == self.tree_root:
|
||||
self.load_sites()
|
||||
return
|
||||
|
||||
data = self.tree_item_data.get(selected)
|
||||
if data:
|
||||
self.set_status(f"Opdaterer '{data['name']}'...")
|
||||
# Opdater Listekontrol (højre side)
|
||||
threading.Thread(target=self._fetch_list_contents_bg, args=(data,), daemon=True).start()
|
||||
|
||||
# Opdater Træstruktur (venstre side) - Ryd og indlæs igen hvis det er en container
|
||||
if data['type'] in ["SITE", "DRIVE", "FOLDER"]:
|
||||
data["loaded"] = False # Tillad genindlæsning
|
||||
if self.tree_ctrl.IsExpanded(selected):
|
||||
# Genindlæs træets børn asynkront
|
||||
threading.Thread(target=self._fetch_tree_children_bg, args=(selected, data), daemon=True).start()
|
||||
|
||||
def _refresh_current_view(self):
|
||||
sel = self.tree_ctrl.GetSelection()
|
||||
if sel.IsOk():
|
||||
@@ -819,6 +868,7 @@ class SharePointApp(wx.Frame):
|
||||
self.login_btn.SetLabel(self.get_txt("btn_logged_in"))
|
||||
self.login_btn.SetBackgroundColour(wx.Colour(200, 200, 200)) # Grå
|
||||
self.home_btn.Enable()
|
||||
self.refresh_btn.Enable()
|
||||
self.load_sites()
|
||||
else:
|
||||
self.set_status(self.get_txt("status_login_failed"))
|
||||
|
||||
Reference in New Issue
Block a user