status dialog layout fix, moved "local timeline" option to settings activity, bug fix, translation update

This commit is contained in:
nuclearfog 2023-03-12 17:57:49 +01:00
parent a4c9af728f
commit aca8dd5428
No known key found for this signature in database
GPG Key ID: 03488A185C476379
12 changed files with 117 additions and 51 deletions

View File

@ -38,6 +38,9 @@ public enum Configuration {
private final boolean postLocationSupported; private final boolean postLocationSupported;
private final boolean userlistVisibility; private final boolean userlistVisibility;
private final boolean notificationDismissSupported; private final boolean notificationDismissSupported;
private final boolean statusSpoilerSupported;
private final boolean statusVisibilitySupported;
private final boolean directMessageSupported;
private final int maxImages; private final int maxImages;
private final int maxGifs; private final int maxGifs;
private final int maxVideos; private final int maxVideos;
@ -58,6 +61,9 @@ public enum Configuration {
postLocationSupported = true; postLocationSupported = true;
userlistVisibility = true; userlistVisibility = true;
notificationDismissSupported = false; notificationDismissSupported = false;
statusSpoilerSupported = false;
statusVisibilitySupported = false;
directMessageSupported = true;
maxImages = 4; maxImages = 4;
maxGifs = 1; maxGifs = 1;
maxVideos = 1; maxVideos = 1;
@ -73,6 +79,9 @@ public enum Configuration {
postLocationSupported = false; postLocationSupported = false;
userlistVisibility = false; userlistVisibility = false;
notificationDismissSupported = true; notificationDismissSupported = true;
statusSpoilerSupported = true;
statusVisibilitySupported = true;
directMessageSupported = false;
maxImages = 4; maxImages = 4;
maxGifs = 1; maxGifs = 1;
maxVideos = 1; maxVideos = 1;
@ -139,10 +148,31 @@ public enum Configuration {
/** /**
* @return true if notification dismiss is supported * @return true if notification dismiss is supported
*/ */
public boolean NotificationDismissEnabled() { public boolean notificationDismissEnabled() {
return notificationDismissSupported; return notificationDismissSupported;
} }
/**
* @return true if login type supports warining for status spoiler
*/
public boolean statusSpoilerSupported() {
return statusSpoilerSupported;
}
/**
* @return true if login type supports status visibility states
*/
public boolean statusVisibilitySupported() {
return statusVisibilitySupported;
}
/**
* @return true if directmessaging is supported
*/
public boolean directmessageSupported() {
return directMessageSupported;
}
/** /**
* @return image limit for posts * @return image limit for posts
*/ */

View File

@ -35,7 +35,6 @@ import org.nuclearfog.twidda.backend.async.LinkLoader;
import org.nuclearfog.twidda.backend.async.LinkLoader.LinkResult; import org.nuclearfog.twidda.backend.async.LinkLoader.LinkResult;
import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.backend.utils.ErrorHandler; import org.nuclearfog.twidda.backend.utils.ErrorHandler;
import org.nuclearfog.twidda.config.Configuration;
import org.nuclearfog.twidda.config.GlobalSettings; import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.ui.adapter.FragmentAdapter; import org.nuclearfog.twidda.ui.adapter.FragmentAdapter;
import org.nuclearfog.twidda.ui.dialogs.ProgressDialog; import org.nuclearfog.twidda.ui.dialogs.ProgressDialog;
@ -166,9 +165,8 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal
@Override @Override
public boolean onPrepareOptionsMenu(Menu menu) { public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem localTl = menu.findItem(R.id.menu_local_timeline); MenuItem message = menu.findItem(R.id.menu_message);
localTl.setVisible(settings.getLogin().getConfiguration() == Configuration.MASTODON); message.setVisible(settings.getLogin().getConfiguration().directmessageSupported());
localTl.setChecked(settings.useLocalTimeline());
return super.onPrepareOptionsMenu(menu); return super.onPrepareOptionsMenu(menu);
} }
@ -206,13 +204,6 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal
Intent accountManager = new Intent(this, AccountActivity.class); Intent accountManager = new Intent(this, AccountActivity.class);
activityResultLauncher.launch(accountManager); activityResultLauncher.launch(accountManager);
} }
// enable disable Mastodon local timeline
else if (item.getItemId() == R.id.menu_local_timeline) {
boolean toggle = !settings.useLocalTimeline();
settings.setLocalTimeline(toggle);
adapter.notifySettingsChanged();
item.setChecked(toggle);
}
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }

