This commit is contained in:
JG-Cody 2024-02-27 20:07:04 +01:00
parent 4245d7fbb0
commit 327e3e8615
21 changed files with 415 additions and 98 deletions

View File

@ -1,17 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\Cody\.android\avd\for_Website.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-02-25T16:19:56.097941500Z" />
<value>
<entry key="app">
<State>
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\Cody\.android\avd\for_Website.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-02-27T15:55:21.747795900Z" />
</State>
</entry>
</value>
</component>
</project>

View File

@ -4,16 +4,15 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="jbr-17" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
</option>
</component>

View File

@ -17,6 +17,10 @@ import android.view.MenuItem;
import android.view.View;
import android.view.Menu;
import android.view.LayoutInflater;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.Toast;
import com.example.onetap_ssh.fragment.AboutFragment;
import com.example.onetap_ssh.fragment.SettingsFragment;
@ -28,6 +32,7 @@ import com.example.onetap_ssh.util.ThemeUtil;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.core.view.GravityCompat;
import androidx.fragment.app.Fragment;
@ -67,19 +72,12 @@ public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ThemeUtil.loadBackground(this);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.appBarMain.toolbar);
binding.appBarMain.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();
}
});
DrawerLayout drawer = findViewById(R.id.drawer_layout);
DrawerLayout drawer = findViewById(R.id.app_background);
NavigationView navigationView = binding.navView;
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
@ -92,7 +90,168 @@ public class MainActivity extends BaseActivity {
NavigationUI.setupWithNavController(navigationView, navController);
SharedPreferences p = getSharedPreferences("appsettings", Activity.MODE_PRIVATE);
button_vibration = p.getBoolean("Vibration", false );
((Switch) navigationView.getMenu().getItem(2).getActionView().findViewById(R.id.switch_editmode)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
editmode = isChecked;
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavHostFragment nhf = (NavHostFragment) currentFragment;
assert nhf != null;
Fragment childfragment = nhf.getChildFragmentManager().getFragments().get(0);
if (childfragment instanceof TabsFragment) {
try {
((TabsFragment) childfragment).load();
} catch (JSONException e) {
e.printStackTrace();
}
}
navigationView.getMenu().getItem(3).setVisible(editmode);
navigationView.getMenu().getItem(4).setVisible(editmode);
}
});
navigationView.getMenu().getItem(3).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.addtabdialog, null);
EditText editText_name = view.findViewById(R.id.dialogtab_editText_name);
mBuilder.setView(view)
.setTitle(R.string.menu_add);
mBuilder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
String tabname = editText_name.getText().toString().trim();
SharedPreferences p = getSharedPreferences("appsettings", MODE_PRIVATE);
String tabsString = p.getString("tabs", null);
List<String> tabs = new ArrayList<String>();
if (tabsString != null) {
try {
JSONArray tabsArray = new JSONArray(tabsString);
for (int i = 0; i < tabsArray.length(); i++) {
tabs.add(tabsArray.getString(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
if (tabs.contains(tabname)) {
AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(getString(R.string.tabname))
.setMessage(getString(R.string.tabname_already_exist))
// Specifying a listener allows you to take an action before dismissing the dialog.
// The dialog is automatically dismissed when a dialog button is clicked.
.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
}
}).create();
Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round);
mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id
mDialog.show();
return;
}
if (tabname.isEmpty()) {
AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(getString(R.string.tabname))
.setMessage(getString(R.string.invalid))
// Specifying a listener allows you to take an action before dismissing the dialog.
// The dialog is automatically dismissed when a dialog button is clicked.
.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
}
}).create();
Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round);
mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id
mDialog.show();
return;
}
MenuItem item = navigationView.getMenu().add(R.id.dynamicgroup, lastID++, 3, tabname);
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
DrawerLayout mDrawerLayout;
mDrawerLayout = (DrawerLayout) findViewById(R.id.app_background);
mDrawerLayout.closeDrawer(GravityCompat.START);
Objects.requireNonNull(getSupportActionBar()).setTitle(tabname);
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavHostFragment nhf = (NavHostFragment) currentFragment;
assert nhf != null;
nhf.getChildFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new TabsFragment(tabname)).commit();
return true;
}
});
tabitems.put(tabname, item);
tabs.add(tabname);
SharedPreferences.Editor editor = p.edit();
editor.putString("tabs", new JSONArray(tabs).toString());
editor.apply();
}
});
mBuilder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (button_vibration) {
Vibrator vr = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
assert vr != null;
vr.vibrate(100);
}
}
});
AlertDialog mDialog = mBuilder.create();
Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(R.drawable.button_round);
mDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; //style id
mDialog.show();
return true;
}
});
//launchApp();
navigationView.getMenu().getItem(4).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@ -193,7 +352,7 @@ public class MainActivity extends BaseActivity {
vr.vibrate(100);
}
DrawerLayout mDrawerLayout;
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout = (DrawerLayout) findViewById(R.id.app_background);
mDrawerLayout.closeDrawer(GravityCompat.START);
Objects.requireNonNull(getSupportActionBar()).setTitle(tab);
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
@ -221,6 +380,7 @@ public class MainActivity extends BaseActivity {
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
@ -350,4 +510,9 @@ public class MainActivity extends BaseActivity {
super.recreate();
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
}

View File

@ -0,0 +1,129 @@
package com.example.onetap_ssh;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.OvershootInterpolator;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
public class MovableFloatingActionButton extends FloatingActionButton implements View.OnTouchListener {
CustomClickListener customClickListener;
private final static float CLICK_DRAG_TOLERANCE = 10; // Often, there will be a slight, unintentional, drag when the user taps the FAB, so we need to account for this.
private float downRawX, downRawY;
private float dX, dY;
int viewWidth;
int viewHeight;
int parentWidth;
int parentHeight;
float newX;
float newY;
public MovableFloatingActionButton(Context context) {
super(context);
init();
}
public MovableFloatingActionButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MovableFloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
setOnTouchListener(this);
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
int action = motionEvent.getAction();
if (action == MotionEvent.ACTION_DOWN) {
downRawX = motionEvent.getRawX();
downRawY = motionEvent.getRawY();
dX = view.getX() - downRawX;
dY = view.getY() - downRawY;
return false; // not Consumed for ripple effect
} else if (action == MotionEvent.ACTION_MOVE) {
viewWidth = view.getWidth();
viewHeight = view.getHeight();
View viewParent = (View) view.getParent();
parentWidth = viewParent.getWidth();
parentHeight = viewParent.getHeight();
newX = motionEvent.getRawX() + dX;
newX = Math.max(layoutParams.leftMargin, newX); // Don't allow the FAB past the left hand side of the parent
newX = Math.min(parentWidth - viewWidth - layoutParams.rightMargin, newX); // Don't allow the FAB past the right hand side of the parent
newY = motionEvent.getRawY() + dY;
newY = Math.max(layoutParams.topMargin, newY); // Don't allow the FAB past the top of the parent
newY = Math.min(parentHeight - viewHeight - layoutParams.bottomMargin, newY); // Don't allow the FAB past the bottom of the parent
view.animate()
.x(newX)
.y(newY)
.setDuration(0)
.start();
return true; // Consumed
} else if (action == MotionEvent.ACTION_UP) {
float upRawX = motionEvent.getRawX();
float upRawY = motionEvent.getRawY();
float upDX = upRawX - downRawX;
float upDY = upRawY - downRawY;
if (newX > ((parentWidth - viewWidth - layoutParams.rightMargin) / 2)) {
newX = parentWidth - viewWidth - layoutParams.rightMargin;
} else {
newX = layoutParams.leftMargin;
}
view.animate()
.x(newX)
.y(newY)
.setInterpolator(new OvershootInterpolator())
.setDuration(600)
.start();
if (Math.abs(upDX) < CLICK_DRAG_TOLERANCE && Math.abs(upDY) < CLICK_DRAG_TOLERANCE) { // A click
if (customClickListener != null) {
customClickListener.onClick(view);
}
return false;// not Consumed for ripple effect
} else { // A drag
return false; // not Consumed for ripple effect
}
} else {
return super.onTouchEvent(motionEvent);
}
}
public interface CustomClickListener {
void onClick(View view);
}
}

