removed metrics dialog, removed unused resources, bug fix

This commit is contained in:
nuclearfog 2023-08-19 11:22:53 +02:00
parent 5d8ffb07b1
commit 2988726d50
No known key found for this signature in database
GPG Key ID: 03488A185C476379
16 changed files with 4 additions and 404 deletions

View File

@ -11,7 +11,6 @@ import org.nuclearfog.twidda.model.Card;
import org.nuclearfog.twidda.model.Emoji;
import org.nuclearfog.twidda.model.Location;
import org.nuclearfog.twidda.model.Media;
import org.nuclearfog.twidda.model.Metrics;
import org.nuclearfog.twidda.model.Poll;
import org.nuclearfog.twidda.model.Status;
import org.nuclearfog.twidda.model.User;
@ -344,13 +343,6 @@ public class MastodonStatus implements Status {
}
@Nullable
@Override
public Metrics getMetrics() {
return null;
}
@Override
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Status))

View File

@ -315,7 +315,7 @@ public class AppStyles {
* @param color new drawable color
*/
public static void setDrawableColor(@Nullable Drawable drawable, int color) {
if (drawable != null) {
if (drawable != null && !(drawable instanceof BitmapDrawable)) {
drawable.mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
}
}

View File

@ -32,16 +32,10 @@ public class StringUtils {
public static final NumberFormat NUMBER_FORMAT = NumberFormat.getIntegerInstance();
/**
* date format used by API 1.1
* e.g. "Mon Jan 17 13:00:12 +0000 2022"
*/
private static final SimpleDateFormat dateFormat1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
/**
* date format used by API 2.0
* date format
* e.g. "2008-08-15T13:51:34.000Z"
*/
private static final SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
private static final SimpleDateFormat defaultDateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
private static final TimeZone TIME_ZONE = TimeZone.getDefault();
@ -170,7 +164,7 @@ public class StringUtils {
switch (timeFormat) {
default:
case TIME_MASTODON:
Date result = dateFormat2.parse(timeStr);
Date result = defaultDateformat.parse(timeStr);
if (result != null)
return result.getTime() + TIME_ZONE.getOffset(System.currentTimeMillis());
break;

View File

@ -13,7 +13,6 @@ import org.nuclearfog.twidda.model.Card;
import org.nuclearfog.twidda.model.Emoji;
import org.nuclearfog.twidda.model.Location;
import org.nuclearfog.twidda.model.Media;
import org.nuclearfog.twidda.model.Metrics;
import org.nuclearfog.twidda.model.Poll;
import org.nuclearfog.twidda.model.Status;
import org.nuclearfog.twidda.model.User;
@ -285,13 +284,6 @@ public class DatabaseStatus implements Status, StatusTable, StatusRegisterTable
}
@Nullable
@Override
public Metrics getMetrics() {
return null;
}
@Override
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Status))

View File

@ -1,46 +0,0 @@
package org.nuclearfog.twidda.model;
import java.io.Serializable;
/**
* Status metrics class containing information like views and link clicks
*
* @author nuclearfog
*/
public interface Metrics extends Serializable {
/**
* get view count of the status
*
* @return view count
*/
int getViews();
/**
* get number of quotes
*
* @return quote count
*/
int getQuoteCount();
/**
* get link click count
*
* @return click count
*/
int getLinkClicks();
/**
* get profile click count
*
* @return click count
*/
int getProfileClicks();
/**
* get video view count
*
* @return video view count
*/
int getVideoViews();
}

View File

@ -182,12 +182,6 @@ public interface Status extends Serializable, Comparable<Status> {
@Nullable
Poll getPoll();
/**
* @return status metrics or null if status doesn't belong to the current user
*/
@Nullable
Metrics getMetrics();
@Override
default int compareTo(Status status) {

View File

@ -78,7 +78,6 @@ import org.nuclearfog.twidda.ui.adapter.recyclerview.PreviewAdapter.OnCardClickL
import org.nuclearfog.twidda.ui.dialogs.AudioPlayerDialog;
import org.nuclearfog.twidda.ui.dialogs.ConfirmDialog;
import org.nuclearfog.twidda.ui.dialogs.ConfirmDialog.OnConfirmListener;
import org.nuclearfog.twidda.ui.dialogs.MetricsDialog;
import org.nuclearfog.twidda.ui.dialogs.ReportDialog;
import org.nuclearfog.twidda.ui.fragments.StatusFragment;
@ -171,7 +170,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
private Picasso picasso;
private PreviewAdapter adapter;
private ConfirmDialog confirmDialog;
private MetricsDialog metricsDialog;
private AudioPlayerDialog audioDialog;
private ReportDialog reportDialog;
@ -227,7 +225,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
translationLoader = new TranslationLoader(this);
emojiLoader = new TextEmojiLoader(this);
confirmDialog = new ConfirmDialog(this, this);
metricsDialog = new MetricsDialog(this);
audioDialog = new AudioPlayerDialog(this);
reportDialog = new ReportDialog(this);
picasso = PicassoBuilder.get(this);
@ -382,7 +379,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
MenuItem optHide = m.findItem(R.id.menu_status_hide);
MenuItem optCopy = m.findItem(R.id.menu_status_copy);
MenuItem optReport = m.findItem(R.id.menu_status_report);
MenuItem optMetrics = m.findItem(R.id.menu_status_metrics);
MenuItem menuBookmark = m.findItem(R.id.menu_status_bookmark);
MenuItem editStatus = m.findItem(R.id.menu_status_edit);
SubMenu copyMenu = optCopy.getSubMenu();
@ -414,10 +410,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
} else {
optReport.setVisible(true);
}
// enable/disable status metrics option
if (currentStatus.getMetrics() != null) {
optMetrics.setVisible(true);
}
// add media link items
// check if menu doesn't contain media links already
if (copyMenu.size() == 2) {
@ -486,12 +478,6 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener
}
return true;
}
// open status metrics page
else if (item.getItemId() == R.id.menu_status_metrics) {
if (status.getMetrics() != null) {
metricsDialog.show(status.getMetrics());
}
}
// copy media links
else if (item.getGroupId() == MENU_GROUP_COPY) {
int index = item.getItemId();

View File

@ -1,139 +0,0 @@
package org.nuclearfog.twidda.ui.dialogs;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.StringUtils;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.Metrics;
import java.io.Serializable;
/**
* Status metrics dialog
*
* @author nuclearfog
*/
public class MetricsDialog extends Dialog {
private static final String KEY_SAVE = "metrics-save";
private TextView views, profileClicks, linkClicks, quotes, videoViews;
private View linkIcon, quoteIcon, videoIcon;
private GlobalSettings settings;
private Metrics metrics;
/**
*
*/
public MetricsDialog(Activity activity) {
super(activity, R.style.DefaultDialog);
settings = GlobalSettings.get(activity);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_metrics);
ViewGroup root = findViewById(R.id.dialog_metrics_root);
views = findViewById(R.id.dialog_metrics_views);
profileClicks = findViewById(R.id.dialog_metrics_profile_clicks);
linkClicks = findViewById(R.id.dialog_metrics_link_clicks);
quotes = findViewById(R.id.dialog_metrics_quotes);
videoViews = findViewById(R.id.dialog_metrics_video_view);
linkIcon = findViewById(R.id.dialog_metrics_link_clicks_icon);
quoteIcon = findViewById(R.id.dialog_metrics_quotes_icon);
videoIcon = findViewById(R.id.dialog_metrics_video_view_icon);
AppStyles.setTheme(root, settings.getPopupColor());
}
@Override
protected void onStart() {
super.onStart();
if (metrics != null) {
views.setText(StringUtils.NUMBER_FORMAT.format(metrics.getViews()));
profileClicks.setText(StringUtils.NUMBER_FORMAT.format(metrics.getProfileClicks()));
if (metrics.getLinkClicks() > 0) {
linkClicks.setText(StringUtils.NUMBER_FORMAT.format(metrics.getLinkClicks()));
linkClicks.setVisibility(View.VISIBLE);
linkIcon.setVisibility(View.VISIBLE);
} else {
linkClicks.setVisibility(View.GONE);
linkIcon.setVisibility(View.GONE);
}
if (metrics.getQuoteCount() > 0) {
quotes.setText(StringUtils.NUMBER_FORMAT.format(metrics.getQuoteCount()));
quotes.setVisibility(View.VISIBLE);
quoteIcon.setVisibility(View.VISIBLE);
} else {
quotes.setVisibility(View.GONE);
quoteIcon.setVisibility(View.GONE);
}
if (metrics.getVideoViews() > 0) {
videoViews.setText(StringUtils.NUMBER_FORMAT.format(metrics.getVideoViews()));
videoViews.setVisibility(View.VISIBLE);
videoIcon.setVisibility(View.VISIBLE);
} else {
videoViews.setVisibility(View.GONE);
videoIcon.setVisibility(View.GONE);
}
}
}
@NonNull
@Override
public Bundle onSaveInstanceState() {
Bundle bundle = super.onSaveInstanceState();
bundle.putSerializable(KEY_SAVE, metrics);
return bundle;
}
@Override
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
Serializable data = savedInstanceState.getSerializable(KEY_SAVE);
if (data instanceof Metrics) {
metrics = (Metrics) data;
}
super.onRestoreInstanceState(savedInstanceState);
}
@Override
public void show() {
// using show(Metrics) instead
}
@Override
public void dismiss() {
if (isShowing()) {
super.dismiss();
}
}
/**
* show dialog window
*
* @param metrics status metrics to show
*/
public void show(Metrics metrics) {
if (!isShowing()) {
this.metrics = metrics;
super.show();
}
}
}

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M5.315,3.401c-1.61,0 -2.916,1.343 -2.916,3c0,1.656 1.306,3 2.916,3c2.915,0 0.972,5.799 -2.916,5.799v1.4C9.338,16.601 12.057,3.401 5.315,3.401zM13.715,3.401c-1.609,0 -2.915,1.343 -2.915,3c0,1.656 1.306,3 2.915,3c2.916,0 0.973,5.799 -2.915,5.799v1.4C17.738,16.601 20.457,3.401 13.715,3.401z"
android:fillColor="#FFFFFF" />
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M10,4.4C3.439,4.4 0,9.232 0,10c0,0.766 3.439,5.6 10,5.6c6.56,0 10,-4.834 10,-5.6C20,9.232 16.56,4.4 10,4.4zM10,14.307c-2.455,0 -4.445,-1.928 -4.445,-4.307S7.545,5.691 10,5.691s4.444,1.93 4.444,4.309S12.455,14.307 10,14.307zM10,10c-0.407,-0.447 0.663,-2.154 0,-2.154c-1.228,0 -2.223,0.965 -2.223,2.154S8.772,12.154 10,12.154c1.227,0 2.223,-0.965 2.223,-2.154C12.223,9.453 10.346,10.379 10,10z"
android:fillColor="#FFFFFF" />
</vector>

View File

@ -1,136 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/dialog_metrics_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dialog_metrics_layout_padding"
android:paddingBottom="@dimen/dialog_metrics_layout_padding"
android:paddingEnd="@dimen/dialog_metrics_layout_padding"
tools:context=".ui.dialogs.MetricsDialog"
tools:ignore="ContentDescription">
<TextView
android:id="@+id/dialog_metrics_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/dialog_metrics_title_textsize"
android:layout_margin="@dimen/dialog_metrics_layout_margin"
android:text="@string/status_metrics_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/dialog_metrics_views_icon"
android:layout_width="@dimen/dialog_metrics_item_iconsize"
android:layout_height="@dimen/dialog_metrics_item_iconsize"
android:src="@drawable/views"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_metrics_views"
app:layout_constraintBottom_toBottomOf="@id/dialog_metrics_views"
app:layout_constraintEnd_toStartOf="@id/dialog_metrics_views" />
<TextView
android:id="@+id/dialog_metrics_views"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dialog_metrics_layout_margin"
android:drawablePadding="@dimen/dialog_metrics_drawable_padding"
android:textSize="@dimen/dialog_metrics_item_textsize"
android:gravity="end"
app:layout_constraintStart_toEndOf="@id/dialog_metrics_views_icon"
app:layout_constraintTop_toBottomOf="@id/dialog_metrics_title"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/metrics_profile_clicks_icon"
android:layout_width="@dimen/dialog_metrics_item_iconsize"
android:layout_height="@dimen/dialog_metrics_item_iconsize"
android:src="@drawable/user"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_metrics_profile_clicks"
app:layout_constraintBottom_toBottomOf="@id/dialog_metrics_profile_clicks"
app:layout_constraintEnd_toStartOf="@id/dialog_metrics_profile_clicks" />
<TextView
android:id="@+id/dialog_metrics_profile_clicks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dialog_metrics_layout_margin"
android:drawablePadding="@dimen/dialog_metrics_drawable_padding"
android:textSize="@dimen/dialog_metrics_item_textsize"
android:gravity="end"
app:layout_constraintStart_toEndOf="@id/metrics_profile_clicks_icon"
app:layout_constraintTop_toBottomOf="@id/dialog_metrics_views"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/dialog_metrics_link_clicks_icon"
android:layout_width="@dimen/dialog_metrics_item_iconsize"
android:layout_height="@dimen/dialog_metrics_item_iconsize"
android:src="@drawable/link"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_metrics_link_clicks"
app:layout_constraintBottom_toBottomOf="@id/dialog_metrics_link_clicks"
app:layout_constraintEnd_toStartOf="@id/dialog_metrics_link_clicks" />
<TextView
android:id="@+id/dialog_metrics_link_clicks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dialog_metrics_layout_margin"
android:drawablePadding="@dimen/dialog_metrics_drawable_padding"
android:textSize="@dimen/dialog_metrics_item_textsize"
android:gravity="end"
app:layout_constraintStart_toEndOf="@id/dialog_metrics_link_clicks_icon"
app:layout_constraintTop_toBottomOf="@id/dialog_metrics_profile_clicks"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/dialog_metrics_quotes_icon"
android:layout_width="@dimen/dialog_metrics_item_iconsize"
android:layout_height="@dimen/dialog_metrics_item_iconsize"
android:src="@drawable/quote"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_metrics_quotes"
app:layout_constraintBottom_toBottomOf="@id/dialog_metrics_quotes"
app:layout_constraintEnd_toStartOf="@id/dialog_metrics_quotes" />
<TextView
android:id="@+id/dialog_metrics_quotes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dialog_metrics_layout_margin"
android:drawablePadding="@dimen/dialog_metrics_drawable_padding"
android:textSize="@dimen/dialog_metrics_item_textsize"
android:gravity="end"
app:layout_constraintStart_toEndOf="@id/dialog_metrics_quotes_icon"
app:layout_constraintTop_toBottomOf="@id/dialog_metrics_link_clicks"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/dialog_metrics_video_view_icon"
android:layout_width="@dimen/dialog_metrics_item_iconsize"
android:layout_height="@dimen/dialog_metrics_item_iconsize"
android:src="@drawable/play"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/dialog_metrics_video_view"
app:layout_constraintBottom_toBottomOf="@id/dialog_metrics_video_view"
app:layout_constraintEnd_toStartOf="@id/dialog_metrics_video_view" />
<TextView
android:id="@+id/dialog_metrics_video_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dialog_metrics_layout_margin"
android:drawablePadding="@dimen/dialog_metrics_drawable_padding"
android:textSize="@dimen/dialog_metrics_item_textsize"
android:gravity="end"
app:layout_constraintStart_toEndOf="@id/dialog_metrics_video_view_icon"
app:layout_constraintTop_toBottomOf="@id/dialog_metrics_quotes"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -24,11 +24,6 @@
android:id="@+id/menu_status_bookmark"
android:title="@string/menu_bookmark_add" />
<item
android:id="@+id/menu_status_metrics"
android:title="@string/menu_status_metrics"
android:visible="false" />
<item
android:id="@+id/menu_status_hide"
android:title="@string/menu_status_hide"

View File

@ -250,7 +250,6 @@
<string name="menu_toolbar_excluded_users">Blocklisten</string>
<string name="menu_toolbar_request">Follow Anfragen</string>
<string name="info_status_location_copied">Standortkoordinaten kopiert</string>
<string name="menu_status_metrics">Metriken</string>
<string name="settings_enable_indicators">zeige zusätzliche Status Informationen an</string>
<string name="login_key_enable">Token einfügen</string>
<string name="login_key_enable_v2">API v2 nutzen</string>
@ -262,7 +261,6 @@
<string name="menu_media_add_description">Beschreibung hinzufügen</string>
<string name="menu_media_show_meta">zeige Medieninformationen</string>
<string name="status_replyname_empty">Antwort</string>
<string name="status_metrics_title">Statusmetriken</string>
<string name="error_empty_text">Text ist leer!</string>
<string name="status_media_preview">Medienvorschau</string>
<string name="status_media_preview_button">Videovorschau-Button</string>

View File

@ -127,7 +127,6 @@
<string name="menu_status_edit">Editar</string>
<string name="menu_status_delete">Borrar</string>
<string name="menu_status_hide">Ocultar</string>
<string name="menu_status_metrics">Estadísticas</string>
<string name="menu_status_unhide">Mostrar</string>
<string name="menu_status_open_browser">Abrir en navegador</string>
<string name="menu_mute_user">Silenciar</string>
@ -275,7 +274,6 @@
<string name="toolbar_status_liker">Usuario le está gustando este estado</string>
<string name="time_now">Ahora</string>
<string name="status_replyname_empty">Responder</string>
<string name="status_metrics_title">Estadísticas del estado</string>
<string name="status_media_preview">Vista previa de los medios</string>
<string name="status_media_preview_button">Botón de vista previa del video</string>
<string name="poll_finished">Votación finalizada</string>

View File

@ -199,14 +199,6 @@
<!--dimens of fragment_list.xml-->
<dimen name="fragment_list_layout_padding">3dp</dimen>
<!-- dimens of dialog_metrics.xml-->
<dimen name="dialog_metrics_layout_margin">5dp</dimen>
<dimen name="dialog_metrics_layout_padding">12dp</dimen>
<dimen name="dialog_metrics_drawable_padding">5dp</dimen>
<dimen name="dialog_metrics_title_textsize">20sp</dimen>
<dimen name="dialog_metrics_item_textsize">16sp</dimen>
<dimen name="dialog_metrics_item_iconsize">20sp</dimen>
<!--dimens of dialog_confirm.xml-->
<dimen name="confirm_button_margin">10dp</dimen>
<dimen name="confirm_text_margin">14dp</dimen>

View File

@ -151,7 +151,6 @@
<string name="menu_status_delete">delete</string>
<string name="menu_status_report">report</string>
<string name="menu_status_hide">hide</string>
<string name="menu_status_metrics">Metrics</string>
<string name="menu_status_unhide">unhide</string>
<string name="menu_status_open_browser">open in browser</string>
<string name="menu_mute_user">mute</string>
@ -318,7 +317,6 @@
<string name="toolbar_status_liker">User liking this status</string>
<string name="time_now">now</string>
<string name="status_replyname_empty">Reply</string>
<string name="status_metrics_title">Status metrics</string>
<string name="status_media_preview">Media preview</string>
<string name="status_media_preview_button">Video preview button</string>
<string name="poll_finished">Vote finished</string>