diff --git a/app/src/common/shared/com/igalia/wolvic/ui/adapters/Bookmark.java b/app/src/common/shared/com/igalia/wolvic/ui/adapters/Bookmark.java index 829b0fa84eb..ee52ac6ed7c 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/adapters/Bookmark.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/adapters/Bookmark.java @@ -1,7 +1,5 @@ package com.igalia.wolvic.ui.adapters; -import android.util.Log; - import androidx.annotation.NonNull; import java.util.ArrayList; @@ -27,11 +25,6 @@ public enum Type { private Type mType; private boolean mHasChildren; - public Bookmark(String title, String url) { - mTitle = title; - mURL = url; - } - public Bookmark(@NonNull BookmarkNode node, int level, boolean isExpanded) { mIsExpanded = isExpanded; mLevel = level; @@ -138,28 +131,6 @@ private static List getDisplayListTree(@NonNull List boo return children; } - /*public static List getBookmarkItems(@NonNull List bookmarkNodes) { - Log.e("New Tab", "Bookmark nodes size: " + bookmarkNodes.size()); - - ArrayList bookmarkItems = new ArrayList<>(); - - for (BookmarkNode node : bookmarkNodes) { - if (node.getType() == BookmarkNodeType.ITEM) { - //if (node.getTitle() != null) { - //if (node.getType() != BookmarkNodeType.FOLDER && node.getTitle() != null) { - Log.e("New Tab", "Bookmark node's item type recognized"); - Bookmark bookmark = new Bookmark(node, 0, false); - bookmarkItems.add(bookmark); - } else { - Log.e("New Tab", "Not item type. Real type: " + node.getType()); - } - } - - Log.e("New Tab", "Bookmark items size: " + bookmarkItems.size()); - - return bookmarkItems; - }*/ - /** * Traverses the current display list looking for opened folders * @param displayList diff --git a/app/src/common/shared/com/igalia/wolvic/ui/adapters/BookmarkAdapter.java b/app/src/common/shared/com/igalia/wolvic/ui/adapters/BookmarkAdapter.java index 7666512d47d..ac271eff20e 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/adapters/BookmarkAdapter.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/adapters/BookmarkAdapter.java @@ -339,6 +339,7 @@ static class BookmarkViewHolder extends RecyclerView.ViewHolder { } static class BookmarkFolderViewHolder extends RecyclerView.ViewHolder { + final BookmarkItemFolderBinding binding; BookmarkFolderViewHolder(@NonNull BookmarkItemFolderBinding binding) { diff --git a/app/src/common/shared/com/igalia/wolvic/ui/adapters/NewTabAdapter.java b/app/src/common/shared/com/igalia/wolvic/ui/adapters/NewTabAdapter.java deleted file mode 100644 index 2c30ee803fc..00000000000 --- a/app/src/common/shared/com/igalia/wolvic/ui/adapters/NewTabAdapter.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.igalia.wolvic.ui.adapters; - -import android.annotation.SuppressLint; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.RecyclerView; - -import com.igalia.wolvic.R; -import com.igalia.wolvic.browser.engine.SessionStore; -import com.igalia.wolvic.databinding.BookmarkItemInNewTabBinding; -import com.igalia.wolvic.ui.callbacks.BookmarkItemCallback; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import mozilla.appservices.places.BookmarkRoot; -import mozilla.components.browser.icons.IconRequest; -import mozilla.components.concept.storage.BookmarkNode; - -// Initial implementation: Show, add, delete bookmarks in New Tab page. -// TODO: Implement data structure and logics to handle pages in New Tab that are separate from bookmarks. -public class NewTabAdapter extends RecyclerView.Adapter { - - private List bookmarkItems; - - @Nullable - private final BookmarkItemCallback mBookmarkItemCallback; - - public NewTabAdapter(@Nullable BookmarkItemCallback clickCallback) { - mBookmarkItemCallback = clickCallback; - } - - public void setBookmarkListInNewTab(final List bookmarkNodes) { - //bookmarkItems = Bookmark.getBookmarkItems(bookmarkNodes); - - List newDisplayList; - bookmarkItems = new ArrayList<>(); - newDisplayList = Bookmark.getDisplayListTree(bookmarkNodes, Collections.singletonList(BookmarkRoot.Mobile.getId())); - for (Bookmark node : newDisplayList) { - if (node.getType() == Bookmark.Type.ITEM) { - bookmarkItems.add(node); - } - } - - notifyItemRangeInserted(0, bookmarkItems.size()); - } - - public void removeItem(Bookmark aBookmark) { - bookmarkItems.remove(aBookmark); - notifyDataSetChanged(); - } - - public void addItem(String title, String url) { - if (!url.startsWith("http://") || !url.startsWith("https://")) { - url = "https://" + url; - } - SessionStore.get().getBookmarkStore().addBookmark(url, title); - Bookmark item = new Bookmark(title, url); - bookmarkItems.add(item); - notifyDataSetChanged(); - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - BookmarkItemInNewTabBinding binding = DataBindingUtil - .inflate(LayoutInflater.from(parent.getContext()), R.layout.bookmark_item_in_new_tab, - parent, false); - - binding.setCallback(mBookmarkItemCallback); - binding.setIsHovered(false); - - return new BookmarkViewHolder(binding); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - Bookmark item = bookmarkItems.get(position); - - BookmarkViewHolder bookmarkHolder = (BookmarkViewHolder) holder; - BookmarkItemInNewTabBinding binding = bookmarkHolder.binding; - binding.setItem(item); - - SessionStore.get().getBrowserIcons().loadIntoView(binding.favicon, item.getUrl(), IconRequest.Size.DEFAULT); - - binding.layout.setOnHoverListener((view, motionEvent) -> { - int ev = motionEvent.getActionMasked(); - switch (ev) { - case MotionEvent.ACTION_HOVER_ENTER: - binding.setIsHovered(true); - view.getBackground().setState(new int[]{android.R.attr.state_hovered}); - view.postInvalidate(); - return false; - - case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_HOVER_EXIT: - view.getBackground().setState(new int[]{android.R.attr.state_active}); - binding.setIsHovered(false); - view.postInvalidate(); - return false; - } - - return false; - }); - binding.layout.setOnTouchListener((view, motionEvent) -> { - int ev = motionEvent.getActionMasked(); - switch (ev) { - case MotionEvent.ACTION_UP: - return false; - - case MotionEvent.ACTION_DOWN: - binding.trash.setImageState(new int[]{android.R.attr.state_active},false); - binding.setIsHovered(true); - return false; - - case MotionEvent.ACTION_CANCEL: - binding.setIsHovered(false); - return false; - } - return false; - }); - binding.trash.setOnHoverListener(mIconHoverListener); - binding.trash.setOnTouchListener((view, motionEvent) -> { - binding.setIsHovered(true); - int ev = motionEvent.getActionMasked(); - switch (ev) { - case MotionEvent.ACTION_UP: - if (mBookmarkItemCallback != null) { - mBookmarkItemCallback.onDelete(view, binding.getItem()); - } - binding.trash.setImageState(new int[]{android.R.attr.state_active},true); - return true; - - case MotionEvent.ACTION_DOWN: - binding.trash.setImageState(new int[]{android.R.attr.state_pressed},true); - return true; - - case MotionEvent.ACTION_CANCEL: - binding.setIsHovered(false); - binding.trash.setImageState(new int[]{android.R.attr.state_active},true); - return false; - } - return false; - }); - } - - @Override - public int getItemCount() { - return bookmarkItems == null ? 0 : bookmarkItems.size(); - } - - static class BookmarkViewHolder extends RecyclerView.ViewHolder { - - final BookmarkItemInNewTabBinding binding; - - BookmarkViewHolder(@NonNull BookmarkItemInNewTabBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - private View.OnHoverListener mIconHoverListener = (view, motionEvent) -> { - ImageView icon = (ImageView) view; - int ev = motionEvent.getActionMasked(); - switch (ev) { - case MotionEvent.ACTION_HOVER_ENTER: - icon.setImageState(new int[]{android.R.attr.state_hovered}, true); - return false; - - case MotionEvent.ACTION_HOVER_EXIT: - icon.setImageState(new int[]{android.R.attr.state_active}, true); - return false; - } - - return false; - }; -} \ No newline at end of file diff --git a/app/src/common/shared/com/igalia/wolvic/ui/viewmodel/WindowViewModel.java b/app/src/common/shared/com/igalia/wolvic/ui/viewmodel/WindowViewModel.java index d707cd93936..9a09be8bda5 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/viewmodel/WindowViewModel.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/viewmodel/WindowViewModel.java @@ -49,6 +49,7 @@ public class WindowViewModel extends AndroidViewModel { private MutableLiveData isActiveWindow; private MediatorLiveData isTitleBarVisible; private MutableLiveData isLibraryVisible; + private MutableLiveData isNewTabVisible; private MutableLiveData isLoading; private MutableLiveData isMicrophoneEnabled; private MutableLiveData isBookmarked; @@ -129,6 +130,7 @@ public WindowViewModel(Application application) { isTitleBarVisible.setValue(new ObservableBoolean(true)); isLibraryVisible = new MutableLiveData<>(new ObservableBoolean(false)); + isNewTabVisible = new MutableLiveData<>(new ObservableBoolean(false)); isLoading = new MutableLiveData<>(new ObservableBoolean(false)); isMicrophoneEnabled = new MutableLiveData<>(new ObservableBoolean(true)); @@ -152,6 +154,7 @@ public WindowViewModel(Application application) { isInsecureVisible.addSource(isInsecure, mIsInsecureVisibleObserver); isInsecureVisible.addSource(isPrivateSession, mIsInsecureVisibleObserver); isInsecureVisible.addSource(isLibraryVisible, mIsInsecureVisibleObserver); + isInsecureVisible.addSource(isNewTabVisible, mIsInsecureVisibleObserver); isInsecureVisible.setValue(new ObservableBoolean(false)); isMediaAvailable = new MutableLiveData<>(new ObservableBoolean(false)); @@ -173,6 +176,7 @@ public WindowViewModel(Application application) { isUrlBarButtonsVisible.addSource(isPopUpAvailable, mIsUrlBarButtonsVisibleObserver); isUrlBarButtonsVisible.addSource(isWebXRUsed, mIsUrlBarButtonsVisibleObserver); isUrlBarButtonsVisible.addSource(isLibraryVisible, mIsUrlBarButtonsVisibleObserver); + isUrlBarButtonsVisible.addSource(isNewTabVisible, mIsUrlBarButtonsVisibleObserver); isUrlBarButtonsVisible.addSource(isFocused, mIsUrlBarButtonsVisibleObserver); isUrlBarButtonsVisible.setValue(new ObservableBoolean(false)); @@ -231,6 +235,9 @@ public void onChanged(Spannable aUrl) { if (isLibraryVisible.getValue().get()) { url = getApplication().getString(R.string.url_library_title); + } else if (isNewTabVisible.getValue().get()) { + url = getApplication().getString(R.string.url_new_tab_title); + } else { if (UrlUtils.isPrivateAboutPage(getApplication(), url) || (UrlUtils.isDataUri(url) && isPrivateSession.getValue().get())) { @@ -261,6 +268,7 @@ public void onChanged(ObservableBoolean o) { UrlUtils.isFileUri(aUrl) || UrlUtils.isHomeUri(getApplication(), aUrl) || isLibraryVisible.getValue().get() || + isNewTabVisible.getValue().get() || UrlUtils.isBlankUri(getApplication(), aUrl)) { isInsecureVisible.postValue(new ObservableBoolean(false)); @@ -282,6 +290,7 @@ public void onChanged(Spannable aUrl) { (UrlUtils.isDataUri(url) && isPrivateSession.getValue().get()) || UrlUtils.isHomeUri(getApplication(), aUrl.toString()) || isLibraryVisible.getValue().get() || + isNewTabVisible.getValue().get() || UrlUtils.isBlankUri(getApplication(), aUrl.toString())) { navigationBarUrl.postValue(""); @@ -298,6 +307,7 @@ public void onChanged(ObservableBoolean o) { isUrlBarButtonsVisible.postValue(new ObservableBoolean( !isFocused.getValue().get() && !isLibraryVisible.getValue().get() && + !isNewTabVisible.getValue().get() && !UrlUtils.isContentFeed(getApplication(), aUrl) && !UrlUtils.isPrivateAboutPage(getApplication(), aUrl) && (URLUtil.isHttpUrl(aUrl) || URLUtil.isHttpsUrl(aUrl)) && @@ -317,6 +327,7 @@ public void onChanged(ObservableBoolean o) { public void onChanged(ObservableBoolean o) { isUrlBarIconsVisible.postValue(new ObservableBoolean( !isLibraryVisible.getValue().get() && + !isNewTabVisible.getValue().get() && (isLoading.getValue().get() || isInsecureVisible.getValue().get()) )); @@ -430,6 +441,9 @@ private String getHintValue() { if (isLibraryVisible.getValue().get()) { return getApplication().getString(R.string.url_library_title); + } else if (isNewTabVisible.getValue().get()) { + return getApplication().getString(R.string.url_new_tab_title); + } else { return getApplication().getString(R.string.search_placeholder); } @@ -577,6 +591,16 @@ public MutableLiveData getIsLibraryVisible() { return isLibraryVisible; } + public void setIsNewTabVisible(boolean isNewTabVisible) { + this.isNewTabVisible.postValue(new ObservableBoolean(isNewTabVisible)); + this.url.postValue(this.getUrl().getValue()); + } + + @NonNull + public MutableLiveData getIsNewTabVisible() { + return isNewTabVisible; + } + @NonNull public MutableLiveData getIsLoading() { return isLoading; diff --git a/app/src/common/shared/com/igalia/wolvic/ui/views/NewTabView.java b/app/src/common/shared/com/igalia/wolvic/ui/views/NewTabView.java index e85d2dfa4f4..3bedd8eca0b 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/views/NewTabView.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/views/NewTabView.java @@ -1,35 +1,16 @@ package com.igalia.wolvic.ui.views; -import java.util.List; -import java.util.concurrent.Executor; - import android.annotation.SuppressLint; import android.content.Context; -import android.os.Build; -import android.util.Log; import android.view.LayoutInflater; -import android.view.View; -import android.widget.EditText; import android.widget.FrameLayout; -import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.LinearLayoutManager; import com.igalia.wolvic.R; import com.igalia.wolvic.VRBrowserActivity; -import com.igalia.wolvic.VRBrowserApplication; -import com.igalia.wolvic.browser.engine.Session; -import com.igalia.wolvic.browser.engine.SessionStore; import com.igalia.wolvic.databinding.NewTabBinding; -import com.igalia.wolvic.ui.adapters.Bookmark; -import com.igalia.wolvic.ui.adapters.NewTabAdapter; -import com.igalia.wolvic.ui.callbacks.BookmarkItemCallback; import com.igalia.wolvic.ui.widgets.WidgetManagerDelegate; -import com.igalia.wolvic.ui.widgets.WindowWidget; - -import mozilla.appservices.places.BookmarkRoot; -import mozilla.components.concept.storage.BookmarkNode; public class NewTabView extends FrameLayout { @@ -37,8 +18,6 @@ public class NewTabView extends FrameLayout { private NewTabBinding mBinding; - private NewTabAdapter mNewTabAdapter; - public NewTabView(Context context) { super(context); initialize(); @@ -58,105 +37,6 @@ public void updateUI() { mBinding = DataBindingUtil.inflate(inflater, R.layout.new_tab, this, true); mBinding.setLifecycleOwner((VRBrowserActivity)getContext()); - mBinding.bookmarkAddView.setVisibility(GONE); - - mNewTabAdapter = new NewTabAdapter(mBookmarkItemCallback); - mBinding.bookmarksList.setAdapter(mNewTabAdapter); - LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false); - mBinding.bookmarksList.setLayoutManager(layoutManager); - mBinding.bookmarksList.setOnTouchListener((v, event) -> { - v.requestFocusFromTouch(); - return false; - }); - mBinding.bookmarksList.setHasFixedSize(true); - mBinding.bookmarksList.setItemViewCacheSize(20); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { - mBinding.bookmarksList.setDrawingCacheEnabled(true); - mBinding.bookmarksList.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); - } - - mBinding.bookmarkAdd.setOnClickListener(view -> { - mBinding.bookmarkAddButton.requestFocusFromTouch(); - showAddBookmarkView(); - }); - mBinding.executePendingBindings(); - - updateBookmarks(); - - setOnTouchListener((v, event) -> { - v.requestFocusFromTouch(); - return false; - }); - - } - - private void showAddBookmarkView() { - mBinding.bookmarkAddView.setVisibility(VISIBLE); - mBinding.main.setAlpha(0.5F); - - mBinding.bookmarkAddCancelButton.setOnClickListener(view -> { - mBinding.bookmarkAddView.setVisibility(GONE); - mBinding.main.setAlpha(1F); - }); - - mBinding.bookmarkAddButton.setOnClickListener(view -> { - String title = mBinding.bookmarkTitle.getText().toString(); - String url = mBinding.bookmarkUrl.getText().toString(); - - if (!title.isEmpty() && !url.isEmpty()) { - mNewTabAdapter.addItem(title, url); - } - - mBinding.bookmarkAddView.setVisibility(GONE); - mBinding.main.setAlpha(1F); - }); } - - private void updateBookmarks() { - Executor executor = ((VRBrowserApplication)getContext().getApplicationContext()).getExecutors().mainThread(); - - SessionStore.get().getBookmarkStore().getTree(BookmarkRoot.Root.getId(), true). - thenAcceptAsync(this::showBookmarks, executor). - exceptionally(throwable -> { - Log.d("NewTab", "Error getting bookmarks: " + throwable.getLocalizedMessage()); - throwable.printStackTrace(); - return null; - }); - } - - private void showBookmarks(List aBookmarks) { - mNewTabAdapter.setBookmarkListInNewTab(aBookmarks); - mBinding.executePendingBindings(); - } - - private final BookmarkItemCallback mBookmarkItemCallback = new BookmarkItemCallback() { - @Override - public void onClick(@NonNull View view, @NonNull Bookmark item) { - mBinding.bookmarksList.requestFocusFromTouch(); - - Session session = SessionStore.get().getActiveSession(); - session.loadUri(item.getUrl()); - - WindowWidget window = mWidgetManager.getFocusedWindow(); - window.hideNewTab(true); - } - - @Override - public void onDelete(@NonNull View view, @NonNull Bookmark item) { - mBinding.bookmarksList.requestFocusFromTouch(); - SessionStore.get().getBookmarkStore().deleteBookmarkById(item.getGuid()); - mNewTabAdapter.removeItem(item); - } - - @Override - public void onMore(@NonNull View view, @NonNull Bookmark item) { - - } - - @Override - public void onFolderOpened(@NonNull Bookmark item) { - - } - }; } \ No newline at end of file diff --git a/app/src/common/shared/com/igalia/wolvic/ui/views/library/BookmarksView.java b/app/src/common/shared/com/igalia/wolvic/ui/views/library/BookmarksView.java index 40c57102074..55b4f50188d 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/views/library/BookmarksView.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/views/library/BookmarksView.java @@ -111,7 +111,6 @@ public void updateUI() { mBinding.setBookmarksViewModel(mViewModel); mBinding.setCallback(mBookmarksCallback); mBookmarkAdapter = new BookmarkAdapter(mBookmarkItemCallback, getContext()); - mBookmarkAdapter = new BookmarkAdapter(mBookmarkItemCallback, getContext()); mBinding.bookmarksList.setAdapter(mBookmarkAdapter); mBinding.bookmarksList.setOnTouchListener((v, event) -> { v.requestFocusFromTouch(); diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java index 626e365ce98..49c98c94e53 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java @@ -527,22 +527,28 @@ public void showPanel(@Windows.PanelType int panelType) { } public void showNewTab() { + hidePanel(); if (mNewTab != null) { setView(mNewTab, true); mViewModel.setIsFindInPage(false); - final Runnable firstDrawCallback = mFirstDrawCallback; + mViewModel.setIsNewTabVisible(true); onFirstContentfulPaint(mSession.getWSession()); - mRestoreFirstPaint = () -> { - setFirstPaintReady(false); - setFirstDrawCallback(firstDrawCallback); - if (mWidgetManager != null) { + if (mRestoreFirstPaint == null && !isFirstPaintReady() && (mFirstDrawCallback != null) && (mSurface != null)) { + final Runnable firstDrawCallback = mFirstDrawCallback; + onFirstContentfulPaint(mSession.getWSession()); + mRestoreFirstPaint = () -> { + setFirstPaintReady(false); + setFirstDrawCallback(firstDrawCallback); + if (mWidgetManager != null) { mWidgetManager.updateWidget(WindowWidget.this); - } - }; + } + }; + } } } private void showPanel(@Windows.PanelType int panelType, boolean switchSurface) { + hideNewTab(); if (mLibrary != null) { if (mView == null) { setView(mLibrary, switchSurface); @@ -583,7 +589,14 @@ private void hidePanel(boolean switchSurface) { } } - public void hideNewTab(boolean switchSurface) { + public void hideNewTab() { + if (mViewModel.getIsNewTabVisible().getValue().get()) { + hideNewTab(true); + mViewModel.setIsNewTabVisible(false); + } + } + + private void hideNewTab(boolean switchSurface) { if (mView != null && mNewTab != null) { unsetView(mNewTab, switchSurface); } @@ -2031,32 +2044,27 @@ WResult onLoadRequest(WSession aSession, @NonNull LoadRequest aReq Uri uri = Uri.parse(aRequest.uri); if (UrlUtils.isAboutPage(uri.toString())) { if(UrlUtils.isBookmarksUrl(uri.toString())) { - hideNewTab(true); showPanel(Windows.BOOKMARKS); } else if (UrlUtils.isHistoryUrl(uri.toString())) { - hideNewTab(true); showPanel(Windows.HISTORY); } else if (UrlUtils.isDownloadsUrl(uri.toString())) { - hideNewTab(true); showPanel(Windows.DOWNLOADS); } else if (UrlUtils.isAddonsUrl(uri.toString())) { - hideNewTab(true); showPanel(Windows.ADDONS); } else if (UrlUtils.isNewTabUrl(uri.toString())) { showNewTab(); } else { - hideNewTab(true); + hideNewTab(); hideLibraryPanel(); - } } else { - hideNewTab(true); + hideNewTab(); hideLibraryPanel(); } diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/settings/DisplayOptionsView.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/settings/DisplayOptionsView.java index 66f1a1e410f..597f0816f32 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/settings/DisplayOptionsView.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/settings/DisplayOptionsView.java @@ -21,6 +21,9 @@ import com.igalia.wolvic.ui.views.settings.SwitchSetting; import com.igalia.wolvic.ui.widgets.WidgetManagerDelegate; import com.igalia.wolvic.ui.widgets.WidgetPlacement; +import com.igalia.wolvic.utils.UrlUtils; + +import java.util.Objects; class DisplayOptionsView extends SettingsView { @@ -394,19 +397,19 @@ private void setHomepage(int checkedId, boolean doApply) { if (checkedId == 0) { mBinding.homepageEdit.setVisibility(View.GONE); - SettingsStore.getInstance(getContext()).setHomepage(mDefaultHomepageUrl); + SettingsStore.getInstance(getContext()).setHomepage(UrlUtils.ABOUT_NEWTAB); } else if (checkedId == 1) { mBinding.homepageEdit.setVisibility(View.GONE); - SettingsStore.getInstance(getContext()).setHomepage("about://newtab"); + SettingsStore.getInstance(getContext()).setHomepage(mDefaultHomepageUrl); } else if (checkedId == 2) { mBinding.homepageEdit.setVisibility(View.VISIBLE); } } private int getHomepageId(String homepage) { - if (homepage == getContext().getString(R.string.HOMEPAGE_URL)) { + if (Objects.equals(homepage, UrlUtils.ABOUT_NEWTAB)) { return 0; - } else if (homepage == "about://newtab") { + } else if (Objects.equals(homepage, getContext().getString(R.string.HOMEPAGE_URL))) { return 1; } else { return 2; diff --git a/app/src/main/res/layout/new_tab.xml b/app/src/main/res/layout/new_tab.xml index cddca6cc342..79811b6337f 100644 --- a/app/src/main/res/layout/new_tab.xml +++ b/app/src/main/res/layout/new_tab.xml @@ -1,93 +1,18 @@ - - - + android:layout_height="match_parent" + android:background="@color/void_color"> - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="128dp" + android:layout_height="128dp" + android:layout_gravity="center" + app:srcCompat="@drawable/ff_logo" /> - \ No newline at end of file diff --git a/app/src/main/res/values/options_values.xml b/app/src/main/res/values/options_values.xml index 12245204ad8..26abe7b9048 100644 --- a/app/src/main/res/values/options_values.xml +++ b/app/src/main/res/values/options_values.xml @@ -87,8 +87,8 @@ - @string/developer_options_homepage_wolvic @string/developer_options_homepage_new_tab + @string/developer_options_homepage_wolvic @string/developer_options_homepage_other diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7790fa10273..edc3aea3111 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -608,7 +608,7 @@ 4x - Wolvic + wolvic.com New Tab @@ -1970,6 +1970,9 @@ Library + + New Tab + Clear