Replace toast with snackbar and optional undo action
This commit is contained in:
parent
21799ab22c
commit
fdc7d41824
|
@ -10,6 +10,7 @@ import android.database.DataSetObserver;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.support.design.widget.Snackbar;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
@ -26,7 +27,6 @@ import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
|
|
||||||
|
@ -737,7 +737,14 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
|
||||||
|
|
||||||
public void onEventMainThread(MessageEvent event) {
|
public void onEventMainThread(MessageEvent event) {
|
||||||
Log.d(TAG, "onEvent(" + event + ")");
|
Log.d(TAG, "onEvent(" + event + ")");
|
||||||
Toast.makeText(this, event.message, Toast.LENGTH_SHORT).show();
|
View parentLayout = findViewById(R.id.drawer_layout);
|
||||||
|
Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT);
|
||||||
|
if(event.action != null) {
|
||||||
|
snackbar.setAction(getString(R.string.undo), v -> {
|
||||||
|
event.action.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
snackbar.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
||||||
|
|
|
@ -31,7 +31,6 @@ import com.joanzapata.iconify.fonts.FontAwesomeIcons;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.core.event.MessageEvent;
|
|
||||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
|
@ -222,11 +221,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onEventMainThread(MessageEvent event) {
|
|
||||||
Log.d(TAG, "onEvent(" + event + ")");
|
|
||||||
Toast.makeText(this, event.message, Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should be used to switch to another player activity if the mime type is
|
* Should be used to switch to another player activity if the mime type is
|
||||||
* not the correct one for the current activity.
|
* not the correct one for the current activity.
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.content.res.Configuration;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.design.widget.AppBarLayout;
|
import android.support.design.widget.AppBarLayout;
|
||||||
|
import android.support.design.widget.Snackbar;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||||
|
@ -36,6 +37,7 @@ import de.danoeh.antennapod.adapter.ChaptersListAdapter;
|
||||||
import de.danoeh.antennapod.adapter.NavListAdapter;
|
import de.danoeh.antennapod.adapter.NavListAdapter;
|
||||||
import de.danoeh.antennapod.core.asynctask.FeedRemover;
|
import de.danoeh.antennapod.core.asynctask.FeedRemover;
|
||||||
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
|
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
|
||||||
|
import de.danoeh.antennapod.core.event.MessageEvent;
|
||||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||||
import de.danoeh.antennapod.core.feed.Feed;
|
import de.danoeh.antennapod.core.feed.Feed;
|
||||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||||
|
@ -464,7 +466,17 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
|
||||||
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
|
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onEventMainThread(MessageEvent event) {
|
||||||
|
Log.d(TAG, "onEvent(" + event + ")");
|
||||||
|
View parentLayout = findViewById(R.id.drawer_layout);
|
||||||
|
Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT);
|
||||||
|
if (event.action != null) {
|
||||||
|
snackbar.setAction(getString(R.string.undo), v -> {
|
||||||
|
event.action.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
snackbar.show();
|
||||||
|
}
|
||||||
|
|
||||||
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ buildscript {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.2.0'
|
classpath 'com.android.tools.build:gradle:2.2.1'
|
||||||
classpath "me.tatarka:gradle-retrolambda:3.3.0"
|
classpath "me.tatarka:gradle-retrolambda:3.3.0"
|
||||||
classpath "me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2"
|
classpath "me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2"
|
||||||
classpath 'com.github.triplet.gradle:play-publisher:1.1.4'
|
classpath 'com.github.triplet.gradle:play-publisher:1.1.4'
|
||||||
|
|
|
@ -1,24 +1,21 @@
|
||||||
/*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package de.danoeh.antennapod.core.event;
|
package de.danoeh.antennapod.core.event;
|
||||||
|
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
public class MessageEvent {
|
public class MessageEvent {
|
||||||
|
|
||||||
public final String message;
|
public final String message;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public final Runnable action;
|
||||||
|
|
||||||
public MessageEvent(String message) {
|
public MessageEvent(String message) {
|
||||||
|
this(message, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageEvent(String message, Runnable action) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
|
this.action = action;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -854,7 +854,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||||
Log.d(TAG, "Setting sleep timer to " + Long.toString(waitingTime) + " milliseconds");
|
Log.d(TAG, "Setting sleep timer to " + Long.toString(waitingTime) + " milliseconds");
|
||||||
taskManager.setSleepTimer(waitingTime, shakeToReset, vibrate);
|
taskManager.setSleepTimer(waitingTime, shakeToReset, vibrate);
|
||||||
sendNotificationBroadcast(NOTIFICATION_TYPE_SLEEPTIMER_UPDATE, 0);
|
sendNotificationBroadcast(NOTIFICATION_TYPE_SLEEPTIMER_UPDATE, 0);
|
||||||
EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_enabled_label)));
|
EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_enabled_label),
|
||||||
|
() -> disableSleepTimer()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disableSleepTimer() {
|
public void disableSleepTimer() {
|
||||||
|
|
Loading…
Reference in New Issue