Skip to content

Commit

Permalink
version 2.4.6643 build 31257 untested
Browse files Browse the repository at this point in the history
  • Loading branch information
fahminlb33 committed Mar 10, 2018
1 parent 7384e00 commit 9e2d53a
Show file tree
Hide file tree
Showing 46 changed files with 10,265 additions and 6,717 deletions.
1 change: 1 addition & 0 deletions Moviebase.Core/Diagnostics/NetworkObserver.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Net.NetworkInformation;
using Moviebase.Core.Natives;

namespace Moviebase.Core.Diagnostics
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ public string GetExtension()

private string InternalSwapName(string input, string swapText)
{
if (!input.Contains(swapText)) return null;
if (input.LastIndexOf(swapText, StringComparison.Ordinal) > 0) return null;

var removed = input.Replace(swapText, "");
return removed.Trim() + ", " + swapText;
Expand Down
8 changes: 1 addition & 7 deletions Moviebase.Core/MVP/FormExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,12 @@
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Moviebase.Core.Diagnostics;
// ReSharper disable LocalizableElement

namespace Moviebase.Core.MVP
{
public static class FormExtensions
{
public static ValidationSupport EnsureInternetConnected(this ValidationSupport support)
{
support.IsTrue(() => NetworkObserver.Instance.IsInternetConnected(), "Internet is not connected.");
return support;
}

public static int FindIndex<T>(this IList<T> list, Predicate<T> predicate)
{
int i = 0;
Expand Down
6 changes: 5 additions & 1 deletion Moviebase.Core/MVP/ModelBase.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;
using Ninject.Extensions.Interception;
Expand All @@ -24,7 +25,10 @@ public void Invoke(Action invoke)

public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
Context.Send(x => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)), null);
Context.Post(x =>
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}, null);
}
}
}
41 changes: 25 additions & 16 deletions Moviebase.Core/MVP/PresenterBase.cs
Original file line number Diff line number Diff line change
@@ -1,43 +1,52 @@
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Moviebase.Core.MVP
{
public abstract class PresenterBase
public abstract class PresenterBase : IDisposable
{
private CancellationTokenSource _cancellationToken;
protected CancellationTokenSource CancellationToken;

protected bool IsCancellationRequested => _cancellationToken != null && _cancellationToken.IsCancellationRequested;
protected bool IsCancellationRequested => CancellationToken != null && CancellationToken.IsCancellationRequested;

protected void RecreateCancellationToken()
{
_cancellationToken?.Dispose();
_cancellationToken = new CancellationTokenSource();
CancellationToken?.Dispose();
CancellationToken = new CancellationTokenSource();
}

protected abstract void UpdateUi(UiState state, int progressPercentage = -1);
public abstract void UpdateUi(UiState state, int progressPercentage = -1);

protected void CancelTask()
{
_cancellationToken?.Cancel();
CancellationToken?.Cancel();
UpdateUi(UiState.Cancelling);
}

protected void ThrowIfCancellationRequested()
{
_cancellationToken?.Token.ThrowIfCancellationRequested();
CancellationToken?.Token.ThrowIfCancellationRequested();
}

protected void RunTask(Action action)
#region IDisposable Support
private bool _disposedValue;

protected virtual void Dispose(bool disposing)
{
RecreateCancellationToken();
Task.Run(() =>
if (_disposedValue) return;
if (disposing)
{
UpdateUi(UiState.Working);
action.Invoke();
UpdateUi(UiState.Ready);
}, _cancellationToken.Token);
if (CancellationToken != null) CancellationToken.Dispose();
}

CancellationToken = null;
_disposedValue = true;
}

public void Dispose()
{
Dispose(true);
}
#endregion
}
}
8 changes: 1 addition & 7 deletions Moviebase.Core/MVP/UiState.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Moviebase.Core.MVP
namespace Moviebase.Core.MVP
{
public enum UiState
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
using System;
using System.Collections.Generic;
using Moviebase.Core.Diagnostics;
using Moviebase.Entities;

namespace Moviebase.Core
namespace Moviebase.Core.MVP
{
public class ValidationSupport
{
Expand All @@ -13,25 +14,29 @@ public ValidationSupport()
{
_conditionDictionary = new Dictionary<Func<bool>, string>();
}

public void SetCommonFailAction(Action<string> action)
{
_failAction = action;
}

public ValidationSupport IsTrue(Func<bool> condition, string failMessage)
{
_conditionDictionary.Add(condition, failMessage);
return this;
}

public ValidationSupport SetCommonFailAction(Action<string> msgBox)
public ValidationSupport EnsureInternetConnected()
{
_failAction = msgBox;
return this;
return IsTrue(() => NetworkObserver.Instance.IsInternetConnected(), Strings.NoInternetMessage);
}

public bool Validate()
{
foreach (var condition in _conditionDictionary)
{
if (condition.Key.Invoke()) continue;
_failAction.Invoke(condition.Value);
if (condition.Value != null) _failAction.Invoke(condition.Value);
return false;
}
return true;
Expand Down
21 changes: 21 additions & 0 deletions Moviebase.Core/MVP/ValidationSupportFactory.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;

namespace Moviebase.Core.MVP
{
public class ValidationSupportFactory
{
private Action<string> _failAction;

public ValidationSupportFactory(Action<string> action)
{
_failAction = action;
}

public ValidationSupport Create()
{
var support = new ValidationSupport();
support.SetCommonFailAction(_failAction);
return support;
}
}
}
19 changes: 10 additions & 9 deletions Moviebase.Core/Moviebase.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,11 @@
<Compile Include="..\MoviebaseAssemblyInfo.cs">
<Link>Properties\MoviebaseAssemblyInfo.cs</Link>
</Compile>
<Compile Include="CsvExporter.cs" />
<Compile Include="Services\CsvExporter.cs" />
<Compile Include="Diagnostics\AsyncProcess.cs" />
<Compile Include="Commons.cs" />
<Compile Include="Natives\Commons.cs" />
<Compile Include="Diagnostics\ComponentManager.cs" />
<Compile Include="CsvExportMap.cs" />
<Compile Include="Services\CsvExportMap.cs" />
<Compile Include="MVP\BindingTarget.cs" />
<Compile Include="MVP\DataBinderExtensions.cs" />
<Compile Include="MVP\FolderSelectDialog.cs" />
Expand All @@ -119,21 +119,22 @@
<Compile Include="MVP\PresenterBase.cs" />
<Compile Include="MVP\UiState.cs" />
<Compile Include="MVP\PercentageCalculator.cs" />
<Compile Include="MVP\ValidationSupportFactory.cs" />
<Compile Include="Natives\Reflector.cs" />
<Compile Include="Natives\WindowWrapper.cs" />
<Compile Include="Services\ITmdbWebRequest.cs" />
<Compile Include="Diagnostics\IComponentManager.cs" />
<Compile Include="IThumbnailManager.cs" />
<Compile Include="Services\IThumbnailManager.cs" />
<Compile Include="Diagnostics\NetworkObserver.cs" />
<Compile Include="Diagnostics\ProcessRedirectStream.cs" />
<Compile Include="ThumbnailManager.cs" />
<Compile Include="Services\ThumbnailManager.cs" />
<Compile Include="Services\IGuessit.cs" />
<Compile Include="Services\ITmdb.cs" />
<Compile Include="IPersistFileManager.cs" />
<Compile Include="ValidationSupport.cs" />
<Compile Include="Services\IPersistFileManager.cs" />
<Compile Include="MVP\ValidationSupport.cs" />
<Compile Include="Services\Guessit.cs" />
<Compile Include="PersistFileManager.cs" />
<Compile Include="PowerPath.cs" />
<Compile Include="Services\PersistFileManager.cs" />
<Compile Include="Diagnostics\PowerPath.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\Tmdb.cs" />
</ItemGroup>
Expand Down
23 changes: 4 additions & 19 deletions Moviebase.Core/Commons.cs → Moviebase.Core/Natives/Commons.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
using System.Drawing;
using System.Text;
using System.Text.RegularExpressions;
using Moviebase.Core.Diagnostics;

namespace Moviebase.Core
namespace Moviebase.Core.Natives
{
public static class Commons
{
Expand All @@ -15,10 +14,8 @@ public static class Commons

public const string TempFolderName = "moviebase";
public const string PersistentFileName = "moviebase.persist";
public const string ExportFileName = "moviebase.csv";
public const string IconFileName = "icon.ico";
public const string PosterFileName = "poster.jpg";
public static readonly string DesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
public const string IconFileName = "Folder.ico";
public const string PosterFileName = "Folder.jpg";

public const string Mp4FileExtension = ".mp4";
public const string AllFilesSearchPattern = "*";
Expand All @@ -29,19 +26,7 @@ public static class Commons
public const int MaxDegreeOfParallelism = 1;
public const int TmdbWebRequestTries = 3;
public const string PingServer = "8.8.8.8";

public static readonly Bitmap DefaultImage = new Bitmap(1, 1);
private static readonly string[] SizeSuffix = { "B", "KB", "MB", "GB", "TB", "PB", "EB" }; //Longs run out around EB

[Obsolete]
public static string BytesToString(long byteCount)
{
if (byteCount == 0) return $"0{SizeSuffix[0]}";
var bytes = Math.Abs(byteCount);
var place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024)));
var num = Math.Round(bytes / Math.Pow(1024, place), 1);
return $"{Math.Sign(byteCount) * num}{SizeSuffix[place]}";
}
public static readonly Func<Bitmap> DefaultImage = () => new Bitmap(1, 1);

public static void RunNoException(Action act)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
using CsvHelper.Configuration;
using Moviebase.Entities;

namespace Moviebase.Core
namespace Moviebase.Core.Services
{
public sealed class CsvExportMap : ClassMap<MovieEntry>
{
public CsvExportMap()
{
Map(m => m.ImdbId);
Map(m => m.Title);
Map(m => m.Quality);
Map(m => m.Size);
Map(m => m.Year);
Map(m => m.Subtitle);
Map(m => m.Genre);
Map(m => m.Source);
Map(m => m.Plot);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using System.IO;
using CsvHelper;

namespace Moviebase.Core
namespace Moviebase.Core.Services
{
public static class CsvExporter
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
using Moviebase.Entities;

namespace Moviebase.Core
namespace Moviebase.Core.Services
{
public interface IPersistFileManager
{
TmdbResult Load(string path);
void Save(string outputPath, TmdbResult entry);
MovieEntry Load(string path);
void Save(string outputPath, MovieEntry entry);
bool HasPersistentData(string path);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Moviebase.Core
namespace Moviebase.Core.Services
{
public interface IThumbnailManager
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
using System.Diagnostics;
using System.IO;
using Moviebase.Core.Natives;
using Moviebase.Entities;
using Newtonsoft.Json;

namespace Moviebase.Core
namespace Moviebase.Core.Services
{
public class PersistFileManager : IPersistFileManager
{
Expand All @@ -14,18 +15,20 @@ public PersistFileManager(bool hideFile)
_hideFile = hideFile;
}

public TmdbResult Load(string path)
public MovieEntry Load(string path)
{
var dirPath = Path.GetDirectoryName(path);
Debug.Assert(dirPath != null);
if (!HasPersistentData(dirPath)) return null;

var persistFile = Path.Combine(dirPath, Commons.PersistentFileName);
return HasPersistentData(dirPath)
? JsonConvert.DeserializeObject<TmdbResult>(File.ReadAllText(persistFile))
: null;
var contents = File.ReadAllText(persistFile);
var serialized = JsonConvert.DeserializeObject<MovieEntry>(contents);
serialized.SetFullPath(path);
return serialized;
}

public void Save(string dirPath, TmdbResult entry)
public void Save(string dirPath, MovieEntry entry)
{
var path = Path.Combine(dirPath, Commons.PersistentFileName);
if (File.Exists(path)) File.SetAttributes(path, FileAttributes.Normal);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
using System.IO;
using ImageMagick;
using IniParser.Model;
using Moviebase.Core.Diagnostics;
using Moviebase.Core.Natives;

namespace Moviebase.Core
namespace Moviebase.Core.Services
{
public class ThumbnailManager : IThumbnailManager
{
Expand Down
Loading

0 comments on commit 9e2d53a

Please sign in to comment.