/** * Odoo, Open Source Management Solution * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http:www.gnu.org/licenses/> * * Created on 7/1/15 5:10 PM */ package odoo.controls; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import com.odoo.core.orm.fields.OColumn; import com.odoo.core.utils.BitmapUtils; public class OBlobField extends LinearLayout implements IOControlData { public static final String TAG = OBlobField.class.getSimpleName(); private Context mContext; private Boolean mReady = false, isEditable = false; private ValueUpdateListener mValueUpdateListener = null; private String mLabel; private OColumn mCol; private Object mValue; private BezelImageView imgView; private OField.WidgetType mWidget = OField.WidgetType.Image; private float imageSize = -1; private Integer defaultImage = -1; @TargetApi(Build.VERSION_CODES.LOLLIPOP) public OBlobField(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(context, attrs, defStyleAttr, defStyleRes); } public OBlobField(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr, 0); } public OBlobField(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs, 0, 0); } public OBlobField(Context context) { super(context); init(context, null, 0, 0); } private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { mContext = context; if (attrs != null) { } if (mContext.getClass().getSimpleName().contains("BridgeContext")) initControl(); } @Override public void initControl() { LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); if (imageSize > -1) { params = new LayoutParams((int) imageSize, (int) imageSize); } removeAllViews(); setOrientation(VERTICAL); imgView = new BezelImageView(mContext); imgView.setLayoutParams(params); switch (mWidget) { case ImageCircle: imgView.autoSetMaskDrawable(); case Image: break; } addView(imgView); } @Override public void setValue(Object value) { mValue = value; if (mValue != null && imgView != null) { if (!mValue.equals("false")) { imgView.setImageBitmap(BitmapUtils.getBitmapImage(mContext, mValue.toString())); } else if (defaultImage > -1) { imgView.setImageResource(defaultImage); } } } @Override public void setError(String error) { } @Override public View getFieldView() { return imgView; } @Override public Object getValue() { return mValue; } @Override public void setEditable(Boolean editable) { isEditable = editable; } @Override public Boolean isEditable() { return isEditable; } @Override public void setColumn(OColumn column) { mCol = column; } @Override public void setLabelText(String label) { mLabel = label; } @Override public String getLabel() { if (mLabel != null) return mLabel; if (mCol != null) return mCol.getLabel(); return "unknown"; } @Override public void setValueUpdateListener(ValueUpdateListener listener) { mValueUpdateListener = listener; } @Override public Boolean isControlReady() { return mReady; } @Override public void resetData() { } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); mReady = true; } public void setWidgetType(OField.WidgetType type) { if (type != null) { mWidget = type; initControl(); } } public void setImageSize(float size) { imageSize = size; } public void setDefaultImage(int image) { defaultImage = image; } }