mirror of https://github.com/kurisufriend/Clover
instead of immediately guiding the user to the sites setup, show the empty state first and guide them towards the site setup. the introduction controllers were a big buggy anyway, and this should help getting the context of the app right the first time. also rework some strings to be friendlier and less redundant.crowdin
parent
2b6c0c299a
commit
0bdf4b7296
@ -1,38 +0,0 @@ |
||||
/* |
||||
* Clover - 4chan browser https://github.com/Floens/Clover/
|
||||
* Copyright (C) 2014 Floens |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, either version 3 of the License, or |
||||
* (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
package org.floens.chan.core.presenter; |
||||
|
||||
public class SetupPresenter { |
||||
private Callback callback; |
||||
|
||||
public void create(Callback callback) { |
||||
this.callback = callback; |
||||
|
||||
callback.moveToIntro(); |
||||
} |
||||
|
||||
public void startClicked() { |
||||
callback.moveToSiteSetup(); |
||||
} |
||||
|
||||
public interface Callback { |
||||
void moveToIntro(); |
||||
|
||||
void moveToSiteSetup(); |
||||
} |
||||
} |
@ -1,51 +0,0 @@ |
||||
/* |
||||
* Clover - 4chan browser https://github.com/Floens/Clover/
|
||||
* Copyright (C) 2014 Floens |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, either version 3 of the License, or |
||||
* (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
package org.floens.chan.ui.controller; |
||||
|
||||
import android.content.Context; |
||||
import android.view.View; |
||||
import android.widget.Button; |
||||
|
||||
import org.floens.chan.R; |
||||
import org.floens.chan.controller.Controller; |
||||
|
||||
public class IntroController extends Controller implements View.OnClickListener { |
||||
private Button start; |
||||
|
||||
public IntroController(Context context) { |
||||
super(context); |
||||
} |
||||
|
||||
@Override |
||||
public void onCreate() { |
||||
super.onCreate(); |
||||
|
||||
view = inflateRes(R.layout.controller_intro); |
||||
|
||||
start = view.findViewById(R.id.start); |
||||
start.setOnClickListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View v) { |
||||
if (v == start) { |
||||
((SitesSetupController) presentedByController).onIntroDismissed(); |
||||
stopPresenting(); |
||||
} |
||||
} |
||||
} |
@ -1,84 +0,0 @@ |
||||
/* |
||||
* Clover - 4chan browser https://github.com/Floens/Clover/
|
||||
* Copyright (C) 2014 Floens |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, either version 3 of the License, or |
||||
* (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
package org.floens.chan.ui.controller; |
||||
|
||||
import android.content.Context; |
||||
import android.view.animation.DecelerateInterpolator; |
||||
|
||||
import org.floens.chan.R; |
||||
import org.floens.chan.controller.Controller; |
||||
import org.floens.chan.controller.transition.FadeInTransition; |
||||
import org.floens.chan.core.presenter.SetupPresenter; |
||||
import org.floens.chan.ui.theme.ThemeHelper; |
||||
import org.floens.chan.ui.toolbar.Toolbar; |
||||
|
||||
public class SetupController extends ToolbarNavigationController implements SetupPresenter.Callback { |
||||
private SetupPresenter presenter; |
||||
|
||||
public SetupController(Context context) { |
||||
super(context); |
||||
} |
||||
|
||||
@Override |
||||
public void onCreate() { |
||||
super.onCreate(); |
||||
|
||||
view = inflateRes(R.layout.controller_navigation_setup); |
||||
container = view.findViewById(R.id.container); |
||||
toolbar = view.findViewById(R.id.toolbar); |
||||
toolbar.setArrowMenuIconShown(false); |
||||
toolbar.setBackgroundColor(ThemeHelper.getInstance().getTheme().primaryColor.color); |
||||
toolbar.setCallback(new Toolbar.SimpleToolbarCallback() { |
||||
@Override |
||||
public void onMenuOrBackClicked(boolean isArrow) { |
||||
} |
||||
}); |
||||
toolbar.setAlpha(0f); |
||||
requireSpaceForToolbar = false; |
||||
|
||||
presenter = new SetupPresenter(); |
||||
presenter.create(this); |
||||
} |
||||
|
||||
public SetupPresenter getPresenter() { |
||||
return presenter; |
||||
} |
||||
|
||||
@Override |
||||
public void moveToIntro() { |
||||
replaceController(new IntroController(context), false); |
||||
} |
||||
|
||||
@Override |
||||
public void moveToSiteSetup() { |
||||
SitesSetupController sitesSetupController = new SitesSetupController(context); |
||||
sitesSetupController.showDoneCheckmark(); |
||||
replaceController(sitesSetupController, true); |
||||
} |
||||
|
||||
private void replaceController(Controller to, boolean showToolbar) { |
||||
if (blockingInput || toolbar.isTransitioning()) return; |
||||
|
||||
boolean animated = getTop() != null; |
||||
|
||||
transition(getTop(), to, true, animated ? new FadeInTransition() : null); |
||||
|
||||
toolbar.animate().alpha(showToolbar ? 1f : 0f) |
||||
.setInterpolator(new DecelerateInterpolator(2f)).start(); |
||||
} |
||||
} |
Before Width: | Height: | Size: 46 KiB |
@ -1,90 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?><!-- |
||||
Clover - 4chan browser https://github.com/Floens/Clover/ |
||||
Copyright (C) 2014 Floens |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
--> |
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:background="?backcolor" |
||||
android:orientation="vertical"> |
||||
|
||||
<ImageView |
||||
android:id="@+id/logo" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="0dp" |
||||
android:layout_margin="16dp" |
||||
android:layout_marginBottom="8dp" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:layout_marginTop="8dp" |
||||
android:layout_weight="1" |
||||
android:gravity="center" |
||||
android:src="@drawable/logo" |
||||
app:layout_constraintBottom_toTopOf="@+id/guideline" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" |
||||
app:layout_constraintTop_toTopOf="parent" |
||||
app:layout_constraintVertical_bias="1.0" /> |
||||
|
||||
<android.support.constraint.Guideline |
||||
android:id="@+id/guideline" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="0dp" |
||||
android:orientation="horizontal" |
||||
app:layout_constraintBottom_toBottomOf="parent" |
||||
app:layout_constraintGuide_percent="0.45" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/title" |
||||
style="@style/TextAppearance.AppCompat.Display1" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:layout_marginTop="8dp" |
||||
android:text="@string/intro_title" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" |
||||
app:layout_constraintTop_toTopOf="@+id/guideline" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/content" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:layout_marginTop="8dp" |
||||
android:text="@string/intro_content" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" |
||||
app:layout_constraintTop_toBottomOf="@+id/title" /> |
||||
|
||||
<Button |
||||
android:id="@+id/start" |
||||
style="@style/Widget.AppCompat.Button" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginBottom="32dp" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:foreground="?selectableItemBackground" |
||||
android:text="@string/intro_start" |
||||
app:layout_constraintBottom_toBottomOf="parent" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" /> |
||||
|
||||
</android.support.constraint.ConstraintLayout> |
@ -0,0 +1,61 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent"> |
||||
|
||||
<TextView |
||||
android:id="@+id/header" |
||||
style="@style/TextAppearance.AppCompat.Headline" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginLeft="8dp" |
||||
android:layout_marginRight="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:layout_marginTop="8dp" |
||||
android:text="@string/thread_empty_setup_title" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" |
||||
app:layout_constraintTop_toTopOf="@+id/guideline" /> |
||||
|
||||
<android.support.constraint.Guideline |
||||
android:id="@+id/guideline" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="horizontal" |
||||
app:layout_constraintGuide_percent="0.5" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/body" |
||||
style="@style/TextAppearance.AppCompat.Subhead" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginLeft="8dp" |
||||
android:layout_marginRight="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:layout_marginTop="8dp" |
||||
android:text="@string/thread_empty_setup_body" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" |
||||
app:layout_constraintTop_toBottomOf="@+id/header" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/feature" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginBottom="16dp" |
||||
android:layout_marginEnd="8dp" |
||||
android:layout_marginLeft="8dp" |
||||
android:layout_marginRight="8dp" |
||||
android:layout_marginStart="8dp" |
||||
android:text="@string/thread_empty_setup_feature" |
||||
android:textSize="50dp" |
||||
app:layout_constraintBottom_toTopOf="@+id/header" |
||||
app:layout_constraintEnd_toEndOf="parent" |
||||
app:layout_constraintStart_toStartOf="parent" |
||||
tools:ignore="SpUsage" /> |
||||
|
||||
</android.support.constraint.ConstraintLayout> |
Loading…
Reference in new issue