Add dialog for card creation.
This commit is contained in:
parent
1508b143c5
commit
aad92328cd
@ -29,5 +29,6 @@ dependencies {
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
implementation 'com.android.support:design:25.4.0'
|
||||
compile 'com.getbase:floatingactionbutton:1.10.1'
|
||||
compile 'com.larswerkman:HoloColorPicker:1.5'
|
||||
implementation 'com.android.support:cardview-v7:25.4.0'
|
||||
}
|
||||
|
@ -13,9 +13,6 @@ import android.view.View;
|
||||
|
||||
import com.codigoparallevar.minicards.motion.MotionMode;
|
||||
import com.codigoparallevar.minicards.types.PartConnection;
|
||||
import com.codigoparallevar.minicards.parts.buttons.RoundButton;
|
||||
import com.codigoparallevar.minicards.parts.samples.ColorBox;
|
||||
import com.codigoparallevar.minicards.parts.samples.Placeholder;
|
||||
import com.codigoparallevar.minicards.types.connectors.input.InputConnector;
|
||||
import com.codigoparallevar.minicards.types.connectors.input.SignalInputConnector;
|
||||
import com.codigoparallevar.minicards.types.connectors.output.OutputConnector;
|
||||
@ -62,6 +59,7 @@ class CanvasView extends View implements PartGrid {
|
||||
|
||||
@Nullable
|
||||
private Tuple2<Integer, Integer> _mouseDownPoint = null;
|
||||
private int cardBackgroundColor;
|
||||
|
||||
public CanvasView(Context context) {
|
||||
super(context);
|
||||
@ -75,7 +73,7 @@ class CanvasView extends View implements PartGrid {
|
||||
CardFile card = CardFile.load(path, this);
|
||||
|
||||
name = card.getName();
|
||||
setBackgroundColor(card.getBackgroundColor());
|
||||
setCardBackgroundColor(card.getBackgroundColor());
|
||||
parts = card.getParts();
|
||||
List<PartConnection> connections = card.getConnections();
|
||||
|
||||
@ -273,6 +271,7 @@ class CanvasView extends View implements PartGrid {
|
||||
CardFile cardFile = new CardFile(CardFile.getDefaultCardStorage(getContext()));
|
||||
cardFile.setName(name);
|
||||
cardFile.addParts(parts);
|
||||
cardFile.setBackgroundColor(getCardBackgroundColor());
|
||||
cardFile.save(getContext());
|
||||
}
|
||||
|
||||
@ -376,4 +375,13 @@ class CanvasView extends View implements PartGrid {
|
||||
int yOffset = _viewOrigin.item2 + getHeight() / 2;
|
||||
return new Tuple2<>(xOffset, yOffset);
|
||||
}
|
||||
|
||||
public int getCardBackgroundColor() {
|
||||
return cardBackgroundColor;
|
||||
}
|
||||
|
||||
public void setCardBackgroundColor(int backgroundColor) {
|
||||
this.cardBackgroundColor = backgroundColor;
|
||||
setBackgroundColor(backgroundColor);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.codigoparallevar.minicards;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v7.app.ActionBar;
|
||||
@ -183,4 +184,10 @@ public class CardActivity extends AppCompatActivity {
|
||||
removePartFab.getY(), removePartFab.getY() + removePartFab.getHeight());
|
||||
}
|
||||
}
|
||||
|
||||
public static void openCard(Context context, CardFile cardfile) {
|
||||
Intent i = new Intent(INTENT);
|
||||
i.putExtra(CARD_PATH_KEY, cardfile.getPath());
|
||||
context.startActivity(i);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
package com.codigoparallevar.minicards;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
|
||||
import com.codigoparallevar.minicards.parts.buttons.RoundButton;
|
||||
import com.codigoparallevar.minicards.parts.samples.ColorBox;
|
||||
@ -24,7 +25,6 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -32,6 +32,8 @@ public class CardFile {
|
||||
|
||||
static final int DEFAULT_BACKGROUND_COLOR = Color.parseColor("#044563");
|
||||
static final String PATH_SEPARATOR = "/";
|
||||
@NonNull
|
||||
private final String cardsDirectory;
|
||||
|
||||
@NonNull
|
||||
private String name;
|
||||
@ -44,13 +46,18 @@ public class CardFile {
|
||||
private String path;
|
||||
|
||||
public CardFile(String cardsDirectory) {
|
||||
this.cardsDirectory = cardsDirectory;
|
||||
this.parts = new ArrayList<>();
|
||||
this.connections = new ArrayList<>();
|
||||
this.name = generateAnonymousName();
|
||||
this.path = cardsDirectory + PATH_SEPARATOR + name + ".json";
|
||||
regeneratePath();
|
||||
this.backgroundColor = DEFAULT_BACKGROUND_COLOR;
|
||||
}
|
||||
|
||||
private void regeneratePath() {
|
||||
this.path = cardsDirectory + PATH_SEPARATOR + name + ".json";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private String generateAnonymousName() {
|
||||
return "unnamed-" + UUID.randomUUID().toString().substring(0, 6);
|
||||
@ -59,6 +66,7 @@ public class CardFile {
|
||||
@NonNull
|
||||
public CardFile setName(String name) {
|
||||
this.name = name;
|
||||
regeneratePath();
|
||||
|
||||
return this;
|
||||
}
|
||||
@ -191,16 +199,14 @@ public class CardFile {
|
||||
(color & 0x0000FF));
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
@NonNull
|
||||
public static CardFile load(String path, PartGrid grid) throws ErrorLoadingCardException, IOException {
|
||||
CardFile card = new CardFile(new File(path).getParent());
|
||||
|
||||
File file = new File(path);
|
||||
FileReader fileIn = null;
|
||||
List<PartConnection> connections = new LinkedList<>();
|
||||
|
||||
try {
|
||||
fileIn = new FileReader(file);
|
||||
try (FileReader fileIn = new FileReader(file)) {
|
||||
char[] data = new char[(int) file.length()];
|
||||
fileIn.read(data);
|
||||
JSONObject state = new JSONObject(new String(data));
|
||||
@ -226,8 +232,6 @@ public class CardFile {
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
throw new ErrorLoadingCardException(ErrorLoadingCardException.Reason.UNKNOWN_FORMAT);
|
||||
} finally {
|
||||
fileIn.close();
|
||||
}
|
||||
|
||||
return card;
|
||||
|
@ -1,13 +1,23 @@
|
||||
package com.codigoparallevar.minicards;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.larswerkman.holocolorpicker.ColorPicker;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -31,8 +41,7 @@ public class DeckPreviewActivity extends AppCompatActivity {
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
|
||||
.setAction("Action", null).show();
|
||||
createOpenCardDialog();
|
||||
}
|
||||
});
|
||||
|
||||
@ -44,6 +53,47 @@ public class DeckPreviewActivity extends AppCompatActivity {
|
||||
|
||||
}
|
||||
|
||||
private void createOpenCardDialog() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
|
||||
final View openCardOptions = (LayoutInflater.from(this)
|
||||
.inflate(R.layout.create_new_card_view, null));
|
||||
|
||||
final EditText cardNameEditText = (EditText) openCardOptions.findViewById(R.id.card_name_edit_text);
|
||||
final ColorPicker backgroundColorPicker = (ColorPicker) openCardOptions.findViewById(R.id.card_background_color_picker);
|
||||
|
||||
builder.setTitle("Create a new card")
|
||||
.setView(openCardOptions)
|
||||
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
}
|
||||
})
|
||||
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
CardFile cardfile = new CardFile(CardFile.getDefaultCardStorage(DeckPreviewActivity.this));
|
||||
cardfile.setName(cardNameEditText.getText().toString());
|
||||
cardfile.setBackgroundColor(backgroundColorPicker.getColor());
|
||||
|
||||
try {
|
||||
cardfile.save(DeckPreviewActivity.this);
|
||||
} catch (IOException e) {
|
||||
Log.e("Minicards DeckPreview", "Error creating card "+ e, e);
|
||||
Toast
|
||||
.makeText(DeckPreviewActivity.this, "Error creating card " + e, Toast.LENGTH_LONG)
|
||||
.show();
|
||||
return;
|
||||
}
|
||||
|
||||
CardActivity.openCard(DeckPreviewActivity.this, cardfile);
|
||||
}
|
||||
});
|
||||
|
||||
Dialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private PreviewCard[] listAvailableCards() {
|
||||
String cardsPath = CardFile.getDefaultCardStorage(this);
|
||||
File cardsDir = new File(cardsPath);
|
||||
|
@ -28,6 +28,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:theme="@style/AppTheme"
|
||||
app:srcCompat="@drawable/ic_add_black" />
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
41
app/src/main/res/layout/create_new_card_view.xml
Normal file
41
app/src/main/res/layout/create_new_card_view.xml
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_centerHorizontal="true">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/card_name_text_view"
|
||||
android:layout_width="81dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Card name"
|
||||
android:layout_alignBaseline="@id/card_name_edit_text"
|
||||
/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/card_name_edit_text"
|
||||
android:layout_width="225dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:layout_toRightOf="@id/card_name_text_view"
|
||||
android:text="My new card" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.larswerkman.holocolorpicker.ColorPicker
|
||||
android:id="@+id/card_background_color_picker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
<color name="colorPrimary">#066996</color>
|
||||
<color name="colorPrimaryDark">#044563</color>
|
||||
<color name="colorAccent">#b2ff59</color>
|
||||
<color name="colorAccent">#ffb300</color>
|
||||
|
||||
<color name="black_semi_transparent">#B2000000</color>
|
||||
<color name="background">#e5e5e5</color>
|
||||
|
Loading…
Reference in New Issue
Block a user