|
|
@ -19,7 +19,6 @@ package eu.faircode.email; |
|
|
|
Copyright 2018 by Marcel Bokhorst (M66B) |
|
|
|
*/ |
|
|
|
|
|
|
|
import android.arch.lifecycle.LiveData; |
|
|
|
import android.arch.lifecycle.Observer; |
|
|
|
import android.content.Context; |
|
|
|
import android.content.Intent; |
|
|
@ -31,7 +30,6 @@ import android.support.design.widget.FloatingActionButton; |
|
|
|
import android.support.v4.app.LoaderManager; |
|
|
|
import android.support.v4.content.AsyncTaskLoader; |
|
|
|
import android.support.v4.content.Loader; |
|
|
|
import android.support.v7.app.AppCompatActivity; |
|
|
|
import android.support.v7.widget.LinearLayoutManager; |
|
|
|
import android.support.v7.widget.RecyclerView; |
|
|
|
import android.util.Log; |
|
|
@ -51,7 +49,6 @@ public class FragmentMessages extends FragmentEx { |
|
|
|
private FloatingActionButton fab; |
|
|
|
|
|
|
|
private AdapterMessage adapter; |
|
|
|
private LiveData<TupleFolderEx> liveFolder; |
|
|
|
|
|
|
|
@Override |
|
|
|
@Nullable |
|
|
@ -59,8 +56,9 @@ public class FragmentMessages extends FragmentEx { |
|
|
|
View view = inflater.inflate(R.layout.fragment_messages, container, false); |
|
|
|
|
|
|
|
// Get arguments |
|
|
|
long folder = getArguments().getLong("folder", -1); |
|
|
|
long thread = getArguments().getLong("thread", -1); // message ID |
|
|
|
Bundle args = getArguments(); |
|
|
|
long folder = (args == null ? -1 : args.getLong("folder", -1)); |
|
|
|
long thread = (args == null ? -1 : args.getLong("thread", -1)); // message ID |
|
|
|
|
|
|
|
// Get controls |
|
|
|
rvMessage = view.findViewById(R.id.rvFolder); |
|
|
@ -96,49 +94,30 @@ public class FragmentMessages extends FragmentEx { |
|
|
|
|
|
|
|
DB db = DB.getInstance(getContext()); |
|
|
|
|
|
|
|
// Observe folder |
|
|
|
liveFolder = (thread < 0 ? DB.getInstance(getContext()).folder().liveFolderEx(folder) : null); |
|
|
|
|
|
|
|
// Observe messages |
|
|
|
// Observe folder/messages |
|
|
|
if (thread < 0) |
|
|
|
if (folder < 0) |
|
|
|
if (folder < 0) { |
|
|
|
setSubtitle(R.string.title_folder_unified); |
|
|
|
db.message().liveUnifiedInbox().observe(this, messagesObserver); |
|
|
|
else |
|
|
|
} else { |
|
|
|
DB.getInstance(getContext()).folder().liveFolderEx(folder).observe(this, new Observer<TupleFolderEx>() { |
|
|
|
@Override |
|
|
|
public void onChanged(@Nullable TupleFolderEx folder) { |
|
|
|
setSubtitle(folder == null ? null : Helper.localizeFolderName(getContext(), folder.name)); |
|
|
|
} |
|
|
|
}); |
|
|
|
db.message().liveMessages(folder).observe(this, messagesObserver); |
|
|
|
} |
|
|
|
else { |
|
|
|
setSubtitle(R.string.title_folder_thread); |
|
|
|
db.message().liveThread(thread).observe(this, messagesObserver); |
|
|
|
} |
|
|
|
|
|
|
|
return view; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onResume() { |
|
|
|
super.onResume(); |
|
|
|
if (liveFolder == null) |
|
|
|
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(R.string.title_folder_thread); |
|
|
|
else |
|
|
|
liveFolder.observe(this, folderObserver); |
|
|
|
|
|
|
|
getLoaderManager().restartLoader(ActivityView.LOADER_MESSAGES_INIT, new Bundle(), initLoaderCallbacks).forceLoad(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onPause() { |
|
|
|
super.onPause(); |
|
|
|
if (liveFolder != null) |
|
|
|
liveFolder.removeObservers(this); |
|
|
|
return view; |
|
|
|
} |
|
|
|
|
|
|
|
Observer<TupleFolderEx> folderObserver = new Observer<TupleFolderEx>() { |
|
|
|
@Override |
|
|
|
public void onChanged(@Nullable TupleFolderEx folder) { |
|
|
|
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(folder.name == null |
|
|
|
? getString(R.string.title_folder_unified) |
|
|
|
: Helper.localizeFolderName(getContext(), folder)); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
Observer<List<TupleMessageEx>> messagesObserver = new Observer<List<TupleMessageEx>>() { |
|
|
|
@Override |
|
|
|
public void onChanged(@Nullable List<TupleMessageEx> messages) { |
|
|
@ -147,7 +126,7 @@ public class FragmentMessages extends FragmentEx { |
|
|
|
pbWait.setVisibility(View.GONE); |
|
|
|
grpReady.setVisibility(View.VISIBLE); |
|
|
|
|
|
|
|
if (messages.size() == 0) { |
|
|
|
if (messages == null || messages.size() == 0) { |
|
|
|
tvNoEmail.setVisibility(View.VISIBLE); |
|
|
|
rvMessage.setVisibility(View.GONE); |
|
|
|
} else { |
|
|
@ -158,7 +137,7 @@ public class FragmentMessages extends FragmentEx { |
|
|
|
}; |
|
|
|
|
|
|
|
private static class InitLoader extends AsyncTaskLoader<Bundle> { |
|
|
|
public InitLoader(@NonNull Context context) { |
|
|
|
InitLoader(@NonNull Context context) { |
|
|
|
super(context); |
|
|
|
} |
|
|
|
|
|
|
|