|
@@ -11,6 +11,7 @@ package com.compdfkit.tools.common.views.pdfproperties.font;
|
|
|
|
|
|
import android.content.Context;
|
|
|
import android.graphics.Typeface;
|
|
|
+import android.text.TextUtils;
|
|
|
import android.util.AttributeSet;
|
|
|
import android.view.View;
|
|
|
import android.widget.AdapterView;
|
|
@@ -23,9 +24,9 @@ import com.compdfkit.core.annotation.CPDFTextAttribute;
|
|
|
import com.compdfkit.core.font.CPDFFont;
|
|
|
import com.compdfkit.core.font.CPDFFontName;
|
|
|
import com.compdfkit.tools.R;
|
|
|
-import com.compdfkit.tools.common.utils.CLog;
|
|
|
+import com.compdfkit.tools.common.views.pdfproperties.font.bean.CFontStyleItemBean;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
|
|
|
|
|
|
public class CPDFFontView extends LinearLayout {
|
|
@@ -38,10 +39,6 @@ public class CPDFFontView extends LinearLayout {
|
|
|
|
|
|
private CFontStyleSpinnerAdapter fontStyleSpinnerAdapter;
|
|
|
|
|
|
- private boolean fontIsBold = false;
|
|
|
-
|
|
|
- private boolean fontIsItalic = false;
|
|
|
-
|
|
|
private CFontChangeListener fontChangeListener;
|
|
|
|
|
|
private CFontTypefaceListener typefaceListener;
|
|
@@ -66,68 +63,47 @@ public class CPDFFontView extends LinearLayout {
|
|
|
if (!isInEditMode()) {
|
|
|
fontAdapter = new CFontSpinnerAdapter1(context);
|
|
|
fontSpinner.setAdapter(fontAdapter);
|
|
|
-
|
|
|
-
|
|
|
fontStyleSpinnerAdapter = new CFontStyleSpinnerAdapter(context);
|
|
|
fontStyleSpinner.setAdapter(fontStyleSpinnerAdapter);
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private int fontCheck = 0;
|
|
|
private int fontStyleCheck = 0;
|
|
|
|
|
|
- public void initFont(String fontName, boolean isBold, boolean isItalic) {
|
|
|
+ public void initFont(String psName) {
|
|
|
fontCheck = 0;
|
|
|
fontStyleCheck = 0;
|
|
|
- fontSpinner.setSelection(fontAdapter.getPosition(fontName));
|
|
|
- switch (fontName) {
|
|
|
- case "Courier":
|
|
|
- case "Helvetica":
|
|
|
- case "Times_Roman":
|
|
|
- fontStyleSpinnerAdapter.updateFontStyle(CPDFTextAttribute.FontNameHelper.FontType.valueOf(fontName));
|
|
|
- break;
|
|
|
- default:
|
|
|
- CPDFFontName cpdfFontName = fontAdapter.getCPDFFontName(fontName);
|
|
|
- if (cpdfFontName != null) {
|
|
|
- fontStyleSpinnerAdapter.updateFontStyle(cpdfFontName);
|
|
|
- } else {
|
|
|
- fontStyleSpinnerAdapter.updateFontStyle(CPDFTextAttribute.FontNameHelper.FontType.Helvetica);
|
|
|
- }
|
|
|
+ String familyName = CPDFFont.getFamilyName(psName);
|
|
|
+ if (TextUtils.isEmpty(familyName)) {
|
|
|
+ familyName = psName;
|
|
|
+ }
|
|
|
+ int index = fontAdapter.getPosition(familyName);
|
|
|
+ fontSpinner.setSelection(index);
|
|
|
+ CPDFFontName item = fontAdapter.getItem(index);
|
|
|
+ List<CFontStyleItemBean> styleItemBeans = fontAdapter.getFontStyleList(item);
|
|
|
+ fontStyleSpinnerAdapter.resetFontStyles(styleItemBeans);
|
|
|
+ int styleIndex = 0;
|
|
|
+ for (int i = 0; i < styleItemBeans.size(); i++) {
|
|
|
+ if (styleItemBeans.get(i).getPsName().equals(psName)) {
|
|
|
+ styleIndex = i;
|
|
|
break;
|
|
|
+ }
|
|
|
}
|
|
|
- int fontStyleIndex = fontStyleSpinnerAdapter.getIndex(isBold, isItalic);
|
|
|
- fontStyleSpinner.setSelection(fontStyleIndex);
|
|
|
- updateStyle(fontStyleSpinnerAdapter.getItem(fontStyleIndex));
|
|
|
+ fontStyleSpinner.setSelection(styleIndex);
|
|
|
|
|
|
fontSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
|
|
@Override
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
|
|
if (++fontCheck > 1) {
|
|
|
-
|
|
|
- Object fontObj = fontAdapter.getItem(position);
|
|
|
- if (fontObj instanceof CPDFTextAttribute.FontNameHelper.FontType) {
|
|
|
- if (fontChangeListener != null) {
|
|
|
- fontChangeListener.font((CPDFTextAttribute.FontNameHelper.FontType) fontObj, null);
|
|
|
- }
|
|
|
- fontStyleSpinnerAdapter.updateFontStyle((CPDFTextAttribute.FontNameHelper.FontType) fontObj);
|
|
|
- resetFontStyle();
|
|
|
- } else if (fontObj instanceof CPDFFontName) {
|
|
|
- CPDFFontName cpdfFontName = (CPDFFontName) fontObj;
|
|
|
- if (fontChangeListener != null) {
|
|
|
- fontChangeListener.font(null, cpdfFontName.getFamilyName());
|
|
|
- }
|
|
|
- ArrayList<String> psNames = cpdfFontName.getPsName();
|
|
|
- CLog.e("字体", cpdfFontName.getFamilyName() + " styleName: " + cpdfFontName.getStyleName());
|
|
|
- CLog.e("字体", "psName----- >");
|
|
|
- for (String psName : psNames) {
|
|
|
- CLog.e("字体", psName);
|
|
|
- }
|
|
|
- CLog.e("字体", "psName----- <");
|
|
|
- fontStyleSpinnerAdapter.updateFontStyle(((CPDFFontName) fontObj));
|
|
|
- resetFontStyle();
|
|
|
+ CPDFFontName cpdfFontName = fontAdapter.getItem(position);
|
|
|
+ List<CFontStyleItemBean> list = fontAdapter.getFontStyleList(cpdfFontName);
|
|
|
+ if (fontChangeListener != null) {
|
|
|
+ fontChangeListener.font(list.get(0).getPsName());
|
|
|
}
|
|
|
- changeTypefaceListener();
|
|
|
+ fontStyleSpinnerAdapter.resetFontStyles(list);
|
|
|
+ resetFontStyle();
|
|
|
+ changeTypefaceListener(list.get(0).getPsName());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -137,17 +113,15 @@ public class CPDFFontView extends LinearLayout {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-
|
|
|
fontStyleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
|
|
@Override
|
|
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
|
|
- if (++fontStyleCheck > 1){
|
|
|
- CFontStyleSpinnerAdapter.FontStyle fontStyle = fontStyleSpinnerAdapter.getItem(position);
|
|
|
- updateStyle(fontStyle);
|
|
|
+ if (++fontStyleCheck > 1) {
|
|
|
+ CFontStyleItemBean item = fontStyleSpinnerAdapter.getItem(position);
|
|
|
if (fontChangeListener != null) {
|
|
|
- fontChangeListener.fontStyle(fontIsBold, fontIsItalic);
|
|
|
+ fontChangeListener.font(item.getPsName());
|
|
|
}
|
|
|
- changeTypefaceListener();
|
|
|
+ changeTypefaceListener(item.getPsName());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -156,50 +130,19 @@ public class CPDFFontView extends LinearLayout {
|
|
|
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- private void changeTypefaceListener() {
|
|
|
+ private void changeTypefaceListener(String psName) {
|
|
|
if (typefaceListener != null) {
|
|
|
- Object font = fontSpinner.getSelectedItem();
|
|
|
- if (font instanceof CPDFTextAttribute.FontNameHelper.FontType) {
|
|
|
- String fontTypeName = CPDFTextAttribute.FontNameHelper.obtainFontName((CPDFTextAttribute.FontNameHelper.FontType) font, fontIsBold, fontIsItalic);
|
|
|
- Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(getContext(), fontTypeName);
|
|
|
- typefaceListener.typeface(typeface);
|
|
|
- } else if (font instanceof CPDFFontName) {
|
|
|
- String psName = CPDFFont.getPsName(((CPDFFontName) font).getFamilyName(), fontIsBold, fontIsItalic);
|
|
|
- Typeface typeface = CPDFTextAttribute.FontNameHelper.getOutTypeface(getContext(), psName);
|
|
|
- typefaceListener.typeface(typeface);
|
|
|
- }
|
|
|
+ Typeface typeface = CPDFTextAttribute.FontNameHelper.getTypeface(getContext(), psName);
|
|
|
+ typefaceListener.typeface(typeface);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void resetFontStyle() {
|
|
|
- fontIsBold = false;
|
|
|
- fontIsItalic = false;
|
|
|
fontStyleSpinner.setSelection(0);
|
|
|
}
|
|
|
|
|
|
- private void updateStyle(CFontStyleSpinnerAdapter.FontStyle fontStyle) {
|
|
|
- switch (fontStyle) {
|
|
|
- case Bold:
|
|
|
- fontIsBold = true;
|
|
|
- fontIsItalic = false;
|
|
|
- break;
|
|
|
- case Italic:
|
|
|
- fontIsBold = false;
|
|
|
- fontIsItalic = true;
|
|
|
- break;
|
|
|
- case Bold_Italic:
|
|
|
- fontIsBold = true;
|
|
|
- fontIsItalic = true;
|
|
|
- break;
|
|
|
- default:
|
|
|
- fontIsBold = false;
|
|
|
- fontIsItalic = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
public void setFontChangeListener(CFontChangeListener fontChangeListener) {
|
|
|
this.fontChangeListener = fontChangeListener;
|
|
@@ -210,10 +153,7 @@ public class CPDFFontView extends LinearLayout {
|
|
|
}
|
|
|
|
|
|
public interface CFontChangeListener {
|
|
|
- void font(CPDFTextAttribute.FontNameHelper.FontType fontType, String outFontName);
|
|
|
-
|
|
|
-
|
|
|
- void fontStyle(boolean bold, boolean italic);
|
|
|
+ void font(String psName);
|
|
|
}
|
|
|
|
|
|
|