Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2022 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/constraintLayoutAction"
android:layout_width="match_parent"
android:layout_height="72dp"
android:weightSum="1"
android:background="?android:attr/selectableItemBackground"
>
<ImageView
android:id="@+id/icon"
android:layout_width="33dp"
android:layout_height="33dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:src="@drawable/ic_account_plus"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/black" />
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center_vertical"
android:paddingEnd="@dimen/standard_padding"
android:text="@string/placeholder_filename"
android:textColor="@color/black"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/icon"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2022 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="?android:attr/selectableItemBackground">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<ImageView
android:id="@+id/icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="fitXY"
android:src="@drawable/ic_account_plus"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<ImageView
android:id="@+id/ticker"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/ic_current"
tools:layout_editor_absoluteX="48dp"
tools:layout_editor_absoluteY="13dp"
android:layout_marginTop="-8dp"
android:layout_marginEnd="-8dp"
app:layout_constraintEnd_toEndOf="@id/icon"
app:layout_constraintTop_toTopOf="@id/icon"/>
<!-- drawable will be replaced by ic_current_white + tint in runtime;
ic_current here as a placeholder -->
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="28dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ellipsize="middle"
android:gravity="bottom"
android:maxLines="1"
android:text="@string/placeholder_filename"
android:textColor="@color/textColor"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/account"
app:layout_constraintEnd_toStartOf="@+id/clean_account_local_storage_button"
app:layout_constraintStart_toEndOf="@+id/ticker"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/account"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:ellipsize="middle"
android:text="@string/placeholder_sentence"
android:textColor="@color/textColor"
android:textSize="14sp"
android:lines="1"
app:layout_constraintEnd_toStartOf="@+id/clean_account_local_storage_button"
app:layout_constraintStart_toEndOf="@id/ticker"
app:layout_constraintTop_toBottomOf="@id/name" />
<ImageView
android:id="@+id/clean_account_local_storage_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:paddingStart="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_padding"
android:paddingEnd="@dimen/standard_half_padding"
android:paddingBottom="@dimen/standard_padding"
android:src="@drawable/ic_clean_account"
android:contentDescription="@string/content_description_clean_account_storage"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/removeButton"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/black" />
<ImageView
android:id="@+id/removeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:paddingStart="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_padding"
android:paddingEnd="@dimen/standard_padding"
android:paddingBottom="@dimen/standard_padding"
android:src="@drawable/ic_action_delete_grey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:contentDescription="@string/content_description_remove_account"
app:tint="@color/black" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginTop="@dimen/standard_half_margin">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/used_quota_title_manage_accounts"
android:layout_marginEnd="@dimen/item_file_grid_margin"
android:textSize="@dimen/two_line_secondary_text_size"
android:textColor="@color/textColor"/>
<ProgressBar
android:id="@+id/manage_accounts_quota_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="125dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/item_file_grid_margin"
android:layout_marginTop="@dimen/standard_quarter_margin" />
<TextView
android:id="@+id/manage_accounts_quota_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/drawer_loading_quota"
android:textColor="@color/textColor"
android:textSize="@dimen/two_line_secondary_text_size" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,327 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/login_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/login_background_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/login_background_image"
android:visibility="gone"
tools:ignore="ContentDescription"
tools:visibility="visible" />
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:fillViewport="true"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/layout_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginBottom="50dp"
android:contentDescription="@string/app_name"
android:src="@drawable/brand_logo" />
<LinearLayout
android:id="@+id/webfinger_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/webfinger_username_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/webfinger_username"
style="@style/EditText.Authenticator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:hint="@string/auth_username"
android:inputType="textNoSuggestions"
android:theme="@style/Theme.qsfera.Authenticator.EditText">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/webfinger_status_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:contentDescription="@string/auth_testing_connection"
android:drawableStart="@android:drawable/stat_notify_sync"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:minHeight="32dp"
android:textColor="@color/login_connection_text_color"
android:visibility="gone"
app:drawableTint="@color/login_connection_text_color"
tools:text="@string/auth_testing_connection" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/webfinger_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:contentDescription="@string/global_proceed"
android:text="@string/global_proceed"
android:theme="@style/Button.Authenticator" />
</LinearLayout>
<LinearLayout
android:id="@+id/main_login_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/centeredRefreshButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="10dp"
android:contentDescription="@string/auth_check_server"
android:text="@string/auth_check_server"
android:theme="@style/Button.Authenticator"
android:visibility="gone" />
<TextView
android:id="@+id/instructions_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
android:layout_marginBottom="10dp"
android:contentDescription="@string/auth_expired_basic_auth_toast"
android:text="@string/auth_expired_basic_auth_toast"
android:textColor="@color/login_text_color"
android:visibility="gone" />
<FrameLayout
android:id="@+id/hostUrlFrame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:focusable="true">
<EditText
android:id="@+id/hostUrlInput"
style="@style/EditText.Authenticator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:drawablePadding="5dp"
android:hint="@string/auth_host_url"
android:inputType="textUri"
android:paddingEnd="55dp"
android:theme="@style/Theme.qsfera.Authenticator.EditText">
<requestFocus />
</EditText>
<ImageButton
android:id="@+id/embeddedCheckServerButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="5dp"
android:background="@android:color/transparent"
android:contentDescription="@string/auth_refresh_button"
android:padding="0dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_arrow_right"
app:tint="@color/login_text_color" />
<ImageButton
android:id="@+id/embeddedRefreshButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="5dp"
android:background="@android:color/transparent"
android:contentDescription="@string/auth_refresh_button"
android:padding="0dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_action_refresh"
android:visibility="gone" />
</FrameLayout>
<TextView
android:id="@+id/server_status_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:contentDescription="@string/auth_testing_connection"
android:drawableStart="@android:drawable/stat_notify_sync"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:minHeight="32dp"
android:textColor="@color/login_connection_text_color"
android:visibility="invisible"
app:drawableTint="@color/login_connection_text_color"
tools:text="@string/auth_testing_connection"
tools:visibility="visible" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/account_username_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:hintEnabled="false">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/account_username"
style="@style/EditText.Authenticator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:hint="@string/auth_username"
android:inputType="textNoSuggestions"
android:theme="@style/Theme.qsfera.Authenticator.EditText">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/account_password_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:hintEnabled="false"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/login_text_color">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/account_password"
style="@style/EditText.Authenticator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:hint="@string/auth_password"
android:inputType="textPassword"
android:theme="@style/Theme.qsfera.Authenticator.EditText">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/auth_status_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:contentDescription="@string/auth_unauthorized"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/login_credentials_text_color"
android:visibility="gone"
app:drawableTint="@color/login_credentials_text_color"
tools:text="@string/auth_unauthorized" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/loginButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:contentDescription="@string/setup_btn_login"
android:text="@string/setup_btn_login"
android:theme="@style/Button.Authenticator"
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
<Button
android:id="@+id/welcome_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:contentDescription="@string/auth_register"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/auth_register"
android:textColor="@color/login_text_color" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:gravity="end"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/layout_login"
app:layout_constraintVertical_bias="1.0">
<Button
android:id="@+id/settings_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:contentDescription="@string/actionbar_settings"
android:gravity="center"
android:text="@string/actionbar_settings"
android:textColor="@color/login_text_color" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</FrameLayout>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
tools:openDrawer="start">
<include
android:id="@+id/nav_coordinator_layout"
layout="@layout/nav_coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/nav_drawer_content" />
</androidx.drawerlayout.widget.DrawerLayout>
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activityPatternLockLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/background_color"
android:paddingHorizontal="@dimen/standard_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/header_pattern"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:text="@string/pass_code_enter_pass_code"
android:textColor="@android:color/black"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/explanation_pattern"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:gravity="center"
android:text="@string/pattern_configure_your_pattern_explanation"
android:textAppearance="@android:style/TextAppearance.Small"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/header_pattern" />
<TextView
android:id="@+id/error_pattern"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:textColor="@color/warning"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/patternContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/patternContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginHorizontal="@dimen/standard_margin"
android:layout_marginVertical="@dimen/standard_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent">
<com.andrognito.patternlockview.PatternLockView
android:id="@+id/pattern_lock_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
app:correctStateColor="@color/primary"
app:dotCount="3"
app:normalStateColor="@color/primary"
app:wrongStateColor="@color/primary">
<requestFocus />
</com.andrognito.patternlockview.PatternLockView>
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activityPrivacyPolicyLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1"
android:filterTouchesWhenObscured="true"
>
<include
layout="@layout/qsfera_toolbar" />
<!-- last to draw, will be top in Z axis -->
<include layout="@layout/top_progress_bar" />
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/privacyPolicyWebview"
/>
</LinearLayout>
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="48dp"
android:paddingStart="16dip"
android:paddingEnd="16dip"
android:paddingRight="16dip"
android:paddingLeft="16dip"
android:minWidth="196dip"
android:background="?android:attr/activatedBackgroundIndicator"
android:orientation="vertical"
android:filterTouchesWhenObscured="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:duplicateParentState="true">
<ImageView
android:id="@+id/icon"
android:layout_width="40dip"
android:layout_height="40dip"
android:layout_gravity="center_vertical"
android:layout_marginEnd="8dip"
android:duplicateParentState="true" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLargePopupMenu"
android:duplicateParentState="true"
android:singleLine="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.settings.SettingsActivity">
<include
android:id="@+id/toolbar"
layout="@layout/qsfera_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/settings_container"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.migration.StorageMigrationActivity">
<FrameLayout
android:id="@+id/migration_frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:padding="@dimen/standard_half_padding">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/item_icon"
android:layout_width="@dimen/bottom_sheet_fragment_item_icon_size"
android:layout_height="@dimen/bottom_sheet_fragment_item_icon_size"
android:tint="@color/bottom_sheet_fragment_item_color"
app:layout_constraintBottom_toBottomOf="@+id/item_title"
app:layout_constraintEnd_toStartOf="@id/item_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/item_title"
tools:src="@drawable/ic_sort_by_name" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/item_title"
style="@style/Theme.qsfera.SortBottomSheetFragment.Item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/item_additional_icon"
app:layout_constraintStart_toEndOf="@id/item_icon"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/global_name" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/item_additional_icon"
android:layout_width="@dimen/bottom_sheet_fragment_arrow_icon_size"
android:layout_height="@dimen/bottom_sheet_fragment_arrow_icon_size"
android:layout_marginStart="@dimen/standard_quarter_margin"
android:tint="@color/bottom_sheet_fragment_item_color"
app:layout_constraintBottom_toBottomOf="@+id/item_title"
app:layout_constraintStart_toEndOf="@id/item_title"
app:layout_constraintTop_toTopOf="@+id/item_title"
tools:src="@drawable/ic_baseline_arrow_upward" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="clip_horizontal"
android:orientation="vertical"
android:padding="@dimen/standard_padding">
<CheckBox
android:id="@+id/checkbox_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Message for the checkbox"/>
</LinearLayout>
@@ -0,0 +1,141 @@
<?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="match_parent"
android:orientation="vertical"
android:padding="@dimen/standard_half_margin">
<TextView
android:id="@+id/create_shortcut_dialog_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_half_padding"
android:text="@string/create_shortcut_dialog_title"
android:textAppearance="@android:style/TextAppearance.Material.DialogWindowTitle" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/create_shortcut_dialog_url_section"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/create_shortcut_dialog_url_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_half_padding"
android:padding="@dimen/standard_padding"
android:text="@string/create_shortcut_dialog_url"
android:textColor="@color/black"
android:gravity="bottom"
android:textSize="15sp" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/create_shortcut_dialog_url_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_half_padding"
android:layout_marginTop="@dimen/standard_half_padding"
android:layout_toEndOf="@id/create_shortcut_dialog_url_text">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/create_shortcut_dialog_url_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:textSize="15sp" />
</RelativeLayout>
</com.google.android.material.textfield.TextInputLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/create_shortcut_dialog_name_file_section"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/create_shortcut_dialog_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_half_padding"
android:padding="@dimen/standard_padding"
android:text="@string/global_name"
android:textColor="@color/black"
android:gravity="bottom"
android:textSize="15sp" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/create_shortcut_dialog_name_file_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_half_padding"
android:layout_toEndOf="@id/create_shortcut_dialog_text"
android:layout_marginTop="@dimen/standard_half_padding">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/create_shortcut_dialog_name_file_value"
android:layout_toStartOf="@+id/url_suffix"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:textSize="15sp" />
<TextView
android:id="@+id/url_suffix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:text="@string/create_shortcut_dialog_url_extension"
android:textColor="@color/black"
android:textSize="15sp" />
</RelativeLayout>
</com.google.android.material.textfield.TextInputLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/cancelButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
style="?android:attr/borderlessButtonStyle"
android:text="@android:string/cancel" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/createButton"
android:enabled="false"
android:textColor="@color/grey"
style="?android:attr/borderlessButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/share_privilege_can_edit_create" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp">
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="10dp"
android:padding="@dimen/activity_horizontal_margin"
app:cardBackgroundColor="@color/background_color"
app:cardCornerRadius="8dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/activity_horizontal_margin"
android:orientation="vertical">
<TextView
android:id="@+id/dialog_file_already_exists_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textAppearance="@android:style/TextAppearance.Material.DialogWindowTitle"
tools:text="@tools:sample/lorem[8]" />
<TextView
android:id="@+id/dialog_file_already_exists_information"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="@dimen/activity_vertical_margin"
android:textColor="@color/black"
tools:text="@tools:sample/lorem[8]" />
<CheckBox
android:id="@+id/dialog_file_already_exists_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/apply_to_all_conflicts" />
<LinearLayout
android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_horizontal_margin"
android:gravity="end"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/dialog_file_already_exists_replace"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:text="@string/conflict_replace" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/dialog_file_already_exists_keep_both"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:text="@string/conflict_keep_both" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/dialog_file_already_exists_skip"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:text="@string/welcome_feature_skip_button" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/inputTextLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_margin">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputFileName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/uploader_upload_text_filename_hint" />
</com.google.android.material.textfield.TextInputLayout>
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<com.google.android.material.textfield.TextInputLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edit_box_input_text_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="clip_horizontal"
android:orientation="vertical"
android:padding="@dimen/standard_margin">
<EditText
android:id="@+id/user_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:text=""
android:inputType="textNoSuggestions|textCapSentences" />
</com.google.android.material.textfield.TextInputLayout>
@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
@author David A. Velasco
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/shareScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.sharing.sharees.EditPrivateShareFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/editShareTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:padding="@dimen/standard_padding"
android:singleLine="true"
android:text="@string/share_with_edit_title"
android:textAppearance="@style/TextAppearance.AppCompat.Title" />
<!-- for some reason the divider below is determining the width for the fragment;
so, leave it there, even if it's height is 0dp, we don't really want to see it -->
<View
android:id="@+id/shareHeaderDivider"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/qsfera_petrol" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_margin"
android:layout_marginRight="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:orientation="vertical">
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/canEditSwitch"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginTop="@dimen/standard_half_margin"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:text="@string/share_privilege_can_edit"
android:textColor="@color/color_accent" />
<CheckBox
android:id="@+id/canEditCreateCheckBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/share_privilege_can_edit_create"
android:visibility="gone" />
<CheckBox
android:id="@+id/canEditChangeCheckBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/share_privilege_can_edit_change"
android:visibility="gone" />
<CheckBox
android:id="@+id/canEditDeleteCheckBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/share_privilege_can_edit_delete"
android:visibility="gone" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/canShareSwitch"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginTop="@dimen/standard_half_margin"
android:paddingLeft="0dp"
android:text="@string/share_privilege_can_share"
android:textColor="@color/color_accent" />
<TextView
android:id="@+id/private_share_error_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_half_margin"
android:drawableStart="@drawable/common_error_grey"
android:drawablePadding="@dimen/standard_half_padding"
android:gravity="center_vertical"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:textColor="@color/secondaryTextColor"
android:textSize="13sp"
android:visibility="gone" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/closeButton"
style="@style/Button.Primary"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:contentDescription="sharePublicLinkCloseButton"
android:text="@string/drawer_close"
android:theme="@style/Button.Primary" />
</LinearLayout>
</ScrollView>
@@ -0,0 +1,14 @@
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/errorHandlingShowErrorScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true"
>
<TextView
android:id="@+id/errorTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fileDetailsEmptyLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color"
android:orientation="vertical"
android:filterTouchesWhenObscured="true">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="@string/filedetails_select_file"
/>
</LinearLayout>
@@ -0,0 +1,343 @@
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fdScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:filterTouchesWhenObscured="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fileDetailsLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/lytName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
app:cardElevation="0dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:elevation="10dp"
app:cardBackgroundColor="@color/background_color"
app:cardCornerRadius="8dp">
<ImageView
android:id="@+id/fdImageDetailFile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:contentDescription="@string/filedetails_file_image_content_description"
android:scaleType="centerInside"
android:src="@drawable/file"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.cardview.widget.CardView>
<ImageView
android:id="@+id/badgeDetailFile"
android:layout_width="@dimen/file_indicator_pin_size_grid"
android:layout_height="@dimen/file_indicator_pin_size_grid"
android:src="@drawable/sync_pin"
android:visibility="gone"
android:translationX="-8dp"
android:translationY="-8dp"
app:layout_constraintStart_toEndOf="@+id/cardView"
app:layout_constraintTop_toBottomOf="@+id/cardView" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/fdname"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginBottom="30dp"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/lytName" />
<TextView
android:id="@+id/fdProgressText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/downloader_download_in_progress_ticker"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/fdname"
tools:visibility="visible" />
<ProgressBar
android:id="@+id/fdProgressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/fdCancelBtn"
app:layout_constraintEnd_toStartOf="@id/fdCancelBtn"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdCancelBtn"
tools:visibility="visible" />
<ImageButton
android:id="@+id/fdCancelBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/standard_margin"
android:background="@android:color/transparent"
android:contentDescription="@string/filedetails_cancel_btn_content_description"
android:src="@drawable/ic_action_cancel_grey"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/fdProgressBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/fdProgressText"
tools:visibility="visible" />
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
app:dividerColor="@color/list_divider_background"
app:layout_constraintBottom_toTopOf="@id/fdTypeLabel"
app:layout_constraintStart_toStartOf="@id/fdProgressBar"
app:layout_constraintTop_toBottomOf="@id/fdProgressBar" />
<TextView
android:id="@+id/fdTypeLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="@string/filedetails_type"
android:textAppearance="?android:attr/textAppearanceMedium"
app:layout_constraintBottom_toBottomOf="@id/fdType"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdType" />
<TextView
android:id="@+id/fdType"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:gravity="end"
android:text=""
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdTypeLabel"
app:layout_constraintTop_toBottomOf="@id/divider"
tools:text="@tools:sample/lorem[8]" />
<TextView
android:id="@+id/fdSizeLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="@string/filedetails_size"
android:textAppearance="?android:attr/textAppearanceMedium"
app:layout_constraintBottom_toBottomOf="@id/fdSize"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdSize" />
<TextView
android:id="@+id/fdSize"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:text=""
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdSizeLabel"
app:layout_constraintTop_toBottomOf="@id/fdType"
tools:text="@tools:sample/lorem[6]" />
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerColor="@color/list_divider_background"
app:layout_constraintBottom_toTopOf="@id/fdSize"
app:layout_constraintStart_toStartOf="@id/fdModified"
app:layout_constraintTop_toBottomOf="@id/fdModified" />
<TextView
android:id="@+id/fdModifiedLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:visibility="gone"
android:text="@string/filedetails_modified"
android:textAppearance="?android:attr/textAppearanceMedium"
app:layout_constraintBottom_toBottomOf="@id/fdModified"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdModified"
app:layout_constraintVertical_bias="1.0"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdModified"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:visibility="gone"
android:text=""
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdModifiedLabel"
app:layout_constraintTop_toBottomOf="@id/divider2"
tools:text="@tools:sample/lorem[6]"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdCreatedLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:visibility="gone"
android:text="@string/filedetails_created"
android:textAppearance="?android:attr/textAppearanceMedium"
app:layout_constraintBottom_toBottomOf="@id/fdCreated"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdCreated"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdCreated"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:visibility="gone"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdCreatedLabel"
app:layout_constraintTop_toBottomOf="@id/fdModified"
tools:text="@tools:sample/lorem[6]"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdLastSyncLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="@string/filedetails_last_sync"
android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceMedium"
app:layout_constraintBottom_toBottomOf="@id/fdLastSync"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdLastSync"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdLastSync"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:visibility="gone"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdLastSyncLabel"
app:layout_constraintTop_toBottomOf="@id/fdCreated"
tools:text="@tools:sample/lorem[6]"
tools:visibility="visible"/>
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
app:dividerColor="@color/list_divider_background"
app:layout_constraintStart_toStartOf="@id/fdLastSync"
app:layout_constraintTop_toBottomOf="@id/fdLastSync" />
<TextView
android:id="@+id/fdPathLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="@string/ssl_validator_label_L"
android:textAppearance="?android:attr/textAppearanceMedium"
app:layout_constraintBottom_toBottomOf="@id/fdPath"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdPath"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdPath"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
android:textColor="@color/action_mode_status_bar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdPathLabel"
app:layout_constraintTop_toBottomOf="@id/divider3"
tools:text="@tools:sample/lorem[6]"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdSpaceLabel"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="@string/space_label"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/fdSpace"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/fdSpace"
tools:visibility="visible"/>
<TextView
android:id="@+id/fdSpace"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:paddingRight="5dp"
android:visibility="gone"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toStartOf="@id/fdIconSpace"
app:layout_constraintStart_toEndOf="@id/fdSpaceLabel"
app:layout_constraintTop_toBottomOf="@id/fdPath"
tools:text="asasa"
tools:visibility="visible"/>
<ImageButton
android:id="@+id/fdIconSpace"
android:layout_width="@dimen/file_indicator_pin_size_grid"
android:layout_height="@dimen/file_indicator_pin_size_grid"
android:background="@android:color/transparent"
android:src="@drawable/ic_spaces"
android:scaleType="fitCenter"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/fdSpace"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fdSpace"
app:layout_constraintTop_toTopOf="@id/fdSpace"
tools:visibility="visible"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center_vertical"
android:padding="20dp"
android:background="@color/black"
android:filterTouchesWhenObscured="true">
<TextView
android:id="@+id/progressText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/dark_background_text_color"
android:text="@string/downloader_not_downloaded_yet"
android:layout_marginBottom="15dp"
/>
<LinearLayout
android:id="@+id/fdProgressBlock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="12dp"
android:layout_marginBottom="15dp"
android:orientation="horizontal"
>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminate="false"
android:indeterminateOnly="false"
/>
<ImageButton
android:id="@+id/cancelBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:src="@drawable/ic_action_cancel_grey"
android:background="@android:color/transparent"
/>
</LinearLayout>
<ImageView
android:id="@+id/error_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:layout_gravity="center_horizontal"
android:contentDescription="@string/downloader_download_failed_ticker"
android:src="@drawable/image_fail" />
<TextView
android:id="@+id/errorText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="40dp"
android:textColor="@color/dark_background_text_color"
android:text="@string/downloader_download_failed_ticker"
/>
</LinearLayout>
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="@dimen/standard_padding">
<ImageView
android:id="@+id/thumbnail_bottom_sheet"
android:layout_width="@dimen/file_icon_size_bottom_sheet"
android:layout_height="@dimen/file_icon_size_bottom_sheet"
android:src="@drawable/ic_menu_archive"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/file_name_bottom_sheet"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/standard_half_margin"
android:ellipsize="end"
android:maxLines="3"
android:textColor="@color/textColor"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintEnd_toStartOf="@id/close_bottom_sheet"
app:layout_constraintStart_toEndOf="@id/thumbnail_bottom_sheet"
app:layout_constraintTop_toTopOf="parent"
tools:text="File name" />
<TextView
android:id="@+id/file_size_bottom_sheet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintStart_toStartOf="@+id/file_name_bottom_sheet"
app:layout_constraintTop_toBottomOf="@+id/file_name_bottom_sheet"
app:layout_constraintEnd_toStartOf="@id/file_separator_bottom_sheet"
tools:text="Size MB" />
<TextView
android:id="@+id/file_separator_bottom_sheet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=","
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintStart_toEndOf="@+id/file_size_bottom_sheet"
app:layout_constraintTop_toBottomOf="@+id/file_name_bottom_sheet" />
<TextView
android:id="@+id/file_last_mod_bottom_sheet"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_quarter_margin"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintEnd_toEndOf="@+id/file_name_bottom_sheet"
app:layout_constraintStart_toEndOf="@+id/file_separator_bottom_sheet"
app:layout_constraintTop_toBottomOf="@id/file_name_bottom_sheet"
tools:text="Mod Date" />
<ImageView
android:id="@+id/close_bottom_sheet"
android:layout_width="@dimen/icon_button_size"
android:layout_height="@dimen/icon_button_size"
android:layout_gravity="center_vertical"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:scaleType="center"
android:src="@drawable/ic_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="@dimen/bottom_sheet_fragment_divider_height"
android:layout_marginTop="@dimen/standard_margin"
android:background="@color/bottom_sheet_fragment_item_color"
app:layout_constraintBottom_toTopOf="@id/scroll_bottom_sheet"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/file_last_mod_bottom_sheet" />
<ScrollView
android:id="@+id/scroll_bottom_sheet"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintHeight_max="@dimen/max_height_bottom_sheet"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider">
<LinearLayout
android:id="@+id/file_options_bottom_sheet_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2023 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/filesFolderPickerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/qsfera_toolbar" />
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<TextView
android:id="@+id/folder_picker_no_permissions_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="@dimen/standard_padding"
android:paddingVertical="@dimen/standard_half_padding"
android:background="@color/warning_background_color"
android:visibility="gone"
android:text="@string/folder_picker_no_permissions_message_text"
android:textColor="@color/warning_grey_text"
tools:visibility="visible"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:src="@drawable/uploader_list_separator" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/standard_half_padding"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/folder_picker_btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@android:string/cancel"
android:theme="@style/Button.Secondary" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/folder_picker_btn_choose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="@string/folder_picker_choose_button_text"
android:theme="@style/Button.Primary" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/login_background_color"
tools:context=".presentation.migration.MigrationIntroFragment">
<TextView
android:id="@+id/migration_choice_title"
style="@style/TextAppearance.MaterialComponents.Headline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:text="@string/scoped_storage_wizard_title"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_choice_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<ImageView
android:id="@+id/migration_choice_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/brand_logo"
app:layout_constraintBottom_toTopOf="@id/migration_choice_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_choice_title" />
<TextView
android:id="@+id/migration_choice_subtitle"
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:gravity="center"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_choice_not_enough_space_warning"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_choice_logo" />
<TextView
android:id="@+id/migration_choice_not_enough_space_warning"
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:gravity="center"
android:text="@string/scoped_storage_wizard_not_enough_space_warning"
android:textColor="@color/login_text_color"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/migration_choice_migrate_now_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_choice_subtitle"
tools:visibility="visible" />
<Button
android:id="@+id/migration_choice_migrate_now_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:background="@color/action_mode_background"
android:text="@string/scoped_storage_wizard_migrate_and_clean_button"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_choice_not_enough_space_warning" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/login_background_color"
tools:context=".presentation.migration.MigrationCompletedFragment">
<TextView
android:id="@+id/migration_completed_title"
style="@style/TextAppearance.MaterialComponents.Headline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:text="@string/scoped_storage_wizard_title"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_completed_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<ImageView
android:id="@+id/migration_completed_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/brand_logo"
app:layout_constraintBottom_toTopOf="@id/migration_completed_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_completed_title" />
<TextView
android:id="@+id/migration_completed_subtitle"
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:gravity="center"
android:text="@string/scoped_storage_wizard_migration_completed"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_completed_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_completed_logo" />
<Button
android:id="@+id/migration_completed_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:background="@color/action_mode_background"
android:text="@string/scoped_storage_wizard_migration_completed_access_files_button"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_completed_subtitle" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/login_background_color"
tools:context=".presentation.migration.MigrationIntroFragment">
<TextView
android:id="@+id/migration_info_title"
style="@style/TextAppearance.MaterialComponents.Headline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:textColor="@color/login_text_color"
android:text="@string/scoped_storage_wizard_title"
app:layout_constraintBottom_toTopOf="@id/migration_info_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<ImageView
android:id="@+id/migration_info_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/brand_logo"
app:layout_constraintBottom_toTopOf="@id/migration_info_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_info_title" />
<TextView
android:id="@+id/migration_info_subtitle"
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:gravity="center"
android:textColor="@color/login_text_color"
android:text="@string/scoped_storage_wizard_intro"
app:layout_constraintBottom_toTopOf="@id/migration_info_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_info_logo"/>
<Button
android:id="@+id/migration_info_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:background="@color/action_mode_background"
android:textColor="@color/login_text_color"
android:text="@string/scoped_storage_wizard_intro_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_info_subtitle" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/login_background_color"
tools:context=".presentation.migration.MigrationIntroFragment">
<TextView
android:id="@+id/migration_info_title"
style="@style/TextAppearance.MaterialComponents.Headline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:text="@string/scoped_storage_wizard_title"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_info_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<ImageView
android:id="@+id/migration_info_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/brand_logo"
app:layout_constraintBottom_toTopOf="@id/migration_info_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_info_title" />
<TextView
android:id="@+id/migration_info_subtitle"
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:gravity="center"
android:text="@string/scoped_storage_wizard_migration_in_progress"
android:textColor="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_progress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_info_logo" />
<ProgressBar
android:id="@+id/migration_progress"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/standard_margin"
android:indeterminate="true"
android:progressTint="@color/login_text_color"
app:layout_constraintBottom_toTopOf="@id/migration_progress_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_info_subtitle"
tools:progress="25" />
<Button
android:id="@+id/migration_progress_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:layout_marginTop="@dimen/standard_margin"
android:background="@color/action_mode_background"
android:textColor="@color/login_text_color"
android:enabled="false"
android:text="@string/scoped_storage_wizard_migration_in_progress_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/migration_progress" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/transfers_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/upload_list_item" />
<include
android:id="@+id/transfers_list_empty"
layout="@layout/item_empty_dataset"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?><!--
qsfera Android client application
Copyright (C) 2023 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<eu.qsfera.android.ui.SquareLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ListItemLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="@drawable/list_selector"
android:filterTouchesWhenObscured="true"
android:gravity="center"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="@dimen/item_file_grid_width"
android:layout_height="@dimen/item_file_grid_height"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/item_file_grid_margin"
android:layout_marginRight="@dimen/item_file_grid_margin"
android:scaleType="centerCrop"
android:src="@drawable/ic_menu_archive" />
<LinearLayout
android:id="@+id/share_icons_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_quarter_margin"
android:layout_gravity="top|end"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:id="@+id/shared_via_users_icon"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginEnd="2dp"
android:src="@drawable/ic_share_generic_black"
android:visibility="gone"
tools:visibility="visible" />
<ImageView
android:id="@+id/shared_by_link_icon"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/ic_shared_by_link"
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
<ImageView
android:id="@+id/localFileIndicator"
android:layout_width="@dimen/file_indicator_pin_size_grid"
android:layout_height="@dimen/file_indicator_pin_size_grid"
android:layout_gravity="bottom|end"
android:layout_marginRight="12dp"
android:layout_marginBottom="2dp"
android:src="@drawable/sync_pin" />
<ImageView
android:id="@+id/custom_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|top"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:elevation="30dp"
android:src="@android:drawable/checkbox_off_background" />
</FrameLayout>
<TextView
android:id="@+id/Filename"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:ellipsize="middle"
android:gravity="center_horizontal"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="16dip"
tools:text="TextView" />
</eu.qsfera.android.ui.SquareLinearLayout>
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/standard_half_padding"
android:paddingBottom="@dimen/standard_half_padding">
<ImageView
android:id="@+id/list_empty_dataset_icon"
android:layout_width="72dp"
android:layout_height="72dp"
app:layout_constraintBottom_toTopOf="@id/list_empty_dataset_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
app:tint="@color/grey"
tools:src="@drawable/ic_folder" />
<TextView
android:id="@+id/list_empty_dataset_title"
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:gravity="center"
android:padding="@dimen/standard_half_padding"
android:textColor="@color/half_black"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/list_empty_dataset_sub_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/list_empty_dataset_icon"
tools:text="@string/file_list_empty_title_all_files" />
<TextView
android:id="@+id/list_empty_dataset_sub_title"
style="@style/TextAppearance.MaterialComponents.Body1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:gravity="center"
android:textColor="@color/grey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/list_empty_dataset_title"
tools:text="@string/file_list_empty_subtitle_all_files" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/file_list_constraint_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/item_file_list_min_height">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/icon_constraint_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:minWidth="@dimen/item_file_list_icon_min_width"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="@dimen/file_icon_size"
android:layout_height="@dimen/file_icon_size"
android:scaleType="centerCrop"
android:src="@drawable/ic_menu_archive"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/localFileIndicator"
android:layout_width="@dimen/file_indicator_pin_size"
android:layout_height="@dimen/file_indicator_pin_size"
android:src="@drawable/sync_pin"
android:translationX="-8dp"
android:translationY="-10dp"
app:layout_constraintStart_toEndOf="@+id/thumbnail"
app:layout_constraintTop_toBottomOf="@+id/thumbnail" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/info_constraint_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_quarter_margin"
android:layout_marginBottom="@dimen/standard_quarter_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/options_constraint_layout"
app:layout_constraintStart_toEndOf="@+id/icon_constraint_layout"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/Filename"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="File name" />
<LinearLayout
android:id="@+id/share_icons_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_half_margin"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/Filename"
app:layout_constraintTop_toBottomOf="@id/Filename"
app:layout_constraintEnd_toStartOf="@id/file_list_size"
app:layout_constraintBottom_toTopOf="@id/space_path_line"
tools:visibility="visible">
<ImageView
android:id="@+id/shared_via_users_icon"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginEnd="2dp"
android:src="@drawable/ic_share_generic"
android:visibility="gone"
app:tint="@color/list_item_lastmod_and_filesize_text"
tools:visibility="visible" />
<ImageView
android:id="@+id/shared_by_link_icon"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/ic_shared_by_link"
android:visibility="gone"
app:tint="@color/list_item_lastmod_and_filesize_text"
tools:visibility="visible" />
</LinearLayout>
<TextView
android:id="@+id/file_list_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintStart_toEndOf="@+id/share_icons_layout"
app:layout_constraintTop_toBottomOf="@+id/Filename"
app:layout_constraintEnd_toStartOf="@id/file_list_separator"
tools:text="Size MB" />
<TextView
android:id="@+id/file_list_separator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=","
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintStart_toEndOf="@+id/file_list_size"
app:layout_constraintTop_toBottomOf="@+id/Filename" />
<TextView
android:id="@+id/file_list_last_mod"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_quarter_margin"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintStart_toEndOf="@+id/file_list_separator"
app:layout_constraintTop_toBottomOf="@id/Filename"
tools:text="Mod Date" />
<include
android:id="@+id/space_path_line"
layout="@layout/space_path_line"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="@+id/Filename"
app:layout_constraintTop_toBottomOf="@+id/file_list_size" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/options_constraint_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_padding"
android:layout_marginEnd="@dimen/standard_quarter_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/info_constraint_layout"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/custom_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/standard_margin"
android:src="@drawable/ic_checkbox_blank_outline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="gone"/>
<ImageView
android:id="@+id/three_dot_menu"
android:layout_width="@dimen/icon_button_size"
android:layout_height="@dimen/icon_button_size"
android:layout_gravity="center_vertical"
android:scaleType="center"
android:src="@drawable/ic_three_dot_menu"
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,22 @@
<?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="112dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="vertical"
android:showDividers="none"
android:filterTouchesWhenObscured="true">
<TextView
android:id="@+id/footerText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_padding"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:layout_marginBottom="56dp"
/>
</LinearLayout>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loadingLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="@dimen/standard_padding"
android:filterTouchesWhenObscured="true"
>
<ProgressBar
android:id="@+id/loadingBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:indeterminate="true"
android:indeterminateOnly="false" />
<TextView
android:id="@+id/loadingText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/standard_margin"
android:text="TextView" />
</LinearLayout>
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/logContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"
tools:text="hola" />
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ qsfera Android client application
~
~ @author Fernando Sanz Velasco
~ Copyright (C) 2021 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_container_activity_logs_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/item_file_list_min_height">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/icon_constraint_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:minWidth="@dimen/item_file_list_icon_min_width"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageView_icon_activity_logs_list"
android:layout_width="@dimen/file_icon_size"
android:layout_height="@dimen/file_icon_size"
android:src="@drawable/ic_logs"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/info_constraint_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_quarter_margin"
android:layout_marginBottom="@dimen/standard_quarter_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/options_constraint_layout"
app:layout_constraintStart_toEndOf="@+id/icon_constraint_layout"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textView_title_activity_logs_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@tools:sample/lorem" />
<TextView
android:id="@+id/textView_subtitle_activity_logs_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="@id/textView_title_activity_logs_list"
app:layout_constraintTop_toBottomOf="@id/textView_title_activity_logs_list"
tools:text="@tools:sample/lorem" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/options_constraint_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/info_constraint_layout"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageView_download_activity_logs_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:src="@drawable/ic_baseline_download_grey"
app:layout_constraintRight_toLeftOf="@id/imageView_share_activity_logs_list"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/imageView_share_activity_logs_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:src="@drawable/ic_share_grey"
app:layout_constraintRight_toLeftOf="@id/imageView_delete_activity_logs_list"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/imageView_delete_activity_logs_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_delete_grey"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ qsfera Android client application
~
~ @author Fernando Sanz Velasco
~ Copyright (C) 2021 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.logging.LogsListActivity">
<include
android:id="@+id/toolbar_activity_logs_list"
layout="@layout/qsfera_toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_activity_logs_list"
android:layout_width="0dp"
android:layout_height="0dp"
android:clipToPadding="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar_activity_logs_list"
tools:listitem="@layout/log_list_item" />
<include
android:id="@+id/logs_list_empty"
layout="@layout/item_empty_dataset"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar_activity_logs_list" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ qsfera Android client application
~
~ @author Jorge Aguado Recio
~ Copyright (C) 2024 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/empty_list_coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true">
<include
android:id="@+id/empty_data_parent"
layout="@layout/item_empty_dataset"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ qsfera Android client application
~
~ @author Fernando Sanz Velasco
~ @author Juan Carlos Garrote Gascón
~
~ Copyright (C) 2023 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.files.filelist.MainFileListFragment">
<eu.qsfera.android.presentation.files.SortOptionsView
android:id="@+id/options_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
fab:layout_constraintEnd_toEndOf="parent"
fab:layout_constraintStart_toStartOf="parent"
fab:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/syncProgressBar"
style="@style/Widget.qsfera.TopProgressBar"
android:layout_width="match_parent"
android:layout_height="@dimen/file_list_progress_bar_height"
android:layout_margin="0dp"
android:indeterminate="false"
android:indeterminateOnly="false"
android:visibility="visible"
fab:layout_constraintTop_toBottomOf="@id/options_layout" />
<View
android:id="@+id/shadow_view"
android:layout_width="match_parent"
android:layout_height="@dimen/file_list_progress_bar_height"
android:layout_margin="0dp"
android:background="@drawable/shadow_gradient"
fab:layout_constraintTop_toBottomOf="@id/options_layout" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeRefresh_main_file_list"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/syncProgressBar">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/fab_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_quarter_margin"
android:text="@string/fab_refresh_text"
android:textAllCaps="false"
android:textColor="@color/white"
android:theme="@style/Theme.MaterialComponents.Bridge"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:icon="@drawable/ic_action_refresh"
app:iconTint="@color/white"
app:backgroundTint="@color/primary_button_background_color"/>
<include
android:id="@+id/space_header"
layout="@layout/space_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_main_file_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scrollbars="vertical"
tools:listitem="@layout/item_file_list"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/space_header"/>
<include
android:id="@+id/empty_data_parent"
layout="@layout/item_empty_dataset"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/space_header" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.getbase.floatingactionbutton.FloatingActionsMenu
android:id="@+id/fab_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:visibility="visible"
fab:fab_addButtonColorNormal="@color/primary_button_background_color"
fab:fab_addButtonColorPressed="@color/qsfera_petrol"
fab:fab_addButtonPlusIconColor="@color/white"
fab:fab_labelStyle="@style/menu_labels_style"
fab:layout_dodgeInsetEdges="bottom">
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_upload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/actionbar_upload"
fab:fab_colorNormal="@color/primary_button_background_color"
fab:fab_colorPressed="@color/qsfera_petrol"
fab:fab_icon="@drawable/ic_action_upload"
fab:fab_size="mini"
fab:fab_title="@string/actionbar_upload" />
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_mkdir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/actionbar_mkdir"
fab:fab_colorNormal="@color/primary_button_background_color"
fab:fab_colorPressed="@color/qsfera_petrol"
fab:fab_icon="@drawable/ic_action_create_dir"
fab:fab_size="mini"
fab:fab_title="@string/actionbar_mkdir" />
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_newfile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/fab_new_file"
fab:fab_colorNormal="@color/primary_button_background_color"
fab:fab_colorPressed="@color/qsfera_petrol"
fab:fab_icon="@drawable/ic_action_create_file"
fab:fab_size="mini"
fab:fab_title="@string/fab_new_file" />
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_newshortcut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/fab_new_shortcut"
fab:fab_colorNormal="@color/primary_button_background_color"
fab:fab_colorPressed="@color/qsfera_petrol"
fab:fab_icon="@drawable/ic_action_open_shortcut"
fab:fab_size="mini"
fab:fab_title="@string/fab_new_shortcut" />
</com.getbase.floatingactionbutton.FloatingActionsMenu>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent">
<ProgressBar
android:id="@+id/indeterminate_progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:indeterminate="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<LinearLayout
android:id="@+id/manage_accounts_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:visibility="visible">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/activity_horizontal_margin"
app:cardBackgroundColor="@color/background_color"
app:cardCornerRadius="@dimen/standard_margin"
app:cardElevation="0dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/actionbar_start_color">
<ImageView
android:id="@+id/cross"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginStart="13dp"
android:layout_marginVertical="13dp"
android:contentDescription="@string/drawer_close"
android:src="@drawable/ic_cross_manage_accounts"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:accessibilityHeading="true"
android:gravity="center"
android:maxLines="1"
android:text="@string/drawer_manage_accounts"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/account_list_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:filterTouchesWhenObscured="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="4dp"
android:orientation="horizontal"
>
<ImageButton
android:id="@+id/rewindBtn"
style="@android:style/MediaButton.Rew"
android:contentDescription="@string/media_rewind_description"
/>
<ImageButton
android:id="@+id/playBtn"
style="@android:style/MediaButton.Play"
android:contentDescription="@string/media_play_pause_description"
/>
<ImageButton
android:id="@+id/forwardBtn"
style="@android:style/MediaButton.Ffwd"
android:contentDescription="@string/media_forward_description"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/currentTimeText"
android:textSize="14sp"
android:textStyle="bold"
android:paddingTop="4dp"
android:paddingStart="4dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="4dp"
android:text="@string/placeholder_media_time"
/>
<SeekBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="32dp" />
<TextView
android:id="@+id/totalTimeText"
android:textSize="14sp"
android:textStyle="bold"
android:paddingTop="4dp"
android:paddingEnd="4dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="4dp"
android:text="@string/placeholder_media_time"
/>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<include layout="@layout/qsfera_toolbar" />
</com.google.android.material.appbar.AppBarLayout>
<include
layout="@layout/nav_main_container"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_constraintBottom_toTopOf="@id/bottom_nav_view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/app_bar_layout" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav_view"
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_navigation_bar_height"
android:layout_gravity="bottom"
android:background="@color/actionbar_start_color"
android:visibility="visible"
app:itemIconTint="@color/primary_button_text_color"
app:itemTextColor="@color/primary_button_text_color"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toTopOf="@id/bottom_nav_view_spacer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:elevation="0dp"
app:menu="@menu/bottom_navbar_menu" />
<FrameLayout
android:id="@+id/bottom_nav_view_spacer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/actionbar_start_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical">
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_drawer_header"
app:menu="@menu/drawer_menu">
<include
layout="@layout/nav_drawer_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</com.google.android.material.navigation.NavigationView>
</androidx.core.widget.NestedScrollView>
</com.google.android.material.navigation.NavigationView>
</merge>
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2023 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:padding="@dimen/standard_padding">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/drawer_logo"
android:layout_width="0dp"
android:layout_height="140dp"
android:scaleType="centerInside"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/brand_logo" />
<ImageView
android:id="@+id/drawer_link_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginTop="@dimen/standard_half_margin"
android:visibility="gone"
android:src="@drawable/brand_logo"
android:contentDescription="@string/content_description_logo"
app:layout_constraintBottom_toTopOf="@id/account_quota_bar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/drawer_logo"
tools:visibility="visible" />
<TextView
android:id="@+id/drawer_link_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_half_margin"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="16sp"
android:textStyle="bold"
android:ellipsize="end"
android:text="@string/drawer_link_label"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/account_quota_bar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/drawer_link_icon"
app:layout_constraintTop_toBottomOf="@id/drawer_logo"
tools:text="Link"
tools:visibility="visible" />
<ProgressBar
android:id="@+id/account_quota_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_half_margin"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/drawer_link_icon"
tools:progress="25" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/account_quota_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/drawer_loading_quota"
android:textColor="@color/list_item_lastmod_and_filesize_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/account_quota_bar" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/account_quota_status_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/account_quota_text" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2024 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_active_user"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_drawer_header_height"
android:background="@color/drawer_header_color">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/drawer_header_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/standard_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/drawer_current_account"
android:layout_width="@dimen/nav_drawer_header_avatar"
android:layout_height="@dimen/nav_drawer_header_avatar"
android:layout_marginBottom="@dimen/standard_half_margin"
android:src="@drawable/ic_account_circle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/drawer_username"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/drawer_username"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@android:color/white"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/drawer_username_full"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/drawer_current_account"
tools:text="@string/app_name" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/drawer_username_full"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@android:color/white"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/drawer_username"
app:layout_constraintStart_toStartOf="@id/drawer_username"
tools:text="@string/app_name" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color" >
<FrameLayout
android:id="@+id/left_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/right_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="@dimen/standard_padding">
<TextView
android:id="@+id/pick_doc_type_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_half_margin"
android:text="@string/pick_document_type"
android:textColor="@color/bottom_sheet_fragment_title_color"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="@dimen/bottom_sheet_fragment_divider_height"
android:layout_marginTop="@dimen/standard_half_margin"
android:background="@color/bottom_sheet_fragment_item_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pick_doc_type_text_view" />
<LinearLayout
android:id="@+id/doc_types_bottom_sheet_layout"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,269 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
@author David Crespo Ríos
Copyright (C) 2022 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key1Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key4Container"
app:layout_constraintEnd_toStartOf="@id/key2Container"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/key1"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_one"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key2Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key5Container"
app:layout_constraintEnd_toStartOf="@id/key3Container"
app:layout_constraintStart_toEndOf="@id/key1Container">
<TextView
android:id="@+id/key2"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_two"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key3Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key6Container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/key2Container">
<TextView
android:id="@+id/key3"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_three"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key4Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key7Container"
app:layout_constraintEnd_toStartOf="@id/key5Container"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/key4"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_four"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key5Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key8Container"
app:layout_constraintEnd_toStartOf="@id/key6Container"
app:layout_constraintStart_toEndOf="@id/key4Container">
<TextView
android:id="@+id/key5"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_five"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key6Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key9Container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/key5Container">
<TextView
android:id="@+id/key6"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_six"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key7Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/biometricBtnContainer"
app:layout_constraintEnd_toStartOf="@id/key8Container"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/key7"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_seven"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key8Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/key0Container"
app:layout_constraintEnd_toStartOf="@id/key9Container"
app:layout_constraintStart_toEndOf="@id/key7Container">
<TextView
android:id="@+id/key8"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_eight"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key9Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toTopOf="@id/backspaceBtnContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/key8Container">
<TextView
android:id="@+id/key9"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_nine"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/biometricBtnContainer"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/key0Container"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/biometricBtn"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false"
android:contentDescription="@string/numberkeyboard_biometric_button_content_description"
android:padding="@dimen/standard_padding"
android:scaleType="center"
android:visibility="invisible"
app:srcCompat="@drawable/numberkeyboard_ic_fingerprint" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/key0Container"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/backspaceBtnContainer"
app:layout_constraintStart_toEndOf="@id/biometricBtnContainer">
<TextView
android:id="@+id/key0"
style="@style/numberkeyboard_key"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/numberkeyboard_key_bg"
android:padding="@dimen/standard_padding"
android:text="@string/numberkeyboard_zero"
android:textColor="@drawable/numberkeyboard_key_text_color"
android:textStyle="bold" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
<eu.qsfera.android.presentation.security.passcode.SquareFrameLayout
android:id="@+id/backspaceBtnContainer"
style="@style/numberkeyboard_keyContainer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/key0Container">
<ImageView
android:id="@+id/backspaceBtn"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/passcode_margin_buttons"
android:contentDescription="@string/numberkeyboard_backspace_button_content_description"
android:padding="@dimen/standard_padding"
app:srcCompat="@drawable/numberkeyboard_ic_backspace" />
</eu.qsfera.android.presentation.security.passcode.SquareFrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<EditText
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/passCodeEditText"
style="@style/PassCodeStyle"
android:cursorVisible="true"
android:layout_width="32dp"
android:imeOptions="flagNoExtractUi"
android:focusable="false"/>
@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/passcodeLockLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/background_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/layout_code"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pass_code_enter_pass_code"
android:textColor="@android:color/black"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/explanation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside" />
<TextView
android:id="@+id/explanation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/passcode_standard_margin"
android:gravity="center"
android:text="@string/pass_code_configure_your_pass_code_explanation"
android:textAppearance="@android:style/TextAppearance.Small"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/header" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/layout_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/error"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title">
<!-- Edit text items will be added here procedurally based on ownBrander settings. -->
</LinearLayout>
<TextView
android:id="@+id/error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/warning"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/lock_time"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_code" />
<TextView
android:id="@+id/lock_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/passcode_standard_margin"
android:textColor="@android:color/black"
android:textSize="16sp"
android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@id/numberKeyboard"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/error" />
<eu.qsfera.android.presentation.security.passcode.NumberKeyboard
android:id="@+id/numberKeyboard"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/rightGuideline"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@id/leftGuideline"
app:layout_constraintTop_toBottomOf="@id/lock_time" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/leftGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/rightGuideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2021 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:filterTouchesWhenObscured="true">
<FrameLayout
android:id="@+id/visual_area"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="30dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/media_controller"
android:elevation="16dp"
android:outlineProvider="paddedBounds"
android:clipToPadding="false">
<ImageView
android:id="@+id/image_preview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/preview_image_description"
android:scaleType="centerCrop"
android:src="@drawable/ic_place_holder_music_cover_art"
app:layout_constraintBottom_toBottomOf="parent" />
<ImageView
android:id="@+id/image_preview_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/preview_image_description"
android:scaleType="centerCrop"
android:src="@drawable/ic_place_holder_music_cover_art_overlay" />
</FrameLayout>
<!-- last to draw, will be top in Z axis -->
<eu.qsfera.android.media.MediaControlView
android:id="@+id/media_controller"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="16dp"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2023 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<TextView
android:id="@+id/text_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:paddingTop="@dimen/standard_half_margin"
android:paddingBottom="@dimen/standard_half_margin"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginLeft="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:layout_marginRight="@dimen/standard_margin" />
</ScrollView>
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<eu.qsfera.android.ui.preview.ViewPagerWorkAround xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true"
android:contentDescription="@string/content_description_image_previewed"
/>
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true"
tools:context=".ui.preview.PreviewImageFragment">
<ProgressBar
android:id="@+id/progressWheel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateOnly="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/error_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/downloader_preview_failed_ticker"
android:src="@drawable/image_fail"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<TextView
android:id="@+id/errorText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="40dp"
android:gravity="center"
android:text="@string/downloader_preview_failed_ticker"
android:textColor="@color/dark_background_text_color"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/error_image" />
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/photo_view"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="40dp"
android:gravity="center"
android:text="@string/placeholder_sentence"
android:textColor="@color/qsfera_blue_bright"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<androidx.constraintlayout.widget.Group
tools:visibility="visible"
android:id="@+id/error_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="error_image,errorText" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true"
android:gravity="center"
tools:context=".ui.preview.PreviewAudioFragment">
<include
android:id="@+id/text_layout"
layout="@layout/preview_format_text_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:visibility="gone" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:visibility="gone" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tab_layout"
android:visibility="gone" />
</RelativeLayout>
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<com.google.android.material.appbar.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/qsfera_app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/qsfera.Appbar"
android:focusableInTouchMode="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/root_toolbar"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/root_toolbar_left_icon"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginHorizontal="@dimen/standard_half_margin"
android:padding="@dimen/standard_half_padding"
android:src="@drawable/ic_drawer_icon"
android:contentDescription="@string/content_description_menu"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.SearchView
android:id="@+id/root_toolbar_search_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/standard_half_padding"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/root_toolbar_avatar"
app:layout_constraintStart_toEndOf="@id/root_toolbar_left_icon"
app:layout_constraintTop_toTopOf="parent"
app:queryHint="@string/actionbar_search"
android:background="@drawable/rounded_search_view"
app:searchHintIcon="@null" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/root_toolbar_title"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_half_margin"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
android:paddingHorizontal="@dimen/standard_half_padding"
android:textColor="@color/white"
android:textSize="@dimen/toolbar_title_text_size"
android:contentDescription="@string/content_description_search"
app:drawableEndCompat="@drawable/ic_search"
app:drawableTint="@color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/root_toolbar_avatar"
app:layout_constraintStart_toEndOf="@id/root_toolbar_left_icon"
app:layout_constraintTop_toTopOf="parent"
tools:text="qsfera" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/root_toolbar_avatar"
android:layout_width="@dimen/toolbar_avatar_size"
android:layout_height="@dimen/toolbar_avatar_size"
android:layout_marginHorizontal="@dimen/standard_half_margin"
android:padding="@dimen/standard_half_padding"
android:src="@drawable/ic_account_circle"
android:contentDescription="@string/content_description_manage_accounts"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.Toolbar
android:id="@+id/standard_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
android:theme="@style/qsfera.Appbar"
android:visibility="gone"
android:layout_marginEnd="@dimen/standard_margin"
android:focusable="true"
android:focusableInTouchMode="false"
android:accessibilityHeading="true"
app:navigationContentDescription="@string/common_back"
app:popupTheme="?attr/actionBarPopupTheme" />
</com.google.android.material.appbar.AppBarLayout>
@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/standard_padding"
android:filterTouchesWhenObscured="true">
<TextView
android:id="@+id/rate_me_dialog_title_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:drawableEnd="@drawable/ic_star_black_24dp"
android:drawablePadding="16dp"
android:textColor="@color/color_accent"
android:textSize="20sp"
android:text="@string/rate_dialog_title" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:background="@color/color_accent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="16sp"
android:textColor="@color/color_accent"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="16dp"
android:text="@string/rate_dialog_description" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:weightSum="3"
android:gravity="center">
<Button
android:id="@+id/button_no_thanks"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/color_accent"
android:textColor="@color/white"
android:textSize="12sp"
android:text="@string/button_no_thanks_name" />
<Button
android:id="@+id/button_later"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:background="@color/color_accent"
android:textColor="@color/white"
android:textSize="12sp"
android:text="@string/button_later_name" />
<Button
android:id="@+id/button_rate_now"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/color_accent"
android:textColor="@color/white"
android:textSize="12sp"
android:text="@string/button_rate_now_name" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
@author David Crespo Ríos
Copyright (C) 2022 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.releasenotes.ReleaseNotesActivity">
<FrameLayout
android:id="@+id/top_spacer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/primary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txtHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_padding"
android:text="@string/release_notes_header"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top_spacer" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/releaseNotes"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="@dimen/standard_padding"
app:layout_constraintBottom_toTopOf="@id/txtFooter"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/txtHeader"
tools:listitem="@layout/release_notes_item" />
<TextView
android:id="@+id/txtFooter"
style="@style/Theme.qsfera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_padding"
android:gravity="center"
android:text="@string/release_notes_footer"
app:layout_constraintBottom_toTopOf="@id/btnProceed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/btnProceed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_padding"
android:padding="@dimen/standard_padding"
android:text="@string/release_notes_proceed"
android:theme="@style/Button.Primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
@author David Crespo Ríos
Copyright (C) 2022 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/release_notes_item"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iconReleaseNote"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginHorizontal="@dimen/standard_margin"
style="@style/Theme.qsfera"
android:contentDescription="@string/release_notes_icon"
app:layout_constraintBottom_toBottomOf="@id/subtitleReleaseNote"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/titleReleaseNote" />
<TextView
android:id="@+id/titleReleaseNote"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:justificationMode="inter_word"
style="@style/Theme.qsfera"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/iconReleaseNote"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@tools:sample/lorem[40]" />
<TextView
android:id="@+id/subtitleReleaseNote"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/standard_margin"
android:justificationMode="inter_word"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/iconReleaseNote"
app:layout_constraintTop_toBottomOf="@id/titleReleaseNote"
tools:text="@tools:sample/lorem[40]" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/activity_horizontal_margin"
app:cardBackgroundColor="@color/background_color"
app:cardCornerRadius="@dimen/standard_half_margin"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/activity_horizontal_margin"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_horizontal_margin"
android:orientation="horizontal">
<ImageView
android:id="@+id/dialog_remove_thumbnail"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/standard_margin" />
<TextView
android:id="@+id/dialog_remove_information"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:textColor="@color/black"
android:textSize="@dimen/two_line_primary_text_size"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginEnd="@dimen/standard_margin"
tools:text="Do you really want to remove this item?" />
</LinearLayout>
<LinearLayout
android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="5dp">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/dialog_remove_no"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2"
android:text="@string/common_no" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/dialog_remove_local_only"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/confirmation_remove_local" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/dialog_remove_yes"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2"
android:text="@string/common_yes" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="58dip"
style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown"
>
<ImageView
android:id="@android:id/icon1"
android:layout_width="48dip"
android:layout_height="48dip"
android:scaleType="centerInside"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:visibility="invisible"
style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Icon1" />
<ImageView
android:id="@+id/edit_query"
android:layout_width="48dip"
android:layout_height="48dip"
android:scaleType="centerInside"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:background="?attr/selectableItemBackground"
android:visibility="gone"
style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Query" />
<ImageView
android:id="@android:id/icon2"
android:layout_width="48dip"
android:layout_height="48dip"
android:scaleType="centerInside"
android:layout_alignWithParentIfMissing="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:visibility="gone"
style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Icon2" />
<TextView
android:id="@android:id/text2"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?attr/textAppearanceSearchResultSubtitle"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="29dip"
android:paddingBottom="4dip"
android:gravity="top"
android:layout_alignWithParentIfMissing="true"
android:layout_alignParentBottom="true"
android:visibility="gone" />
<TextView
android:id="@android:id/text1"
style="?android:attr/dropDownItemStyle"
android:textAppearance="?attr/textAppearanceSearchResultTitle"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@android:id/icon1"
/>
</RelativeLayout>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
qsfera Android client application
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/standard_half_margin"
android:minWidth="@dimen/share_user_groups_width"
android:orientation="vertical">
<androidx.appcompat.widget.SearchView
android:id="@+id/searchView"
style="@style/qsfera.SearchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/share_search" />
<ListView
android:id="@+id/searchUsersListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
</LinearLayout>
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2024 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/share_activity_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.sharing.ShareActivity"
android:filterTouchesWhenObscured="true"
android:orientation="vertical"
>
<include layout="@layout/qsfera_toolbar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/share_fragment_container">
</FrameLayout>
</LinearLayout>
@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/shareScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.sharing.ShareActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/shareHeaderContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_padding">
<ImageView
android:id="@+id/shareFileIcon"
android:layout_width="@dimen/file_icon_size"
android:layout_height="@dimen/file_icon_size"
android:layout_gravity="center_vertical"
android:layout_marginEnd="@dimen/standard_half_margin"
android:src="@drawable/file" />
<TextView
android:id="@+id/shareFileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_half_margin"
android:layout_marginStart="4dp"
android:layout_toEndOf="@+id/shareFileIcon"
android:layout_toStartOf="@+id/getPrivateLinkButton"
android:ellipsize="middle"
android:singleLine="true"
android:text="@string/placeholder_filename"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/shareFileSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/shareFileName"
android:layout_gravity="center_vertical"
android:layout_marginStart="4dp"
android:layout_toEndOf="@+id/shareFileIcon"
android:text="@string/placeholder_filesize"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="12sp" />
<ImageButton
android:id="@+id/getPrivateLinkButton"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_alignParentEnd="true"
android:padding="@dimen/standard_half_padding"
android:src="@drawable/copy_link"
android:scaleType="centerCrop"
android:background="@color/transparent"
android:contentDescription="@string/content_description_get_private_link" />
</RelativeLayout>
<View
android:id="@+id/shareHeaderDivider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/actionbar_start_color" />
<LinearLayout
android:id="@+id/shareWithUsersSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/actionbar_start_color">
<TextView
android:id="@+id/shareWithUsersSectionTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/standard_half_padding"
android:text="@string/share_with_user_section_title"
android:textAllCaps="true"
android:textColor="@color/white"
android:textStyle="bold"
android:accessibilityHeading="true"/>
<ImageButton
android:id="@+id/addUserButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:background="@color/transparent"
android:src="@drawable/ic_add"
android:contentDescription="@string/content_description_add_share" />
</RelativeLayout>
<ListView
android:id="@+id/shareUsersList"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:scrollbars="vertical"
android:visibility="gone" />
<TextView
android:id="@+id/shareNoUsers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/standard_padding"
android:paddingStart="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_padding"
android:text="@string/share_no_users"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/shareViaLinkSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/standard_padding">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/actionbar_start_color">
<TextView
android:id="@+id/shareWithPublicLinkTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingStart="@dimen/standard_half_padding"
android:text="@string/share_via_link_section_title"
android:textAllCaps="true"
android:textColor="@color/white"
android:textStyle="bold"
android:accessibilityHeading="true"/>
<ImageButton
android:id="@+id/addPublicLinkButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:background="@color/transparent"
android:src="@drawable/ic_add"
android:contentDescription="@string/content_description_add_public_link" />
</RelativeLayout>
<TextView
android:id="@+id/shareWarning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/warning_background_color"
android:paddingBottom="@dimen/standard_padding"
android:paddingLeft="@dimen/standard_half_padding"
android:paddingRight="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_padding"
android:text="@string/share_warning_about_forwarding_public_links"
android:textColor="@color/warning_grey_text"
android:textSize="15sp" />
<ListView
android:id="@+id/sharePublicLinksList"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:scrollbars="vertical"
android:visibility="gone" />
<TextView
android:id="@+id/shareNoPublicLinks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/standard_padding"
android:paddingStart="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_padding"
android:text="@string/share_no_public_links"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
@@ -0,0 +1,383 @@
<?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="match_parent"
android:orientation="vertical"
android:padding="@dimen/standard_half_margin">
<TextView
android:id="@+id/publicShareDialogTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/standard_half_padding"
android:text="@string/share_via_link_create_title"
android:textAppearance="@android:style/TextAppearance.Material.DialogWindowTitle"
android:accessibilityHeading="true"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/shareViaLinkNameSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_half_margin"
android:orientation="horizontal">
<TextView
android:labelFor="@+id/shareViaLinkNameValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/standard_half_padding"
android:text="@string/share_via_link_name_label"
android:textColor="@color/black"
android:textSize="15sp" />
<EditText
android:id="@+id/shareViaLinkNameValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_half_padding"
android:inputType="textNoSuggestions"
android:textSize="15sp" />
</LinearLayout>
<RadioGroup
android:id="@+id/shareViaLinkEditPermissionGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/shareViaLinkEditPermissionReadOnly"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/share_via_link_edit_permission_read_only_label" />
<RadioButton
android:id="@+id/shareViaLinkEditPermissionReadAndWrite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/share_via_link_edit_permission_read_and_write_label" />
<RadioButton
android:id="@+id/shareViaLinkEditPermissionUploadFiles"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/share_via_link_edit_permission_upload_only_label" />
</RadioGroup>
<RelativeLayout
android:id="@+id/shareViaLinkPasswordSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin">
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/shareViaLinkPasswordSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:padding="@dimen/standard_half_padding" />
<TextView
android:id="@+id/shareViaLinkPasswordLabel"
android:labelFor="@+id/shareViaLinkPasswordSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/shareViaLinkPasswordSwitch"
android:paddingLeft="@dimen/standard_half_padding"
android:paddingRight="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_half_padding"
android:text="@string/share_via_link_password_label"
android:textColor="@color/black"
android:textSize="15sp" />
</RelativeLayout>
<EditText
android:id="@+id/shareViaLinkPasswordValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:inputType="textPassword"
android:visibility="gone" />
<LinearLayout
android:id="@+id/layoutPasswordGeneratorButtons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/generatePasswordButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/share_via_link_generate_password_button"
android:backgroundTint="@color/transparent"
android:textColor="@color/primary_button_background_color"
style="?android:attr/borderlessButtonStyle"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/copyPasswordButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/share_via_link_copy_password_button"
android:backgroundTint="@color/transparent"
android:textColor="@color/grey"
android:enabled="false"
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyIntro"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:text="@string/password_policy_intro"
android:visibility="gone" />
<LinearLayout
android:id="@+id/shareViaLinkPasswordPolicyMinCharacters"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMinCharactersIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMinCharactersText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/shareViaLinkPasswordPolicyUpperCaseCharacters"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/shareViaLinkPasswordPolicyUpperCaseCharactersIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyUpperCaseCharactersText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/shareViaLinkPasswordPolicyLowerCaseCharacters"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/shareViaLinkPasswordPolicyLowerCaseCharactersIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyLowerCaseCharactersText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/shareViaLinkPasswordPolicyMinSpecialCharacters"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMinSpecialCharactersIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMinSpecialCharactersText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/shareViaLinkPasswordPolicyMaxCharacters"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMaxCharactersIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMaxCharactersText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/shareViaLinkPasswordPolicyMinDigits"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/standard_half_margin"
android:layout_marginRight="@dimen/standard_half_margin"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMinDigitsIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/shareViaLinkPasswordPolicyMinDigitsText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<RelativeLayout
android:id="@+id/shareViaLinkExpirationSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin">
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/shareViaLinkExpirationSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:checked="false"
android:padding="@dimen/standard_half_padding" />
<TextView
android:id="@+id/shareViaLinkExpirationLabel"
android:labelFor="@+id/shareViaLinkExpirationSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/shareViaLinkExpirationSwitch"
android:paddingLeft="@dimen/standard_half_padding"
android:paddingRight="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_half_padding"
android:text="@string/share_via_link_expiration_date_label"
android:textColor="@color/black"
android:textSize="15sp"
android:focusable="false"/>
<TextView
android:id="@+id/shareViaLinkExpirationValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@id/shareViaLinkExpirationLabel"
android:layout_toStartOf="@id/shareViaLinkExpirationSwitch"
android:paddingBottom="@dimen/standard_half_padding"
android:paddingLeft="@dimen/standard_half_padding"
android:paddingRight="@dimen/standard_half_padding"
android:textSize="12sp"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:visibility="gone"
android:focusable="false"/>
<TextView
android:id="@+id/shareViaLinkExpirationExplanationLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@id/shareViaLinkExpirationValue"
android:paddingLeft="@dimen/standard_half_padding"
android:paddingRight="@dimen/standard_half_padding"
android:paddingTop="@dimen/standard_half_padding"
android:text="@string/share_via_link_expiration_date_label"
android:textColor="@color/half_black"
android:textSize="15sp"
android:visibility="gone" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:orientation="vertical">
<TextView
android:id="@+id/public_link_error_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:drawableStart="@drawable/common_error_grey"
android:gravity="center_vertical"
android:paddingLeft="@dimen/standard_half_padding"
android:paddingRight="@dimen/standard_half_padding"
android:textColor="@color/secondaryTextColor"
android:textSize="13sp"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/cancelButton"
style="@style/Button.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/share_cancel_public_link_button"
android:text="@string/share_cancel_public_link_button"
android:theme="@style/Button.Primary" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/saveButton"
style="@style/Button.Primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:contentDescription="@string/share_confirm_public_link_button"
android:text="@string/share_confirm_public_link_button"
android:theme="@style/Button.Primary" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="@+id/publicLinkName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="@dimen/standard_half_margin"
android:layout_marginStart="@dimen/standard_half_margin"
android:layout_marginTop="@dimen/standard_half_margin"
android:layout_weight="1"
android:ellipsize="middle"
android:singleLine="true"
android:text="@string/username"
android:textColor="@color/textColor"
android:textSize="@dimen/two_line_primary_text_size" />
<ImageButton
android:id="@+id/getPublicLinkButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_vertical"
android:padding="14dp"
android:src="@drawable/copy_link"
android:scaleType="centerCrop"
android:background="@color/transparent"
android:contentDescription="@string/content_description_get_public_link" />
<ImageButton
android:id="@+id/deletePublicLinkButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_vertical"
android:padding="14dp"
android:src="@drawable/ic_action_delete_grey"
android:scaleType="centerCrop"
android:background="@color/transparent"
android:contentDescription="@string/content_description_delete_public_link" />
<ImageButton
android:id="@+id/editPublicLinkButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_vertical"
android:padding="14dp"
android:src="@drawable/ic_lead_pencil_grey"
android:background="@color/transparent"
android:contentDescription="@string/content_description_get_edit_public_link" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:filterTouchesWhenObscured="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:src="@drawable/ic_user"
android:layout_marginStart="@dimen/standard_half_margin"
android:layout_gravity="center_vertical" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/two_line_primary_text_size"
android:text="@string/username"
android:id="@+id/userOrGroupName"
android:layout_marginTop="@dimen/standard_half_margin"
android:layout_marginBottom="@dimen/standard_half_margin"
android:layout_marginStart="@dimen/standard_half_margin"
android:textColor="@color/textColor"
android:singleLine="true"
android:ellipsize="middle"
android:layout_gravity="center_vertical" />
<ImageButton
android:layout_width="48dp"
android:layout_height="48dp"
android:id="@+id/unshareButton"
android:src="@drawable/ic_action_delete_grey"
android:padding="14dp"
android:scaleType="centerCrop"
android:background="@color/transparent"
android:contentDescription="@string/content_description_delete_share" />
<ImageButton
android:layout_width="48dp"
android:layout_height="48dp"
android:id="@+id/editShareButton"
android:src="@drawable/ic_lead_pencil_grey"
android:padding="14dp"
android:background="@color/transparent"
android:contentDescription="@string/content_description_edit_share" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ qsfera Android client application
~
~ @author Juan Carlos Garrote Gascón
~ Copyright (C) 2022 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/shares_coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true">
<include
android:id="@+id/empty_data_parent"
layout="@layout/item_empty_dataset"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="@dimen/standard_padding">
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_half_margin"
android:text="@string/actionbar_sort_title"
android:textColor="@color/bottom_sheet_fragment_title_color"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="@dimen/bottom_sheet_fragment_divider_height"
android:layout_marginTop="@dimen/standard_half_margin"
android:background="@color/bottom_sheet_fragment_item_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title" />
<eu.qsfera.android.presentation.common.BottomSheetFragmentItemView
android:id="@+id/sort_by_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIcon="@drawable/ic_sort_by_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider"
app:title="@string/global_name" />
<eu.qsfera.android.presentation.common.BottomSheetFragmentItemView
android:id="@+id/sort_by_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIcon="@drawable/ic_sort_by_date"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sort_by_name"
app:title="@string/global_date" />
<eu.qsfera.android.presentation.common.BottomSheetFragmentItemView
android:id="@+id/sort_by_size"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIcon="@drawable/ic_sort_by_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sort_by_date"
app:title="@string/global_size" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/sort_options_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/actionbar_start_color"
android:paddingStart="@dimen/standard_half_padding"
android:paddingEnd="@dimen/standard_half_padding"
android:paddingBottom="@dimen/standard_quarter_padding">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/sort_type_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/standard_half_padding"
app:layout_constraintEnd_toStartOf="@id/view_type_selector"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/sort_type_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/sort_type_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/global_name" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/sort_type_icon"
android:layout_width="@dimen/bottom_sheet_fragment_item_icon_size"
android:layout_height="@dimen/bottom_sheet_fragment_arrow_icon_size"
android:tint="@color/white"
app:layout_constraintBottom_toBottomOf="@+id/sort_type_title"
app:layout_constraintStart_toEndOf="@+id/sort_type_title"
app:layout_constraintTop_toTopOf="@+id/sort_type_title"
tools:src="@drawable/ic_baseline_arrow_upward" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/view_type_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/standard_half_padding"
android:src="@drawable/ic_baseline_view_list"
android:tint="@color/white"
android:contentDescription="@string/content_description_type_view"
app:layout_constraintBottom_toBottomOf="@id/sort_type_selector"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/sort_type_selector"
app:layout_constraintTop_toTopOf="@id/sort_type_selector" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ qsfera Android client application
~
~ @author Juan Carlos Garrote Gascón
~ Copyright (C) 2023 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="@dimen/standard_padding"
android:paddingVertical="@dimen/standard_half_padding"
android:background="@color/spaces_card_background_color">
<androidx.cardview.widget.CardView
android:id="@+id/space_header_card"
android:layout_width="@dimen/spaces_header_card_height"
android:layout_height="@dimen/spaces_header_card_height"
android:foreground="?android:attr/selectableItemBackground"
app:cardBackgroundColor="@color/spaces_card_background_color"
app:cardCornerRadius="10dp"
app:cardElevation="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/space_header_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/ic_spaces" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/space_header_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="26sp"
android:layout_marginHorizontal="@dimen/standard_margin"
android:layout_marginVertical="@dimen/standard_half_margin"
android:textColor="@color/textColor"
android:textStyle="bold"
android:maxLines="2"
android:ellipsize="end"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/space_header_card"
app:layout_constraintTop_toTopOf="parent"
tools:text="Space name"/>
<TextView
android:id="@+id/space_header_subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="17sp"
android:layout_marginHorizontal="@dimen/standard_margin"
android:layout_marginVertical="@dimen/standard_half_margin"
android:textColor="@color/textColor"
android:maxLines="2"
android:ellipsize="end"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/space_header_card"
app:layout_constraintTop_toBottomOf="@id/space_header_name"
tools:text="Space subtitle"/>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView
android:id="@+id/space_icon"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginEnd="2dp"
android:src="@drawable/ic_spaces"
android:visibility="gone"
app:tint="@color/list_item_lastmod_and_filesize_text"
tools:visibility="visible" />
<TextView
android:id="@+id/space_name"
android:layout_width="wrap_content"
android:maxWidth="100dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/standard_half_margin"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textStyle="bold"
android:ellipsize="middle"
android:singleLine="true"
android:textSize="12sp"
android:visibility="gone"
tools:text="Space name"
tools:visibility="visible" />
<TextView
android:id="@+id/path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:ellipsize="middle"
android:singleLine="true"
android:textSize="12sp"
tools:text="/path/to/file"
tools:visibility="visible" />
</LinearLayout>
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ qsfera Android client application
~
~ @author Juan Carlos Garrote Gascón
~ Copyright (C) 2022 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".presentation.spaces.SpacesListFragment">
<ProgressBar
android:id="@+id/sync_progress_bar"
style="@style/Widget.qsfera.TopProgressBar"
android:layout_width="match_parent"
android:layout_height="@dimen/file_list_progress_bar_height"
android:layout_margin="0dp"
android:indeterminate="false"
android:indeterminateOnly="false"
android:visibility="gone"
fab:layout_constraintTop_toTopOf="parent" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_spaces_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="@dimen/file_list_progress_bar_height"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_spaces_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:paddingHorizontal="@dimen/standard_half_margin"
tools:listitem="@layout/spaces_list_item"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<include
android:id="@+id/empty_data_parent"
layout="@layout/item_empty_dataset"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ qsfera Android client application
~
~ @author Juan Carlos Garrote Gascón
~ Copyright (C) 2023 ownCloud GmbH.
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License version 2,
~ as published by the Free Software Foundation.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
~
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/spaces_list_item_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:id="@+id/spaces_list_item_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
app:cardBackgroundColor="@color/spaces_card_background_color"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/spaces_list_item_image"
android:layout_width="match_parent"
android:layout_height="@dimen/spaces_thumbnail_height"
android:scaleType="centerCrop"
android:src="@drawable/ic_spaces" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/actionbar_start_color" />
<TextView
android:id="@+id/spaces_list_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_half_margin"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="18sp"
android:textStyle="bold"
tools:text="Name" />
<TextView
android:id="@+id/spaces_list_item_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/standard_half_margin"
android:layout_marginBottom="@dimen/standard_half_margin"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="15sp"
tools:text="Subtitle" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
@@ -0,0 +1,470 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
qsfera Android client application
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/standard_padding"
android:orientation="vertical">
<TextView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:paddingBottom="@dimen/standard_padding"
android:text="@string/ssl_validator_header"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
/>
<TextView
android:id="@+id/reason_cert_not_trusted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_cert_not_trusted"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_cert_expired"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_cert_expired"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_cert_not_yet_valid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_cert_not_yet_valid"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_hostname_not_verified"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_hostname_not_verified"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_no_info_about_error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_no_info_about_error"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<ScrollView
android:id="@+id/details_scroll"
android:visibility="gone"
android:padding="8dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<LinearLayout
android:id="@+id/details_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:orientation="vertical">
<TextView
android:id="@+id/null_cert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="20dp"
android:text="@string/ssl_validator_null_cert"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/label_subject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_subject"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_subject_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_CN"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_O"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_OU"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_ST"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_C"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_L"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_issuer"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_issuer_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_CN"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_O"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_OU"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_ST"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_C"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_L"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_validity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_validity"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_validity_from"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_validity_from"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_validity_from"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_validity_to"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_validity_to"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_validity_to"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_signature"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_signature_algorithm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_signature_algorithm"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_signature_algorithm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_certificate_fingerprint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_certificate_fingerprint"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_certificate_fingerprint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
</LinearLayout>
</ScrollView>
<TextView
android:id="@+id/question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:paddingTop="@dimen/standard_padding"
android:text="@string/ssl_validator_question"
android:textAppearance="?android:attr/textAppearanceMedium"
>
</TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnCancel"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/common_no" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/details_btn"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="@string/ssl_validator_btn_details_see" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ok"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/common_yes" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,438 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
qsfera Android client application
Copyright (C) 2016 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp"
>
<TextView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_header"
android:paddingBottom="@dimen/standard_padding"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/reason_cert_not_trusted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_cert_not_trusted"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_cert_expired"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_cert_expired"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_cert_not_yet_valid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_cert_not_yet_valid"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/reason_hostname_not_verified"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:paddingStart="8dp"
android:text="@string/ssl_validator_reason_hostname_not_verified"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<ScrollView
android:id="@+id/details_scroll"
android:visibility="gone"
android:padding="8dp"
android:layout_width="wrap_content"
android:layout_height="180dp">
<LinearLayout
android:id="@+id/details_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:orientation="vertical">
<TextView
android:id="@+id/label_subject"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_subject"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_subject_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_CN"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_O"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_OU"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_ST"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_C"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_subject_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_L"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_subject_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_issuer"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_issuer_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_CN"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_CN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_O"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_O"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_OU"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_OU"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_ST"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_ST"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_C"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_issuer_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_L"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_issuer_L"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_validity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_validity"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_validity_from"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_validity_from"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_validity_from"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_validity_to"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_validity_to"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_validity_to"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/label_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text="@string/ssl_validator_label_signature"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/label_signature_algorithm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ssl_validator_label_signature_algorithm"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_signature_algorithm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:id="@+id/value_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
/>
</LinearLayout>
</ScrollView>
<TextView
android:id="@+id/question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/standard_padding"
android:text="@string/ssl_validator_question"
android:textAppearance="?android:attr/textAppearanceMedium"
>
</TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnCancel"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/common_no" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/details_btn"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="@string/ssl_validator_btn_details_see" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ok"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/common_yes" />
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ProgressBar
android:id="@+id/syncProgressBar"
android:layout_width="match_parent"
android:layout_height="4dp"
android:padding="0dp"
android:layout_margin="0dp"
android:layout_gravity="top"
style="@style/Widget.qsfera.TopProgressBar"
android:indeterminate="false"
android:indeterminateOnly="false"
android:visibility="visible"
/>
<View
android:id="@+id/shadow_view"
android:layout_width="match_parent"
android:layout_height="4dp"
android:background="@drawable/shadow_gradient"
android:padding="0dp"
android:layout_margin="0dp"
android:layout_gravity="top" />
</merge>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:padding="@dimen/standard_padding">
<TextView
android:id="@+id/upload_to_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_half_margin"
android:text="@string/upload_to"
android:textColor="@color/bottom_sheet_fragment_title_color"
android:textSize="@dimen/two_line_primary_text_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/divider"
android:layout_width="0dp"
android:layout_height="@dimen/bottom_sheet_fragment_divider_height"
android:layout_marginTop="@dimen/standard_half_margin"
android:background="@color/bottom_sheet_fragment_item_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/upload_to_text_view" />
<eu.qsfera.android.presentation.common.BottomSheetFragmentItemView
android:id="@+id/upload_from_files_item_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIcon="@drawable/bottom_sheets_files"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/divider"
app:title="@string/upload_files_title" />
<eu.qsfera.android.presentation.common.BottomSheetFragmentItemView
android:id="@+id/upload_from_camera_item_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIcon="@drawable/bottom_sheets_camera"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/upload_from_files_item_view"
app:title="@string/upload_from_camera_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,60 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="3dp">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/uploadListGroupName"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:divider="@null"
android:dividerHeight="0dp"
android:ellipsize="middle"
android:paddingStart="@dimen/activity_horizontal_margin"
android:showDividers="none"
android:textColor="@color/color_accent"
app:layout_constraintBottom_toTopOf="@id/uploadListGroupButtonClear"
app:layout_constraintEnd_toStartOf="@id/textViewFileCount"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Uploaded" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/textViewFileCount"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="@dimen/activity_horizontal_margin"
app:layout_constraintBottom_toBottomOf="@id/uploadListGroupName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="5 Files" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/uploadListGroupButtonClear"
style="@style/Button.Primary"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:visibility="gone"
android:layout_marginStart="13dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/uploadListGroupName"
android:text="@string/action_upload_clear"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/uploadListGroupButtonRetry"
style="@style/Button.Primary"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/uploadListGroupButtonClear"
app:layout_constraintTop_toBottomOf="@id/uploadListGroupName"
android:text="@string/action_upload_retry"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ListItemLayout"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:paddingTop="@dimen/standard_half_padding"
android:paddingBottom="@dimen/standard_half_padding"
android:filterTouchesWhenObscured="true"
android:baselineAligned="false">
<FrameLayout
android:layout_width="60dp"
android:layout_height="72dp"
android:focusable="false"
android:focusableInTouchMode="false">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="@dimen/file_icon_size"
android:layout_height="@dimen/file_icon_size"
android:layout_gravity="center"
android:scaleType="centerCrop"
tools:src="@drawable/ic_menu_archive" />
</FrameLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/upload_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="middle"
android:singleLine="true"
android:textColor="@color/textColor"
tools:text="@string/placeholder_filename"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/upload_file_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:ellipsize="middle"
android:singleLine="true"
tools:text="@string/placeholder_filesize"
android:textSize="12sp" />
<TextView
android:id="@+id/upload_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
tools:text="@string/placeholder_timestamp"
android:textSize="12sp" />
<TextView
android:id="@+id/upload_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
tools:text="@string/uploads_view_upload_status_succeeded"
android:textSize="12sp" />
</LinearLayout>
<ProgressBar
android:id="@+id/upload_progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/upload_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:singleLine="true"
tools:text="@string/auth_username"
android:textSize="12sp" />
<include
android:id="@+id/space_path_line"
layout="@layout/space_path_line"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<FrameLayout
android:layout_width="56dp"
android:layout_height="72dp"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_gravity="center_vertical"
android:paddingHorizontal="8dp"
>
<ImageButton
android:id="@+id/upload_right_button"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
/>
</FrameLayout>
</LinearLayout>
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/upload_files_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/qsfera_toolbar" />
<eu.qsfera.android.presentation.files.SortOptionsView
android:id="@+id/options_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<include
android:id="@+id/empty_list_view"
layout="@layout/item_empty_dataset"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:visibility="gone"
tools:visibility="visible" />
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:visibility="visible"
app:layout_anchor="@+id/upload_files_layout"
app:layout_anchorGravity="center" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:divider="@color/list_divider_background"
android:dividerHeight="1dip"
android:visibility="gone"
tools:listitem="@layout/uploader_list_item_layout" />
<TextView
android:id="@+id/uploader_no_permissions_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/warning_background_color"
android:paddingHorizontal="@dimen/standard_padding"
android:paddingVertical="@dimen/standard_half_padding"
android:text="@string/folder_picker_no_permissions_message_text"
android:textColor="@color/warning_grey_text"
android:visibility="gone"
tools:visibility="visible" />
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:src="@drawable/uploader_list_separator" />
<LinearLayout
android:id="@+id/upload_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/standard_padding">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/uploader_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:text="@android:string/cancel"
android:theme="@style/Button.Secondary" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/uploader_choose_folder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:text="@string/uploader_btn_upload_text"
android:theme="@style/Button.Primary" />
</LinearLayout>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?><!--
qsfera Android client application
Copyright (C) 2012 Bartek Przybylski
Copyright (C) 2020 ownCloud GmbH.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="72dp"
android:background="@drawable/list_selector"
android:orientation="horizontal"
android:filterTouchesWhenObscured="true"
>
<ImageView
android:id="@+id/thumbnail"
android:layout_width="@dimen/file_icon_size"
android:layout_height="@dimen/file_icon_size"
android:layout_gravity="center_vertical"
android:layout_margin="12dp"
android:src="@drawable/ic_menu_archive" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="72dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/filename"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="0dp"
android:layout_marginEnd="4dp"
android:ellipsize="middle"
android:singleLine="true"
android:textColor="@color/textColor"
android:textSize="16dip" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/file_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Size MB"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size" />
<TextView
android:id="@+id/file_separator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end"
android:text=", "
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size" />
<TextView
android:id="@+id/last_mod"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end"
android:text="Mod Date"
android:textColor="@color/list_item_lastmod_and_filesize_text"
android:textSize="@dimen/two_line_secondary_text_size" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (C) 2016 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
<androidx.media3.ui.PlayerView
android:id="@+id/video_player"
app:show_buffering="always"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100"
android:background="@color/primary">
<FrameLayout
android:id="@+id/top_spacer"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/contentPanel"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="85">
</androidx.viewpager.widget.ViewPager>
<LinearLayout
android:id="@+id/bottom_buttons"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="@dimen/standard_margin"
android:layout_marginRight="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_margin"
android:layout_weight="15"
android:orientation="horizontal"
android:weightSum="3">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/skip"
style="@style/Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1"
android:text="@string/welcome_feature_skip_button"
android:textColor="@color/white" />
<eu.qsfera.android.wizard.ProgressIndicator
android:id="@+id/progressIndicator"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="vertical">
<ImageButton
android:id="@+id/forward"
style="@style/Button.Borderless"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center"
android:padding="@dimen/standard_padding"
android:src="@drawable/ic_arrow_forward" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:id="@+id/whatsNewImage"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:layout_marginBottom="10dp"
android:layout_weight="80" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textStyle="bold"
android:textColor="@color/white"
android:id="@+id/whatsNewTitle"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:id="@+id/whatsNewText"
android:layout_margin="@dimen/standard_margin"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:textColor="@color/white" />
</LinearLayout>