@ -26,12 +26,13 @@ import org.floens.chan.ui.view.FloatingMenu;
import org.floens.chan.ui.view.FloatingMenuItem ;
import java.util.ArrayList ;
import java.util.Arrays ;
import java.util.List ;
import static org.floens.chan.utils.AndroidUtils.dp ;
public class ListSettingView extends SettingView implements FloatingMenu . FloatingMenuCallback , View . OnClickListener {
public final Item [ ] items ;
public final List < Item > items ;
private Setting < String > setting ;
@ -46,28 +47,36 @@ public class ListSettingView extends SettingView implements FloatingMenu.Floatin
this . setting = setting ;
items = new Item [ itemNames . length ] ;
items = new ArrayList < > ( itemNames . length ) ;
for ( int i = 0 ; i < itemNames . length ; i + + ) {
items [ i ] = new Item ( itemNames [ i ] , keys [ i ] ) ;
items . add ( i , new Item ( itemNames [ i ] , keys [ i ] ) ) ;
}
selectItem ( ) ;
updateSelection ( ) ;
}
public ListSettingView ( SettingsController settingsController , Setting < String > setting , int name , Item [ ] items ) {
this ( settingsController , setting , getString ( name ) , items ) ;
}
public ListSettingView ( SettingsController settingsController , Setting < String > setting , int name , List < Item > items ) {
this ( settingsController , setting , getString ( name ) , items ) ;
}
public ListSettingView ( SettingsController settingsController , Setting < String > setting , String name , Item [ ] items ) {
this ( settingsController , setting , name , Arrays . asList ( items ) ) ;
}
public ListSettingView ( SettingsController settingsController , Setting < String > setting , String name , List < Item > items ) {
super ( settingsController , name ) ;
this . setting = setting ;
this . items = items ;
selectItem ( ) ;
updateSelection ( ) ;
}
public String getBottomDescription ( ) {
return items [ selected ] . name ;
return items . get ( selected ) . name ;
}
public Setting < String > getSetting ( ) {
@ -92,10 +101,9 @@ public class ListSettingView extends SettingView implements FloatingMenu.Floatin
@Override
public void onClick ( View v ) {
List < FloatingMenuItem > menuItems = new ArrayList < > ( 2 ) ;
List < FloatingMenuItem > menuItems = new ArrayList < > ( items . size ( ) ) ;
for ( Item item : items ) {
menuItems . add ( new FloatingMenuItem ( item . key , item . name ) ) ;
menuItems . add ( new FloatingMenuItem ( item . key , item . name , item . enabled ) ) ;
}
FloatingMenu menu = new FloatingMenu ( v . getContext ( ) ) ;
@ -110,7 +118,7 @@ public class ListSettingView extends SettingView implements FloatingMenu.Floatin
public void onFloatingMenuItemClicked ( FloatingMenu menu , FloatingMenuItem item ) {
String selectedKey = ( String ) item . getId ( ) ;
setting . set ( selectedKey ) ;
selectItem ( ) ;
updateSelection ( ) ;
settingsController . onPreferenceChange ( this ) ;
}
@ -118,10 +126,10 @@ public class ListSettingView extends SettingView implements FloatingMenu.Floatin
public void onFloatingMenuDismissed ( FloatingMenu menu ) {
}
private void selectItem ( ) {
public void updateSelection ( ) {
String selectedKey = setting . get ( ) ;
for ( int i = 0 ; i < items . length ; i + + ) {
if ( items [ i ] . key . equals ( selectedKey ) ) {
for ( int i = 0 ; i < items . size ( ) ; i + + ) {
if ( items . get ( i ) . key . equals ( selectedKey ) ) {
selected = i ;
break ;
}
@ -131,10 +139,18 @@ public class ListSettingView extends SettingView implements FloatingMenu.Floatin
public static class Item {
public final String name ;
public final String key ;
public boolean enabled ;
public Item ( String name , String key ) {
this . name = name ;
this . key = key ;
enabled = true ;
}
public Item ( String name , String key , boolean enabled ) {
this . name = name ;
this . key = key ;
this . enabled = enabled ;
}
}
}