diff options
| author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-03 22:44:32 +0100 | 
|---|---|---|
| committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-03 22:44:32 +0100 | 
| commit | 7b0e067f63f6f463cd7775347a7bf1c6e3c232c6 (patch) | |
| tree | fdd3eb31a53c473044970fe055283f54024ae234 /OpenKeychain | |
| parent | 188559bbcd5d4a9c5aac00ab6e20deb4e52988d3 (diff) | |
| download | open-keychain-7b0e067f63f6f463cd7775347a7bf1c6e3c232c6.tar.gz open-keychain-7b0e067f63f6f463cd7775347a7bf1c6e3c232c6.tar.bz2 open-keychain-7b0e067f63f6f463cd7775347a7bf1c6e3c232c6.zip  | |
Fix expiry dialog, reorder layouts
Diffstat (limited to 'OpenKeychain')
5 files changed, 93 insertions, 63 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java index d5376cbdc..0b1d39fc1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/AddSubkeyDialogFragment.java @@ -137,12 +137,10 @@ public class AddSubkeyDialogFragment extends DialogFragment {              }          }); -        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { -            // date picker works based on default time zone -            Calendar minDateCal = Calendar.getInstance(TimeZone.getDefault()); -            minDateCal.add(Calendar.DAY_OF_YEAR, 1); // at least one day after creation (today) -            mExpiryDatePicker.setMinDate(minDateCal.getTime().getTime()); -        } +        // date picker works based on default time zone +        Calendar minDateCal = Calendar.getInstance(TimeZone.getDefault()); +        minDateCal.add(Calendar.DAY_OF_YEAR, 1); // at least one day after creation (today) +        mExpiryDatePicker.setMinDate(minDateCal.getTime().getTime());          {              ArrayList<Choice<Algorithm>> choices = new ArrayList<>(); @@ -283,7 +281,7 @@ public class AddSubkeyDialogFragment extends DialogFragment {                      // For EC keys, add a curve                      if (algorithm == Algorithm.ECDH || algorithm == Algorithm.ECDSA) {                          curve = ((Choice<Curve>) mCurveSpinner.getSelectedItem()).getId(); -                    // Otherwise, get a keysize +                        // Otherwise, get a keysize                      } else {                          keySize = getProperKeyLength(algorithm, getSelectedKeyLength());                      } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyExpiryDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyExpiryDialogFragment.java index fc618c9eb..37e05a61d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyExpiryDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/EditSubkeyExpiryDialogFragment.java @@ -25,11 +25,14 @@ import android.os.Message;  import android.os.Messenger;  import android.os.RemoteException;  import android.support.v4.app.DialogFragment; +import android.text.format.DateFormat;  import android.view.LayoutInflater;  import android.view.View;  import android.widget.CheckBox;  import android.widget.CompoundButton;  import android.widget.DatePicker; +import android.widget.LinearLayout; +import android.widget.TextView;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.R; @@ -97,61 +100,64 @@ public class EditSubkeyExpiryDialogFragment extends DialogFragment {          final CheckBox noExpiry = (CheckBox) view.findViewById(R.id.edit_subkey_expiry_no_expiry);          final DatePicker datePicker = (DatePicker) view.findViewById(R.id.edit_subkey_expiry_date_picker); +        final TextView currentExpiry = (TextView) view.findViewById(R.id.edit_subkey_expiry_current_expiry); +        final LinearLayout expiryLayout = (LinearLayout) view.findViewById(R.id.edit_subkey_expiry_layout);          noExpiry.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                  if (isChecked) { -                    datePicker.setVisibility(View.GONE); +                    expiryLayout.setVisibility(View.GONE);                  } else { -                    datePicker.setVisibility(View.VISIBLE); +                    expiryLayout.setVisibility(View.VISIBLE);                  }              }          }); -        // init date picker with default selected date          if (expiry == 0L) {              noExpiry.setChecked(true); -            datePicker.setVisibility(View.GONE); - -            Calendar todayCal = Calendar.getInstance(TimeZone.getDefault()); -            if (creationCal.after(todayCal)) { -                // Note: This is just for the rare cases where creation is _after_ today - -                // set it to creation date +1 day (don't set it to creationCal, it would break crash -                // datePicker.setMinDate() execution with IllegalArgumentException -                Calendar creationCalPlusOne = (Calendar) creationCal.clone(); -                creationCalPlusOne.add(Calendar.DAY_OF_YEAR, 1); -                datePicker.init( -                        creationCalPlusOne.get(Calendar.YEAR), -                        creationCalPlusOne.get(Calendar.MONTH), -                        creationCalPlusOne.get(Calendar.DAY_OF_MONTH), -                        null -                ); - -            } else { -                // normally, just init with today -                datePicker.init( -                        todayCal.get(Calendar.YEAR), -                        todayCal.get(Calendar.MONTH), -                        todayCal.get(Calendar.DAY_OF_MONTH), -                        null -                ); -            } +            expiryLayout.setVisibility(View.GONE); + +            currentExpiry.setText(R.string.btn_no_date);          } else {              noExpiry.setChecked(false); -            datePicker.setVisibility(View.VISIBLE); +            expiryLayout.setVisibility(View.VISIBLE); + +            // convert from UTC to time zone of device +            Calendar expiryCalTimeZone = (Calendar) expiryCal.clone(); +            expiryCalTimeZone.setTimeZone(TimeZone.getDefault()); +            currentExpiry.setText(DateFormat.getDateFormat( +                    getActivity()).format(expiryCalTimeZone.getTime())); +        } + +        // date picker works based on default time zone +        Calendar todayCal = Calendar.getInstance(TimeZone.getDefault()); +        if (creationCal.after(todayCal)) { +            // NOTE: This is just for the rare cases where creation is _after_ today +            // Min Date: Creation date + 1 day -            // set date picker to current expiry +            Calendar creationCalPlusOne = (Calendar) creationCal.clone(); +            creationCalPlusOne.add(Calendar.DAY_OF_YEAR, 1); +            datePicker.setMinDate(creationCalPlusOne.getTime().getTime());              datePicker.init( -                    expiryCal.get(Calendar.YEAR), -                    expiryCal.get(Calendar.MONTH), -                    expiryCal.get(Calendar.DAY_OF_MONTH), +                    creationCalPlusOne.get(Calendar.YEAR), +                    creationCalPlusOne.get(Calendar.MONTH), +                    creationCalPlusOne.get(Calendar.DAY_OF_MONTH),                      null              ); -        } +        } else { +            // Min Date: today + 1 day -        datePicker.setMinDate(creationCal.getTime().getTime()); +            // at least one day after creation (today) +            todayCal.add(Calendar.DAY_OF_YEAR, 1); +            datePicker.setMinDate(todayCal.getTime().getTime()); +            datePicker.init( +                    todayCal.get(Calendar.YEAR), +                    todayCal.get(Calendar.MONTH), +                    todayCal.get(Calendar.DAY_OF_MONTH), +                    null +            ); +        }          alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {              @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java index a05719072..a3ffe250b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/SetPassphraseDialogFragment.java @@ -92,7 +92,6 @@ public class SetPassphraseDialogFragment extends DialogFragment implements OnEdi          CustomAlertDialogBuilder alert = new CustomAlertDialogBuilder(activity);          alert.setTitle(title); -        alert.setMessage(R.string.enter_passphrase_twice);          LayoutInflater inflater = activity.getLayoutInflater();          View view = inflater.inflate(R.layout.passphrase_repeat_dialog, null); diff --git a/OpenKeychain/src/main/res/layout/edit_subkey_expiry_dialog.xml b/OpenKeychain/src/main/res/layout/edit_subkey_expiry_dialog.xml index 0931eb6a7..38dc03627 100644 --- a/OpenKeychain/src/main/res/layout/edit_subkey_expiry_dialog.xml +++ b/OpenKeychain/src/main/res/layout/edit_subkey_expiry_dialog.xml @@ -16,23 +16,49 @@          android:layout_height="wrap_content"          android:text="@string/btn_no_date" /> -    <!-- -        Use Spinner style DatePicker, not the full calendar view -        Android < 5: -            android:spinnersShown="true" -            android:calendarViewShown="false" -        Android >= 5: +    <LinearLayout +        android:id="@+id/edit_subkey_expiry_layout" +        android:orientation="vertical" +        android:layout_width="match_parent" +        android:layout_height="match_parent"> + +        <TextView +            style="@style/SectionHeader" +            android:layout_width="match_parent" +            android:layout_height="wrap_content" +            android:text="@string/section_current_expiry" /> + +        <TextView +            android:id="@+id/edit_subkey_expiry_current_expiry" +            android:textAppearance="@style/TextAppearance.AppCompat.Medium" +            android:padding="8dp" +            android:layout_width="match_parent" +            android:layout_height="wrap_content" /> + +        <TextView +            style="@style/SectionHeader" +            android:layout_width="match_parent" +            android:layout_height="wrap_content" +            android:text="@string/section_new_expiry" /> + +        <!-- +            Use Spinner style DatePicker, not the full calendar view +            Android < 5: +                android:spinnersShown="true" +                android:calendarViewShown="false" +            Android >= 5: +                android:datePickerMode="spinner" +        --> +        <!-- Hide calendarView in tablets because of the unix warparound bug. --> +        <DatePicker +            android:id="@+id/edit_subkey_expiry_date_picker" +            android:layout_gravity="center_horizontal" +            android:layout_width="wrap_content" +            android:layout_height="wrap_content" +            tools:ignore="UnusedAttribute"              android:datePickerMode="spinner" -    --> -    <!-- Hide calendarView in tablets because of the unix warparound bug. --> -    <DatePicker -        android:id="@+id/edit_subkey_expiry_date_picker" -        android:layout_gravity="center_horizontal" -        android:layout_width="wrap_content" -        android:layout_height="wrap_content" -        tools:ignore="UnusedAttribute" -        android:datePickerMode="spinner" -        android:spinnersShown="true" -        android:calendarViewShown="false" /> +            android:spinnersShown="true" +            android:calendarViewShown="false" /> +    </LinearLayout>  </LinearLayout>
\ No newline at end of file diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index ca6ce1f7d..29b955bb4 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -67,6 +67,8 @@      <string name="section_certs">"Certificates"</string>      <string name="section_encrypt">"Encrypt"</string>      <string name="section_decrypt">"Decrypt"</string> +    <string name="section_current_expiry">"Current expiry"</string> +    <string name="section_new_expiry">"New expiry"</string>      <!-- button -->      <string name="btn_decrypt_verify_file">"Decrypt, verify, and save file"</string> @@ -226,7 +228,6 @@      <string name="no_file_selected">"Select a file first."</string>      <string name="encrypt_sign_successful">"Successfully signed and/or encrypted."</string>      <string name="encrypt_sign_clipboard_successful">"Successfully signed and/or encrypted to clipboard."</string> -    <string name="enter_passphrase_twice">"Enter the passphrase twice."</string>      <string name="select_encryption_key">"Select at least one encryption key."</string>      <string name="select_encryption_or_signature_key">"Select at least one encryption key or a signature key."</string>      <string name="specify_file_to_encrypt_to">"Please specify which file to encrypt to.\nWARNING: File will be overwritten if it exists."</string> @@ -1027,7 +1028,7 @@      <string name="msg_vl_clear_meta_file">"Filename: %s"</string>      <string name="msg_vl_clear_meta_mime">"MIME type: %s"</string>      <string name="msg_vl_clear_meta_time">"Modification time: %s"</string> -    <string name="msg_vl_clear_meta_size">"Filesize: %s"</string> +    <string name="msg_vl_clear_meta_size">"File size: %s"</string>      <string name="msg_vl_clear_signature_check">"Verifying signature data"</string>      <string name="msg_vl_error_integrity_check">"Integrity check error!"</string>      <string name="msg_vl_ok">"OK"</string>  | 
