diff --git a/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialog.java b/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialog.java new file mode 100644 index 0000000..0d286bc --- /dev/null +++ b/app/src/main/java/de/jg_cody/Teraplex/AddButtonDialog.java @@ -0,0 +1,66 @@ +package de.jg_cody.Teraplex; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.app.AlertDialog; + +import android.view.LayoutInflater; +import android.view.View; +import android.widget.EditText; + +import androidx.fragment.app.DialogFragment; + + +public class AddButtonDialog extends DialogFragment { + private EditText editTextUsername; + private EditText editTextPassword; + private AddButtonDialogListener listener; + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + + LayoutInflater inflater = getActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.addbuttondialog, null); + + builder.setView(view) + .setTitle("BUTTON") + .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + + } + }) + .setPositiveButton("ADD", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + String username = editTextUsername.getText().toString(); + String password = editTextPassword.getText().toString(); + listener.applyTexts(username, password); + } + }); + + editTextUsername = view.findViewById(R.id.button_name); + editTextPassword = view.findViewById(R.id.button_command); + + return builder.create(); + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + + try { + listener = (AddButtonDialogListener) context; + } catch (ClassCastException e) { + throw new ClassCastException(context.toString() + + "must implement ExampleDialogListener"); + } + } + + public interface AddButtonDialogListener { + void applyTexts(String username, String password); + } +} \ No newline at end of file diff --git a/app/src/main/java/de/jg_cody/Teraplex/IntroActivity.java b/app/src/main/java/de/jg_cody/Teraplex/IntroActivity.java index 5cc4058..acdac5e 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/IntroActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/IntroActivity.java @@ -23,6 +23,7 @@ private AppBarConfiguration mAppBarConfiguration; public void run() { //Do something after 100ms Intent m = new Intent(getApplicationContext(),MainActivity.class); + m.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(m); } }, 4000); diff --git a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java index 5108413..c99d956 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java @@ -3,16 +3,27 @@ package de.jg_cody.Teraplex; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Resources; +import android.graphics.Color; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; import android.util.Log; +import android.util.TypedValue; +import android.view.MenuItem; import android.view.View; import android.view.Menu; import android.widget.Button; +import android.widget.TextView; import android.widget.Toast; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.navigation.NavigationView; +import com.google.android.material.snackbar.Snackbar; +import androidx.fragment.app.FragmentTransaction; import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.navigation.ui.AppBarConfiguration; @@ -21,25 +32,35 @@ import androidx.drawerlayout.widget.DrawerLayout; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import de.jg_cody.Teraplex.ui.Credits.CreditsFragment; +import de.jg_cody.Teraplex.ui.Einstellungen.EinstellungenFragment; import de.jg_cody.Teraplex.ui.Konsole.KonsoleFragment; import de.jg_cody.Teraplex.ui.home.HomeFragment; +import static java.security.AccessController.getContext; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity implements AddButtonDialog.AddButtonDialogListener { private AppBarConfiguration mAppBarConfiguration; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_main); + Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); - FloatingActionButton fab = findViewById(R.id.fab); - fab.setOnClickListener(new View.OnClickListener() { + FloatingActionButton addfab = findViewById(R.id.addbutton_fab); + addfab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openDialog(); + } + }); + + FloatingActionButton mfab = findViewById(R.id.fab); + mfab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { @@ -54,7 +75,7 @@ public class MainActivity extends AppCompatActivity { // Passing each menu ID as a set of Ids because each // menu should be considered as top level destinations. mAppBarConfiguration = new AppBarConfiguration.Builder( - R.id.nav_home, R.id.nav_badezimmer, R.id.nav_kueche, R.id.nav_zeitsteuerung, R.id.nav_schlafzimmer, R.id.nav_flur, R.id.nav_credits, R.id.nav_konsole) + R.id.nav_home, R.id.nav_einstellungen, R.id.nav_kueche, R.id.nav_zeitsteuerung, R.id.nav_schlafzimmer, R.id.nav_flur, R.id.nav_credits, R.id.nav_konsole) .setOpenableLayout(drawer) .build(); NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); @@ -68,6 +89,20 @@ public class MainActivity extends AppCompatActivity { public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); + for (int i = 0; i < menu.size(); i++) { + MenuItem menuItem = menu.getItem(i); + SpannableString spannable = new SpannableString( + menu.getItem(i).getTitle().toString() + ); + TypedValue typedValue = new TypedValue(); + Resources.Theme theme = getTheme(); + theme.resolveAttribute(R.attr.colorOnPrimary, typedValue, true); + int color = typedValue.data; + spannable.setSpan(new ForegroundColorSpan(color), + 0, spannable.length(), 0); + menuItem.setTitle(spannable); + } + return true; } @@ -86,4 +121,48 @@ public class MainActivity extends AppCompatActivity { startActivity(startMain); } + public void openDialog() { + AddButtonDialog AddButtonDialog = new AddButtonDialog(); + AddButtonDialog.show(getSupportFragmentManager(), "example dialog"); + } + + @Override + public void applyTexts(String username, String password) { + + } + + public void menurighttopeinstellungen(MenuItem i) { + Toast.makeText(this, "SETTINGS", Toast.LENGTH_LONG).show(); + EinstellungenFragment pef = new EinstellungenFragment(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.nav_host_fragment, pef).setPrimaryNavigationFragment(pef); + transaction.addToBackStack(null); + transaction.commit(); + getSupportActionBar().setTitle(R.string.menu_einstellungen); + } + + public void menurighttopcredits(MenuItem i) { + Toast.makeText(this, "CREDITS", Toast.LENGTH_LONG).show(); + CreditsFragment pef = new CreditsFragment(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.nav_host_fragment, pef).setPrimaryNavigationFragment(pef); + transaction.addToBackStack(null); + transaction.commit(); + getSupportActionBar().setTitle(R.string.menu_credits); + } + + public void menurighttopdocumentation(MenuItem i) { + Toast.makeText(this, "DOCUMENTATION", Toast.LENGTH_LONG).show(); + Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.jg-cody.de/")); + startActivity(in); + } + + public void menurighttopschliessen(MenuItem i) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + finishAffinity(); + } else { + finishAndRemoveTask(); + } + } + } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/badezimmer/BadezimmerFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java similarity index 56% rename from app/src/main/java/de/jg_cody/Teraplex/ui/badezimmer/BadezimmerFragment.java rename to app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java index 3148be9..6fa77a1 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/badezimmer/BadezimmerFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java @@ -1,4 +1,4 @@ -package de.jg_cody.Teraplex.ui.badezimmer; +package de.jg_cody.Teraplex.ui.Einstellungen; import android.os.Bundle; import android.view.LayoutInflater; @@ -14,17 +14,17 @@ import androidx.lifecycle.ViewModelProvider; import de.jg_cody.Teraplex.R; -public class BadezimmerFragment extends Fragment { +public class EinstellungenFragment extends Fragment { - private BadezimmerViewModel badezimmerViewModel; + private EinstellungenViewModel einstellungenViewModel; public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - badezimmerViewModel = - new ViewModelProvider(this).get(BadezimmerViewModel.class); - View root = inflater.inflate(R.layout.fragment_badezimmer, container, false); - final TextView textView = root.findViewById(R.id.text_badezimmer); - badezimmerViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { + einstellungenViewModel = + new ViewModelProvider(this).get(EinstellungenViewModel.class); + View root = inflater.inflate(R.layout.fragment_einstellungen, container, false); + final TextView textView = root.findViewById(R.id.text_einstellungen); + einstellungenViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(@Nullable String s) { textView.setText(s); diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/badezimmer/BadezimmerViewModel.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenViewModel.java similarity index 60% rename from app/src/main/java/de/jg_cody/Teraplex/ui/badezimmer/BadezimmerViewModel.java rename to app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenViewModel.java index 555e4af..d9b24ee 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/badezimmer/BadezimmerViewModel.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenViewModel.java @@ -1,16 +1,16 @@ -package de.jg_cody.Teraplex.ui.badezimmer; +package de.jg_cody.Teraplex.ui.Einstellungen; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -public class BadezimmerViewModel extends ViewModel { +public class EinstellungenViewModel extends ViewModel { private MutableLiveData mText; - public BadezimmerViewModel() { + public EinstellungenViewModel() { mText = new MutableLiveData<>(); - mText.setValue("BADEZIMMER"); + mText.setValue("EINSTELLUNGEN"); } public LiveData getText() { diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerFragment.java index 1513eee..bbd44a2 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerFragment.java @@ -7,9 +7,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import android.widget.EditText; import android.widget.TextView; -import android.widget.TimePicker; import android.widget.Toast; import androidx.annotation.NonNull; diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerViewModel.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerViewModel.java index 83af835..67a12f3 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerViewModel.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Schlafzimmer/SchlafzimmerViewModel.java @@ -10,7 +10,7 @@ public class SchlafzimmerViewModel extends ViewModel { public SchlafzimmerViewModel() { mText = new MutableLiveData<>(); - mText.setValue("SCHLAFZIMMER"); + mText.setValue("EINSTELLUNGEN"); } public LiveData getText() { diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java index 7f6c233..45c3d93 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java @@ -49,7 +49,7 @@ public class HomeFragment extends Fragment { final TextView textView = root.findViewById(R.id.text_home); final TextView login_data = root.findViewById(R.id.login_data); if (user == null || ip == null) { - login_data.setText(""); + login_data.setText("Please connect to your automationserver!"); } else { login_data.setText("Sie sind als " + user + " bei " + ip + " angemeldet!"); } @@ -60,8 +60,8 @@ public class HomeFragment extends Fragment { textView.setText(s); } }); - userInput = (EditText) root.findViewById(R.id.userInput); - passwordInput = (EditText) root.findViewById(R.id.passwordInput); + userInput = (EditText) root.findViewById(R.id.loginuserInput); + passwordInput = (EditText) root.findViewById(R.id.loginpasswordInput); ipInput = (EditText) root.findViewById(R.id.ipInput); loginButton = (Button) root.findViewById(R.id.loginButton); loginButton.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/res/drawable/add_black_24dp.xml b/app/src/main/res/drawable/add_black_24dp.xml new file mode 100644 index 0000000..be33fe4 --- /dev/null +++ b/app/src/main/res/drawable/add_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/code_black_24dp.xml b/app/src/main/res/drawable/code_black_24dp.xml new file mode 100644 index 0000000..ecd966b --- /dev/null +++ b/app/src/main/res/drawable/code_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/contact_support_black_24dp.xml b/app/src/main/res/drawable/contact_support_black_24dp.xml new file mode 100644 index 0000000..c02e281 --- /dev/null +++ b/app/src/main/res/drawable/contact_support_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/home_black_24dp.xml b/app/src/main/res/drawable/home_black_24dp.xml new file mode 100644 index 0000000..a35f1ef --- /dev/null +++ b/app/src/main/res/drawable/home_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/remove_black_24dp.xml b/app/src/main/res/drawable/remove_black_24dp.xml new file mode 100644 index 0000000..41d4592 --- /dev/null +++ b/app/src/main/res/drawable/remove_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/schedule_black_24dp.xml b/app/src/main/res/drawable/schedule_black_24dp.xml new file mode 100644 index 0000000..1cba46c --- /dev/null +++ b/app/src/main/res/drawable/schedule_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/teraplex_login.jpg b/app/src/main/res/drawable/teraplex_login.jpg new file mode 100644 index 0000000..5d861f4 Binary files /dev/null and b/app/src/main/res/drawable/teraplex_login.jpg differ diff --git a/app/src/main/res/layout-v23/app_bar_main.xml b/app/src/main/res/layout-v23/app_bar_main.xml index 342fc24..9cdb77c 100644 --- a/app/src/main/res/layout-v23/app_bar_main.xml +++ b/app/src/main/res/layout-v23/app_bar_main.xml @@ -26,6 +26,26 @@ android:layout_margin="@dimen/fab_margin" app:srcCompat="?android:attr/fingerprintAuthDrawable" /> + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_badezimmer.xml b/app/src/main/res/layout/fragment_badezimmer.xml deleted file mode 100644 index c3a5463..0000000 --- a/app/src/main/res/layout/fragment_badezimmer.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_credits.xml b/app/src/main/res/layout/fragment_credits.xml index 2078696..4c24f1a 100644 --- a/app/src/main/res/layout/fragment_credits.xml +++ b/app/src/main/res/layout/fragment_credits.xml @@ -5,8 +5,20 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.Credits.CreditsFragment" - android:background="@drawable/background"> + tools:context=".ui.Credits.CreditsFragment"> + + + + + + + + + + + + + + + + + + + + + + +