|
@@ -39,10 +39,12 @@ namespace PDFViewer
|
|
|
|
|
|
public event EventHandler FileChangeEvent;
|
|
|
public event Func<string[], bool> CheckExistBeforeOpenFileEvent;
|
|
|
+
|
|
|
+ public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
|
private bool _canSave = false;
|
|
|
/// <summary>
|
|
|
- /// Binds the save button on the user interface.
|
|
|
+ /// Whether the save operation can be performed.
|
|
|
/// </summary>
|
|
|
public bool CanSave
|
|
|
{
|
|
@@ -55,7 +57,7 @@ namespace PDFViewer
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- ///
|
|
|
+ /// Whether the left panel is expanded.
|
|
|
/// </summary>
|
|
|
public bool LeftToolPanelButtonIsChecked
|
|
|
{
|
|
@@ -68,7 +70,7 @@ namespace PDFViewer
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- ///
|
|
|
+ /// Whether the right panel is expanded.
|
|
|
/// </summary>
|
|
|
public bool RightToolPanelButtonIsChecked
|
|
|
{
|
|
@@ -84,7 +86,7 @@ namespace PDFViewer
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- ///
|
|
|
+ /// Whether the view setting panel is expanded.
|
|
|
/// </summary>
|
|
|
public bool ViewSettingBtnIsChecked
|
|
|
{
|
|
@@ -101,7 +103,7 @@ namespace PDFViewer
|
|
|
|
|
|
private Visibility _notDocsEditorVisible = Visibility.Visible;
|
|
|
/// <summary>
|
|
|
- ///
|
|
|
+ /// Whether the Docs Editor panel is visible.
|
|
|
/// </summary>
|
|
|
public Visibility NotDocsEditorVisible
|
|
|
{
|
|
@@ -113,8 +115,7 @@ namespace PDFViewer
|
|
|
OnPropertyChanged();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
public MainPage()
|
|
|
{
|
|
|
InitializeComponent();
|
|
@@ -124,12 +125,19 @@ namespace PDFViewer
|
|
|
|
|
|
#region Load document
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Initialize the PDFViewer and load the PDF file.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="filePath"></param>
|
|
|
public void InitWithFilePath(string filePath)
|
|
|
{
|
|
|
pdfViewer = new PDFViewControl();
|
|
|
pdfViewer.PDFView.InitDocument(filePath);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Init controls and set events.
|
|
|
+ /// </summary>
|
|
|
private void LoadDocument()
|
|
|
{
|
|
|
if (pdfViewer.PDFView.Document == null)
|
|
@@ -165,6 +173,11 @@ namespace PDFViewer
|
|
|
panelState.PropertyChanged += PanelState_PropertyChanged;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// When the RightPanel state is changed, decide whether to display the ViewSettingPanel or RightToolPanel.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
|
{
|
|
|
if (e.PropertyName == "RightPanel")
|
|
@@ -173,21 +186,24 @@ namespace PDFViewer
|
|
|
OnPropertyChanged(nameof(ViewSettingBtnIsChecked));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- private void PdfFormControlRefreshAnnotList(object sender, EventArgs e)
|
|
|
- {
|
|
|
- botaBarControl.LoadAnnotationList();
|
|
|
- }
|
|
|
-
|
|
|
- private void ControlOnCanSaveChanged(object sender, bool e)
|
|
|
+
|
|
|
+ internal void SetPDFViewer(PDFViewControl newPdfViewer)
|
|
|
{
|
|
|
- this.CanSave = e;
|
|
|
+ if (newPdfViewer != null)
|
|
|
+ {
|
|
|
+ pdfViewer = newPdfViewer;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region Password
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Event handler for confirming the password. Open the PDF file if the password is correct.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
private void PasswordUI_Confirmed(object sender, string e)
|
|
|
{
|
|
|
if (passwordViewer != null && passwordViewer.PDFView != null && passwordViewer.PDFView.Document != null)
|
|
@@ -210,12 +226,22 @@ namespace PDFViewer
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Event handler for canceling password input.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
private void PasswordUI_Canceled(object sender, EventArgs e)
|
|
|
{
|
|
|
PopupBorder.Visibility = Visibility.Collapsed;
|
|
|
PasswordUI.Visibility = Visibility.Collapsed;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Event handler for closing the password input dialog.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
private void PasswordUI_Closed(object sender, EventArgs e)
|
|
|
{
|
|
|
PopupBorder.Visibility = Visibility.Collapsed;
|
|
@@ -225,6 +251,10 @@ namespace PDFViewer
|
|
|
#endregion
|
|
|
|
|
|
#region Load custom control
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Load the custom controls for the PDF viewer.
|
|
|
+ /// </summary>
|
|
|
private void LoadCustomControl()
|
|
|
{
|
|
|
regularViewerControl.PdfViewControl = pdfViewer;
|
|
@@ -238,6 +268,11 @@ namespace PDFViewer
|
|
|
PDFGrid.Child = regularViewerControl;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Event handler for the Loaded event of the MainPage.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
private void MainPage_Loaded(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
LoadDocument();
|
|
@@ -258,7 +293,7 @@ namespace PDFViewer
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
+ #region Private Command Event
|
|
|
private void LeftToolPanelButton_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
panelState.IsLeftPanelExpand = (sender as ToggleButton).IsChecked == true;
|
|
@@ -417,6 +452,65 @@ namespace PDFViewer
|
|
|
LeftToolPanelButton.IsChecked = true;
|
|
|
botaBarControl.SelectBotaTool(BOTATools.Search);
|
|
|
}
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_Loaded(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ CPDFTitleBarControl.OpenFileEvent -= CPDFTitleBarControl_OpenFileEvent;
|
|
|
+ CPDFTitleBarControl.OpenFileEvent += CPDFTitleBarControl_OpenFileEvent; ;
|
|
|
+
|
|
|
+ CPDFTitleBarControl.SaveAsFileEvent -= CPDFTitleBarControl_SaveAsFileEvent;
|
|
|
+ CPDFTitleBarControl.SaveAsFileEvent += CPDFTitleBarControl_SaveAsFileEvent; ;
|
|
|
+
|
|
|
+ CPDFTitleBarControl.SaveFileEvent -= CPDFTitleBarControl_SaveFileEvent;
|
|
|
+ CPDFTitleBarControl.SaveFileEvent += CPDFTitleBarControl_SaveFileEvent; ;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_SaveFileEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ SaveFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_SaveAsFileEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ SaveAsFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_OpenFileEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ OpenFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void FileInfoCloseBtn_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ PopupBorder.Visibility = Visibility.Collapsed;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Refresh the annotation list when a annotation is edited.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
+ private void PdfFormControlRefreshAnnotList(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ botaBarControl.LoadAnnotationList();
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// When a CanSave property of a control is changed, the CanSave property of current page is changed.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
+ private void ControlOnCanSaveChanged(object sender, bool e)
|
|
|
+ {
|
|
|
+ this.CanSave = e;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
+ {
|
|
|
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
|
|
|
#region Open and Save file
|
|
|
|
|
@@ -531,52 +625,6 @@ namespace PDFViewer
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
- private void FileInfoCloseBtn_Click(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- PopupBorder.Visibility = Visibility.Collapsed;
|
|
|
- }
|
|
|
-
|
|
|
- public event PropertyChangedEventHandler PropertyChanged;
|
|
|
- protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
- {
|
|
|
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
- }
|
|
|
-
|
|
|
- internal void SetPDFViewer(PDFViewControl newPdfViewer)
|
|
|
- {
|
|
|
- if (newPdfViewer != null)
|
|
|
- {
|
|
|
- pdfViewer = newPdfViewer;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void CPDFTitleBarControl_Loaded(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- CPDFTitleBarControl.OpenFileEvent -= CPDFTitleBarControl_OpenFileEvent;
|
|
|
- CPDFTitleBarControl.OpenFileEvent += CPDFTitleBarControl_OpenFileEvent; ;
|
|
|
-
|
|
|
- CPDFTitleBarControl.SaveAsFileEvent -= CPDFTitleBarControl_SaveAsFileEvent;
|
|
|
- CPDFTitleBarControl.SaveAsFileEvent += CPDFTitleBarControl_SaveAsFileEvent; ;
|
|
|
-
|
|
|
- CPDFTitleBarControl.SaveFileEvent -= CPDFTitleBarControl_SaveFileEvent;
|
|
|
- CPDFTitleBarControl.SaveFileEvent += CPDFTitleBarControl_SaveFileEvent; ;
|
|
|
- }
|
|
|
-
|
|
|
- private void CPDFTitleBarControl_SaveFileEvent(object sender, EventArgs e)
|
|
|
- {
|
|
|
- SaveFile();
|
|
|
- }
|
|
|
-
|
|
|
- private void CPDFTitleBarControl_SaveAsFileEvent(object sender, EventArgs e)
|
|
|
- {
|
|
|
- SaveAsFile();
|
|
|
- }
|
|
|
-
|
|
|
- private void CPDFTitleBarControl_OpenFileEvent(object sender, EventArgs e)
|
|
|
- {
|
|
|
- OpenFile();
|
|
|
- }
|
|
|
-
|
|
|
#region Command Binding
|
|
|
|
|
|
private double CheckZoomLevel(double zoom, bool IsGrowth)
|