CPDFEditToolBar.m 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. //
  2. // CPDFEditToolBar.m
  3. // compdfkit-tools
  4. //
  5. // Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  6. //
  7. // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  8. // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  9. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  10. //
  11. #import "CPDFEditToolBar.h"
  12. #import <ComPDFKit/ComPDFKit.h>
  13. @interface CPDFEditToolBar()
  14. @property(nonatomic,strong) UIButton * undoButton;
  15. @property(nonatomic,strong) UIButton * redoButton;
  16. @property(nonatomic,strong) UIButton * propertyButton;
  17. @property(nonatomic,strong) UIButton * textEditButton;
  18. @property(nonatomic,strong) UIButton * imageEditButton;
  19. @property(nonatomic,strong) UIView * leftView;
  20. @property(nonatomic,strong) UIView * rightView;
  21. @end
  22. @implementation CPDFEditToolBar
  23. - (instancetype)initWithPDFView:(CPDFView *)pdfView {
  24. if (self = [super init]) {
  25. _pdfView = pdfView;
  26. }
  27. return self;
  28. }
  29. - (void)layoutSubviews {
  30. [super layoutSubviews];
  31. [self removeViews];
  32. [self setUp];
  33. }
  34. - (void)removeViews{
  35. [self.leftView removeFromSuperview];
  36. [self.rightView removeFromSuperview];
  37. }
  38. - (void)setUp {
  39. self.textEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
  40. [self.textEditButton sizeToFit];
  41. [self.textEditButton addTarget:self action:@selector(textEditAction:) forControlEvents:UIControlEventTouchUpInside];
  42. self.textEditButton.frame = CGRectMake(10, 10, self.textEditButton.frame.size.width + 20, 40);
  43. [self.textEditButton setImage:[UIImage imageNamed:@"CPDFEditText" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
  44. [self.textEditButton setImage:[UIImage imageNamed:@"CPDFEditTextH" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateSelected];
  45. self.imageEditButton = [UIButton buttonWithType:UIButtonTypeCustom];
  46. [self.imageEditButton sizeToFit];
  47. [self.imageEditButton addTarget:self action:@selector(imageEditAction:) forControlEvents:UIControlEventTouchUpInside];
  48. self.imageEditButton.frame = CGRectMake(CGRectGetMaxX(self.textEditButton.frame) + 10, 10, self.imageEditButton.frame.size.width + 20, 40);
  49. [self.imageEditButton setImage:[UIImage imageNamed:@"CPDFEditImageDefault" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
  50. [self.imageEditButton setImage:[UIImage imageNamed:@"CPDFEditimageHDefault" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateSelected];
  51. self.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,self.bounds.size.width - 160, 60)];
  52. self.leftView.backgroundColor = [UIColor colorWithRed:240./255. green:240./255. blue:240./255. alpha:1.0];
  53. [self addSubview:self.leftView];
  54. [self.leftView addSubview:self.textEditButton];
  55. [self.leftView addSubview:self.imageEditButton];
  56. self.leftView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
  57. self.propertyButton = [UIButton buttonWithType:UIButtonTypeCustom];
  58. [self.propertyButton setBackgroundImage:[UIImage imageNamed:@"CPDFEditUnorderedList" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
  59. self.propertyButton.frame = CGRectMake(20, 20, 20, 20);
  60. [self.propertyButton addTarget:self action:@selector(propertyAction:) forControlEvents:UIControlEventTouchUpInside];
  61. self.undoButton = [UIButton buttonWithType:UIButtonTypeCustom];
  62. self.undoButton.frame = CGRectMake(CGRectGetMaxX(self.propertyButton.frame) + 25, 20, 20, 20);
  63. [self.undoButton addTarget:self action:@selector(undoAction:) forControlEvents:UIControlEventTouchUpInside];
  64. [self.undoButton setBackgroundImage:[UIImage imageNamed:@"CPDFEditUndo" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
  65. [self.undoButton setBackgroundImage:[UIImage imageNamed:@"CPDFEditUndoDisable" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateDisabled];
  66. self.redoButton = [UIButton buttonWithType:UIButtonTypeCustom];
  67. self.redoButton.frame = CGRectMake(CGRectGetMaxX(self.undoButton.frame) + 25, 20,20, 20);
  68. [self.redoButton addTarget:self action:@selector(redoAction:) forControlEvents:UIControlEventTouchUpInside];
  69. [self.redoButton setBackgroundImage:[UIImage imageNamed:@"CPDFEditRedo" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
  70. [self.redoButton setBackgroundImage:[UIImage imageNamed:@"CPDFEditRedoDisable" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateDisabled];
  71. self.rightView = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.leftView.frame), 0, 160, 60)];
  72. self.rightView.backgroundColor = [UIColor whiteColor];
  73. [self addSubview:self.self.rightView];
  74. [self.rightView addSubview:self.redoButton];
  75. [self.rightView addSubview:self.undoButton];
  76. [self.rightView addSubview:self.propertyButton];
  77. }
  78. #pragma mark - Action
  79. - (void)textEditAction:(UIButton*)sender {
  80. sender.selected = !sender.selected;
  81. if(sender.selected == YES){
  82. [self.imageEditButton setSelected:NO];
  83. }
  84. if(sender.selected == NO && self.imageEditButton.selected == NO){
  85. if(self.delegate && [self.delegate respondsToSelector:@selector(editClickInToolBar:editMode:)]){
  86. [self.delegate editClickInToolBar:self editMode:CPDFEditModeAll];
  87. }
  88. }else{
  89. if(self.delegate && [self.delegate respondsToSelector:@selector(editClickInToolBar:editMode:)]){
  90. [self.delegate editClickInToolBar:self editMode:CPDFEditModeText];
  91. }
  92. }
  93. }
  94. - (void)imageEditAction:(UIButton*)sender {
  95. sender.selected = !sender.selected;
  96. if(sender.selected == YES){
  97. [self.textEditButton setSelected:NO];
  98. }
  99. if(sender.selected == NO && self.textEditButton.selected == NO){
  100. if(self.delegate && [self.delegate respondsToSelector:@selector(editClickInToolBar:editMode:)]){
  101. [self.delegate editClickInToolBar:self editMode:CPDFEditModeAll];
  102. }
  103. }else{
  104. if(self.delegate && [self.delegate respondsToSelector:@selector(editClickInToolBar:editMode:)]){
  105. [self.delegate editClickInToolBar:self editMode:CPDFEditModeImage];
  106. }
  107. }
  108. }
  109. - (void)redoAction:(UIButton*)sender {
  110. if(self.delegate && [self.delegate respondsToSelector:@selector(redoDidClickInToolBar:)]){
  111. [self.delegate redoDidClickInToolBar:self];
  112. }
  113. }
  114. - (void)undoAction:(UIButton*)sender {
  115. if(self.delegate && [self.delegate respondsToSelector:@selector(undoDidClickInToolBar:)]){
  116. [self.delegate undoDidClickInToolBar:self];
  117. }
  118. }
  119. - (void)propertyAction:(UIButton*)sender {
  120. if(self.delegate && [self.delegate respondsToSelector:@selector(propertyEditDidClickInToolBar:)]){
  121. [self.delegate propertyEditDidClickInToolBar:self];
  122. }
  123. }
  124. - (void)updateButtonState {
  125. if (self.pdfView.editingArea.IsTextArea && (self.pdfView.editStatus == CEditingSelectStateEditSelectText ||
  126. self.pdfView.editStatus == CEditingSelectStateEditTextArea)) {
  127. //Text
  128. [self.textEditButton setSelected:YES];
  129. [self.imageEditButton setSelected:NO];
  130. } else {
  131. [self.textEditButton setSelected:NO];
  132. [self.imageEditButton setSelected:YES];
  133. }
  134. if(self.pdfView.editStatus == CEditingSelectStateEmpty){
  135. self.propertyButton.enabled = NO;
  136. [self.textEditButton setSelected:NO];
  137. [self.imageEditButton setSelected:NO];
  138. }else{
  139. self.propertyButton.enabled = YES;
  140. }
  141. if ([self.pdfView canEditTextRedo])
  142. self.redoButton.enabled = YES;
  143. else
  144. self.redoButton.enabled = NO;
  145. if ([self.pdfView canEditTextUndo])
  146. self.undoButton.enabled = YES;
  147. else
  148. self.undoButton.enabled = NO;
  149. }
  150. @end