mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Add file deletion, move information and solve bugs
This commit is contained in:
@@ -19,10 +19,9 @@
|
|||||||
*/
|
*/
|
||||||
package com.keepassdroid.fileselect;
|
package com.keepassdroid.fileselect;
|
||||||
|
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
class DeleteFileHistoryAsyncTask extends AsyncTask<String, Void, Void> {
|
class DeleteFileHistoryAsyncTask extends AsyncTask<FileSelectBean, Void, Void> {
|
||||||
|
|
||||||
private AfterDeleteFileHistoryListener afterDeleteFileHistoryListener;
|
private AfterDeleteFileHistoryListener afterDeleteFileHistoryListener;
|
||||||
private RecentFileHistory fileHistory;
|
private RecentFileHistory fileHistory;
|
||||||
@@ -34,8 +33,8 @@ class DeleteFileHistoryAsyncTask extends AsyncTask<String, Void, Void> {
|
|||||||
this.adapter = adapter;
|
this.adapter = adapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Void doInBackground(String... args) {
|
protected Void doInBackground(FileSelectBean... args) {
|
||||||
fileHistory.deleteFile(Uri.parse(args[0]));
|
fileHistory.deleteFile(args[0].getFileUri());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,15 +30,17 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import com.kunzisoft.keepass.R;
|
import com.kunzisoft.keepass.R;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
|
||||||
public class FileInformationDialogFragment extends DialogFragment {
|
public class FileInformationDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
private static final String FILE_SELECT_BEEN_ARG = "FILE_SELECT_BEEN_ARG";
|
private static final String FILE_SELECT_BEEN_ARG = "FILE_SELECT_BEEN_ARG";
|
||||||
|
|
||||||
public static FileInformationDialogFragment newInstance(FileSelectBeen fileSelectBeen) {
|
public static FileInformationDialogFragment newInstance(FileSelectBean fileSelectBean) {
|
||||||
FileInformationDialogFragment fileInformationDialogFragment =
|
FileInformationDialogFragment fileInformationDialogFragment =
|
||||||
new FileInformationDialogFragment();
|
new FileInformationDialogFragment();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putSerializable(FILE_SELECT_BEEN_ARG, fileSelectBeen);
|
args.putSerializable(FILE_SELECT_BEEN_ARG, fileSelectBean);
|
||||||
fileInformationDialogFragment.setArguments(args);
|
fileInformationDialogFragment.setArguments(args);
|
||||||
return fileInformationDialogFragment;
|
return fileInformationDialogFragment;
|
||||||
}
|
}
|
||||||
@@ -50,17 +52,23 @@ public class FileInformationDialogFragment extends DialogFragment {
|
|||||||
View root = inflater.inflate(R.layout.file_selection_information, null);
|
View root = inflater.inflate(R.layout.file_selection_information, null);
|
||||||
|
|
||||||
if (getArguments() != null && getArguments().containsKey(FILE_SELECT_BEEN_ARG)) {
|
if (getArguments() != null && getArguments().containsKey(FILE_SELECT_BEEN_ARG)) {
|
||||||
FileSelectBeen fileSelectBeen = (FileSelectBeen) getArguments().getSerializable(FILE_SELECT_BEEN_ARG);
|
FileSelectBean fileSelectBean = (FileSelectBean) getArguments().getSerializable(FILE_SELECT_BEEN_ARG);
|
||||||
if(fileSelectBeen != null) {
|
TextView fileWarningView = (TextView) root.findViewById(R.id.file_warning);
|
||||||
|
if(fileSelectBean != null) {
|
||||||
TextView fileNameView = (TextView) root.findViewById(R.id.file_filename);
|
TextView fileNameView = (TextView) root.findViewById(R.id.file_filename);
|
||||||
TextView filePathView = (TextView) root.findViewById(R.id.file_path);
|
TextView filePathView = (TextView) root.findViewById(R.id.file_path);
|
||||||
TextView fileSizeView = (TextView) root.findViewById(R.id.file_size);
|
TextView fileSizeView = (TextView) root.findViewById(R.id.file_size);
|
||||||
TextView fileModificationView = (TextView) root.findViewById(R.id.file_modification);
|
TextView fileModificationView = (TextView) root.findViewById(R.id.file_modification);
|
||||||
fileNameView.setText(fileSelectBeen.getFileName());
|
fileWarningView.setVisibility(View.GONE);
|
||||||
filePathView.setText(fileSelectBeen.getFileUri().toString());
|
fileNameView.setText(fileSelectBean.getFileName());
|
||||||
fileSizeView.setText(String.valueOf(fileSelectBeen.getSize()));
|
filePathView.setText(fileSelectBean.getFileUri().toString());
|
||||||
fileModificationView.setText(fileSelectBeen.getLastModification().toString());
|
fileSizeView.setText(String.valueOf(fileSelectBean.getSize()));
|
||||||
}
|
fileModificationView.setText(DateFormat.getDateTimeInstance()
|
||||||
|
.format(fileSelectBean.getLastModification()));
|
||||||
|
if(fileSelectBean.notFound())
|
||||||
|
showFileNotFound(fileWarningView);
|
||||||
|
} else
|
||||||
|
showFileNotFound(fileWarningView);
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.setView(root);
|
builder.setView(root);
|
||||||
@@ -71,4 +79,9 @@ public class FileInformationDialogFragment extends DialogFragment {
|
|||||||
});
|
});
|
||||||
return builder.create();
|
return builder.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showFileNotFound(TextView fileWarningView) {
|
||||||
|
fileWarningView.setVisibility(View.VISIBLE);
|
||||||
|
fileWarningView.setText(R.string.file_not_found);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ import java.net.URLDecoder;
|
|||||||
public class FileSelectActivity extends StylishActivity implements
|
public class FileSelectActivity extends StylishActivity implements
|
||||||
CreateFileDialog.DefinePathDialogListener ,
|
CreateFileDialog.DefinePathDialogListener ,
|
||||||
AssignMasterKeyDialog.AssignPasswordDialogListener,
|
AssignMasterKeyDialog.AssignPasswordDialogListener,
|
||||||
FileSelectViewHolder.FileSelectClearListener,
|
FileSelectAdapter.FileSelectClearListener,
|
||||||
FileSelectAdapter.FileInformationShowListener {
|
FileSelectAdapter.FileInformationShowListener {
|
||||||
|
|
||||||
private static final String TAG = "FileSelectActivity";
|
private static final String TAG = "FileSelectActivity";
|
||||||
@@ -351,13 +351,6 @@ public class FileSelectActivity extends StylishActivity implements
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClickFileInformation(FileSelectBeen fileSelectBeen) {
|
|
||||||
FileInformationDialogFragment fileInformationDialogFragment =
|
|
||||||
FileInformationDialogFragment.newInstance(fileSelectBeen);
|
|
||||||
fileInformationDialogFragment.show(getSupportFragmentManager(), "fileInformation");
|
|
||||||
}
|
|
||||||
|
|
||||||
private class AssignPasswordOnFinish extends FileOnFinish {
|
private class AssignPasswordOnFinish extends FileOnFinish {
|
||||||
|
|
||||||
AssignPasswordOnFinish(FileOnFinish fileOnFinish) {
|
AssignPasswordOnFinish(FileOnFinish fileOnFinish) {
|
||||||
@@ -425,13 +418,24 @@ public class FileSelectActivity extends StylishActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onFileSelectClearListener(String fileName) {
|
public void onClickFileInformation(FileSelectBean fileSelectBean) {
|
||||||
|
if (fileSelectBean != null) {
|
||||||
|
FileInformationDialogFragment fileInformationDialogFragment =
|
||||||
|
FileInformationDialogFragment.newInstance(fileSelectBean);
|
||||||
|
fileInformationDialogFragment.show(getSupportFragmentManager(), "fileInformation");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onFileSelectClearListener(final FileSelectBean fileSelectBean) {
|
||||||
new DeleteFileHistoryAsyncTask(new DeleteFileHistoryAsyncTask.AfterDeleteFileHistoryListener() {
|
new DeleteFileHistoryAsyncTask(new DeleteFileHistoryAsyncTask.AfterDeleteFileHistoryListener() {
|
||||||
@Override
|
@Override
|
||||||
public void afterDeleteFile() {
|
public void afterDeleteFile() {
|
||||||
|
fileHistory.deleteFile(fileSelectBean.getFileUri());
|
||||||
|
mAdapter.notifyDataSetChanged();
|
||||||
updateTitleFileListView();
|
updateTitleFileListView();
|
||||||
}
|
}
|
||||||
}, fileHistory, mAdapter).execute(fileName);
|
}, fileHistory, mAdapter).execute(fileSelectBean);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -497,6 +501,8 @@ public class FileSelectActivity extends StylishActivity implements
|
|||||||
|
|
||||||
FileNameView fnv = (FileNameView) findViewById(R.id.file_select);
|
FileNameView fnv = (FileNameView) findViewById(R.id.file_select);
|
||||||
fnv.updateExternalStorageWarning();
|
fnv.updateExternalStorageWarning();
|
||||||
|
|
||||||
|
updateTitleFileListView();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkStoragePermission() {
|
private void checkStoragePermission() {
|
||||||
|
|||||||
@@ -20,8 +20,14 @@
|
|||||||
package com.keepassdroid.fileselect;
|
package com.keepassdroid.fileselect;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.support.annotation.ColorInt;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.util.TypedValue;
|
||||||
|
import android.view.ContextMenu;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
@@ -31,15 +37,25 @@ import java.util.List;
|
|||||||
|
|
||||||
public class FileSelectAdapter extends RecyclerView.Adapter<FileSelectViewHolder> {
|
public class FileSelectAdapter extends RecyclerView.Adapter<FileSelectViewHolder> {
|
||||||
|
|
||||||
|
private static final int MENU_CLEAR = 1;
|
||||||
|
|
||||||
private LayoutInflater inflater;
|
private LayoutInflater inflater;
|
||||||
private List<String> listFiles;
|
private List<String> listFiles;
|
||||||
private View.OnClickListener mOnClickListener;
|
private View.OnClickListener mOnClickListener;
|
||||||
private FileSelectViewHolder.FileSelectClearListener fileSelectClearListener;
|
private FileSelectClearListener fileSelectClearListener;
|
||||||
private FileInformationShowListener fileInformationShowListener;
|
private FileInformationShowListener fileInformationShowListener;
|
||||||
|
|
||||||
|
private @ColorInt
|
||||||
|
int warningColor;
|
||||||
|
|
||||||
FileSelectAdapter(Context context, List<String> listFiles) {
|
FileSelectAdapter(Context context, List<String> listFiles) {
|
||||||
inflater = LayoutInflater.from(context);
|
inflater = LayoutInflater.from(context);
|
||||||
this.listFiles=listFiles;
|
this.listFiles=listFiles;
|
||||||
|
|
||||||
|
TypedValue typedValue = new TypedValue();
|
||||||
|
Resources.Theme theme = context.getTheme();
|
||||||
|
theme.resolveAttribute(R.attr.colorAccentCompat, typedValue, true);
|
||||||
|
warningColor = typedValue.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -51,12 +67,16 @@ public class FileSelectAdapter extends RecyclerView.Adapter<FileSelectViewHolder
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(FileSelectViewHolder holder, int position) {
|
public void onBindViewHolder(FileSelectViewHolder holder, int position) {
|
||||||
FileSelectBeen fileSelectBeen = new FileSelectBeen(listFiles.get(position));
|
FileSelectBean fileSelectBean = new FileSelectBean(listFiles.get(position));
|
||||||
holder.fileName.setText(fileSelectBeen.getFileName());
|
holder.fileContainer.setOnCreateContextMenuListener(new ContextMenuBuilder(fileSelectBean));
|
||||||
if(fileSelectClearListener != null)
|
holder.fileName.setText(fileSelectBean.getFileName());
|
||||||
holder.setFileSelectClearListener(fileSelectClearListener);
|
if(fileSelectBean.notFound()) {
|
||||||
|
holder.fileInformation.setColorFilter(
|
||||||
|
warningColor,
|
||||||
|
android.graphics.PorterDuff.Mode.MULTIPLY);
|
||||||
|
}
|
||||||
if(fileInformationShowListener != null)
|
if(fileInformationShowListener != null)
|
||||||
holder.fileInformation.setOnClickListener(new FileInformationClickListener(fileSelectBeen));
|
holder.fileInformation.setOnClickListener(new FileInformationClickListener(fileSelectBean));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -68,7 +88,7 @@ public class FileSelectAdapter extends RecyclerView.Adapter<FileSelectViewHolder
|
|||||||
this.mOnClickListener = onItemClickListener;
|
this.mOnClickListener = onItemClickListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFileSelectClearListener(FileSelectViewHolder.FileSelectClearListener fileSelectClearListener) {
|
void setFileSelectClearListener(FileSelectClearListener fileSelectClearListener) {
|
||||||
this.fileSelectClearListener = fileSelectClearListener;
|
this.fileSelectClearListener = fileSelectClearListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,22 +96,54 @@ public class FileSelectAdapter extends RecyclerView.Adapter<FileSelectViewHolder
|
|||||||
this.fileInformationShowListener = fileInformationShowListener;
|
this.fileInformationShowListener = fileInformationShowListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FileInformationShowListener {
|
||||||
|
void onClickFileInformation(FileSelectBean fileSelectBean);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface FileSelectClearListener {
|
||||||
|
boolean onFileSelectClearListener(FileSelectBean fileSelectBean);
|
||||||
|
}
|
||||||
|
|
||||||
private class FileInformationClickListener implements View.OnClickListener {
|
private class FileInformationClickListener implements View.OnClickListener {
|
||||||
|
|
||||||
private FileSelectBeen fileSelectBeen;
|
private FileSelectBean fileSelectBean;
|
||||||
|
|
||||||
FileInformationClickListener(FileSelectBeen fileSelectBeen) {
|
FileInformationClickListener(FileSelectBean fileSelectBean) {
|
||||||
this.fileSelectBeen = fileSelectBeen;
|
this.fileSelectBean = fileSelectBean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
fileInformationShowListener.onClickFileInformation(fileSelectBeen);
|
fileInformationShowListener.onClickFileInformation(fileSelectBean);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface FileInformationShowListener {
|
private class ContextMenuBuilder implements View.OnCreateContextMenuListener {
|
||||||
void onClickFileInformation(FileSelectBeen fileSelectBeen);
|
|
||||||
|
private FileSelectBean fileSelectBean;
|
||||||
|
|
||||||
|
public ContextMenuBuilder(FileSelectBean fileSelectBean) {
|
||||||
|
this.fileSelectBean = fileSelectBean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
|
||||||
|
MenuItem clearMenu = contextMenu.add(Menu.NONE, MENU_CLEAR, Menu.NONE, R.string.remove_from_filelist);
|
||||||
|
clearMenu.setOnMenuItemClickListener(mOnMyActionClickListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MenuItem.OnMenuItemClickListener mOnMyActionClickListener = new MenuItem.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
if (item.getItemId() == MENU_CLEAR) {
|
||||||
|
return fileSelectClearListener.onFileSelectClearListener(fileSelectBean);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ import java.io.File;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class FileSelectBeen implements Serializable {
|
public class FileSelectBean implements Serializable {
|
||||||
|
|
||||||
private String fileName;
|
private String fileName;
|
||||||
private Uri fileUri;
|
private Uri fileUri;
|
||||||
private Date lastModification;
|
private Date lastModification;
|
||||||
private long size;
|
private long size;
|
||||||
|
|
||||||
public FileSelectBeen(String pathFile) {
|
public FileSelectBean(String pathFile) {
|
||||||
fileUri = Uri.parse(pathFile);
|
fileUri = Uri.parse(pathFile);
|
||||||
File file= new File(fileUri.getPath());
|
File file= new File(fileUri.getPath());
|
||||||
fileName = file.getName();
|
fileName = file.getName();
|
||||||
@@ -40,6 +40,10 @@ public class FileSelectBeen implements Serializable {
|
|||||||
size = file.getTotalSpace();
|
size = file.getTotalSpace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean notFound() {
|
||||||
|
return getSize() == 0;
|
||||||
|
}
|
||||||
|
|
||||||
public String getFileName() {
|
public String getFileName() {
|
||||||
return fileName;
|
return fileName;
|
||||||
}
|
}
|
||||||
@@ -20,51 +20,22 @@
|
|||||||
package com.keepassdroid.fileselect;
|
package com.keepassdroid.fileselect;
|
||||||
|
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.view.ContextMenu;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.kunzisoft.keepass.R;
|
import com.kunzisoft.keepass.R;
|
||||||
|
|
||||||
class FileSelectViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
|
class FileSelectViewHolder extends RecyclerView.ViewHolder {
|
||||||
private static final int MENU_CLEAR = 1;
|
|
||||||
|
View fileContainer;
|
||||||
TextView fileName;
|
TextView fileName;
|
||||||
ImageView fileInformation;
|
ImageView fileInformation;
|
||||||
private FileSelectClearListener fileSelectClearListener;
|
|
||||||
|
|
||||||
FileSelectViewHolder(View itemView) {
|
FileSelectViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
View fileContainer = itemView.findViewById(R.id.file_container);
|
fileContainer = itemView.findViewById(R.id.file_container);
|
||||||
fileContainer.setOnCreateContextMenuListener(this);
|
|
||||||
fileName = (TextView) itemView.findViewById(R.id.file_filename);
|
fileName = (TextView) itemView.findViewById(R.id.file_filename);
|
||||||
fileInformation = (ImageView) itemView.findViewById(R.id.file_information);
|
fileInformation = (ImageView) itemView.findViewById(R.id.file_information);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
|
|
||||||
MenuItem clearMenu = contextMenu.add(Menu.NONE, MENU_CLEAR, Menu.NONE, R.string.remove_from_filelist);
|
|
||||||
clearMenu.setOnMenuItemClickListener(mOnMyActionClickListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final MenuItem.OnMenuItemClickListener mOnMyActionClickListener = new MenuItem.OnMenuItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
|
||||||
if (item.getItemId() == MENU_CLEAR) {
|
|
||||||
String filename = fileName.getText().toString();
|
|
||||||
return fileSelectClearListener.onFileSelectClearListener(filename);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public void setFileSelectClearListener(FileSelectClearListener fileSelectClearListener) {
|
|
||||||
this.fileSelectClearListener = fileSelectClearListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface FileSelectClearListener {
|
|
||||||
boolean onFileSelectClearListener(String fileName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,26 +17,35 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@+id/file_container"
|
android:id="@+id/file_container"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?android:attr/selectableItemBackground">
|
android:background="?android:attr/selectableItemBackground">
|
||||||
|
|
||||||
|
<android.support.v7.widget.AppCompatTextView
|
||||||
|
android:id="@+id/file_filename"
|
||||||
|
style="@style/KeepassDXStyle.TextAppearance.Large"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_toLeftOf="@+id/file_information"
|
||||||
|
android:layout_toStartOf="@+id/file_information"
|
||||||
|
android:paddingBottom="18dp"
|
||||||
|
android:paddingEnd="18dp"
|
||||||
|
android:paddingLeft="18dp"
|
||||||
|
android:paddingRight="18dp"
|
||||||
|
android:paddingStart="18dp"
|
||||||
|
android:paddingTop="18dp" />
|
||||||
<android.support.v7.widget.AppCompatImageView
|
<android.support.v7.widget.AppCompatImageView
|
||||||
android:id="@+id/file_information"
|
android:id="@+id/file_information"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:padding="18dp"
|
android:padding="18dp"
|
||||||
android:src="@drawable/ic_info_white_24dp"
|
android:src="@drawable/ic_info_white_24dp"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
android:tint="?attr/colorPrimary"/>
|
android:tint="?attr/colorPrimary"/>
|
||||||
<android.support.v7.widget.AppCompatTextView
|
</RelativeLayout>
|
||||||
android:id="@+id/file_filename"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingTop="18dp"
|
|
||||||
android:paddingLeft="12dp"
|
|
||||||
android:paddingRight="12dp"
|
|
||||||
android:paddingBottom="18dp"
|
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Large"/>
|
|
||||||
</LinearLayout>
|
|
||||||
@@ -29,8 +29,7 @@
|
|||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/entry_modified"
|
android:text="@string/entry_modified"/>
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Title"/>
|
|
||||||
<android.support.v7.widget.AppCompatTextView
|
<android.support.v7.widget.AppCompatTextView
|
||||||
android:id="@+id/file_modification"
|
android:id="@+id/file_modification"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
@@ -62,4 +61,12 @@
|
|||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_alignParentEnd="true" />
|
android:layout_alignParentEnd="true" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<android.support.v7.widget.AppCompatTextView
|
||||||
|
android:id="@+id/file_warning"
|
||||||
|
android:layout_margin="8dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
style="@style/KeepassDXStyle.TextAppearance.WarningTextStyle"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -230,6 +230,7 @@
|
|||||||
<string name="path">Chemin</string>
|
<string name="path">Chemin</string>
|
||||||
<string name="assign_master_key">Assigner une clé maître</string>
|
<string name="assign_master_key">Assigner une clé maître</string>
|
||||||
<string name="create_keepass_file">Créer un fichier keepass</string>
|
<string name="create_keepass_file">Créer un fichier keepass</string>
|
||||||
|
<string name="bytes">Octets</string>
|
||||||
|
|
||||||
<string-array name="clipboard_timeout_options">
|
<string-array name="clipboard_timeout_options">
|
||||||
<item>30 secondes</item>
|
<item>30 secondes</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user