Dzięki ponownie :)
Postarałem się zastosować do Twoich porad a także zmieniłem parę rzeczy. Prezenter mocno mi się skrócił i jest tam o wiele mnie kodu niż na początku - teraz tylko wywołuje metody modelu i widoku ale coś zostało. W prezenterze jest pole z załadowanymi ścieżkami do zdjęć które są przekazywane do parametru metody konwertującej. To może tak zostać czy jest jakiś sposób aby się tego pozbyć ?
Zmieniłem także klasę
Kopiuj
ImageConvertProperties
Dodałem tam właściwości pozwalające na pobieranie aktualnie dostępnych metod konwersji a także logika konwertowania stringa do Enum lub ImageFormat została przeniesiona do właściwości tylko do zapisu.
Tak to teraz wygląda :
Kopiuj
/* jakies pola klasy */
public static string[] AvailableInterpolationModes
public static string[] AvalilableCompositionQuality
public static string[] AvalilableSmoothingModes
public static string[] AvailableImageFormats
public string InterpolationMode
public string CompositionQuality
public string SmoothingMode
public string ImageFormat
i widok teraz nie robi żadnego Enum.GetNames tylko coś takiego:
Kopiuj
//pobieranie
ComboBox.Items.AddRange(ImageConvertProperties.AvalilableCompositionQuality)
//zapisywanie
_convertProperties.CompositionQuality = comboboxZQuality.SelectedItem.ToString();
Kontakt modelu z widokiem przebiega przez strukturę (tak jak wcześniej) tylko trochę to zmieniłem :
Kopiuj
public void LoadImages(string path, bool deepSearch)
{
ImagesConverter converter = ImagesConverter.GetInstance();
string[] paths = converter.GetAllImagesPaths(path,deepSearch);
ImageInfo[] info = ImageInfo.CreateImageInfoFromPaths(paths);
this._loadedImages = paths;
this._view.ActualizeLoadedImages(info);
}
ImageConverter pobiera tylko ścieżki obrazków a ImageInfo już sobie to sam zamienia i jest przekazywane do widoku.
Co do 1 punktu to raczej póki co zostawię sobie go jak już ogarnę ten wzorzec lepiej ;)
Ale mam takie pytanie. Jak miała by wyglądać obsługa błędów w programie ? Model powinien wywalać błąd a presenter go obsługiwać ? A jeśli chciałbym wyświetlić jakąś informację gdzie występuje błąd np. błędna ścieżka w TextBox to w interface widoku powinna być jakaś metoda np. SourcePathError() i kiedy model wywala błąd to presenter go obsługuje i wywołuję tę metodę ? Nie wiem właśnie jak coś takiego zaimplementować ponieważ wydaje mi się to naiwne podejście - będzie bardzo dużo metod do obsługi błędów.
Tak więc cały kod jest na github.
Pozdrawiam
Astrocyt