Commit 2ce9a7db authored by Muhammad Suryono's avatar Muhammad Suryono

update form

parent 265410a3
......@@ -12,6 +12,8 @@
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/library" />
<option value="$PROJECT_DIR$/spinner" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
......
......@@ -45,6 +45,7 @@ dependencies {
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'com.github.bumptech.glide:glide:4.3.1'
implementation project(':library')
def room_version = "2.2.5"
......
package com.yono.messeripos;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
......@@ -36,6 +38,7 @@ public class CartActivity extends AppCompatActivity {
RecyclerView recyclerView;
List<ProductCartModels> dataCart = null;
public static Boolean statusPost;
SharedPreferences sharedPreferences;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
......@@ -45,6 +48,7 @@ public class CartActivity extends AppCompatActivity {
Button btnCheckout;
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
sharedPreferences = getSharedPreferences(SplashScreen.MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
// Toolbars
MaterialToolbar toolbars = findViewById(R.id.cAppBar);
......@@ -119,9 +123,14 @@ public class CartActivity extends AppCompatActivity {
ordersResponse.setProduct_cart(dataCart);
modelsCart.insertOrders(ordersResponse);
progressDialog.dismiss();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(SplashScreen.CHECKOUT, true);
if(editor.commit()){
startActivity(new Intent(CartActivity.this, PaymentActivity.class));
finish();
}
}
});
}
......
......@@ -30,6 +30,7 @@ import androidx.core.content.FileProvider;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.appbar.MaterialToolbar;
import com.jaredrummler.materialspinner.MaterialSpinner;
import com.yono.messeripos.databinding.FormProductBinding;
import com.yono.messeripos.models.ProductModels;
......@@ -49,8 +50,20 @@ public class FormProductActivity extends AppCompatActivity {
private Spinner splistCategory;
String kondisi_spin;
private String[] default_category = {
"--pilih category--",
private static final String[] ANDROID_VERSIONS = {
"Cupcake",
"Donut",
"Eclair",
"Froyo",
"Gingerbread",
"Honeycomb",
"Ice Cream Sandwich",
"Jelly Bean",
"KitKat",
"Lollipop",
"Marshmallow",
"Nougat",
"Oreo"
};
@Override
......@@ -77,21 +90,8 @@ public class FormProductActivity extends AppCompatActivity {
binding.btnAdd.setOnClickListener(view -> saveProduct());
//spinner
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, default_category);
splistCategory = findViewById(R.id.listCategory);
splistCategory.setAdapter(adapter);
splistCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
kondisi_spin = splistCategory.getSelectedItem().toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
MaterialSpinner spinner = findViewById(R.id.listCategory);
spinner.setItems(ANDROID_VERSIONS);
}
......
......@@ -2,7 +2,9 @@ package com.yono.messeripos;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
......@@ -54,7 +56,9 @@ public class MainActivity extends AppCompatActivity {
public static Boolean status_update = false;
MainViewModelsCart mainViewModelsCart;
public static Boolean cartIsEmpty;
SharedPreferences sharedPreferences;
@SuppressLint("LongLogTag")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -63,12 +67,13 @@ public class MainActivity extends AppCompatActivity {
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.rvProduct.setAdapter(adapter);
binding.appBarUpdate.setVisibility(View.GONE);
Log.i("Status Checkout main activity", "onCreate: "+SplashScreen.checkout);
showLoading(true);
categoryAdapter = new CategoryAdapter();
productAdapter = new ProductAdapter();
mainViewModelsCart = new ViewModelProvider(MainActivity.this).get(MainViewModelsCart.class);
sharedPreferences = getSharedPreferences(SplashScreen.MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
......@@ -82,7 +87,11 @@ public class MainActivity extends AppCompatActivity {
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.menu_cart) {
if (SplashScreen.checkout){
startActivity(new Intent(getApplicationContext(), PaymentActivity.class));
}else{
startActivity(new Intent(getApplicationContext(), CartActivity.class));
}
}else if (id == R.id.update){
status_update = true;
binding.topAppBar.setVisibility(View.GONE);
......@@ -242,10 +251,9 @@ public class MainActivity extends AppCompatActivity {
@Override
public void onChanged(DataResponse<List<ProductModels>> listDataResponse) {
if (listDataResponse != null) {
List<ProductModels> productModels = listDataResponse.getData();
ArrayList<ProductModels> productModelsArrayList = new ArrayList<>();
productModelsArrayList.addAll(productModels);
productModelsArrayList.addAll(listDataResponse.getData());
progressDialog.dismiss();
showLoading(false);
if (productModelsArrayList.isEmpty()) {
......
......@@ -41,7 +41,7 @@ public class PaymentActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
Log.i("Status Checkout payment", "onCreate: "+SplashScreen.checkout);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
......@@ -93,6 +93,8 @@ public class PaymentActivity extends AppCompatActivity {
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(PaymentActivity.this, MainActivity.class));
finish();
}
}
......@@ -4,11 +4,16 @@ import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.jaredrummler.materialspinner.MaterialSpinner;
public class ProductActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product);
}
}
\ No newline at end of file
......@@ -24,7 +24,9 @@ public class SplashScreen extends AppCompatActivity {
SharedPreferences sharedPreferences;
public static final String MY_SHARED_PREFERENCES = "my_shared_preferences";
public static final String SESSION = "session";
public static final String CHECKOUT = "checkout";
public static Boolean session;
public static Boolean checkout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -48,6 +50,7 @@ public class SplashScreen extends AppCompatActivity {
}, 700);
sharedPreferences = getSharedPreferences(MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
session = sharedPreferences.getBoolean(SESSION, false);
checkout = sharedPreferences.getBoolean(CHECKOUT, false);
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<stroke android:color="#333" android:width="2dp"/>
</shape>
</item>
</selector>
\ No newline at end of file
......@@ -66,7 +66,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvCategory"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_height="60dp"
android:layout_marginStart="5dp"
app:layout_constraintTop_toBottomOf="@id/topBar"
android:layout_marginTop="10dp"
......
......@@ -93,32 +93,38 @@
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tfStock"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="@string/stock"
android:textColor="#fff"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
app:layout_constraintTop_toBottomOf="@id/tfPrice">
app:layout_constraintTop_toBottomOf="@id/tfPrice"
tools:layout_editor_absoluteX="10dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etStock"
android:text="@{productForm.stockProduct+``}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{productForm.stockProduct+``}"
android:textColor="#fff" />
</com.google.android.material.textfield.TextInputLayout>
<Spinner
<com.jaredrummler.materialspinner.MaterialSpinner
android:id="@+id/listCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listCategory"
android:padding="25dp"
android:layout_margin="10dp"
android:textAlignment="textStart"
android:spinnerMode="dropdown"
app:layout_constraintTop_toBottomOf="@id/tfStock"/>
android:background="@drawable/stroke_spinner"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tfStock"
app:layout_constraintVertical_bias="0.0"
app:ms_dropdown_height="wrap_content"
app:ms_dropdown_max_height="350dp"
app:ms_background_color="#8888"
app:ms_background_selector="0xFFFFFF"
tools:layout_editor_absoluteX="0dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAdd"
......
......@@ -115,8 +115,9 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/materialBtnAddCart"
android:padding="1dp"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
......
......@@ -69,4 +69,9 @@
<item name="android:textSize">16sp</item>
</style>
<style name="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu">
<item name="strokeColor">@color/colorPrimary</item>
<item name="android:hint">Select kategori</item>
</style>
</resources>
\ No newline at end of file
/*
* Copyright 2013 Chris Banes
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
apply plugin: 'maven'
apply plugin: 'signing'
def isReleaseBuild() {
return VERSION_NAME.contains("SNAPSHOT") == false
}
def getReleaseRepositoryUrl() {
return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}
def getSnapshotRepositoryUrl() {
return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
: "https://oss.sonatype.org/content/repositories/snapshots/"
}
def getRepositoryUsername() {
return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME
repository(url: getReleaseRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
snapshotRepository(url: getSnapshotRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL
scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}
licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}
developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
}
}
}
}
signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
}
\ No newline at end of file
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
resourcePrefix 'ms__'
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
}
}
dependencies {
implementation 'androidx.annotation:annotation:1.0.0'
testImplementation 'junit:junit:4.12'
}
apply from: rootProject.file('gradle/maven-push.gradle')
VERSION_NAME=1.3.1
VERSION_CODE=131
GROUP=com.jaredrummler
POM_NAME=Material Spinner
POM_ARTIFACT_ID=material-spinner
POM_PACKAGING=aar
POM_DESCRIPTION=A spinner view for Android
POM_URL=https://github.com/jaredrummler/Material-Spinner
POM_SCM_URL=https://github.com/jaredrummler/MaterialSpinner
POM_SCM_CONNECTION=scm:git@github.com:jaredrummler/MaterialSpinner.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:jaredrummler/MaterialSpinner.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=jaredrummler
POM_DEVELOPER_NAME=Jared Rummler
SNAPSHOT_REPOSITORY_URL=https://oss.sonatype.org/content/repositories/snapshots
RELEASE_REPOSITORY_URL=https://oss.sonatype.org/service/local/staging/deploy/maven2
\ No newline at end of file
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\android-sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
<manifest package="com.jaredrummler.materialspinner"/>
\ No newline at end of file
/*
* Copyright (C) 2016 Jared Rummler
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jaredrummler.materialspinner;
import android.content.Context;
import java.util.List;
public class MaterialSpinnerAdapter<T> extends MaterialSpinnerBaseAdapter {
private final List<T> items;
public MaterialSpinnerAdapter(Context context, List<T> items) {
super(context);
this.items = items;
}
@Override public int getCount() {
int size = items.size();
if (size == 1 || isHintEnabled()) return size;
return size - 1;
}
@Override public T getItem(int position) {
if (isHintEnabled()) {
return items.get(position);
} else if (position >= getSelectedIndex() && items.size() != 1) {
return items.get(position + 1);
} else {
return items.get(position);
}
}
@Override public T get(int position) {
return items.get(position);
}
@Override public List<T> getItems() {
return items;
}
}
\ No newline at end of file
/*
* Copyright (C) 2016 Jared Rummler
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jaredrummler.materialspinner;
import android.content.Context;
import android.widget.ListAdapter;
import java.util.ArrayList;
import java.util.List;
final class MaterialSpinnerAdapterWrapper extends MaterialSpinnerBaseAdapter {
private final ListAdapter listAdapter;
public MaterialSpinnerAdapterWrapper(Context context, ListAdapter toWrap) {
super(context);
listAdapter = toWrap;
}
@Override public int getCount() {
int size = listAdapter.getCount();
if (size == 1 || isHintEnabled()) return size;
return size - 1;
}
@Override public Object getItem(int position) {
if (isHintEnabled()) {
return listAdapter.getItem(position);
} else if (position >= getSelectedIndex() && listAdapter.getCount() != 1) {
return listAdapter.getItem(position + 1);
} else {
return listAdapter.getItem(position);
}
}
@Override public Object get(int position) {
return listAdapter.getItem(position);
}
@Override public List<Object> getItems() {
List<Object> items = new ArrayList<>();
for (int i = 0; i < listAdapter.getCount(); i++) {
items.add(listAdapter.getItem(i));
}
return items;
}
}
\ No newline at end of file
/*
* Copyright (C) 2016 Jared Rummler
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jaredrummler.materialspinner;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import androidx.annotation.ColorInt;
import androidx.annotation.DrawableRes;
import java.util.List;
public abstract class MaterialSpinnerBaseAdapter<T> extends BaseAdapter {
private final Context context;
private int selectedIndex;
private int textColor;
private int backgroundSelector;
private int popupPaddingTop;
private int popupPaddingLeft;
private int popupPaddingBottom;
private int popupPaddingRight;
private boolean isHintEnabled;
public MaterialSpinnerBaseAdapter(Context context) {
this.context = context;
}
@Override public View getView(int position, View convertView, ViewGroup parent) {
final TextView textView;
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.ms__list_item, parent, false);
textView = (TextView) convertView.findViewById(R.id.tv_tinted_spinner);
textView.setTextColor(textColor);
textView.setPadding(popupPaddingLeft, popupPaddingTop, popupPaddingRight, popupPaddingBottom);
//
// int left, right, bottom, top;
// if (popupPaddingTop != -1) {
// left = textView.getPaddingLeft();
// right = textView.getPaddingRight();
// bottom = textView.getPaddingBottom();
//
// textView.setPadding(left, popupPaddingTop, right, bottom);
// }
//
// if (popupPaddingLeft != -1) {
// top = textView.getPaddingTop();
// right = textView.getPaddingRight();
// bottom = textView.getPaddingBottom();
//
// textView.setPadding(popupPaddingLeft, top, right, bottom);
// }
//
// if (popupPaddingBottom != -1) {
// left = textView.getPaddingLeft();
// top = textView.getPaddingTop();
// right = textView.getPaddingRight();
//
// textView.setPadding(left, top, right, popupPaddingBottom);
// }
//
// if (popupPaddingRight != -1) {
// left = textView.getPaddingLeft();
// top = textView.getPaddingTop();
// bottom = textView.getPaddingBottom();
//
// textView.setPadding(left, top, popupPaddingRight, bottom);
// }
if (backgroundSelector != 0) {
textView.setBackgroundResource(backgroundSelector);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration config = context.getResources().getConfiguration();
if (config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
textView.setTextDirection(View.TEXT_DIRECTION_RTL);
}
}
convertView.setTag(new ViewHolder(textView));
} else {
textView = ((ViewHolder) convertView.getTag()).textView;
}
textView.setText(getItemText(position));
return convertView;
}
public String getItemText(int position) {
return getItem(position).toString();
}
public int getSelectedIndex() {
return selectedIndex;
}
public void notifyItemSelected(int index) {
selectedIndex = index;
}
@Override public long getItemId(int position) {
return position;
}
@Override public abstract T getItem(int position);
@Override public abstract int getCount();
public abstract T get(int position);
public abstract List<T> getItems();
public void setHintEnabled(boolean isHintEnabled) {
this.isHintEnabled = isHintEnabled;
}
public boolean isHintEnabled() {
return this.isHintEnabled;
}
public MaterialSpinnerBaseAdapter<T> setTextColor(@ColorInt int textColor) {
this.textColor = textColor;
return this;
}
public MaterialSpinnerBaseAdapter<T> setBackgroundSelector(@DrawableRes int backgroundSelector) {
this.backgroundSelector = backgroundSelector;
return this;
}
public MaterialSpinnerBaseAdapter<T> setPopupPadding(int left, int top, int right, int bottom) {
this.popupPaddingLeft = left;
this.popupPaddingTop = top;
this.popupPaddingRight = right;
this.popupPaddingBottom = bottom;
return this;
}
private static class ViewHolder {
private TextView textView;
private ViewHolder(TextView textView) {
this.textView = textView;
}
}
}
\ No newline at end of file
/*
* Copyright (C) 2016 Jared Rummler
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jaredrummler.materialspinner;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.view.View;
final class Utils {
/**
* Darkens a color by a given factor.
*
* @param color the color to darken
* @param factor The factor to darken the color.
* @return darker version of specified color.
*/
static int darker(int color, float factor) {
return Color.argb(Color.alpha(color), Math.max((int) (Color.red(color) * factor), 0),
Math.max((int) (Color.green(color) * factor), 0), Math.max((int) (Color.blue(color) * factor), 0));
}
/**
* Lightens a color by a given factor.
*
* @param color The color to lighten
* @param factor The factor to lighten the color. 0 will make the color unchanged. 1 will make the
* color white.
* @return lighter version of the specified color.
*/
static int lighter(int color, float factor) {
int red = (int) ((Color.red(color) * (1 - factor) / 255 + factor) * 255);
int green = (int) ((Color.green(color) * (1 - factor) / 255 + factor) * 255);
int blue = (int) ((Color.blue(color) * (1 - factor) / 255 + factor) * 255);
return Color.argb(Color.alpha(color), red, green, blue);
}
/**
* Check if layout direction is RTL
*
* @param context the current context
* @return {@code true} if the layout direction is right-to-left
*/
static boolean isRtl(Context context) {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1
&& context.getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
}
/**
* Return a drawable object associated with a particular resource ID.
*
* <p>Starting in {@link android.os.Build.VERSION_CODES#LOLLIPOP}, the returned drawable will be styled for the
* specified Context's theme.</p>
*
* @param id The desired resource identifier, as generated by the aapt tool.
* This integer encodes the package, type, and resource entry.
* The value 0 is an invalid identifier.
* @return Drawable An object that can be used to draw this resource.
*/
static Drawable getDrawable(Context context, int id) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return context.getDrawable(id);
}
return context.getResources().getDrawable(id);
}
}
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item
android:id="@android:id/mask"
android:drawable="@android:color/white"/>
<item android:bottom="1dp">
<shape>
<solid android:color="@android:color/white"/>
</shape>
</item>
</ripple>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ms__menu_down"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="180"/>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="3dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners
android:bottomLeftRadius="1dp"
android:bottomRightRadius="1dp"
android:topLeftRadius="1dp"
android:topRightRadius="1dp"/>
</shape>
</item>
</layer-list>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M7,10L12,15L17,10H7Z"/>
</vector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/darker_gray" android:state_pressed="true"/>
<item android:drawable="@android:color/white" android:state_pressed="false"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_tinted_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:minHeight="@dimen/ms__item_height"
android:paddingBottom="@dimen/ms__popup_padding_top"
android:paddingLeft="@dimen/ms__popup_padding_left"
android:paddingRight="@dimen/ms__popup_padding_left"
android:paddingStart="@dimen/ms__popup_padding_left"
android:paddingTop="@dimen/ms__popup_padding_top"
android:singleLine="true"
/>
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<resources xmlns:tools="http://schemas.android.com/tools">
<declare-styleable name="MaterialSpinner" tools:ignore="ResourceName">
<attr format="color" name="ms_arrow_tint"/>
<attr format="boolean" name="ms_hide_arrow"/>
<attr format="color" name="ms_background_color"/>
<attr format="color" name="ms_text_color"/>
<attr format="dimension" name="ms_dropdown_max_height"/>
<attr format="dimension" name="ms_dropdown_height">
<enum name="fill_parent" value="-1"/>
<enum name="match_parent" value="-1"/>
<enum name="wrap_content" value="-2"/>
</attr>
<attr format="integer" name="ms_background_selector"/>
<attr format="dimension" name="ms_padding_top"/>
<attr format="dimension" name="ms_padding_left"/>
<attr format="dimension" name="ms_padding_bottom"/>
<attr format="dimension" name="ms_padding_right"/>
<attr format="dimension" name="ms_popup_padding_top"/>
<attr format="dimension" name="ms_popup_padding_left"/>
<attr format="dimension" name="ms_popup_padding_bottom"/>
<attr format="dimension" name="ms_popup_padding_right"/>
<attr format="string" name="ms_hint"/>
<attr format="color" name="ms_hint_color"/>
</declare-styleable>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 Jared Rummler
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<resources>
<dimen name="ms__padding_left">24dp</dimen>
<dimen name="ms__padding_top">12dp</dimen>
<dimen name="ms__item_height">48dp</dimen>
<dimen name="ms__popup_padding_left">24dp</dimen>
<dimen name="ms__popup_padding_top">12dp</dimen>
</resources>
\ No newline at end of file
include ':library'
include ':spinner'
include ':app'
rootProject.name = "Messeri POS"
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment