diff --git a/WRSD2/app/src/main/java/com/example/wrsd/AddDeviceActivity.java b/WRSD2/app/src/main/java/com/example/wrsd/AddDeviceActivity.java index e8c051a..f4a2e81 100644 --- a/WRSD2/app/src/main/java/com/example/wrsd/AddDeviceActivity.java +++ b/WRSD2/app/src/main/java/com/example/wrsd/AddDeviceActivity.java @@ -14,7 +14,7 @@ import java.util.List; public class AddDeviceActivity extends AppCompatActivity { - static String[] deviceTypes = new String[]{"Blinds", "Bulb", "Heater"}; + static String[] deviceTypes = new String[]{"Rolety", "Oświetlenie", "Ogrzewanie"}; Spinner deviceTypeDropdown; EditText editTextTextName; @@ -44,6 +44,18 @@ public class AddDeviceActivity extends AppCompatActivity { public void DeviceName(View view){ String editTextName = editTextTextName.getText().toString().trim(); + + if (editTextName.isEmpty()) { + editTextTextName.setError("Podaj nazwę"); + editTextTextName.requestFocus(); + return; + } + if (editTextTextName.getText().toString().contains(" ")){ + editTextTextName.setError("Nazwa nie może zawierać spacji"); + editTextTextName.requestFocus(); + return; + } + String deviceType = deviceTypeDropdown.getSelectedItem().toString(); Intent intent = new Intent(); intent.putExtra("name", editTextName); diff --git a/WRSD2/app/src/main/java/com/example/wrsd/BulbDevice.java b/WRSD2/app/src/main/java/com/example/wrsd/BulbDevice.java index f56843b..1a05252 100644 --- a/WRSD2/app/src/main/java/com/example/wrsd/BulbDevice.java +++ b/WRSD2/app/src/main/java/com/example/wrsd/BulbDevice.java @@ -9,7 +9,7 @@ public class BulbDevice extends Device{ public BulbDevice(String id, String name) { super(id, name, DeviceType.BULB); this.state = false; - this.brightness = 0; + this.brightness = 000; } public boolean isState() { @@ -32,6 +32,6 @@ public class BulbDevice extends Device{ public String toString() { String stateString = state? "1" : "0"; String brightnessString = Integer.toString(brightness); - return deviceType.toString() + name + "?" + stateString + brightnessString; + return deviceType.toString() + name + "?" + stateString + "?" + brightnessString; } } diff --git a/WRSD2/app/src/main/java/com/example/wrsd/DeviceSettings.java b/WRSD2/app/src/main/java/com/example/wrsd/DeviceSettings.java index f044808..813ed96 100644 --- a/WRSD2/app/src/main/java/com/example/wrsd/DeviceSettings.java +++ b/WRSD2/app/src/main/java/com/example/wrsd/DeviceSettings.java @@ -4,7 +4,11 @@ import static com.example.wrsd.RoomActivity_1.setWindowFlag; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; +import android.app.NotificationChannel; +import android.app.NotificationManager; import android.content.Intent; import android.graphics.Color; import android.os.Build; @@ -12,6 +16,7 @@ import android.os.Bundle; import android.view.View; import android.view.WindowManager; import android.widget.Button; +import android.widget.CompoundButton; import android.widget.SeekBar; import android.widget.Switch; import android.widget.TextView; @@ -26,10 +31,12 @@ import com.google.firebase.firestore.FirebaseFirestore; public class DeviceSettings extends AppCompatActivity { private Button deleteButton; - private TextView progressLabel; + private TextView progressLabel, roomText; private Switch stateSwitch; private SeekBar progressBar; - private String device, userEmail, type, room, code; + private String device, userEmail, type, room, code, state; + private Integer techNotification = 0; + private String onOff, tempTextView; @Override protected void onCreate(Bundle savedInstanceState) { @@ -47,6 +54,9 @@ public class DeviceSettings extends AppCompatActivity { progressLabel = (TextView) findViewById(R.id.progressLabel); stateSwitch = (Switch) findViewById(R.id.state); progressBar = (SeekBar) findViewById(R.id.progress); + roomText = (TextView) findViewById(R.id.textView4); + + stateSwitch.setChecked(true); progressLabel.setVisibility(View.INVISIBLE); stateSwitch.setVisibility(View.INVISIBLE); @@ -60,40 +70,204 @@ public class DeviceSettings extends AppCompatActivity { room = extras.getString("room"); type = extras.getString("type"); code = extras.getString("code"); +// state = extras.getString("state"); + roomText.setText(room); //The key argument here must match that used in the other activity - if (type.equals("Blinds")) { - stateSwitch.setText("Up/Down"); - stateSwitch.setVisibility(View.VISIBLE); - } else if (type.equals("Bulb")) { - stateSwitch.setText("On/Off"); - progressLabel.setText("Brightness"); - stateSwitch.setVisibility(View.VISIBLE); - progressLabel.setVisibility(View.VISIBLE); - progressBar.setVisibility(View.VISIBLE); - } else if (type.equals("Heater")) { - stateSwitch.setText("On/Off"); - progressLabel.setText("Temperature"); - stateSwitch.setVisibility(View.VISIBLE); - progressLabel.setVisibility(View.VISIBLE); - progressBar.setVisibility(View.VISIBLE); - } } +// if(state.equals("1")){ +// stateSwitch.setChecked(true); +// }else{ +// stateSwitch.setChecked(false); +// } + deleteButton = (Button) findViewById(R.id.deleteButton); FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); + stateSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if(isChecked==true){ + onOff = "włączone"; + }else{ + onOff = "wyłączone"; + } + } + }); + + if (type.equals("Blinds")) { + if(onOff == "włączone"){ + stateSwitch.setText("Opuść rolety"); + + }else{ + stateSwitch.setText("Podnieś rolety"); + } + stateSwitch.setVisibility(View.VISIBLE); + } else if (type.equals("Bulb")) { + if(onOff == "włączone"){ + stateSwitch.setText("Wyłącz oświetlenie"); + + }else{ + stateSwitch.setText("Włącz oświetlenie"); + } + progressLabel.setText("Jasność"); + tempTextView = "Jasność"; + stateSwitch.setVisibility(View.VISIBLE); + progressLabel.setVisibility(View.VISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else if (type.equals("Heater")) { + if(onOff == "włączone"){ + stateSwitch.setText("Wyłącz ogrzewanie"); + + }else{ + stateSwitch.setText("Włącz ogrzewanie"); + } + tempTextView = "Temperatura"; + progressLabel.setText("Temperatura"); + stateSwitch.setVisibility(View.VISIBLE); + progressLabel.setVisibility(View.VISIBLE); + progressBar.setVisibility(View.VISIBLE); + } + deleteButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ DocumentReference docRef = rootRef.collection("users").document(userEmail).collection("rooms").document(room); docRef.update("Urzadzenia", FieldValue.arrayRemove(code)); + Toast.makeText(getApplicationContext(), "Usunięto " + device, Toast.LENGTH_LONG).show(); + + Intent intent = new Intent(); + intent.putExtra("name", "!"); + intent.putExtra("type", "!"); + setResult(RESULT_OK, intent); finish(); } }); + + progressBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + int progress = progressBar.getProgress(); + + boolean started = false; //use this variable to see whether the user clicked the right place + + + @Override + public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { + if(!started){ //check to see if user clicks the right place + //if the user clicks within a specific threshold + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ + NotificationChannel channel = new NotificationChannel("Moje powiadomienie", "Moje powiadomienie", NotificationManager.IMPORTANCE_DEFAULT ); + NotificationManager manager = getSystemService(NotificationManager.class); + manager.createNotificationChannel(channel); + + } + + NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), "Moje powiadomienie"); + builder.setContentTitle("WRSD Home"); + builder.setContentText(tempTextView + " w urządzeniu " + device + " w pokoju " + room + " została zmieniona."); + builder.setStyle( new + NotificationCompat.BigTextStyle().bigText(tempTextView + " w urządzeniu " + device + " w pokoju: " + room + " została zmieniona.")); + builder.setSmallIcon(R.drawable.wrsdlogo); + builder.setAutoCancel(false); + + NotificationManagerCompat managerCompat = NotificationManagerCompat.from(getApplicationContext()); + managerCompat.notify(techNotification,builder.build()); + techNotification++; + } + + if(started) { + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ + NotificationChannel channel = new NotificationChannel("Moje powiadomienie", "Moje powiadomienie", NotificationManager.IMPORTANCE_DEFAULT ); + NotificationManager manager = getSystemService(NotificationManager.class); + manager.createNotificationChannel(channel); + + } + + NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), "Moje powiadomienie"); + builder.setContentTitle("WRSD Home"); + builder.setContentText(tempTextView + " w urządzeniu " + device + " w pokoju: " + room + " została zmieniona."); + builder.setStyle( new + NotificationCompat.BigTextStyle().bigText(tempTextView + " w urządzeniu " + device + " w pokoju: " + room + " została zmieniona.")); + builder.setSmallIcon(R.drawable.wrsdlogo); + builder.setAutoCancel(false); + + NotificationManagerCompat managerCompat = NotificationManagerCompat.from(getApplicationContext()); + managerCompat.notify(techNotification,builder.build()); + techNotification++; + + } + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + System.out.println("onStartTracking:" + progress + "/" + seekBar.getMax()); + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + System.out.println("onStopTracking:" + progress + "/" + seekBar.getMax()); + //DO WHATEVER YOU NEED TO DO WHEN PROGRESS IS DONE CHANGING + + started = false; //remember to set variable to false + } + + }); + + + } + + + + public void Notification(View view){ + if (type.equals("Bulb")) { + if (onOff == "włączone") { + stateSwitch.setText("Wyłącz oświetlenie"); + + } else { + stateSwitch.setText("Włącz oświetlenie"); + } + }else if (type.equals("Heater")) { + if (onOff == "włączone") { + stateSwitch.setText("Wyłącz ogrzewanie"); + + } else { + stateSwitch.setText("Włącz ogrzewanie"); + } + }else if (type.equals("Blinds")) { + if (onOff == "włączone") { + stateSwitch.setText("Opuść rolety"); + + } else { + stateSwitch.setText("Podnieś rolety"); + } + } + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ + NotificationChannel channel = new NotificationChannel("Moje powiadomienie", "Moje powiadomienie", NotificationManager.IMPORTANCE_DEFAULT ); + NotificationManager manager = getSystemService(NotificationManager.class); + manager.createNotificationChannel(channel); + + } + + NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), "Moje powiadomienie"); + builder.setContentTitle("WRSD Home"); + builder.setContentText("Urządzenie: " + device + " w pokoju: " + room + " zostało " + onOff); + builder.setStyle( new + NotificationCompat.BigTextStyle().bigText("Urządzenie: " + device + " w pokoju: " + room + " zostało " + onOff)); + builder.setSmallIcon(R.drawable.wrsdlogo); + builder.setAutoCancel(false); + + NotificationManagerCompat managerCompat = NotificationManagerCompat.from(getApplicationContext()); + managerCompat.notify(techNotification,builder.build()); + techNotification++; + + } + + public void GetSeekBarValue(){ + } } \ No newline at end of file diff --git a/WRSD2/app/src/main/java/com/example/wrsd/HeaterDevice.java b/WRSD2/app/src/main/java/com/example/wrsd/HeaterDevice.java index 8cff83c..d3a75e5 100644 --- a/WRSD2/app/src/main/java/com/example/wrsd/HeaterDevice.java +++ b/WRSD2/app/src/main/java/com/example/wrsd/HeaterDevice.java @@ -9,7 +9,7 @@ public class HeaterDevice extends Device { public HeaterDevice(String id, String name) { super(id, name, DeviceType.HEATER); this.state = false; - this.temperature = 20; + this.temperature = 000; } public boolean isState() { @@ -32,6 +32,6 @@ public class HeaterDevice extends Device { public String toString() { String stateString = state? "1" : "0"; String temperatureString = Integer.toString(temperature); - return deviceType.toString() + name + "?" + stateString + temperatureString; + return deviceType.toString() + name + "?" + stateString + "?" + temperatureString; } } diff --git a/WRSD2/app/src/main/java/com/example/wrsd/RoomActivity_1.java b/WRSD2/app/src/main/java/com/example/wrsd/RoomActivity_1.java index 023069e..2934a21 100644 --- a/WRSD2/app/src/main/java/com/example/wrsd/RoomActivity_1.java +++ b/WRSD2/app/src/main/java/com/example/wrsd/RoomActivity_1.java @@ -14,9 +14,12 @@ import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.Adapter; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import com.example.wrsd.databinding.ActivityDeviceSettingsBinding; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.firestore.DocumentReference; @@ -36,10 +39,12 @@ public class RoomActivity_1 extends AppCompatActivity { public List temp = new ArrayList<>(); private RecyclerView recyclerView; private SingleRoomAdapter mAdapter; - private String userEmail; - public String roomvalue; + private String userEmail, code; + public String roomvalue, deviceState; private TextView roomName1; + public Integer la; TextView myTextView; + ImageView ivDevice; public static void setWindowFlag(Activity activity, final int bits, boolean on) { @@ -86,6 +91,7 @@ public class RoomActivity_1 extends AppCompatActivity { recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(mAdapter); + roomName1 = (TextView) findViewById(R.id.textView); roomName1.setText(roomvalue); @@ -97,6 +103,7 @@ public class RoomActivity_1 extends AppCompatActivity { private void getData() { deviceFromBase.clear(); + deviceList.clear(); FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); rootRef.collection("users").document(userEmail).collection("rooms").document(roomvalue) @@ -119,7 +126,7 @@ public class RoomActivity_1 extends AppCompatActivity { } } } else { - Toast.makeText(getApplicationContext(), "Brak urządzeń w pokoju", Toast.LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), "Błąd", Toast.LENGTH_LONG).show(); } } }).addOnFailureListener(new OnFailureListener() { @@ -145,6 +152,7 @@ public class RoomActivity_1 extends AppCompatActivity { String[] parts = encodedDevice.split("\\?"); String deviceType = parts[0].substring(0,1); String deviceName = parts[0].substring(1); + deviceState = parts[1]; String deviceId = getLastUsedId(); if (deviceType.equals(DeviceType.BLINDS.toString())) { @@ -184,10 +192,10 @@ public class RoomActivity_1 extends AppCompatActivity { // } - public void onBackClicked(View view) { - startActivity(new Intent(getApplicationContext(), MainActivity.class)); - finish(); - } +// public void onBackClicked(View view) { +// startActivity(new Intent(getApplicationContext(), MainActivity.class)); +// finish(); +// } public void addDevice(View view){ @@ -195,6 +203,7 @@ public class RoomActivity_1 extends AppCompatActivity { startActivityForResult(i, 1); } + public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) { @@ -202,24 +211,40 @@ public class RoomActivity_1 extends AppCompatActivity { FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); String strEditText = data.getStringExtra("name"); String deviceType = data.getStringExtra("type"); - Device newDevice; - String deviceId = getLastUsedId(); + if(!deviceType.equals("!")){ + Device newDevice; + String deviceId = getLastUsedId(); - if (deviceType.equals("Blinds")) { - newDevice = new BlindsDevice(deviceId, strEditText); - } else if (deviceType.equals("Bulb")) { - newDevice = new BulbDevice(deviceId, strEditText); - } else if (deviceType.equals("Heater")) { - newDevice = new HeaterDevice(deviceId, strEditText); - } else { - newDevice = new BlindsDevice(deviceId, strEditText); + if (deviceType.equals("Rolety")) { + newDevice = new BlindsDevice(deviceId, strEditText); + } else if (deviceType.equals("Oświetlenie")) { + newDevice = new BulbDevice(deviceId, strEditText); + } else if (deviceType.equals("Ogrzewanie")) { + newDevice = new HeaterDevice(deviceId, strEditText); + } else { + newDevice = new BlindsDevice(deviceId, strEditText); + } + deviceList.add(newDevice); + + mAdapter.notifyDataSetChanged(); + + DocumentReference docRef = rootRef.collection("users").document(userEmail).collection("rooms").document(roomvalue); + docRef.update("Urzadzenia", FieldValue.arrayUnion(newDevice.toString())); + Toast.makeText(getApplicationContext(), "Dodano " + strEditText, Toast.LENGTH_LONG).show(); + + }else{ + for(int j=0; j @@ -18,38 +19,36 @@ android:minHeight="48dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.129" + app:layout_constraintHorizontal_bias="0.233" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.311" /> + app:layout_constraintVertical_bias="0.439" /> + app:layout_constraintVertical_bias="0.176" />