mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-09 22:00:39 +01:00
Merge branch 'android_branch' into android_translate
This commit is contained in:
commit
3c2d36c5d4
26 changed files with 379 additions and 690 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -38,6 +38,7 @@
|
|||
work anyway.)</li>
|
||||
<li>Don't open a closed group when moving games to it</li>
|
||||
<li>Fix occasional crash</li>
|
||||
<li>Switch from ant to gradle (dev. detail)</li>
|
||||
</ul>
|
||||
|
||||
<p>(The full changelog
|
||||
|
|
|
@ -83,15 +83,8 @@ public class BoardDelegate extends DelegateBase
|
|||
NFCUtils.NFCActor {
|
||||
private static final String TAG = BoardDelegate.class.getSimpleName();
|
||||
|
||||
public static final String INTENT_KEY_CHAT = "chat";
|
||||
|
||||
private static final int SCREEN_ON_TIME = 10 * 60 * 1000; // 10 mins
|
||||
|
||||
private static final String DLG_TITLE = "DLG_TITLE";
|
||||
private static final String DLG_TITLESTR = "DLG_TITLESTR";
|
||||
private static final String DLG_BYTES = "DLG_BYTES";
|
||||
private static final String ROOM = "ROOM";
|
||||
private static final String PWDNAME = "PWDNAME";
|
||||
private static final String SAVE_MYSIS = TAG + "/MYSIS";
|
||||
|
||||
private Activity m_activity;
|
||||
|
@ -617,7 +610,6 @@ public class BoardDelegate extends DelegateBase
|
|||
{
|
||||
super.onResume();
|
||||
doResume( false );
|
||||
checkAddDualpaneExpl();
|
||||
}
|
||||
|
||||
protected void onPause()
|
||||
|
@ -736,14 +728,6 @@ public class BoardDelegate extends DelegateBase
|
|||
showInviteChoicesThen( Action.LAUNCH_INVITE_ACTION, info );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void orientationChanged()
|
||||
{
|
||||
Log.d( TAG, "BoardDelegate.orientationChanged()" );
|
||||
initToolbar();
|
||||
m_view.orientationChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setTitle()
|
||||
{
|
||||
|
@ -1443,8 +1427,6 @@ public class BoardDelegate extends DelegateBase
|
|||
data = nli.makeLaunchJSON();
|
||||
}
|
||||
if ( null != data ) {
|
||||
removeDialog( DlgID.CONFIRM_THEN );
|
||||
|
||||
recordInviteSent( InviteMeans.NFC, null );
|
||||
}
|
||||
return data;
|
||||
|
@ -2822,29 +2804,4 @@ public class BoardDelegate extends DelegateBase
|
|||
m_jniThread.handle( cmd, args );
|
||||
}
|
||||
}
|
||||
|
||||
// If I'm upgrading and running this for the first time show an
|
||||
// explanation about the new dualpane feature
|
||||
//
|
||||
// TODO remove a few weeks after shipping a version that includes it
|
||||
private static boolean s_dpShown = false;
|
||||
private void checkAddDualpaneExpl()
|
||||
{
|
||||
if ( !s_dpShown ) {
|
||||
s_dpShown = true;
|
||||
// Am I a tablet AND is that because my size says so rather than
|
||||
// my having overridden it
|
||||
if ( XWPrefs.getIsTablet( m_activity )
|
||||
&& getString(R.string.force_tablet_default)
|
||||
.equals(XWPrefs.getPrefsString(m_activity,
|
||||
R.string.key_force_tablet))
|
||||
&& !Utils.onFirstVersion(m_activity ) ) {
|
||||
makeNotAgainBuilder( R.string.invite_dualpane,
|
||||
R.string.key_notagain_dualpane )
|
||||
.setActionPair(new ActionPair(Action.DISABLE_DUALPANE,
|
||||
R.string.disable_dualpane))
|
||||
.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
} // class BoardDelegate
|
||||
|
|
|
@ -50,7 +50,7 @@ public class DBAlert extends XWDialogFragment {
|
|||
if ( null != obj && !(obj instanceof Serializable) ) {
|
||||
Log.d( TAG, "OOPS: %s not Serializable",
|
||||
obj.getClass().getName() );
|
||||
// Assert.fail();
|
||||
Assert.assertFalse( BuildConfig.DEBUG );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ public class DelegateBase implements DlgClickNotify,
|
|||
Assert.assertTrue( 0 < menuID );
|
||||
m_delegator = delegator;
|
||||
m_activity = delegator.getActivity();
|
||||
m_dlgDelegate = new DlgDelegate( m_activity, this, this, bundle );
|
||||
m_dlgDelegate = new DlgDelegate( m_activity, this, this );
|
||||
m_layoutID = layoutID;
|
||||
m_optionsMenuID = menuID;
|
||||
LocUtils.xlateTitle( m_activity );
|
||||
|
@ -100,12 +100,10 @@ public class DelegateBase implements DlgClickNotify,
|
|||
protected void onCreateContextMenu( ContextMenu menu, View view,
|
||||
ContextMenuInfo menuInfo ) {}
|
||||
protected boolean onContextItemSelected( MenuItem item ) { return false; }
|
||||
protected void onStop() {}
|
||||
protected void onDestroy() {}
|
||||
protected void onWindowFocusChanged( boolean hasFocus ) {}
|
||||
protected boolean handleBackPressed() { return false; }
|
||||
public void orientationChanged() {}
|
||||
protected Dialog onCreateDialog( int id ) { return null; }
|
||||
protected void prepareDialog( DlgID dlgId, Dialog dialog ) {}
|
||||
|
||||
protected void requestWindowFeature( int feature ) {}
|
||||
|
||||
|
@ -156,16 +154,6 @@ public class DelegateBase implements DlgClickNotify,
|
|||
XWService.setListener( null );
|
||||
}
|
||||
|
||||
protected void onStop()
|
||||
{
|
||||
// Alerts disappear on their own if not in dualpane mode
|
||||
if ( false
|
||||
&& m_activity instanceof MainActivity
|
||||
&& ((MainActivity)m_activity).inDPMode() ) {
|
||||
DlgDelegate.closeAlerts( m_activity, this );
|
||||
}
|
||||
}
|
||||
|
||||
protected DelegateBase curThis()
|
||||
{
|
||||
DelegateBase result = null;
|
||||
|
@ -424,15 +412,11 @@ public class DelegateBase implements DlgClickNotify,
|
|||
return cbx.isChecked();
|
||||
}
|
||||
|
||||
protected void showDialog( DlgID dlgID )
|
||||
{
|
||||
m_dlgDelegate.showDialog( dlgID );
|
||||
}
|
||||
|
||||
protected Dialog makeDialog( DBAlert alert, Object[] params )
|
||||
{
|
||||
DlgID dlgID = alert.getDlgID();
|
||||
Log.d( TAG, "makeDialog(): not handling %s", dlgID.toString() );
|
||||
Log.d( TAG, "%s.makeDialog(): not handling %s", getClass().getSimpleName(),
|
||||
dlgID.toString() );
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -477,32 +461,11 @@ public class DelegateBase implements DlgClickNotify,
|
|||
DbgUtils.assertOnUIThread();
|
||||
if ( m_activity instanceof XWActivity ) {
|
||||
((XWActivity)m_activity).show( df );
|
||||
} else if ( m_activity instanceof PrefsActivity ) {
|
||||
((PrefsActivity)m_activity).show( df );
|
||||
} else {
|
||||
Assert.assertTrue( !BuildConfig.DEBUG );
|
||||
}
|
||||
}
|
||||
|
||||
protected void removeDialog( DlgID dlgID )
|
||||
{
|
||||
removeDialog( dlgID.ordinal() );
|
||||
}
|
||||
|
||||
protected void dismissDialog( DlgID dlgID )
|
||||
{
|
||||
try {
|
||||
m_activity.dismissDialog( dlgID.ordinal() );
|
||||
} catch ( Exception ex ) {
|
||||
// Log.ex( ex );
|
||||
}
|
||||
}
|
||||
|
||||
protected void removeDialog( int id )
|
||||
{
|
||||
m_activity.removeDialog( id );
|
||||
}
|
||||
|
||||
protected AlertDialog.Builder makeAlertBuilder()
|
||||
{
|
||||
return LocUtils.makeAlertBuilder( m_activity );
|
||||
|
|
|
@ -312,7 +312,7 @@ public class DictBrowseDelegate extends DelegateBase
|
|||
finish();
|
||||
break;
|
||||
default:
|
||||
Assert.assertTrue( !BuildConfig.DEBUG );
|
||||
Assert.assertFalse( BuildConfig.DEBUG );
|
||||
}
|
||||
return handled;
|
||||
}
|
||||
|
|
|
@ -28,28 +28,13 @@ import android.app.ProgressDialog;
|
|||
import android.content.Context;
|
||||
import android.content.DialogInterface.OnCancelListener;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView.OnItemSelectedListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Button;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.eehouse.android.xw4.DBUtils.SentInvitesInfo;
|
||||
import org.eehouse.android.xw4.loc.LocUtils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public class DlgDelegate {
|
||||
private static final String TAG = DlgDelegate.class.getSimpleName();
|
||||
|
@ -288,9 +273,6 @@ public class DlgDelegate {
|
|||
public static final int NFC_BTN = AlertDialog.BUTTON_NEUTRAL;
|
||||
public static final int DISMISS_BUTTON = 0;
|
||||
|
||||
private static final String IDS = "IDS";
|
||||
private static final String STATE_KEYF = "STATE_%d";
|
||||
|
||||
public interface DlgClickNotify {
|
||||
// These are stored in the INVITES table. Don't change order
|
||||
// gratuitously
|
||||
|
@ -311,8 +293,6 @@ public class DlgDelegate {
|
|||
NotAgainBuilder makeNotAgainBuilder( int msgID, int prefsKey );
|
||||
}
|
||||
|
||||
private static Map<DlgID, WeakReference<DelegateBase>> s_pendings
|
||||
= new HashMap<DlgID, WeakReference<DelegateBase>>();
|
||||
private Activity m_activity;
|
||||
private DelegateBase m_dlgt;
|
||||
private DlgClickNotify m_clickCallback;
|
||||
|
@ -320,52 +300,13 @@ public class DlgDelegate {
|
|||
private ProgressDialog m_progress;
|
||||
private Handler m_handler;
|
||||
|
||||
private HashMap<DlgID, DlgState> m_dlgStates;
|
||||
|
||||
public DlgDelegate( Activity activity, DelegateBase dlgt,
|
||||
DlgClickNotify callback, Bundle bundle )
|
||||
DlgClickNotify callback )
|
||||
{
|
||||
m_activity = activity;
|
||||
m_dlgt = dlgt;
|
||||
m_clickCallback = callback;
|
||||
m_handler = new Handler();
|
||||
m_dlgStates = new HashMap<DlgID,DlgState>();
|
||||
|
||||
if ( null != bundle ) {
|
||||
int[] ids = bundle.getIntArray( IDS );
|
||||
if ( null != ids ) {
|
||||
for ( int id : ids ) {
|
||||
String key = String.format( STATE_KEYF, id );
|
||||
addState( (DlgState)bundle.getParcelable( key ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onSaveInstanceState( Bundle outState )
|
||||
{
|
||||
int[] ids = new int[m_dlgStates.size()];
|
||||
if ( 0 < ids.length ) {
|
||||
int indx = 0;
|
||||
Iterator<DlgState> iter = m_dlgStates.values().iterator();
|
||||
while ( iter.hasNext() ) {
|
||||
DlgState state = iter.next();
|
||||
int id = state.m_id.ordinal();
|
||||
String key = String.format( STATE_KEYF, id );
|
||||
outState.putParcelable( key, state );
|
||||
ids[indx++] = id;
|
||||
}
|
||||
}
|
||||
outState.putIntArray( IDS, ids );
|
||||
}
|
||||
|
||||
protected void showDialog( DlgID dlgID )
|
||||
{
|
||||
// DbgUtils.logf( "showDialog(%s)", dlgID.toString() );
|
||||
if ( !m_activity.isFinishing() ) {
|
||||
s_pendings.put( dlgID, new WeakReference<DelegateBase>(m_dlgt) );
|
||||
m_activity.showDialog( dlgID.ordinal() );
|
||||
}
|
||||
}
|
||||
|
||||
private void showOKOnlyDialogThen( String msg, Action action,
|
||||
|
@ -544,80 +485,6 @@ public class DlgDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
private DlgState findForID( DlgID dlgID )
|
||||
{
|
||||
DlgState state = m_dlgStates.get( dlgID );
|
||||
// DbgUtils.logf( "findForID(%d)=>%H", id, state );
|
||||
return state;
|
||||
}
|
||||
|
||||
private void dropState( DlgState state )
|
||||
{
|
||||
int nDlgs = m_dlgStates.size();
|
||||
Assert.assertNotNull( state );
|
||||
// Assert.assertTrue( state == m_dlgStates.get( state.m_id ) );
|
||||
m_dlgStates.remove( state.m_id );
|
||||
// DbgUtils.logf( "dropState: active dialogs now %d from %d ",
|
||||
// m_dlgStates.size(), nDlgs );
|
||||
}
|
||||
|
||||
private void addState( DlgState state )
|
||||
{
|
||||
// I'm getting serialization failures on devices pointing at
|
||||
// DlgState but the code below says the object's fine (as it
|
||||
// should be.) Just to have a record....
|
||||
//
|
||||
// Bundle bundle = new Bundle();
|
||||
// DbgUtils.logf( "addState: testing serializable" );
|
||||
// bundle.putSerializable( "foo", state );
|
||||
// state = (DlgState)bundle.getSerializable( "foo" );
|
||||
// DbgUtils.logf( "addState: serializable is ok" );
|
||||
|
||||
m_dlgStates.put( state.m_id, state );
|
||||
}
|
||||
|
||||
public static Dialog onCreateDialog( int id )
|
||||
{
|
||||
Dialog result = null;
|
||||
DlgID dlgID = DlgID.values()[id];
|
||||
WeakReference<DelegateBase> ref = s_pendings.get( dlgID );
|
||||
if ( null != ref ) {
|
||||
DelegateBase dlgt = ref.get();
|
||||
if ( null != dlgt ) {
|
||||
result = dlgt.onCreateDialog( id );
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static void onPrepareDialog( int id, Dialog dialog )
|
||||
{
|
||||
DlgID dlgID = DlgID.values()[id];
|
||||
WeakReference<DelegateBase> ref = s_pendings.get( dlgID );
|
||||
DelegateBase dlgt = ref.get();
|
||||
if ( null != dlgt ) {
|
||||
dlgt.prepareDialog( dlgID, dialog );
|
||||
}
|
||||
}
|
||||
|
||||
protected static void closeAlerts( Activity activity, DelegateBase base )
|
||||
{
|
||||
DbgUtils.assertOnUIThread();
|
||||
Iterator<DlgID> iter = s_pendings.keySet().iterator();
|
||||
while ( iter.hasNext() ) {
|
||||
DlgID dlgID = iter.next();
|
||||
DelegateBase oneBase = s_pendings.get( dlgID ).get();
|
||||
if ( null == oneBase ) {
|
||||
iter.remove(); // no point in keeping it
|
||||
} else if ( base.equals( oneBase ) ) {
|
||||
Log.d( TAG, "removing alert %s for %s", dlgID.toString(),
|
||||
oneBase.toString() );
|
||||
activity.removeDialog( dlgID.ordinal() );
|
||||
iter.remove(); // no point in keeping this either
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getString( int id, Object... params )
|
||||
{
|
||||
return m_dlgt.getString( id, params );
|
||||
|
|
|
@ -61,18 +61,6 @@ public class DualpaneDelegate extends DelegateBase {
|
|||
return dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Dialog onCreateDialog( int id )
|
||||
{
|
||||
return DlgDelegate.onCreateDialog( id );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void prepareDialog( DlgID dlgId, Dialog dialog )
|
||||
{
|
||||
DlgDelegate.onPrepareDialog( dlgId.ordinal(), dialog );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleNewIntent( Intent intent )
|
||||
{
|
||||
|
|
|
@ -1,309 +0,0 @@
|
|||
// /* -*- compile-command: "find-and-gradle.sh installXw4Debug"; -*- */
|
||||
// /*
|
||||
// * 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
|
||||
// * 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.graphics.Rect;
|
||||
// import android.app.Dialog;
|
||||
// import android.content.res.Configuration;
|
||||
// import android.os.Bundle;
|
||||
// import android.support.v4.app.Fragment;
|
||||
// import android.support.v4.app.FragmentActivity;
|
||||
// import android.support.v4.app.FragmentManager;
|
||||
// import android.support.v4.app.FragmentManager.BackStackEntry;
|
||||
// import android.support.v4.app.FragmentTransaction;
|
||||
// import android.view.View;
|
||||
// import android.widget.FrameLayout;
|
||||
// import android.widget.LinearLayout.LayoutParams;
|
||||
// import android.widget.LinearLayout;
|
||||
// import android.widget.LinearLayout;
|
||||
|
||||
// import junit.framework.Assert;
|
||||
|
||||
// public class FragActivity extends FragmentActivity
|
||||
// implements FragmentManager.OnBackStackChangedListener {
|
||||
|
||||
// private static final int MAX_PANES_LANDSCAPE = 3;
|
||||
|
||||
// // public interface OrientChangeListener {
|
||||
// // void orientationChanged();
|
||||
// // }
|
||||
|
||||
// private static FragActivity s_this;
|
||||
|
||||
// private LinearLayout m_root;
|
||||
// private int m_nextID = 0x00FFFFFF;
|
||||
// private int m_maxPanes;
|
||||
// private Boolean m_isPortrait;
|
||||
|
||||
// @Override
|
||||
// public void onCreate( Bundle savedInstanceState )
|
||||
// {
|
||||
// s_this = this;
|
||||
// super.onCreate( savedInstanceState );
|
||||
// setContentView( R.layout.dualcontainer );
|
||||
|
||||
// m_root = (LinearLayout)findViewById( R.id.main_container );
|
||||
// getSupportFragmentManager().addOnBackStackChangedListener( this );
|
||||
|
||||
// m_maxPanes = maxPanes();
|
||||
|
||||
// // Nothing to do if we're restarting
|
||||
// if ( savedInstanceState == null ) {
|
||||
// // In case this activity was started with special instructions from an Intent,
|
||||
// // pass the Intent's extras to the fragment as arguments
|
||||
// addFragmentImpl( new GamesListFrag(), getIntent().getExtras(), null );
|
||||
// }
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// public void onBackPressed()
|
||||
// {
|
||||
// DbgUtils.logf( "FragActivity.onBackPressed()" );
|
||||
// super.onBackPressed();
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// public void onConfigurationChanged( Configuration newConfig )
|
||||
// {
|
||||
// Rect rect = new Rect();
|
||||
// m_root.getWindowVisibleDisplayFrame( rect );
|
||||
|
||||
// boolean isPortrait
|
||||
// = Configuration.ORIENTATION_PORTRAIT == newConfig.orientation;
|
||||
// DbgUtils.logf( "FragActivity.onConfigurationChanged(isPortrait=%b)",
|
||||
// isPortrait );
|
||||
// m_isPortrait = isPortrait;
|
||||
// if ( isPortrait != (rect.width() <= rect.height()) ) {
|
||||
// Log.df( "FragActivity.onConfigurationChanged(): isPortrait:"
|
||||
// + " %b; width: %d; height: %d",
|
||||
// isPortrait, rect.width(), rect.height() );
|
||||
// }
|
||||
// int maxPanes = isPortrait? 1 : MAX_PANES_LANDSCAPE;
|
||||
// if ( m_maxPanes != maxPanes ) {
|
||||
// m_maxPanes = maxPanes;
|
||||
// setVisiblePanes();
|
||||
// }
|
||||
// tellOrientationChanged();
|
||||
// super.onConfigurationChanged( newConfig );
|
||||
// }
|
||||
|
||||
// protected void getFragmentDims( int[] dims )
|
||||
// {
|
||||
// Rect rect = new Rect();
|
||||
// m_root.getWindowVisibleDisplayFrame( rect );
|
||||
// int width = rect.width();
|
||||
// int height = rect.height();
|
||||
// if ( null != m_isPortrait && m_isPortrait && height < width ) {
|
||||
// int tmp = width;
|
||||
// width = height;
|
||||
// height = tmp;
|
||||
// }
|
||||
// dims[0] = width / Math.min( m_maxPanes, m_root.getChildCount() );
|
||||
// dims[1] = height;
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// protected Dialog onCreateDialog( int id )
|
||||
// {
|
||||
// return DlgDelegate.onCreateDialog( id );
|
||||
// }
|
||||
|
||||
// @Override
|
||||
// protected void onPrepareDialog( int id, Dialog dialog )
|
||||
// {
|
||||
// DlgDelegate.onPrepareDialog( id, dialog );
|
||||
// }
|
||||
|
||||
// //////////////////////////////////////////////////////////////////////
|
||||
// // FragmentManager.OnBackStackChangedListener
|
||||
// //////////////////////////////////////////////////////////////////////
|
||||
// public void onBackStackChanged()
|
||||
// {
|
||||
// DbgUtils.logf( "FragActivity.onBackStackChanged()" );
|
||||
// // make sure the right-most are visible
|
||||
// int fragCount = getSupportFragmentManager().getBackStackEntryCount();
|
||||
// if ( 0 == fragCount ) {
|
||||
// finish();
|
||||
// } else if ( fragCount == m_root.getChildCount() - 1 ) {
|
||||
// m_root.removeViewAt( fragCount );
|
||||
// setVisiblePanes();
|
||||
// }
|
||||
// }
|
||||
|
||||
// // public void launchDictFrag( Bundle args )
|
||||
// // {
|
||||
// // // DictBrowseFrag dbf = new DictBrowseFrag();
|
||||
// // // dbf.setArguments( args );
|
||||
// // // addFragment( dbf );
|
||||
// // }
|
||||
|
||||
// protected void finishFragment()
|
||||
// {
|
||||
// popFragment( null );
|
||||
// }
|
||||
|
||||
// protected void popFragment( Fragment frag )
|
||||
// {
|
||||
// getSupportFragmentManager().popBackStack();
|
||||
// }
|
||||
|
||||
// private void addFragmentImpl( Fragment fragment, Bundle bundle,
|
||||
// Delegator parent )
|
||||
// {
|
||||
// fragment.setArguments( bundle );
|
||||
// addFragmentImpl( fragment, parent );
|
||||
// }
|
||||
|
||||
// private void addFragmentImpl( Fragment fragment, Delegator delegator )
|
||||
// {
|
||||
// String newName = fragment.getClass().getName();
|
||||
// boolean replace = false;
|
||||
// FragmentManager fm = getSupportFragmentManager();
|
||||
// int fragCount = fm.getBackStackEntryCount();
|
||||
// int containerCount = m_root.getChildCount();
|
||||
// DbgUtils.logf( "fragCount: %d; containerCount: %d", fragCount, containerCount );
|
||||
// // Assert.assertTrue( fragCount == containerCount );
|
||||
|
||||
// // Replace IF we're adding something of the same class at right OR if
|
||||
// // we're adding something with the existing left pane as its parent
|
||||
// // (delegator)
|
||||
// if ( 0 < fragCount ) {
|
||||
// FragmentManager.BackStackEntry entry = fm.getBackStackEntryAt( fragCount - 1 );
|
||||
// String curName = entry.getName();
|
||||
// DbgUtils.logf( "name of last entry: %s", curName );
|
||||
// replace = curName.equals( newName );
|
||||
|
||||
// if ( !replace && 1 < fragCount ) {
|
||||
// entry = fm.getBackStackEntryAt( fragCount - 2 );
|
||||
// curName = entry.getName();
|
||||
// String delName = delegator.getClass().getName();
|
||||
// DbgUtils.logf( "comparing %s, %s", curName, delName );
|
||||
// replace = curName.equals( delName );
|
||||
// }
|
||||
|
||||
// if ( replace ) {
|
||||
// fm.popBackStack();
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Replace doesn't seem to work with generated IDs, so we'll create a
|
||||
// // new FrameLayout each time. If we're replacing, we'll replace the
|
||||
// // current rightmost FrameLayout. Otherwise we'll add a new one.
|
||||
// FrameLayout cont = new FrameLayout( this );
|
||||
// cont.setLayoutParams( new LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f) );
|
||||
// int id = --m_nextID;
|
||||
// cont.setId( id );
|
||||
// m_root.addView( cont, replace ? containerCount - 1 : containerCount );
|
||||
|
||||
// if ( !replace && containerCount >= m_maxPanes ) {
|
||||
// int indx = containerCount - m_maxPanes;
|
||||
// View child = m_root.getChildAt( indx );
|
||||
// child.setVisibility( View.GONE );
|
||||
|
||||
// setMenuVisibility( child, false );
|
||||
|
||||
// DbgUtils.logf( "hiding %dth container", indx );
|
||||
// }
|
||||
|
||||
// fm.beginTransaction()
|
||||
// .add( id, fragment )
|
||||
// .addToBackStack( newName )
|
||||
// .commit();
|
||||
// // fm.executePendingTransactions();
|
||||
// }
|
||||
|
||||
// private void setVisiblePanes()
|
||||
// {
|
||||
// // hide all but the right-most m_maxPanes children
|
||||
// int nPanes = m_root.getChildCount();
|
||||
// for ( int ii = 0; ii < nPanes; ++ii ) {
|
||||
// View child = m_root.getChildAt( ii );
|
||||
// boolean visible = ii >= nPanes - m_maxPanes;
|
||||
// DbgUtils.logf( "pane %d: visible=%b", ii, visible );
|
||||
// child.setVisibility( visible ? View.VISIBLE : View.GONE );
|
||||
// setMenuVisibility( child, visible );
|
||||
// }
|
||||
// }
|
||||
|
||||
// private void setMenuVisibility( View cont, boolean visible )
|
||||
// {
|
||||
// FrameLayout layout = (FrameLayout)cont;
|
||||
// FragmentManager fm = getSupportFragmentManager();
|
||||
// int hidingId = layout.getId();
|
||||
// Fragment frag = fm.findFragmentById( hidingId );
|
||||
// if ( null != frag ) { // hasn't been popped?
|
||||
// frag.setMenuVisibility( visible );
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Walk all Fragment children and if they care notify of change.
|
||||
// private void tellOrientationChanged()
|
||||
// {
|
||||
// FragmentManager fm = getSupportFragmentManager();
|
||||
// int nPanes = m_root.getChildCount();
|
||||
// for ( int ii = 0; ii < nPanes; ++ii ) {
|
||||
// FrameLayout frame = (FrameLayout)m_root.getChildAt( ii );
|
||||
// int id = frame.getId();
|
||||
// Fragment frag = fm.findFragmentById( id );
|
||||
// if ( null == frag ) {
|
||||
// DbgUtils.logf( "tellOrienationChanged: NO FRAG at %d, id=%d", ii, id );
|
||||
// } else if ( frag instanceof XWFragment ) {
|
||||
// ((XWFragment)frag).getDelegate().orientationChanged();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// private int maxPanes()
|
||||
// {
|
||||
// int result;
|
||||
// int orientation = getResources().getConfiguration().orientation;
|
||||
// if ( XWPrefs.getIsTablet( this )
|
||||
// && Configuration.ORIENTATION_LANDSCAPE == orientation ) {
|
||||
// result = 2;
|
||||
// } else {
|
||||
// result = 1;
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// private static FragActivity getThis()
|
||||
// {
|
||||
// Assert.assertNotNull( s_this );
|
||||
// return s_this;
|
||||
// }
|
||||
|
||||
// public static void addFragment( Fragment fragment, Bundle bundle )
|
||||
// {
|
||||
// addFragment( fragment, bundle, null );
|
||||
// }
|
||||
|
||||
// public static void addFragment( Fragment fragment, Bundle bundle,
|
||||
// Delegator parent )
|
||||
// {
|
||||
// getThis().addFragmentImpl( fragment, bundle, parent );
|
||||
// }
|
||||
|
||||
// public static void addFragmentForResult( Fragment fragment, Bundle bundle,
|
||||
// RequestCode requestCode, Delegator parent )
|
||||
// {
|
||||
// getThis().addFragmentImpl( fragment, bundle, parent );
|
||||
// }
|
||||
// }
|
|
@ -929,20 +929,6 @@ public class GamesListDelegate extends ListDelegateBase
|
|||
.setEnabled( 0 <= m_mySIS.groupSelItem );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void prepareDialog( DlgID dlgID, Dialog dialog )
|
||||
{
|
||||
Assert.fail();
|
||||
/*
|
||||
AlertDialog ad = (AlertDialog)dialog;
|
||||
switch( dlgID ) {
|
||||
case CHANGE_GROUP:
|
||||
ad.getButton( AlertDialog.BUTTON_POSITIVE ).setEnabled( false );
|
||||
break;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init( Bundle savedInstanceState )
|
||||
{
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/* -*- compile-command: "find-and-gradle.sh installXw4Debug"; -*- */
|
||||
/*
|
||||
* Copyright 2009-2010 by Eric House (xwords@eehouse.org). All
|
||||
* rights reserved.
|
||||
* Copyright 2017 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,16 +20,11 @@
|
|||
package org.eehouse.android.xw4;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
|
||||
public class HostActivity extends XWActivity {
|
||||
private HostDelegate m_dlgt;
|
||||
|
||||
@Override
|
||||
public void onCreate( Bundle sis ) {
|
||||
m_dlgt = new HostDelegate( this, sis );
|
||||
super.onCreate( sis, m_dlgt );
|
||||
super.onCreate( sis, new HostDelegate( this, sis ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -96,13 +96,6 @@ public class PrefsActivity extends PreferenceActivity
|
|||
return m_dlgt.onCreateDialog( id );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareDialog( int id, Dialog dialog )
|
||||
{
|
||||
super.onPrepareDialog( id, dialog );
|
||||
m_dlgt.prepareDialog( DlgID.values()[id], dialog );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult( int requestCode, int resultCode,
|
||||
Intent data )
|
||||
|
@ -163,11 +156,4 @@ public class PrefsActivity extends PreferenceActivity
|
|||
public void addFragment( XWFragment fragment, Bundle extras ) { Assert.fail(); }
|
||||
public void addFragmentForResult( XWFragment fragment, Bundle extras,
|
||||
RequestCode code ) { Assert.fail(); }
|
||||
public void show( DialogFragment fragment )
|
||||
{
|
||||
// This can't work right now because PrefsActivity doesn't inherit
|
||||
// from anything that can show fragments. So I need to convert to the
|
||||
// newer preferences framework too. :-(
|
||||
Assert.fail();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,65 +75,63 @@ public class PrefsDelegate extends DelegateBase
|
|||
|
||||
protected Dialog onCreateDialog( int id )
|
||||
{
|
||||
Dialog dialog = super.onCreateDialog( id );
|
||||
if ( null == dialog ) {
|
||||
DialogInterface.OnClickListener lstnr = null;
|
||||
int confirmID = 0;
|
||||
DialogInterface.OnClickListener lstnr = null;
|
||||
int confirmID = 0;
|
||||
|
||||
switch( DlgID.values()[id] ) {
|
||||
case REVERT_COLORS:
|
||||
confirmID = R.string.confirm_revert_colors;
|
||||
lstnr = new DialogInterface.OnClickListener() {
|
||||
public void onClick( DialogInterface dlg, int item ) {
|
||||
PrefsDelegate self = (PrefsDelegate)curThis();
|
||||
SharedPreferences sp = self.getSharedPreferences();
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
int[] colorKeys = {
|
||||
R.string.key_player0,
|
||||
R.string.key_player1,
|
||||
R.string.key_player2,
|
||||
R.string.key_player3,
|
||||
R.string.key_bonus_l2x,
|
||||
R.string.key_bonus_l3x,
|
||||
R.string.key_bonus_w2x,
|
||||
R.string.key_bonus_w3x,
|
||||
R.string.key_tile_back,
|
||||
R.string.key_clr_crosshairs,
|
||||
R.string.key_empty,
|
||||
R.string.key_background,
|
||||
R.string.key_clr_bonushint,
|
||||
};
|
||||
for ( int colorKey : colorKeys ) {
|
||||
editor.remove( getString(colorKey) );
|
||||
}
|
||||
editor.commit();
|
||||
self.relaunch();
|
||||
switch( DlgID.values()[id] ) {
|
||||
case REVERT_COLORS:
|
||||
confirmID = R.string.confirm_revert_colors;
|
||||
lstnr = new DialogInterface.OnClickListener() {
|
||||
public void onClick( DialogInterface dlg, int item ) {
|
||||
PrefsDelegate self = (PrefsDelegate)curThis();
|
||||
SharedPreferences sp = self.getSharedPreferences();
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
int[] colorKeys = {
|
||||
R.string.key_player0,
|
||||
R.string.key_player1,
|
||||
R.string.key_player2,
|
||||
R.string.key_player3,
|
||||
R.string.key_bonus_l2x,
|
||||
R.string.key_bonus_l3x,
|
||||
R.string.key_bonus_w2x,
|
||||
R.string.key_bonus_w3x,
|
||||
R.string.key_tile_back,
|
||||
R.string.key_clr_crosshairs,
|
||||
R.string.key_empty,
|
||||
R.string.key_background,
|
||||
R.string.key_clr_bonushint,
|
||||
};
|
||||
for ( int colorKey : colorKeys ) {
|
||||
editor.remove( getString(colorKey) );
|
||||
}
|
||||
};
|
||||
break;
|
||||
case REVERT_ALL:
|
||||
confirmID = R.string.confirm_revert_all;
|
||||
lstnr = new DialogInterface.OnClickListener() {
|
||||
public void onClick( DialogInterface dlg, int item ) {
|
||||
PrefsDelegate self = (PrefsDelegate)curThis();
|
||||
SharedPreferences sp = self.getSharedPreferences();
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.clear();
|
||||
editor.commit();
|
||||
self.relaunch();
|
||||
}
|
||||
};
|
||||
break;
|
||||
}
|
||||
editor.commit();
|
||||
self.relaunch();
|
||||
}
|
||||
};
|
||||
break;
|
||||
case REVERT_ALL:
|
||||
confirmID = R.string.confirm_revert_all;
|
||||
lstnr = new DialogInterface.OnClickListener() {
|
||||
public void onClick( DialogInterface dlg, int item ) {
|
||||
PrefsDelegate self = (PrefsDelegate)curThis();
|
||||
SharedPreferences sp = self.getSharedPreferences();
|
||||
SharedPreferences.Editor editor = sp.edit();
|
||||
editor.clear();
|
||||
editor.commit();
|
||||
self.relaunch();
|
||||
}
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
if ( null == dialog && null != lstnr ) {
|
||||
dialog = makeAlertBuilder()
|
||||
.setTitle( R.string.query_title )
|
||||
.setMessage( confirmID )
|
||||
.setPositiveButton( android.R.string.ok, lstnr )
|
||||
.setNegativeButton( android.R.string.cancel, null )
|
||||
.create();
|
||||
}
|
||||
Dialog dialog = null;
|
||||
if ( null != lstnr ) {
|
||||
dialog = makeAlertBuilder()
|
||||
.setTitle( R.string.query_title )
|
||||
.setMessage( confirmID )
|
||||
.setPositiveButton( android.R.string.ok, lstnr )
|
||||
.setNegativeButton( android.R.string.cancel, null )
|
||||
.create();
|
||||
}
|
||||
return dialog;
|
||||
}
|
||||
|
@ -154,13 +152,13 @@ public class PrefsDelegate extends DelegateBase
|
|||
Button button = (Button)findViewById( R.id.revert_colors );
|
||||
button.setOnClickListener( new View.OnClickListener() {
|
||||
public void onClick( View v ) {
|
||||
curThis().showDialog( DlgID.REVERT_COLORS );
|
||||
showDialog( DlgID.REVERT_COLORS );
|
||||
}
|
||||
} );
|
||||
button = (Button)findViewById( R.id.revert_all );
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick( View v ) {
|
||||
curThis().showDialog( DlgID.REVERT_ALL );
|
||||
showDialog( DlgID.REVERT_ALL );
|
||||
}
|
||||
} );
|
||||
|
||||
|
@ -365,6 +363,13 @@ public class PrefsDelegate extends DelegateBase
|
|||
}
|
||||
}
|
||||
|
||||
private void showDialog( DlgID dlgID )
|
||||
{
|
||||
if ( !m_activity.isFinishing() ) {
|
||||
m_activity.showDialog( dlgID.ordinal() );
|
||||
}
|
||||
}
|
||||
|
||||
private void hideStuff()
|
||||
{
|
||||
if ( !Utils.isGSMPhone( m_activity ) || Perms23.haveNativePerms() ) {
|
||||
|
|
|
@ -122,24 +122,23 @@ public class RelayInviteDelegate extends InviteDelegate {
|
|||
@Override
|
||||
protected void onBarButtonClicked( int id )
|
||||
{
|
||||
switch( id ) {
|
||||
case R.id.button_relay_add:
|
||||
Utils.notImpl( m_activity );
|
||||
break;
|
||||
case R.id.manual_add_button:
|
||||
showDialog( DlgID.GET_NUMBER );
|
||||
break;
|
||||
case R.id.button_clear:
|
||||
Utils.notImpl( m_activity );
|
||||
// int count = getChecked().size();
|
||||
// String msg = getQuantityString( R.plurals.confirm_clear_sms_fmt,
|
||||
// count, count );
|
||||
// makeConfirmThenBuilder( msg, Action.CLEAR_ACTION ).show();
|
||||
break;
|
||||
}
|
||||
// switch( id ) {
|
||||
// case R.id.button_relay_add:
|
||||
// Utils.notImpl( m_activity );
|
||||
// break;
|
||||
// case R.id.manual_add_button:
|
||||
// showDialog( DlgID.GET_NUMBER );
|
||||
// break;
|
||||
// case R.id.button_clear:
|
||||
// Utils.notImpl( m_activity );
|
||||
// // int count = getChecked().size();
|
||||
// // String msg = getQuantityString( R.plurals.confirm_clear_sms_fmt,
|
||||
// // count, count );
|
||||
// // makeConfirmThenBuilder( msg, Action.CLEAR_ACTION ).show();
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
// protected void onSaveInstanceState( Bundle outState )
|
||||
// {
|
||||
// outState.putString( SAVE_NAME, m_pendingName );
|
||||
|
|
|
@ -125,7 +125,7 @@ public class SMSInviteDelegate extends InviteDelegate {
|
|||
if ( Activity.RESULT_CANCELED != resultCode && data != null ) {
|
||||
switch ( requestCode ) {
|
||||
case GET_CONTACT:
|
||||
post ( new Runnable() {
|
||||
post( new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
addPhoneNumbers( data );
|
||||
|
|
|
@ -192,31 +192,6 @@ public class XWActivity extends FragmentActivity
|
|||
return m_dlgt.onContextItemSelected( item );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Dialog onCreateDialog( int id )
|
||||
{
|
||||
Dialog dialog = super.onCreateDialog( id );
|
||||
Assert.assertNull( dialog );
|
||||
if ( null == dialog ) {
|
||||
dialog = m_dlgt.onCreateDialog( id );
|
||||
}
|
||||
return dialog;
|
||||
} // onCreateDialog
|
||||
|
||||
@Override
|
||||
public void onPrepareDialog( int id, Dialog dialog )
|
||||
{
|
||||
super.onPrepareDialog( id, dialog );
|
||||
m_dlgt.prepareDialog( DlgID.values()[id], dialog );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged( Configuration newConfig )
|
||||
{
|
||||
m_dlgt.orientationChanged();
|
||||
super.onConfigurationChanged( newConfig );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult( int requestCode, int resultCode,
|
||||
Intent data )
|
||||
|
|
|
@ -92,7 +92,6 @@
|
|||
<string name="key_notagain_sync">key_notagain_sync</string>
|
||||
<!-- <string name="key_notagain_sms_ready">key_notagain_sms_ready</string> -->
|
||||
<string name="key_notagain_newselect">key_notagain_newselect</string>
|
||||
<string name="key_notagain_dualpane">key_notagain_dualpane</string>
|
||||
<string name="key_notagain_backclears">key_notagain_backclears</string>
|
||||
<string name="key_notagain_chat">key_notagain_chat</string>
|
||||
<string name="key_notagain_relay">key_notagain_relay</string>
|
||||
|
|
|
@ -2609,14 +2609,6 @@
|
|||
|
||||
<string name="no_invites">This game has sent no invitations</string>
|
||||
|
||||
<string name="invite_dualpane">This new version of CrossWords lets
|
||||
larger-screened devices like yours view two panes (e.g. Games List
|
||||
and Board) side-by-side. You\'ll notice this when your device is
|
||||
horizontal; when it\'s vertical there\'s no change.\n\n
|
||||
|
||||
I hope you like it. If you don\'t you can disable it below or in the
|
||||
Appearance section of App Settings.</string>
|
||||
|
||||
<string name="disable_dualpane">Disable side-by-side</string>
|
||||
<string name="after_restart">This change will take effect after you
|
||||
restart CrossWords.</string>
|
||||
|
|
20
xwords4/dawg/English/Makefile.BasEnglishBowd
Normal file
20
xwords4/dawg/English/Makefile.BasEnglishBowd
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- mode: makefile; compile-command: "make -f Makefile.top5000Bowd"; -*-
|
||||
# Copyright 2017 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.
|
||||
|
||||
DIRTY_LIST=dirtywords.txt
|
||||
include Makefile.BasEnglish
|
19
xwords4/dawg/English/Makefile.CollegeEngBowd
Normal file
19
xwords4/dawg/English/Makefile.CollegeEngBowd
Normal file
|
@ -0,0 +1,19 @@
|
|||
# -*- mode: makefile; compile-command: "make -f Makefile.CollegeEngBowd"; -*-
|
||||
# Copyright 2017 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.
|
||||
|
||||
DIRTY_LIST=dirtywords.txt
|
||||
include Makefile.CollegeEng
|
20
xwords4/dawg/English/Makefile.top5000Bowd
Normal file
20
xwords4/dawg/English/Makefile.top5000Bowd
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- mode: makefile; compile-command: "make -f Makefile.top5000Bowd"; -*-
|
||||
# Copyright 2017 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.
|
||||
|
||||
DIRTY_LIST=dirtywords.txt
|
||||
include Makefile.top5000
|
204
xwords4/dawg/English/dirtywords.txt
Normal file
204
xwords4/dawg/English/dirtywords.txt
Normal file
|
@ -0,0 +1,204 @@
|
|||
ABO
|
||||
ABOS
|
||||
ARSE
|
||||
ASSHOLE
|
||||
ASSHOLES
|
||||
BADASS
|
||||
BADASSED
|
||||
BADASSES
|
||||
BALLSIER
|
||||
BALLSIEST
|
||||
BALLSY
|
||||
BAZOOMS
|
||||
BLOWJOB
|
||||
BLOWJOBS
|
||||
BOCHE
|
||||
BOCHES
|
||||
BOOBIE
|
||||
BUBBIES
|
||||
BUBBY
|
||||
BUCKRA
|
||||
BUCKRAS
|
||||
BULLSHIT
|
||||
BULLSHITS
|
||||
BULLSHITTED
|
||||
BULLSHITTING
|
||||
CLIT
|
||||
COLOREDS
|
||||
COMSYMP
|
||||
COMSYMPS
|
||||
CRAPPER
|
||||
CRAPPERS
|
||||
CUNT
|
||||
CUNTS
|
||||
DAGO
|
||||
DAGOES
|
||||
DAGOS
|
||||
DARKEY
|
||||
DARKEYS
|
||||
DARKIE
|
||||
DARKIES
|
||||
DARKY
|
||||
DICKED
|
||||
DICKING
|
||||
DIKEY
|
||||
DYKEY
|
||||
FAGGOTRIES
|
||||
FAGGOTRY
|
||||
FAGGOTY
|
||||
FAGGY
|
||||
FART
|
||||
FARTED
|
||||
FARTING
|
||||
FARTS
|
||||
FATSO
|
||||
FATSOES
|
||||
FATSOS
|
||||
FRIG
|
||||
FRIGGED
|
||||
FRIGGING
|
||||
FRIGS
|
||||
FUCK
|
||||
FUCKED
|
||||
FUCKER
|
||||
FUCKERS
|
||||
FUCKING
|
||||
FUCKS
|
||||
FUCKUP
|
||||
FUCKUPS
|
||||
GANGBANG
|
||||
GANGBANGS
|
||||
GOY
|
||||
GOYIM
|
||||
GOYISH
|
||||
GOYS
|
||||
GRINGO
|
||||
GRINGOS
|
||||
HAOLE
|
||||
HAOLES
|
||||
HEBE
|
||||
HEBES
|
||||
HONKEY
|
||||
HONKEYS
|
||||
HONKIE
|
||||
HONKIES
|
||||
HONKY
|
||||
HUNKIES
|
||||
JESUIT
|
||||
JESUITIC
|
||||
JESUITRIES
|
||||
JESUITRY
|
||||
JESUITS
|
||||
JEW
|
||||
JEWED
|
||||
JEWING
|
||||
JEWS
|
||||
JIGABOO
|
||||
JIGABOOS
|
||||
JISM
|
||||
JISMS
|
||||
KIKE
|
||||
KIKES
|
||||
LEZ
|
||||
LEZES
|
||||
LEZZIE
|
||||
LEZZIES
|
||||
LEZZY
|
||||
LIBBER
|
||||
LIBBERS
|
||||
MERDE
|
||||
MERDES
|
||||
MICK
|
||||
MICKS
|
||||
NANCE
|
||||
NANCES
|
||||
NANCIES
|
||||
NANCY
|
||||
NIGGER
|
||||
NIGGERS
|
||||
NITCHIE
|
||||
NITCHIES
|
||||
NOOKIES
|
||||
NOOKY
|
||||
OFAY
|
||||
OFAYS
|
||||
PAPIST
|
||||
PAPISTIC
|
||||
PAPISTRIES
|
||||
PAPISTRY
|
||||
PAPISTS
|
||||
PEED
|
||||
PEEING
|
||||
PISS
|
||||
PISSED
|
||||
PISSER
|
||||
PISSERS
|
||||
PISSES
|
||||
PISSING
|
||||
POM
|
||||
POMMIE
|
||||
POMMIES
|
||||
POMMY
|
||||
POMS
|
||||
POOFS
|
||||
POOFTAH
|
||||
POOFTAHS
|
||||
POOFTER
|
||||
POOFTERS
|
||||
POOFY
|
||||
POOVE
|
||||
POOVES
|
||||
POPERIES
|
||||
POPERY
|
||||
POPISH
|
||||
POPISHLY
|
||||
REDNECK
|
||||
REDNECKS
|
||||
REDSKIN
|
||||
REDSKINS
|
||||
SHAT
|
||||
SHEENEY
|
||||
SHEENEYS
|
||||
SHEENIE
|
||||
SHEENIES
|
||||
SHEGETZ
|
||||
SHICKSA
|
||||
SHICKSAS
|
||||
SHIKSA
|
||||
SHIKSAS
|
||||
SHIKSE
|
||||
SHIKSES
|
||||
SHIT
|
||||
SHITHEAD
|
||||
SHITHEADS
|
||||
SHITS
|
||||
SHITTED
|
||||
SHITTIER
|
||||
SHITTIEST
|
||||
SHITTING
|
||||
SHITTY
|
||||
SHKOTZIM
|
||||
SKIMO
|
||||
SKIMOS
|
||||
SPIC
|
||||
SPICK
|
||||
SPICKS
|
||||
SPICS
|
||||
SPIK
|
||||
SPIKS
|
||||
TOMMED
|
||||
TOMMING
|
||||
TURD
|
||||
TURDS
|
||||
TWAT
|
||||
TWATS
|
||||
WETBACK
|
||||
WETBACKS
|
||||
WHITEYS
|
||||
WHITIES
|
||||
WOG
|
||||
WOGS
|
||||
WOP
|
||||
WOPS
|
||||
YID
|
||||
YIDS
|
|
@ -16,6 +16,14 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
ifneq ($(DIRTY_LIST),)
|
||||
BOWDLERIZER = ../remove-dirty.py $(DIRTY_LIST)
|
||||
XWLANG := $(XWLANG)_BOWD
|
||||
DICTNOTE := "$(DICTNOTE) (Bowdlerized)"
|
||||
else
|
||||
BOWDLERIZER = cat
|
||||
endif
|
||||
|
||||
XWLANG := $(XWLANG)_
|
||||
|
||||
FRANK_EXT = xwd
|
||||
|
@ -242,7 +250,7 @@ dawg$(XWLANG)%.stamp: $(XWLANG)Main.dict.gz $(DICT2DAWG) table.bin ../Makefile.l
|
|||
start=$$(echo $@ | sed -e 's/dawg$(XWLANG)\([0-9]*\)to[0-9]*.stamp/\1/'); \
|
||||
end=$$(echo $@ | sed -e 's/dawg$(XWLANG)[0-9]*to\([0-9]*\).stamp/\1/'); \
|
||||
echo $${start} and $${end}; \
|
||||
zcat $< | $(DICT2DAWG) $(DICT2DAWGARGS) $(TABLE_ARG) table.bin -b 28000 \
|
||||
zcat $< | $(BOWDLERIZER) | $(DICT2DAWG) $(DICT2DAWGARGS) $(TABLE_ARG) table.bin -b 28000 \
|
||||
-ob dawg$(XWLANG)$* $(ENCP) \
|
||||
-sn $(XWLANG)StartLoc.bin -min $${start} -max $${end} \
|
||||
-wc $(XWLANG)$*_wordcount.bin $(FORCE_4) -ns $(XWLANG)$*_nodesize.bin
|
||||
|
@ -295,9 +303,6 @@ $(XWLANG)%_newheader.bin: $(XWLANG)%_wordcount.bin $(XWLANG)%_note.bin $(XWLANG)
|
|||
perl -e "print pack(\"n\",$$SIZ)" > $@
|
||||
cat $+ >> $@
|
||||
|
||||
%.dict: %.dict.gz
|
||||
zcat $< > $@
|
||||
|
||||
# clean this up....
|
||||
../dict2dawg: ../dict2dawg.cpp
|
||||
g++ -DDEBUG -O0 -g -Wall -o $@ $<
|
||||
|
|
18
xwords4/dawg/remove-dirty.py
Executable file
18
xwords4/dawg/remove-dirty.py
Executable file
|
@ -0,0 +1,18 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
# Invoked with path to bad words list as single parameter, and with a
|
||||
# stream of words via stdin, loads the bad words into a map and for
|
||||
# every word in stdin echos it to stdout IFF it's not in the map.
|
||||
|
||||
import sys
|
||||
|
||||
dirtyMap = {}
|
||||
dirtyList = sys.argv[1]
|
||||
for f in open(dirtyList):
|
||||
dirtyMap[f] = True
|
||||
|
||||
for word in sys.stdin:
|
||||
if word in dirtyMap:
|
||||
sys.stderr.write( sys.argv[0] + ": dropping: " + word )
|
||||
else:
|
||||
sys.stdout.write( word )
|
Loading…
Add table
Reference in a new issue