Ensured, that last minute changes are written to disk
This commit is contained in:
		
							parent
							
								
									97f3226d17
								
							
						
					
					
						commit
						24a7093674
					
				@ -50,12 +50,6 @@ public sealed partial class Translation : UserControl
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private async void SaveChanges(object? sender, ElapsedEventArgs e)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (this.currentTranslationId > -1)
 | 
					 | 
				
			||||||
            await TranslationProcessor.SaveChangedTranslation(this.currentTranslationId, this.textBox.Text);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public async Task Configure(DataModel.Database.Translation translation)
 | 
					    public async Task Configure(DataModel.Database.Translation translation)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        this.isLoading = true;
 | 
					        this.isLoading = true;
 | 
				
			||||||
@ -78,5 +72,16 @@ public sealed partial class Translation : UserControl
 | 
				
			|||||||
            this.saveTimer.Stop();
 | 
					            this.saveTimer.Stop();
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        this.saveTimer.Start();
 | 
					        this.saveTimer.Start();
 | 
				
			||||||
 | 
					        if(this.ParentForm is UI_WinForms.Main main)
 | 
				
			||||||
 | 
					            main.AddDeferredSaveOperation(this.currentTranslationId, () => this.SaveChanges(null, null));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private async void SaveChanges(object? sender, ElapsedEventArgs e)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (this.currentTranslationId > -1)
 | 
				
			||||||
 | 
					            await TranslationProcessor.SaveChangedTranslation(this.currentTranslationId, this.textBox.Text);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(this.ParentForm is UI_WinForms.Main main)
 | 
				
			||||||
 | 
					            main.RemoveDeferredSaveOperation(this.currentTranslationId);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								I18N Commander/UI WinForms/Main.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								I18N Commander/UI WinForms/Main.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -52,6 +52,7 @@
 | 
				
			|||||||
            this.Name = "Main";
 | 
					            this.Name = "Main";
 | 
				
			||||||
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
 | 
					            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
 | 
				
			||||||
            this.Text = "I18N Commander";
 | 
					            this.Text = "I18N Commander";
 | 
				
			||||||
 | 
					            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing);
 | 
				
			||||||
            this.ResumeLayout(false);
 | 
					            this.ResumeLayout(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -2,8 +2,32 @@ namespace UI_WinForms;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public partial class Main : Form
 | 
					public partial class Main : Form
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    private readonly Dictionary<int, Action> deferredSaveOperations = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Main()
 | 
					    public Main()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        this.InitializeComponent();
 | 
					        this.InitializeComponent();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void Main_FormClosing(object sender, FormClosingEventArgs e)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach (var (_, action) in this.deferredSaveOperations)
 | 
				
			||||||
 | 
					            action();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        this.deferredSaveOperations.Clear();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    internal void AddDeferredSaveOperation(int id, Action action)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (this.deferredSaveOperations.ContainsKey(id))
 | 
				
			||||||
 | 
					            this.deferredSaveOperations.Remove(id);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        this.deferredSaveOperations.Add(id, action);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    internal void RemoveDeferredSaveOperation(int id)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (this.deferredSaveOperations.ContainsKey(id))
 | 
				
			||||||
 | 
					            this.deferredSaveOperations.Remove(id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user