Switch from toasts to snackbars

pull/151/head
Alinson S. Xavier 9 years ago
parent ebd294be63
commit c7878d979f

@ -24,7 +24,6 @@ import android.os.*;
import android.support.annotation.*;
import android.support.v7.app.*;
import android.view.*;
import android.widget.*;
import org.isoron.uhabits.utils.*;
@ -52,8 +51,6 @@ abstract public class BaseActivity extends AppCompatActivity
@Nullable
private BaseScreen screen;
private Toast toast;
@Override
public boolean onCreateOptionsMenu(@Nullable Menu menu)
{
@ -91,20 +88,6 @@ abstract public class BaseActivity extends AppCompatActivity
dialog.show();
}
/**
* Shows a message on the screen.
*
* @param stringId the string resource id for this message.
*/
public void showMessage(@StringRes Integer stringId)
{
if (stringId == null) return;
if (toast == null)
toast = Toast.makeText(this, stringId, Toast.LENGTH_SHORT);
else toast.setText(stringId);
toast.show();
}
@Override
public void uncaughtException(@Nullable Thread thread,
@Nullable Throwable ex)

@ -25,10 +25,12 @@ import android.graphics.drawable.*;
import android.net.*;
import android.os.*;
import android.support.annotation.*;
import android.support.design.widget.*;
import android.support.v7.app.*;
import android.support.v7.view.ActionMode;
import android.support.v7.widget.*;
import android.support.v7.widget.Toolbar;
import android.view.*;
import android.widget.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.utils.*;
@ -52,6 +54,8 @@ public abstract class BaseScreen
@Nullable
private BaseSelectionMenu selectionMenu;
private Snackbar snackbar;
public BaseScreen(@NonNull BaseActivity activity)
{
this.activity = activity;
@ -90,15 +94,6 @@ public abstract class BaseScreen
}
}
/**
* Ends the current selection operation.
*/
public void finishSelection()
{
if (selectionMenu == null) return;
selectionMenu.finish();
}
/**
* Notifies the screen that its contents should be updated.
*/
@ -165,9 +160,23 @@ public abstract class BaseScreen
this.selectionMenu = menu;
}
public void showMessage(@StringRes int stringId)
/**
* Shows a message on the screen.
*
* @param stringId the string resource id for this message.
*/
public void showMessage(@StringRes Integer stringId)
{
activity.showMessage(stringId);
if (stringId == null || rootView == null) return;
if (snackbar == null)
{
snackbar = Snackbar.make(rootView, stringId, Snackbar.LENGTH_SHORT);
int tvId = android.support.design.R.id.snackbar_text;
TextView tv = (TextView) snackbar.getView().findViewById(tvId);
tv.setTextColor(Color.WHITE);
}
else snackbar.setText(stringId);
snackbar.show();
}
public void showSendEmailScreen(@StringRes int toId,

@ -76,6 +76,7 @@ public class ListHabitsActivity extends BaseActivity
@Override
protected void onPause()
{
screen.onDettached();
adapter.cancelRefresh();
super.onPause();
}
@ -84,6 +85,7 @@ public class ListHabitsActivity extends BaseActivity
protected void onResume()
{
adapter.refresh();
screen.onAttached();
rootView.postInvalidate();
super.onResume();
}

@ -24,6 +24,7 @@ import android.os.*;
import android.support.annotation.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.commands.*;
import org.isoron.uhabits.intents.*;
import org.isoron.uhabits.io.*;
import org.isoron.uhabits.models.*;
@ -36,6 +37,7 @@ import org.isoron.uhabits.utils.*;
import java.io.*;
public class ListHabitsScreen extends BaseScreen
implements CommandRunner.Listener
{
@Nullable
ListHabitsController controller;
@ -49,6 +51,8 @@ public class ListHabitsScreen extends BaseScreen
@NonNull
private final DirFinder dirFinder;
private final CommandRunner commandRunner;
public ListHabitsScreen(@NonNull BaseActivity activity,
@NonNull ListHabitsRootView rootView)
{
@ -59,6 +63,24 @@ public class ListHabitsScreen extends BaseScreen
dialogFactory = component.getDialogFactory();
intentFactory = component.getIntentFactory();
dirFinder = component.getDirFinder();
commandRunner = component.getCommandRunner();
}
public void onAttached()
{
commandRunner.addListener(this);
}
@Override
public void onCommandExecuted(@NonNull Command command,
@Nullable Long refreshKey)
{
showMessage(command.getExecuteStringId());
}
public void onDettached()
{
commandRunner.removeListener(this);
}
@Override
@ -151,7 +173,7 @@ public class ListHabitsScreen extends BaseScreen
if (dir == null)
{
activity.showMessage(R.string.could_not_import);
showMessage(R.string.could_not_import);
return;
}
@ -185,7 +207,7 @@ public class ListHabitsScreen extends BaseScreen
private void refreshTheme()
{
new Handler().postDelayed(() -> {
Intent intent = new Intent(activity, ListHabitsScreen.class);
Intent intent = new Intent(activity, ListHabitsActivity.class);
activity.finish();
activity.overridePendingTransition(android.R.anim.fade_in,

@ -30,15 +30,15 @@
<string name="add_habit">Add habit</string>
<string name="color_picker_default_title">Change color</string>
<string name="toast_habit_created">Habit created.</string>
<string name="toast_habit_deleted">Habits deleted.</string>
<string name="toast_habit_restored">Habits restored.</string>
<string name="toast_nothing_to_undo">Nothing to undo.</string>
<string name="toast_nothing_to_redo">Nothing to redo.</string>
<string name="toast_habit_changed">Habit changed.</string>
<string name="toast_habit_changed_back">Habit changed back.</string>
<string name="toast_habit_archived">Habits archived.</string>
<string name="toast_habit_unarchived">Habits unarchived.</string>
<string name="toast_habit_created">Habit created</string>
<string name="toast_habit_deleted">Habits deleted</string>
<string name="toast_habit_restored">Habits restored</string>
<string name="toast_nothing_to_undo">Nothing to undo</string>
<string name="toast_nothing_to_redo">Nothing to redo</string>
<string name="toast_habit_changed">Habit changed</string>
<string name="toast_habit_changed_back">Habit changed back</string>
<string name="toast_habit_archived">Habits archived</string>
<string name="toast_habit_unarchived">Habits unarchived</string>
<string name="title_activity_show_habit" translatable="false"/>
<string name="overview">Overview</string>

@ -192,7 +192,6 @@ public class ListHabitsScreenTest extends BaseUnitTest
{
when(dirFinder.findStorageDir(any())).thenReturn(null);
screen.showImportScreen();
verify(activity).showMessage(R.string.could_not_import);
}
@Test

Loading…
Cancel
Save