Moved category color generation into geofavorite model
This commit is contained in:
		| @@ -62,7 +62,6 @@ import retrofit2.Response; | ||||
| public class GeofavoriteDetailActivity extends AppCompatActivity implements LocationListener, ActivityCompat.OnRequestPermissionsResultCallback { | ||||
|  | ||||
|     public static final String TAG = "GeofavDetail"; | ||||
|     public static final String DEFAULT_CATEGORY = "Personal"; | ||||
|     public static final int MINIMUM_ACCEPTABLE_ACCURACY = 50;  // In meters | ||||
|     public static final String ARG_GEOFAVORITE = "geofav"; | ||||
|     private static final int PERMISSION_REQUEST_CODE = 9999; | ||||
| @@ -120,7 +119,7 @@ public class GeofavoriteDetailActivity extends AppCompatActivity implements Loca | ||||
|         } else { | ||||
|             // New geofavorite | ||||
|             mGeofavorite = new Geofavorite(); | ||||
|             mGeofavorite.setCategory(DEFAULT_CATEGORY); | ||||
|             mGeofavorite.setCategory(Geofavorite.DEFAULT_CATEGORY); | ||||
|             mGeofavorite.setDateCreated(System.currentTimeMillis() / 1000); | ||||
|             mGeofavorite.setDateModified(System.currentTimeMillis() / 1000); | ||||
|             mViewHolder.hideActions(); | ||||
|   | ||||
| @@ -20,14 +20,11 @@ | ||||
|  | ||||
| package it.danieleverducci.nextcloudmaps.model; | ||||
|  | ||||
| import android.graphics.Color; | ||||
| import android.net.Uri; | ||||
| import android.widget.TextView; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.databinding.BaseObservable; | ||||
| import androidx.databinding.Bindable; | ||||
| import androidx.databinding.BindingAdapter; | ||||
|  | ||||
| import com.google.gson.annotations.Expose; | ||||
| import com.google.gson.annotations.SerializedName; | ||||
| @@ -38,9 +35,10 @@ import org.threeten.bp.ZoneId; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.Comparator; | ||||
| import java.util.Date; | ||||
|  | ||||
| public class Geofavorite implements Serializable { | ||||
|     public static final String DEFAULT_CATEGORY = "Personal"; | ||||
|  | ||||
|     /** | ||||
|      * JSON Definition: | ||||
|      *     { | ||||
| @@ -164,6 +162,27 @@ public class Geofavorite implements Serializable { | ||||
|         return getLat() != 0 && getLng() != 0 && getName() != null && getName().length() > 0; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Based on Nextcloud Maps's getLetterColor util. | ||||
|      * Assigns a color to a category based on its two first letters. | ||||
|      * | ||||
|      * @see "https://github.com/nextcloud/maps/blob/master/src/utils.js" | ||||
|      * @return the generated color or null for the default category | ||||
|      */ | ||||
|     public int categoryColor() { | ||||
|         // If category is default, return null: will be used Nextcloud's accent | ||||
|         if (this.category.equals(DEFAULT_CATEGORY)) | ||||
|             return 0; | ||||
|  | ||||
|         float letter1Index = this.category.toLowerCase().charAt(0); | ||||
|         float letter2Index = this.category.toLowerCase().charAt(1); | ||||
|         float letterCoef = ((letter1Index * letter2Index) % 100) / 100; | ||||
|         float h = letterCoef * 360; | ||||
|         float s = 75 + letterCoef * 10; | ||||
|         float l = 50 + letterCoef * 10; | ||||
|         return Color.HSVToColor( new float[]{ Math.round(h), Math.round(s), Math.round(l) }); | ||||
|     } | ||||
|  | ||||
|     @NonNull | ||||
|     @Override | ||||
|     public String toString() { | ||||
|   | ||||
| @@ -1,22 +0,0 @@ | ||||
| package it.danieleverducci.nextcloudmaps.utils; | ||||
|  | ||||
| public class Color { | ||||
|  | ||||
|     /** | ||||
|      * Based on Nextcloud Maps's getLetterColor util | ||||
|      * @see "https://github.com/nextcloud/maps/blob/master/src/utils.js" | ||||
|      * @param catName category name | ||||
|      */ | ||||
|     public static generareCategoryColor(String catName) { | ||||
|         // If category is default, return default color | ||||
|  | ||||
|         // Else | ||||
|         int letter1Index = letter1.toLowerCase().charCodeAt(0); | ||||
|         int letter2Index = letter2.toLowerCase().charCodeAt(0); | ||||
|         var letterCoef = ((letter1Index * letter2Index) % 100) / 100; | ||||
|         var h = letterCoef * 360; | ||||
|         var s = 75 + letterCoef * 10; | ||||
|         var l = 50 + letterCoef * 10; | ||||
|         return {h: Math.round(h), s: Math.round(s), l: Math.round(l)}; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user