View File

@ -136,7 +136,8 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
SwitchButton toggleImg = findViewById(R.id.toggleImg); SwitchButton toggleImg = findViewById(R.id.toggleImg);
SwitchButton toolbarOverlap = findViewById(R.id.settings_toolbar_ov); SwitchButton toolbarOverlap = findViewById(R.id.settings_toolbar_ov);
SwitchButton enableLike = findViewById(R.id.enable_like); SwitchButton enableLike = findViewById(R.id.enable_like);
SwitchButton enableTwitterAlt = findViewById(R.id.settings_enable_twitter_alt); SwitchButton enableNitter = findViewById(R.id.settings_enable_twitter_alt);
SwitchButton enableLocalTl = findViewById(R.id.settings_local_timeline);
View EnableTwitterAltDescr = findViewById(R.id.settings_enable_twitter_alt_descr); View EnableTwitterAltDescr = findViewById(R.id.settings_enable_twitter_alt_descr);
SwitchButton enableStatusIcons = findViewById(R.id.enable_status_indicators); SwitchButton enableStatusIcons = findViewById(R.id.enable_status_indicators);
SeekBar listSizeSelector = findViewById(R.id.settings_list_seek); SeekBar listSizeSelector = findViewById(R.id.settings_list_seek);
@ -192,7 +193,8 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
databaseAsync = new DatabaseAction(this); databaseAsync = new DatabaseAction(this);
if (configuration != Configuration.TWITTER1 && configuration != Configuration.TWITTER2) { if (configuration != Configuration.TWITTER1 && configuration != Configuration.TWITTER2) {
enableTwitterAlt.setVisibility(View.GONE); enableLocalTl.setVisibility(View.VISIBLE);
enableNitter.setVisibility(View.GONE);
EnableTwitterAltDescr.setVisibility(View.GONE); EnableTwitterAltDescr.setVisibility(View.GONE);
trend_card.setVisibility(View.GONE); trend_card.setVisibility(View.GONE);
} }
@ -218,7 +220,8 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
toggleImg.setCheckedImmediately(settings.imagesEnabled()); toggleImg.setCheckedImmediately(settings.imagesEnabled());
toolbarOverlap.setCheckedImmediately(settings.toolbarOverlapEnabled()); toolbarOverlap.setCheckedImmediately(settings.toolbarOverlapEnabled());
enableLike.setCheckedImmediately(settings.likeEnabled()); enableLike.setCheckedImmediately(settings.likeEnabled());
enableTwitterAlt.setCheckedImmediately(settings.twitterAltSet()); enableNitter.setCheckedImmediately(settings.twitterAltSet());
enableLocalTl.setCheckedImmediately(settings.useLocalTimeline());
enableStatusIcons.setCheckedImmediately(settings.statusIndicatorsEnabled()); enableStatusIcons.setCheckedImmediately(settings.statusIndicatorsEnabled());
enableProxy.setCheckedImmediately(settings.isProxyEnabled()); enableProxy.setCheckedImmediately(settings.isProxyEnabled());
enableAuth.setCheckedImmediately(settings.isProxyAuthSet()); enableAuth.setCheckedImmediately(settings.isProxyAuthSet());
@ -236,7 +239,8 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
delButton.setOnClickListener(this); delButton.setOnClickListener(this);
toggleImg.setOnCheckedChangeListener(this); toggleImg.setOnCheckedChangeListener(this);
enableLike.setOnCheckedChangeListener(this); enableLike.setOnCheckedChangeListener(this);
enableTwitterAlt.setOnCheckedChangeListener(this); enableNitter.setOnCheckedChangeListener(this);
enableLocalTl.setOnCheckedChangeListener(this);
enableStatusIcons.setOnCheckedChangeListener(this); enableStatusIcons.setOnCheckedChangeListener(this);
enableProxy.setOnCheckedChangeListener(this); enableProxy.setOnCheckedChangeListener(this);
enableAuth.setOnCheckedChangeListener(this); enableAuth.setOnCheckedChangeListener(this);
@ -506,6 +510,10 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
else if (c.getId() == R.id.enable_status_indicators) { else if (c.getId() == R.id.enable_status_indicators) {
settings.enableStatusIndicators(checked); settings.enableStatusIndicators(checked);
} }
// enable/disable local timeline (Mastodon)
else if (c.getId() == R.id.settings_local_timeline) {
settings.setLocalTimeline(checked);
}
// enable proxy settings // enable proxy settings
else if (c.getId() == R.id.settings_enable_proxy) { else if (c.getId() == R.id.settings_enable_proxy) {
if (checked) { if (checked) {

View File

@ -61,6 +61,7 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr
private View mediaBtn; private View mediaBtn;
private View locationBtn; private View locationBtn;
private View pollBtn;
private View locationPending; private View locationPending;
private StatusUpdater uploaderAsync; private StatusUpdater uploaderAsync;
@ -89,10 +90,10 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr
ImageView background = findViewById(R.id.popup_status_background); ImageView background = findViewById(R.id.popup_status_background);
View statusButton = findViewById(R.id.popup_status_send); View statusButton = findViewById(R.id.popup_status_send);
View closeButton = findViewById(R.id.popup_status_close); View closeButton = findViewById(R.id.popup_status_close);
View addPoll = findViewById(R.id.popup_status_add_poll);
View preference = findViewById(R.id.popup_status_pref); View preference = findViewById(R.id.popup_status_pref);
RecyclerView iconList = findViewById(R.id.popup_status_media_icons); RecyclerView iconList = findViewById(R.id.popup_status_media_icons);
EditText statusText = findViewById(R.id.popup_status_input); EditText statusText = findViewById(R.id.popup_status_input);
pollBtn = findViewById(R.id.popup_status_add_poll);
locationBtn = findViewById(R.id.popup_status_add_location); locationBtn = findViewById(R.id.popup_status_add_location);
mediaBtn = findViewById(R.id.popup_status_add_media); mediaBtn = findViewById(R.id.popup_status_add_media);
locationPending = findViewById(R.id.popup_status_location_loading); locationPending = findViewById(R.id.popup_status_location_loading);
@ -119,16 +120,16 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr
iconList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)); iconList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
iconList.setAdapter(adapter); iconList.setAdapter(adapter);
statusText.addTextChangedListener(this);
closeButton.setOnClickListener(this); closeButton.setOnClickListener(this);
preference.setOnClickListener(this); preference.setOnClickListener(this);
addPoll.setOnClickListener(this);
statusButton.setOnClickListener(this); statusButton.setOnClickListener(this);
pollBtn.setOnClickListener(this);
mediaBtn.setOnClickListener(this); mediaBtn.setOnClickListener(this);
locationBtn.setOnClickListener(this); locationBtn.setOnClickListener(this);
confirmDialog.setConfirmListener(this); confirmDialog.setConfirmListener(this);
loadingCircle.addOnProgressStopListener(this); loadingCircle.addOnProgressStopListener(this);
adapter.addOnMediaClickListener(this); adapter.addOnMediaClickListener(this);
statusText.addTextChangedListener(this);
} }
@ -258,9 +259,14 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr
Toast.makeText(getApplicationContext(), R.string.error_adding_media, Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), R.string.error_adding_media, Toast.LENGTH_SHORT).show();
break; break;
} }
// hide media button if limit is reached
if (statusUpdate.mediaLimitReached()) { if (statusUpdate.mediaLimitReached()) {
mediaBtn.setVisibility(View.GONE); mediaBtn.setVisibility(View.GONE);
} }
// hide poll button
if (mediaType != StatusUpdate.MEDIA_ERROR && pollBtn.getVisibility() != View.GONE) {
pollBtn.setVisibility(View.GONE);
}
} }

