/* @file ListerSetHandler.java * * @author marco corvi * @date dec 2011 * * @brief TopoDroid handler for a set of listers * -------------------------------------------------------- * 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.Handler; import android.os.Message; import android.os.Bundle; import android.util.Log; public class ListerSetHandler extends ListerHandler { private ArrayList<ILister> mListers; ListerSetHandler() { mListers = new ArrayList< ILister >(); } int size() { return mListers.size(); } void registerLister( ILister lister ) { // Log.v("DistoX", "register lister " + lister.toString() + " size " + size() ); for ( ILister l : mListers ) { if ( l == lister ) return; // already registered } mListers.add( lister ); } void unregisterLister( ILister lister ) { // Log.v("DistoX", "unregister lister " + lister.toString() + " size " + size() ); mListers.remove( lister ); } // public void updateBlockList( long blk_id ) // { // for ( ILister lister : mListers ) lister.updateBlockList( blk_id ); // } public void setConnectionStatus( int status ) { for ( ILister lister : mListers ) lister.setConnectionStatus( status ); } @Override public void refreshDisplay( int nr, boolean toast ) { for ( ILister lister : mListers ) lister.refreshDisplay( nr, toast ); } @Override public void handleMessage( Message msg ) { if ( size() == 0 ) return; Bundle bundle = msg.getData(); switch ( msg.what ) { case ListerHandler.LISTER_REFRESH: int nr = bundle.getInt( ListerHandler.LISTER_DATA_NUMBER ); for ( ILister lister : mListers ) lister.refreshDisplay( nr, false ); break; case ListerHandler.LISTER_STATUS: int status = bundle.getInt( ListerHandler.LISTER_DATA_STATUS ); for ( ILister lister : mListers ) lister.setConnectionStatus( status ); break; case ListerHandler.LISTER_UPDATE: long blk_id = bundle.getLong( ListerHandler.LISTER_DATA_BLOCK_ID ); for ( ILister lister : mListers ) lister.updateBlockList( blk_id ); break; case ListerHandler.LISTER_REF_AZIMUTH: float azimuth = bundle.getFloat( ListerHandler.LISTER_DATA_AZIMUTH ); long fixed_extend = bundle.getLong( ListerHandler.LISTER_DATA_FIXED_EXTEND ); for ( ILister lister : mListers ) lister.setRefAzimuth( azimuth, fixed_extend ); break; } } }