View File

@ -66,12 +66,7 @@ public class HomeFragment extends Fragment {
View root = inflater.inflate(R.layout.fragment_home, container, false);
SharedPreferences p = requireContext().getSharedPreferences("appsettings", Activity.MODE_PRIVATE);
String Background = p.getString("Background", null);
if (Background != null) {
ImageView I = root.findViewById(R.id.Background);
byte[] BA = Base64.decode(Background, Base64.DEFAULT);
I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth())));
I.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
final TextView textView = root.findViewById(R.id.text_home);
final TextView login_data = root.findViewById(R.id.login_data);
if (user == null || ip == null) {

View File

@ -66,12 +66,7 @@ public class TabsFragment extends Fragment implements AddButtonDialogSingle.AddB
View root = inflater.inflate(R.layout.fragment_tabs, container, false);
SharedPreferences p = requireContext().getSharedPreferences("appsettings", Activity.MODE_PRIVATE);
String Background = p.getString("Background", null);
if (Background != null) {
ImageView I = root.findViewById(R.id.Background);
byte[] BA = Base64.decode(Background, Base64.DEFAULT);
I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth())));
I.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
listView = root.findViewById(R.id.listView);

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="0dp"
android:color="#FFFFFF" />
<gradient
android:angle="90"
android:endColor="?attr/colorPrimary"
android:startColor="?attr/colorSecondary" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp" />
</shape>
</item>
<item
android:bottom="0dp"
android:left="0dp"
android:right="2dp"
android:top="0dp">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="0dp"
android:color="#FFFFFF" />
<gradient
android:angle="180"
android:endColor="?attr/colorOnBackground"
android:startColor="?attr/colorOnBackground" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp" />
</shape>
</item>
</layer-list>

View File

@ -5,7 +5,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:id="@+id/drawer_layout"
android:id="@+id/app_background"
tools:openDrawer="start">
<include
@ -21,5 +22,6 @@
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
app:menu="@menu/activity_main_drawer"
android:background="@drawable/sidemenu"/>
</androidx.drawerlayout.widget.DrawerLayout>

