From b3f6e1b0a39475250aed332ee381120e308aae79 Mon Sep 17 00:00:00 2001 From: Eric House Date: Tue, 5 Apr 2016 08:56:33 -0700 Subject: [PATCH] Make config work as a fragment, and clean up all the fragment subclasses: only one method needs to be overridden. --- .../org/eehouse/android/xw4/BoardFrag.java | 18 ++------- .../src/org/eehouse/android/xw4/ChatFrag.java | 13 +----- .../eehouse/android/xw4/DictBrowseFrag.java | 13 +----- .../android/xw4/GameConfigDelegate.java | 9 +++-- .../eehouse/android/xw4/GameConfigFrag.java | 31 ++++++++++++++ .../org/eehouse/android/xw4/GameUtils.java | 18 ++++++--- .../android/xw4/GamesListDelegate.java | 4 +- .../eehouse/android/xw4/GamesListFrag.java | 40 ++----------------- .../eehouse/android/xw4/StudyListFrag.java | 22 +++------- .../org/eehouse/android/xw4/XWFragment.java | 12 +++++- 10 files changed, 78 insertions(+), 102 deletions(-) create mode 100644 xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigFrag.java diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardFrag.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardFrag.java index e3515f17b..79fce7a33 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardFrag.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/BoardFrag.java @@ -1,6 +1,7 @@ /* -*- compile-command: "find-and-ant.sh debug install"; -*- */ /* - * Copyright 2014 by Eric House (xwords@eehouse.org). All rights reserved. + * Copyright 2014 - 2016 by Eric House (xwords@eehouse.org). All rights + * reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -21,22 +22,11 @@ package org.eehouse.android.xw4; import android.os.Bundle; -import org.eehouse.android.xw4.loc.LocUtils; - public class BoardFrag extends XWFragment { - private BoardDelegate m_dlgt; @Override - public void onCreate( Bundle savedInstanceState ) + public void onCreate( Bundle sis ) { - m_dlgt = new BoardDelegate( this, savedInstanceState ); - super.onCreate( m_dlgt, savedInstanceState ); - } - - @Override - public void onActivityCreated( Bundle savedInstanceState ) - { - super.onActivityCreated( savedInstanceState ); - setHasOptionsMenu( true ); + super.onCreate( new BoardDelegate( this, sis ), sis, true ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/ChatFrag.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/ChatFrag.java index b119e9753..add426c10 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/ChatFrag.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/ChatFrag.java @@ -22,19 +22,10 @@ package org.eehouse.android.xw4; import android.os.Bundle; public class ChatFrag extends XWFragment { - private ChatDelegate m_dlgt; @Override - public void onCreate( Bundle savedInstanceState ) + public void onCreate( Bundle sis ) { - m_dlgt = new ChatDelegate( this, savedInstanceState ); - super.onCreate( m_dlgt, savedInstanceState ); - } - - @Override - public void onActivityCreated( Bundle savedInstanceState ) - { - super.onActivityCreated( savedInstanceState ); - setHasOptionsMenu( true ); + super.onCreate( new ChatDelegate( this, sis ), sis, true ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseFrag.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseFrag.java index dd532d1ad..8fd890dbf 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseFrag.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/DictBrowseFrag.java @@ -22,19 +22,10 @@ package org.eehouse.android.xw4; import android.os.Bundle; public class DictBrowseFrag extends XWFragment { - private DictBrowseDelegate m_dlgt; @Override - public void onCreate( Bundle savedInstanceState ) + public void onCreate( Bundle sis ) { - m_dlgt = new DictBrowseDelegate( this, savedInstanceState ); - super.onCreate( m_dlgt, savedInstanceState ); - } - - @Override - public void onActivityCreated( Bundle savedInstanceState ) - { - super.onActivityCreated( savedInstanceState ); - setHasOptionsMenu( true ); + super.onCreate( new DictBrowseDelegate( this, sis ), sis, true ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigDelegate.java index 2397f4a64..12feaa717 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigDelegate.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigDelegate.java @@ -1,6 +1,6 @@ /* -*- compile-command: "find-and-ant.sh debug install"; -*- */ /* - * Copyright 2009 - 2015 by Eric House (xwords@eehouse.org). All rights + * Copyright 2009 - 2016 by Eric House (xwords@eehouse.org). All rights * reserved. * * This program is free software; you can redistribute it and/or @@ -462,9 +462,10 @@ public class GameConfigDelegate extends DelegateBase m_cp = CommonPrefs.get( m_activity ); - Intent intent = getIntent(); - m_rowid = intent.getLongExtra( GameUtils.INTENT_KEY_ROWID, -1 ); - m_forResult = intent.getBooleanExtra( INTENT_FORRESULT_ROWID, false ); + Bundle args = getArguments(); + m_rowid = args.getLong( GameUtils.INTENT_KEY_ROWID, DBUtils.ROWID_NOTFOUND ); + Assert.assertTrue( DBUtils.ROWID_NOTFOUND != m_rowid ); + m_forResult = args.getBoolean( INTENT_FORRESULT_ROWID, false ); m_connectSetRelay = findViewById( R.id.connect_set_relay ); diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigFrag.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigFrag.java new file mode 100644 index 000000000..d8ec07eae --- /dev/null +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameConfigFrag.java @@ -0,0 +1,31 @@ +/* -*- compile-command: "find-and-ant.sh debug install"; -*- */ +/* + * Copyright 2016 by Eric House (xwords@eehouse.org). All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.eehouse.android.xw4; + +import android.os.Bundle; + +public class GameConfigFrag extends XWFragment { + + @Override + public void onCreate( Bundle savedInstanceState ) + { + super.onCreate( new GameConfigDelegate( this, sis ), sis, true ); + } +} diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java index eec3455ad..9a3ed0a7f 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GameUtils.java @@ -1083,12 +1083,20 @@ public class GameUtils { DBUtils.saveSummary( context, lock, summary ); } // applyChanges - public static void doConfig( Activity activity, long rowid, Class clazz ) + public static void doConfig( Delegator delegator, long rowid ) { - Intent intent = new Intent( activity, clazz ); - intent.setAction( Intent.ACTION_EDIT ); - intent.putExtra( INTENT_KEY_ROWID, rowid ); - activity.startActivity( intent ); + Bundle extras = new Bundle(); + extras.putLong( INTENT_KEY_ROWID, rowid ); + + Activity activity = delegator.getActivity(); + if ( activity instanceof FragActivity ) { + FragActivity.addFragment( new GameConfigFrag(), extras, delegator ); + } else { + Intent intent = new Intent( activity, GameConfigActivity.class ); + intent.setAction( Intent.ACTION_EDIT ); + intent.putExtras( extras ); + activity.startActivity( intent ); + } } public static String formatGameID( int gameID ) diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java index b061c6706..ea67297d1 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListDelegate.java @@ -1,6 +1,6 @@ /* -*- compile-command: "find-and-ant.sh debug install"; -*- */ /* - * Copyright 2009 - 2015 by Eric House (xwords@eehouse.org). All + * Copyright 2009 - 2016 by Eric House (xwords@eehouse.org). All * rights reserved. * * This program is free software; you can redistribute it and/or @@ -1676,7 +1676,7 @@ public class GamesListDelegate extends ListDelegateBase break; case R.id.games_game_config: - GameUtils.doConfig( m_activity, selRowIDs[0], GameConfigActivity.class ); + GameUtils.doConfig( getDelegator(), selRowIDs[0] ); break; case R.id.games_game_move: diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListFrag.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListFrag.java index bf72ac950..f9828a693 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListFrag.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/GamesListFrag.java @@ -1,6 +1,6 @@ /* -*- compile-command: "find-and-ant.sh debug install"; -*- */ /* - * Copyright 2014 by Eric House (xwords@eehouse.org). All rights + * Copyright 2014 - 2016 by Eric House (xwords@eehouse.org). All rights * reserved. * * This program is free software; you can redistribute it and/or @@ -20,47 +20,13 @@ package org.eehouse.android.xw4; - -import android.content.Context; -import android.os.Handler; -import android.app.Activity; -import android.app.ListActivity; -import android.os.Build; import android.os.Bundle; -import android.support.v4.app.ListFragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.TextView; - -import junit.framework.Assert; - -import org.eehouse.android.xw4.jni.CommonPrefs; -import org.eehouse.android.xw4.loc.LocUtils; public class GamesListFrag extends XWFragment { - private GamesListDelegate m_dlgt; - - // public GamesListFrag( FragActivity activity ) - // { - // m_activity = activity; - // } - @Override - public void onCreate( Bundle savedInstanceState ) + public void onCreate( Bundle sis ) { - DbgUtils.logf( "GamesListFrag.onCreate()" ); - m_dlgt = new GamesListDelegate( this, savedInstanceState ); - super.onCreate( m_dlgt, savedInstanceState ); - } - - @Override - public void onActivityCreated( Bundle savedInstanceState ) - { - super.onActivityCreated( savedInstanceState ); - setHasOptionsMenu( true ); + super.onCreate( new GamesListDelegate( this, sis ), sis, true ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/StudyListFrag.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/StudyListFrag.java index 6d3633c08..0fcae720d 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/StudyListFrag.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/StudyListFrag.java @@ -1,6 +1,7 @@ /* -*- compile-command: "find-and-ant.sh debug install"; -*- */ /* - * Copyright 2014 by Eric House (xwords@eehouse.org). All rights reserved. + * Copyright 2014 - 2016 by Eric House (xwords@eehouse.org). All rights + * reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -20,25 +21,12 @@ package org.eehouse.android.xw4; import android.os.Bundle; -import android.view.View; -import org.eehouse.android.xw4.loc.LocUtils; - -public class StudyListFrag extends XWFragment implements Delegator { - private StudyListDelegate m_dlgt; +public class StudyListFrag extends XWFragment { @Override - public void onCreate( Bundle savedInstanceState ) + public void onCreate( Bundle sis ) { - DbgUtils.logf( "StudyListFrag.onCreate()" ); - m_dlgt = new StudyListDelegate( this, savedInstanceState ); - super.onCreate( m_dlgt, savedInstanceState ); - } - - @Override - public void onActivityCreated( Bundle savedInstanceState ) - { - super.onActivityCreated( savedInstanceState ); - setHasOptionsMenu( true ); + super.onCreate( new StudyListDelegate( this, sis ), sis, true ); } } diff --git a/xwords4/android/XWords4/src/org/eehouse/android/xw4/XWFragment.java b/xwords4/android/XWords4/src/org/eehouse/android/xw4/XWFragment.java index 288450c00..e181eac9c 100644 --- a/xwords4/android/XWords4/src/org/eehouse/android/xw4/XWFragment.java +++ b/xwords4/android/XWords4/src/org/eehouse/android/xw4/XWFragment.java @@ -39,8 +39,15 @@ public class XWFragment extends Fragment FragActivity.OrientChangeListener { private DelegateBase m_dlgt; + private boolean m_hasOptionsMenu = false; - public void onCreate( DelegateBase dlgt, Bundle sis ) + protected void onCreate( DelegateBase dlgt, Bundle sis, boolean hasOptionsMenu ) + { + m_hasOptionsMenu = hasOptionsMenu; + this.onCreate( dlgt, sis ); + } + + protected void onCreate( DelegateBase dlgt, Bundle sis ) { DbgUtils.logdf( "%s.onCreate() called", this.getClass().getName() ); super.onCreate( sis ); @@ -61,6 +68,9 @@ public class XWFragment extends Fragment DbgUtils.logdf( "%s.onActivityCreated() called", this.getClass().getName() ); m_dlgt.init( savedInstanceState ); super.onActivityCreated( savedInstanceState ); + if ( m_hasOptionsMenu ) { + setHasOptionsMenu( true ); + } } @Override