View File

@ -239,7 +239,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener {
label.setVisibility(View.VISIBLE); label.setVisibility(View.VISIBLE);
label.setText(text); label.setText(text);
label.setCompoundDrawablesWithIntrinsicBounds(iconRes, 0, 0, 0); label.setCompoundDrawablesWithIntrinsicBounds(iconRes, 0, 0, 0);
if (settings.getLogin().getConfiguration().NotificationDismissEnabled()) { if (settings.getLogin().getConfiguration().notificationDismissEnabled()) {
dismissButton.setVisibility(View.VISIBLE); dismissButton.setVisibility(View.VISIBLE);
} }
AppStyles.setDrawableColor(label, settings.getIconColor()); AppStyles.setDrawableColor(label, settings.getIconColor());

View File

@ -152,7 +152,7 @@ public class UserHolder extends ViewHolder implements OnClickListener {
iconRes = R.drawable.follower_request; iconRes = R.drawable.follower_request;
break; break;
} }
if (settings.getLogin().getConfiguration().NotificationDismissEnabled()) { if (settings.getLogin().getConfiguration().notificationDismissEnabled()) {
notificationDismiss.setVisibility(VISIBLE); notificationDismiss.setVisibility(VISIBLE);
} }
label.setVisibility(VISIBLE); label.setVisibility(VISIBLE);

