moved Android version dependent resources (-v11, -v14) to default folders.
Will target only 14+ in future to reduce APK size and simplify development. Started to add plugin host code
@ -57,6 +57,7 @@
|
||||
<Compile Include="database\edit\MoveElement.cs" />
|
||||
<Compile Include="database\KdbDatabaseLoader.cs" />
|
||||
<Compile Include="database\KdbxDatabaseLoader.cs" />
|
||||
<Compile Include="database\PwEntryOutput.cs" />
|
||||
<Compile Include="database\SynchronizeCachedDatabase.cs" />
|
||||
<Compile Include="DataExchange\FileFormatProvider.cs" />
|
||||
<Compile Include="DataExchange\Formats\KeePassCsv1x.cs" />
|
||||
|
@ -45,6 +45,11 @@ namespace keepass2android
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Information about the last opened entry. Includes the entry but also transformed fields.
|
||||
/// </summary>
|
||||
public PwEntryOutput LastOpenedEntry { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// if an OTP key was used, this property tells the location of the OTP auxiliary file.
|
||||
/// Must be set after loading.
|
||||
|
@ -202,7 +202,6 @@ namespace keepass2android
|
||||
extraGroup.AddView(view);
|
||||
hasExtraFields = true;
|
||||
}
|
||||
FindViewById(Resource.Id.entry_extra_strings_label).Visibility = hasExtraFields ? ViewStates.Visible : ViewStates.Gone;
|
||||
}
|
||||
|
||||
View CreateEditSection(string key, string value, bool isProtected)
|
||||
|
@ -717,9 +717,6 @@ namespace keepass2android
|
||||
}
|
||||
|
||||
return true;
|
||||
case Resource.Id.menu_cancel_edit:
|
||||
Finish();
|
||||
break;
|
||||
case Resource.Id.menu_rate:
|
||||
try {
|
||||
Util.GotoMarket(this);
|
||||
|
1533
src/keepass2android/Resources/Resource.designer.cs
generated
Before Width: | Height: | Size: 743 B After Width: | Height: | Size: 743 B |
Before Width: | Height: | Size: 590 B After Width: | Height: | Size: 590 B |
Before Width: | Height: | Size: 856 B After Width: | Height: | Size: 856 B |
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape>
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
Before Width: | Height: | Size: 564 B |
Before Width: | Height: | Size: 603 B |
Before Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 947 B After Width: | Height: | Size: 947 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
@ -1,12 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape>
|
||||
<gradient
|
||||
android:angle="45"
|
||||
android:startColor="#FF000030"
|
||||
android:endColor="#FF000000"
|
||||
android:type="linear" />
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true" android:drawable="@color/group_header_button_pressed"/> <!-- pressed -->
|
||||
<item android:state_focused="true" android:drawable="@color/group_header_button_pressed"/> <!-- focused -->
|
||||
<item android:drawable="@android:color/transparent"/> <!-- default -->
|
||||
</selector>
|
Before Width: | Height: | Size: 849 B After Width: | Height: | Size: 564 B |
Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 603 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 589 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
src/keepass2android/Resources/drawable/vdots.png
Normal file
After Width: | Height: | Size: 319 B |
BIN
src/keepass2android/Resources/drawable/vdots_holodark.png
Normal file
After Width: | Height: | Size: 309 B |
@ -1,208 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ScrollView
|
||||
android:id="@+id/entry_scroll"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_below="@id/entry_save_header">
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<!-- Title -->
|
||||
<ImageButton
|
||||
android:id="@+id/icon_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:src="@drawable/ic00" />
|
||||
<EditText
|
||||
android:id="@+id/entry_title"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dip"
|
||||
android:capitalize="sentences"
|
||||
android:layout_toLeftOf="@+id/icon_button"
|
||||
android:hint="@string/hint_title"
|
||||
android:singleLine="true" />
|
||||
<!-- Username -->
|
||||
<EditText
|
||||
android:id="@+id/entry_user_name"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dip"
|
||||
android:layout_below="@id/icon_button"
|
||||
android:hint="@string/hint_username"
|
||||
android:inputType="textEmailAddress"
|
||||
android:singleLine="true" />
|
||||
<!-- URL -->
|
||||
<EditText
|
||||
android:id="@+id/entry_url"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dip"
|
||||
android:layout_below="@id/entry_user_name"
|
||||
android:hint="@string/hint_url"
|
||||
android:inputType="textUri"
|
||||
android:singleLine="true" />
|
||||
<!-- Password -->
|
||||
<TextView
|
||||
android:id="@+id/entry_password_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_url"
|
||||
android:text="@string/entry_password" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/password_section"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_password_label">
|
||||
|
||||
<Button
|
||||
android:id="@+id/generate_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:text="@string/ellipsis" />
|
||||
<ImageButton
|
||||
android:id="@+id/toggle_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_menu_view"
|
||||
android:layout_alignTop="@id/generate_button"
|
||||
android:layout_toLeftOf="@id/generate_button"
|
||||
/>
|
||||
<EditText
|
||||
android:id="@+id/entry_password"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@id/generate_button"
|
||||
android:layout_toLeftOf="@id/toggle_password"
|
||||
android:hint="@string/hint_pass"
|
||||
android:inputType="textPassword"
|
||||
android:singleLine="true"
|
||||
android:typeface="monospace" />
|
||||
<!-- Confirm Password -->
|
||||
<EditText
|
||||
android:id="@+id/entry_confpassword"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_password"
|
||||
android:hint="@string/hint_conf_pass"
|
||||
android:inputType="textPassword"
|
||||
android:singleLine="true"
|
||||
android:typeface="monospace" />
|
||||
|
||||
</RelativeLayout>
|
||||
<!-- Comment -->
|
||||
<TextView
|
||||
android:id="@+id/entry_comment_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/password_section"
|
||||
android:text="@string/entry_comment" />
|
||||
<EditText
|
||||
android:id="@+id/entry_comment"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_comment_label"
|
||||
android:hint="@string/hint_comment"
|
||||
android:inputType="textMultiLine" />
|
||||
<!-- Extra strings -->
|
||||
<LinearLayout
|
||||
android:id="@+id/advanced_container"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_comment"
|
||||
android:orientation="vertical" />
|
||||
<Button
|
||||
android:id="@+id/add_advanced"
|
||||
style="@style/EditEntryButton"
|
||||
android:layout_marginTop="-4dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/advanced_container"
|
||||
android:drawableLeft="?attr/ic_menu_add_field"
|
||||
android:text="@string/add_extra_string" />
|
||||
<!-- file attachments -->
|
||||
<TextView
|
||||
android:id="@+id/entry_binaries_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/add_advanced"
|
||||
android:text="@string/entry_binaries" />
|
||||
<LinearLayout
|
||||
android:id="@+id/binaries"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_binaries_label"
|
||||
android:orientation="vertical" />
|
||||
<!-- Tags -->
|
||||
<TextView
|
||||
android:id="@+id/entry_tags_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/binaries"
|
||||
android:text="@string/entry_tags" />
|
||||
<EditText
|
||||
android:id="@+id/entry_tags"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_tags_label"
|
||||
android:hint="@string/hint_tags"
|
||||
android:inputType="text"
|
||||
android:singleLine="true" />
|
||||
<!-- Override URL -->
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_tags"
|
||||
android:text="@string/entry_override_url" />
|
||||
<EditText
|
||||
android:id="@+id/entry_override_url"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_override_url_label"
|
||||
android:hint="@string/hint_override_url"
|
||||
android:inputType="textUri"
|
||||
android:singleLine="true" />
|
||||
<!-- Expires -->
|
||||
<TextView
|
||||
android:id="@+id/entry_expires_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_override_url"
|
||||
android:text="@string/entry_expires" />
|
||||
<CheckBox
|
||||
android:id="@+id/entry_expires_checkbox"
|
||||
android:layout_marginLeft="16dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_expires_label" />
|
||||
<EditText
|
||||
android:id="@+id/entry_expires"
|
||||
android:layout_marginLeft="-12dip"
|
||||
android:layout_marginRight="12dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_expires_label"
|
||||
android:layout_toRightOf="@id/entry_expires_checkbox" />
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp">
|
||||
|
||||
<FrameLayout
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:id="@+id/entry_edit"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="@android:drawable/ic_menu_edit"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/menu_edit" />
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/entry_divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/blue_highlight"
|
||||
android:src="@android:drawable/divider_horizontal_bright" />
|
||||
<ScrollView
|
||||
android:id="@+id/entry_scroll"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_above="@id/entry_divider2"
|
||||
android:fillViewport="true"
|
||||
android:scrollbarStyle="insideOverlay">
|
||||
<keepass2android.view.EntryContentsView
|
||||
android:id="@+id/entry_contents"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent" />
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
@ -1,264 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/entry_table"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<LinearLayout android:id="@+id/entryfield_container_username"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/entry_user_name_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_user_name"
|
||||
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
|
||||
<!-- Username -->
|
||||
<RelativeLayout android:id="@+id/username_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/username_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_user_name"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toLeftOf="@id/username_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:id="@+id/entryfield_container_url"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- URL -->
|
||||
<TextView
|
||||
android:id="@+id/entry_url_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<RelativeLayout android:id="@+id/url_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
<ImageView
|
||||
android:id="@+id/url_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_url"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="all"
|
||||
android:layout_toLeftOf="@id/url_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_password"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Password -->
|
||||
<TextView
|
||||
android:id="@+id/entry_password_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_password"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<RelativeLayout android:id="@+id/password_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
<ImageView
|
||||
android:id="@+id/password_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_password"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:password="true"
|
||||
android:typeface="monospace"
|
||||
android:layout_toLeftOf="@id/password_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_comment"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Comment -->
|
||||
<TextView
|
||||
android:id="@+id/entry_comment_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_comment"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_comment"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/extra_strings"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="vertical" />
|
||||
<!-- file attachments -->
|
||||
<TextView
|
||||
android:id="@+id/entry_binaries_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_binaries"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/binaries"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
<!--Tags -->
|
||||
<LinearLayout android:id="@+id/entryfield_container_tags"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/entry_tags_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_tags"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_tags"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_overrideurl"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!--Override URL-->
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_override_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="all"
|
||||
android:textIsSelectable="true"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_created"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<!-- Created -->
|
||||
<TextView
|
||||
android:id="@+id/entry_created_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_created"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_created"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_modified"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Modified -->
|
||||
<TextView
|
||||
android:id="@+id/entry_modified_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_modified"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_modified"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_expires"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Expires -->
|
||||
<TextView
|
||||
android:id="@+id/entry_expires_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_expires"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_expires"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
@ -1,174 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/accept_button"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NavigationAcceptDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/accept" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/cancel_button"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/CancelDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@android:string/cancel" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<ScrollView
|
||||
android:id="@+id/ScrollView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:layout_marginBottom="12dip"
|
||||
android:layout_marginLeft="12dip"
|
||||
android:layout_marginRight="12dip"
|
||||
android:layout_marginTop="12dip">
|
||||
<RelativeLayout
|
||||
android:id="@+id/RelativeLayout"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content">
|
||||
<EditText
|
||||
android:id="@+id/password"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:singleLine="true"
|
||||
android:typeface="monospace"
|
||||
android:hint="@string/hint_generated_password" />
|
||||
<Button
|
||||
android:id="@+id/generate_password_button"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/password"
|
||||
android:text="@string/generate_password" />
|
||||
<TextView
|
||||
android:id="@+id/length_label"
|
||||
android:text="@string/length"
|
||||
style="@style/TextAppearance_SmallHeading"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_below="@id/generate_password_button" />
|
||||
<Button
|
||||
android:id="@+id/btn_length16"
|
||||
android:text="16"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_width="60sp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/length_label" />
|
||||
<Button
|
||||
android:id="@+id/btn_length12"
|
||||
android:text="12"
|
||||
android:layout_toLeftOf="@id/btn_length16"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="60sp"
|
||||
android:layout_alignTop="@id/btn_length16" />
|
||||
<Button
|
||||
android:id="@+id/btn_length8"
|
||||
android:text="8"
|
||||
android:layout_toLeftOf="@id/btn_length12"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="60sp"
|
||||
android:layout_alignTop="@id/btn_length16" />
|
||||
<Button
|
||||
android:id="@+id/btn_length6"
|
||||
android:text="6"
|
||||
android:layout_toLeftOf="@id/btn_length8"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="60sp"
|
||||
android:layout_alignTop="@id/btn_length16" />
|
||||
<EditText
|
||||
android:id="@+id/length"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_toLeftOf="@id/btn_length6"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@id/btn_length16"
|
||||
android:singleLine="true"
|
||||
android:text="12"
|
||||
android:hint="@string/hint_length" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_uppercase"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/uppercase"
|
||||
android:checked="true"
|
||||
android:layout_below="@id/length" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_lowercase"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/lowercase"
|
||||
android:checked="true"
|
||||
android:layout_below="@id/cb_uppercase" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_digits"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/digits"
|
||||
android:checked="true"
|
||||
android:layout_below="@id/cb_lowercase" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_minus"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/minus"
|
||||
android:layout_below="@id/cb_digits" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_underline"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/underline"
|
||||
android:layout_below="@id/cb_minus" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_space"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/space"
|
||||
android:layout_below="@id/cb_underline" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_specials"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/special"
|
||||
android:layout_below="@id/cb_space" />
|
||||
<CheckBox
|
||||
android:id="@+id/cb_brackets"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/brackets"
|
||||
android:layout_below="@id/cb_specials" />
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/add_group"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NewGroupDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_group" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/add_entry"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NewEntryDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_entry" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/insert_element"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NewGroupDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/insert_element_here" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/cancel_insert_element"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="@android:drawable/ic_menu_close_clear_cancel"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/cancel" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<View
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:background="#b8b8b8" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/divider2"
|
||||
android:layout_below="@id/top"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingLeft="8dp" />
|
||||
</RelativeLayout>
|
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/IconGridView"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="@android:color/background_light"
|
||||
android:verticalSpacing="5dp"
|
||||
android:horizontalSpacing="5dp"
|
||||
android:columnWidth="60dp"
|
||||
android:numColumns="auto_fit"
|
||||
android:stretchMode="columnWidth">
|
||||
</GridView>
|
@ -1,218 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView 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"
|
||||
>
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="12dip"
|
||||
android:layout_marginRight="12dip"
|
||||
android:layout_marginBottom="12dip"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<RelativeLayout
|
||||
android:id="@+id/filename_group"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:id="@+id/filename_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/TextAppearance_SmallHeading"
|
||||
android:text="@string/pass_filename" />
|
||||
<ImageView
|
||||
android:id="@+id/divider1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/filename_label"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@android:drawable/divider_horizontal_dark" />
|
||||
<HorizontalScrollView
|
||||
android:id="@+id/filenamescroll"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/divider1">
|
||||
<TextView
|
||||
android:id="@+id/filename"
|
||||
style="@style/GroupText"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="none"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true" />
|
||||
</HorizontalScrollView>
|
||||
<ImageView
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/filenamescroll"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@android:drawable/divider_horizontal_dark" />
|
||||
</RelativeLayout>
|
||||
<TextView
|
||||
android:id="@+id/password_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dip"
|
||||
android:text="@string/master_key_type" />
|
||||
<Spinner
|
||||
android:id="@+id/password_mode_spinner"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:entries="@array/password_modes"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/passwordLine"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
<EditText
|
||||
android:id="@+id/password"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:inputType="textPassword"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="bottom"
|
||||
android:hint="@string/hint_login_pass" />
|
||||
<ImageButton
|
||||
android:id="@+id/toggle_password"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_menu_view" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/keyfileLine"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
<EditText
|
||||
android:id="@+id/pass_keyfile"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="bottom"
|
||||
android:hint="@string/entry_keyfile" />
|
||||
<ImageButton
|
||||
android:id="@+id/browse_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_launcher_folder_small" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/otpView"
|
||||
android:layout_marginLeft="12dip"
|
||||
android:layout_marginRight="12dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<LinearLayout
|
||||
android:id="@+id/otpInitView"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<Button
|
||||
android:id="@+id/init_otp"
|
||||
android:text="@string/init_otp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<TextView
|
||||
android:id="@+id/otps_pending"
|
||||
android:text="@string/otps_pending"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/otpEntry"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/otp_expl"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/otp_explanation" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/otp1"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="93317749"
|
||||
android:singleLine="true" />
|
||||
<EditText
|
||||
android:id="@+id/otp2"
|
||||
android:text="54719327"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true" />
|
||||
<EditText
|
||||
android:id="@+id/otp3"
|
||||
android:text="49844651"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true" />
|
||||
<EditText
|
||||
android:id="@+id/otp4"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true" />
|
||||
<EditText
|
||||
android:id="@+id/otp5"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true" />
|
||||
<EditText
|
||||
android:id="@+id/otp6"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/otpSecretLine"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<EditText
|
||||
android:id="@+id/pass_otpsecret"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:layout_weight="1"
|
||||
android:hint="@string/otpsecret_hint" />
|
||||
<Spinner
|
||||
android:id="@+id/otpsecret_format_spinner"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/pass_ok"
|
||||
android:text="@android:string/ok"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<Button
|
||||
android:id="@+id/kill_app"
|
||||
android:text="@string/kill_app_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<CheckBox
|
||||
android:id="@+id/enable_quickunlock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/enable_quickunlock" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
@ -1,65 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/select_other_entry"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/select_other_entry" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/add_url_entry"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_url_entry" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<View
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:background="#b8b8b8" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/divider2"
|
||||
android:layout_below="@id/top"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingLeft="8dp" />
|
||||
</RelativeLayout>
|
@ -1,72 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/select_other_entry"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/select_other_entry" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/add_url_entry"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_url_entry" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<View
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:background="#b8b8b8" />
|
||||
<TextView
|
||||
android:id="@+id/no_results"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="12dp"
|
||||
android:layout_below="@id/top"
|
||||
android:text="@string/no_results" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/divider2"
|
||||
android:layout_below="@id/no_results"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingLeft="8dp" />
|
||||
</RelativeLayout>
|
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<keepass2android.views.Kp2aShortHelpView
|
||||
android:id="@+id/help"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="right"
|
||||
style="@style/TextAppearance_Help"
|
||||
android:textColor="@color/light_gray"
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
/>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toLeftOf="@id/help"
|
||||
style="@style/TextAppearance_SubElement"
|
||||
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
45
src/keepass2android/Resources/layout/Kopie von donate.xml
Normal file
@ -0,0 +1,45 @@
|
||||
<ScrollView 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"
|
||||
>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
>
|
||||
<TextView
|
||||
android:id="@+id/donate_question"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="20sp"
|
||||
android:text="@string/donate_question" />
|
||||
<ImageView
|
||||
android:id="@+id/imgoktfest"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/donate_question"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/oktoberfest" />
|
||||
<Button
|
||||
android:text="@string/ok_donate"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/imgoktfest"
|
||||
android:id="@+id/ok_donate"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:text="@string/no_thanks"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/ok_donate"
|
||||
android:id="@+id/no_donate"
|
||||
/>
|
||||
</RelativeLayout>
|
||||
|
||||
</ScrollView>
|
40
src/keepass2android/Resources/layout/ListViewPluginRow.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="10dp">
|
||||
<ImageView
|
||||
android:id="@+id/imgIcon"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginRight="15dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
<TextView
|
||||
android:id="@+id/txtLabel"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/imgIcon"
|
||||
android:textSize="22dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/txtVersion"
|
||||
android:text="0.9.3"
|
||||
android:textSize="14dp"
|
||||
android:textColor="#888888"
|
||||
android:layout_toRightOf="@id/imgIcon"
|
||||
android:layout_below="@id/txtLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<TextView
|
||||
android:id="@+id/txtStatus"
|
||||
android:textSize="14dp"
|
||||
android:textColor="#888888"
|
||||
android:layout_toRightOf="@id/imgIcon"
|
||||
android:gravity="right"
|
||||
android:layout_below="@id/txtVersion"
|
||||
android:layout_alignRight="@id/txtLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</RelativeLayout>
|
@ -2,98 +2,59 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<LinearLayout
|
||||
android:id="@+id/entry_save_header"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:padding="2sp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:id="@+id/entry_save"
|
||||
android:text="@string/entry_save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="left|center_vertical"
|
||||
android:textIsSelectable="false"
|
||||
android:editable="false"
|
||||
android:longClickable="false"
|
||||
android:clickable="true"
|
||||
android:minHeight="32dp"
|
||||
android:gravity="left|center_vertical"
|
||||
android:drawableLeft="@drawable/navigation_accept_dark"
|
||||
style="@style/GroupAndEntryHeader"
|
||||
android:background="@drawable/HeaderButtonBackground" />
|
||||
</LinearLayout>
|
||||
<ScrollView
|
||||
android:id="@+id/entry_scroll"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_below="@id/entry_save_header">
|
||||
android:layout_height="fill_parent">
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<!-- Title -->
|
||||
<TextView
|
||||
android:id="@+id/entry_title_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_title"
|
||||
style="@style/EntryFieldHeader" />
|
||||
<!-- Title -->
|
||||
<ImageButton
|
||||
android:id="@+id/icon_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic00"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_below="@id/entry_title_label" />
|
||||
android:src="@drawable/ic00" />
|
||||
<EditText
|
||||
android:id="@+id/entry_title"
|
||||
android:layout_width="fill_parent"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dip"
|
||||
android:capitalize="sentences"
|
||||
android:layout_toLeftOf="@+id/icon_button"
|
||||
android:singleLine="true"
|
||||
android:layout_below="@id/entry_title_label"
|
||||
android:hint="@string/hint_title" />
|
||||
android:hint="@string/hint_title"
|
||||
android:singleLine="true" />
|
||||
<!-- Username -->
|
||||
<TextView
|
||||
android:id="@+id/entry_user_name_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/icon_button"
|
||||
style="@style/EntryFieldHeader"
|
||||
android:text="@string/entry_user_name" />
|
||||
<EditText
|
||||
android:id="@+id/entry_user_name"
|
||||
android:layout_width="fill_parent"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:layout_marginTop="4dip"
|
||||
android:layout_below="@id/icon_button"
|
||||
android:hint="@string/hint_username"
|
||||
android:inputType="textEmailAddress"
|
||||
android:layout_below="@id/entry_user_name_label"
|
||||
android:hint="@string/hint_username" />
|
||||
<!-- URL -->
|
||||
<TextView
|
||||
android:id="@+id/entry_url_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_user_name"
|
||||
style="@style/EntryFieldHeader"
|
||||
android:text="@string/entry_url" />
|
||||
android:singleLine="true" />
|
||||
<!-- URL -->
|
||||
<EditText
|
||||
android:id="@+id/entry_url"
|
||||
android:layout_width="fill_parent"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:layout_marginTop="4dip"
|
||||
android:layout_below="@id/entry_user_name"
|
||||
android:hint="@string/hint_url"
|
||||
android:inputType="textUri"
|
||||
android:layout_below="@id/entry_url_label"
|
||||
android:hint="@string/hint_url" />
|
||||
android:singleLine="true" />
|
||||
<!-- Password -->
|
||||
<TextView
|
||||
android:id="@+id/entry_password_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
android:text="@string/entry_password" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/password_section"
|
||||
@ -142,47 +103,43 @@
|
||||
<!-- Comment -->
|
||||
<TextView
|
||||
android:id="@+id/entry_comment_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/password_section"
|
||||
style="@style/EntryFieldHeader"
|
||||
android:text="@string/entry_comment" />
|
||||
<EditText
|
||||
android:id="@+id/entry_comment"
|
||||
android:inputType="textMultiLine"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_comment_label"
|
||||
android:hint="@string/hint_comment" />
|
||||
android:hint="@string/hint_comment"
|
||||
android:inputType="textMultiLine" />
|
||||
<!-- Extra strings -->
|
||||
<TextView
|
||||
android:id="@+id/entry_extra_strings_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_comment"
|
||||
android:text="@string/entry_extra_strings"
|
||||
style="@style/EntryFieldHeader" />
|
||||
<LinearLayout
|
||||
android:id="@+id/advanced_container"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_extra_strings_label"
|
||||
android:layout_below="@id/entry_comment"
|
||||
android:orientation="vertical" />
|
||||
<Button
|
||||
android:id="@+id/add_advanced"
|
||||
style="@style/EditEntryButton"
|
||||
android:layout_marginTop="-4dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/advanced_container"
|
||||
android:drawableLeft="@android:drawable/ic_menu_add"
|
||||
android:drawableLeft="?attr/ic_menu_add_field"
|
||||
android:text="@string/add_extra_string" />
|
||||
<!-- file attachments -->
|
||||
<TextView
|
||||
android:id="@+id/entry_binaries_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_binaries"
|
||||
android:layout_below="@id/add_advanced"
|
||||
style="@style/EntryFieldHeader" />
|
||||
android:text="@string/entry_binaries" />
|
||||
<LinearLayout
|
||||
android:id="@+id/binaries"
|
||||
android:layout_width="fill_parent"
|
||||
@ -192,54 +149,59 @@
|
||||
<!-- Tags -->
|
||||
<TextView
|
||||
android:id="@+id/entry_tags_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_tags"
|
||||
android:layout_below="@id/binaries"
|
||||
style="@style/EntryFieldHeader" />
|
||||
android:text="@string/entry_tags" />
|
||||
<EditText
|
||||
android:id="@+id/entry_tags"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:inputType="text"
|
||||
android:layout_below="@id/entry_tags_label"
|
||||
android:hint="@string/hint_tags" />
|
||||
android:hint="@string/hint_tags"
|
||||
android:inputType="text"
|
||||
android:singleLine="true" />
|
||||
<!-- Override URL -->
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_tags"
|
||||
style="@style/EntryFieldHeader"
|
||||
android:text="@string/entry_override_url" />
|
||||
<EditText
|
||||
android:id="@+id/entry_override_url"
|
||||
style="@style/TextAppearance_EditEntry_Value"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:inputType="textUri"
|
||||
android:layout_below="@id/entry_override_url_label"
|
||||
android:hint="@string/hint_override_url" />
|
||||
android:hint="@string/hint_override_url"
|
||||
android:inputType="textUri"
|
||||
android:singleLine="true" />
|
||||
<!-- Expires -->
|
||||
<TextView
|
||||
android:id="@+id/entry_expires_label"
|
||||
style="@style/TextAppearance_EditEntry_LabelSmall"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_expires"
|
||||
style="@style/EntryFieldHeader"
|
||||
android:layout_below="@id/entry_override_url" />
|
||||
android:layout_below="@id/entry_override_url"
|
||||
android:text="@string/entry_expires" />
|
||||
<CheckBox
|
||||
android:id="@+id/entry_expires_checkbox"
|
||||
android:layout_below="@id/entry_expires_label"
|
||||
android:layout_marginLeft="16dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/entry_expires_label" />
|
||||
<EditText
|
||||
android:id="@+id/entry_expires"
|
||||
android:layout_marginLeft="-12dip"
|
||||
android:layout_marginRight="12dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/entry_expires_checkbox"
|
||||
android:layout_below="@id/entry_expires_label" />
|
||||
android:layout_below="@id/entry_expires_label"
|
||||
android:layout_toRightOf="@id/entry_expires_checkbox" />
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
@ -1,72 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<!-- Title -->
|
||||
<LinearLayout
|
||||
android:id="@+id/title_block"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:id="@+id/entry_title"
|
||||
style="@style/GroupAndEntryHeader"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="left|center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:textIsSelectable="false"
|
||||
android:editable="false"
|
||||
android:longClickable="false"
|
||||
android:clickable="true"
|
||||
android:minHeight="32dp"
|
||||
android:gravity="left|center_vertical"
|
||||
android:drawableLeft="@drawable/navigation_previous_item_dark"
|
||||
android:background="@drawable/HeaderButtonBackground" />
|
||||
<ImageView
|
||||
android:id="@+id/entry_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right|center_vertical"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic99_blank" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp">
|
||||
|
||||
<FrameLayout
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:id="@+id/entry_edit"
|
||||
android:text="@string/menu_edit"
|
||||
android:layout_width="fill_parent"
|
||||
android:drawableLeft="@android:drawable/ic_menu_edit"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentBottom="true" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="@android:drawable/ic_menu_edit"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/menu_edit" />
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/entry_divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@android:drawable/divider_horizontal_dark" />
|
||||
<ScrollView
|
||||
android:tint="@color/blue_highlight"
|
||||
android:src="@android:drawable/divider_horizontal_bright" />
|
||||
<ScrollView
|
||||
android:id="@+id/entry_scroll"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_above="@id/entry_divider2"
|
||||
android:layout_below="@id/title_block"
|
||||
android:fillViewport="true"
|
||||
android:scrollbarStyle="insideOverlay">
|
||||
<keepass2android.view.EntryContentsView
|
||||
<keepass2android.view.EntryContentsView
|
||||
android:id="@+id/entry_contents"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent" />
|
||||
</ScrollView>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
@ -1,154 +1,264 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/entry_table"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
<!-- Username -->
|
||||
<TextView
|
||||
android:id="@+id/entry_user_name_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_user_name"
|
||||
style="@style/EntryFieldHeader"
|
||||
|
||||
|
||||
<LinearLayout android:id="@+id/entryfield_container_username"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/entry_user_name_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_user_name"
|
||||
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<keepass2android.view.TextViewSelect
|
||||
android:id="@+id/entry_user_name"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<!-- URL -->
|
||||
<TextView
|
||||
android:id="@+id/entry_url_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
|
||||
<!-- Username -->
|
||||
<RelativeLayout android:id="@+id/username_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/username_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_user_name"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toLeftOf="@id/username_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:id="@+id/entryfield_container_url"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- URL -->
|
||||
<TextView
|
||||
android:id="@+id/entry_url_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<RelativeLayout android:id="@+id/url_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
<ImageView
|
||||
android:id="@+id/url_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_url"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="all"
|
||||
android:layout_toLeftOf="@id/url_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_password"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Password -->
|
||||
<TextView
|
||||
android:id="@+id/entry_password_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_password"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<keepass2android.view.TextViewSelect
|
||||
android:id="@+id/entry_url"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="all"
|
||||
style="@style/EntryItem" />
|
||||
<!-- Password -->
|
||||
<TextView
|
||||
android:id="@+id/entry_password_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_password"
|
||||
style="@style/EntryFieldHeader"
|
||||
<RelativeLayout android:id="@+id/password_container"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clickable="true"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
<ImageView
|
||||
android:id="@+id/password_vdots"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="15dp"
|
||||
android:src="@drawable/vdots"
|
||||
android:gravity="right|bottom"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_password"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:password="true"
|
||||
android:typeface="monospace"
|
||||
android:layout_toLeftOf="@id/password_vdots"
|
||||
style="@style/EntryItem" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_comment"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Comment -->
|
||||
<TextView
|
||||
android:id="@+id/entry_comment_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_comment"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<keepass2android.view.TextViewSelect
|
||||
android:id="@+id/entry_password"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:password="true"
|
||||
android:typeface="monospace"
|
||||
style="@style/EntryItem" />
|
||||
<!-- Comment -->
|
||||
<TextView
|
||||
android:id="@+id/entry_comment_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_comment"
|
||||
android:autoLink="all"
|
||||
style="@style/EntryFieldHeader"
|
||||
<TextView
|
||||
android:id="@+id/entry_comment"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/extra_strings"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:orientation="vertical" />
|
||||
<!-- file attachments -->
|
||||
<TextView
|
||||
android:id="@+id/entry_binaries_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_binaries"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<keepass2android.view.TextViewSelect
|
||||
android:id="@+id/entry_comment"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<!-- Extra strings -->
|
||||
<TextView
|
||||
android:id="@+id/entry_extra_strings_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_extra_strings"
|
||||
style="@style/EntryFieldHeader"
|
||||
<LinearLayout
|
||||
android:id="@+id/binaries"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
<!--Tags -->
|
||||
<LinearLayout android:id="@+id/entryfield_container_tags"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/entry_tags_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_tags"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/extra_strings"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
<!-- file attachments -->
|
||||
<TextView
|
||||
android:id="@+id/entry_binaries_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_binaries"
|
||||
style="@style/EntryFieldHeader"
|
||||
<TextView
|
||||
android:id="@+id/entry_tags"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_overrideurl"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!--Override URL-->
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_override_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/binaries"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
<!--Tags -->
|
||||
<TextView
|
||||
android:id="@+id/entry_tags_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_tags"
|
||||
style="@style/EntryFieldHeader"
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="all"
|
||||
android:textIsSelectable="true"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_created"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<!-- Created -->
|
||||
<TextView
|
||||
android:id="@+id/entry_created_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_created"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<keepass2android.view.TextViewSelect
|
||||
android:id="@+id/entry_tags"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<!--Override URL-->
|
||||
<TextView
|
||||
android:id="@+id/entry_override_url_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_override_url"
|
||||
style="@style/EntryFieldHeader"
|
||||
<TextView
|
||||
android:id="@+id/entry_created"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_modified"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Modified -->
|
||||
<TextView
|
||||
android:id="@+id/entry_modified_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_modified"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<keepass2android.view.TextViewSelect
|
||||
android:id="@+id/entry_override_url"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<!-- Created -->
|
||||
<TextView
|
||||
android:id="@+id/entry_created_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_created"
|
||||
style="@style/EntryFieldHeader"
|
||||
<TextView
|
||||
android:id="@+id/entry_modified"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
<LinearLayout android:id="@+id/entryfield_container_expires"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<!-- Expires -->
|
||||
<TextView
|
||||
android:id="@+id/entry_expires_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_expires"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_created"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<!-- Modified -->
|
||||
<TextView
|
||||
android:id="@+id/entry_modified_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_modified"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_modified"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<!-- Expires -->
|
||||
<TextView
|
||||
android:id="@+id/entry_expires_label"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/entry_expires"
|
||||
style="@style/EntryFieldHeader"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/entry_expires"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
<TextView
|
||||
android:id="@+id/entry_expires"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/EntryItem" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
@ -2,24 +2,60 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<Button
|
||||
android:id="@+id/accept_button"
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:text="@string/accept"
|
||||
android:layout_alignParentBottom="true" />
|
||||
<Button
|
||||
android:id="@+id/cancel_button"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:text="@android:string/cancel"
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_toRightOf="@id/accept_button" />
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/accept_button"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NavigationAcceptDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/accept" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/cancel_button"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/CancelDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@android:string/cancel" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<ScrollView
|
||||
android:id="@+id/ScrollView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/cancel_button">
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:layout_marginBottom="12dip"
|
||||
android:layout_marginLeft="12dip"
|
||||
android:layout_marginRight="12dip"
|
||||
android:layout_marginTop="12dip">
|
||||
<RelativeLayout
|
||||
android:id="@+id/RelativeLayout"
|
||||
android:layout_height="wrap_content"
|
||||
@ -41,6 +77,7 @@
|
||||
<TextView
|
||||
android:id="@+id/length_label"
|
||||
android:text="@string/length"
|
||||
style="@style/TextAppearance_SmallHeading"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_below="@id/generate_password_button" />
|
||||
|
@ -2,70 +2,104 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<keepass2android.view.GroupHeaderView
|
||||
android:id="@+id/group_header"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/add_group"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/add_group"
|
||||
android:drawableLeft="@drawable/btn_new_group"
|
||||
/>
|
||||
<Button
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NewGroupDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_group" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/add_entry"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/add_group"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/add_entry"
|
||||
android:drawableLeft="@drawable/device_access_new_account"
|
||||
/>
|
||||
<Button
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NewEntryDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_entry" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/insert_element"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/insert_element_here"
|
||||
android:visibility="gone"
|
||||
android:drawableLeft="@drawable/btn_new_group"
|
||||
/>
|
||||
<Button
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="?attr/NewGroupDrawable"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/insert_element_here" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/cancel_insert_element"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/insert_element"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/cancel"
|
||||
android:visibility="gone"
|
||||
android:drawableLeft="@android:drawable/ic_menu_close_clear_cancel"
|
||||
/>
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:drawableLeft="@android:drawable/ic_menu_close_clear_cancel"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/cancel" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
<View
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="2dp"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/blue_highlight"
|
||||
android:src="@android:drawable/divider_horizontal_dark" />
|
||||
android:background="#b8b8b8" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/divider2"
|
||||
android:layout_below="@id/group_header" />
|
||||
android:layout_below="@id/top"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingLeft="8dp" />
|
||||
</RelativeLayout>
|
@ -20,14 +20,9 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<keepass2android.view.GroupHeaderView
|
||||
android:id="@+id/group_header"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ListView android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/group_header"/>
|
||||
android:layout_height="wrap_content"/>
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:padding="2sp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:id="@+id/group_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="left|center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/root"
|
||||
style="@style/GroupAndEntryHeader"
|
||||
android:textIsSelectable="false"
|
||||
android:editable="false"
|
||||
android:longClickable="false"
|
||||
android:clickable="true"
|
||||
android:gravity="left|center_vertical"
|
||||
android:drawableLeft="@drawable/navigation_previous_item_dark"
|
||||
android:background="@drawable/HeaderButtonBackground" />
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right|center_vertical"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/ic99_blank" />
|
||||
</LinearLayout>
|
@ -21,7 +21,7 @@
|
||||
android:id="@+id/IconGridView"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="@color/icon_background"
|
||||
android:background="@android:color/background_light"
|
||||
android:verticalSpacing="5dp"
|
||||
android:horizontalSpacing="5dp"
|
||||
android:columnWidth="60dp"
|
||||
|
82
src/keepass2android/Resources/layout/plugin_details.xml
Normal file
@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/plugin_scroll"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:fillViewport="true"
|
||||
android:scrollbarStyle="insideOverlay">
|
||||
<LinearLayout android:id="@+id/scopes_list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp">
|
||||
<ImageView
|
||||
android:id="@+id/imgIcon"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginRight="15dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
<TextView
|
||||
android:id="@+id/txtLabel"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/imgIcon"
|
||||
android:textSize="22dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/txtVersion"
|
||||
android:text="0.9.3"
|
||||
android:textSize="14dp"
|
||||
android:textColor="#888888"
|
||||
android:layout_toRightOf="@id/imgIcon"
|
||||
android:layout_below="@id/txtLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<TextView
|
||||
android:id="@+id/txtAuthor"
|
||||
android:text=""
|
||||
android:textSize="14dp"
|
||||
android:textColor="#888888"
|
||||
android:layout_below="@id/txtVersion"
|
||||
android:layout_toRightOf="@id/imgIcon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtShortDesc"
|
||||
android:text=""
|
||||
android:textSize="14dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cb_enabled"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/plugin_enabled_checkbox"
|
||||
android:checked="true"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/scopes_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Scopes"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="18dp"
|
||||
style="@style/ExtraFieldHeader" />
|
||||
<LinearLayout android:id="@+id/scopes_list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
23
src/keepass2android/Resources/layout/plugin_list.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:text="plugin text"
|
||||
style="@style/PaddedElement"
|
||||
android:id="@+id/textView"
|
||||
android:layout_gravity="left|center_vertical" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true"
|
||||
android:padding="8dp" />
|
||||
</LinearLayout>
|
||||
</merge>
|
@ -2,47 +2,64 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<keepass2android.view.GroupHeaderView
|
||||
android:id="@+id/group_header"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/select_other_entry"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/select_other_entry"
|
||||
/>
|
||||
<Button
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/select_other_entry" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/add_url_entry"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/select_other_entry"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/add_url_entry"
|
||||
/>
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_url_entry" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
<View
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="2dp"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/blue_highlight"
|
||||
android:src="@android:drawable/divider_horizontal_dark" />
|
||||
android:background="#b8b8b8" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/divider2"
|
||||
android:layout_below="@id/group_header" />
|
||||
android:layout_below="@id/top"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingLeft="8dp" />
|
||||
</RelativeLayout>
|
@ -2,50 +2,71 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<keepass2android.view.GroupHeaderView
|
||||
android:id="@+id/group_header"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<LinearLayout
|
||||
android:id="@+id/top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_bar"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
style="@style/GroupAndEntryHeader">
|
||||
<Button
|
||||
android:orientation="horizontal"
|
||||
android:divider="?android:attr/dividerVertical"
|
||||
android:showDividers="middle"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:dividerPadding="12dp"
|
||||
android:baselineAligned="false">
|
||||
<FrameLayout
|
||||
android:id="@+id/select_other_entry"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/select_other_entry" />
|
||||
<Button
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/select_other_entry" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/add_url_entry"
|
||||
android:layout_width="0px"
|
||||
android:layout_weight="1"
|
||||
style="?android:attr/actionButtonStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/select_other_entry"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:text="@string/add_url_entry" />
|
||||
android:layout_weight="1">
|
||||
<TextView
|
||||
style="?android:actionBarTabTextStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/add_url_entry" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
<View
|
||||
android:id="@+id/divider2"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="2dp"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/blue_highlight"
|
||||
android:src="@android:drawable/divider_horizontal_dark" />
|
||||
android:background="#b8b8b8" />
|
||||
<TextView
|
||||
android:id="@+id/no_results"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="12dp"
|
||||
android:layout_below="@id/top"
|
||||
android:text="@string/no_results" />
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/divider2"
|
||||
android:layout_below="@id/group_header" />
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@android:id/list"
|
||||
android:text="@string/no_results" />
|
||||
android:layout_below="@id/no_results"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingLeft="8dp" />
|
||||
</RelativeLayout>
|
@ -14,6 +14,7 @@
|
||||
style="@style/TextAppearance_Help"
|
||||
android:textColor="@color/light_gray"
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
/>
|
||||
|
||||
|
||||
|
@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_lock"
|
||||
android:icon="@android:drawable/ic_lock_lock"
|
||||
android:title="@string/menu_lock"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_toggle_pass"
|
||||
android:title="@string/show_password"
|
||||
android:icon="@android:drawable/ic_menu_view"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_goto_url"
|
||||
android:title="@string/menu_url"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<!--item android:id="@+id/menu_copy_user"
|
||||
android:title="@string/menu_copy_user"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_copy_pass"
|
||||
android:title="@string/menu_copy_pass"
|
||||
android:showAsAction="ifRoom"
|
||||
/-->
|
||||
<item android:id="@+id/menu_suggest_improvements"
|
||||
android:icon="@android:drawable/ic_menu_directions"
|
||||
android:title="@string/suggest_improvements"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_rate"
|
||||
android:icon="@android:drawable/star_off"
|
||||
android:title="@string/rate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_translate"
|
||||
android:title="@string/translate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
</menu>
|
@ -1,37 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_suggest_improvements"
|
||||
android:icon="@android:drawable/ic_menu_directions"
|
||||
android:title="@string/suggest_improvements"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_rate"
|
||||
android:icon="@android:drawable/star_off"
|
||||
android:title="@string/rate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_translate"
|
||||
android:title="@string/translate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
</menu>
|
@ -1,35 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:id="@+id/menu_about"
|
||||
android:title="@string/menu_about"
|
||||
android:icon="@android:drawable/ic_menu_help"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:title="@string/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:showAsAction="ifRoom"
|
||||
|
||||
/>
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
</menu>
|
@ -1,69 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_search"
|
||||
android:icon="@android:drawable/ic_menu_search"
|
||||
android:title="@string/menu_search"
|
||||
android:showAsAction="ifRoom"
|
||||
android:actionViewClass="android.widget.SearchView"
|
||||
/>
|
||||
<item android:id="@+id/menu_search_advanced"
|
||||
android:icon="@android:drawable/ic_menu_search"
|
||||
android:title="@string/menu_search_advanced"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_lock"
|
||||
android:icon="@android:drawable/ic_lock_lock"
|
||||
android:title="@string/menu_lock"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:title="@string/menu_app_settings"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_change_master_key"
|
||||
android:title="@string/menu_change_key"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_sync"
|
||||
android:icon="@android:drawable/ic_popup_sync"
|
||||
android:title="@string/synchronize_database_menu"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
|
||||
<item android:id="@+id/menu_sort"
|
||||
android:icon="@android:drawable/ic_menu_sort_by_size"
|
||||
android:title="@string/sort_name"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
|
||||
<item android:id="@+id/menu_suggest_improvements"
|
||||
android:icon="@android:drawable/ic_menu_directions"
|
||||
android:title="@string/suggest_improvements"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_translate"
|
||||
android:title="@string/translate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
</menu>
|
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_about"
|
||||
android:title="@string/menu_about"
|
||||
android:icon="@android:drawable/ic_menu_help"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_change_db"
|
||||
android:icon="?attr/OpenFileDrawable"
|
||||
android:title="@string/menu_change_db"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:title="@string/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
</menu>
|
@ -16,39 +16,44 @@
|
||||
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:icon="@android:drawable/ic_menu_share"
|
||||
android:title="@string/menu_donate"
|
||||
/>
|
||||
<item android:id="@+id/menu_toggle_pass"
|
||||
android:icon="@android:drawable/ic_menu_view"
|
||||
android:title="@string/show_password"
|
||||
/>
|
||||
<item android:id="@+id/menu_goto_url"
|
||||
android:icon="@android:drawable/ic_menu_upload"
|
||||
android:title="@string/menu_url"
|
||||
/>
|
||||
<!--<item android:id="@+id/menu_copy_user"
|
||||
android:icon="@android:drawable/ic_menu_set_as"
|
||||
android:title="@string/menu_copy_user"
|
||||
/>
|
||||
<item android:id="@+id/menu_copy_pass"
|
||||
android:icon="@android:drawable/ic_menu_agenda"
|
||||
android:title="@string/menu_copy_pass"
|
||||
/>-->
|
||||
<item android:id="@+id/menu_lock"
|
||||
android:icon="@android:drawable/ic_lock_lock"
|
||||
android:title="@string/menu_lock"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_toggle_pass"
|
||||
android:title="@string/show_password"
|
||||
android:icon="@android:drawable/ic_menu_view"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_goto_url"
|
||||
android:title="@string/menu_url"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<!--item android:id="@+id/menu_copy_user"
|
||||
android:title="@string/menu_copy_user"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_copy_pass"
|
||||
android:title="@string/menu_copy_pass"
|
||||
android:showAsAction="ifRoom"
|
||||
/-->
|
||||
<item android:id="@+id/menu_suggest_improvements"
|
||||
android:icon="@android:drawable/ic_menu_directions"
|
||||
android:title="@string/suggest_improvements"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_rate"
|
||||
android:icon="@android:drawable/star_off"
|
||||
android:title="@string/rate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_translate"
|
||||
android:title="@string/translate_app"
|
||||
/>
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
</menu>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
@ -17,23 +16,22 @@
|
||||
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_cancel_edit"
|
||||
android:title="@string/entry_cancel"
|
||||
/>
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:icon="@android:drawable/ic_menu_share"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_suggest_improvements"
|
||||
android:icon="@android:drawable/ic_menu_directions"
|
||||
android:title="@string/suggest_improvements"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_rate"
|
||||
android:icon="@android:drawable/star_off"
|
||||
android:title="@string/rate_app"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_translate"
|
||||
android:title="@string/translate_app"
|
||||
/>
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
</menu>
|
||||
|
||||
|
@ -16,16 +16,20 @@
|
||||
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:icon="@android:drawable/ic_menu_share"
|
||||
android:title="@string/menu_donate"
|
||||
|
||||
<item android:id="@+id/menu_about"
|
||||
android:title="@string/menu_about"
|
||||
android:icon="@android:drawable/ic_menu_help"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:title="@string/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:showAsAction="ifRoom"
|
||||
|
||||
/>
|
||||
<item android:id="@+id/menu_about"
|
||||
android:icon="@android:drawable/ic_menu_help"
|
||||
android:title="@string/menu_about"
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
</menu>
|
||||
|
@ -16,42 +16,54 @@
|
||||
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:icon="@android:drawable/ic_menu_share"
|
||||
android:title="@string/menu_donate"
|
||||
<item android:id="@+id/menu_search"
|
||||
android:icon="@android:drawable/ic_menu_search"
|
||||
android:title="@string/menu_search"
|
||||
android:showAsAction="ifRoom"
|
||||
android:actionViewClass="android.widget.SearchView"
|
||||
/>
|
||||
<item android:id="@+id/menu_search_advanced"
|
||||
android:icon="@android:drawable/ic_menu_search"
|
||||
android:title="@string/menu_search_advanced"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_lock"
|
||||
android:icon="@android:drawable/ic_lock_lock"
|
||||
android:title="@string/menu_lock"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_search"
|
||||
android:icon="@android:drawable/ic_menu_search"
|
||||
android:title="@string/menu_search"
|
||||
android:showAsAction="ifRoom"
|
||||
android:actionViewClass="android.widget.SearchView"
|
||||
<item android:id="@+id/menu_donate"
|
||||
android:title="@string/menu_donate"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:title="@string/menu_app_settings"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_change_master_key"
|
||||
android:icon="@android:drawable/ic_menu_manage"
|
||||
<item android:id="@+id/menu_change_master_key"
|
||||
android:title="@string/menu_change_key"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_sync"
|
||||
android:icon="@android:drawable/ic_popup_sync"
|
||||
android:title="@string/synchronize_database_menu"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_sort"
|
||||
|
||||
<item android:id="@+id/menu_sort"
|
||||
android:icon="@android:drawable/ic_menu_sort_by_size"
|
||||
android:title="@string/sort_name"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
|
||||
<item android:id="@+id/menu_suggest_improvements"
|
||||
android:icon="@android:drawable/ic_menu_directions"
|
||||
android:title="@string/suggest_improvements"
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
<item android:id="@+id/menu_translate"
|
||||
android:title="@string/translate_app"
|
||||
/>
|
||||
|
||||
android:showAsAction="never"
|
||||
/>
|
||||
</menu>
|
||||
|
@ -16,16 +16,19 @@
|
||||
along with Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:title="@string/menu_app_settings"
|
||||
<item android:id="@+id/menu_about"
|
||||
android:title="@string/menu_about"
|
||||
android:icon="@android:drawable/ic_menu_help"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_change_db"
|
||||
android:icon="@drawable/collections_collection"
|
||||
android:icon="?attr/OpenFileDrawable"
|
||||
android:title="@string/menu_change_db"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
<item android:id="@+id/menu_about"
|
||||
android:icon="@android:drawable/ic_menu_help"
|
||||
android:title="@string/menu_about"
|
||||
<item android:id="@+id/menu_app_settings"
|
||||
android:title="@string/menu_app_settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:showAsAction="ifRoom"
|
||||
/>
|
||||
</menu>
|
||||
|
@ -1,33 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<resources>
|
||||
<color name="blue_highlight">#0000dd</color>
|
||||
<color name="group">#333333</color>
|
||||
<color name="icon_background">#00555555</color>
|
||||
<color name="icon_text">#000000</color>
|
||||
<color name="light_gray">#a8a8a8</color>
|
||||
<color name="dark_gray">#303030</color>
|
||||
|
||||
<color name="element_being_moved">#a8a8a8</color>
|
||||
|
||||
<color name="emphasis">#31b6e7</color>
|
||||
<color name="emphasis2">#4f7a8a</color>
|
||||
|
||||
</resources>
|
@ -1,188 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<style name="GroupTextSmall">
|
||||
<item name="@android:textColor">?android:attr/textColorPrimary</item>
|
||||
|
||||
</style>
|
||||
<style name="GroupText">
|
||||
<item name="@android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="@android:textSize">20sp</item>
|
||||
</style>
|
||||
<style name="GroupTextLarge">
|
||||
<item name="@android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="@android:textSize">28sp</item>
|
||||
</style>
|
||||
<style name="ElementTextSmall">
|
||||
<item name="@android:textSize">15sp</item>
|
||||
</style>
|
||||
<style name="ElementText">
|
||||
<item name="@android:textSize">20sp</item>
|
||||
</style>
|
||||
<style name="ElementTextLarge">
|
||||
<item name="@android:textSize">28sp</item>
|
||||
</style>
|
||||
|
||||
<style name="GroupLabel">
|
||||
</style>
|
||||
<style name="WhiteOnBlack">
|
||||
</style>
|
||||
<style name="WhiteOnBlackSmall" parent="WhiteOnBlack">
|
||||
</style>
|
||||
<style name="WhiteOnDarkSmall" parent="WhiteOnBlack">
|
||||
</style>
|
||||
<style name="ElementTextTitle" parent="WhiteOnBlack">
|
||||
</style>
|
||||
<style name="EntryItem">
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
|
||||
</style>
|
||||
<style name="EntryFieldHeader">
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawablePadding">2dp</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginBottom">3dp</item>
|
||||
<item name="android:layout_marginTop">8dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="InfoHeader">
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawablePadding">2dp</item>
|
||||
<item name="android:layout_marginLeft">0dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginBottom">3dp</item>
|
||||
<item name="android:layout_marginTop">8dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="BottomBarActionButton">
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_EditEntry_Small">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="TextAppearance_EditEntry_LabelSmall" parent="TextAppearance_EditEntry_Small">
|
||||
<item name="android:minHeight">24dip</item>
|
||||
<item name="android:layout_width">144dip</item>
|
||||
<item name="android:layout_marginTop">12dip</item>
|
||||
<item name="android:layout_marginLeft">16dip</item>
|
||||
<item name="android:layout_marginRight">16dip</item>
|
||||
<item name="android:paddingLeft">8dip</item>
|
||||
<item name="android:paddingRight">8dip</item>
|
||||
<item name="android:layout_marginBottom">-12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_EditEntry">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_EditEntry_Value" parent="TextAppearance_EditEntry">
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_SmallHeading" parent="TextAppearance_EditEntry_Small">
|
||||
<item name="android:minHeight">24dip</item>
|
||||
<item name="android:layout_width">144dip</item>
|
||||
<item name="android:layout_marginTop">12dip</item>
|
||||
<item name="android:layout_marginRight">16dip</item>
|
||||
<item name="android:paddingRight">8dip</item>
|
||||
<item name="android:layout_marginBottom">-12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_SubElement">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_Help">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
|
||||
<item name="android:textSize">24sp</item>
|
||||
<item name="android:padding">12sp</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="EditEntryButton">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
|
||||
<item name="android:layout_marginTop">12dip</item>
|
||||
<item name="android:layout_marginLeft">24dip</item>
|
||||
<item name="android:layout_marginRight">24dip</item>
|
||||
<item name="android:paddingLeft">8dip</item>
|
||||
<item name="android:paddingRight">8dip</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="AdditionalStringLayout">
|
||||
<item name="android:layout_marginLeft">24dip</item>
|
||||
<item name="android:layout_marginRight">24dip</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="MinusButton">
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
<item name="android:src">@drawable/ic_menu_remove_field_holo_light</item>
|
||||
</style>
|
||||
|
||||
<style name="ExtraFieldHeader" parent="android:Widget.Holo.Light.TextView">
|
||||
<item name="android:layout_marginLeft">16dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginBottom">3dp</item>
|
||||
<item name="android:layout_marginTop">4dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
</resources>
|
@ -19,16 +19,15 @@
|
||||
-->
|
||||
<resources>
|
||||
<color name="blue_highlight">#0000dd</color>
|
||||
<color name="group">#ffffff</color>
|
||||
<color name="icon_background">#555555</color>
|
||||
<color name="group">#333333</color>
|
||||
<color name="icon_background">#00555555</color>
|
||||
<color name="icon_text">#000000</color>
|
||||
<color name="group_header_button_pressed">#101080</color>
|
||||
|
||||
<color name="emphasis">#31b6e7</color>
|
||||
<color name="emphasis2">#4f7a8a</color>
|
||||
<color name="bg_gray">#cecbce</color>
|
||||
<color name="light_gray">#a8a8a8</color>
|
||||
<color name="light_gray">#a8a8a8</color>
|
||||
<color name="dark_gray">#303030</color>
|
||||
|
||||
<color name="element_being_moved">#a8a8a8</color>
|
||||
|
||||
<color name="emphasis">#31b6e7</color>
|
||||
<color name="emphasis2">#4f7a8a</color>
|
||||
|
||||
</resources>
|
||||
|
@ -409,8 +409,17 @@
|
||||
<string name="plugin_packagename">Package name:</string>
|
||||
<string name="plugin_description">Description (not verified):</string>
|
||||
<string name="plugin_author">Author (not verified):</string>
|
||||
<string name="plugin_enabled">Enabled</string>
|
||||
<string name="plugins_text">Click plug-in to enable/disable</string>
|
||||
<string name="plugin_enabled">enabled</string>
|
||||
<string name="plugin_disabled">disabled</string>
|
||||
|
||||
<string name="plugin_enabled_checkbox">Enabled</string>
|
||||
|
||||
<string name="SCOPE_DATABASE_ACTIONS_title">Database action notifications</string>
|
||||
<string name="SCOPE_DATABASE_ACTIONS_explanation">Plugin will be notified when a database is opened, closed or saved.</string>
|
||||
|
||||
<string name="SCOPE_CURRENT_ENTRY_title">Current entry data</string>
|
||||
<string name="SCOPE_CURRENT_ENTRY_explanation">Plugin will receive all data about the current database entry and will be allowed to offer actions and modify the display of it.</string>
|
||||
|
||||
|
||||
<string name="get_regular_version">Get more storage types</string>
|
||||
|
||||
|
@ -19,24 +19,19 @@
|
||||
-->
|
||||
<resources>
|
||||
<style name="Base">
|
||||
<item name="OpenFileDrawable">@drawable/collections_collection</item>
|
||||
<item name="CreateDbDrawable">@drawable/collections_new_label</item>
|
||||
<item name="OpenUrlDrawable">@drawable/location_web_site</item>
|
||||
<item name="ic_action_search_drawable">@drawable/ic_action_search_holodark</item>
|
||||
<item name="ic_launcher_folder_small">@drawable/ic_launcher_folder_small</item>
|
||||
</style>
|
||||
<style name="NoTitleBar"></style>
|
||||
<style name="Dialog" parent="android:Theme.Dialog"></style>
|
||||
<style name="GroupTextSmall" parent="android:Theme">
|
||||
<item name="@android:textColor">@color/group</item>
|
||||
<item name="@android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="@android:textSize">15sp</item>
|
||||
</style>
|
||||
<style name="GroupText" parent="android:Theme">
|
||||
<item name="@android:textColor">@color/group</item>
|
||||
<item name="@android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="@android:textSize">20sp</item>
|
||||
</style>
|
||||
<style name="GroupTextLarge" parent="android:Theme">
|
||||
<item name="@android:textColor">@color/group</item>
|
||||
<item name="@android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="@android:textSize">28sp</item>
|
||||
</style>
|
||||
<style name="ElementTextSmall">
|
||||
@ -76,49 +71,141 @@
|
||||
<item name="@android:background">@android:color/transparent</item>
|
||||
</style>
|
||||
<style name="EntryItem">
|
||||
<item name="@android:padding">5sp</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
</style>
|
||||
<style name="MinusButton">
|
||||
<item name="android:src">@drawable/ic_menu_remove_field_holo_light</item>
|
||||
</style>
|
||||
<style name="EntryFieldHeader">
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawablePadding">1dp</item>
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawablePadding">2dp</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginBottom">3dp</item>
|
||||
<item name="android:layout_marginTop">8dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">@color/emphasis</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="@android:background">@android:color/transparent</item>
|
||||
</style>
|
||||
<style name="InfoHeader">
|
||||
<item name="android:drawableBottom">@drawable/section_header</item>
|
||||
<item name="android:drawablePadding">1dp</item>
|
||||
<item name="android:drawablePadding">2dp</item>
|
||||
<item name="android:layout_marginLeft">0dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginBottom">3dp</item>
|
||||
<item name="android:layout_marginTop">8dp</item>
|
||||
<item name="android:paddingLeft">0dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">@color/emphasis</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="@android:background">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="EditEntryButton">
|
||||
<style name="BottomBarActionButton">
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_EditEntry_Small">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorSecondary</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
</style>
|
||||
|
||||
<style name="ExtraFieldHeader">
|
||||
<item name="android:drawablePadding">1dp</item>
|
||||
|
||||
<style name="TextAppearance_EditEntry_LabelSmall" parent="TextAppearance_EditEntry_Small">
|
||||
<item name="android:minHeight">24dip</item>
|
||||
<item name="android:layout_width">144dip</item>
|
||||
<item name="android:layout_marginTop">12dip</item>
|
||||
<item name="android:layout_marginLeft">16dip</item>
|
||||
<item name="android:layout_marginRight">16dip</item>
|
||||
<item name="android:paddingLeft">8dip</item>
|
||||
<item name="android:paddingRight">8dip</item>
|
||||
<item name="android:layout_marginBottom">-12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_EditEntry">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_EditEntry_Value" parent="TextAppearance_EditEntry">
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_SmallHeading" parent="TextAppearance_EditEntry_Small">
|
||||
<item name="android:minHeight">24dip</item>
|
||||
<item name="android:layout_width">144dip</item>
|
||||
<item name="android:layout_marginTop">12dip</item>
|
||||
<item name="android:layout_marginRight">16dip</item>
|
||||
<item name="android:paddingRight">8dip</item>
|
||||
<item name="android:layout_marginBottom">-12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_SubElement">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance_Help">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
|
||||
<item name="android:textSize">24sp</item>
|
||||
<item name="android:padding">12sp</item>
|
||||
<item name="android:gravity">center_vertical</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginLeft">12dip</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="EditEntryButton">
|
||||
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
|
||||
<item name="android:layout_marginTop">12dip</item>
|
||||
<item name="android:layout_marginLeft">24dip</item>
|
||||
<item name="android:layout_marginRight">24dip</item>
|
||||
<item name="android:paddingLeft">8dip</item>
|
||||
<item name="android:paddingRight">8dip</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
</style>
|
||||
|
||||
<style name="AdditionalStringLayout">
|
||||
<item name="android:layout_marginLeft">24dip</item>
|
||||
<item name="android:layout_marginRight">24dip</item>
|
||||
</style>
|
||||
|
||||
|
||||
<style name="MinusButton">
|
||||
<item name="android:background">?android:attr/selectableItemBackground</item>
|
||||
<item name="android:src">@drawable/ic_menu_remove_field_holo_light</item>
|
||||
</style>
|
||||
|
||||
<style name="ExtraFieldHeader" parent="android:Widget.Holo.Light.TextView">
|
||||
<item name="android:layout_marginLeft">16dip</item>
|
||||
<item name="android:layout_marginRight">12dip</item>
|
||||
<item name="android:layout_marginBottom">3dp</item>
|
||||
<item name="android:layout_marginTop">8dp</item>
|
||||
<item name="android:layout_marginTop">4dp</item>
|
||||
<item name="android:paddingLeft">4dp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">@color/emphasis2</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="@android:background">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="PaddedContainer">
|
||||
|
@ -115,7 +115,6 @@
|
||||
<Compile Include="pluginhost\PluginDetailsActivity.cs" />
|
||||
<Compile Include="pluginhost\PluginHost.cs" />
|
||||
<Compile Include="pluginhost\PluginListActivity.cs" />
|
||||
<Compile Include="PwEntryOutput.cs" />
|
||||
<Compile Include="Resources\Resource.designer.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="KeePass.cs" />
|
||||
@ -144,7 +143,6 @@
|
||||
<Compile Include="views\PwGroupView.cs" />
|
||||
<Compile Include="settings\PrefsUtil.cs" />
|
||||
<Compile Include="views\PwEntryView.cs" />
|
||||
<Compile Include="views\GroupHeaderView.cs" />
|
||||
<Compile Include="GroupEditActivity.cs" />
|
||||
<Compile Include="EntryEditActivity.cs" />
|
||||
<Compile Include="LockCloseActivity.cs" />
|
||||
@ -189,6 +187,11 @@
|
||||
<None Include="filelist.txt">
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<AndroidResource Include="Resources\drawable-ldpi\Thumbs.db" />
|
||||
<AndroidResource Include="Resources\drawable-mdpi\Thumbs.db" />
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\Thumbs.db" />
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\Thumbs.db" />
|
||||
<AndroidResource Include="Resources\drawable-hdpi\Thumbs.db" />
|
||||
<None Include="Resources\drawable\launcher.png">
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
@ -216,6 +219,7 @@
|
||||
<AndroidResource Include="Resources\layout\sftpcredentials.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
<AndroidResource Include="Resources\drawable\Thumbs.db" />
|
||||
<None Include="settings\RoundsPreference %28Kopie%29.cs">
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
@ -225,7 +229,6 @@
|
||||
<None Include="Resources\drawable\new_group_dark.xcf">
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
<None Include="Resources\drawable-v11\EntryFieldHeaderBackground.xml" />
|
||||
<None Include="todos.cs">
|
||||
<Visible>False</Visible>
|
||||
</None>
|
||||
@ -352,7 +355,6 @@
|
||||
<AndroidResource Include="Resources\layout\group_add_entry.xml" />
|
||||
<AndroidResource Include="Resources\layout\group_edit.xml" />
|
||||
<AndroidResource Include="Resources\layout\group_empty.xml" />
|
||||
<AndroidResource Include="Resources\layout\group_header.xml" />
|
||||
<AndroidResource Include="Resources\layout\group_list_entry.xml" />
|
||||
<AndroidResource Include="Resources\layout\icon.xml" />
|
||||
<AndroidResource Include="Resources\layout\icon_picker.xml" />
|
||||
@ -376,13 +378,6 @@
|
||||
<AndroidResource Include="Resources\values\strings.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
<AndroidResource Include="Resources\menu-v11\entry.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
<AndroidResource Include="Resources\menu-v11\password.xml" />
|
||||
<AndroidResource Include="Resources\menu-v11\entry_edit.xml" />
|
||||
<AndroidResource Include="Resources\menu-v11\group.xml" />
|
||||
<AndroidResource Include="Resources\menu-v11\fileselect.xml" />
|
||||
<AndroidResource Include="Resources\drawable\ic_launcher.png" />
|
||||
<AndroidResource Include="Resources\drawable-hdpi\ic00.png" />
|
||||
<AndroidResource Include="Resources\drawable-hdpi\ic01.png" />
|
||||
@ -541,7 +536,6 @@
|
||||
<AndroidResource Include="Resources\drawable-mdpi\navigation_previous_item.png" />
|
||||
<AndroidResource Include="Resources\drawable-hdpi\navigation_previous_item.png" />
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\navigation_previous_item.png" />
|
||||
<AndroidResource Include="Resources\drawable\HeaderButtonBackground.xml" />
|
||||
<AndroidResource Include="Resources\drawable\EntryFieldHeaderBackground.xml" />
|
||||
<AndroidResource Include="Resources\drawable\navigation_accept.png" />
|
||||
<AndroidResource Include="Resources\drawable-hdpi\navigation_accept.png" />
|
||||
@ -613,20 +607,6 @@
|
||||
<AndroidResource Include="Resources\drawable\ic_menu_add_field_holo_light.png" />
|
||||
<AndroidResource Include="Resources\drawable\ic_menu_remove_field_holo_light.png" />
|
||||
<AndroidResource Include="Resources\drawable\navigation_cancel.png" />
|
||||
<AndroidResource Include="Resources\values-v14\styles.xml" />
|
||||
<AndroidResource Include="Resources\values-v14\colors.xml" />
|
||||
<AndroidAsset Include="Resources\layout-v14\entry_view_contents.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\group_add_entry.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
<AndroidAsset Include="Resources\layout-v14\entry_view.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\entry_edit.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\SaveButton.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\generate_password.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\icon_picker.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\password.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
<AndroidResource Include="Resources\layout\InViewButton.xml" />
|
||||
<AndroidResource Include="Resources\drawable\collections_collection.png" />
|
||||
<AndroidResource Include="Resources\drawable\collections_new_label.png" />
|
||||
@ -647,11 +627,9 @@
|
||||
<AndroidResource Include="Resources\drawable-ldpi\device_access_not_secure.png" />
|
||||
<AndroidResource Include="Resources\drawable-ldpi\ic_menu_remove_field_holo_light.png" />
|
||||
<AndroidResource Include="Resources\drawable-mdpi\device_access_not_secure.png" />
|
||||
<AndroidResource Include="Resources\layout-v14\QuickUnlock_Unused.xml" />
|
||||
<AndroidResource Include="Resources\layout\entry_view_test.xml" />
|
||||
<AndroidResource Include="Resources\layout\entry_extrastring_title.xml" />
|
||||
<AndroidResource Include="Resources\layout\entry_extrastring_value.xml" />
|
||||
<AndroidResource Include="Resources\drawable-v11\ic_launcher_gray.png" />
|
||||
<AndroidResource Include="Resources\values-nb\strings.xml" />
|
||||
<AndroidResource Include="Resources\anim\anim_enter.xml" />
|
||||
<AndroidResource Include="Resources\anim\anim_leave.xml" />
|
||||
@ -659,8 +637,6 @@
|
||||
<AndroidResource Include="Resources\anim\anim_leave_back.xml" />
|
||||
<AndroidResource Include="Resources\layout\searchurlresults.xml" />
|
||||
<AndroidResource Include="Resources\layout\searchurlresults_empty.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\searchurlresults.xml" />
|
||||
<AndroidResource Include="Resources\layout-v14\searchurlresults_empty.xml" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" />
|
||||
<ItemGroup>
|
||||
@ -738,9 +714,6 @@
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-v11\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-mdpi\ic_launcher_red.png" />
|
||||
</ItemGroup>
|
||||
@ -759,15 +732,6 @@
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\dimens.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi-v11\ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi-v11\ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi-v11\ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\transparent.png" />
|
||||
</ItemGroup>
|
||||
@ -786,15 +750,6 @@
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\donate_cake.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi-v11\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi-v11\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi-v11\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\filestorage_selection.xml" />
|
||||
</ItemGroup>
|
||||
@ -869,9 +824,6 @@
|
||||
<Visible>False</Visible>
|
||||
</XamarinComponentReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout-v14\text_with_help.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\ic_storage_skydrive.png" />
|
||||
</ItemGroup>
|
||||
@ -923,16 +875,6 @@
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\location_web_site_holodark.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values-v14\styles_dark.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values-v14\styles_light.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\attrs.xml" />
|
||||
</ItemGroup>
|
||||
@ -951,18 +893,6 @@
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi-v11\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-v11\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi-v11\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi-v11\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<TransformFile Include="Properties\AndroidManifest.xml" />
|
||||
</ItemGroup>
|
||||
@ -970,14 +900,60 @@
|
||||
<AndroidResource Include="Resources\drawable\collections_new_label_holodark.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Resources\layout-v14\plugin_details.xml" />
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Resources\layout-v14\plugin_list.xml">
|
||||
<SubType>AndroidResource</SubType>
|
||||
</AndroidAsset>
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Resources\layout-v14\ListViewPluginRow.xml" />
|
||||
<AndroidResource Include="Resources\drawable-xhdpi\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-xxhdpi\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\ListViewPluginRow.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\plugin_details.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\plugin_list.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\QuickUnlock_Unused.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\SaveButton.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\styles_dark.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\styles_light.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\old_ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi\ic_launcher_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi\ic_launcher_gray_bday.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable-hdpi\ic_unlocked_gray.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\vdots_holodark.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\vdots.png" />
|
||||
</ItemGroup>
|
||||
</Project>
|
126
src/keepass2android/pluginhost/PluginArrayAdapter.cs
Normal file
@ -0,0 +1,126 @@
|
||||
using Android.Content.PM;
|
||||
using Android.Content.Res;
|
||||
using Android.Graphics.Drawables;
|
||||
using Android.Widget;
|
||||
using Android.Content;
|
||||
using Android.Views;
|
||||
using System.Collections.Generic;
|
||||
using Android.App;
|
||||
using PluginHostTest;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents information about a plugin for display in the plugin list activity
|
||||
/// </summary>
|
||||
public class PluginItem
|
||||
{
|
||||
private readonly string _package;
|
||||
private readonly Context _ctx;
|
||||
private readonly Resources _pluginRes;
|
||||
|
||||
public PluginItem(string package, string enabledStatus, Context ctx)
|
||||
{
|
||||
_package = package;
|
||||
_ctx = ctx;
|
||||
EnabledStatus = enabledStatus;
|
||||
_pluginRes = _ctx.PackageManager.GetResourcesForApplication(_package);
|
||||
}
|
||||
|
||||
public string Label
|
||||
{
|
||||
get
|
||||
{
|
||||
return PluginDetailsActivity.GetStringFromPlugin(_pluginRes, _package, "kp2aplugin_title");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public string Version
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ctx.PackageManager.GetPackageInfo(_package, 0).VersionName;
|
||||
}
|
||||
}
|
||||
|
||||
public string EnabledStatus
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public Drawable Icon
|
||||
{
|
||||
get
|
||||
{
|
||||
return _ctx.PackageManager.GetApplicationIcon(_package);
|
||||
}
|
||||
}
|
||||
|
||||
public string Package
|
||||
{
|
||||
get { return _package; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PluginArrayAdapter : ArrayAdapter<PluginItem>
|
||||
{
|
||||
|
||||
class PluginViewHolder : Java.Lang.Object
|
||||
{
|
||||
public ImageView imgIcon;
|
||||
public TextView txtTitle;
|
||||
public TextView txtVersion;
|
||||
|
||||
public TextView txtEnabledStatus;
|
||||
}
|
||||
|
||||
Context context;
|
||||
int layoutResourceId;
|
||||
IList<PluginItem> data = null;
|
||||
|
||||
public PluginArrayAdapter(Context context, int layoutResourceId, IList<PluginItem> data) :
|
||||
base(context, layoutResourceId, data)
|
||||
{
|
||||
|
||||
this.layoutResourceId = layoutResourceId;
|
||||
this.context = context;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public override View GetView(int position, View convertView, ViewGroup parent)
|
||||
{
|
||||
View row = convertView;
|
||||
PluginViewHolder holder = null;
|
||||
|
||||
if (row == null)
|
||||
{
|
||||
LayoutInflater inflater = ((Activity)context).LayoutInflater;
|
||||
row = inflater.Inflate(layoutResourceId, parent, false);
|
||||
|
||||
holder = new PluginViewHolder();
|
||||
holder.imgIcon = (ImageView)row.FindViewById(Resource.Id.imgIcon);
|
||||
holder.txtTitle = (TextView)row.FindViewById(Resource.Id.txtLabel);
|
||||
holder.txtVersion = (TextView)row.FindViewById(Resource.Id.txtVersion);
|
||||
holder.txtEnabledStatus = (TextView)row.FindViewById(Resource.Id.txtStatus);
|
||||
|
||||
row.Tag = holder;
|
||||
}
|
||||
else
|
||||
{
|
||||
holder = (PluginViewHolder)row.Tag;
|
||||
}
|
||||
|
||||
var item = data[position];
|
||||
holder.txtTitle.Text = item.Label;
|
||||
holder.txtVersion.Text = item.Version;
|
||||
holder.txtEnabledStatus.Text = item.EnabledStatus;
|
||||
holder.imgIcon.SetImageDrawable(item.Icon);
|
||||
|
||||
return row;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
199
src/keepass2android/pluginhost/PluginDatabase.cs
Normal file
@ -0,0 +1,199 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Util;
|
||||
using Keepass2android.Pluginsdk;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
public class PluginDatabase
|
||||
{
|
||||
private const string _tag = "KP2A_PluginDatabase";
|
||||
private readonly Context _ctx;
|
||||
private const string _accessToken = "accessToken";
|
||||
private const string _scopes = "scopes";
|
||||
private const string _requesttoken = "requestToken";
|
||||
private const string _pluginlist = "pluginList";
|
||||
|
||||
|
||||
|
||||
public PluginDatabase(Context ctx)
|
||||
{
|
||||
_ctx = ctx;
|
||||
}
|
||||
|
||||
private ISharedPreferences GetPreferencesForPlugin(string packageName)
|
||||
{
|
||||
var prefs = _ctx.GetSharedPreferences("KP2A.Plugin." + packageName, FileCreationMode.Private);
|
||||
if (prefs.GetString(_requesttoken, null) == null)
|
||||
{
|
||||
var editor = prefs.Edit();
|
||||
editor.PutString(_requesttoken, Guid.NewGuid().ToString());
|
||||
editor.Commit();
|
||||
}
|
||||
var hostPrefs = GetHostPrefs();
|
||||
var plugins = hostPrefs.GetStringSet(_pluginlist, new List<string>());
|
||||
if (!plugins.Contains(packageName))
|
||||
{
|
||||
plugins.Add(packageName);
|
||||
hostPrefs.Edit().PutStringSet(_pluginlist, plugins).Commit();
|
||||
}
|
||||
|
||||
return prefs;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the request token for the plugin. Request token is created of not yet available.
|
||||
/// </summary>
|
||||
/// <returns>Request token. Never null or empty.</returns>
|
||||
public string GetRequestToken(string pkgName)
|
||||
{
|
||||
return GetPreferencesForPlugin(pkgName).GetString(_requesttoken, null);
|
||||
}
|
||||
|
||||
public IList<string> GetPluginScopes(string pluginPackage)
|
||||
{
|
||||
var prefs = GetPreferencesForPlugin(pluginPackage);
|
||||
return AccessManager.StringToStringArray(prefs.GetString(_scopes, ""));
|
||||
}
|
||||
|
||||
public IEnumerable<String> GetAllPluginPackages()
|
||||
{
|
||||
var hostPrefs = GetHostPrefs();
|
||||
return hostPrefs.GetStringSet(_pluginlist, new List<string>()).Where(IsPackageInstalled);
|
||||
}
|
||||
|
||||
public bool IsPackageInstalled(string targetPackage)
|
||||
{
|
||||
try
|
||||
{
|
||||
PackageInfo info = _ctx.PackageManager.GetPackageInfo(targetPackage, PackageInfoFlags.MetaData);
|
||||
}
|
||||
catch (PackageManager.NameNotFoundException e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool IsEnabled(string pluginPackage)
|
||||
{
|
||||
return GetPreferencesForPlugin(pluginPackage).GetString(_accessToken, null) != null;
|
||||
}
|
||||
|
||||
|
||||
public void StorePlugin(string pluginPackage, string accessToken, IList<string> requestedScopes)
|
||||
{
|
||||
ISharedPreferences hostPrefs = GetHostPrefs();
|
||||
ISharedPreferences pluginPrefs = GetPreferencesForPlugin(pluginPackage);
|
||||
var stringSet = hostPrefs.GetStringSet(_pluginlist, new Collection<string>());
|
||||
if (!stringSet.Contains(pluginPackage))
|
||||
{
|
||||
stringSet.Add(pluginPackage);
|
||||
hostPrefs.Edit()
|
||||
.PutStringSet(_pluginlist, stringSet)
|
||||
.Commit();
|
||||
}
|
||||
|
||||
pluginPrefs.Edit()
|
||||
.PutString(_scopes, AccessManager.StringArrayToString(requestedScopes))
|
||||
.PutString(_accessToken, accessToken)
|
||||
.Commit();
|
||||
}
|
||||
|
||||
private ISharedPreferences GetHostPrefs()
|
||||
{
|
||||
return _ctx.GetSharedPreferences("plugins", FileCreationMode.Private);
|
||||
}
|
||||
|
||||
public void SetEnabled(string pluginPackage, bool enabled)
|
||||
{
|
||||
if (enabled)
|
||||
{
|
||||
string accessToken = Guid.NewGuid().ToString();
|
||||
|
||||
Intent i = new Intent(Strings.ActionReceiveAccess);
|
||||
i.SetPackage(pluginPackage);
|
||||
|
||||
i.PutExtra(Strings.ExtraSender, _ctx.PackageName);
|
||||
i.PutExtra(Strings.ExtraRequestToken, GetPreferencesForPlugin(pluginPackage).GetString(_requesttoken, null));
|
||||
i.PutExtra(Strings.ExtraAccessToken, accessToken);
|
||||
_ctx.SendBroadcast(i);
|
||||
|
||||
StorePlugin(pluginPackage, accessToken, GetPluginScopes( pluginPackage));
|
||||
}
|
||||
else
|
||||
{
|
||||
Intent i = new Intent(Strings.ActionRevokeAccess);
|
||||
i.SetPackage(pluginPackage);
|
||||
i.PutExtra(Strings.ExtraSender, _ctx.PackageName);
|
||||
i.PutExtra(Strings.ExtraRequestToken, GetPreferencesForPlugin(pluginPackage).GetString(_requesttoken, null));
|
||||
_ctx.SendBroadcast(i);
|
||||
StorePlugin(pluginPackage, null, GetPluginScopes(pluginPackage));
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsValidAccessToken(string pluginPackage, string accessToken, string scope)
|
||||
{
|
||||
if (pluginPackage == null)
|
||||
{
|
||||
Log.Warn(_tag, "No pluginPackage specified!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (accessToken == null)
|
||||
{
|
||||
Log.Warn(_tag, "No accessToken specified!");
|
||||
return false;
|
||||
}
|
||||
|
||||
var prefs = GetPreferencesForPlugin(pluginPackage);
|
||||
if (prefs.GetString(_accessToken, null) != accessToken)
|
||||
{
|
||||
Log.Warn(_tag, "Invalid access token for " + pluginPackage);
|
||||
return false;
|
||||
}
|
||||
if (!AccessManager.StringToStringArray(prefs.GetString(_scopes, "")).Contains(scope))
|
||||
{
|
||||
Log.Warn(_tag, "Scope " + scope + " not granted for " + pluginPackage);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public string GetAccessToken(string pluginPackage)
|
||||
{
|
||||
return GetPreferencesForPlugin(pluginPackage).GetString(_accessToken, null);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
foreach (string plugin in GetAllPluginPackages())
|
||||
{
|
||||
GetPreferencesForPlugin(plugin).Edit().Clear().Commit();
|
||||
}
|
||||
GetHostPrefs().Edit().Clear().Commit();
|
||||
}
|
||||
|
||||
|
||||
public IEnumerable<string> GetPluginsWithAcceptedScope(string scope)
|
||||
{
|
||||
return GetAllPluginPackages().Where(plugin =>
|
||||
{
|
||||
var prefs = GetPreferencesForPlugin(plugin);
|
||||
return (prefs.GetString(_accessToken, null) != null)
|
||||
&& AccessManager.StringToStringArray(prefs.GetString(_scopes, "")).Contains(scope);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
public void ClearPlugin(string plugin)
|
||||
{
|
||||
var prefs = _ctx.GetSharedPreferences("KP2A.Plugin." + plugin, FileCreationMode.Private);
|
||||
prefs.Edit().Clear().Commit();
|
||||
}
|
||||
}
|
||||
}
|
108
src/keepass2android/pluginhost/PluginDetailsActivity.cs
Normal file
@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Content.Res;
|
||||
using Android.Graphics.Drawables;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Util;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Java.Util;
|
||||
using Keepass2android.Pluginsdk;
|
||||
using keepass2android;
|
||||
using keepass2android.views;
|
||||
|
||||
namespace PluginHostTest
|
||||
{
|
||||
[Activity(Label = "@string/app_name", Theme = "@style/Base")]
|
||||
public class PluginDetailsActivity : Activity
|
||||
{
|
||||
protected override void OnCreate(Bundle bundle)
|
||||
{
|
||||
base.OnCreate(bundle);
|
||||
|
||||
string pluginPackage = Intent.GetStringExtra("PluginPackage");
|
||||
|
||||
Intent mainIntent = new Intent(Intent.ActionMain, null);
|
||||
mainIntent.AddCategory(Intent.CategoryLauncher);
|
||||
|
||||
IList<ResolveInfo> appList = PackageManager.QueryIntentActivities(mainIntent, 0);
|
||||
//Collections.Sort(appList, new ResolveInfo.DisplayNameComparator(PackageManager));
|
||||
|
||||
foreach (ResolveInfo temp in appList)
|
||||
{
|
||||
|
||||
Log.Verbose("my logs", "package and activity name = "
|
||||
+ temp.ActivityInfo.PackageName + " "
|
||||
+ temp.ActivityInfo.Name + " " + temp.ActivityInfo.IconResource);
|
||||
|
||||
}
|
||||
var pluginRes = PackageManager.GetResourcesForApplication(pluginPackage);
|
||||
var title = GetStringFromPlugin(pluginRes, pluginPackage, "kp2aplugin_title");
|
||||
var author = GetStringFromPlugin(pluginRes, pluginPackage, "kp2aplugin_author");
|
||||
var shortDesc = GetStringFromPlugin(pluginRes, pluginPackage, "kp2aplugin_shortdesc");
|
||||
|
||||
var version = PackageManager.GetPackageInfo(pluginPackage, 0).VersionName;
|
||||
|
||||
SetContentView(Resource.Layout.plugin_details);
|
||||
if (title != null)
|
||||
FindViewById<TextView>(Resource.Id.txtLabel).Text = title;
|
||||
FindViewById<TextView>(Resource.Id.txtVersion).Text = version;
|
||||
SetTextOrHide(Resource.Id.txtAuthor, author);
|
||||
SetTextOrHide(Resource.Id.txtShortDesc, shortDesc);
|
||||
|
||||
var checkbox = FindViewById<CheckBox>(Resource.Id.cb_enabled);
|
||||
PluginDatabase pluginDb = new PluginDatabase(this);
|
||||
checkbox.Checked = pluginDb.IsEnabled(pluginPackage);
|
||||
checkbox.CheckedChange += delegate(object sender, CompoundButton.CheckedChangeEventArgs args)
|
||||
{
|
||||
pluginDb.SetEnabled(pluginPackage, checkbox.Checked);
|
||||
};
|
||||
|
||||
Drawable d = PackageManager.GetApplicationIcon(pluginPackage);
|
||||
FindViewById<ImageView>(Resource.Id.imgIcon).SetImageDrawable(d);
|
||||
|
||||
FindViewById<TextView>(Resource.Id.txtVersion).Text = version;
|
||||
|
||||
var scopesContainer = FindViewById<LinearLayout>(Resource.Id.scopes_list);
|
||||
|
||||
foreach (string scope in pluginDb.GetPluginScopes(pluginPackage))
|
||||
{
|
||||
string scopeId = scope.Substring("keepass2android.".Length);
|
||||
|
||||
TextWithHelp help = new TextWithHelp(this, GetString(Resources.GetIdentifier(scopeId + "_title", "string", PackageName)), GetString(Resources.GetIdentifier(scopeId + "_explanation", "string", PackageName)));
|
||||
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.WrapContent);
|
||||
help.LayoutParameters = layoutParams;
|
||||
scopesContainer.AddView(help);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void SetTextOrHide(int resourceId, string text)
|
||||
{
|
||||
if (text != null)
|
||||
{
|
||||
FindViewById<TextView>(resourceId).Text = text;
|
||||
FindViewById<TextView>(resourceId).Visibility = ViewStates.Visible;
|
||||
}
|
||||
else
|
||||
FindViewById<TextView>(resourceId).Visibility = ViewStates.Gone;
|
||||
}
|
||||
|
||||
public static string GetStringFromPlugin(Resources pluginRes, string pluginPackage, string stringId)
|
||||
{
|
||||
int titleId = pluginRes.GetIdentifier(pluginPackage + ":string/"+stringId, null, null);
|
||||
string title = null;
|
||||
if (titleId != 0)
|
||||
title = pluginRes.GetString(titleId);
|
||||
return title;
|
||||
}
|
||||
}
|
||||
}
|
154
src/keepass2android/pluginhost/PluginHost.cs
Normal file
@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.Util;
|
||||
using KeePassLib.Utility;
|
||||
using Keepass2android.Pluginsdk;
|
||||
using Org.Json;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
[BroadcastReceiver()]
|
||||
[IntentFilter(new[] { Strings.ActionRequestAccess})]
|
||||
public class PluginHost: BroadcastReceiver
|
||||
{
|
||||
|
||||
private const string _tag = "KP2A_PluginHost";
|
||||
|
||||
|
||||
private static readonly string[] _validScopes = { Strings.ScopeDatabaseActions, Strings.ScopeCurrentEntry };
|
||||
|
||||
public static void TriggerRequests(Context ctx)
|
||||
{
|
||||
Intent accessIntent = new Intent(Strings.ActionTriggerRequestAccess);
|
||||
PackageManager packageManager = ctx.PackageManager;
|
||||
IList<ResolveInfo> dictPacks = packageManager.QueryBroadcastReceivers(
|
||||
accessIntent, PackageInfoFlags.Receivers);
|
||||
PluginDatabase pluginDatabase = new PluginDatabase(ctx);
|
||||
foreach (ResolveInfo ri in dictPacks)
|
||||
{
|
||||
ApplicationInfo appInfo = ri.ActivityInfo.ApplicationInfo;
|
||||
String pkgName = appInfo.PackageName;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
Intent triggerIntent = new Intent(Strings.ActionTriggerRequestAccess);
|
||||
triggerIntent.SetPackage(pkgName);
|
||||
triggerIntent.PutExtra(Strings.ExtraSender, ctx.PackageName);
|
||||
|
||||
triggerIntent.PutExtra(Strings.ExtraRequestToken, pluginDatabase.GetRequestToken(pkgName));
|
||||
ctx.SendBroadcast(triggerIntent);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public override void OnReceive(Context context, Intent intent)
|
||||
{
|
||||
PluginDatabase pluginDb = new PluginDatabase(context);
|
||||
if (intent.Action == Strings.ActionRequestAccess)
|
||||
{
|
||||
var senderPackage = intent.GetStringExtra(Strings.ExtraSender);
|
||||
var requestToken = intent.GetStringExtra(Strings.ExtraRequestToken);
|
||||
|
||||
var requestedScopes = intent.GetStringArrayListExtra(Strings.ExtraScopes);
|
||||
|
||||
if (!AreScopesValid(requestedScopes))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (pluginDb.GetRequestToken(senderPackage) != requestToken)
|
||||
{
|
||||
Log.Warn(_tag, "Invalid requestToken!");
|
||||
return;
|
||||
}
|
||||
string currentAccessToken = pluginDb.GetAccessToken(senderPackage);
|
||||
if ((currentAccessToken != null)
|
||||
&& (AccessManager.IsSubset(requestedScopes,
|
||||
pluginDb.GetPluginScopes(senderPackage))))
|
||||
{
|
||||
//permission already there.
|
||||
var i = new Intent(Strings.ActionReceiveAccess);
|
||||
i.PutExtra(Strings.ExtraSender, context.PackageName);
|
||||
i.PutExtra(Strings.ExtraAccessToken, currentAccessToken);
|
||||
//TODO: Plugin should verify requestToken to make sure it doesn't receive accessTokens from malicious apps
|
||||
i.PutExtra(Strings.ExtraRequestToken, requestToken);
|
||||
i.SetPackage(senderPackage);
|
||||
context.SendBroadcast(i);
|
||||
|
||||
Log.Debug(_tag, "Plugin " + senderPackage + " enabled.");
|
||||
}
|
||||
else
|
||||
{
|
||||
//store that scope was requested but not yet approved (=> accessToken = null)
|
||||
pluginDb.StorePlugin(senderPackage, null, requestedScopes);
|
||||
|
||||
Log.Debug(_tag, "Plugin " + senderPackage + " not enabled.");
|
||||
|
||||
//see if the plugin has an access token
|
||||
string accessToken = intent.GetStringExtra(Strings.ExtraAccessToken);
|
||||
if (accessToken != null)
|
||||
{
|
||||
//notify plugin that access token is no longer valid or sufficient
|
||||
Intent i = new Intent(Strings.ActionRevokeAccess);
|
||||
i.PutExtra(Strings.ExtraSender, context.PackageName);
|
||||
i.PutExtra(Strings.ExtraAccessToken, accessToken);
|
||||
i.SetPackage(senderPackage);
|
||||
context.SendBroadcast(i);
|
||||
Log.Warn(_tag, "Access token of plugin " + senderPackage + " not (or no more) valid.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private bool AreScopesValid(IList<string> requestedScopes)
|
||||
{
|
||||
foreach (string scope in requestedScopes)
|
||||
{
|
||||
if (!_validScopes.Contains(scope))
|
||||
{
|
||||
Log.Warn(_tag, "invalid scope: " + scope);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void AddEntryToIntent(Intent intent, PwEntryOutput entry)
|
||||
{
|
||||
/*//add the entry XML
|
||||
not yet implemented. What to do with attachments?
|
||||
MemoryStream memStream = new MemoryStream();
|
||||
KdbxFile.WriteEntries(memStream, new[] {entry});
|
||||
string entryData = StrUtil.Utf8.GetString(memStream.ToArray());
|
||||
intent.PutExtra(Strings.ExtraEntryData, entryData);
|
||||
*/
|
||||
//add the output string array (placeholders replaced taking into account the db context)
|
||||
Dictionary<string, string> outputFields = entry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString());
|
||||
|
||||
JSONObject json = new JSONObject(outputFields);
|
||||
var jsonStr = json.ToString();
|
||||
intent.PutExtra(Strings.ExtraEntryOutputData, jsonStr);
|
||||
|
||||
intent.PutExtra(Strings.ExtraEntryId, entry.Uuid.ToHexString());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
56
src/keepass2android/pluginhost/PluginListActivity.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Content.PM;
|
||||
using Android.OS;
|
||||
using Android.Widget;
|
||||
using PluginHostTest;
|
||||
|
||||
namespace keepass2android
|
||||
{
|
||||
[Activity(Label = "@string/app_name", Theme = "@style/Base")]
|
||||
public class PluginListActivity : ListActivity
|
||||
{
|
||||
private PluginArrayAdapter _pluginArrayAdapter;
|
||||
private List<PluginItem> _items;
|
||||
|
||||
protected override void OnCreate(Bundle bundle)
|
||||
{
|
||||
base.OnCreate(bundle);
|
||||
|
||||
//TODO _design.ApplyTheme();
|
||||
|
||||
SetContentView(Resource.Layout.plugin_list);
|
||||
|
||||
ListView listView = FindViewById<ListView>(Android.Resource.Id.List);
|
||||
listView.ItemClick +=
|
||||
(sender, args) =>
|
||||
{
|
||||
Intent i = new Intent(this, typeof(PluginDetailsActivity));
|
||||
i.PutExtra("PluginPackage", _items[args.Position].Package);
|
||||
StartActivity(i);
|
||||
};
|
||||
|
||||
// Create your application here
|
||||
}
|
||||
protected override void OnResume()
|
||||
{
|
||||
base.OnResume();
|
||||
PluginDatabase pluginDb = new PluginDatabase(this);
|
||||
|
||||
_items = (from pluginPackage in pluginDb.GetAllPluginPackages()
|
||||
let version = PackageManager.GetPackageInfo(pluginPackage, 0).VersionName
|
||||
let enabledStatus = pluginDb.IsEnabled(pluginPackage) ? GetString(Resource.String.plugin_enabled) : GetString(Resource.String.plugin_disabled)
|
||||
select new PluginItem(pluginPackage, enabledStatus, this)).ToList();
|
||||
/*
|
||||
{
|
||||
new PluginItem("PluginA", Resource.Drawable.Icon, "keepass2android.plugina", "connected"),
|
||||
new PluginItem("KeepassNFC", Resource.Drawable.Icon, "com.bla.blubb.plugina", "disconnected")
|
||||
};
|
||||
* */
|
||||
_pluginArrayAdapter = new PluginArrayAdapter(this, Resource.Layout.ListViewPluginRow, _items);
|
||||
ListAdapter = _pluginArrayAdapter;
|
||||
}
|
||||
}
|
||||
}
|
@ -94,10 +94,19 @@ namespace keepass2android
|
||||
if (uuidBytes != null)
|
||||
entryId = new PwUuid(MemUtil.HexStringToByteArray(uuidBytes));
|
||||
|
||||
PwEntry entry;
|
||||
PwEntryOutput entry;
|
||||
try
|
||||
{
|
||||
entry = App.Kp2a.GetDb().Entries[entryId];
|
||||
if ((App.Kp2a.GetDb().LastOpenedEntry != null)
|
||||
&& (entryId.Equals(App.Kp2a.GetDb().LastOpenedEntry.Uuid)))
|
||||
{
|
||||
entry = App.Kp2a.GetDb().LastOpenedEntry;
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = new PwEntryOutput(App.Kp2a.GetDb().Entries[entryId], App.Kp2a.GetDb().KpDatabase);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@ -190,7 +199,7 @@ namespace keepass2android
|
||||
return PendingIntent.GetBroadcast(this, requestCode, intent, PendingIntentFlags.CancelCurrent);
|
||||
}
|
||||
|
||||
public void DisplayAccessNotifications(PwEntry entry, bool closeAfterCreate)
|
||||
public void DisplayAccessNotifications(PwEntryOutput entry, bool closeAfterCreate)
|
||||
{
|
||||
// Notification Manager
|
||||
_notificationManager = (NotificationManager)GetSystemService(NotificationService);
|
||||
@ -201,13 +210,13 @@ namespace keepass2android
|
||||
_numElementsToWaitFor = 0;
|
||||
bool hadKeyboardData = ClearKeyboard(false); //do not broadcast if the keyboard was changed
|
||||
|
||||
String entryName = entry.Strings.ReadSafe(PwDefs.TitleField);
|
||||
String entryName = entry.OutputStrings.ReadSafe(PwDefs.TitleField);
|
||||
|
||||
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
|
||||
if (prefs.GetBoolean(GetString(Resource.String.CopyToClipboardNotification_key), Resources.GetBoolean(Resource.Boolean.CopyToClipboardNotification_default)))
|
||||
{
|
||||
|
||||
if (GetStringAndReplacePlaceholders(entry, PwDefs.PasswordField).Length > 0)
|
||||
if (entry.OutputStrings.ReadSafe(PwDefs.PasswordField).Length > 0)
|
||||
{
|
||||
// only show notification if password is available
|
||||
Notification password = GetNotification(Intents.CopyPassword, Resource.String.copy_password, Resource.Drawable.notify, entryName);
|
||||
@ -218,7 +227,7 @@ namespace keepass2android
|
||||
|
||||
}
|
||||
|
||||
if (GetStringAndReplacePlaceholders(entry, PwDefs.UserNameField).Length > 0)
|
||||
if (entry.OutputStrings.ReadSafe(PwDefs.UserNameField).Length > 0)
|
||||
{
|
||||
// only show notification if username is available
|
||||
Notification username = GetNotification(Intents.CopyUsername, Resource.String.copy_username, Resource.Drawable.notify, entryName);
|
||||
@ -278,7 +287,7 @@ namespace keepass2android
|
||||
RegisterReceiver(_notificationDeletedBroadcastReceiver, deletefilter);
|
||||
}
|
||||
|
||||
bool MakeAccessibleForKeyboard(PwEntry entry)
|
||||
bool MakeAccessibleForKeyboard(PwEntryOutput entry)
|
||||
{
|
||||
#if EXCLUDE_KEYBOARD
|
||||
return false;
|
||||
@ -302,7 +311,7 @@ namespace keepass2android
|
||||
int i=0;
|
||||
foreach (string key in keys)
|
||||
{
|
||||
String value = GetStringAndReplacePlaceholders(entry, key);
|
||||
String value = entry.OutputStrings.ReadSafe(key);
|
||||
|
||||
if (value.Length > 0)
|
||||
{
|
||||
@ -312,12 +321,10 @@ namespace keepass2android
|
||||
i++;
|
||||
}
|
||||
//add additional fields:
|
||||
foreach (var pair in entry.Strings)
|
||||
foreach (var pair in entry.OutputStrings)
|
||||
{
|
||||
String key = pair.Key;
|
||||
|
||||
var value = GetStringAndReplacePlaceholders(entry, key);
|
||||
|
||||
var key = pair.Key;
|
||||
var value = pair.Value.ReadString();
|
||||
|
||||
if (!PwDefs.IsStandardField(key)) {
|
||||
kbdataBuilder.AddString(pair.Key, pair.Key, value);
|
||||
@ -327,7 +334,7 @@ namespace keepass2android
|
||||
|
||||
|
||||
kbdataBuilder.Commit();
|
||||
Keepass2android.Kbbridge.KeyboardData.EntryName = entry.Strings.ReadSafe(PwDefs.TitleField);
|
||||
Keepass2android.Kbbridge.KeyboardData.EntryName = entry.OutputStrings.ReadSafe(PwDefs.TitleField);
|
||||
Keepass2android.Kbbridge.KeyboardData.EntryId = entry.Uuid.ToHexString();
|
||||
|
||||
return hasData;
|
||||
@ -456,9 +463,9 @@ namespace keepass2android
|
||||
class CopyToClipboardBroadcastReceiver: BroadcastReceiver
|
||||
{
|
||||
readonly CopyToClipboardService _service;
|
||||
readonly PwEntry _entry;
|
||||
readonly PwEntryOutput _entry;
|
||||
|
||||
public CopyToClipboardBroadcastReceiver(PwEntry entry, CopyToClipboardService service)
|
||||
public CopyToClipboardBroadcastReceiver(PwEntryOutput entry, CopyToClipboardService service)
|
||||
{
|
||||
_entry = entry;
|
||||
_service = service;
|
||||
@ -471,14 +478,14 @@ namespace keepass2android
|
||||
|
||||
if (action.Equals(Intents.CopyUsername))
|
||||
{
|
||||
String username = GetStringAndReplacePlaceholders(_entry, PwDefs.UserNameField);
|
||||
String username = _entry.OutputStrings.ReadSafe(PwDefs.UserNameField);
|
||||
if (username.Length > 0)
|
||||
{
|
||||
_service.TimeoutCopyToClipboard(username);
|
||||
}
|
||||
} else if (action.Equals(Intents.CopyPassword))
|
||||
{
|
||||
String password = GetStringAndReplacePlaceholders(_entry, PwDefs.PasswordField);
|
||||
String password = _entry.OutputStrings.ReadSafe(PwDefs.PasswordField);
|
||||
if (password.Length > 0)
|
||||
{
|
||||
_service.TimeoutCopyToClipboard(password);
|
||||
|
@ -1,56 +0,0 @@
|
||||
/*
|
||||
This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file is based on Keepassdroid, Copyright Brian Pellin.
|
||||
|
||||
Keepass2Android is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Keepass2Android 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 Keepass2Android. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using Android.Content;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Android.Util;
|
||||
|
||||
namespace keepass2android.view
|
||||
{
|
||||
|
||||
public class GroupHeaderView : RelativeLayout {
|
||||
|
||||
public GroupHeaderView (IntPtr javaReference, JniHandleOwnership transfer)
|
||||
: base(javaReference, transfer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public GroupHeaderView(Context context) :base(context) {
|
||||
|
||||
InflateView();
|
||||
}
|
||||
|
||||
public GroupHeaderView(Context context, IAttributeSet attrs):base(context,attrs) {
|
||||
|
||||
InflateView();
|
||||
}
|
||||
|
||||
private void InflateView() {
|
||||
LayoutInflater inflater = (LayoutInflater) Context.GetSystemService(Context.LayoutInflaterService);
|
||||
inflater.Inflate(Resource.Layout.group_header, this);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -24,6 +24,13 @@ namespace keepass2android.views
|
||||
Initialize(attrs);
|
||||
}
|
||||
|
||||
public TextWithHelp(Context context, string text, string helpText) :
|
||||
base(context, null)
|
||||
{
|
||||
Initialize(text, helpText);
|
||||
}
|
||||
|
||||
|
||||
public TextWithHelp(Context context, IAttributeSet attrs, int defStyle) :
|
||||
base(context, attrs, defStyle)
|
||||
{
|
||||
@ -31,19 +38,26 @@ namespace keepass2android.views
|
||||
}
|
||||
|
||||
private void Initialize(IAttributeSet attrs)
|
||||
{
|
||||
|
||||
TypedArray a = Context.ObtainStyledAttributes(attrs, Resource.Styleable.TextWithHelp);
|
||||
|
||||
string helpText = a.GetString(Resource.Styleable.TextWithHelp_help_text);
|
||||
|
||||
const string xmlns = "http://schemas.android.com/apk/res/android";
|
||||
string text = Context.GetString(attrs.GetAttributeResourceValue(xmlns, "text", Resource.String.ellipsis));
|
||||
Initialize(text, helpText);
|
||||
}
|
||||
|
||||
private void Initialize(string text, string helpText)
|
||||
{
|
||||
LayoutInflater inflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
|
||||
inflater.Inflate(Resource.Layout.text_with_help, this);
|
||||
|
||||
TypedArray a = Context.ObtainStyledAttributes(
|
||||
attrs,
|
||||
Resource.Styleable.TextWithHelp);
|
||||
_kp2AShortHelpView = ((Kp2aShortHelpView)FindViewById(Resource.Id.help));
|
||||
_kp2AShortHelpView.HelpText = a.GetString(Resource.Styleable.TextWithHelp_help_text);
|
||||
|
||||
const string xmlns = "http://schemas.android.com/apk/res/android";
|
||||
((TextView)FindViewById(Resource.Id.text)).Text = Context.GetString(attrs.GetAttributeResourceValue(xmlns, "text", Resource.String.ellipsis));
|
||||
_kp2AShortHelpView.HelpText = helpText;
|
||||
|
||||
((TextView)FindViewById(Resource.Id.text)).Text = text;
|
||||
}
|
||||
|
||||
public string HelpText
|
||||
|