some changes

This commit is contained in:
Thomas 2022-10-02 12:18:13 +02:00
parent e55c154139
commit eca5cecd93
6 changed files with 77 additions and 10 deletions

View File

@ -37,6 +37,7 @@ import android.os.Looper;
import android.text.Editable;
import android.text.Html;
import android.text.TextWatcher;
import android.util.Log;
import android.util.Patterns;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
@ -75,6 +76,7 @@ import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayout;
import com.jaredrummler.cyanea.Cyanea;
import java.io.File;
@ -1135,7 +1137,28 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
break;
}
}
int selectedTab = binding.tabLayout.getSelectedTabPosition();
TabLayout.Tab tab = binding.tabLayout.getTabAt(selectedTab);
Log.v(Helper.TAG, "selectedTab: " + selectedTab);
Log.v(Helper.TAG, "tab: " + tab);
View view = null;
if (tab != null) {
view = tab.getCustomView();
}
if (view != null) {
Log.v(Helper.TAG, "view: " + view);
TextView counter = view.findViewById(R.id.tab_counter);
Log.v(Helper.TAG, "counter: " + counter);
if (counter != null) {
if (count > 0) {
counter.setVisibility(View.VISIBLE);
counter.setText(String.valueOf(count));
} else {
counter.setVisibility(View.GONE);
counter.setText("0");
}
}
}
}

View File

@ -175,20 +175,21 @@ public class StatusCache {
* Insert or update a status
*
* @param statusCache {@link StatusCache}
* @return long - db id
* @return int - 0 if updated 1 if inserted
* @throws DBException exception with database
*/
public long insertOrUpdate(StatusCache statusCache, String slug) throws DBException {
public int insertOrUpdate(StatusCache statusCache, String slug) throws DBException {
if (db == null) {
throw new DBException("db is null. Wrong initialization.");
}
statusCache.slug = slug;
boolean exists = statusExist(statusCache);
long idReturned;
int idReturned = 0;
if (exists) {
idReturned = updateStatus(statusCache);
updateStatus(statusCache);
} else {
idReturned = insertStatus(statusCache, slug);
insertStatus(statusCache, slug);
idReturned = 1;
}
return idReturned;
}

View File

@ -325,7 +325,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
int insertedStatus = updateStatusListWith(fetched_statuses.statuses);
//For these directions, the app will display counters for new messages
if (insertedStatus >= 0 && (direction == DIRECTION.FETCH_NEW || direction == DIRECTION.SCROLL_TOP)) {
if (insertedStatus >= 0 && update != null && (direction == DIRECTION.FETCH_NEW || direction == DIRECTION.SCROLL_TOP)) {
update.onUpdate(insertedStatus, timelineType, slug);
}
if (direction == DIRECTION.TOP && fetchingMissing) {
@ -424,7 +424,8 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
binding.recyclerView.setLayoutManager(mLayoutManager);
binding.recyclerView.setAdapter(statusAdapter);
//Fetching new messages
route(DIRECTION.FETCH_NEW, true);
if (searchCache == null && timelineType != Timeline.TimeLineEnum.TREND_MESSAGE) {
binding.recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@ -460,6 +461,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
}
});
}
}
/**
@ -484,7 +486,9 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
if (!timelineStatuses.contains(statusReceived) && !statusReceived.pinned && timelineType != Timeline.TimeLineEnum.ACCOUNT_TIMELINE) {
timelineStatuses.add(position, statusReceived);
statusAdapter.notifyItemInserted(position);
insertedStatus++;
if (!statusReceived.cached) {
insertedStatus++;
}
}
break;
}

View File

@ -428,7 +428,10 @@ public class TimelinesVM extends AndroidViewModel {
statusCache.type = timelineParams.type;
statusCache.status_id = status.id;
try {
statusCacheDAO.insertOrUpdate(statusCache, timelineParams.slug);
int inserted = statusCacheDAO.insertOrUpdate(statusCache, timelineParams.slug);
if (inserted == 0) {
status.cached = true;
}
} catch (DBException e) {
e.printStackTrace();
}

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
@ -8,4 +9,21 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<TextView
android:id="@+id/tab_counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/icon"
android:layout_alignEnd="@+id/icon"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:background="@drawable/shape_counter"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:textColor="?mTextColor"
android:textSize="12sp"
android:visibility="gone"
tools:text="35"
tools:visibility="visible" />
</RelativeLayout>

View File

@ -2,6 +2,7 @@
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
@ -20,4 +21,21 @@
android:maxWidth="150dp"
android:singleLine="true"
android:textSize="16sp" />
<TextView
android:id="@+id/tab_counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/icon"
android:layout_alignEnd="@+id/icon"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:background="@drawable/shape_counter"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:textColor="?mTextColor"
android:textSize="12sp"
android:visibility="gone"
tools:text="35"
tools:visibility="visible" />
</androidx.appcompat.widget.LinearLayoutCompat>