From 6fb4eb97510b6e980c95daa35664c46c45f5234d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 20:27:18 +0100 Subject: started work on migrating to appcompat --- build.gradle | 9 ++-- .../pixart/messenger/ui/ConversationActivity.java | 8 ++-- .../messenger/ui/StartConversationActivity.java | 53 ++++++++++------------ .../java/de/pixart/messenger/ui/XmppActivity.java | 4 +- src/main/res/menu/change_presence.xml | 7 +-- src/main/res/menu/choose_contact.xml | 9 ++-- src/main/res/menu/contact_details.xml | 11 +++-- src/main/res/menu/conversations.xml | 29 ++++++------ src/main/res/menu/editaccount.xml | 23 +++++----- src/main/res/menu/manageaccounts.xml | 9 ++-- src/main/res/menu/manageaccounts_context.xml | 5 +- src/main/res/menu/muc_details.xml | 13 +++--- src/main/res/menu/publish_avatar.xml | 5 +- src/main/res/menu/select_multiple.xml | 5 +- src/main/res/menu/share_with.xml | 5 +- src/main/res/menu/showlocation.xml | 5 +- src/main/res/menu/start_conversation.xml | 17 +++---- src/main/res/menu/trust_keys.xml | 5 +- src/main/res/menu/verify_otr.xml | 7 +-- src/main/res/values-v21/themes.xml | 20 +++++--- src/main/res/values/attrs.xml | 2 +- 21 files changed, 136 insertions(+), 115 deletions(-) diff --git a/build.gradle b/build.gradle index 14e0b9704..3fc14c234 100644 --- a/build.gradle +++ b/build.gradle @@ -34,7 +34,7 @@ configurations { } ext { - supportLibVersion = '27.0.2' + supportLibVersion = '27.1.0' } dependencies { @@ -54,12 +54,13 @@ dependencies { compile 'com.makeramen:roundedimageview:2.3.0' compile 'jetty:javax.servlet:5.1.12' compile 'com.google.code.gson:gson:2.8.0' - compile 'com.android.support:multidex:1.0.2' + compile 'com.android.support:multidex:1.0.3' compile "com.android.support:support-v13:$supportLibVersion" compile "com.android.support:appcompat-v7:$supportLibVersion" compile "com.android.support:support-v4:$supportLibVersion" compile "com.android.support:support-emoji:$supportLibVersion" compile "com.android.support:support-emoji-bundled:$supportLibVersion" + compile "com.android.support:exifinterface:$supportLibVersion" compile 'com.github.bumptech.glide:glide:3.8.0' compile 'com.github.chrisbanes:PhotoView:2.0.0' compile 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.3' @@ -82,8 +83,8 @@ android { minSdkVersion 16 targetSdkVersion 25 - versionCode 218 - versionName "1.21.3" + versionCode 219 + versionName "2.0.0" archivesBaseName += "-$versionName" applicationId "de.pixart.messenger" diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index 192979083..aabb8c1fe 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -1,7 +1,7 @@ package de.pixart.messenger.ui; import android.annotation.SuppressLint; -import android.app.ActionBar; +import android.support.v7.app.ActionBar; import android.app.AlertDialog; import android.app.FragmentTransaction; import android.app.PendingIntent; @@ -18,7 +18,7 @@ import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Typeface; -import android.media.ExifInterface; +import android.support.media.ExifInterface; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -250,7 +250,7 @@ public class ConversationActivity extends XmppActivity this.listAdapter = new ConversationAdapter(this, conversationList); listView.setAdapter(this.listAdapter); - final ActionBar actionBar = getActionBar(); + final ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE); } @@ -364,7 +364,7 @@ public class ConversationActivity extends XmppActivity } private void updateActionBarTitle(boolean titleShouldBeName) { - final ActionBar ab = getActionBar(); + final ActionBar ab = getSupportActionBar(); final Conversation conversation = getSelectedConversation(); if (ab != null) { if (titleShouldBeName && conversation != null) { diff --git a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java index c1cd8a015..7a11a0e08 100644 --- a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java @@ -2,15 +2,8 @@ package de.pixart.messenger.ui; import android.Manifest; import android.annotation.SuppressLint; -import android.app.ActionBar; -import android.app.ActionBar.Tab; -import android.app.ActionBar.TabListener; import android.app.AlertDialog; import android.app.Dialog; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.app.ListFragment; import android.app.PendingIntent; import android.content.ActivityNotFoundException; import android.content.Context; @@ -21,8 +14,14 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.app.ListFragment; +import android.support.v4.view.MenuItemCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBar; import android.text.Editable; import android.text.SpannableString; import android.text.Spanned; @@ -82,8 +81,8 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU private final int REQUEST_CREATE_CONFERENCE = 0x3b39da; public int conference_context_id; public int contact_context_id; - private Tab mContactsTab; - private Tab mConferencesTab; + private ActionBar.Tab mContactsTab; + private ActionBar.Tab mConferencesTab; private ViewPager mViewPager; private ListPagerAdapter mListPagerAdapter; private List contacts = new ArrayList<>(); @@ -119,29 +118,30 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU return true; } }; - private TabListener mTabListener = new TabListener() { + private ActionBar.TabListener mTabListener = new ActionBar.TabListener() { @Override - public void onTabUnselected(Tab tab, FragmentTransaction ft) { + public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { return; } @Override - public void onTabSelected(Tab tab, FragmentTransaction ft) { + public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { mViewPager.setCurrentItem(tab.getPosition()); onTabChanged(); } @Override - public void onTabReselected(Tab tab, FragmentTransaction ft) { + public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { return; } }; private ViewPager.SimpleOnPageChangeListener mOnPageChangeListener = new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { - if (getActionBar() != null) { - getActionBar().setSelectedNavigationItem(position); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setSelectedNavigationItem(position); } onTabChanged(); } @@ -166,7 +166,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU private TextView.OnEditorActionListener mSearchDone = new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - int pos = getActionBar().getSelectedNavigationIndex(); + int pos = getSupportActionBar().getSelectedNavigationIndex(); if (pos == 0) { if (contacts.size() == 1) { openConversationForContact((Contact) contacts.get(0)); @@ -257,18 +257,16 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU new EmojiService(this).init(useBundledEmoji()); setContentView(R.layout.activity_start_conversation); mViewPager = findViewById(R.id.start_conversation_view_pager); - ActionBar actionBar = getActionBar(); + ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - mContactsTab = actionBar.newTab().setText(R.string.contacts) - .setTabListener(mTabListener); - mConferencesTab = actionBar.newTab().setText(R.string.conferences) - .setTabListener(mTabListener); + mContactsTab = actionBar.newTab().setText(R.string.contacts).setTabListener(mTabListener); + mConferencesTab = actionBar.newTab().setText(R.string.conferences).setTabListener(mTabListener); actionBar.addTab(mContactsTab); actionBar.addTab(mConferencesTab); mViewPager.setOnPageChangeListener(mOnPageChangeListener); - mListPagerAdapter = new ListPagerAdapter(getFragmentManager()); + mListPagerAdapter = new ListPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(mListPagerAdapter); mConferenceAdapter = new ListItemAdapter(this, conferences); @@ -607,18 +605,17 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU menuHideOffline.setChecked(this.mHideOfflineContacts); mMenuSearchView = menu.findItem(R.id.action_search); mMenuSearchView.setOnActionExpandListener(mOnActionExpandListener); - View mSearchView = mMenuSearchView.getActionView(); - mSearchEditText = mSearchView - .findViewById(R.id.search_field); + View mSearchView = MenuItemCompat.getActionView(mMenuSearchView); + mSearchEditText = (EditText) mSearchView.findViewById(R.id.search_field); mSearchEditText.addTextChangedListener(mSearchTextWatcher); mSearchEditText.setOnEditorActionListener(mSearchDone); - if (getActionBar().getSelectedNavigationIndex() == 0) { + if (getSupportActionBar().getSelectedNavigationIndex() == 0) { menuCreateConference.setVisible(false); } else { menuCreateContact.setVisible(false); } if (mInitialJid != null) { - mMenuSearchView.expandActionView(); + MenuItemCompat.expandActionView(mMenuSearchView); mSearchEditText.append(mInitialJid); filter(mInitialJid); } @@ -778,7 +775,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } } final Intent intent = getIntent(); - final ActionBar ab = getActionBar(); + final ActionBar ab = getSupportActionBar(); boolean init = intent != null && intent.getBooleanExtra("init", false); boolean noConversations = xmppConnectionService.getConversations().size() == 0; if ((init || noConversations) && ab != null) { diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java index 79f528f93..3881b3569 100644 --- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java +++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java @@ -4,7 +4,6 @@ import android.Manifest; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.ActionBar; -import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.PendingIntent; @@ -39,6 +38,7 @@ import android.os.SystemClock; import android.preference.PreferenceManager; import android.provider.Settings; import android.support.v4.content.ContextCompat; +import android.support.v7.app.AppCompatActivity; import android.text.InputType; import android.util.DisplayMetrics; import android.util.Log; @@ -83,7 +83,7 @@ import de.pixart.messenger.xmpp.OnUpdateBlocklist; import de.pixart.messenger.xmpp.jid.InvalidJidException; import de.pixart.messenger.xmpp.jid.Jid; -public abstract class XmppActivity extends Activity { +public abstract class XmppActivity extends AppCompatActivity { protected static final int REQUEST_ANNOUNCE_PGP = 0x0101; protected static final int REQUEST_INVITE_TO_CONVERSATION = 0x0102; diff --git a/src/main/res/menu/change_presence.xml b/src/main/res/menu/change_presence.xml index 34af0a679..5417076b6 100644 --- a/src/main/res/menu/change_presence.xml +++ b/src/main/res/menu/change_presence.xml @@ -1,12 +1,13 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/choose_contact.xml b/src/main/res/menu/choose_contact.xml index 382e96017..fb52a3a1a 100644 --- a/src/main/res/menu/choose_contact.xml +++ b/src/main/res/menu/choose_contact.xml @@ -1,24 +1,25 @@ - + diff --git a/src/main/res/menu/contact_details.xml b/src/main/res/menu/contact_details.xml index 29ef166e5..50243150b 100644 --- a/src/main/res/menu/contact_details.xml +++ b/src/main/res/menu/contact_details.xml @@ -1,18 +1,19 @@ - + diff --git a/src/main/res/menu/conversations.xml b/src/main/res/menu/conversations.xml index 992371fc7..b748a065e 100644 --- a/src/main/res/menu/conversations.xml +++ b/src/main/res/menu/conversations.xml @@ -1,71 +1,72 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/editaccount.xml b/src/main/res/menu/editaccount.xml index 698c648ee..13e8db4a6 100644 --- a/src/main/res/menu/editaccount.xml +++ b/src/main/res/menu/editaccount.xml @@ -1,9 +1,10 @@ - + + app:showAsAction="always"> @@ -42,28 +43,28 @@ android:id="@+id/action_server_info_show_more" android:checkable="true" android:checked="false" - android:showAsAction="never" + app:showAsAction="never" android:title="@string/server_info_show_more" /> \ No newline at end of file diff --git a/src/main/res/menu/manageaccounts.xml b/src/main/res/menu/manageaccounts.xml index 38b82010b..044c715c5 100644 --- a/src/main/res/menu/manageaccounts.xml +++ b/src/main/res/menu/manageaccounts.xml @@ -1,21 +1,22 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/manageaccounts_context.xml b/src/main/res/menu/manageaccounts_context.xml index beca7b8ec..a49b770df 100644 --- a/src/main/res/menu/manageaccounts_context.xml +++ b/src/main/res/menu/manageaccounts_context.xml @@ -1,5 +1,6 @@ - + - + @@ -29,19 +30,19 @@ \ No newline at end of file diff --git a/src/main/res/menu/publish_avatar.xml b/src/main/res/menu/publish_avatar.xml index 39478c0a4..72ceb2d17 100644 --- a/src/main/res/menu/publish_avatar.xml +++ b/src/main/res/menu/publish_avatar.xml @@ -1,8 +1,9 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/select_multiple.xml b/src/main/res/menu/select_multiple.xml index efd6e4d0a..51f05e21a 100644 --- a/src/main/res/menu/select_multiple.xml +++ b/src/main/res/menu/select_multiple.xml @@ -1,9 +1,10 @@ - + + app:showAsAction="always" /> diff --git a/src/main/res/menu/share_with.xml b/src/main/res/menu/share_with.xml index ff87edc1a..5c57eedd8 100644 --- a/src/main/res/menu/share_with.xml +++ b/src/main/res/menu/share_with.xml @@ -1,11 +1,12 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/showlocation.xml b/src/main/res/menu/showlocation.xml index 3eb0647c9..c7049a5b0 100644 --- a/src/main/res/menu/showlocation.xml +++ b/src/main/res/menu/showlocation.xml @@ -1,8 +1,9 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/start_conversation.xml b/src/main/res/menu/start_conversation.xml index ea7572b41..79cce252c 100644 --- a/src/main/res/menu/start_conversation.xml +++ b/src/main/res/menu/start_conversation.xml @@ -1,21 +1,22 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/trust_keys.xml b/src/main/res/menu/trust_keys.xml index 7c63bd7fe..e40295eea 100644 --- a/src/main/res/menu/trust_keys.xml +++ b/src/main/res/menu/trust_keys.xml @@ -1,9 +1,10 @@ - + \ No newline at end of file diff --git a/src/main/res/menu/verify_otr.xml b/src/main/res/menu/verify_otr.xml index 7dadffce8..b6dd79610 100644 --- a/src/main/res/menu/verify_otr.xml +++ b/src/main/res/menu/verify_otr.xml @@ -1,14 +1,15 @@ - + + app:showAsAction="never" /> \ No newline at end of file diff --git a/src/main/res/values-v21/themes.xml b/src/main/res/values-v21/themes.xml index 0c0b3cefb..8d0de873f 100644 --- a/src/main/res/values-v21/themes.xml +++ b/src/main/res/values-v21/themes.xml @@ -1,11 +1,11 @@ - - \ No newline at end of file diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml index 83598c041..17c1c5607 100644 --- a/src/main/res/values/attrs.xml +++ b/src/main/res/values/attrs.xml @@ -53,5 +53,5 @@ - + \ No newline at end of file -- cgit v1.2.3 From e3fa33a1bfca1160ae0818be8227771e125cf766 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 20:44:45 +0100 Subject: reference support actionbar in all activities --- .../pixart/messenger/ui/ChooseContactActivity.java | 4 +-- .../messenger/ui/ConferenceDetailsActivity.java | 32 ++++++++++++---------- .../messenger/ui/ContactDetailsActivity.java | 32 ++++++++++++---------- .../pixart/messenger/ui/EditAccountActivity.java | 8 +++--- .../de/pixart/messenger/ui/LocationActivity.java | 3 +- .../pixart/messenger/ui/ManageAccountActivity.java | 4 +-- .../pixart/messenger/ui/ShareLocationActivity.java | 6 ++-- .../messenger/ui/ShareViaAccountActivity.java | 4 +-- .../de/pixart/messenger/ui/ShareWithActivity.java | 6 ++-- .../pixart/messenger/ui/ShowLocationActivity.java | 10 +++---- .../de/pixart/messenger/ui/TrustKeysActivity.java | 10 +++---- .../de/pixart/messenger/ui/VerifyOTRActivity.java | 4 +-- .../de/pixart/messenger/ui/WelcomeActivity.java | 8 +++--- .../java/de/pixart/messenger/ui/XmppActivity.java | 4 +-- 14 files changed, 70 insertions(+), 65 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java b/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java index 9d51a1c1d..011c8b051 100644 --- a/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ChooseContactActivity.java @@ -1,10 +1,10 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.StringRes; +import android.support.v7.app.ActionBar; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; @@ -140,7 +140,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { Intent intent = getIntent(); @StringRes int res = intent != null ? intent.getIntExtra(EXTRA_TITLE_RES_ID, R.string.title_activity_choose_contact) : R.string.title_activity_choose_contact; - ActionBar bar = getActionBar(); + ActionBar bar = getSupportActionBar(); if (bar != null) { try { bar.setTitle(res); diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index 21442bcd1..9efd4b22a 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -1,6 +1,5 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.app.AlertDialog; import android.app.PendingIntent; import android.content.Context; @@ -9,6 +8,7 @@ import android.content.Intent; import android.content.IntentSender.SendIntentException; import android.graphics.PorterDuff; import android.os.Bundle; +import android.support.v7.app.ActionBar; import android.util.Log; import android.view.ContextMenu; import android.view.LayoutInflater; @@ -294,9 +294,9 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers mDestroyButton.setOnClickListener(destroyListener); mDestroyButton.getBackground().setColorFilter(getWarningButtonColor(), PorterDuff.Mode.MULTIPLY); mConferenceType = findViewById(R.id.muc_conference_type); - if (getActionBar() != null) { - getActionBar().setHomeButtonEnabled(true); - getActionBar().setDisplayHomeAsUpEnabled(true); + if (getSupportActionBar() != null) { + getSupportActionBar().setHomeButtonEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } mEditNickButton.setOnClickListener(new OnClickListener() { @@ -600,17 +600,19 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } else { account = mConversation.getAccount().getJid().toBareJid().toString(); } - if (getActionBar() != null) { - final ActionBar ab = getActionBar(); - ab.setCustomView(R.layout.ab_title); - ab.setDisplayShowCustomEnabled(true); - TextView abtitle = findViewById(android.R.id.text1); - TextView absubtitle = findViewById(android.R.id.text2); - abtitle.setText(mConversation.getName()); - abtitle.setSelected(true); - abtitle.setClickable(false); - absubtitle.setVisibility(View.GONE); - absubtitle.setClickable(false); + if (getSupportActionBar() != null) { + final ActionBar ab = getSupportActionBar(); + if (ab != null) { + ab.setCustomView(R.layout.ab_title); + ab.setDisplayShowCustomEnabled(true); + TextView abtitle = findViewById(android.R.id.text1); + TextView absubtitle = findViewById(android.R.id.text2); + abtitle.setText(mConversation.getName()); + abtitle.setSelected(true); + abtitle.setClickable(false); + absubtitle.setVisibility(View.GONE); + absubtitle.setClickable(false); + } } ConferenceName.setText(mConversation.getName()); mAccountJid.setText(getString(R.string.using_account, account)); diff --git a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java index ca435d6a5..a9ede6729 100644 --- a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java @@ -1,6 +1,5 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; @@ -14,6 +13,7 @@ import android.provider.ContactsContract.CommonDataKinds; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents; import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -288,9 +288,9 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp keysWrapper = findViewById(R.id.keys_wrapper); tags = findViewById(R.id.tags); mShowInactiveDevicesButton = findViewById(R.id.show_inactive_devices); - if (getActionBar() != null) { - getActionBar().setHomeButtonEnabled(true); - getActionBar().setDisplayHomeAsUpEnabled(true); + if (getSupportActionBar() != null) { + getSupportActionBar().setHomeButtonEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } mShowInactiveDevicesButton.setOnClickListener(new OnClickListener() { @Override @@ -409,17 +409,19 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp mNotifyStatusButton.setImageResource(R.drawable.ic_notifications_grey600_24dp); mNotifyStatusText.setText(R.string.notify_on_all_messages); } - if (getActionBar() != null) { - final ActionBar ab = getActionBar(); - ab.setCustomView(R.layout.ab_title); - ab.setDisplayShowCustomEnabled(true); - TextView abtitle = findViewById(android.R.id.text1); - TextView absubtitle = findViewById(android.R.id.text2); - abtitle.setText(contact.getDisplayName()); - abtitle.setSelected(true); - abtitle.setClickable(false); - absubtitle.setVisibility(View.GONE); - absubtitle.setClickable(false); + if (getSupportActionBar() != null) { + final ActionBar ab = getSupportActionBar(); + if (ab != null) { + ab.setCustomView(R.layout.ab_title); + ab.setDisplayShowCustomEnabled(true); + TextView abtitle = findViewById(android.R.id.text1); + TextView absubtitle = findViewById(android.R.id.text2); + abtitle.setText(contact.getDisplayName()); + abtitle.setSelected(true); + abtitle.setClickable(false); + absubtitle.setVisibility(View.GONE); + absubtitle.setClickable(false); + } } invalidateOptionsMenu(); diff --git a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java index c94ceb44b..7c95946d8 100644 --- a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java @@ -1,6 +1,5 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.PendingIntent; @@ -15,6 +14,7 @@ import android.provider.Settings; import android.security.KeyChain; import android.security.KeyChainAliasCallback; import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; @@ -688,12 +688,12 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.messageFingerprint = getIntent().getStringExtra("fingerprint"); if (!mInitMode) { this.mRegisterNew.setVisibility(View.GONE); - if (getActionBar() != null) { - getActionBar().setTitle(getString(R.string.account_details)); + if (getSupportActionBar() != null) { + getSupportActionBar().setTitle(getString(R.string.account_details)); } } else { this.mAvatar.setVisibility(View.GONE); - ActionBar ab = getActionBar(); + ActionBar ab = getSupportActionBar(); if (ab != null) { if (init && Config.MAGIC_CREATE_DOMAIN == null) { ab.setDisplayShowHomeEnabled(false); diff --git a/src/main/java/de/pixart/messenger/ui/LocationActivity.java b/src/main/java/de/pixart/messenger/ui/LocationActivity.java index 6389fa7d4..04bd03584 100644 --- a/src/main/java/de/pixart/messenger/ui/LocationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/LocationActivity.java @@ -6,10 +6,11 @@ import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import de.pixart.messenger.Config; -public abstract class LocationActivity extends Activity implements LocationListener { +public abstract class LocationActivity extends AppCompatActivity implements LocationListener { private LocationManager locationManager; @Override diff --git a/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java b/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java index 2d0d98ce7..bb65b64e0 100644 --- a/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java @@ -1,12 +1,12 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Bundle; import android.security.KeyChain; import android.security.KeyChainAliasCallback; +import android.support.v7.app.ActionBar; import android.util.Pair; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -60,7 +60,7 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda accountList.clear(); accountList.addAll(xmppConnectionService.getAccounts()); } - ActionBar actionBar = getActionBar(); + ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeButtonEnabled(this.accountList.size() > 0); actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0); diff --git a/src/main/java/de/pixart/messenger/ui/ShareLocationActivity.java b/src/main/java/de/pixart/messenger/ui/ShareLocationActivity.java index 5a1122c7a..510135c5a 100644 --- a/src/main/java/de/pixart/messenger/ui/ShareLocationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShareLocationActivity.java @@ -41,9 +41,9 @@ public class ShareLocationActivity extends LocationActivity implements LocationL protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_share_locaction); - if (getActionBar() != null) { - getActionBar().setHomeButtonEnabled(true); - getActionBar().setDisplayHomeAsUpEnabled(true); + if (getSupportActionBar() != null) { + getSupportActionBar().setHomeButtonEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); diff --git a/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java b/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java index 41d22f2a5..e7ee427db 100644 --- a/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShareViaAccountActivity.java @@ -1,7 +1,7 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.os.Bundle; +import android.support.v7.app.ActionBar; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; @@ -31,7 +31,7 @@ public class ShareViaAccountActivity extends XmppActivity { accountList.clear(); accountList.addAll(xmppConnectionService.getAccounts()); } - ActionBar actionBar = getActionBar(); + ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeButtonEnabled(this.accountList.size() > 0); actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0); diff --git a/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java b/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java index 15e7b7267..64671c1f2 100644 --- a/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java @@ -170,9 +170,9 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer super.onCreate(savedInstanceState); boolean useBundledEmoji = getPreferences().getBoolean(USE_BUNDLED_EMOJIS, getResources().getBoolean(R.bool.use_bundled_emoji)); new EmojiService(this).init(useBundledEmoji); - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(false); - getActionBar().setHomeButtonEnabled(false); + if (getSupportActionBar() != null) { + getSupportActionBar().setDisplayHomeAsUpEnabled(false); + getSupportActionBar().setHomeButtonEnabled(false); } setContentView(R.layout.share_with); diff --git a/src/main/java/de/pixart/messenger/ui/ShowLocationActivity.java b/src/main/java/de/pixart/messenger/ui/ShowLocationActivity.java index 2f844e107..2661589d8 100644 --- a/src/main/java/de/pixart/messenger/ui/ShowLocationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShowLocationActivity.java @@ -1,6 +1,5 @@ package de.pixart.messenger.ui; -import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -12,6 +11,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; @@ -30,7 +30,7 @@ import de.pixart.messenger.services.EmojiService; import static de.pixart.messenger.ui.SettingsActivity.USE_BUNDLED_EMOJIS; -public class ShowLocationActivity extends Activity { +public class ShowLocationActivity extends AppCompatActivity { private Location location; private String mLocationName; @@ -39,9 +39,9 @@ public class ShowLocationActivity extends Activity { super.onCreate(savedInstanceState); boolean useBundledEmoji = getPreferences().getBoolean(USE_BUNDLED_EMOJIS, getResources().getBoolean(R.bool.use_bundled_emoji)); new EmojiService(this).init(useBundledEmoji); - if (getActionBar() != null) { - getActionBar().setHomeButtonEnabled(true); - getActionBar().setDisplayHomeAsUpEnabled(true); + if (getSupportActionBar() != null) { + getSupportActionBar().setHomeButtonEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } setContentView(R.layout.activity_show_locaction); diff --git a/src/main/java/de/pixart/messenger/ui/TrustKeysActivity.java b/src/main/java/de/pixart/messenger/ui/TrustKeysActivity.java index 853b1b2a4..48a9125ce 100644 --- a/src/main/java/de/pixart/messenger/ui/TrustKeysActivity.java +++ b/src/main/java/de/pixart/messenger/ui/TrustKeysActivity.java @@ -1,8 +1,8 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.content.Intent; import android.os.Bundle; +import android.support.v7.app.ActionBar; import android.util.Log; import android.view.Gravity; import android.view.Menu; @@ -109,9 +109,9 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat mSaveButton.setOnClickListener(mSaveButtonListener); - if (getActionBar() != null) { - getActionBar().setHomeButtonEnabled(true); - getActionBar().setDisplayHomeAsUpEnabled(true); + if (getSupportActionBar() != null) { + getSupportActionBar().setHomeButtonEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } if (savedInstanceState != null) { @@ -135,7 +135,7 @@ public class TrustKeysActivity extends OmemoActivity implements OnKeyStatusUpdat private void showCameraToast() { mUseCameraHintToast = Toast.makeText(this,R.string.use_camera_icon_to_scan_barcode,Toast.LENGTH_LONG); - ActionBar actionBar = getActionBar(); + ActionBar actionBar = getSupportActionBar(); mUseCameraHintToast.setGravity(Gravity.TOP | Gravity.END, 0 ,actionBar == null ? 0 : actionBar.getHeight()); mUseCameraHintToast.show(); } diff --git a/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java b/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java index a64f39a03..34d6d5970 100644 --- a/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java +++ b/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java @@ -1,10 +1,10 @@ package de.pixart.messenger.ui; -import android.app.ActionBar; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.support.v7.app.ActionBar; import android.view.Menu; import android.view.View; import android.widget.Button; @@ -251,7 +251,7 @@ public class VerifyOTRActivity extends XmppActivity implements XmppConnectionSer protected void updateView() { if (this.mConversation != null && this.mConversation.hasValidOtrSession()) { - final ActionBar actionBar = getActionBar(); + final ActionBar actionBar = getSupportActionBar(); this.mVerificationExplain.setText(R.string.no_otr_session_found); invalidateOptionsMenu(); switch (this.mode) { diff --git a/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java b/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java index 0e84d1d64..1fcfb307c 100644 --- a/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java +++ b/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java @@ -1,8 +1,6 @@ package de.pixart.messenger.ui; import android.Manifest; -import android.app.ActionBar; -import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; @@ -13,6 +11,8 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.os.Build; import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -79,7 +79,7 @@ public class WelcomeActivity extends XmppActivity { } super.onCreate(savedInstanceState); setContentView(R.layout.welcome); - final ActionBar ab = getActionBar(); + final ActionBar ab = getSupportActionBar(); if (ab != null) { ab.setDisplayShowHomeEnabled(false); ab.setDisplayHomeAsUpEnabled(false); @@ -336,7 +336,7 @@ public class WelcomeActivity extends XmppActivity { } } - public static void launch(Activity activity) { + public static void launch(AppCompatActivity activity) { Intent intent = new Intent(activity, WelcomeActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION); activity.startActivity(intent); diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java index 3881b3569..f5fc20265 100644 --- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java +++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java @@ -3,7 +3,6 @@ package de.pixart.messenger.ui; import android.Manifest; import android.annotation.SuppressLint; import android.annotation.TargetApi; -import android.app.ActionBar; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.PendingIntent; @@ -38,6 +37,7 @@ import android.os.SystemClock; import android.preference.PreferenceManager; import android.provider.Settings; import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.text.InputType; import android.util.DisplayMetrics; @@ -437,7 +437,7 @@ public abstract class XmppActivity extends AppCompatActivity { setTheme(this.mTheme); this.mUsingEnterKey = usingEnterKey(); mUseSubject = getPreferences().getBoolean("use_subject", getResources().getBoolean(R.bool.use_subject)); - final ActionBar ab = getActionBar(); + final ActionBar ab = getSupportActionBar(); if (ab != null) { ab.setDisplayHomeAsUpEnabled(true); } -- cgit v1.2.3 From 4ad338929d4d378082fc5e02a2de07a17a1a023b Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 20:46:21 +0100 Subject: switch about activity to appcompat --- src/main/java/de/pixart/messenger/ui/AboutActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/AboutActivity.java b/src/main/java/de/pixart/messenger/ui/AboutActivity.java index b3b296c42..e00707d96 100644 --- a/src/main/java/de/pixart/messenger/ui/AboutActivity.java +++ b/src/main/java/de/pixart/messenger/ui/AboutActivity.java @@ -1,11 +1,11 @@ package de.pixart.messenger.ui; -import android.app.Activity; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import de.pixart.messenger.R; -public class AboutActivity extends Activity { +public class AboutActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { -- cgit v1.2.3 From 1a5c959f8099395e6c1b8756dc691bf2156c1243 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 21:25:37 +0100 Subject: migrated alert dialogs to app compat --- src/main/java/de/pixart/messenger/ui/BlockContactDialog.java | 2 +- src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/ConversationActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 2 +- src/main/java/de/pixart/messenger/ui/EditAccountActivity.java | 4 ++-- src/main/java/de/pixart/messenger/ui/EnterJidDialog.java | 2 +- src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/OmemoActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/SettingsActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/StartConversationActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/UpdaterActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/WelcomeActivity.java | 2 +- src/main/java/de/pixart/messenger/ui/XmppActivity.java | 4 ++-- src/main/java/de/pixart/messenger/utils/ExceptionHelper.java | 2 +- src/main/java/de/pixart/messenger/utils/zxing/IntentIntegrator.java | 2 +- 17 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java b/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java index 5a911298f..0775d2cf7 100644 --- a/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java +++ b/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.text.SpannableString; diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index 9efd4b22a..fc45c58a5 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; diff --git a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java index a9ede6729..8827d05ec 100644 --- a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index aabb8c1fe..aeebcb44a 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -2,7 +2,7 @@ package de.pixart.messenger.ui; import android.annotation.SuppressLint; import android.support.v7.app.ActionBar; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.FragmentTransaction; import android.app.PendingIntent; import android.content.ActivityNotFoundException; diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index e73f30211..e4c648e25 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -1,7 +1,7 @@ package de.pixart.messenger.ui; import android.app.Activity; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.Fragment; import android.app.PendingIntent; import android.content.ActivityNotFoundException; diff --git a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java index 7c95946d8..41d48af99 100644 --- a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -1280,7 +1280,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat if (mFetchingMamPrefsToast != null) { mFetchingMamPrefsToast.cancel(); } - AlertDialog.Builder builder = new Builder(EditAccountActivity.this); + Builder builder = new Builder(EditAccountActivity.this); builder.setTitle(R.string.server_side_mam_prefs); String defaultAttr = prefs.getAttribute("default"); final List defaults = Arrays.asList("never", "roster", "always"); diff --git a/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java b/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java index 4fabd3e89..d43c34ee4 100644 --- a/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java +++ b/src/main/java/de/pixart/messenger/ui/EnterJidDialog.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.view.LayoutInflater; diff --git a/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java b/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java index bb65b64e0..b98efde3b 100644 --- a/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ManageAccountActivity.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Bundle; diff --git a/src/main/java/de/pixart/messenger/ui/OmemoActivity.java b/src/main/java/de/pixart/messenger/ui/OmemoActivity.java index f45134e34..a1a156fb9 100644 --- a/src/main/java/de/pixart/messenger/ui/OmemoActivity.java +++ b/src/main/java/de/pixart/messenger/ui/OmemoActivity.java @@ -1,7 +1,7 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; diff --git a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java index 988f4be1e..b8dac78c0 100644 --- a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.FragmentManager; import android.content.Context; import android.content.DialogInterface; diff --git a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java index 7a11a0e08..bc061b069 100644 --- a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java @@ -2,7 +2,7 @@ package de.pixart.messenger.ui; import android.Manifest; import android.annotation.SuppressLint; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.Dialog; import android.app.PendingIntent; import android.content.ActivityNotFoundException; diff --git a/src/main/java/de/pixart/messenger/ui/UpdaterActivity.java b/src/main/java/de/pixart/messenger/ui/UpdaterActivity.java index 8a23741ef..f62454510 100644 --- a/src/main/java/de/pixart/messenger/ui/UpdaterActivity.java +++ b/src/main/java/de/pixart/messenger/ui/UpdaterActivity.java @@ -1,7 +1,7 @@ package de.pixart.messenger.ui; import android.Manifest; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; diff --git a/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java b/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java index 34d6d5970..ea9bcc5a8 100644 --- a/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java +++ b/src/main/java/de/pixart/messenger/ui/VerifyOTRActivity.java @@ -1,6 +1,6 @@ package de.pixart.messenger.ui; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; diff --git a/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java b/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java index 1fcfb307c..0c02183c6 100644 --- a/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java +++ b/src/main/java/de/pixart/messenger/ui/WelcomeActivity.java @@ -1,7 +1,7 @@ package de.pixart.messenger.ui; import android.Manifest; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java index f5fc20265..42e230cbc 100644 --- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java +++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java @@ -3,7 +3,7 @@ package de.pixart.messenger.ui; import android.Manifest; import android.annotation.SuppressLint; import android.annotation.TargetApi; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -276,7 +276,7 @@ public abstract class XmppActivity extends AppCompatActivity { } public void showInstallPgpDialog() { - Builder builder = new AlertDialog.Builder(this); + AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.openkeychain_required)); builder.setIconAttribute(android.R.attr.alertDialogIcon); builder.setMessage(getText(R.string.openkeychain_required_long)); diff --git a/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java b/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java index efec5098b..9aacef24f 100644 --- a/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java +++ b/src/main/java/de/pixart/messenger/utils/ExceptionHelper.java @@ -1,6 +1,6 @@ package de.pixart.messenger.utils; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; diff --git a/src/main/java/de/pixart/messenger/utils/zxing/IntentIntegrator.java b/src/main/java/de/pixart/messenger/utils/zxing/IntentIntegrator.java index dc5ba8ace..ebb92ae4c 100644 --- a/src/main/java/de/pixart/messenger/utils/zxing/IntentIntegrator.java +++ b/src/main/java/de/pixart/messenger/utils/zxing/IntentIntegrator.java @@ -17,7 +17,7 @@ package de.pixart.messenger.utils.zxing; import android.app.Activity; -import android.app.AlertDialog; +import android.support.v7.app.AlertDialog; import android.app.Fragment; import android.content.ActivityNotFoundException; import android.content.DialogInterface; -- cgit v1.2.3 From 744d4baaaf4291c258d171aa35fe048125c1e1e0 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 21:33:55 +0100 Subject: migrating more menus to appcompat --- src/main/res/menu/choose_contact.xml | 2 +- src/main/res/menu/start_conversation.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/res/menu/choose_contact.xml b/src/main/res/menu/choose_contact.xml index fb52a3a1a..b0f907ffd 100644 --- a/src/main/res/menu/choose_contact.xml +++ b/src/main/res/menu/choose_contact.xml @@ -4,7 +4,7 @@ diff --git a/src/main/res/menu/start_conversation.xml b/src/main/res/menu/start_conversation.xml index 79cce252c..b7e1f2822 100644 --- a/src/main/res/menu/start_conversation.xml +++ b/src/main/res/menu/start_conversation.xml @@ -4,7 +4,7 @@ -- cgit v1.2.3 From fba6858a04dbf27f344fa5f53bb9f4b747c4217b Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 21:55:08 +0100 Subject: use appcompat in more activities --- src/main/AndroidManifest.xml | 8 ++++---- src/main/java/de/pixart/messenger/ui/RecordingActivity.java | 3 ++- .../de/pixart/messenger/ui/ShowFullscreenMessageActivity.java | 4 ++-- src/main/java/de/pixart/messenger/ui/UriHandlerActivity.java | 4 ++-- src/main/res/layout/activity_fullscreen_message.xml | 5 ----- src/main/res/values/themes.xml | 4 ++++ 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index b05b31976..be3311ebf 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -230,7 +230,7 @@ + android:name="de.duenndns.ssl.MemorizingActivity" /> + + - - - 18sp + + \ No newline at end of file -- cgit v1.2.3 From 43fbf3c5b517c749c821a8a1e501a55d40519984 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 9 Mar 2018 21:55:37 +0100 Subject: remove pre api 21 theme --- .../res/values-v21/themes.xml | 7 --- libs/MemorizingTrustManager/res/values/themes.xml | 7 --- .../src/de/duenndns/ssl/MemorizingActivity.java | 8 +-- src/main/res/values-v21/themes.xml | 65 ---------------------- src/main/res/values/themes.xml | 45 +++++++-------- 5 files changed, 23 insertions(+), 109 deletions(-) delete mode 100644 libs/MemorizingTrustManager/res/values-v21/themes.xml delete mode 100644 libs/MemorizingTrustManager/res/values/themes.xml delete mode 100644 src/main/res/values-v21/themes.xml diff --git a/libs/MemorizingTrustManager/res/values-v21/themes.xml b/libs/MemorizingTrustManager/res/values-v21/themes.xml deleted file mode 100644 index c2bd573f0..000000000 --- a/libs/MemorizingTrustManager/res/values-v21/themes.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml index ce8506c89..b2fb36418 100644 --- a/src/main/res/values/themes.xml +++ b/src/main/res/values/themes.xml @@ -1,19 +1,30 @@ - - - - - - - - - \ No newline at end of file -- cgit v1.2.3 From ffdf8bd198cfb9a6db1d03b202f0aa3f6b527eb8 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 14 Mar 2018 20:43:02 +0100 Subject: code cleanup --- src/main/res/drawable-hdpi/ic_action_download.png | Bin 244 -> 0 bytes .../drawable-hdpi/tab_selected_conversations.9.png | Bin 87 -> 0 bytes .../tab_selected_focused_conversations.9.png | Bin 88 -> 0 bytes .../tab_selected_pressed_conversations.9.png | Bin 92 -> 0 bytes .../tab_unselected_focused_conversations.9.png | Bin 84 -> 0 bytes .../tab_unselected_pressed_conversations.9.png | Bin 88 -> 0 bytes src/main/res/drawable-mdpi/ic_action_download.png | Bin 197 -> 0 bytes .../drawable-mdpi/tab_selected_conversations.9.png | Bin 85 -> 0 bytes .../tab_selected_focused_conversations.9.png | Bin 87 -> 0 bytes .../tab_selected_pressed_conversations.9.png | Bin 91 -> 0 bytes .../tab_unselected_focused_conversations.9.png | Bin 84 -> 0 bytes .../tab_unselected_pressed_conversations.9.png | Bin 88 -> 0 bytes src/main/res/drawable-xhdpi/ic_action_download.png | Bin 307 -> 0 bytes .../tab_selected_conversations.9.png | Bin 88 -> 0 bytes .../tab_selected_focused_conversations.9.png | Bin 89 -> 0 bytes .../tab_selected_pressed_conversations.9.png | Bin 94 -> 0 bytes .../tab_unselected_focused_conversations.9.png | Bin 85 -> 0 bytes .../tab_unselected_pressed_conversations.9.png | Bin 89 -> 0 bytes .../res/drawable-xxhdpi/ic_action_download.png | Bin 387 -> 0 bytes .../tab_selected_conversations.9.png | Bin 92 -> 0 bytes .../tab_selected_focused_conversations.9.png | Bin 93 -> 0 bytes .../tab_selected_pressed_conversations.9.png | Bin 97 -> 0 bytes .../tab_unselected_focused_conversations.9.png | Bin 86 -> 0 bytes .../tab_unselected_pressed_conversations.9.png | Bin 90 -> 0 bytes src/main/res/drawable/actionbar_tab_indicator.xml | 21 ----------------- src/main/res/layout/show_location_infowindow.xml | 26 --------------------- src/main/res/layout/tool_bar.xml | 8 ------- src/main/res/values-v21/dimens.xml | 2 +- src/main/res/values/dimens.xml | 1 - src/main/res/values/strings.xml | 3 --- 30 files changed, 1 insertion(+), 60 deletions(-) delete mode 100644 src/main/res/drawable-hdpi/ic_action_download.png delete mode 100644 src/main/res/drawable-hdpi/tab_selected_conversations.9.png delete mode 100644 src/main/res/drawable-hdpi/tab_selected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-hdpi/tab_selected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-hdpi/tab_unselected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-hdpi/tab_unselected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_download.png delete mode 100644 src/main/res/drawable-mdpi/tab_selected_conversations.9.png delete mode 100644 src/main/res/drawable-mdpi/tab_selected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-mdpi/tab_selected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-mdpi/tab_unselected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-mdpi/tab_unselected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_download.png delete mode 100644 src/main/res/drawable-xhdpi/tab_selected_conversations.9.png delete mode 100644 src/main/res/drawable-xhdpi/tab_selected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-xhdpi/tab_selected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-xhdpi/tab_unselected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-xhdpi/tab_unselected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_download.png delete mode 100644 src/main/res/drawable-xxhdpi/tab_selected_conversations.9.png delete mode 100644 src/main/res/drawable-xxhdpi/tab_selected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-xxhdpi/tab_selected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable-xxhdpi/tab_unselected_focused_conversations.9.png delete mode 100644 src/main/res/drawable-xxhdpi/tab_unselected_pressed_conversations.9.png delete mode 100644 src/main/res/drawable/actionbar_tab_indicator.xml delete mode 100644 src/main/res/layout/show_location_infowindow.xml delete mode 100644 src/main/res/layout/tool_bar.xml diff --git a/src/main/res/drawable-hdpi/ic_action_download.png b/src/main/res/drawable-hdpi/ic_action_download.png deleted file mode 100644 index 596fd582c..000000000 Binary files a/src/main/res/drawable-hdpi/ic_action_download.png and /dev/null differ diff --git a/src/main/res/drawable-hdpi/tab_selected_conversations.9.png b/src/main/res/drawable-hdpi/tab_selected_conversations.9.png deleted file mode 100644 index 68b1dd750..000000000 Binary files a/src/main/res/drawable-hdpi/tab_selected_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-hdpi/tab_selected_focused_conversations.9.png b/src/main/res/drawable-hdpi/tab_selected_focused_conversations.9.png deleted file mode 100644 index 557452d31..000000000 Binary files a/src/main/res/drawable-hdpi/tab_selected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-hdpi/tab_selected_pressed_conversations.9.png b/src/main/res/drawable-hdpi/tab_selected_pressed_conversations.9.png deleted file mode 100644 index e91a93fa1..000000000 Binary files a/src/main/res/drawable-hdpi/tab_selected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-hdpi/tab_unselected_focused_conversations.9.png b/src/main/res/drawable-hdpi/tab_unselected_focused_conversations.9.png deleted file mode 100644 index 3dbdb6156..000000000 Binary files a/src/main/res/drawable-hdpi/tab_unselected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-hdpi/tab_unselected_pressed_conversations.9.png b/src/main/res/drawable-hdpi/tab_unselected_pressed_conversations.9.png deleted file mode 100644 index c4a248118..000000000 Binary files a/src/main/res/drawable-hdpi/tab_unselected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/ic_action_download.png b/src/main/res/drawable-mdpi/ic_action_download.png deleted file mode 100644 index e2a58608f..000000000 Binary files a/src/main/res/drawable-mdpi/ic_action_download.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/tab_selected_conversations.9.png b/src/main/res/drawable-mdpi/tab_selected_conversations.9.png deleted file mode 100644 index e18c2e9c6..000000000 Binary files a/src/main/res/drawable-mdpi/tab_selected_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/tab_selected_focused_conversations.9.png b/src/main/res/drawable-mdpi/tab_selected_focused_conversations.9.png deleted file mode 100644 index 5ce9469df..000000000 Binary files a/src/main/res/drawable-mdpi/tab_selected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/tab_selected_pressed_conversations.9.png b/src/main/res/drawable-mdpi/tab_selected_pressed_conversations.9.png deleted file mode 100644 index 4bb9e6a64..000000000 Binary files a/src/main/res/drawable-mdpi/tab_selected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/tab_unselected_focused_conversations.9.png b/src/main/res/drawable-mdpi/tab_unselected_focused_conversations.9.png deleted file mode 100644 index 255fb97f0..000000000 Binary files a/src/main/res/drawable-mdpi/tab_unselected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/tab_unselected_pressed_conversations.9.png b/src/main/res/drawable-mdpi/tab_unselected_pressed_conversations.9.png deleted file mode 100644 index 8803ec053..000000000 Binary files a/src/main/res/drawable-mdpi/tab_unselected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/ic_action_download.png b/src/main/res/drawable-xhdpi/ic_action_download.png deleted file mode 100644 index a43f70428..000000000 Binary files a/src/main/res/drawable-xhdpi/ic_action_download.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/tab_selected_conversations.9.png b/src/main/res/drawable-xhdpi/tab_selected_conversations.9.png deleted file mode 100644 index 7de791d70..000000000 Binary files a/src/main/res/drawable-xhdpi/tab_selected_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/tab_selected_focused_conversations.9.png b/src/main/res/drawable-xhdpi/tab_selected_focused_conversations.9.png deleted file mode 100644 index b9ab85694..000000000 Binary files a/src/main/res/drawable-xhdpi/tab_selected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/tab_selected_pressed_conversations.9.png b/src/main/res/drawable-xhdpi/tab_selected_pressed_conversations.9.png deleted file mode 100644 index 2fe1ffada..000000000 Binary files a/src/main/res/drawable-xhdpi/tab_selected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/tab_unselected_focused_conversations.9.png b/src/main/res/drawable-xhdpi/tab_unselected_focused_conversations.9.png deleted file mode 100644 index 3d59b0d0d..000000000 Binary files a/src/main/res/drawable-xhdpi/tab_unselected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/tab_unselected_pressed_conversations.9.png b/src/main/res/drawable-xhdpi/tab_unselected_pressed_conversations.9.png deleted file mode 100644 index 2da35fe80..000000000 Binary files a/src/main/res/drawable-xhdpi/tab_unselected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/ic_action_download.png b/src/main/res/drawable-xxhdpi/ic_action_download.png deleted file mode 100644 index d01732ee9..000000000 Binary files a/src/main/res/drawable-xxhdpi/ic_action_download.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/tab_selected_conversations.9.png b/src/main/res/drawable-xxhdpi/tab_selected_conversations.9.png deleted file mode 100644 index 9f13a9c20..000000000 Binary files a/src/main/res/drawable-xxhdpi/tab_selected_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/tab_selected_focused_conversations.9.png b/src/main/res/drawable-xxhdpi/tab_selected_focused_conversations.9.png deleted file mode 100644 index 0b20a8af2..000000000 Binary files a/src/main/res/drawable-xxhdpi/tab_selected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/tab_selected_pressed_conversations.9.png b/src/main/res/drawable-xxhdpi/tab_selected_pressed_conversations.9.png deleted file mode 100644 index f6dab1b05..000000000 Binary files a/src/main/res/drawable-xxhdpi/tab_selected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/tab_unselected_focused_conversations.9.png b/src/main/res/drawable-xxhdpi/tab_unselected_focused_conversations.9.png deleted file mode 100644 index 31f944a83..000000000 Binary files a/src/main/res/drawable-xxhdpi/tab_unselected_focused_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/tab_unselected_pressed_conversations.9.png b/src/main/res/drawable-xxhdpi/tab_unselected_pressed_conversations.9.png deleted file mode 100644 index a54ea8506..000000000 Binary files a/src/main/res/drawable-xxhdpi/tab_unselected_pressed_conversations.9.png and /dev/null differ diff --git a/src/main/res/drawable/actionbar_tab_indicator.xml b/src/main/res/drawable/actionbar_tab_indicator.xml deleted file mode 100644 index ffd36f6fe..000000000 --- a/src/main/res/drawable/actionbar_tab_indicator.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/res/layout/show_location_infowindow.xml b/src/main/res/layout/show_location_infowindow.xml deleted file mode 100644 index d7c208610..000000000 --- a/src/main/res/layout/show_location_infowindow.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/res/layout/tool_bar.xml b/src/main/res/layout/tool_bar.xml deleted file mode 100644 index 990a00e03..000000000 --- a/src/main/res/layout/tool_bar.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - \ No newline at end of file diff --git a/src/main/res/values-v21/dimens.xml b/src/main/res/values-v21/dimens.xml index 4a3d93d1b..37ee278ce 100644 --- a/src/main/res/values-v21/dimens.xml +++ b/src/main/res/values-v21/dimens.xml @@ -1,5 +1,5 @@ - 63dp + 12dp \ No newline at end of file diff --git a/src/main/res/values/dimens.xml b/src/main/res/values/dimens.xml index cb103131a..cb92f725e 100644 --- a/src/main/res/values/dimens.xml +++ b/src/main/res/values/dimens.xml @@ -4,6 +4,5 @@ 8dp 16dp 8dp - 64dp 224dp diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 00d99e8bb..2d5d6fa20 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -428,8 +428,6 @@ No application found to display location Location Received location - Conversation closed - Left group chat Don’t trust system CAs All certificates must be manually approved Remove certificates @@ -460,7 +458,6 @@ Download failed: Server not found Download failed: File not found Download failed: Could not connect to host - undo Download failed: Could not write file Use white background Show sent messages as black text on a white background -- cgit v1.2.3 From 3f98390c86e161b7618741f025496a5038a47b4c Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 14 Mar 2018 20:46:18 +0100 Subject: removed unused resources --- .../java/de/pixart/messenger/ui/ConversationActivity.java | 6 +----- src/main/res/drawable-hdpi/ic_action_secure.png | Bin 263 -> 0 bytes src/main/res/drawable-mdpi/ic_action_secure.png | Bin 210 -> 0 bytes src/main/res/drawable-xhdpi/ic_action_secure.png | Bin 323 -> 0 bytes src/main/res/drawable-xxhdpi/ic_action_secure.png | Bin 445 -> 0 bytes 5 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 src/main/res/drawable-hdpi/ic_action_secure.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_secure.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_secure.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_secure.png diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index aeebcb44a..d39a6ff94 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -518,11 +518,7 @@ public class ConversationActivity extends XmppActivity menuArchiveChat.setVisible(false); } if (this.getSelectedConversation().getNextEncryption() != Message.ENCRYPTION_NONE) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - menuSecure.setIcon(R.drawable.ic_lock_white_24dp); - } else { - menuSecure.setIcon(R.drawable.ic_action_secure); - } + menuSecure.setIcon(R.drawable.ic_lock_white_24dp); } if (this.getSelectedConversation().getMode() == Conversation.MODE_MULTI) { menuAttach.setVisible(getSelectedConversation().getAccount().httpUploadAvailable() && getSelectedConversation().getMucOptions().participating()); diff --git a/src/main/res/drawable-hdpi/ic_action_secure.png b/src/main/res/drawable-hdpi/ic_action_secure.png deleted file mode 100644 index e066ba4dc..000000000 Binary files a/src/main/res/drawable-hdpi/ic_action_secure.png and /dev/null differ diff --git a/src/main/res/drawable-mdpi/ic_action_secure.png b/src/main/res/drawable-mdpi/ic_action_secure.png deleted file mode 100644 index fcb585f6f..000000000 Binary files a/src/main/res/drawable-mdpi/ic_action_secure.png and /dev/null differ diff --git a/src/main/res/drawable-xhdpi/ic_action_secure.png b/src/main/res/drawable-xhdpi/ic_action_secure.png deleted file mode 100644 index 05b6acc74..000000000 Binary files a/src/main/res/drawable-xhdpi/ic_action_secure.png and /dev/null differ diff --git a/src/main/res/drawable-xxhdpi/ic_action_secure.png b/src/main/res/drawable-xxhdpi/ic_action_secure.png deleted file mode 100644 index 76e1190d6..000000000 Binary files a/src/main/res/drawable-xxhdpi/ic_action_secure.png and /dev/null differ -- cgit v1.2.3 From 870fb48e1ecd23ffb642810afa3d459f7bdf0d0d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 14 Mar 2018 20:51:18 +0100 Subject: fixed crash when selecting participants --- .../messenger/ui/StartConversationActivity.java | 48 +++++++++------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java index 37baafe80..ae3e21b48 100644 --- a/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/StartConversationActivity.java @@ -2,7 +2,6 @@ package de.pixart.messenger.ui; import android.Manifest; import android.annotation.SuppressLint; -import android.support.v7.app.AlertDialog; import android.app.Dialog; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -14,6 +13,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; @@ -22,6 +22,7 @@ import android.support.v4.view.MenuItemCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.SpannableString; import android.text.Spanned; @@ -38,7 +39,6 @@ import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.CheckBox; @@ -77,12 +77,10 @@ import static de.pixart.messenger.ui.SettingsActivity.USE_BUNDLED_EMOJIS; public class StartConversationActivity extends XmppActivity implements OnRosterUpdate, OnUpdateBlocklist { - private final int REQUEST_SYNC_CONTACTS = 0x3b28cf; - private final int REQUEST_CREATE_CONFERENCE = 0x3b39da; + private final int REQUEST_SYNC_CONTACTS = 0x28cf; + private final int REQUEST_CREATE_CONFERENCE = 0x39da; public int conference_context_id; public int contact_context_id; - private ActionBar.Tab mContactsTab; - private ActionBar.Tab mConferencesTab; private ViewPager mViewPager; private ListPagerAdapter mListPagerAdapter; private List contacts = new ArrayList<>(); @@ -260,8 +258,8 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - mContactsTab = actionBar.newTab().setText(R.string.contacts).setTabListener(mTabListener); - mConferencesTab = actionBar.newTab().setText(R.string.conferences).setTabListener(mTabListener); + ActionBar.Tab mContactsTab = actionBar.newTab().setText(R.string.contacts).setTabListener(mTabListener); + ActionBar.Tab mConferencesTab = actionBar.newTab().setText(R.string.conferences).setTabListener(mTabListener); actionBar.addTab(mContactsTab); actionBar.addTab(mConferencesTab); @@ -749,7 +747,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } @Override - public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { if (grantResults.length > 0) if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (requestCode == REQUEST_SYNC_CONTACTS && xmppConnectionServiceBound) { @@ -977,7 +975,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } @Override - public void onViewCreated(final View view, final Bundle savedInstanceState) { + public void onViewCreated(@NonNull final View view, final Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); registerForContextMenu(getListView()); getListView().setFastScrollEnabled(true); @@ -988,6 +986,9 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU final ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); final StartConversationActivity activity = (StartConversationActivity) getActivity(); + if (activity == null) { + return; + } activity.getMenuInflater().inflate(mResContextMenu, menu); final AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; if (mResContextMenu == R.menu.conference_context) { @@ -1016,6 +1017,9 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU @Override public boolean onContextItemSelected(final MenuItem item) { StartConversationActivity activity = (StartConversationActivity) getActivity(); + if (activity == null) { + return true; + } switch (item.getItemId()) { case R.id.context_start_conversation: activity.openConversationForContact(); @@ -1058,7 +1062,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } @Override - public void destroyItem(ViewGroup container, int position, Object object) { + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { assert (0 <= position && position < fragments.length); FragmentTransaction trans = fragmentManager.beginTransaction(); trans.remove(fragments[position]); @@ -1067,7 +1071,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } @Override - public Fragment instantiateItem(ViewGroup container, int position) { + public Fragment instantiateItem(@NonNull ViewGroup container, int position) { Fragment fragment = getItem(position); FragmentTransaction trans = fragmentManager.beginTransaction(); trans.add(container.getId(), fragment, "fragment:" + position); @@ -1081,7 +1085,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } @Override - public boolean isViewFromObject(View view, Object fragment) { + public boolean isViewFromObject(@NonNull View view, @NonNull Object fragment) { return ((Fragment) fragment).getView() == view; } @@ -1092,26 +1096,12 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU if (position == 1) { listFragment.setListAdapter(mConferenceAdapter); listFragment.setContextMenu(R.menu.conference_context); - listFragment.setOnListItemClickListener(new OnItemClickListener() { - - @Override - public void onItemClick(AdapterView arg0, View arg1, - int position, long arg3) { - openConversationForBookmark(position); - } - }); + listFragment.setOnListItemClickListener((arg0, arg1, p, arg3) -> openConversationForBookmark(p)); } else { listFragment.setListAdapter(mContactsAdapter); listFragment.setContextMenu(R.menu.contact_context); - listFragment.setOnListItemClickListener(new OnItemClickListener() { - - @Override - public void onItemClick(AdapterView arg0, View arg1, - int position, long arg3) { - openConversationForContact(position); - } - }); + listFragment.setOnListItemClickListener((arg0, arg1, p, arg3) -> openConversationForContact(p)); } fragments[position] = listFragment; } -- cgit v1.2.3 From 1bfaacc66fd3ba1640a5d09a9b27a47df89bc99d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 14 Mar 2018 21:15:28 +0100 Subject: do not use pop up menus for encryption and attachment selection --- .../pixart/messenger/ui/ConversationActivity.java | 440 +++++++++------------ .../java/de/pixart/messenger/utils/UIHelper.java | 15 - src/main/res/menu/attachment_choices.xml | 34 -- src/main/res/menu/conversations.xml | 48 ++- src/main/res/menu/encryption_choices.xml | 19 - 5 files changed, 222 insertions(+), 334 deletions(-) delete mode 100644 src/main/res/menu/attachment_choices.xml delete mode 100644 src/main/res/menu/encryption_choices.xml diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index d39a6ff94..3d24cf4a1 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -1,8 +1,6 @@ package de.pixart.messenger.ui; import android.annotation.SuppressLint; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AlertDialog; import android.app.FragmentTransaction; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -18,16 +16,17 @@ import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Typeface; -import android.support.media.ExifInterface; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.os.Handler; import android.preference.PreferenceManager; import android.provider.MediaStore; import android.provider.Settings; +import android.support.media.ExifInterface; import android.support.v4.widget.SlidingPaneLayout; import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; import android.util.Log; import android.util.Pair; import android.view.Gravity; @@ -350,12 +349,9 @@ public class ConversationActivity extends XmppActivity @Override public void switchToConversation(Conversation conversation) { setSelectedConversation(conversation); - runOnUiThread(new Runnable() { - @Override - public void run() { - ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation()); - openConversation(); - } + runOnUiThread(() -> { + ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation()); + openConversation(); }); } @@ -481,6 +477,8 @@ public class ConversationActivity extends XmppActivity final MenuItem menuClearHistory = menu.findItem(R.id.action_clear_history); final MenuItem menuAdd = menu.findItem(R.id.action_add); final MenuItem menuInviteContact = menu.findItem(R.id.action_invite); + final MenuItem menuAttachSoundRecorder = menu.findItem(R.id.attach_record_voice); + final MenuItem menuAttachLocation = menu.findItem(R.id.attach_location); final MenuItem menuUpdater = menu.findItem(R.id.action_check_updates); final MenuItem menuInviteUser = menu.findItem(R.id.action_invite_user); final MenuItem menuSearchHistory = menu.findItem(R.id.action_search_history); @@ -498,6 +496,8 @@ public class ConversationActivity extends XmppActivity menuSecure.setVisible(false); menuInviteContact.setVisible(false); menuAttach.setVisible(false); + menuAttachLocation.setVisible(false); + menuAttachSoundRecorder.setVisible(false); menuClearHistory.setVisible(false); menuSearchHistory.setVisible(false); if (xmppConnectionService.installedFromFDroid()) { @@ -528,133 +528,119 @@ public class ConversationActivity extends XmppActivity menuSecure.setVisible(Config.multipleEncryptionChoices()); menuInviteContact.setVisible(xmppConnectionService != null && xmppConnectionService.findConferenceServer(getSelectedConversation().getAccount()) != null); } + menuAttachLocation.setVisible(true); + menuAttachSoundRecorder.setVisible(true); + configureEncryptionMenu(getSelectedConversation(), menu); } } - if (Config.supportOmemo()) { - new Handler().post(addOmemoDebuggerRunnable); - } return super.onCreateOptionsMenu(menu); } - private Runnable addOmemoDebuggerRunnable = new Runnable() { - @Override - public void run() { - View view = findViewById(R.id.action_security); - if (view != null) { - view.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - return v.getId() == R.id.action_security && quickOmemoDebugger(getSelectedConversation()); - } - }); - } - } - }; - - private boolean quickOmemoDebugger(Conversation c) { - if (c != null) { - boolean single = c.getMode() == Conversation.MODE_SINGLE; - AxolotlService axolotlService = c.getAccount().getAxolotlService(); - Pair capabilityJidPair = axolotlService.isConversationAxolotlCapableDetailed(c); - switch (capabilityJidPair.first) { - case MISSING_PRESENCE: - Toast.makeText(ConversationActivity.this, single ? getString(R.string.missing_presence_subscription) : getString(R.string.missing_presence_subscription_with_x, capabilityJidPair.second.toBareJid().toString()), Toast.LENGTH_SHORT).show(); - return true; - case MISSING_KEYS: - Toast.makeText(ConversationActivity.this, single ? getString(R.string.missing_omemo_keys) : getString(R.string.missing_keys_from_x, capabilityJidPair.second.toBareJid().toString()), Toast.LENGTH_SHORT).show(); - return true; - case WRONG_CONFIGURATION: - Toast.makeText(ConversationActivity.this, R.string.wrong_conference_configuration, Toast.LENGTH_SHORT).show(); - return true; - case NO_MEMBERS: - Toast.makeText(ConversationActivity.this, R.string.this_conference_has_no_members, Toast.LENGTH_SHORT).show(); - return true; - } + private static void configureEncryptionMenu(Conversation conversation, Menu menu) { + MenuItem otr = menu.findItem(R.id.encryption_choice_otr); + MenuItem none = menu.findItem(R.id.encryption_choice_none); + MenuItem pgp = menu.findItem(R.id.encryption_choice_pgp); + MenuItem axolotl = menu.findItem(R.id.encryption_choice_axolotl); + pgp.setVisible(Config.supportOpenPgp()); + none.setVisible(Config.supportUnencrypted() || conversation.getMode() == Conversation.MODE_MULTI); + otr.setVisible(Config.supportOtr()); + axolotl.setVisible(Config.supportOmemo()); + if (conversation.getMode() == Conversation.MODE_MULTI) { + otr.setVisible(false); + } + if (!conversation.getAccount().getAxolotlService().isConversationAxolotlCapable(conversation)) { + axolotl.setEnabled(false); + } + switch (conversation.getNextEncryption()) { + case Message.ENCRYPTION_NONE: + none.setChecked(true); + break; + case Message.ENCRYPTION_OTR: + otr.setChecked(true); + break; + case Message.ENCRYPTION_PGP: + pgp.setChecked(true); + break; + case Message.ENCRYPTION_AXOLOTL: + axolotl.setChecked(true); + break; + default: + none.setChecked(true); + break; } - return false; } protected void selectPresenceToAttachFile(final int attachmentChoice, final int encryption) { final Conversation conversation = getSelectedConversation(); final Account account = conversation.getAccount(); - final OnPresenceSelected callback = new OnPresenceSelected() { - - @Override - public void onPresenceSelected() { - final Intent intent = new Intent(); - boolean chooser = false; - String fallbackPackageId = null; - switch (attachmentChoice) { - case ATTACHMENT_CHOICE_CHOOSE_IMAGE: - intent.setAction(Intent.ACTION_GET_CONTENT); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); - } - intent.setType("image/*"); - chooser = true; - break; - case ATTACHMENT_CHOICE_CHOOSE_VIDEO: - chooser = true; - intent.setType("video/*"); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setAction(Intent.ACTION_GET_CONTENT); - break; - case ATTACHMENT_CHOICE_TAKE_FROM_CAMERA: - AlertDialog.Builder builder = new AlertDialog.Builder(ConversationActivity.this); - builder.setTitle(getString(R.string.attach_take_from_camera)); - builder.setNegativeButton(getString(R.string.action_take_photo), - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri(); - intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); - intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); - mPendingPhotoUris.clear(); - mPendingPhotoUris.add(uri); - startActivityForResult(intent, attachmentChoice); - } - }); - builder.setPositiveButton(getString(R.string.action_take_video), - new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Uri uri = xmppConnectionService.getFileBackend().getTakeVideoUri(); - intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE); - mPendingFileUris.clear(); - mPendingFileUris.add(uri); - startActivityForResult(intent, attachmentChoice); - } - }); - builder.create().show(); - break; - case ATTACHMENT_CHOICE_CHOOSE_FILE: - chooser = true; - intent.setType("*/*"); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setAction(Intent.ACTION_GET_CONTENT); - break; - case ATTACHMENT_CHOICE_RECORD_VOICE: - startActivityForResult(new Intent(getApplicationContext(), RecordingActivity.class), attachmentChoice); - break; - case ATTACHMENT_CHOICE_LOCATION: - startActivityForResult(new Intent(getApplicationContext(), ShareLocationActivity.class), attachmentChoice); - break; - } - if (intent.resolveActivity(getPackageManager()) != null) { - Log.d(Config.LOGTAG, "Attachment: " + attachmentChoice); - if (chooser) { - startActivityForResult( - Intent.createChooser(intent, getString(R.string.perform_action_with)), - attachmentChoice); - } else { - startActivityForResult(intent, attachmentChoice); + final OnPresenceSelected callback = () -> { + final Intent intent = new Intent(); + boolean chooser = false; + String fallbackPackageId = null; + switch (attachmentChoice) { + case ATTACHMENT_CHOICE_CHOOSE_IMAGE: + intent.setAction(Intent.ACTION_GET_CONTENT); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); } - } else if (fallbackPackageId != null) { - startActivity(getInstallApkIntent(fallbackPackageId)); + intent.setType("image/*"); + chooser = true; + break; + case ATTACHMENT_CHOICE_CHOOSE_VIDEO: + chooser = true; + intent.setType("video/*"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setAction(Intent.ACTION_GET_CONTENT); + break; + case ATTACHMENT_CHOICE_TAKE_FROM_CAMERA: + AlertDialog.Builder builder = new AlertDialog.Builder(ConversationActivity.this); + builder.setTitle(getString(R.string.attach_take_from_camera)); + builder.setNegativeButton(getString(R.string.action_take_photo), + (dialog, which) -> { + Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri(); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); + mPendingPhotoUris.clear(); + mPendingPhotoUris.add(uri); + startActivityForResult(intent, attachmentChoice); + }); + builder.setPositiveButton(getString(R.string.action_take_video), + (dialog, which) -> { + Uri uri = xmppConnectionService.getFileBackend().getTakeVideoUri(); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE); + mPendingFileUris.clear(); + mPendingFileUris.add(uri); + startActivityForResult(intent, attachmentChoice); + }); + builder.create().show(); + break; + case ATTACHMENT_CHOICE_CHOOSE_FILE: + chooser = true; + intent.setType("*/*"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setAction(Intent.ACTION_GET_CONTENT); + break; + case ATTACHMENT_CHOICE_RECORD_VOICE: + startActivityForResult(new Intent(getApplicationContext(), RecordingActivity.class), attachmentChoice); + break; + case ATTACHMENT_CHOICE_LOCATION: + startActivityForResult(new Intent(getApplicationContext(), ShareLocationActivity.class), attachmentChoice); + break; + } + if (intent.resolveActivity(getPackageManager()) != null) { + Log.d(Config.LOGTAG, "Attachment: " + attachmentChoice); + if (chooser) { + startActivityForResult( + Intent.createChooser(intent, getString(R.string.perform_action_with)), + attachmentChoice); + } else { + startActivityForResult(intent, attachmentChoice); } + } else if (fallbackPackageId != null) { + startActivity(getInstallApkIntent(fallbackPackageId)); } }; if ((account.httpUploadAvailable() || attachmentChoice == ATTACHMENT_CHOICE_LOCATION) && encryption != Message.ENCRYPTION_OTR) { @@ -813,8 +799,26 @@ public class ConversationActivity extends XmppActivity return true; } else if (getSelectedConversation() != null) { switch (item.getItemId()) { - case R.id.action_attach_file: - attachFileDialog(); + case R.id.encryption_choice_axolotl: + case R.id.encryption_choice_otr: + case R.id.encryption_choice_pgp: + case R.id.encryption_choice_none: + handleEncryptionSelection(item); + break; + case R.id.attach_choose_picture: + attachFile(ATTACHMENT_CHOICE_CHOOSE_IMAGE); + break; + case R.id.attach_take_picture: + attachFile(ATTACHMENT_CHOICE_TAKE_FROM_CAMERA); + break; + case R.id.attach_choose_file: + attachFile(ATTACHMENT_CHOICE_CHOOSE_FILE); + break; + case R.id.attach_record_voice: + attachFile(ATTACHMENT_CHOICE_RECORD_VOICE); + break; + case R.id.attach_location: + attachFile(ATTACHMENT_CHOICE_LOCATION); break; case R.id.action_archive_chat: this.endConversation(getSelectedConversation()); @@ -836,9 +840,6 @@ public class ConversationActivity extends XmppActivity case R.id.action_invite: inviteToConversation(getSelectedConversation()); break; - case R.id.action_security: - selectEncryptionDialog(getSelectedConversation()); - break; case R.id.action_clear_history: clearHistoryDialog(getSelectedConversation()); break; @@ -889,10 +890,8 @@ public class ConversationActivity extends XmppActivity protected void clearHistoryDialog(final Conversation conversation) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.clear_conversation_history)); - View dialogView = getLayoutInflater().inflate( - R.layout.dialog_clear_history, null); - final CheckBox endConversationCheckBox = dialogView - .findViewById(R.id.end_conversation_checkbox); + final View dialogView = getLayoutInflater().inflate(R.layout.dialog_clear_history, null); + final CheckBox endConversationCheckBox = dialogView.findViewById(R.id.end_conversation_checkbox); if (conversation.getMode() == Conversation.MODE_SINGLE) { endConversationCheckBox.setVisibility(View.VISIBLE); endConversationCheckBox.setChecked(true); @@ -900,65 +899,23 @@ public class ConversationActivity extends XmppActivity builder.setView(dialogView); builder.setNegativeButton(getString(R.string.cancel), null); builder.setPositiveButton(getString(R.string.delete_messages), - new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - ConversationActivity.this.xmppConnectionService.clearConversationHistory(conversation); - if (conversation.getMode() == Conversation.MODE_SINGLE) { - if (endConversationCheckBox.isChecked()) { - endConversation(conversation); - } else { - updateConversationList(); - ConversationActivity.this.mConversationFragment.updateMessages(); - } + (dialog, which) -> { + ConversationActivity.this.xmppConnectionService.clearConversationHistory(conversation); + if (conversation.getMode() == Conversation.MODE_SINGLE) { + if (endConversationCheckBox.isChecked()) { + endConversation(conversation); } else { updateConversationList(); ConversationActivity.this.mConversationFragment.updateMessages(); } + } else { + updateConversationList(); + ConversationActivity.this.mConversationFragment.updateMessages(); } }); builder.create().show(); } - protected void attachFileDialog() { - View menuAttachFile = findViewById(R.id.action_attach_file); - if (menuAttachFile == null) { - return; - } - PopupMenu attachFilePopup = new PopupMenu(this, menuAttachFile); - attachFilePopup.inflate(R.menu.attachment_choices); - attachFilePopup.setOnMenuItemClickListener(new OnMenuItemClickListener() { - - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.attach_choose_picture: - attachFile(ATTACHMENT_CHOICE_CHOOSE_IMAGE); - break; - case R.id.attach_take_picture: - attachFile(ATTACHMENT_CHOICE_TAKE_FROM_CAMERA); - break; - case R.id.attach_choose_video: - attachFile(ATTACHMENT_CHOICE_CHOOSE_VIDEO); - break; - case R.id.attach_choose_file: - attachFile(ATTACHMENT_CHOICE_CHOOSE_FILE); - break; - case R.id.attach_record_voice: - attachFile(ATTACHMENT_CHOICE_RECORD_VOICE); - break; - case R.id.attach_location: - attachFile(ATTACHMENT_CHOICE_LOCATION); - break; - } - return false; - } - }); - UIHelper.showIconsInPopup(attachFilePopup); - attachFilePopup.show(); - } - public void verifyOtrSessionDialog(final Conversation conversation, View view) { if (!conversation.hasValidOtrSession() || conversation.getOtrSession().getSessionStatus() != SessionStatus.ENCRYPTED) { Toast.makeText(this, R.string.otr_session_not_started, Toast.LENGTH_LONG).show(); @@ -994,91 +951,47 @@ public class ConversationActivity extends XmppActivity popup.show(); } - protected void selectEncryptionDialog(final Conversation conversation) { - View menuItemView = findViewById(R.id.action_security); - if (menuItemView == null) { + private void handleEncryptionSelection(MenuItem item) { + Conversation conversation = getSelectedConversation(); + if (conversation == null) { return; } - PopupMenu popup = new PopupMenu(this, menuItemView); - final ConversationFragment fragment = (ConversationFragment) getFragmentManager() - .findFragmentByTag("conversation"); - if (fragment != null) { - popup.setOnMenuItemClickListener(new OnMenuItemClickListener() { - - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.encryption_choice_none: - conversation.setNextEncryption(Message.ENCRYPTION_NONE); - item.setChecked(true); - break; - case R.id.encryption_choice_otr: - conversation.setNextEncryption(Message.ENCRYPTION_OTR); - item.setChecked(true); - break; - case R.id.encryption_choice_pgp: - if (hasPgp()) { - if (conversation.getAccount().getPgpSignature() != null) { - conversation.setNextEncryption(Message.ENCRYPTION_PGP); - item.setChecked(true); - } else { - announcePgp(conversation.getAccount(), conversation, null, onOpenPGPKeyPublished); - } - } else { - showInstallPgpDialog(); - } - break; - case R.id.encryption_choice_axolotl: - Log.d(Config.LOGTAG, AxolotlService.getLogprefix(conversation.getAccount()) - + "Enabled axolotl for Contact " + conversation.getContact().getJid()); - conversation.setNextEncryption(Message.ENCRYPTION_AXOLOTL); - item.setChecked(true); - break; - default: - conversation.setNextEncryption(Message.ENCRYPTION_NONE); - break; + final ConversationFragment fragment = (ConversationFragment) getFragmentManager().findFragmentByTag("conversation"); + switch (item.getItemId()) { + case R.id.encryption_choice_none: + conversation.setNextEncryption(Message.ENCRYPTION_NONE); + item.setChecked(true); + break; + case R.id.encryption_choice_otr: + conversation.setNextEncryption(Message.ENCRYPTION_OTR); + item.setChecked(true); + break; + case R.id.encryption_choice_pgp: + if (hasPgp()) { + if (conversation.getAccount().getPgpSignature() != null) { + conversation.setNextEncryption(Message.ENCRYPTION_PGP); + item.setChecked(true); + } else { + announcePgp(conversation.getAccount(), conversation, null, onOpenPGPKeyPublished); } - xmppConnectionService.updateConversation(conversation); - fragment.updateChatMsgHint(); - invalidateOptionsMenu(); - refreshUi(); - return true; + } else { + showInstallPgpDialog(); } - }); - popup.inflate(R.menu.encryption_choices); - MenuItem otr = popup.getMenu().findItem(R.id.encryption_choice_otr); - MenuItem none = popup.getMenu().findItem(R.id.encryption_choice_none); - MenuItem pgp = popup.getMenu().findItem(R.id.encryption_choice_pgp); - MenuItem axolotl = popup.getMenu().findItem(R.id.encryption_choice_axolotl); - pgp.setVisible(Config.supportOpenPgp()); - none.setVisible(Config.supportUnencrypted() || conversation.getMode() == Conversation.MODE_MULTI); - otr.setVisible(Config.supportOtr()); - axolotl.setVisible(Config.supportOmemo()); - if (conversation.getMode() == Conversation.MODE_MULTI) { - otr.setVisible(false); - } - if (!conversation.getAccount().getAxolotlService().isConversationAxolotlCapable(conversation)) { - axolotl.setEnabled(false); - } - switch (conversation.getNextEncryption()) { - case Message.ENCRYPTION_NONE: - none.setChecked(true); - break; - case Message.ENCRYPTION_OTR: - otr.setChecked(true); - break; - case Message.ENCRYPTION_PGP: - pgp.setChecked(true); - break; - case Message.ENCRYPTION_AXOLOTL: - axolotl.setChecked(true); - break; - default: - none.setChecked(true); - break; - } - popup.show(); + break; + case R.id.encryption_choice_axolotl: + Log.d(Config.LOGTAG, AxolotlService.getLogprefix(conversation.getAccount()) + + "Enabled axolotl for Contact " + conversation.getContact().getJid()); + conversation.setNextEncryption(Message.ENCRYPTION_AXOLOTL); + item.setChecked(true); + break; + default: + conversation.setNextEncryption(Message.ENCRYPTION_NONE); + break; } + xmppConnectionService.updateConversation(conversation); + fragment.updateChatMsgHint(); + invalidateOptionsMenu(); + refreshUi(); } @Override @@ -1256,7 +1169,6 @@ public class ConversationActivity extends XmppActivity recreate(); } this.mActivityPaused = false; - if (!isConversationsOverviewVisable() || !isConversationsOverviewHideable()) { sendReadMarkerIfNecessary(getSelectedConversation()); } diff --git a/src/main/java/de/pixart/messenger/utils/UIHelper.java b/src/main/java/de/pixart/messenger/utils/UIHelper.java index 451ec3aec..08e1d7dad 100644 --- a/src/main/java/de/pixart/messenger/utils/UIHelper.java +++ b/src/main/java/de/pixart/messenger/utils/UIHelper.java @@ -557,19 +557,4 @@ public class UIHelper { return type; } } - - public static boolean showIconsInPopup(PopupMenu attachFilePopup) { - try { - Field field = attachFilePopup.getClass().getDeclaredField("mPopup"); - field.setAccessible(true); - Object menuPopupHelper = field.get(attachFilePopup); - Class cls = Class.forName("com.android.internal.view.menu.MenuPopupHelper"); - Method method = cls.getDeclaredMethod("setForceShowIcon", new Class[]{boolean.class}); - method.setAccessible(true); - method.invoke(menuPopupHelper, new Object[]{true}); - return true; - } catch (Exception e) { - return false; - } - } } diff --git a/src/main/res/menu/attachment_choices.xml b/src/main/res/menu/attachment_choices.xml deleted file mode 100644 index 1f5ef9c2c..000000000 --- a/src/main/res/menu/attachment_choices.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/res/menu/conversations.xml b/src/main/res/menu/conversations.xml index b748a065e..9687e45ff 100644 --- a/src/main/res/menu/conversations.xml +++ b/src/main/res/menu/conversations.xml @@ -12,13 +12,57 @@ android:icon="?attr/icon_not_secure" android:orderInCategory="20" app:showAsAction="always" - android:title="@string/action_secure" /> + android:title="@string/action_secure" > + + + + + + + + + + android:title="@string/attach_file" > + + + + + + + + + + + + - - - - - - - - - - \ No newline at end of file -- cgit v1.2.3 From 4d5754ac5ddbe0f02f8afd8b5b9a0bae4bfc633d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 15 Mar 2018 21:28:30 +0100 Subject: Change ShowHidePasswordEditText to TextInputEditText. change the input fields in the AccountActivity to use the TextInputLayout. --- build.gradle | 1 + .../messenger/ui/ChangePasswordActivity.java | 12 --- .../pixart/messenger/ui/EditAccountActivity.java | 54 +++++----- src/main/res/drawable/ic_visibility.xml | 9 ++ src/main/res/drawable/ic_visibility_off.xml | 9 ++ .../res/drawable/visibility_toggle_drawable.xml | 5 + src/main/res/layout/activity_change_password.xml | 86 +++++++--------- src/main/res/layout/activity_edit_account.xml | 114 ++++++++++----------- 8 files changed, 145 insertions(+), 145 deletions(-) create mode 100644 src/main/res/drawable/ic_visibility.xml create mode 100644 src/main/res/drawable/ic_visibility_off.xml create mode 100644 src/main/res/drawable/visibility_toggle_drawable.xml diff --git a/build.gradle b/build.gradle index ff49e3d1e..8bb3a71ba 100644 --- a/build.gradle +++ b/build.gradle @@ -61,6 +61,7 @@ dependencies { implementation "com.android.support:support-emoji-bundled:$supportLibVersion" implementation "com.android.support:support-emoji-appcompat:$supportLibVersion" implementation "com.android.support:exifinterface:$supportLibVersion" + implementation "com.android.support:design:$supportLibVersion" implementation 'com.github.bumptech.glide:glide:3.8.0' implementation 'com.github.chrisbanes:PhotoView:2.0.0' implementation 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.3' diff --git a/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java b/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java index 49a826f29..b73393b0c 100644 --- a/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java @@ -5,7 +5,6 @@ import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; -import android.widget.TextView; import android.widget.Toast; import de.pixart.messenger.R; @@ -21,20 +20,15 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti if (mAccount != null) { final String currentPassword = mCurrentPassword.getText().toString(); final String newPassword = mNewPassword.getText().toString(); - final String newPasswordConfirm = mNewPasswordConfirm.getText().toString(); if (!mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE) && !currentPassword.equals(mAccount.getPassword())) { mCurrentPassword.requestFocus(); mCurrentPassword.setError(getString(R.string.account_status_unauthorized)); - } else if (!newPassword.equals(newPasswordConfirm)) { - mNewPasswordConfirm.requestFocus(); - mNewPasswordConfirm.setError(getString(R.string.passwords_do_not_match)); } else if (newPassword.trim().isEmpty()) { mNewPassword.requestFocus(); mNewPassword.setError(getString(R.string.password_should_not_be_empty)); } else { mCurrentPassword.setError(null); mNewPassword.setError(null); - mNewPasswordConfirm.setError(null); xmppConnectionService.updateAccountPasswordOnServer(mAccount, newPassword, ChangePasswordActivity.this); mChangePasswordButton.setEnabled(false); mChangePasswordButton.setTextColor(getSecondaryTextColor()); @@ -43,20 +37,16 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti } } }; - private TextView mCurrentPasswordLabel; private EditText mCurrentPassword; private EditText mNewPassword; - private EditText mNewPasswordConfirm; private Account mAccount; @Override void onBackendConnected() { this.mAccount = extractAccount(getIntent()); if (this.mAccount != null && this.mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE)) { - this.mCurrentPasswordLabel.setVisibility(View.GONE); this.mCurrentPassword.setVisibility(View.GONE); } else { - this.mCurrentPasswordLabel.setVisibility(View.VISIBLE); this.mCurrentPassword.setVisibility(View.VISIBLE); } } @@ -74,10 +64,8 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti }); this.mChangePasswordButton = findViewById(R.id.right_button); this.mChangePasswordButton.setOnClickListener(this.mOnChangePasswordButtonClicked); - this.mCurrentPasswordLabel = findViewById(R.id.current_password_label); this.mCurrentPassword = findViewById(R.id.current_password); this.mNewPassword = findViewById(R.id.new_password); - this.mNewPasswordConfirm = findViewById(R.id.new_password_confirm); } @Override diff --git a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java index 41d48af99..d407f26ac 100644 --- a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java @@ -1,6 +1,5 @@ package de.pixart.messenger.ui; -import android.support.v7.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -10,11 +9,14 @@ import android.content.SharedPreferences; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; +import android.os.Handler; import android.provider.Settings; import android.security.KeyChain; import android.security.KeyChainAliasCallback; +import android.support.design.widget.TextInputLayout; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; @@ -73,7 +75,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private static final int REQUEST_DATA_SAVER = 0x37af244; private AutoCompleteTextView mAccountJid; private EditText mPassword; - private EditText mPasswordConfirm; private CheckBox mRegisterNew; private Button mCancelButton; private Button mSaveButton; @@ -100,7 +101,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private TextView mOwnFingerprintDesc; private TextView mOtrFingerprintDesc; private TextView getmPgpFingerprintDesc; - private TextView mAccountJidLabel; + private TextInputLayout mPasswordToggle; private ImageView mAvatar; private RelativeLayout mOtrFingerprintBox; private RelativeLayout mAxolotlFingerprintBox; @@ -129,7 +130,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat @Override public void onClick(final View v) { final String password = mPassword.getText().toString(); - final String passwordConfirm = mPasswordConfirm.getText().toString(); final boolean wasDisabled = mAccount != null && mAccount.getStatus() == Account.State.DISABLED; if (!mInitMode && passwordChangedInMagicCreateMode()) { @@ -222,11 +222,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat if (XmppConnection.errorMessage != null) { Toast.makeText(EditAccountActivity.this, XmppConnection.errorMessage, Toast.LENGTH_LONG).show(); } - if (!password.equals(passwordConfirm)) { - mPasswordConfirm.setError(getString(R.string.passwords_do_not_match)); - mPasswordConfirm.requestFocus(); - return; - } } if (mAccount != null) { if (mInitMode && mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE)) { @@ -240,7 +235,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } else { mAccountJid.setError(null); } - mPasswordConfirm.setError(null); mAccount.setPassword(password); mAccount.setOption(Account.OPTION_REGISTER, registerNewAccount); if (!xmppConnectionService.updateAccount(mAccount)) { @@ -288,6 +282,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private boolean mSavedInstanceInit = false; private Button mClearDevicesButton; private XmppUri pendingUri = null; + private boolean mUseTor; public void refreshUiReal() { invalidateOptionsMenu(); @@ -371,6 +366,24 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } }; + private View.OnFocusChangeListener mEditTextFocusListener = new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View view, boolean b) { + EditText et = (EditText) view; + if (b) { + int resId = mUsernameMode ? R.string.username : R.string.account_settings_example_jabber_id; + if (view.getId() == R.id.hostname) { + resId = mUseTor ? R.string.hostname_or_onion : R.string.hostname_example; + } + final int res = resId; + new Handler().postDelayed(() -> et.setHint(res), 500); + } else { + et.setHint(null); + } + } + }; + + private final OnClickListener mAvatarClickListener = new OnClickListener() { @Override public void onClick(final View view) { @@ -529,10 +542,10 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat setContentView(R.layout.activity_edit_account); this.mAccountJid = findViewById(R.id.account_jid); this.mAccountJid.addTextChangedListener(this.mTextWatcher); - this.mAccountJidLabel = findViewById(R.id.account_jid_label); + this.mAccountJid.setOnFocusChangeListener(this.mEditTextFocusListener); this.mPassword = findViewById(R.id.account_password); this.mPassword.addTextChangedListener(this.mTextWatcher); - this.mPasswordConfirm = findViewById(R.id.account_password_confirm); + this.mPasswordToggle = findViewById(R.id.text_input_password_toggle); this.mAvatar = findViewById(R.id.avater); this.mAvatar.setOnClickListener(this.mAvatarClickListener); this.mRegisterNew = findViewById(R.id.account_register_new); @@ -569,6 +582,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mNamePort = findViewById(R.id.name_port); this.mHostname = findViewById(R.id.hostname); this.mHostname.addTextChangedListener(mTextWatcher); + this.mHostname.setOnFocusChangeListener(mEditTextFocusListener); this.mClearDevicesButton = findViewById(R.id.clear_devices); this.mClearDevicesButton.setOnClickListener(new OnClickListener() { @Override @@ -589,13 +603,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } final OnCheckedChangeListener OnCheckedShowConfirmPassword = new OnCheckedChangeListener() { @Override - public void onCheckedChanged(final CompoundButton buttonView, - final boolean isChecked) { - if (isChecked) { - mPasswordConfirm.setVisibility(View.VISIBLE); - } else { - mPasswordConfirm.setVisibility(View.GONE); - } + public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) { updateSaveButton(); } }; @@ -704,9 +712,8 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat } } SharedPreferences preferences = getPreferences(); - boolean useTor = Config.FORCE_ORBOT || preferences.getBoolean("use_tor", false); - this.mShowOptions = useTor || preferences.getBoolean("show_connection_options", false); - mHostname.setHint(useTor ? R.string.hostname_or_onion : R.string.hostname_example); + mUseTor = Config.FORCE_ORBOT || preferences.getBoolean("use_tor", false); + this.mShowOptions = mUseTor || preferences.getBoolean("show_connection_options", false); this.mNamePort.setVisibility(mShowOptions ? View.VISIBLE : View.GONE); } @@ -769,7 +776,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mCancelButton.setTextColor(getSecondaryTextColor()); } if (mUsernameMode) { - this.mAccountJidLabel.setText(R.string.username); this.mAccountJid.setHint(R.string.username_hint); } else { final KnownHostsAdapter mKnownHostsAdapter = new KnownHostsAdapter(this, @@ -911,6 +917,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat this.mAccountJid.setEnabled(editable); this.mAccountJid.setFocusable(editable); this.mAccountJid.setFocusableInTouchMode(editable); + this.mPasswordToggle.setPasswordVisibilityToggleEnabled(editable); if (!mInitMode) { this.mAvatar.setVisibility(View.VISIBLE); @@ -922,7 +929,6 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat if (this.mAccount.isOptionSet(Account.OPTION_REGISTER)) { this.mRegisterNew.setVisibility(View.VISIBLE); this.mRegisterNew.setChecked(true); - this.mPasswordConfirm.setText(this.mAccount.getPassword()); } else { this.mRegisterNew.setVisibility(View.GONE); this.mRegisterNew.setChecked(false); diff --git a/src/main/res/drawable/ic_visibility.xml b/src/main/res/drawable/ic_visibility.xml new file mode 100644 index 000000000..57ba4f002 --- /dev/null +++ b/src/main/res/drawable/ic_visibility.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/src/main/res/drawable/ic_visibility_off.xml b/src/main/res/drawable/ic_visibility_off.xml new file mode 100644 index 000000000..fd954d349 --- /dev/null +++ b/src/main/res/drawable/ic_visibility_off.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/src/main/res/drawable/visibility_toggle_drawable.xml b/src/main/res/drawable/visibility_toggle_drawable.xml new file mode 100644 index 000000000..9c887e7e9 --- /dev/null +++ b/src/main/res/drawable/visibility_toggle_drawable.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/layout/activity_change_password.xml b/src/main/res/layout/activity_change_password.xml index 8808227e3..de1ad216d 100644 --- a/src/main/res/layout/activity_change_password.xml +++ b/src/main/res/layout/activity_change_password.xml @@ -1,5 +1,6 @@ @@ -12,67 +13,54 @@ + android:orientation="vertical" + android:padding="@dimen/infocard_padding"> - - - - - + app:passwordToggleDrawable="@drawable/visibility_toggle_drawable" + app:passwordToggleEnabled="true" + app:passwordToggleTint="?attr/color_text_secondary"> - - + + - + app:passwordToggleDrawable="@drawable/visibility_toggle_drawable" + app:passwordToggleEnabled="true" + app:passwordToggleTint="?attr/color_text_secondary"> + + + diff --git a/src/main/res/layout/activity_edit_account.xml b/src/main/res/layout/activity_edit_account.xml index 7b60b7a64..9b9611e99 100644 --- a/src/main/res/layout/activity_edit_account.xml +++ b/src/main/res/layout/activity_edit_account.xml @@ -51,42 +51,40 @@ android:layout_below="@+id/avater" android:orientation="vertical"> - - - + android:hint="@string/account_settings_jabber_id"> - + + - + android:id="@+id/text_input_password_toggle" + app:passwordToggleDrawable="@drawable/visibility_toggle_drawable" + app:passwordToggleEnabled="true" + app:passwordToggleTint="?attr/color_text_secondary"> + + + - - - + android:hint="@string/account_settings_hostname"> + + + - - - + android:hint="@string/account_settings_port"> + + + -- cgit v1.2.3 From f26cab3b03a8764f90164d772bc421c69dd08bb5 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 16 Mar 2018 21:15:47 +0100 Subject: migrate to CardView in contact and muc details --- build.gradle | 1 + .../messenger/ui/ConferenceDetailsActivity.java | 35 +- .../messenger/ui/ContactDetailsActivity.java | 12 +- src/main/res/layout/activity_contact_details.xml | 301 ++++++++-------- src/main/res/layout/activity_muc_details.xml | 385 +++++++++++---------- 5 files changed, 368 insertions(+), 366 deletions(-) diff --git a/build.gradle b/build.gradle index 8bb3a71ba..3298658bc 100644 --- a/build.gradle +++ b/build.gradle @@ -62,6 +62,7 @@ dependencies { implementation "com.android.support:support-emoji-appcompat:$supportLibVersion" implementation "com.android.support:exifinterface:$supportLibVersion" implementation "com.android.support:design:$supportLibVersion" + implementation "com.android.support:cardview-v7:$supportLibVersion" implementation 'com.github.bumptech.glide:glide:3.8.0' implementation 'com.github.chrisbanes:PhotoView:2.0.0' implementation 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.3' diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index fc45c58a5..3cd57864f 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -1,6 +1,5 @@ package de.pixart.messenger.ui; -import android.support.v7.app.AlertDialog; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; @@ -9,6 +8,8 @@ import android.content.IntentSender.SendIntentException; import android.graphics.PorterDuff; import android.os.Bundle; import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; +import android.support.v7.widget.CardView; import android.util.Log; import android.view.ContextMenu; import android.view.LayoutInflater; @@ -83,10 +84,10 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers private TextView mFullJid; private TextView mAccountJid; private LinearLayout membersView; - private LinearLayout mMoreDetails; + private CardView mMoreDetails; private RelativeLayout mMucSettings; private TextView mConferenceType; - private LinearLayout mConferenceInfoTable; + private CardView mConferenceInfoTable; private TextView mConferenceInfoMam; private TextView mNotifyStatusText; private ImageButton mChangeConferenceSettingsButton; @@ -298,25 +299,15 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } - mEditNickButton.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - quickEdit(mConversation.getMucOptions().getActualNick(), - 0, - new OnValueEdited() { - - @Override - public String onValueEdited(String value) { - if (xmppConnectionService.renameInMuc(mConversation, value, renameCallback)) { - return null; - } else { - return getString(R.string.invalid_username); - } - } - }); - } - }); + mEditNickButton.setOnClickListener(v -> quickEdit(mConversation.getMucOptions().getActualNick(), + 0, + value -> { + if (xmppConnectionService.renameInMuc(mConversation, value, renameCallback)) { + return null; + } else { + return getString(R.string.invalid_username); + } + })); this.mAdvancedMode = getPreferences().getBoolean("advanced_muc_mode", false); this.mConferenceInfoTable = findViewById(R.id.muc_info_more); this.mConferenceInfoTable.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE); diff --git a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java index 8827d05ec..88c875d18 100644 --- a/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ContactDetailsActivity.java @@ -14,6 +14,7 @@ import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; +import android.support.v7.widget.CardView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -123,7 +124,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp private Button mShowInactiveDevicesButton; private QuickContactBadge badge; private LinearLayout keys; - private LinearLayout keysWrapper; + private CardView keysWrapper; private FlowLayout tags; private boolean showDynamicTags = false; private boolean showLastSeen = false; @@ -292,12 +293,9 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } - mShowInactiveDevicesButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - showInactiveOmemo = !showInactiveOmemo; - populateView(); - } + mShowInactiveDevicesButton.setOnClickListener(v -> { + showInactiveOmemo = !showInactiveOmemo; + populateView(); }); this.mNotifyStatusButton = findViewById(R.id.notification_status_button); this.mNotifyStatusButton.setOnClickListener(this.mNotifyStatusClickListener); diff --git a/src/main/res/layout/activity_contact_details.xml b/src/main/res/layout/activity_contact_details.xml index 031110bea..d5a4f098e 100644 --- a/src/main/res/layout/activity_contact_details.xml +++ b/src/main/res/layout/activity_contact_details.xml @@ -10,213 +10,216 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - - - + android:layout_marginTop="@dimen/activity_vertical_margin"> - + android:padding="@dimen/infocard_padding"> - - - - - - - - - - + android:textStyle="bold" /> - \ No newline at end of file -- cgit v1.2.3 From 35c70127720d048cd200dcefad8a710313019243 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 20 Mar 2018 20:56:01 +0100 Subject: use async avatar loader in conference details --- .../messenger/ui/ConferenceDetailsActivity.java | 104 +++++++++++++++++++-- .../messenger/ui/adapter/AccountAdapter.java | 3 +- .../messenger/ui/adapter/ConversationAdapter.java | 3 +- .../messenger/ui/adapter/MessageAdapter.java | 3 +- 4 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index 3cd57864f..d9fe66975 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -5,7 +5,12 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentSender.SendIntentException; +import android.content.res.Resources; +import android.graphics.Bitmap; import android.graphics.PorterDuff; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; @@ -27,8 +32,10 @@ import android.widget.Toast; import org.openintents.openpgp.util.OpenPgpUtils; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collections; +import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicInteger; import de.pixart.messenger.Config; @@ -43,6 +50,7 @@ import de.pixart.messenger.entities.MucOptions.User; import de.pixart.messenger.services.XmppConnectionService; import de.pixart.messenger.services.XmppConnectionService.OnConversationUpdate; import de.pixart.messenger.services.XmppConnectionService.OnMucRosterUpdate; +import de.pixart.messenger.utils.UIHelper; import de.pixart.messenger.xmpp.jid.Jid; public class ConferenceDetailsActivity extends XmppActivity implements OnConversationUpdate, OnMucRosterUpdate, XmppConnectionService.OnAffiliationChanged, XmppConnectionService.OnRoleChanged, XmppConnectionService.OnConfigurationPushed { @@ -703,7 +711,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } ImageView iv = view.findViewById(R.id.contact_photo); - iv.setImageBitmap(avatarService().get(user, getPixel(48), false)); + loadAvatar(user, iv); if (user.getRole() == MucOptions.Role.NONE) { tvDisplayName.setAlpha(INACTIVE_ALPHA); tvKey.setAlpha(INACTIVE_ALPHA); @@ -773,11 +781,95 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } private void displayToast(final String msg) { - runOnUiThread(new Runnable() { - @Override - public void run() { - Toast.makeText(ConferenceDetailsActivity.this, msg, Toast.LENGTH_SHORT).show(); + runOnUiThread(() -> Toast.makeText(ConferenceDetailsActivity.this, msg, Toast.LENGTH_SHORT).show()); + } + + public static boolean cancelPotentialWork(User user, ImageView imageView) { + final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); + + if (bitmapWorkerTask != null) { + final User old = bitmapWorkerTask.o; + if (old == null || user != old) { + bitmapWorkerTask.cancel(true); + } else { + return false; + } + } + return true; + } + + private static BitmapWorkerTask getBitmapWorkerTask(ImageView imageView) { + if (imageView != null) { + final Drawable drawable = imageView.getDrawable(); + if (drawable instanceof AsyncDrawable) { + final AsyncDrawable asyncDrawable = (AsyncDrawable) drawable; + return asyncDrawable.getBitmapWorkerTask(); + } + } + return null; + } + + public void loadAvatar(User user, ImageView imageView) { + if (cancelPotentialWork(user, imageView)) { + final Bitmap bm = avatarService().get(user, getPixel(48), true); + if (bm != null) { + cancelPotentialWork(user, imageView); + imageView.setImageBitmap(bm); + imageView.setBackgroundColor(0x00000000); + } else { + String seed = user.getRealJid() != null ? user.getRealJid().toBareJid().toString() : null; + imageView.setBackgroundColor(UIHelper.getColorForName(seed == null ? user.getName() : seed)); + imageView.setImageDrawable(null); + final BitmapWorkerTask task = new BitmapWorkerTask(imageView); + final AsyncDrawable asyncDrawable = new AsyncDrawable(getResources(), null, task); + imageView.setImageDrawable(asyncDrawable); + try { + task.execute(user); + } catch (final RejectedExecutionException ignored) { + } + } + } + } + + static class AsyncDrawable extends BitmapDrawable { + private final WeakReference bitmapWorkerTaskReference; + + public AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { + super(res, bitmap); + bitmapWorkerTaskReference = new WeakReference<>(bitmapWorkerTask); + } + + public BitmapWorkerTask getBitmapWorkerTask() { + return bitmapWorkerTaskReference.get(); + } + } + + class BitmapWorkerTask extends AsyncTask { + private final WeakReference imageViewReference; + private User o = null; + + private BitmapWorkerTask(ImageView imageView) { + imageViewReference = new WeakReference<>(imageView); + } + + @Override + protected Bitmap doInBackground(User... params) { + this.o = params[0]; + if (imageViewReference.get() == null) { + return null; } - }); + return avatarService().get(this.o, getPixel(48), isCancelled()); + } + + @Override + protected void onPostExecute(Bitmap bitmap) { + if (bitmap != null && !isCancelled()) { + final ImageView imageView = imageViewReference.get(); + if (imageView != null) { + imageView.setImageBitmap(bitmap); + imageView.setBackgroundColor(0x00000000); + } + } + } } } diff --git a/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java index 451e326e6..792d365ef 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/AccountAdapter.java @@ -134,7 +134,8 @@ public class AccountAdapter extends ArrayAdapter { @Override protected Bitmap doInBackground(Account... params) { - return activity.avatarService().get(params[0], activity.getPixel(56), isCancelled()); + this.account = params[0]; + return activity.avatarService().get(this.account, activity.getPixel(56), isCancelled()); } @Override diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java index 162455732..3c2de008e 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/ConversationAdapter.java @@ -357,7 +357,8 @@ public class ConversationAdapter extends ArrayAdapter { @Override protected Bitmap doInBackground(Conversation... params) { - return activity.avatarService().get(params[0], activity.getPixel(56)); + this.conversation = params[0]; + return activity.avatarService().get(this.conversation, activity.getPixel(56), isCancelled()); } @Override diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java index ca6b02284..181bce607 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java @@ -1223,7 +1223,8 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie @Override protected Bitmap doInBackground(Message... params) { - return activity.avatarService().get(params[0], size, isCancelled()); + this.message = params[0]; + return activity.avatarService().get(this.message, size, isCancelled()); } @Override -- cgit v1.2.3 From f7b670206379b420d66d9f164e386a8bb71368e7 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 20 Mar 2018 21:14:32 +0100 Subject: use data binder for inflating muc items --- .../messenger/ui/ConferenceDetailsActivity.java | 60 +++++------- src/main/res/layout/contact.xml | 104 +++++++++++---------- 2 files changed, 78 insertions(+), 86 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index d9fe66975..fa77b9423 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -6,6 +6,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentSender.SendIntentException; import android.content.res.Resources; +import android.databinding.DataBindingUtil; import android.graphics.Bitmap; import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; @@ -41,6 +42,7 @@ import java.util.concurrent.atomic.AtomicInteger; import de.pixart.messenger.Config; import de.pixart.messenger.R; import de.pixart.messenger.crypto.PgpEngine; +import de.pixart.messenger.databinding.ContactBinding; import de.pixart.messenger.entities.Account; import de.pixart.messenger.entities.Bookmark; import de.pixart.messenger.entities.Contact; @@ -669,56 +671,44 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers mNotifyStatusText.setText(R.string.notify_only_when_highlighted); } - LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); membersView.removeAllViews(); + if (inflater == null) { + return; + } final ArrayList users = mucOptions.getUsers(); Collections.sort(users); for (final User user : users) { + ContactBinding binding = DataBindingUtil.inflate(inflater, R.layout.contact, membersView, false); final Contact contact = user.getContact(); - View view = inflater.inflate(R.layout.contact, membersView, false); - this.setListItemBackgroundOnView(view); + final String name = user.getName(); + this.setListItemBackgroundOnView(binding.getRoot()); if (contact != null && contact.showInRoster()) { - view.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View view) { - switchToContactDetails(contact); - } - }); + binding.getRoot().setOnClickListener((OnClickListener) view -> switchToContactDetails(contact)); } - registerForContextMenu(view); - view.setTag(user); - TextView tvDisplayName = view.findViewById(R.id.contact_display_name); - TextView tvKey = view.findViewById(R.id.key); - TextView tvStatus = view.findViewById(R.id.contact_jid); + registerForContextMenu(binding.getRoot()); + binding.getRoot().setTag(user); if (mAdvancedMode && user.getPgpKeyId() != 0) { - tvKey.setVisibility(View.VISIBLE); - tvKey.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - viewPgpKey(user); - } - }); - tvKey.setText(OpenPgpUtils.convertKeyIdToHex(user.getPgpKeyId())); + binding.key.setVisibility(View.VISIBLE); + binding.key.setOnClickListener(v -> viewPgpKey(user)); + binding.key.setText(OpenPgpUtils.convertKeyIdToHex(user.getPgpKeyId())); } - String name = user.getName(); if (contact != null) { - tvDisplayName.setText(contact.getDisplayName()); - tvStatus.setText((name != null ? name + " \u2022 " : "") + getStatus(user)); + binding.contactDisplayName.setText(contact.getDisplayName()); + binding.contactJid.setText((name != null ? name + " \u2022 " : "") + getStatus(user)); } else { - tvDisplayName.setText(name == null ? "" : name); - tvStatus.setText(getStatus(user)); + binding.contactDisplayName.setText(name == null ? "" : name); + binding.contactJid.setText(getStatus(user)); } - ImageView iv = view.findViewById(R.id.contact_photo); - loadAvatar(user, iv); + loadAvatar(user, binding.contactPhoto); if (user.getRole() == MucOptions.Role.NONE) { - tvDisplayName.setAlpha(INACTIVE_ALPHA); - tvKey.setAlpha(INACTIVE_ALPHA); - tvStatus.setAlpha(INACTIVE_ALPHA); - iv.setAlpha(INACTIVE_ALPHA); + binding.contactDisplayName.setAlpha(INACTIVE_ALPHA); + binding.key.setAlpha(INACTIVE_ALPHA); + binding.contactJid.setAlpha(INACTIVE_ALPHA); + binding.contactPhoto.setAlpha(INACTIVE_ALPHA); } - membersView.addView(view); + membersView.addView(binding.getRoot()); if (mConversation.getMucOptions().canInvite()) { mInviteButton.setVisibility(View.VISIBLE); } else { diff --git a/src/main/res/layout/contact.xml b/src/main/res/layout/contact.xml index c414271ab..eea98181e 100644 --- a/src/main/res/layout/contact.xml +++ b/src/main/res/layout/contact.xml @@ -1,59 +1,61 @@ - - - - - + + + android:background="?android:attr/activatedBackgroundIndicator" + android:padding="@dimen/list_padding"> - + - + android:layout_centerVertical="true" + android:layout_toRightOf="@+id/contact_photo" + android:orientation="vertical" + android:paddingLeft="@dimen/avatar_item_distance"> - - + - - - - \ No newline at end of file + + + + + + + + + \ No newline at end of file -- cgit v1.2.3 From bfb065558512032b9105515c06def55c445ea7a6 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 20 Mar 2018 21:17:33 +0100 Subject: use data binder for list item adapater --- .../messenger/ui/adapter/ListItemAdapter.java | 36 +++++++++++----------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java index 8b4af00d8..2df1e5b0f 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/ListItemAdapter.java @@ -1,8 +1,8 @@ package de.pixart.messenger.ui.adapter; -import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; +import android.databinding.DataBindingUtil; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; @@ -23,6 +23,7 @@ import java.util.List; import java.util.concurrent.RejectedExecutionException; import de.pixart.messenger.R; +import de.pixart.messenger.databinding.ContactBinding; import de.pixart.messenger.entities.ListItem; import de.pixart.messenger.ui.SettingsActivity; import de.pixart.messenger.ui.XmppActivity; @@ -60,15 +61,17 @@ public class ListItemAdapter extends ArrayAdapter { @Override public View getView(int position, View view, ViewGroup parent) { - LayoutInflater inflater = (LayoutInflater) getContext() - .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + LayoutInflater inflater = activity.getLayoutInflater(); ListItem item = getItem(position); + ViewHolder viewHolder; if (view == null) { - view = inflater.inflate(R.layout.contact, parent, false); + ContactBinding binding = DataBindingUtil.inflate(inflater, R.layout.contact, parent, false); + viewHolder = ViewHolder.get(binding); + view = binding.getRoot(); + } else { + viewHolder = (ViewHolder) view.getTag(); } - ViewHolder viewHolder = ViewHolder.get(view); - List tags = item.getTags(activity); if (tags.size() == 0 || !this.showDynamicTags) { @@ -137,7 +140,8 @@ public class ListItemAdapter extends ArrayAdapter { @Override protected Bitmap doInBackground(ListItem... params) { - return activity.avatarService().get(params[0], activity.getPixel(48), isCancelled()); + this.item = params[0]; + return activity.avatarService().get(this.item, activity.getPixel(56), isCancelled()); } @Override @@ -221,17 +225,13 @@ public class ListItemAdapter extends ArrayAdapter { private ViewHolder() { } - public static ViewHolder get(View layout) { - ViewHolder viewHolder = (ViewHolder) layout.getTag(); - if (viewHolder == null) { - viewHolder = new ViewHolder(); - - viewHolder.name = layout.findViewById(R.id.contact_display_name); - viewHolder.jid = layout.findViewById(R.id.contact_jid); - viewHolder.avatar = layout.findViewById(R.id.contact_photo); - viewHolder.tags = layout.findViewById(R.id.tags); - layout.setTag(viewHolder); - } + public static ViewHolder get(ContactBinding binding) { + ViewHolder viewHolder = new ViewHolder(); + viewHolder.name = binding.contactDisplayName; + viewHolder.jid = binding.contactJid; + viewHolder.avatar = binding.contactPhoto; + viewHolder.tags = binding.tags; + binding.getRoot().setTag(viewHolder); return viewHolder; } } -- cgit v1.2.3 From dbe352c7d769631a2f91e516ec6d9ee11c1ce5ad Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 20 Mar 2018 21:20:51 +0100 Subject: cleanup --- .../pixart/messenger/ui/ConversationActivity.java | 26 ++++++++-------------- .../java/de/pixart/messenger/ui/XmppActivity.java | 3 +-- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index 3d24cf4a1..dbfc61a0c 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -1607,26 +1607,18 @@ public class ConversationActivity extends XmppActivity AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.battery_optimizations_enabled); builder.setMessage(R.string.battery_optimizations_enabled_dialog); - builder.setPositiveButton(R.string.next, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); - Uri uri = Uri.parse("package:" + getPackageName()); - intent.setData(uri); - try { - startActivityForResult(intent, REQUEST_BATTERY_OP); - } catch (ActivityNotFoundException e) { - Toast.makeText(ConversationActivity.this, R.string.device_does_not_support_battery_op, Toast.LENGTH_SHORT).show(); - } + builder.setPositiveButton(R.string.next, (dialog, which) -> { + Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); + Uri uri = Uri.parse("package:" + getPackageName()); + intent.setData(uri); + try { + startActivityForResult(intent, REQUEST_BATTERY_OP); + } catch (ActivityNotFoundException e) { + Toast.makeText(ConversationActivity.this, R.string.device_does_not_support_battery_op, Toast.LENGTH_SHORT).show(); } }); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - builder.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - setNeverAskForBatteryOptimizationsAgain(); - } - }); + builder.setOnDismissListener(dialog -> setNeverAskForBatteryOptimizationsAgain()); } builder.create().show(); } diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java index 42e230cbc..7e0df64ca 100644 --- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java +++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java @@ -565,8 +565,7 @@ public abstract class XmppActivity extends AppCompatActivity { } protected void inviteToConversation(Conversation conversation) { - Intent intent = new Intent(getApplicationContext(), - ChooseContactActivity.class); + Intent intent = new Intent(this, ChooseContactActivity.class); List contacts = new ArrayList<>(); if (conversation.getMode() == Conversation.MODE_MULTI) { for (MucOptions.User user : conversation.getMucOptions().getUsers(false)) { -- cgit v1.2.3 From 17d279b9c3f7dfa716592cca9f5fb2c9f3dd3cf6 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Tue, 20 Mar 2018 21:28:12 +0100 Subject: Moved the error message to TextInputLayout in the ChangePasswordActivity --- .../messenger/ui/ChangePasswordActivity.java | 41 +++++++++++----- .../ui/widget/DisabledActionModeCallback.java | 55 ++++++++++++++++++++++ src/main/res/layout/activity_change_password.xml | 2 + 3 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 src/main/java/de/pixart/messenger/ui/widget/DisabledActionModeCallback.java diff --git a/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java b/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java index b73393b0c..f6bec9838 100644 --- a/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ChangePasswordActivity.java @@ -2,6 +2,7 @@ package de.pixart.messenger.ui; import android.content.Intent; import android.os.Bundle; +import android.support.design.widget.TextInputLayout; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -10,6 +11,7 @@ import android.widget.Toast; import de.pixart.messenger.R; import de.pixart.messenger.entities.Account; import de.pixart.messenger.services.XmppConnectionService; +import de.pixart.messenger.ui.widget.DisabledActionModeCallback; public class ChangePasswordActivity extends XmppActivity implements XmppConnectionService.OnAccountPasswordChanged { @@ -22,13 +24,15 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti final String newPassword = mNewPassword.getText().toString(); if (!mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE) && !currentPassword.equals(mAccount.getPassword())) { mCurrentPassword.requestFocus(); - mCurrentPassword.setError(getString(R.string.account_status_unauthorized)); + mCurrentPasswordLayout.setError(getString(R.string.account_status_unauthorized)); + removeErrorsOnAllBut(mCurrentPasswordLayout); } else if (newPassword.trim().isEmpty()) { mNewPassword.requestFocus(); - mNewPassword.setError(getString(R.string.password_should_not_be_empty)); + mNewPasswordLayout.setError(getString(R.string.password_should_not_be_empty)); + removeErrorsOnAllBut(mNewPasswordLayout); } else { - mCurrentPassword.setError(null); - mNewPassword.setError(null); + mCurrentPasswordLayout.setError(null); + mNewPasswordLayout.setError(null); xmppConnectionService.updateAccountPasswordOnServer(mAccount, newPassword, ChangePasswordActivity.this); mChangePasswordButton.setEnabled(false); mChangePasswordButton.setTextColor(getSecondaryTextColor()); @@ -40,6 +44,8 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti private EditText mCurrentPassword; private EditText mNewPassword; private Account mAccount; + private TextInputLayout mNewPasswordLayout; + private TextInputLayout mCurrentPasswordLayout; @Override void onBackendConnected() { @@ -65,7 +71,9 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti this.mChangePasswordButton = findViewById(R.id.right_button); this.mChangePasswordButton.setOnClickListener(this.mOnChangePasswordButtonClicked); this.mCurrentPassword = findViewById(R.id.current_password); + this.mCurrentPassword.setCustomSelectionActionModeCallback(new DisabledActionModeCallback()); this.mNewPassword = findViewById(R.id.new_password); + this.mNewPassword.setCustomSelectionActionModeCallback(new DisabledActionModeCallback()); } @Override @@ -92,18 +100,27 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti @Override public void onPasswordChangeFailed() { - runOnUiThread(new Runnable() { - @Override - public void run() { - mNewPassword.setError(getString(R.string.could_not_change_password)); - mChangePasswordButton.setEnabled(true); - mChangePasswordButton.setTextColor(getPrimaryTextColor()); - mChangePasswordButton.setText(R.string.change_password); - } + runOnUiThread(() -> { + mNewPasswordLayout.setError(getString(R.string.could_not_change_password)); + mChangePasswordButton.setEnabled(true); + mChangePasswordButton.setTextColor(getPrimaryTextColor()); + mChangePasswordButton.setText(R.string.change_password); }); } + private void removeErrorsOnAllBut(TextInputLayout exception) { + if (this.mCurrentPasswordLayout != exception) { + this.mCurrentPasswordLayout.setErrorEnabled(false); + this.mCurrentPasswordLayout.setError(null); + } + if (this.mNewPasswordLayout != exception) { + this.mNewPasswordLayout.setErrorEnabled(false); + this.mNewPasswordLayout.setError(null); + } + + } + public void refreshUiReal() { } diff --git a/src/main/java/de/pixart/messenger/ui/widget/DisabledActionModeCallback.java b/src/main/java/de/pixart/messenger/ui/widget/DisabledActionModeCallback.java new file mode 100644 index 000000000..5acf3a666 --- /dev/null +++ b/src/main/java/de/pixart/messenger/ui/widget/DisabledActionModeCallback.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2018, Daniel Gultsch All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package de.pixart.messenger.ui.widget; + +import android.view.ActionMode; +import android.view.Menu; +import android.view.MenuItem; + +public class DisabledActionModeCallback implements ActionMode.Callback { + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + return false; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return false; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + return false; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + + } +} \ No newline at end of file diff --git a/src/main/res/layout/activity_change_password.xml b/src/main/res/layout/activity_change_password.xml index d8e7d1785..1dfdc8309 100644 --- a/src/main/res/layout/activity_change_password.xml +++ b/src/main/res/layout/activity_change_password.xml @@ -26,6 +26,7 @@