View File

@ -20,13 +20,6 @@
<include layout="@layout/content_main" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="@dimen/fab_margin"
android:layout_marginBottom="16dp"
app:srcCompat="@android:drawable/ic_dialog_email" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -8,7 +8,7 @@
android:orientation="horizontal">
<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/doubleButton_bLeft"
android:layout_width="0dp"
android:layout_height="40dp"
@ -18,7 +18,7 @@
android:text="Button1"
app:backgroundTint="@null" />
<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/doubleButton_text"
android:layout_width="0dp"
android:layout_height="40dp"
@ -28,7 +28,7 @@
android:text="Button1"
app:backgroundTint="@null" />
<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/doubleButton_bRight"
android:layout_width="0dp"
android:layout_height="40dp"
@ -46,7 +46,7 @@
android:layout_margin="5dp"
android:layout_weight="0"
app:srcCompat="@drawable/mode_edit_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>
@ -58,7 +58,7 @@
android:layout_gravity="center"
android:layout_margin="5dp"
app:srcCompat="@drawable/clear_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>

View File

@ -5,12 +5,19 @@
android:padding="16dp"
android:orientation="vertical" >
<EditText
android:id="@+id/dialogexport_editText_name"
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/filename"
android:inputType="textPersonName" />
android:layout_marginTop="10dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/dialogexport_editText_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/filename"
android:inputType="textPassword"/>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>

View File

@ -7,7 +7,6 @@
android:clickable="true"
android:hapticFeedbackEnabled="true"
android:padding="25dp"
android:background="@drawable/background_red_blue"
tools:context=".ui.home.HomeFragment">

View File

@ -7,13 +7,16 @@
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/Background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80FFFFFF"
android:scaleType="centerCrop"
android:src="@drawable/background_red_blue" />
<com.example.onetap_ssh.MovableFloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="16dp"
android:hapticFeedbackEnabled="true"
android:src="@drawable/add_black_24dp"
app:backgroundTint="?attr/colorTheme1" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listView"

View File

@ -28,7 +28,7 @@
android:layout_weight="0"
android:visibility="visible"
app:srcCompat="@drawable/mode_edit_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>
@ -41,7 +41,7 @@
android:layout_margin="5dp"
android:visibility="visible"
app:srcCompat="@drawable/clear_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>

View File

@ -15,25 +15,23 @@
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_height="120dp"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:src="@drawable/teraplex_logo"
app:tint="@color/mtrl_btn_text_color_selector"
android:src="@drawable/onetap_ssh"
app:tint="?android:attr/textColor"
android:contentDescription="TODO" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/ssh_remote"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="@color/mtrl_btn_text_color_selector" />
android:text="@string/app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="WWW.JG-CODY.DE"
android:textColor="@color/mtrl_btn_text_color_selector" />
android:text="onetap-ssh.com"/>
</LinearLayout>

View File

@ -7,7 +7,7 @@
android:layout_height="wrap_content">
<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/singleButton_text"
android:layout_width="10dp"
android:layout_height="40dp"
@ -18,7 +18,7 @@
android:text="TEXT"
app:backgroundTint="@null" />
<Button
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/singleButton_button"
android:layout_width="0dp"
android:layout_height="40dp"
@ -37,7 +37,7 @@
android:layout_weight="0"
android:visibility="visible"
app:srcCompat="@drawable/mode_edit_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>
@ -51,7 +51,7 @@
android:layout_weight="0"
android:visibility="visible"
app:srcCompat="@drawable/clear_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>

View File

@ -11,20 +11,6 @@
android:layout_height="40dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/image_edit"
android:layout_width="00dp"
android:layout_height="00dp"
android:layout_gravity="center"
android:layout_margin="5dp"
android:layout_weight="0"
android:visibility="gone"
app:srcCompat="@drawable/mode_edit_black_24dp"
app:tint="?attr/colorOnPrimary"
tools:ignore="VectorDrawableCompat">
</ImageView>
<ImageView
android:id="@+id/image_remove"
android:layout_width="40dp"
@ -33,7 +19,7 @@
android:layout_margin="5dp"
android:visibility="visible"
app:srcCompat="@drawable/clear_black_24dp"
app:tint="?attr/colorOnPrimary"
app:tint="?android:attr/textColor"
tools:ignore="VectorDrawableCompat">
</ImageView>

View File

@ -5,6 +5,7 @@
<item
android:id="@+id/Frage"
android:icon="@drawable/contact_support_black_24dp"
android:iconTint="?android:attr/textColor"
android:onClick="menurighttopdocumentation"
android:orderInCategory="100"
android:title="@string/menu_documentation"

View File

@ -1,6 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '8.1.2' apply false
id 'com.android.library' version '8.1.2' apply false
id 'com.android.application' version '8.2.2' apply false
id 'com.android.library' version '8.2.2' apply false
id 'com.google.protobuf' version '0.9.3' apply false
}

View File

@ -1,6 +1,6 @@
#Fri Feb 23 15:25:44 CET 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists