2. Cleaning the whole code, Making required fields readonly.
Change-Id: Ib43579a3e0a54195c019e5abbacf02b2ca36d553
Signed-off-by: shivamv <shivam.v2@samsung.com>
class PlaybackHelper
{
- private static PlaybackHelper instance = new PlaybackHelper();
+ private static readonly PlaybackHelper instance = new PlaybackHelper();
- private PlayerView playerView;
- private PlayerViewModel playerViewModel;
+ private readonly PlayerView playerView;
+ private readonly PlayerViewModel playerViewModel;
private readonly MiniPlayer miniPlayer;
private PlaybackHelper()
{
class PlaylistManager : IDisposable
{
- private static PlaylistManager instance = new PlaylistManager();
+ private static readonly PlaylistManager instance = new PlaylistManager();
/// <summary>
/// MediaDatabase doesn't provide update event when playlist is added , removed or changed
{\r
class Database : IDisposable\r
{\r
- private MediaDatabase mediaDatabase;\r
+ private readonly MediaDatabase mediaDatabase;\r
\r
public Database()\r
{\r
set => SetProperty(ref albumArtPath, value);\r
}\r
\r
- private ListViewModel<Track> listViewModel;\r
+ private readonly ListViewModel<Track> listViewModel;\r
\r
public ListViewModel<Track> ListViewModel\r
{\r
List<Album> albumList = ArtistDataProvider.GetArtistAlbumList(text);
albumListViewModel.CreateData(albumList);
- List<AudioInfo> trackList = ArtistDataProvider.GetArtistTrackList(text);
- trackListViewModel.CreateData(trackList);
-
foreach (MusicAlbum album in albumListViewModel)
{
ArtistDetailAlbum artistAlbum = new ArtistDetailAlbum(album);
foreach (Track track in albumTrackListViewModel)
{
artistAlbum.Add(track);
+ trackListViewModel.Add(track);
}
groupListViewModel.Add(artistAlbum);
}
lyricsViewModel = new LyricsViewModel();
playingListViewModel = new PlayingListViewModel();
playingListViewModel.ItemSelected += OnPlayingListItemSelected;
- playerModel = new PlayerModel();
- playerModel.ElapsedTime = 0.0f;
+ playerModel = new PlayerModel()
+ {
+ ElapsedTime = 0.0f,
+ };
PlayingStatus = PlayingStatus.None;
PlayerController.Instance.PlayerEventOccurred += OnPlayerEventOccurred;
playbackTimer = new Timer(PlaybackTimerDuration);
class SelectorViewModel<T> : PropertyNotifier where T : new()
{
PlaylistSelectorViewModel playlistSelectorViewModel;
- readonly object callerViewModel;
+ readonly object additionalData;
- public SelectorViewModel(ListViewModel<T> viewModel, object callerViewModel = null)
+ public SelectorViewModel(ListViewModel<T> viewModel, object additionalData = null)
{
listViewModel = viewModel;
SelectedCount = "0";
TotalCount = ListViewModel.Count;
- this.callerViewModel = callerViewModel;
+ this.additionalData = additionalData;
}
private readonly ListViewModel<T> listViewModel;
public bool AddMediaToPlaylist(List<string> mediaList)
{
- PlaylistDetailViewModel playlistDetailViewModel = (PlaylistDetailViewModel)callerViewModel;
- bool tracksAdded = PlaylistManager.Instance.AddTracks(playlistDetailViewModel.PlaylistId, mediaList);
+ int playlistId = (int)additionalData;
+ bool tracksAdded = PlaylistManager.Instance.AddTracks(playlistId, mediaList);
return tracksAdded;
}
public bool RemoveMediaFromPlaylist(List<string> mediaList)
{
- PlaylistDetailViewModel playlistDetailViewModel = (PlaylistDetailViewModel)callerViewModel;
- bool tracksRemoved = PlaylistManager.Instance.DeleteTrackList(playlistDetailViewModel.PlaylistId, mediaList);
+ int playlistId = (int)additionalData;
+ bool tracksRemoved = PlaylistManager.Instance.DeleteTrackList(playlistId, mediaList);
return tracksRemoved;
}
TrackCount = listViewModel.Count.ToString();\r
}\r
\r
- private ListViewModel<Track> listViewModel;\r
+ private readonly ListViewModel<Track> listViewModel;\r
\r
public ListViewModel<Track> ListViewModel\r
{\r
private TextLabel albumNameLabel;\r
private TextLabel albumArtistLabel;\r
\r
- private AlbumDetailViewModel viewModel;\r
+ private readonly AlbumDetailViewModel viewModel;\r
public AlbumDetailView(AlbumDetailViewModel viewModel) : base()\r
{\r
Name = "AlbumDetailView";\r
{\r
class AlbumView : BaseContentView\r
{\r
- private AlbumViewModel viewModel;\r
+ private readonly AlbumViewModel viewModel;\r
private TextLabel albumCountLabel;\r
\r
public AlbumView(AlbumViewModel viewModel) : base()\r
{
class ArtistDetailView : BaseSubContentView
{
- private ArtistDetailViewModel viewModel;
+ private readonly ArtistDetailViewModel viewModel;
public ArtistDetailView(ArtistDetailViewModel viewModel) : base()
{
{
class ArtistView : BaseContentView
{
- private ArtistViewModel viewModel;
+ private readonly ArtistViewModel viewModel;
private TextLabel artistCountLabel;
public ArtistView(ArtistViewModel viewModel)
MenuItem item = listItem[0];
listItem.RemoveAt(0);
item.Dispose();
- item = null;
}
moreMenu.Dismiss();
moreMenu = null;
// TODO these name strings are temporary...once the po files are added
// need to use Translatable names.
- private static string[] TabNames = new string[]
+ private static readonly string[] TabNames = new string[]
{
"Playlists",
"Tracks",
base.Add(tabs);
for(int i = 0; i<4; ++i)
{
- Tab.TabItemData item = new Tab.TabItemData();
- item.Text = TabNames[i];
+ Tab.TabItemData item = new Tab.TabItemData()
+ {
+ Text = TabNames[i],
+ };
tabs.AddItem(item);
}
private PlayingListView currentListView;
private LyricsView lyricsView;
- private PlayerViewModel viewModel;
+ private readonly PlayerViewModel viewModel;
private PlayerViewState viewState;
private bool isPlaylistAddViewCreated = false;
AddListActionButtons();
AddThumbnail();
AddLyricsView();
+ TouchEvent += (object source, TouchEventArgs e) => false;
}
public void ShowView()
private void AddPlayerBackground()
{
- playerBackgroundView = new View();
- playerBackgroundView.Size2D = new Size2D(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height);
+ playerBackgroundView = new View()
+ {
+ Size2D = new Size2D(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height)
+ };
WidthResizePolicy = ResizePolicyType.FillToParent;
HeightResizePolicy = ResizePolicyType.FillToParent;
base.Add(playerBackgroundView);
private void AddRightViewBackground()
{
- rightViewBackground = new View();
- rightViewBackground.BackgroundColor = Color.Transparent;
- rightViewBackground.SizeWidth = Window.Instance.WindowSize.Width / 2;
- rightViewBackground.SizeHeight = Window.Instance.WindowSize.Height;
- rightViewBackground.WidthResizePolicy = ResizePolicyType.FillToParent;
- rightViewBackground.HeightResizePolicy = ResizePolicyType.FillToParent;
+ rightViewBackground = new View()
+ {
+ BackgroundColor = Color.Transparent,
+ SizeWidth = Window.Instance.WindowSize.Width / 2,
+ SizeHeight = Window.Instance.WindowSize.Height,
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ HeightResizePolicy = ResizePolicyType.FillToParent
+ };
rightView.Add(rightViewBackground);
rightViewBackground.BindingContext = viewModel;
rightViewBackground.SetBinding(BackgroundProperty, "PlayerBackground");
private void AddTopButtons()
{
- backButton = new Button("BackButton");
- backButton.ThemeChangeSensitive = true;
- backButton.Position2D = new Position2D(LayoutPadding, TopBarButtonsY);
+ backButton = new Button("BackButton")
+ {
+ ThemeChangeSensitive = true,
+ Position2D = new Position2D(LayoutPadding, TopBarButtonsY)
+ };
leftView.Add(backButton);
backButton.Clicked += (object sender, ClickedEventArgs clickedEventArgs) =>
{
HideView();
};
- moreButton = new Button("MoreButton");
- moreButton.ThemeChangeSensitive = true;
- moreButton.Position2D = new Position2D(Window.Instance.WindowSize.Width / 2 - LayoutPadding - IconSize, TopBarButtonsY);
+ moreButton = new Button("MoreButton")
+ {
+ ThemeChangeSensitive = true,
+ Position2D = new Position2D(Window.Instance.WindowSize.Width / 2 - LayoutPadding - IconSize, TopBarButtonsY)
+ };
rightView.Add(moreButton);
moreButton.Clicked += OnMoreButtonClicked;
}
private void AddVolumeSlider()
{
- volumeSlider = new Slider("Slider");
- volumeSlider.ThemeChangeSensitive = true;
- volumeSlider.Size2D = new Size2D(496, 48);
- volumeSlider.Position2D = new Position2D(72, 336);
- volumeSlider.ThumbSize = new Tizen.NUI.Size(36, 36);
- volumeSlider.Direction = Slider.DirectionType.Horizontal;
- volumeSlider.MinValue = 0;
- volumeSlider.MaxValue = AudioManager.VolumeController.MaxLevel[AudioVolumeType.Media];
- volumeSlider.CurrentValue = AudioManager.VolumeController.Level[AudioVolumeType.Media];
+ volumeSlider = new Slider("Slider")
+ {
+ ThemeChangeSensitive = true,
+ Size2D = new Size2D(496, 48),
+ Position2D = new Position2D(72, 336),
+ ThumbSize = new Tizen.NUI.Size(36, 36),
+ Direction = Slider.DirectionType.Horizontal,
+ MinValue = 0,
+ MaxValue = AudioManager.VolumeController.MaxLevel[AudioVolumeType.Media],
+ CurrentValue = AudioManager.VolumeController.Level[AudioVolumeType.Media]
+ };
controlsView.Add(volumeSlider);
volumeSlider.BindingContext = viewModel;
volumeSlider.SetBinding(Slider.CurrentValueProperty, "VolumeLevel");
{
class PlayingListView : View
{
- private CollectionView collectionView;
- private PlayingListViewModel viewModel;
+ private readonly CollectionView collectionView;
+ private readonly PlayingListViewModel viewModel;
public PlayingListView(PlayingListViewModel viewModel) : base()
{
{
class PlaylistDetailView : BaseSubContentView
{
- private PlaylistDetailViewModel viewModel;
+ private readonly PlaylistDetailViewModel viewModel;
public PlaylistDetailView(PlaylistDetailViewModel playlistViewModel)
{
layout.Icon.SetBinding(ImageView.ResourceUrlProperty, "ThumbnailPath");
layout.TitleLabel.SetBinding(TextLabel.TextProperty, "TrackTitle");
layout.SubtitleLabel.SetBinding(TextLabel.TextProperty, "ArtistName");
+ //layout.SetBinding(ListItemLayout.IsPlayingProperty, "IsPlaying"); //Need to Modify
return layout;
});
collectionView.SelectionChanged += OnTrackSelection;
private void OnAddClick(object sender, ClickedEventArgs e)
{
TrackViewModel trackViewModel = new TrackViewModel();
- OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.AddToCurrentPlaylist, ContentViewType.Track, trackViewModel.ListViewModel, viewModel);
+ OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.AddToCurrentPlaylist, ContentViewType.Track, trackViewModel.ListViewModel, viewModel.PlaylistId);
OnOperationViewAdd(operationEventArgs);
}
private void OnDeleteClick(object sender, ClickedEventArgs e)
{
- OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.RemoveFromCurrentPlaylist, ContentViewType.Track, viewModel.ListViewModel, viewModel);
+ OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.RemoveFromCurrentPlaylist, ContentViewType.Track, viewModel.ListViewModel, viewModel.PlaylistId);
OnOperationViewAdd(operationEventArgs);
}
private AlertDialog createPlaylistDialog;
private TextField textField;
private Button crossButton;
- private PlaylistSelectorViewModel viewModel;
+ private readonly PlaylistSelectorViewModel viewModel;
public event EventHandler<PlaylistMemberAddEventArgs> PlaylistMemberAdd;
FlexLayout.SetFlexShrink(collectionView, 1);
collectionView.ItemTemplate = new DataTemplate(() =>
{
- DefaultLinearItem layout = new DefaultLinearItem("LinearItem");
- layout.WidthSpecification = LayoutParamPolicies.MatchParent;
- layout.HeightSpecification = 108;
+ DefaultLinearItem layout = new DefaultLinearItem("LinearItem")
+ {
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ HeightSpecification = 108
+ };
layout.Seperator.BackgroundColor = UIColors.ItemSeperator;
layout.Seperator.Padding = new Extents(0, 0, 0, 0);
layout.Seperator.Margin = new Extents(0, 0, 0, 0);
private TextLabel playlistCountLabel;
private Button playlistCreateButton;
- private PlaylistViewModel viewModel;
+ private readonly PlaylistViewModel viewModel;
public PlaylistView(PlaylistViewModel viewModel)
{
private View searchBox;
private TextLabel searchLabel;
- private SearchViewModel viewModel;
+ private readonly SearchViewModel viewModel;
public event EventHandler<SubContentViewAddEventArgs> LaunchDetailView;
private CheckBox selAllButton;
private Button cancelButton;
private Button doneButton;
- private CollectionView collectionView;
+ private readonly CollectionView collectionView;
int itemCount = 0;
public List<string> selectedItemList;
- private SelectorViewModel<T> viewModel;
- private OperationViewType currentViewType;
-
+ private readonly SelectorViewModel<T> viewModel;
+ private readonly OperationViewType currentViewType;
public SelectorView(OperationViewType viewType, SelectorViewModel<T> viewModel) : base()
{
{
private ContentPage contentPage;
private ScrollableBase scrollableBase;
- private TrackDetailViewModel viewModel;
+ private readonly TrackDetailViewModel viewModel;
private View itemRootView;
public TrackDetailView(TrackDetailViewModel viewModel) : base()
{
RecursivelyDisposeChildren(child);
view.Remove(child);
child.Dispose();
- child = null;
}
}
{\r
class TrackView : BaseContentView\r
{\r
- private TrackViewModel viewModel;\r
+ private readonly TrackViewModel viewModel;\r
private TextLabel trackCountLabel;\r
private Button playAllWithShuffle;\r
private Button playAll;\r
layout.Icon.SetBinding(ImageView.ResourceUrlProperty, "ThumbnailPath");\r
layout.TitleLabel.SetBinding(TextLabel.TextProperty, "TrackTitle");\r
layout.SubtitleLabel.SetBinding(TextLabel.TextProperty, "ArtistName");\r
+ //layout.SetBinding(ListItemLayout.IsPlayingProperty, "IsPlaying"); //Need to Modify\r
return layout;\r
});\r
collectionView.ScrollingDirection = ScrollableBase.Direction.Vertical;\r
{
class OperationViewAddEventArgs : EventArgs
{
- public OperationViewAddEventArgs(OperationViewType type, ContentViewType contentType, object creationDetails)
+ public OperationViewAddEventArgs(OperationViewType type, ContentViewType contentType, object creationDetails, object additionalDetails = null)
{
OperationViewType = type;
ContentViewType = contentType;
ViewModelData = creationDetails;
+ OtherData = additionalDetails;
}
public OperationViewType OperationViewType { get; private set; }
public ContentViewType ContentViewType { get; private set; }
public object ViewModelData { get; private set; }
+
+ public object OtherData { get; private set; }
}
}
Search = 1,
Share = 2,
AddToPlaylist = 3,
+ AddToCurrentPlaylist = 4,
+ RemoveFromCurrentPlaylist = 5,
}
abstract class OperationViewFactory
{
- public abstract View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData);
+ public abstract View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData, object otherData = null);
}
class ConcreteOperationViewFactory : OperationViewFactory
{
- public override View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData)
+ public override View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData, object otherData = null)
{
Tizen.Log.Debug(AppConstants.LogTag, "Getting operation view of type: " + type.ToString());
View view = null;
break;
case OperationViewType.Search:
Tizen.Log.Info(AppConstants.LogTag, "Creationg Search View");
+ view = CreateSearchView();
break;
case OperationViewType.Share:
Tizen.Log.Info(AppConstants.LogTag, "Creationg Share View");
Tizen.Log.Info(AppConstants.LogTag, "Creationg AddtoPlaylist View");
view = CreateAddToPlaylistView(viewType, viewModelData);
break;
+ case OperationViewType.AddToCurrentPlaylist:
+ Tizen.Log.Info(AppConstants.LogTag, "Creationg AddtoCurrentPlaylist View");
+ SelectorViewModel<Track> addToCurrentPlaylistViewModel = new SelectorViewModel<Track>((ListViewModel<Track>)viewModelData, otherData);
+ SelectorView<Track> addToCurrentPlaylistView = new SelectorView<Track>(OperationViewType.AddToCurrentPlaylist, addToCurrentPlaylistViewModel);
+ view = addToCurrentPlaylistView;
+ break;
+ case OperationViewType.RemoveFromCurrentPlaylist:
+ Tizen.Log.Info(AppConstants.LogTag, "Creationg RemoveFromCurrentPlaylist View");
+ SelectorViewModel<Track> removeFromCurrentPlaylistViewModel = new SelectorViewModel<Track>((ListViewModel<Track>)viewModelData, otherData);
+ SelectorView<Track> removeFromCurrentPlaylistView = new SelectorView<Track>(OperationViewType.RemoveFromCurrentPlaylist, removeFromCurrentPlaylistViewModel);
+ view = removeFromCurrentPlaylistView;
+ break;
}
return view;
}
{
class ViewLibrary
{
- private IDictionary<int, BaseContentView> contentViewDictionary;
- private ConcreteContentViewFactory contentViewFactory;
- private ConcreteSubContentViewFactory subContentViewFactory;
- private ConcreteOperationViewFactory operationViewFactory;
+ private readonly IDictionary<int, BaseContentView> contentViewDictionary;
+ private readonly ConcreteContentViewFactory contentViewFactory;
+ private readonly ConcreteSubContentViewFactory subContentViewFactory;
+ private readonly ConcreteOperationViewFactory operationViewFactory;
public ViewLibrary()
{
return view;
}
- public void AddOperationView(OperationViewType type, ContentViewType contentType, object viewModelData)
+ public void AddOperationView(OperationViewType type, ContentViewType contentType, object viewModelData, object otherData)
{
- operationViewFactory.AddOperationView(type, contentType, viewModelData);
+ operationViewFactory.AddOperationView(type, contentType, viewModelData, otherData);
}
public SearchView CreateSearchView()
{
public class ViewManager
{
- private Window window;
- private ViewLibrary viewLibrary;
+ private readonly ViewLibrary viewLibrary;
private View rootView;
private BaseView baseView;
private View miniPlayer;
- private static string[] TabNames = new string[]
+ private static readonly string[] TabNames = new string[]
{
"Playlists",
"Tracks",
public ViewManager(Window win)
{
- window = win;
viewLibrary = new ViewLibrary();
UpdateTheme(ThemeManager.PlatformThemeId);
InitializeRootView(win);
private void OnOperationViewAdded(object sender, OperationViewAddEventArgs e)
{
- viewLibrary.AddOperationView(e.OperationViewType, e.ContentViewType, e.ViewModelData, e.CallerViewModel);
+ viewLibrary.AddOperationView(e.OperationViewType, e.ContentViewType, e.ViewModelData, e.OtherData);
}
private void SetTabItem(int previousIndex, int currentIndex)
</ItemGroup>\r
\r
<ItemGroup>\r
- <PackageReference Include="Tizen.NET" Version="9.0.0.16759">\r
+ <PackageReference Include="Tizen.NET" Version="10.0.0.16834">\r
<ExcludeAssets>Runtime</ExcludeAssets>\r
</PackageReference>\r
<PackageReference Include="Tizen.NET.Sdk" Version="1.1.6" />\r