diff --git a/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java b/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java index 54ffe252..47c9628c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java @@ -93,6 +93,7 @@ public class GlobalSettings { private static final String FILTER_RESULTS = "filter_results"; private static final String MASTODON_LOCAL_TIMELINE = "mastodon_local_timeline"; private static final String HIDE_SENSITIVE = "hide_sensitive"; + private static final String FLOATING_BUTTON = "floating_button_enabled"; private static final String PUSH_ENABLED = "push_enabled"; private static final String LOGIN_ENABLED = "login"; @@ -162,6 +163,7 @@ public class GlobalSettings { private boolean twitterAlt; private boolean localOnly; private boolean hideSensitive; + private boolean floatingEnabled; private int background_color; private int font_color; private int highlight_color; @@ -501,14 +503,14 @@ public class GlobalSettings { } /** - * @return true if tweet indicators enabled + * @return true if status indicators enabled */ public boolean statusIndicatorsEnabled() { return tweetIndicators; } /** - * enable/disable tweet indicators + * enable/disable status indicators * * @param enable true to enable tweet indicators */ @@ -520,6 +522,26 @@ public class GlobalSettings { edit.apply(); } + /** + * @return true if floating button (status posting) is enabled + */ + public boolean floatingButtonEnabled() { + return floatingEnabled; + } + + /** + * enable/disable floating button (status posting) + * + * @param enable true to enable floating button + */ + public void enableFloatingButton(boolean enable) { + floatingEnabled = enable; + + Editor edit = settings.edit(); + edit.putBoolean(FLOATING_BUTTON, enable); + edit.apply(); + } + /** * @return true to hide sensitivee/spoiler content by default */ @@ -1054,6 +1076,7 @@ public class GlobalSettings { twitterAlt = settings.getBoolean(ENABLE_TWITTER_ALT, false); localOnly = settings.getBoolean(MASTODON_LOCAL_TIMELINE, false); hideSensitive = settings.getBoolean(HIDE_SENSITIVE, true); + floatingEnabled = settings.getBoolean(FLOATING_BUTTON, true); pushInstance = settings.getString(PUSH_INSTANCE, ConstantsKt.INSTANCE_DEFAULT); proxyHost = settings.getString(PROXY_ADDR, ""); proxyPort = settings.getString(PROXY_PORT, ""); diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java index d8423a58..4733f7df 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java @@ -84,6 +84,7 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal private ImageView profileImage; private TextView username, screenname; private TextView followingCount, followerCount; + private View floatingButton; @Nullable private User currentUser; @@ -99,10 +100,10 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.page_main); + Toolbar toolbar = findViewById(R.id.home_toolbar); NavigationView navigationView = findViewById(R.id.home_navigator); ViewGroup header = (ViewGroup) navigationView.getHeaderView(0); - Toolbar toolbar = findViewById(R.id.home_toolbar); - View floatingButton = findViewById(R.id.home_post); + floatingButton = findViewById(R.id.home_post); drawerLayout = findViewById(R.id.main_layout); viewPager = findViewById(R.id.home_pager); tabSelector = findViewById(R.id.home_tab); @@ -118,6 +119,9 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal picasso = PicassoBuilder.get(this); tabSelector.addViewPager(viewPager); viewPager.setOffscreenPageLimit(4); + if (!settings.floatingButtonEnabled()) { + floatingButton.setVisibility(View.INVISIBLE); + } toolbar.setTitle(""); toolbar.setNavigationIcon(R.drawable.menu); @@ -226,8 +230,14 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal default: case SettingsActivity.RETURN_SETTINGS_CHANGED: case AccountActivity.RETURN_SETTINGS_CHANGED: - if (adapter != null) + if (settings.floatingButtonEnabled()) { + floatingButton.setVisibility(View.VISIBLE); + } else { + floatingButton.setVisibility(View.INVISIBLE); + } + if (adapter != null) { adapter.notifySettingsChanged(); + } setStyle(); setCurrentUser(currentUser); break; @@ -268,37 +278,42 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { + boolean selected = false; // open filter page if (item.getItemId() == R.id.menu_navigator_filter) { Intent intent = new Intent(this, FilterActivity.class); startActivity(intent); - return true; + selected = true; } // open status editor else if (item.getItemId() == R.id.menu_navigator_status) { Intent intent = new Intent(this, StatusEditor.class); startActivity(intent); - return true; + selected = true; } // open app settings else if (item.getItemId() == R.id.menu_navigator_settings) { Intent intent = new Intent(this, SettingsActivity.class); activityResultLauncher.launch(intent); - return true; + selected = true; } // open account manager else if (item.getItemId() == R.id.menu_navigator_account) { Intent intent = new Intent(this, AccountActivity.class); activityResultLauncher.launch(intent); - return true; + selected = true; } // open user lists else if (item.getItemId() == R.id.menu_navigator_lists) { Intent intent = new Intent(this, UserlistsActivity.class); intent.putExtra(UserlistsActivity.KEY_ID, settings.getLogin().getId()); startActivity(intent); + selected = true; } - return false; + if (selected) { + drawerLayout.close(); + } + return selected; } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java index b2433abf..09820126 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java @@ -150,6 +150,7 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen SwitchButton enableLocalTl = findViewById(R.id.settings_local_timeline); SwitchButton hideSensitive = findViewById(R.id.enable_status_hide_sensitive); SwitchButton enableStatusIcons = findViewById(R.id.enable_status_indicators); + SwitchButton enableFloatingButton = findViewById(R.id.settings_enable_floating_button); SeekBar listSizeSelector = findViewById(R.id.settings_list_seek); Spinner fontSelector = findViewById(R.id.spinner_font); Spinner scaleSelector = findViewById(R.id.spinner_scale); @@ -242,6 +243,7 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen enableLocalTl.setCheckedImmediately(settings.useLocalTimeline()); hideSensitive.setCheckedImmediately(settings.hideSensitiveEnabled()); enableStatusIcons.setCheckedImmediately(settings.statusIndicatorsEnabled()); + enableFloatingButton.setCheckedImmediately(settings.floatingButtonEnabled()); enablePush.setCheckedImmediately(settings.pushEnabled()); enable_proxy.setCheckedImmediately(settings.isProxyEnabled()); enable_auth.setCheckedImmediately(settings.isProxyAuthSet()); @@ -264,6 +266,7 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen enableLocalTl.setOnCheckedChangeListener(this); enableStatusIcons.setOnCheckedChangeListener(this); hideSensitive.setOnCheckedChangeListener(this); + enableFloatingButton.setOnCheckedChangeListener(this); enable_proxy.setOnCheckedChangeListener(this); enable_auth.setOnCheckedChangeListener(this); push_label.setOnClickListener(this); @@ -539,6 +542,10 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen else if (c.getId() == R.id.enable_status_indicators) { settings.enableStatusIndicators(checked); } + // enable floating button + else if (c.getId() == R.id.settings_enable_floating_button) { + settings.enableFloatingButton(checked); + } // enable/disable local timeline (Mastodon) else if (c.getId() == R.id.settings_local_timeline) { settings.setLocalTimeline(checked); diff --git a/app/src/main/res/drawable/menu.xml b/app/src/main/res/drawable/menu.xml index 52f21bc5..40a42f01 100644 --- a/app/src/main/res/drawable/menu.xml +++ b/app/src/main/res/drawable/menu.xml @@ -1,10 +1,9 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="17" + android:viewportHeight="17"> diff --git a/app/src/main/res/layout/navigation_header.xml b/app/src/main/res/layout/navigation_header.xml index a5af652d..9bba28cb 100644 --- a/app/src/main/res/layout/navigation_header.xml +++ b/app/src/main/res/layout/navigation_header.xml @@ -6,6 +6,7 @@ android:id="@+id/navogation_header_root" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/mainpage_toolbar_height" android:padding="@dimen/navigation_header_layout_padding" tools:ignore="UseCompatTextViewDrawableXml"> diff --git a/app/src/main/res/layout/page_main.xml b/app/src/main/res/layout/page_main.xml index 03f77460..956e6bec 100644 --- a/app/src/main/res/layout/page_main.xml +++ b/app/src/main/res/layout/page_main.xml @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:fitsSystemWindows="false" android:layout_gravity="start" - android:layout_marginTop="@dimen/mainpage_toolbar_height" + android:maxWidth="@dimen/mainpage_navigation_max_width" app:headerLayout="@layout/navigation_header" app:menu="@menu/main_navigation"/> diff --git a/app/src/main/res/layout/page_settings.xml b/app/src/main/res/layout/page_settings.xml index fd086fcd..81a860e0 100644 --- a/app/src/main/res/layout/page_settings.xml +++ b/app/src/main/res/layout/page_settings.xml @@ -226,13 +226,35 @@ app:layout_constraintBottom_toBottomOf="@id/settings_toolbar_ov" app:layout_constraintEnd_toEndOf="parent" /> + + + + Ortung läuft, bitte warten. Suchbegriff ist entweder zu lang oder enthält nicht erlaubte Zeichen! Link teilen + Floating-Button aktivieren Aussehen Linkvorschau Bild Accounts diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c5798640..e9ed1f3a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -201,6 +201,7 @@ @dimen/toolbar_height 20dp + 220sp @dimen/toolbar_height diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 067222e6..567287d4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -289,6 +289,7 @@ add banner App source code: Collapsed profile layout + enable floating button Look use Nitter to open Twitter links show local timelines only