/** @file SymbolEnableDialog.java * * @author marco corvi * @date * * @brief TopoDroid drawing symbol: * -------------------------------------------------------- * Copyright This sowftare is distributed under GPL-3.0 or later * See the file COPYING. * -------------------------------------------------------- */ package com.topodroid.DistoX; import java.util.ArrayList; import android.os.Bundle; import android.app.Dialog; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.DialogInterface; // import android.content.DialogInterface.OnClickListener; import android.view.Window; import android.graphics.*; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.AdapterView; // import android.widget.AdapterView.OnItemClickListener; // import android.widget.TextView; import android.widget.ListView; // import android.util.Log; class SymbolEnableDialog extends MyDialog implements View.OnClickListener { private int mType; // symbols type private Button mBTpoint; private Button mBTline; private Button mBTarea; private Button mBTreload; // private Button mBTsave; // private Button mBTcancel; // private Button mBTok; // private Activity mParent; private TopoDroidApp mApp; private ListView mList; private SymbolAdapter mPointAdapter; private SymbolAdapter mLineAdapter; private SymbolAdapter mAreaAdapter; SymbolEnableDialog( Context context, /* Activity parent, */ TopoDroidApp app ) { super( context, R.string.SymbolEnableDialog ); // mParent = parent; mApp = app; mType = Symbol.LINE; // default symbols are lines } @Override public void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.symbol_enable_dialog); getWindow().setLayout( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT ); mList = (ListView) findViewById(R.id.symbol_list); // mList.setOnItemClickListener( this ); mList.setDividerHeight( 2 ); // mBTsave = (Button) findViewById(R.id.symbol_save ); // mBTcancel = (Button) findViewById(R.id.symbol_cancel ); mBTline = (Button) findViewById(R.id.symbol_line ); mBTpoint = (Button) findViewById(R.id.symbol_point); mBTarea = (Button) findViewById(R.id.symbol_area ); mBTreload = (Button) findViewById(R.id.symbol_reload ); if ( TDSetting.mLevelOverNormal ) { mBTreload.setOnClickListener( this ); } else { mBTreload.setVisibility( View.GONE ); } mBTline.setOnClickListener( this ); if ( TDSetting.mLevelOverBasic ) { mBTpoint.setOnClickListener( this ); mBTarea.setOnClickListener( this ); } // Log.v( TopoDroidApp.TAG, "SymbolEnableDialog ... createAdapters" ); if ( ! createAdapters() ) dismiss(); // mList.setAdapter( mPointAdapter ); updateList(); } boolean createAdapters() { mPointAdapter = new SymbolAdapter( mContext, R.layout.symbol, new ArrayList<EnableSymbol>() ); mLineAdapter = new SymbolAdapter( mContext, R.layout.symbol, new ArrayList<EnableSymbol>() ); mAreaAdapter = new SymbolAdapter( mContext, R.layout.symbol, new ArrayList<EnableSymbol>() ); if ( TDSetting.mLevelOverBasic ) { SymbolPointLibrary point_lib = BrushManager.mPointLib; if ( point_lib == null ) return false; int np = point_lib.mSymbolNr; for ( int i=0; i<np; ++i ) { mPointAdapter.add( new EnableSymbol( mContext, Symbol.POINT, i, point_lib.getSymbolByIndex( i ) ) ); } } SymbolLineLibrary line_lib = BrushManager.mLineLib; if ( line_lib == null ) return false; int nl = line_lib.mSymbolNr; for ( int j=0; j<nl; ++j ) { mLineAdapter.add( new EnableSymbol( mContext, Symbol.LINE, j, line_lib.getSymbolByIndex( j ) ) ); } if ( TDSetting.mLevelOverBasic ) { SymbolAreaLibrary area_lib = BrushManager.mAreaLib; if ( area_lib == null ) return false; int na = area_lib.mSymbolNr; for ( int k=0; k<na; ++k ) { mAreaAdapter.add( new EnableSymbol( mContext, Symbol.AREA, k, area_lib.getSymbolByIndex( k ) ) ); } } // Log.v( TopoDroidApp.TAG, "SymbolEnableDialog ... symbols " + np + " " + nl + " " + na ); return true; } private void updateList() { // Log.v( TopoDroidApp.TAG, "SymbolEnableDialog ... updateList type " + mType ); switch ( mType ) { case Symbol.POINT: if ( TDSetting.mLevelOverBasic ) { mList.setAdapter( mPointAdapter ); mBTpoint.getBackground().setColorFilter( Color.parseColor( "#ccccff" ), PorterDuff.Mode.LIGHTEN ); mBTline.getBackground().setColorFilter( Color.parseColor( "#cccccc" ), PorterDuff.Mode.DARKEN ); mBTarea.getBackground().setColorFilter( Color.parseColor( "#cccccc" ), PorterDuff.Mode.DARKEN ); } break; case Symbol.LINE: mList.setAdapter( mLineAdapter ); mBTpoint.getBackground().setColorFilter( Color.parseColor( "#cccccc" ), PorterDuff.Mode.DARKEN ); mBTline.getBackground().setColorFilter( Color.parseColor( "#ccccff" ), PorterDuff.Mode.LIGHTEN ); mBTarea.getBackground().setColorFilter( Color.parseColor( "#cccccc" ), PorterDuff.Mode.DARKEN ); break; case Symbol.AREA: if ( TDSetting.mLevelOverBasic ) { mList.setAdapter( mAreaAdapter ); mBTpoint.getBackground().setColorFilter( Color.parseColor( "#cccccc" ), PorterDuff.Mode.DARKEN ); mBTline.getBackground().setColorFilter( Color.parseColor( "#cccccc" ), PorterDuff.Mode.DARKEN ); mBTarea.getBackground().setColorFilter( Color.parseColor( "#ccccff" ), PorterDuff.Mode.LIGHTEN ); } break; } mList.invalidate(); } @Override public void onClick(View view) { // TDLog.Log( TDLog.LOG_PLOT, "DrawingLinePickerDialog::onClick" ); int type = -1; switch (view.getId()) { case R.id.symbol_point: if ( TDSetting.mLevelOverBasic ) type = Symbol.POINT; break; case R.id.symbol_line: type = Symbol.LINE; break; case R.id.symbol_area: if ( TDSetting.mLevelOverBasic ) type = Symbol.AREA; break; case R.id.symbol_reload: String old_version = mApp.mDData.getValue( "symbol_version" ); if ( old_version == null ) old_version = "-"; String message = String.format( mContext.getResources().getString( R.string.symbols_ask ), mApp.SYMBOL_VERSION, old_version ); TopoDroidAlertDialog.makeAlert( mContext, mContext.getResources(), message, // R.string.symbols_ask, new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int btn ) { mApp.installSymbols( true ); BrushManager.reloadAllLibraries( mContext.getResources() ); createAdapters(); updateList(); } } ); break; default: break; } if ( type >= 0 && type != mType ) { mType = type; updateList(); } // dismiss(); } public void onBackPressed() { saveSymbols(); dismiss(); } void saveSymbols() { if ( TDSetting.mLevelOverBasic ) { mPointAdapter.updateSymbols( "p_" ); SymbolPointLibrary point_lib = BrushManager.mPointLib; if ( point_lib != null ) point_lib.makeEnabledList(); } mLineAdapter.updateSymbols( "l_" ); SymbolLineLibrary line_lib = BrushManager.mLineLib; if ( line_lib != null ) line_lib.makeEnabledList(); if ( TDSetting.mLevelOverBasic ) { mAreaAdapter.updateSymbols( "a_" ); SymbolAreaLibrary area_lib = BrushManager.mAreaLib; if ( area_lib != null ) area_lib.makeEnabledList(); } } }