Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a move bar widget #1627

Merged
merged 2 commits into from
Dec 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1388,10 +1388,10 @@ public void checkTogglePassthrough() {
@Keep
@SuppressWarnings("unused")
public void resetWindowsPosition() {
// Reset the position of the windows when we are not in headlock and window movement is enabled.
if (!mSettings.isHeadLockEnabled() && mSettings.isWindowMovementEnabled()) {
runOnUiThread(() -> mWindows.resetWindowsPosition());
}
// Reset the position of the windows when we are not in headlock.
if (mSettings.isHeadLockEnabled())
return;
runOnUiThread(() -> mWindows.resetWindowsPosition());
}

@Keep
Expand Down
13 changes: 0 additions & 13 deletions app/src/common/shared/com/igalia/wolvic/browser/SettingsStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -391,19 +391,6 @@ public void setHeadLockEnabled(boolean isEnabled) {
editor.apply();
}

public boolean isWindowMovementEnabled() {
return mPrefs.getBoolean(
mContext.getString(R.string.settings_key_window_movement), WINDOW_MOVEMENT_DEFAULT);
}

public void setWindowMovementEnabled(boolean isEnabled) {
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean(mContext.getString(R.string.settings_key_window_movement), isEnabled);
editor.apply();

mSettingsViewModel.setWindowMovementEnabled(isEnabled);
}

public boolean isEnvironmentOverrideEnabled() {
return mPrefs.getBoolean(
mContext.getString(R.string.settings_key_environment_override), ENV_OVERRIDE_DEFAULT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public class SettingsViewModel extends AndroidViewModel {
private MutableLiveData<String> propsVersionName;
private MutableLiveData<Map<String, RemoteProperties>> props;
private MutableLiveData<ObservableBoolean> isWhatsNewVisible;
private MutableLiveData<ObservableBoolean> isWindowMovementEnabled;

public SettingsViewModel(@NonNull Application application) {
super(application);
Expand All @@ -44,7 +43,6 @@ public SettingsViewModel(@NonNull Application application) {
propsVersionName = new MutableLiveData<>();
props = new MutableLiveData<>(Collections.emptyMap());
isWhatsNewVisible = new MutableLiveData<>(new ObservableBoolean(false));
isWindowMovementEnabled = new MutableLiveData<>(new ObservableBoolean(false));

propsVersionName.observeForever(props -> isWhatsNewVisible());
props.observeForever(versionName -> isWhatsNewVisible());
Expand All @@ -66,9 +64,6 @@ public void refresh() {

String appVersionName = SettingsStore.getInstance(getApplication().getBaseContext()).getRemotePropsVersionName();
propsVersionName.postValue(appVersionName);

boolean windowMovementVisible = SettingsStore.getInstance(getApplication().getBaseContext()).isWindowMovementEnabled();
isWindowMovementEnabled.postValue(new ObservableBoolean(windowMovementVisible));
}

private void isWhatsNewVisible() {
Expand Down Expand Up @@ -110,14 +105,6 @@ public MutableLiveData<ObservableBoolean> getIsWebXREnabled() {
return isWebXREnabled;
}

public void setWindowMovementEnabled(boolean isEnabled) {
this.isWindowMovementEnabled.setValue(new ObservableBoolean(isEnabled));
}

public MutableLiveData<ObservableBoolean> isWindowMovementEnabled() {
return isWindowMovementEnabled;
}

public void setPropsVersionName(String appVersionName) {
this.propsVersionName.setValue(appVersionName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@
import static com.igalia.wolvic.db.SitePermission.SITE_PERMISSION_TRACKING;
import static com.igalia.wolvic.ui.widgets.menus.VideoProjectionMenuWidget.VIDEO_PROJECTION_NONE;

import android.animation.ValueAnimator;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import androidx.preference.PreferenceManager;
import android.util.AttributeSet;
import android.util.Log;
Expand Down Expand Up @@ -134,6 +137,7 @@ public interface NavigationListener {
private WidgetPlacement mBeforeFullscreenPlacement;
private float mSavedCylinderDensity = 0.0f;
private Animation mAnimation;
private ValueAnimator mMoveBarAnimator;

private class MoveTouchListener implements OnTouchListener {
@Override
Expand Down Expand Up @@ -326,7 +330,7 @@ private void updateUI() {
}
});

mBinding.navigationBarNavigation.moveButton.setOnTouchListener(new MoveTouchListener());
mBinding.navigationBarNavigation.moveBar.setOnTouchListener(new MoveTouchListener());
mBinding.navigationBarFullscreen.fullScreenMoveButton.setOnTouchListener(new MoveTouchListener());

mBinding.navigationBarNavigation.menuButton.setOnClickListener(view -> {
Expand Down
11 changes: 6 additions & 5 deletions app/src/common/shared/com/igalia/wolvic/ui/widgets/Windows.java
Original file line number Diff line number Diff line change
Expand Up @@ -1388,17 +1388,18 @@ public void onContentFullScreen(@NonNull WindowWidget aWindow, boolean aFullScre
for (WindowWidget win: getCurrentWindows()) {
setWindowVisible(win, win == mFullscreenWindow);
}
updateMaxWindowScales();
updateViews();
} else if (mFullscreenWindow != null) {
} else {
if (mFullscreenWindow == null)
return;
aWindow.restoreBeforeFullscreenPlacement();
mFullscreenWindow = null;
for (WindowWidget win : getCurrentWindows()) {
setWindowVisible(win, true);
}
updateMaxWindowScales();
updateViews();
}
updateMaxWindowScales();
updateCurvedMode(true);

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,6 @@ protected void updateUI() {
mBinding.headLockSwitch.setOnCheckedChangeListener(mHeadLockListener);
setHeadLock(SettingsStore.getInstance(getContext()).isHeadLockEnabled(), false);

mBinding.windowMovementSwitch.setOnCheckedChangeListener(mWindowMovementListener);
setWindowMovement(SettingsStore.getInstance(getContext()).isWindowMovementEnabled(), false);

mDefaultHomepageUrl = getContext().getString(R.string.HOMEPAGE_URL);

mBinding.homepageEdit.setHint1(getContext().getString(R.string.homepage_hint, getContext().getString(R.string.app_name)));
Expand Down Expand Up @@ -203,10 +200,6 @@ public boolean isEditing() {
setHeadLock(value, true);
};

private SwitchSetting.OnCheckedChangeListener mWindowMovementListener = (compoundButton, enabled, apply) -> {
setWindowMovement(enabled, true);
};

private OnClickListener mHomepageListener = (view) -> {
if (!mBinding.homepageEdit.getFirstText().isEmpty()) {
setHomepage(mBinding.homepageEdit.getFirstText());
Expand Down Expand Up @@ -284,7 +277,6 @@ public boolean isEditing() {
setSoundEffect(SettingsStore.AUDIO_ENABLED, true);
setLatinAutoComplete(SettingsStore.LATIN_AUTO_COMPLETE_ENABLED, true);
setCenterWindows(SettingsStore.CENTER_WINDOWS_DEFAULT, true);
setWindowMovement(SettingsStore.WINDOW_MOVEMENT_DEFAULT, true);
setWindowDistance(SettingsStore.WINDOW_DISTANCE_DEFAULT, true);

if (mBinding.startWithPassthroughSwitch.isChecked() != SettingsStore.shouldStartWithPassthrougEnabled()) {
Expand Down Expand Up @@ -360,12 +352,6 @@ private void setHeadLock(boolean value, boolean doApply) {
if (doApply) {
settingsStore.setHeadLockEnabled(value);
}

if (value && settingsStore.isWindowMovementEnabled()) {
// Disable window movement if head lock is enabled,
// otherwise the windows might be moved out of the user's reach.
setWindowMovement(false, true);
}
}

private void setSoundEffect(boolean value, boolean doApply) {
Expand All @@ -379,23 +365,6 @@ private void setSoundEffect(boolean value, boolean doApply) {
}
}

private void setWindowMovement(boolean value, boolean doApply) {
mBinding.windowMovementSwitch.setOnCheckedChangeListener(null);
mBinding.windowMovementSwitch.setValue(value, false);
mBinding.windowMovementSwitch.setOnCheckedChangeListener(mWindowMovementListener);

SettingsStore settingsStore = SettingsStore.getInstance(getContext());
if (doApply) {
settingsStore.setWindowMovementEnabled(value);
}

if (value && settingsStore.isHeadLockEnabled()) {
// Disable head lock if window movement is enabled,
// otherwise the windows might be moved out of the user's reach.
setHeadLock(false, true);
}
}

private void setHomepage(String newHomepage) {
mBinding.homepageEdit.setOnClickListener(null);
mBinding.homepageEdit.setFirstText(newHomepage);
Expand Down
23 changes: 23 additions & 0 deletions app/src/main/res/drawable/rounded_line.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="@color/ocean" />
<corners android:radius="5dp" />
<size android:height="5dp" />
</shape>
</item>
<item android:state_hovered="true">
<shape>
<solid android:color="@color/azure" />
<corners android:radius="5dp" />
<size android:height="5dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="@color/fog" />
<corners android:radius="5dp" />
<size android:height="5dp" />
</shape>
</item>
</selector>
2 changes: 1 addition & 1 deletion app/src/main/res/layout/navigation_bar_fullscreen.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
android:src="@drawable/ic_icon_move"
android:tooltipText="@string/move_tooltip"
app:privateMode="@{viewmodel.isPrivateSession}"
app:visibleGone="@{settingsmodel.isWindowMovementEnabled &amp;&amp; viewmodel.isCurved}" />
app:visibleGone="@{viewmodel.isCurved}" />

<com.igalia.wolvic.ui.views.UIButton
android:id="@+id/brightnessButton"
Expand Down
41 changes: 31 additions & 10 deletions app/src/main/res/layout/navigation_bar_navigation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,16 @@
name="settingsmodel"
type="com.igalia.wolvic.ui.viewmodel.SettingsViewModel" />
</data>

<LinearLayout
android:id="@+id/navigationBarContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="0dp">

<!-- Navigation bar -->
<LinearLayout
style="?attr/navigationBarStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
Expand Down Expand Up @@ -135,16 +143,6 @@
android:background="@drawable/downloads_badge"/>
</RelativeLayout>

<com.igalia.wolvic.ui.views.UIButton
android:id="@+id/moveButton"
style="?attr/navigationBarButtonStyle"
android:layout_marginStart="10dp"
android:layout_weight="0"
android:src="@drawable/ic_icon_move"
android:tooltipText="@string/move_tooltip"
app:privateMode="@{viewmodel.isPrivateSession}"
app:visibleGone="@{settingsmodel.isWindowMovementEnabled &amp;&amp; viewmodel.isCurved}" />

<com.igalia.wolvic.ui.views.UIButton
android:id="@+id/menuButton"
style="?attr/navigationBarButtonStyle"
Expand All @@ -154,4 +152,27 @@
android:tooltipText="@string/hamburger_menu_tooltip"
app:privateMode="@{viewmodel.isPrivateSession}"/>
</LinearLayout>

<!-- Horizontal Divider -->
<FrameLayout
android:clickable="true"
android:id="@+id/moveBar"
android:radius="4dp"
android:layout_margin="10dp"
android:layout_width="128dp"
android:layout_height="32dp"
android:tooltipText="@string/move_tooltip"
android:layout_gravity="center_horizontal"
app:visibleGone="@{viewmodel.isCurved}">

<View
android:layout_width="@dimen/move_bar_width"
android:layout_height="8dp"
android:layout_gravity="center"
android:background="@drawable/rounded_line"
android:duplicateParentState="true"
android:radius="4dp" />
</FrameLayout>

</LinearLayout>
</layout>
6 changes: 0 additions & 6 deletions app/src/main/res/layout/options_display.xml
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,6 @@
android:layout_height="wrap_content"
app:description="@string/display_options_head_lock" />

<com.igalia.wolvic.ui.views.settings.SwitchSetting
android:id="@+id/windowMovementSwitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:description="@string/display_options_windows_can_move" />

</LinearLayout>
</com.igalia.wolvic.ui.views.CustomScrollView>

Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-da/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1679,7 +1679,6 @@ the Select` button. When clicked it closes all the previously selected tabs -->
\n
\nVIGTIGT: Medmindre du bruger Sync, vil den nye Wolvic-app ikke have dine bogmærker og faner.</string>
<string name="developer_options_center_windows">Centrer vinduer vertikalt</string>
<string name="display_options_windows_can_move">Træk for at flytte vinduer</string>
<string name="controller_options_haptic_feedback">Haptisk feedback</string>
<string name="security_options_permission_fine_location_warning">Wolvic kan kun få din omtrentlige placering. Dette kan ændres i systemindstillingerne.</string>
<string name="voice_input_start">Hvad vil du gerne have input til?</string>
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/res/values-en-rGB/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -444,10 +444,6 @@
and is used to customize if we use passthrough mode when the app starts. -->
<string name="display_options_start_with_passthrough">Start with Passthrough Mode</string>

<!-- This string labels an On/Off switch in the 'Display Options' dialog and is used to
customize if windows can be moved. Enabling it adds a Move button to the navigation bar. -->
<string name="display_options_windows_can_move">Drag to move windows</string>

<!-- This string labels an On/Off switch in the 'Display Options' dialog
and is used to customize if we use sound effects when interacting with app. -->
<string name="display_options_sound_effect">Use Sound Effects</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-es-rES/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1789,7 +1789,6 @@ the Select` button. When clicked it closes all the previously selected tabs -->
<string name="display_options_start_with_passthrough">Usar el modo Passthrough al iniciar</string>
<string name="tray_wifi_unavailable_ssid">SSID no disponible</string>
<string name="voice_input_start">¿Qué te gustaría introducir?</string>
<string name="display_options_windows_can_move">Las ventanas se pueden mover</string>
<string name="display_options_latin_auto_complete">Autocompletado con el teclado latino</string>
<string name="display_options_head_lock">Activar Head Lock</string>
<string name="controller_options_haptic_feedback">Feedback táctil</string>
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1334,10 +1334,6 @@
and is used to customize if we use passthrough mode when the app starts. -->
<string name="display_options_start_with_passthrough">Iniciar en modo Passthrough</string>

<!-- This string labels an On/Off switch in the 'Display Options' dialog and is used to
customize if windows can be moved. Enabling it adds a Move button to the navigation bar. -->
<string name="display_options_windows_can_move">Las ventanas pueden moverse</string>

<!-- This string labels an On/Off switch in the 'Display Options' dialog
and is used to customize if we use sound effects when interacting with app. -->
<string name="display_options_sound_effect">Usar efectos sonoros</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-fi/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1563,7 +1563,6 @@ the Select` button. When clicked it closes all the previously selected tabs -->
<string name="developer_options_ua_vr">VR</string>
<string name="developer_options_center_windows">Keskitä ikkunat pystysuoraan</string>
<string name="display_options_head_lock">Ota päälukko käyttöön</string>
<string name="display_options_windows_can_move">Siirrä ikkunaa raahamalla</string>
<string name="display_options_sound_effect">Käytä äänitehosteita</string>
<string name="display_options_latin_auto_complete">Latinalaisen näppäimistön automaattinen täydennys</string>
<string name="display_options_windows_distance">Ikkunan etäisyys</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1805,7 +1805,6 @@ the Select` button. When clicked it closes all the previously selected tabs -->
<string name="experimental_features">Fonctionnalités expérimentales</string>
<string name="controller_options_haptic_feedback">Retour haptique</string>
<string name="developer_options_center_windows">Centrer les fenêtres verticalement</string>
<string name="display_options_windows_can_move">Glisser pour déplacer les fenêtres</string>
<string name="fxa_account_options_device_name">Nom de l\'appareil</string>
<string name="device_name">%1$s sur %2$s</string>
<string name="permission_rationale_title">Permissions supplémentaires</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-gl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,6 @@
<string name="history_context_add_bookmarks">Engadir aos marcadores</string>
<string name="history_context_remove_bookmarks">Eliminar dos marcadores</string>
<string name="download_context_delete">Borrar</string>
<string name="display_options_windows_can_move">As xanelas poden moverse</string>
<string name="display_options_sound_effect">Usar efectos de son</string>
<string name="display_options_head_lock">Activar Head Lock</string>
<string name="display_options_windows_distance">Distancia das xanelas</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1688,7 +1688,6 @@ the Select` button. When clicked it closes all the previously selected tabs -->
\n\t•Wolvicの一部の機能はウェブ情報サービスを利用しています。そのサービスの信憑性やエラーの有無は保証できません。この機能に関する詳細(ウェブ情報サービスを利用する機能を不有効にする方法なども含み)は以下の利用規約に記述されています。</string>
<string name="terms_service_subtitle_2">Wolvicウェブ情報サービス</string>
<string name="developer_options_center_windows">ウィンドウを上下中央揃えにする</string>
<string name="display_options_windows_can_move">ウィンドウのドラッグを有効にする</string>
<string name="display_options_sound_effect">効果音を使う</string>
<string name="display_options_latin_auto_complete">ラテン文字キーボード入力の自動補完</string>
<string name="display_options_head_lock">ヘッドロックを有効にする</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-ko/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1796,7 +1796,6 @@ the Select` button. When clicked it closes all the previously selected tabs -->
<string name="video_mode_3d_top_bottom">3D 상하 화면</string>
<string name="clear_user_data_dialog_text">%1$s이 초기화 됩니다. 동기화하지 않은 경우, 저장된 로그인 정보, 방문 기록과 북마크를 포함한 모든 데이터가 완전히 삭제됩니다. %1$s은 초기화가 완료된 후 자동으로 종료됩니다. 계속하시겠습니까?</string>
<string name="security_options_use_system_root_ca">시스템에서 신뢰할 수 있는 루트 인증서 사용</string>
<string name="display_options_windows_can_move">드래그로 창 이동하기</string>
<string name="display_options_latin_auto_complete">라틴어 키보드 입력 시 자동 완성</string>
<string name="display_options_windows_distance">창 간 거리</string>
<string name="controller_options_haptic_feedback">햅틱 피드백</string>
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -768,7 +768,6 @@
<string name="device_name">%1$s em %2$s</string>
<string name="move_tooltip">Mover</string>
<string name="developer_options_center_windows">Centralizar Janelas Verticalmente</string>
<string name="display_options_windows_can_move">Arraste para mover janelas</string>
<string name="display_options_sound_effect">Usar efeitos sonoros</string>
<string name="display_options_latin_auto_complete">Teclado em Latim com Autocompletar</string>
<string name="display_options_head_lock">Habilitar bloqueio de cabeça</string>
Expand Down
Loading
Loading