View File

@ -16,6 +16,7 @@ import com.kyleduo.switchbutton.SwitchButton;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.helper.StatusUpdate; import org.nuclearfog.twidda.backend.helper.StatusUpdate;
import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.config.GlobalSettings;
/** /**
* status editor preference dialog used to set additional status information * status editor preference dialog used to set additional status information
@ -37,11 +38,19 @@ public class StatusPreferenceDialog extends Dialog implements OnCheckedChangeLis
SwitchButton sensitiveCheck = findViewById(R.id.dialog_status_sensitive); SwitchButton sensitiveCheck = findViewById(R.id.dialog_status_sensitive);
SwitchButton spoilerCheck = findViewById(R.id.dialog_status_spoiler); SwitchButton spoilerCheck = findViewById(R.id.dialog_status_spoiler);
Spinner visibilitySelector = findViewById(R.id.dialog_status_visibility); Spinner visibilitySelector = findViewById(R.id.dialog_status_visibility);
View statusVisibility = findViewById(R.id.dialog_status_visibility_container);
View statusSpoiler = findViewById(R.id.dialog_status_spoiler_container);
GlobalSettings settings = GlobalSettings.getInstance(context);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.visibility, android.R.layout.simple_spinner_dropdown_item); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.visibility, android.R.layout.simple_spinner_dropdown_item);
visibilitySelector.setAdapter(adapter); visibilitySelector.setAdapter(adapter);
AppStyles.setTheme(rootView); AppStyles.setTheme(rootView);
if (!settings.getLogin().getConfiguration().statusVisibilitySupported()) {
statusVisibility.setVisibility(View.GONE);
}
if (!settings.getLogin().getConfiguration().statusSpoilerSupported()) {
statusSpoiler.setVisibility(View.GONE);
}
sensitiveCheck.setOnCheckedChangeListener(this); sensitiveCheck.setOnCheckedChangeListener(this);
spoilerCheck.setOnCheckedChangeListener(this); spoilerCheck.setOnCheckedChangeListener(this);
visibilitySelector.setOnItemSelectedListener(this); visibilitySelector.setOnItemSelectedListener(this);

View File

@ -18,47 +18,46 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center_vertical|end"
android:layout_marginBottom="@dimen/dialog_status_layout_margins"> android:layout_marginBottom="@dimen/dialog_status_layout_margins">
<com.kyleduo.switchbutton.SwitchButton
android:id="@+id/dialog_status_sensitive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dialog_status_layout_margins"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/dialog_status_sensitive" android:text="@string/dialog_status_sensitive"
android:layout_marginEnd="@dimen/dialog_status_layout_margins"
android:lines="1"/> android:lines="1"/>
<com.kyleduo.switchbutton.SwitchButton
android:id="@+id/dialog_status_sensitive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/dialog_status_spoiler_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="end"
android:layout_marginBottom="@dimen/dialog_status_layout_margins"> android:layout_marginBottom="@dimen/dialog_status_layout_margins">
<com.kyleduo.switchbutton.SwitchButton
android:id="@+id/dialog_status_spoiler"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dialog_status_layout_margins"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/dialog_status_spoiler" android:text="@string/dialog_status_spoiler"
android:layout_marginEnd="@dimen/dialog_status_layout_margins"
android:lines="1"/> android:lines="1"/>
<com.kyleduo.switchbutton.SwitchButton
android:id="@+id/dialog_status_spoiler"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/dialog_status_visibility_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal">
android:gravity="end">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"

View File

@ -387,7 +387,7 @@
android:layout_marginEnd="@dimen/settings_switch_margin" android:layout_marginEnd="@dimen/settings_switch_margin"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toggleImg" app:layout_constraintTop_toBottomOf="@id/toggleImg"
app:layout_constraintBottom_toTopOf="@id/settings_list_seek" app:layout_constraintBottom_toTopOf="@id/settings_local_timeline"
app:layout_constraintEnd_toStartOf="@id/settings_enable_twitter_alt_descr" /> app:layout_constraintEnd_toStartOf="@id/settings_enable_twitter_alt_descr" />
<TextView <TextView
@ -402,6 +402,29 @@
app:layout_constraintBottom_toBottomOf="@id/settings_enable_twitter_alt" app:layout_constraintBottom_toBottomOf="@id/settings_enable_twitter_alt"
app:layout_constraintEnd_toEndOf="parent" /> app:layout_constraintEnd_toEndOf="parent" />
<com.kyleduo.switchbutton.SwitchButton
android:id="@+id/settings_local_timeline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/settings_column_margin"
android:layout_marginEnd="@dimen/settings_switch_margin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/settings_enable_twitter_alt"
app:layout_constraintBottom_toTopOf="@id/settings_list_seek"
app:layout_constraintEnd_toStartOf="@id/settings_local_timeline_descr" />
<TextView
android:id="@+id/settings_local_timeline_descr"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:lines="1"
android:text="@string/settings_description_local_timeline"
android:textSize="@dimen/settings_textsize_small"
app:layout_constraintStart_toEndOf="@id/settings_local_timeline"
app:layout_constraintTop_toTopOf="@id/settings_local_timeline"
app:layout_constraintBottom_toBottomOf="@id/settings_local_timeline"
app:layout_constraintEnd_toEndOf="parent" />
<TextView <TextView
android:id="@+id/settings_list_seek_descr" android:id="@+id/settings_list_seek_descr"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -419,10 +442,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_marginBottom="@dimen/settings_column_margin"
android:max="9" android:max="9"
app:layout_constraintStart_toEndOf="@id/settings_list_seek_descr" app:layout_constraintStart_toEndOf="@id/settings_list_seek_descr"
app:layout_constraintTop_toBottomOf="@id/settings_enable_twitter_alt" app:layout_constraintTop_toBottomOf="@id/settings_local_timeline_descr"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/settings_list_size" /> app:layout_constraintEnd_toStartOf="@id/settings_list_size" />

View File

@ -9,11 +9,6 @@
app:actionViewClass="androidx.appcompat.widget.SearchView" app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="always|collapseActionView" /> app:showAsAction="always|collapseActionView" />
<item
android:id="@+id/menu_local_timeline"
android:title="@string/menu_show_local_timeline"
android:checkable="true" />
<item <item
android:id="@+id/menu_profile" android:id="@+id/menu_profile"
android:title="@string/menu_open_home_profile" android:title="@string/menu_open_home_profile"

View File

@ -267,7 +267,6 @@
<string name="info_missing_key">bitte Schlüssel eingeben</string> <string name="info_missing_key">bitte Schlüssel eingeben</string>
<string name="info_missing_host">bitte gültigen Hostnamen eingeben</string> <string name="info_missing_host">bitte gültigen Hostnamen eingeben</string>
<string name="info_missing_api_keys">Bitte API-Schlüssel hinzufügen</string> <string name="info_missing_api_keys">Bitte API-Schlüssel hinzufügen</string>
<string name="menu_show_local_timeline">zeige lokale Timeline</string>
<string name="info_status_bookmarked">Status zu Lesezeichen hinzugefügt</string> <string name="info_status_bookmarked">Status zu Lesezeichen hinzugefügt</string>
<string name="info_status_unbookmarked">Status aus Lesezeichen entfernt</string> <string name="info_status_unbookmarked">Status aus Lesezeichen entfernt</string>
<string name="settings_bookmark_color">Lesezeichen symbol</string> <string name="settings_bookmark_color">Lesezeichen symbol</string>
@ -285,4 +284,11 @@
<string name="dialog_poll_duration_hint">Dauer</string> <string name="dialog_poll_duration_hint">Dauer</string>
<string name="poll_option_edit_button">hinzufügen/entfernen</string> <string name="poll_option_edit_button">hinzufügen/entfernen</string>
<string name="status_add_poll">Umfrage hinzufügen</string> <string name="status_add_poll">Umfrage hinzufügen</string>
<string name="status_pref">Statuseinstellungen</string>
<string name="settings_description_local_timeline">nur lokale Timeline zeigen</string>
<string name="dialog_poll_close">Dialogfenster schließen</string>
<string name="dialog_status_title">Statuseinstellungen</string>
<string name="dialog_status_sensitive">sensibel</string>
<string name="dialog_status_spoiler">Spoiler</string>
<string name="dialog_status_visibility">Sichtbarkeit</string>
</resources> </resources>

View File

@ -146,7 +146,6 @@
<string name="menu_excluded_users">Blocklists</string> <string name="menu_excluded_users">Blocklists</string>
<string name="menu_exclude_user">exclude user</string> <string name="menu_exclude_user">exclude user</string>
<string name="menu_search_filter">filter results</string> <string name="menu_search_filter">filter results</string>
<string name="menu_show_local_timeline">show local timeline</string>
<string name="menu_hint_mute_user">enter @name to mute</string> <string name="menu_hint_mute_user">enter @name to mute</string>
<string name="menu_hint_block_user">enter @name to block</string> <string name="menu_hint_block_user">enter @name to block</string>
<string name="menu_refresh_exclude">refresh exclude list</string> <string name="menu_refresh_exclude">refresh exclude list</string>
@ -214,7 +213,7 @@
<string name="status_add_image">add new image</string> <string name="status_add_image">add new image</string>
<string name="notification_dismiss">dismiss notification</string> <string name="notification_dismiss">dismiss notification</string>
<string name="send_status">share status</string> <string name="send_status">share status</string>
<string name="status_pref">status preferences</string> <string name="status_pref">Status preferences</string>
<string name="status_add_poll">add poll</string> <string name="status_add_poll">add poll</string>
<string name="status_close">close editor</string> <string name="status_close">close editor</string>
<string name="profile_link">Link</string> <string name="profile_link">Link</string>
@ -260,6 +259,7 @@
<string name="settings_enable_toolbar_overlap">Collapsed profile layout</string> <string name="settings_enable_toolbar_overlap">Collapsed profile layout</string>
<string name="settings_look">Look</string> <string name="settings_look">Look</string>
<string name="settings_description_enable_twitter_alt">use nitter.net for links</string> <string name="settings_description_enable_twitter_alt">use nitter.net for links</string>
<string name="settings_description_local_timeline">show local timelines only</string>
<string name="item_load_more">load more</string> <string name="item_load_more">load more</string>
<string name="item_image_save">save image</string> <string name="item_image_save">save image</string>
<string name="item_poll_option_vote">vote</string> <string name="item_poll_option_vote">vote</string>
@ -316,6 +316,6 @@
<string name="dialog_poll_close">close dialog</string> <string name="dialog_poll_close">close dialog</string>
<string name="dialog_status_title">Status preferences</string> <string name="dialog_status_title">Status preferences</string>
<string name="dialog_status_sensitive">sensitive</string> <string name="dialog_status_sensitive">sensitive</string>
<string name="dialog_status_spoiler">spoiler</string> <string name="dialog_status_spoiler">Spoiler</string>
<string name="dialog_status_visibility">visibility</string> <string name="dialog_status_visibility">Visibility</string>
</resources> </resources>