Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
meser
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad Suryono
meser
Commits
d66dccb8
Commit
d66dccb8
authored
Aug 27, 2020
by
Muhammad Suryono
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Edit form
parent
9946f70e
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
119 additions
and
70 deletions
+119
-70
CartActivity.java
app/src/main/java/com/yono/messeripos/CartActivity.java
+5
-2
FormProductActivity.java
...rc/main/java/com/yono/messeripos/FormProductActivity.java
+56
-10
MainActivity.java
app/src/main/java/com/yono/messeripos/MainActivity.java
+39
-46
CartDaos.java
app/src/main/java/com/yono/messeripos/daos/CartDaos.java
+2
-0
MainViewModelsCart.java
...n/java/com/yono/messeripos/models/MainViewModelsCart.java
+4
-0
CartRepositories.java
...va/com/yono/messeripos/repositories/CartRepositories.java
+4
-0
Utils.java
app/src/main/java/com/yono/messeripos/utils/Utils.java
+1
-1
form_product.xml
app/src/main/res/layout/form_product.xml
+6
-10
ms__selector.xml
library/src/main/res/drawable-v21/ms__selector.xml
+1
-1
ms__list_item.xml
library/src/main/res/layout/ms__list_item.xml
+1
-0
No files found.
app/src/main/java/com/yono/messeripos/CartActivity.java
View file @
d66dccb8
...
...
@@ -29,6 +29,8 @@ import com.yono.messeripos.response.OrdersResponse;
import
java.util.List
;
import
java.util.Objects
;
import
static
com
.
yono
.
messeripos
.
MainActivity
.
orderId
;
public
class
CartActivity
extends
AppCompatActivity
{
CartAdapter
cartAdapter
;
...
...
@@ -48,6 +50,7 @@ public class CartActivity extends AppCompatActivity {
w
.
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
,
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
);
sharedPreferences
=
getSharedPreferences
(
SplashScreen
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
Log
.
i
(
"Id Order on acart"
,
"onCreate: "
+
orderId
);
// Toolbars
MaterialToolbar
toolbars
=
findViewById
(
R
.
id
.
cAppBar
);
setSupportActionBar
(
toolbars
);
...
...
@@ -68,10 +71,9 @@ public class CartActivity extends AppCompatActivity {
modelsCart
=
new
ViewModelProvider
(
this
).
get
(
MainViewModelsCart
.
class
);
modelsCart
.
getCart
Product
(
).
observe
(
this
,
new
Observer
<
List
<
ProductCartModels
>>()
{
modelsCart
.
getCart
ByOrderId
(
orderId
).
observe
(
this
,
new
Observer
<
List
<
ProductCartModels
>>()
{
@Override
public
void
onChanged
(
List
<
ProductCartModels
>
productCartModels
)
{
if
(
productCartModels
!=
null
)
{
dataCart
=
productCartModels
;
cartAdapter
.
setCartAdapter
(
CartActivity
.
this
,
productCartModels
);
...
...
@@ -80,6 +82,7 @@ public class CartActivity extends AppCompatActivity {
}
});
cartAdapter
.
setListener
(
new
CartAdapter
.
CartListener
()
{
@Override
public
void
onDelete
(
ProductCartModels
productCartModels
)
{
...
...
app/src/main/java/com/yono/messeripos/FormProductActivity.java
View file @
d66dccb8
package
com
.
yono
.
messeripos
;
import
android.Manifest
;
import
android.annotation.SuppressLint
;
import
android.app.ProgressDialog
;
import
android.content.CursorLoader
;
import
android.content.Intent
;
import
android.database.Cursor
;
...
...
@@ -16,6 +18,7 @@ import android.provider.Settings;
import
android.util.Log
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
android.widget.ArrayAdapter
;
import
android.widget.ImageView
;
import
android.widget.Toast
;
...
...
@@ -26,21 +29,35 @@ import androidx.appcompat.app.AppCompatActivity;
import
androidx.core.content.ContextCompat
;
import
androidx.core.content.FileProvider
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModelProviders
;
import
com.google.android.material.appbar.MaterialToolbar
;
import
com.jaredrummler.materialspinner.MaterialSpinner
;
import
com.yono.messeripos.databinding.FormProductBinding
;
import
com.yono.messeripos.models.CategoryModels
;
import
com.yono.messeripos.models.MainViewModels
;
import
com.yono.messeripos.models.ProductModels
;
import
com.yono.messeripos.response.DataResponse
;
import
com.yono.messeripos.utils.Utils
;
import
java.io.File
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
public
class
FormProductActivity
extends
AppCompatActivity
{
FormProductBinding
binding
;
ProductModels
productModels
;
File
file
;
MainViewModels
mainViewModels
;
MaterialSpinner
spinner
;
List
<
String
>
categoryModels
;
private
static
final
int
REQUEST_IMAGE_CAPTURE
=
1
;
private
static
final
int
REQUEST_PERMISSIONS
=
448
;
private
boolean
isUpdate
=
false
;
...
...
@@ -64,6 +81,8 @@ public class FormProductActivity extends AppCompatActivity {
private
String
[]
permissions
=
new
String
[]{
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
};
private
Utils
utils
=
new
Utils
();
ProgressDialog
progressDialog
;
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
...
...
@@ -73,6 +92,10 @@ public class FormProductActivity extends AppCompatActivity {
binding
.
btnAdd
.
setText
(
"Add New Prooduct"
);
productModels
=
new
ProductModels
();
requestPermissions
(
permissions
,
REQUEST_PERMISSIONS
);
mainViewModels
=
ViewModelProviders
.
of
(
this
).
get
(
MainViewModels
.
class
);
progressDialog
=
new
ProgressDialog
(
FormProductActivity
.
this
);
progressDialog
.
setMessage
(
"Loading..."
);
progressDialog
.
show
();
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
Window
w
=
getWindow
();
...
...
@@ -90,18 +113,45 @@ public class FormProductActivity extends AppCompatActivity {
binding
.
btnAdd
.
setOnClickListener
(
view
->
saveProduct
());
//spinner
MaterialSpinner
spinner
=
findViewById
(
R
.
id
.
listCategory
);
spinner
.
setItems
(
ANDROID_VERSIONS
);
categoryModels
=
new
ArrayList
<>();
categoryModels
.
add
(
"SELECT CATEGORY"
);
setSpinner
();
}
private
void
setSpinner
()
{
mainViewModels
.
getCategory
().
observe
(
this
,
listDataResponse
->
{
List
<
CategoryModels
>
cate
=
listDataResponse
.
getData
();
for
(
CategoryModels
cd:
cate
){
categoryModels
.
add
(
cd
.
getNameCategory
());
}
// Log.i("Spinner data", "onCreate: "+utils.convertGson(categoryModels));
@SuppressLint
(
"ResourceType"
)
ArrayAdapter
<
String
>
dataAdapter
=
new
ArrayAdapter
<
String
>(
FormProductActivity
.
this
,
R
.
id
.
listCategory
,
categoryModels
);
binding
.
listCategory
.
setAdapter
(
dataAdapter
);
progressDialog
.
dismiss
();
});
}
private
void
saveProduct
(){
productModels
.
setProductName
(
binding
.
etName
.
getText
().
toString
());
// productModels.setPriceProduct(Integer.parseInt(binding.etPrice.getText().toString()));
// productModels.setStockProduct(Integer.parseInt(binding.etStock.getText().toString()));
productModels
.
setPriceProduct
(
Integer
.
parseInt
(
binding
.
etPrice
.
getText
().
toString
()));
productModels
.
setStockProduct
(
Integer
.
parseInt
(
binding
.
etStock
.
getText
().
toString
()));
productModels
.
setCategoryProduct
(
binding
.
listCategory
.
getSelectedIndex
());
Toast
.
makeText
(
this
,
productModels
.
getImageProduct
()+
" "
+
productModels
.
getProductName
(),
Toast
.
LENGTH_LONG
).
show
();
if
(
productModels
.
getImageProduct
()
!=
null
){
file
=
new
File
(
productModels
.
getImageProduct
());
if
(
file
.
exists
()){
// Toast.makeText(this, productModels.getImageProduct()+" "+productModels.getProductName(), Toast.LENGTH_LONG).show();
// RequestBody file = RequestBody.create(MediaType)
}
}
}
private
void
openFile
(){
...
...
@@ -150,12 +200,8 @@ public class FormProductActivity extends AppCompatActivity {
Log
.
d
(
"Get filepath photo"
,
""
+
getRealPathFromURI
(
selectedImage
));
binding
.
setPhoto
(
getRealPathFromURI
(
selectedImage
));
// }
productModels
.
setImageProduct
(
getRealPathFromURI
(
selectedImage
));
// if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// Log.d("Get filepath photo", "" + file.getAbsolutePath());
// binding.setPhoto(file.getAbsolutePath());
// productModels.setImageProduct(file.getName());
}
}
...
...
app/src/main/java/com/yono/messeripos/MainActivity.java
View file @
d66dccb8
...
...
@@ -15,8 +15,6 @@ import android.view.MenuItem;
import
android.view.View
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
android.widget.EditText
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
...
...
@@ -32,14 +30,12 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import
com.google.android.material.appbar.MaterialToolbar
;
import
com.google.gson.Gson
;
import
com.yono.messeripos.adapter.CartAdapter
;
import
com.yono.messeripos.adapter.CategoryAdapter
;
import
com.yono.messeripos.adapter.ProductAdapter
;
import
com.yono.messeripos.databinding.ActivityMainBinding
;
import
com.yono.messeripos.models.CategoryModels
;
import
com.yono.messeripos.models.MainViewModels
;
import
com.yono.messeripos.models.MainViewModelsCart
;
import
com.yono.messeripos.models.PaymentsModels
;
import
com.yono.messeripos.models.ProductCartModels
;
import
com.yono.messeripos.models.ProductModels
;
import
com.yono.messeripos.response.DataResponse
;
...
...
@@ -54,17 +50,16 @@ public class MainActivity extends AppCompatActivity {
ActivityMainBinding
binding
;
CategoryAdapter
categoryAdapter
;
ProductAdapter
productAdapter
;
CartAdapter
cartAdapter
;
TextView
txtBadge
;
EditText
etSearch
;
Utils
utils
=
new
Utils
();
SharedPreferences
sharedPreferences
;
public
static
Boolean
status_update
=
false
;
MainViewModelsCart
mainViewModelsCart
;
public
static
Boolean
cartIsEmpty
;
SharedPreferences
sharedPreferences
;
public
static
final
String
CHECKOUT
=
"checkout"
;
public
static
Boolean
checkout
;
public
static
Boolean
selectCategory
=
false
;
public
static
String
orderId
;
private
static
final
String
ORDER_ID
=
"orderId"
;
@SuppressLint
(
"LongLogTag"
)
@Override
...
...
@@ -83,6 +78,18 @@ public class MainActivity extends AppCompatActivity {
mainViewModelsCart
=
new
ViewModelProvider
(
MainActivity
.
this
).
get
(
MainViewModelsCart
.
class
);
sharedPreferences
=
getSharedPreferences
(
SplashScreen
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
checkout
=
sharedPreferences
.
getBoolean
(
CHECKOUT
,
false
);
orderId
=
sharedPreferences
.
getString
(
ORDER_ID
,
""
);
if
(
orderId
.
isEmpty
())
{
SharedPreferences
.
Editor
editor
=
sharedPreferences
.
edit
();
editor
.
putString
(
ORDER_ID
,
"MES-ORDER"
+
utils
.
timeStamp
());
if
(
editor
.
commit
()){
Toast
.
makeText
(
MainActivity
.
this
,
orderId
,
Toast
.
LENGTH_LONG
).
show
();
}
}
Log
.
i
(
"ORDER ID"
,
"onCreate: "
+
orderId
);
toolbar
=
findViewById
(
R
.
id
.
topAppBar
);
mainViewModels
=
ViewModelProviders
.
of
(
this
).
get
(
MainViewModels
.
class
);
...
...
@@ -244,7 +251,7 @@ public class MainActivity extends AppCompatActivity {
public
void
onChanged
(
List
<
ProductCartModels
>
productCartModels
)
{
if
(
productCartModels
.
isEmpty
()
&&
cartIsEmpty
){
mainViewModelsCart
.
insertCart
(
new
ProductCartModels
(
"MES-ORDER-"
+
utils
.
timeStamp
()
,
orderId
,
1
,
product
.
getIdProduct
(),
product
.
getProductName
(),
...
...
@@ -252,7 +259,7 @@ public class MainActivity extends AppCompatActivity {
0
));
Log
.
d
(
"
a"
,
"onChanged: "
+
cartIsEmpty
);
Log
.
d
(
"
order_id_create"
,
"onChanged: "
+
orderId
);
cartIsEmpty
=
false
;
Log
.
i
(
"Add data cart"
,
"onChanged: Berhasil ditambahkan"
);
...
...
@@ -267,61 +274,47 @@ public class MainActivity extends AppCompatActivity {
});
}
});
ProgressDialog
progressDialog
=
new
ProgressDialog
(
MainActivity
.
this
);
progressDialog
.
setMessage
(
"Loading..."
);
categoryAdapter
.
setListener
(
new
CategoryAdapter
.
CategoryListener
()
{
@Override
public
void
onGetProduct
(
CategoryModels
categoryModels
)
{
showLoading
(
true
);
ProgressDialog
progressDialog
=
new
ProgressDialog
(
MainActivity
.
this
);
progressDialog
.
setMessage
(
"Loading..."
);
Log
.
i
(
"diluar if"
,
"onGetProduct: "
+
selectCategory
);
if
(!
selectCategory
){
progressDialog
.
show
();
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
Log
.
i
(
"if"
,
"onGetProduct: "
+
selectCategory
);
}
selectCategory
=
true
;
Log
.
i
(
"setelah if"
,
"onGetProduct: "
+
selectCategory
);
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
if
(
categoryModels
.
getIdCategory
()
==
0
){
if
(
mainViewModels
.
getProduct
().
getValue
().
getData
().
size
()
!=
0
){
progressDialog
.
dismiss
();
selectCategory
=
false
;
mainViewModels
.
getProduct
().
observe
(
MainActivity
.
this
,
new
Observer
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>()
{
@Override
public
void
onChanged
(
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>
listDataResponse
)
{
ArrayList
<
ProductModels
>
productModelsArrayList
=
new
ArrayList
<>();
productModelsArrayList
.
addAll
(
listDataResponse
.
getData
());
progressDialog
.
dismiss
();
binding
.
rvProduct
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
GONE
);
productAdapter
.
setProduct
(
MainActivity
.
this
,
productModelsArrayList
);
binding
.
rvProduct
.
setLayoutManager
(
new
GridLayoutManager
(
MainActivity
.
this
,
2
));
binding
.
rvProduct
.
setAdapter
(
productAdapter
);
}
});
}
else
{
selectCategory
=
false
;
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
bringToFront
();
selectCategory
=
false
;
}
// mainViewModels.getProduct().observe(MainActivity.this, new Observer<DataResponse<List<ProductModels<CategoryModels>>>>() {
// @Override
// public void onChanged(DataResponse<List<ProductModels<CategoryModels>>> listDataResponse) {
// if (listDataResponse != null) {
// ArrayList<ProductModels> productModelsArrayList = new ArrayList<>();
//
// productModelsArrayList.addAll(listDataResponse.getData());
// progressDialog.dismiss();
// showLoading(false);
// if (productModelsArrayList.isEmpty()) {
// binding.rvProduct.setVisibility(View.GONE);
// binding.imgEmpty.setVisibility(View.VISIBLE);
// binding.imgEmpty.bringToFront();
// selectCategory = false;
// Log.i("daidalam get if", "onGetProduct: "+selectCategory);
// } else {
// binding.rvProduct.setVisibility(View.VISIBLE);
// binding.imgEmpty.setVisibility(View.GONE);
// productAdapter.setProduct(MainActivity.this, productModelsArrayList);
// binding.rvProduct.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
// binding.rvProduct.setAdapter(productAdapter);
// selectCategory = false;
// Log.i("daidalam get else", "onGetProduct: "+selectCategory);
//// productAdapter.notifyDataSetChanged();
// }
// }
// }
// });
selectCategory
=
false
;
}
}
else
{
selectCategory
=
false
;
mainViewModels
.
getProductByCategory
(
categoryModels
.
getIdCategory
()).
observe
(
MainActivity
.
this
,
new
Observer
<
DataResponse
<
List
<
ProductModels
>>>()
{
@Override
public
void
onChanged
(
DataResponse
<
List
<
ProductModels
>>
listDataResponse
)
{
...
...
@@ -334,7 +327,7 @@ public class MainActivity extends AppCompatActivity {
if
(
productModelsArrayList
.
isEmpty
())
{
binding
.
rvProduct
.
setVisibility
(
View
.
GONE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
bringToFront
();
//
binding.imgEmpty.bringToFront();
}
else
{
binding
.
rvProduct
.
setVisibility
(
View
.
VISIBLE
);
binding
.
imgEmpty
.
setVisibility
(
View
.
GONE
);
...
...
app/src/main/java/com/yono/messeripos/daos/CartDaos.java
View file @
d66dccb8
...
...
@@ -21,6 +21,8 @@ public interface CartDaos {
@Query
(
"SELECT * FROM carts WHERE id_product_orders = :idCart"
)
public
LiveData
<
List
<
ProductCartModels
>>
getCartById
(
long
idCart
);
@Query
(
"SELECT * FROM carts WHERE id_orders = :orderId"
)
public
LiveData
<
List
<
ProductCartModels
>>
getCartByOrderId
(
String
orderId
);
@Insert
(
onConflict
=
OnConflictStrategy
.
IGNORE
)
public
void
insertProduct
(
ProductCartModels
product
);
...
...
app/src/main/java/com/yono/messeripos/models/MainViewModelsCart.java
View file @
d66dccb8
...
...
@@ -86,6 +86,10 @@ public class MainViewModelsCart extends AndroidViewModel {
return
cartRepositories
.
getDataById
(
id
);
}
public
LiveData
<
List
<
ProductCartModels
>>
getCartByOrderId
(
String
id
){
return
cartRepositories
.
getCartByOrderId
(
id
);
}
public
MutableLiveData
<
ProductCartModels
>
getCart
(){
// String js = new Gson().toJson(cartRepositories.getDataCart());
// Log.d("Get data cart", "Response "+js);
...
...
app/src/main/java/com/yono/messeripos/repositories/CartRepositories.java
View file @
d66dccb8
...
...
@@ -43,6 +43,10 @@ public class CartRepositories {
return
cartDaos
.
getCartById
(
id
);
}
public
LiveData
<
List
<
ProductCartModels
>>
getCartByOrderId
(
String
id
){
return
cartDaos
.
getCartByOrderId
(
id
);
}
public
LiveData
<
List
<
ProductCartModels
>>
getDataCart
(){
return
products
;
}
...
...
app/src/main/java/com/yono/messeripos/utils/Utils.java
View file @
d66dccb8
...
...
@@ -62,7 +62,7 @@ public class Utils {
@RequiresApi
(
api
=
Build
.
VERSION_CODES
.
O
)
public
String
convertDate
(
String
date
){
DateTimeFormatter
dateTimeFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
)
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd'T'HH:mm:ss.SSS
SSS
'Z'"
)
.
withZone
(
ZoneId
.
of
(
"UTC"
));
LocalDateTime
localDateTime
=
LocalDateTime
...
...
app/src/main/res/layout/form_product.xml
View file @
d66dccb8
...
...
@@ -69,6 +69,8 @@
android:id=
"@+id/etName"
android:text=
"@{productForm.productName}"
android:layout_width=
"match_parent"
android:inputType=
"text"
android:imeOptions=
"actionNext"
android:layout_height=
"wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
...
...
@@ -88,6 +90,8 @@
android:id=
"@+id/etPrice"
android:text=
"@{productForm.priceProduct+``}"
android:layout_width=
"match_parent"
android:inputType=
"number"
android:imeOptions=
"actionNext"
android:layout_height=
"wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
...
...
@@ -108,7 +112,8 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:text=
"@{productForm.stockProduct+``}"
android:textColor=
"#fff"
/>
android:inputType=
"number"
android:imeOptions=
"actionNext"
/>
</com.google.android.material.textfield.TextInputLayout>
...
...
@@ -123,18 +128,9 @@
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"
/>
=======
<Spinner
android:id=
"@+id/planets_spinner"
android:layout_width=
"fill_parent"
android:layout_height=
"wrap_content"
app:layout_constraintTop_toBottomOf=
"@id/tfName"
app:layout_constraintStart_toStartOf=
"parent"
/>
>>>>>>> cart
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btnAdd"
...
...
library/src/main/res/drawable-v21/ms__selector.xml
View file @
d66dccb8
...
...
@@ -24,7 +24,7 @@
android:drawable=
"@android:color/white"
/>
<item
android:bottom=
"1dp"
>
<shape>
<solid
android:color=
"@android:color/
white
"
/>
<solid
android:color=
"@android:color/
darker_gray
"
/>
</shape>
</item>
</ripple>
\ No newline at end of file
library/src/main/res/layout/ms__list_item.xml
View file @
d66dccb8
...
...
@@ -31,5 +31,6 @@
android:paddingStart=
"@dimen/ms__popup_padding_left"
android:paddingTop=
"@dimen/ms__popup_padding_top"
android:singleLine=
"true"
android:background=
"@drawable/ms__drop_down_shadow"
/>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment