Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-04-26 20:32:46 +0300
committerStefan Niedermann <info@niedermann.it>2021-04-26 21:08:29 +0300
commite7757443af6d4c53abd7b3dfb0f253b482dd0eeb (patch)
tree064ed613d2e85da9be82ccc03d813611f3c0429d /News-Android-App/src/main/java
parent9c3df5ac933cdbaa514786e9f0dd30e647d8db25 (diff)
#865 Display avatar of the current user account in the top right
Diffstat (limited to 'News-Android-App/src/main/java')
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java40
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListFragment.java39
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java30
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java10
4 files changed, 41 insertions, 78 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
index 573eb86b..2744399b 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
@@ -72,6 +72,9 @@ import com.nextcloud.android.sso.exceptions.SSOException;
import com.nextcloud.android.sso.exceptions.TokenMismatchException;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
import com.nextcloud.android.sso.ui.UiExceptionManager;
+import com.nostra13.universalimageloader.core.DisplayImageOptions;
+import com.nostra13.universalimageloader.core.ImageLoader;
+import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -100,6 +103,7 @@ import de.luhmer.owncloudnewsreader.events.podcast.FeedPanelSlideEvent;
import de.luhmer.owncloudnewsreader.helper.DatabaseUtils;
import de.luhmer.owncloudnewsreader.helper.ThemeChooser;
import de.luhmer.owncloudnewsreader.helper.ThemeUtils;
+import de.luhmer.owncloudnewsreader.model.OcsUser;
import de.luhmer.owncloudnewsreader.reader.nextcloud.RssItemObservable;
import de.luhmer.owncloudnewsreader.services.DownloadImagesService;
import de.luhmer.owncloudnewsreader.services.DownloadWebPageService;
@@ -120,6 +124,7 @@ import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static androidx.annotation.VisibleForTesting.PROTECTED;
import static de.luhmer.owncloudnewsreader.LoginDialogActivity.RESULT_LOGIN;
import static de.luhmer.owncloudnewsreader.LoginDialogActivity.ShowAlertDialog;
+import static de.luhmer.owncloudnewsreader.SettingsActivity.PREF_SERVER_SETTINGS;
/**
* An activity representing a list of NewsReader. This activity has different
@@ -226,6 +231,11 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
initAccountManager();
+ binding.toolbarLayout.avatar.setVisibility(View.VISIBLE);
+ binding.toolbarLayout.avatar.setOnClickListener((v) -> {
+ startActivityForResult(new Intent(this, LoginDialogActivity.class), RESULT_LOGIN);
+ });
+
// Init config --> if nothing is configured start the login dialog.
if (!isUserLoggedIn()) {
startLoginActivity();
@@ -571,6 +581,28 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
}
@Override
+ public void onUserInfoUpdated(OcsUser userInfo) {
+ final int placeHolder = R.mipmap.ic_launcher;
+ DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
+ .displayer(new CircleBitmapDisplayer())
+ .showImageOnLoading(placeHolder)
+ .showImageForEmptyUri(placeHolder)
+ .showImageOnFail(placeHolder)
+ .cacheOnDisk(true)
+ .cacheInMemory(true)
+ .build();
+
+ if(userInfo.getId() != null) {
+ String mOc_root_path = mPrefs.getString(SettingsActivity.EDT_OWNCLOUDROOTPATH_STRING, null);
+ String avatarUrl = mOc_root_path + "/index.php/avatar/" + Uri.encode(userInfo.getId()) + "/64";
+ ImageLoader.getInstance().displayImage(avatarUrl, binding.toolbarLayout.avatar, displayImageOptions);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ binding.toolbarLayout.avatar.setTooltipText(userInfo.getDisplayName());
+ }
+ }
+ }
+
+ @Override
public void onChildItemLongClicked(long idFeed) {
startDialogFragment(idFeed, false);
}
@@ -920,9 +952,14 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
getSlidingListFragment().ListViewNotifyDataSetChanged();
}
+ if (requestCode == RESULT_LOGIN) {
+ Intent intent = getIntent().putExtra(PREF_SERVER_SETTINGS, true);
+ setResult(RESULT_OK, intent);
+ }
+
if(requestCode == RESULT_SETTINGS) {
// Extra is set if user entered/modified server settings
- if (data == null || data.getBooleanExtra(SettingsActivity.PREF_SERVER_SETTINGS,false)) {
+ if (data == null || data.getBooleanExtra(PREF_SERVER_SETTINGS,false)) {
resetUiAndStartSync();
} else {
//Update settings of image Loader
@@ -1025,7 +1062,6 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
}
private void resetUiAndStartSync() {
- getSlidingListFragment().loadOwncloudOrNextcloudBanner();
getSlidingListFragment().reloadAdapter();
updateCurrentRssView();
startSync();
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListFragment.java
index c9fccd9e..0d6112de 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListFragment.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListFragment.java
@@ -24,7 +24,6 @@ package de.luhmer.owncloudnewsreader;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.net.Uri;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
@@ -35,16 +34,11 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
import com.google.android.material.navigation.NavigationView;
-import com.nostra13.universalimageloader.core.DisplayImageOptions;
-import com.nostra13.universalimageloader.core.ImageLoader;
-import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -134,6 +128,7 @@ public class NewsReaderListFragment extends Fragment implements OnCreateContextM
void onTopItemClicked(long idFeed, boolean isFolder, Long onTopItemClicked);
void onChildItemLongClicked(long idFeed);
void onTopItemLongClicked(long idFeed, boolean isFolder);
+ void onUserInfoUpdated(OcsUser userInfo);
}
/**
@@ -154,8 +149,6 @@ public class NewsReaderListFragment extends Fragment implements OnCreateContextM
Bundle savedInstanceState) {
binding = FragmentNewsreaderListBinding.inflate(requireActivity().getLayoutInflater(), container, false);
- loadOwncloudOrNextcloudBanner();
-
lvAdapter = new SubscriptionExpandableListAdapter(getActivity(), new DatabaseConnectionOrm(getActivity()), binding.expandableListView, mPrefs);
lvAdapter.setHandlerListener(expListTextClickedListener);
@@ -203,13 +196,6 @@ public class NewsReaderListFragment extends Fragment implements OnCreateContextM
mCallbacks = null;
}
- protected void loadOwncloudOrNextcloudBanner() {
- if(!Constants.isNextCloud(mPrefs)) {
- // Set ownCloud view
- binding.headerView.setBackgroundResource(R.drawable.left_drawer_header_background);
- }
- }
-
/**
* Cares about settings items in news list drawer.
* - Binds settings, shown at bottom of drawer
@@ -368,12 +354,6 @@ public class NewsReaderListFragment extends Fragment implements OnCreateContextM
// return if app is not setup yet..
return;
}
- String mUsername = mPrefs.getString(SettingsActivity.EDT_USERNAME_STRING, null);
- String mOc_root_path = mPrefs.getString(SettingsActivity.EDT_OWNCLOUDROOTPATH_STRING, null);
- String mOc_root_path_without_protocol = mOc_root_path.replace("http://", "").replace("https://", ""); //Remove http:// or https://
-
- binding.userTextView.setText(mUsername);
- binding.urlTextView.setText(mOc_root_path_without_protocol);
String uInfo = mPrefs.getString(USER_INFO_STRING, null);
if(uInfo == null) {
@@ -382,22 +362,7 @@ public class NewsReaderListFragment extends Fragment implements OnCreateContextM
try {
OcsUser userInfo = (OcsUser) fromString(uInfo);
- if (userInfo.getDisplayName() != null)
- binding.userTextView.setText(userInfo.getDisplayName());
- final int placeHolder = R.mipmap.ic_launcher;
- DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
- .displayer(new CircleBitmapDisplayer())
- .showImageOnLoading(placeHolder)
- .showImageForEmptyUri(placeHolder)
- .showImageOnFail(placeHolder)
- .cacheOnDisk(true)
- .cacheInMemory(true)
- .build();
-
- if(userInfo.getId() != null) {
- String avatarUrl = mOc_root_path + "/index.php/avatar/" + Uri.encode(userInfo.getId()) + "/64";
- ImageLoader.getInstance().displayImage(avatarUrl, binding.headerLogo, displayImageOptions);
- }
+ mCallbacks.onUserInfoUpdated(userInfo);
} catch (Exception ex) {
ex.printStackTrace();
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java
index 7b4bce4f..e46dee5b 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java
@@ -156,34 +156,4 @@ public class SettingsActivity extends AppCompatActivity {
);
setResult(RESULT_OK,intent);
}
-
- /**
- * Used to notify Activity, that server settings were touched by user.
- *
- * If server settings were touched, a result is provided by intent with corresponding request code.
- * No notify the calling activity that server settings were touched, a new extra is put to
- * response intent: PREF_SERVER_SETTINGS is set to true.
- *
- * Result has to be handled by receiving activity.
- *
- * @param requestCode
- * @param resultCode
- * @param data
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
-
- if (requestCode == RESULT_LOGIN) {
- Intent intent = getIntent().putExtra(PREF_SERVER_SETTINGS, true);
- setResult(RESULT_OK, intent);
- }
- }
-
- //@Override
- public boolean onIsMultiPane() {
- return this.getResources().getBoolean(R.bool.isTablet);
- }
-
-
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java
index 9707c4aa..e7b7dc23 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java
@@ -287,18 +287,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
checkForUnsycedChangesInDatabaseAndResetDatabase(prefFrag.getActivity());
return true;
});
-
- Preference serverSettings = prefFrag.findPreference(PREF_SERVER_SETTINGS);
- serverSettings.setOnPreferenceClickListener(preference -> {
- Intent loginIntent = new Intent(getActivity(), LoginDialogActivity.class);
- getActivity().startActivityForResult(loginIntent, RESULT_LOGIN);
- return true;
- });
}
- private void bindNotificationPreferences(PreferenceFragmentCompat prefFrag)
- {
+ private void bindNotificationPreferences(PreferenceFragmentCompat prefFrag) {
bindPreferenceBooleanToValue(prefFrag.findPreference(CB_SHOW_NOTIFICATION_NEW_ARTICLES_STRING));
}