Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <ItemsControl ItemsSource="{Binding ShelfItemsCollection}" Name="shelfGridView" Margin="5" Visibility="Collapsed" >
- <ItemsControl.ItemTemplate>
- <DataTemplate>
- <Border Style="{StaticResource ResourceKey=shelfBorderStyle}" MinWidth="200">
- <StackPanel Name="LibraryPanel">
- <Grid>
- <Button Name="bookThumbnail" Padding="5" Tag="{Binding}" Click="BookImage_Click" Style="{StaticResource ResourceKey=shelfBookThumbnail}" >
- <Image Width="150" Height="200" Stretch="Fill" Source="{Binding CoverImage}" ></Image>
- </Button>
- <DockPanel LastChildFill="True" Name="DownloadProgress">
- <Button DockPanel.Dock="Right" Name="btncancelDownloadGView" Tag="{Binding}" Click="btncancelDownloadGView_Click" Style="{StaticResource ResourceKey=PopupCloseButton}" ToolTip="{Binding Path=localResource.library_CancelDownload,Source={StaticResource DbookLanguageManagerDynamic}}" Margin="5,0"></Button>
- <ProgressBar Background="Black" Height="20" Margin="10,0" Value="{Binding Progress}" VerticalAlignment="Center" HorizontalAlignment="Stretch" >
- <ProgressBar.ToolTip>
- <ToolTip>
- <StackPanel Orientation="Horizontal">
- <Label Content="{Binding Progress}"/>
- <Label Content="%" Margin="2,0"/>
- </StackPanel>
- </ToolTip>
- </ProgressBar.ToolTip>
- </ProgressBar>
- </DockPanel>
- </Grid>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition></ColumnDefinition>
- <ColumnDefinition></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <TextBlock Text="{Binding Title}" Style="{StaticResource ResourceKey=shelfNameStyle}" TextTrimming="CharacterEllipsis" MaxWidth="150" Grid.Column="0" Grid.Row="0"></TextBlock>
- <TextBlock Text="{Binding Info}" Style="{StaticResource ResourceKey=shelfInfoStyle}" TextTrimming="CharacterEllipsis" MaxWidth="150" Grid.Column="0" Grid.Row="1"></TextBlock>
- <Button Name="downloadButton" Click="downloadButton_Click" Tag="{Binding}" Style="{StaticResource ResourceKey=ShelfDownloadButton}" ToolTip="{Binding Path=localResource.library_DownloadBook,Source={StaticResource DbookLanguageManagerDynamic}}" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2"></Button>
- </Grid>
- </StackPanel>
- </Border>
- <DataTemplate.Triggers>
- <DataTrigger Binding="{Binding Status}" Value="read">
- <Setter TargetName="bookThumbnail" Property="Cursor" Value="Hand"/>
- <Setter TargetName="archiveBook" Property="Visibility" Value="Visible"/>
- <Setter TargetName="downloadButton" Property="Visibility" Value="Collapsed"/>
- <Setter TargetName="DownloadProgress" Property="Visibility" Value="Collapsed"/>
- </DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="download">
- <Setter TargetName="bookThumbnail" Property="Cursor" Value="Arrow"/>
- <Setter TargetName="archiveBook" Property="Visibility" Value="Collapsed"/>
- <Setter TargetName="downloadButton" Property="Visibility" Value="Visible"/>
- <Setter TargetName="DownloadProgress" Property="Visibility" Value="Collapsed"/>
- </DataTrigger>
- <DataTrigger Binding="{Binding Status}" Value="downloading">
- <Setter TargetName="bookThumbnail" Property="Cursor" Value="No"/>
- <Setter TargetName="archiveBook" Property="Visibility" Value="Collapsed"/>
- <Setter TargetName="downloadButton" Property="Visibility" Value="Collapsed"/>
- <Setter TargetName="downloadButton" Property="IsEnabled" Value="False"/>
- <Setter TargetName="DownloadProgress" Property="Visibility" Value="Visible"/>
- </DataTrigger>
- </DataTemplate.Triggers>
- </DataTemplate>
- </ItemsControl.ItemTemplate>
- <ItemsControl.ItemsPanel>
- <ItemsPanelTemplate>
- <WrapPanel Orientation="Horizontal" />
- </ItemsPanelTemplate>
- </ItemsControl.ItemsPanel>
- </ItemsControl>
- public ObservableCollection<LocalLibrary> ShelfItemsCollection
- { get { return thisApp.appShelf; } }
- serverReader_DoWork.RunWorkerAsync() in page load event.
- private void serverReader_DoWork(object sender, DoWorkEventArgs e)
- {
- BackgroundWorker worker = sender as BackgroundWorker;
- try
- {
- List<DPMLibrary> server_data = new List<DPMLibrary>();
- try
- {
- //mke an http request and based on response fill data of variable server_data
- }
- catch //Some exceptions occured while reading from server, so read the result from cache--OR OFFLINE MODE SO showonly downloaded books
- {
- }
- foreach(DPMLibrary item in server_data)
- {
- LocalLibrary model = new LocalLibrary();
- model.Id = item.Id;
- model.Name = item.Name;
- model.Date = DateTime.Parse(item.Date);
- model.Cover = item.Cover;
- model.CoverImage =GetCoverImage(item.Id, model.Cover); //for testing pass any image url
- model.Title = item.Title;
- model.Info = item.Info;
- model.Url = item.Url;
- model.IsActive = true;
- //based on some condition set value of Status
- if (Directory.Exists(directory_name))
- {
- model.Status = BookStatus.read;
- }
- else//but not found files in destination path , so need to download again..
- {
- model.Status = BookStatus.download;
- }
- worker.ReportProgress(5,model);
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- private void serverReader_ReportProgress(object sender, ProgressChangedEventArgs e)
- {
- txtProgress.Text = DbookLanguage.message_pleasewait;
- if (e.ProgressPercentage == 5)
- {
- LocalLibrary item = (LocalLibrary)e.UserState;
- thisApp.appShelf.Add(item);
- }
- }
- private void serverReader_WorkFinished(object sender, RunWorkerCompletedEventArgs e)
- {
- }
- private void btnCloudView_Click(object sender, RoutedEventArgs e)
- {
- SwitchToCloudView();
- }
- private void SwitchToCloudView()
- {
- ICollectionView dataView = CollectionViewSource.GetDefaultView(shelfGridView.ItemsSource);
- dataView.Filter = CloudFilter;
- dataView.Refresh();
- Keyboard.ClearFocus();
- }
- private bool CloudFilter(object item)
- {
- LocalLibrary lib = item as LocalLibrary;
- return lib.Status !=null;
- }
- public enum BookStatus { download,read,downloading};
- public class LocalLibrary : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
- private void NotifyChange(PropertyChangedEventArgs e)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, e);
- }
- private string id { get; set; }
- private string name { get; set; }
- private DateTime date { get; set; }
- private string title { get; set; }
- private string info { get; set; }
- private string cover { get; set; }
- private string url { get; set; }
- private bool active { get; set; }
- private BookStatus status { get; set; }
- private string progress { get; set; }
- private ImageSource coverimage { get; set; }
- public string Id
- {
- get { return id; }
- set
- {
- id = value;
- NotifyChange(new PropertyChangedEventArgs("Id"));
- }
- }
- public string Name
- {
- get { return name; }
- set
- {
- name = value;
- NotifyChange(new PropertyChangedEventArgs("Name"));
- }
- }
- public DateTime Date
- {
- get { return date; }
- set
- {
- date = value;
- NotifyChange(new PropertyChangedEventArgs("Date"));
- }
- }
- public string Title
- {
- get { return title; }
- set
- {
- title = value;
- NotifyChange(new PropertyChangedEventArgs("Title"));
- }
- }
- public string Info
- {
- get { return info; }
- set
- {
- info = value;
- NotifyChange(new PropertyChangedEventArgs("Info"));
- }
- }
- public string Cover
- {
- get { return cover; }
- set
- {
- cover = value;
- NotifyChange(new PropertyChangedEventArgs("Cover"));
- }
- }
- public string Url
- {
- get { return url; }
- set
- {
- url = value;
- NotifyChange(new PropertyChangedEventArgs("Url"));
- }
- }
- public bool IsActive
- {
- get { return active; }
- set
- {
- active = value;
- NotifyChange(new PropertyChangedEventArgs("IsActive"));
- }
- }
- public BookStatus Status
- {
- get { return status; }
- set
- {
- status = value;
- NotifyChange(new PropertyChangedEventArgs("Status"));
- }
- }
- public string Progress
- {
- get { return progress; }
- set
- {
- progress = value;
- NotifyChange(new PropertyChangedEventArgs("Progress"));
- }
- }
- public ImageSource CoverImage
- {
- get { return coverimage; }
- set
- {
- coverimage = value;
- NotifyChange(new PropertyChangedEventArgs("CoverImage"));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement