Skip to content

Commit

Permalink
added Singleton to save recipe across the app - completed the masterD…
Browse files Browse the repository at this point in the history
…etail view - added onClick select in masterdetail - added ontouch listener to allow fragment swipe in recipe detail view fragment
  • Loading branch information
medyas committed Oct 14, 2018
1 parent c0c639e commit 84eabaa
Show file tree
Hide file tree
Showing 35 changed files with 629 additions and 163 deletions.
4 changes: 2 additions & 2 deletions .idea/assetWizardSettings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ dependencies {
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
androidTestImplementation "android.arch.persistence.room:testing:1.1.1"

// Lifecycle components
// Dagger 2
implementation 'com.google.dagger:dagger:2.17'
annotationProcessor 'com.google.dagger:dagger-compiler:2.17'

// Lifecycle components
implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

Expand Down
32 changes: 19 additions & 13 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
package="ml.medyas.bakingapp">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
android:allowBackup="false"
Expand All @@ -14,25 +14,31 @@
android:supportsRtl="true"
android:theme="@style/AppNoActionBarTheme"
tools:ignore="GoogleAppIndexingWarning">

<activity android:name=".Activities.RecipeActivity" >

<activity android:name=".Activities.RecipeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".Activities.RecipeDetailActivity"
android:parentActivityName=".Activities.RecipeActivity"/>

<activity android:name=".Activities.RecipeDetailViewActivity"
android:parentActivityName=".Activities.RecipeDetailActivity"/>

<activity
android:name=".Activities.RecipeDetailActivity"
android:parentActivityName=".Activities.RecipeActivity" />
<activity
android:name=".Activities.RecipeDetailViewActivity"
android:parentActivityName=".Activities.RecipeDetailActivity" />
<activity android:name=".Activities.SettingsActivity" />
<activity android:name=".Activities.AboutActivity" />

<receiver android:name=".Widget.RecipesWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>

<activity android:name=".Activities.AboutActivity"></activity>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/recipes_widget_info" />
</receiver>
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,26 @@

import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.design.button.MaterialButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;

import com.github.kittinunf.fuel.Fuel;
import com.github.kittinunf.fuel.core.FuelError;
import com.github.kittinunf.fuel.core.Request;
import com.github.kittinunf.fuel.core.Response;
import com.github.kittinunf.result.Result;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import kotlin.Triple;
import ml.medyas.bakingapp.AppSingleton;
import ml.medyas.bakingapp.Classes.NavigationIconClickListener;
import ml.medyas.bakingapp.Classes.RecipeClass;
import ml.medyas.bakingapp.Fragments.LoadDataFragment;
import ml.medyas.bakingapp.Fragments.RecipeFragment;
import ml.medyas.bakingapp.R;

import static ml.medyas.bakingapp.Activities.RecipeDetailActivity.RECIPE_ITEM;
import static ml.medyas.bakingapp.Classes.UtilsClass.getNavigationIconView;
import static ml.medyas.bakingapp.Fragments.LoadDataFragment.LOADED_DATA;

Expand All @@ -45,6 +30,8 @@ public class RecipeActivity extends AppCompatActivity implements RecipeFragment.

NavigationIconClickListener nav;

// singleton

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand All @@ -62,19 +49,22 @@ protected void onCreate(Bundle savedInstanceState) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if (savedInstanceState == null) {
if (!sharedPref.getBoolean(LOADED_DATA, false)) {
Log.d(getClass().getName(), "Loading load fragment");
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new LoadDataFragment())
.commit();
}
else {
Log.d(getClass().getName(), "Loading Recipe fragment");
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new RecipeFragment())
.commit();
}
}
else {
Log.d(getClass().getName(), "Loading Recipe fragment directly");
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new RecipeFragment())
Expand Down Expand Up @@ -102,18 +92,38 @@ public void navMenuClicked(MaterialButton btn) {
}


@Override
public void loadFragment() {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new RecipeFragment())
.commit();
}

@Override
public void onFragmentInteraction(RecipeClass recipes) {
Intent intent = new Intent(this, RecipeDetailActivity.class);
intent.putExtra(RECIPE_ITEM, recipes);
AppSingleton.setSelectedRecipe(recipes);
startActivity(intent);
}

@Override
public void loadFragment(boolean dataLoaded) {
Log.d(getClass().getName(), "finished data load !");
if(dataLoaded) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new RecipeFragment())
.commit();
} else {
Log.d(getClass().getName(), "Failed to load data !");
/*getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, null)
.commit();
*/
Snackbar.make(findViewById(R.id.toolbar), "Could not Load Data", Snackbar.LENGTH_INDEFINITE)
.setAction("Retry", new View.OnClickListener() {
@Override
public void onClick(View view) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new LoadDataFragment())
.commit();
}
});
}
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package ml.medyas.bakingapp.Activities;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import butterknife.BindView;
import butterknife.ButterKnife;
import ml.medyas.bakingapp.AppSingleton;
import ml.medyas.bakingapp.Classes.RecipeClass;
import ml.medyas.bakingapp.Fragments.RecipeDetailFragment;
import ml.medyas.bakingapp.Fragments.RecipeDetailViewFragment;
Expand All @@ -31,7 +34,7 @@ protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
recipe = savedInstanceState.getParcelable(RECIPE_ITEM);
} else {
recipe = getIntent().getExtras().getParcelable(RECIPE_ITEM);
recipe = AppSingleton.getSelectedRecipe();
}

if (findViewById(R.id.right_container) != null) {
Expand Down Expand Up @@ -65,6 +68,20 @@ protected void onSaveInstanceState(Bundle outState) {
@Override
public void onDetailItemClicked(int position) {
if (masterDetail) {
NestedScrollView leftLayout = findViewById(R.id.left_layout);
leftLayout.setLayoutParams( new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
1.0f
));

NestedScrollView rightLayout = findViewById(R.id.right_layout);
rightLayout.setLayoutParams( new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT,
1.0f
));

Fragment frag = new RecipeDetailViewFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(STEPS_ITEM, recipe.getSteps().get(position));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
package ml.medyas.bakingapp.Activities;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.widget.Button;
import android.widget.FrameLayout;

import butterknife.BindView;
import butterknife.ButterKnife;
import ml.medyas.bakingapp.Adapters.OnSwipeTouchListener;
import ml.medyas.bakingapp.AppSingleton;
import ml.medyas.bakingapp.Classes.RecipeClass;
import ml.medyas.bakingapp.Classes.StepsClass;
import ml.medyas.bakingapp.Fragments.RecipeDetailViewFragment;
import ml.medyas.bakingapp.R;

import static ml.medyas.bakingapp.Activities.RecipeDetailActivity.STEPS_ITEM;

public class RecipeDetailViewActivity extends AppCompatActivity {
public class RecipeDetailViewActivity extends AppCompatActivity implements RecipeDetailViewFragment.OnSlideListener{
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.recipe_detail_view_container) FrameLayout container;

private RecipeClass recipe;
private int position;
Expand All @@ -28,7 +30,7 @@ protected void onCreate(Bundle savedInstanceState) {
ButterKnife.bind(this);

if (savedInstanceState == null ) {
recipe = getIntent().getExtras().getParcelable(STEPS_ITEM);
recipe = AppSingleton.getSelectedRecipe();
position = getIntent().getExtras().getInt("item_position");
} else {
recipe = savedInstanceState.getParcelable(STEPS_ITEM);
Expand All @@ -40,15 +42,44 @@ protected void onCreate(Bundle savedInstanceState) {
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("Steps");

if (savedInstanceState != null) {
Fragment frag = new RecipeDetailViewFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(STEPS_ITEM, recipe.getSteps().get(position));
frag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, frag)
.commit();
if (savedInstanceState == null) {
displayFragment(position);
}

container.setOnTouchListener(new OnSwipeTouchListener(this) {
public void onSwipeTop() {
}
public void onSwipeRight() {
if(0<position--) {
position --;
}
else {
position = recipe.getSteps().size();
}
displayFragment(position);
}
public void onSwipeLeft() {
if(recipe.getSteps().size()<=position++) {
position = 0;
}
else {
position ++;
}
displayFragment(position);
}
public void onSwipeBottom() {
}
});
}

private void displayFragment(int pos) {
Fragment frag = new RecipeDetailViewFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(STEPS_ITEM, recipe.getSteps().get(pos));
frag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.replace(R.id.recipe_detail_view_container, frag)
.commit();
}

@Override
Expand All @@ -57,4 +88,14 @@ protected void onSaveInstanceState(Bundle outState) {
outState.putParcelable(STEPS_ITEM, recipe);
outState.putInt("item_position", position);
}

@Override
public void onShowNext(int position) {

}

@Override
public void onShowPrevious(int position) {

}
}
Loading

0 comments on commit 84eabaa

Please sign in to comment.