use of android.support.v7.widget.helper.ItemTouchHelper.END in project android_packages_apps_Settings by crdroidandroid.
the class UserSettings method updateUserList.
private void updateUserList() {
if (getActivity() == null)
return;
List<UserInfo> users = mUserManager.getUsers(true);
final Context context = getActivity();
final boolean voiceCapable = Utils.isVoiceCapable(context);
final ArrayList<Integer> missingIcons = new ArrayList<>();
final ArrayList<UserPreference> userPreferences = new ArrayList<>();
int guestId = UserPreference.USERID_GUEST_DEFAULTS;
userPreferences.add(mMePreference);
for (UserInfo user : users) {
if (!user.supportsSwitchToByUser()) {
// e.g. Managed profiles appear under Accounts Settings instead
continue;
}
UserPreference pref;
if (user.id == UserHandle.myUserId()) {
pref = mMePreference;
} else if (user.isGuest()) {
// Skip over Guest. We add generic Guest settings after this loop
guestId = user.id;
continue;
} else {
// With Telephony:
// Secondary user: Settings
// Guest: Settings
// Restricted Profile: There is no Restricted Profile
// Without Telephony:
// Secondary user: Delete
// Guest: Nothing
// Restricted Profile: Settings
final boolean showSettings = mUserCaps.mIsAdmin && (voiceCapable || user.isRestricted());
final boolean showDelete = mUserCaps.mIsAdmin && (!voiceCapable && !user.isRestricted() && !user.isGuest());
pref = new UserPreference(getPrefContext(), null, user.id, showSettings ? this : null, showDelete ? this : null);
pref.setKey("id=" + user.id);
userPreferences.add(pref);
if (user.isAdmin()) {
pref.setSummary(R.string.user_admin);
}
pref.setTitle(user.name);
pref.setSelectable(false);
}
if (pref == null) {
continue;
}
if (!isInitialized(user)) {
if (user.isRestricted()) {
pref.setSummary(R.string.user_summary_restricted_not_set_up);
} else {
pref.setSummary(R.string.user_summary_not_set_up);
}
pref.setOnPreferenceClickListener(this);
pref.setSelectable(true);
} else if (user.isRestricted()) {
pref.setSummary(R.string.user_summary_restricted_profile);
}
if (user.iconPath != null) {
if (mUserIcons.get(user.id) == null) {
// Icon not loaded yet, print a placeholder
missingIcons.add(user.id);
pref.setIcon(getEncircledDefaultIcon());
} else {
setPhotoId(pref, user);
}
} else {
// Icon not available yet, print a placeholder
pref.setIcon(getEncircledDefaultIcon());
}
}
// Add a temporary entry for the user being created
if (mAddingUser) {
UserPreference pref = new UserPreference(getPrefContext(), null, UserPreference.USERID_UNKNOWN, null, null);
pref.setEnabled(false);
pref.setTitle(mAddingUserName);
pref.setIcon(getEncircledDefaultIcon());
userPreferences.add(pref);
}
// Check if Guest tile should be added.
if (!mUserCaps.mIsGuest && (mUserCaps.mCanAddGuest || mUserCaps.mDisallowAddUserSetByAdmin)) {
// Add a virtual Guest user for guest defaults
UserPreference pref = new UserPreference(getPrefContext(), null, UserPreference.USERID_GUEST_DEFAULTS, mUserCaps.mIsAdmin && voiceCapable ? this : null, /* settings icon handler */
null);
pref.setTitle(R.string.user_guest);
pref.setIcon(getEncircledDefaultIcon());
userPreferences.add(pref);
pref.setDisabledByAdmin(mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
int finalGuestId = guestId;
pref.setOnPreferenceClickListener(preference -> {
int id = finalGuestId;
if (id == UserPreference.USERID_GUEST_DEFAULTS) {
UserInfo guest = mUserManager.createGuest(getContext(), preference.getTitle().toString());
if (guest != null) {
id = guest.id;
}
}
try {
ActivityManager.getService().switchUser(id);
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
return true;
});
}
// Sort list of users by serialNum
Collections.sort(userPreferences, UserPreference.SERIAL_NUMBER_COMPARATOR);
getActivity().invalidateOptionsMenu();
// Load the icons
if (missingIcons.size() > 0) {
loadIconsAsync(missingIcons);
}
PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.removeAll();
// If profiles are supported, userPreferences will be added to the category labeled
// "User & Profiles", otherwise the category is skipped and elements are added directly
// to preferenceScreen
PreferenceGroup groupToAddUsers;
if (mUserCaps.mCanAddRestrictedProfile) {
mUserListCategory.removeAll();
mUserListCategory.setOrder(Preference.DEFAULT_ORDER);
preferenceScreen.addPreference(mUserListCategory);
groupToAddUsers = mUserListCategory;
} else {
groupToAddUsers = preferenceScreen;
}
for (UserPreference userPreference : userPreferences) {
userPreference.setOrder(Preference.DEFAULT_ORDER);
groupToAddUsers.addPreference(userPreference);
}
// Append Add user to the end of the list
if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) && Utils.isDeviceProvisioned(getActivity())) {
boolean moreUsers = mUserManager.canAddMoreUsers();
mAddUser.setOrder(Preference.DEFAULT_ORDER);
preferenceScreen.addPreference(mAddUser);
mAddUser.setEnabled(moreUsers && !mAddingUser);
if (!moreUsers) {
mAddUser.setSummary(getString(R.string.user_add_max_count, getMaxRealUsers()));
} else {
mAddUser.setSummary(null);
}
if (mAddUser.isEnabled()) {
mAddUser.setDisabledByAdmin(mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
}
}
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project sbt-android by scala-android.
the class HomeActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ButterKnife.bind(this);
drawer.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
// toolbar.inflateMenu(R.menu.main);
setActionBar(toolbar);
if (savedInstanceState == null) {
animateToolbar();
}
dribbblePrefs = DribbblePrefs.get(this);
designerNewsPrefs = DesignerNewsPrefs.get(this);
filtersAdapter = new FilterAdapter(this, SourceManager.getSources(this), new FilterAdapter.FilterAuthoriser() {
@Override
public void requestDribbbleAuthorisation(View sharedElemeent, Source forSource) {
Intent login = new Intent(HomeActivity.this, DribbbleLogin.class);
login.putExtra(FabDialogMorphSetup.EXTRA_SHARED_ELEMENT_START_COLOR, ContextCompat.getColor(HomeActivity.this, R.color.background_dark));
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(HomeActivity.this, sharedElemeent, getString(R.string.transition_dribbble_login));
startActivityForResult(login, getAuthSourceRequestCode(forSource), options.toBundle());
}
});
dataManager = new DataManager(this, filtersAdapter) {
@Override
public void onDataLoaded(List<? extends PlaidItem> data) {
adapter.addAndResort(data);
checkEmptyState();
}
};
adapter = new FeedAdapter(this, dataManager, columns, PocketUtils.isPocketInstalled(this));
grid.setAdapter(adapter);
layoutManager = new GridLayoutManager(this, columns);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return adapter.getItemColumnSpan(position);
}
});
grid.setLayoutManager(layoutManager);
grid.addOnScrollListener(gridScroll);
grid.addOnScrollListener(new InfiniteScrollListener(layoutManager, dataManager) {
@Override
public void onLoadMore() {
dataManager.loadAllDataSources();
}
});
grid.setHasFixedSize(true);
// drawer layout treats fitsSystemWindows specially so we have to handle insets ourselves
drawer.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
@Override
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
// inset the toolbar down by the status bar height
ViewGroup.MarginLayoutParams lpToolbar = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
lpToolbar.topMargin += insets.getSystemWindowInsetTop();
lpToolbar.rightMargin += insets.getSystemWindowInsetRight();
toolbar.setLayoutParams(lpToolbar);
// inset the grid top by statusbar+toolbar & the bottom by the navbar (don't clip)
grid.setPadding(grid.getPaddingLeft(), insets.getSystemWindowInsetTop() + ViewUtils.getActionBarSize(HomeActivity.this), // landscape
grid.getPaddingRight() + insets.getSystemWindowInsetRight(), grid.getPaddingBottom());
// inset the fab for the navbar
ViewGroup.MarginLayoutParams lpFab = (ViewGroup.MarginLayoutParams) fab.getLayoutParams();
// portrait
lpFab.bottomMargin += insets.getSystemWindowInsetBottom();
// landscape
lpFab.rightMargin += insets.getSystemWindowInsetRight();
fab.setLayoutParams(lpFab);
// we place a background behind the status bar to combine with it's semi-transparent
// color to get the desired appearance. Set it's height to the status bar height
View statusBarBackground = findViewById(R.id.status_bar_background);
FrameLayout.LayoutParams lpStatus = (FrameLayout.LayoutParams) statusBarBackground.getLayoutParams();
lpStatus.height = insets.getSystemWindowInsetTop();
statusBarBackground.setLayoutParams(lpStatus);
// inset the filters list for the status bar / navbar
// need to set the padding end for landscape case
final boolean ltr = filtersList.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
filtersList.setPaddingRelative(filtersList.getPaddingStart(), filtersList.getPaddingTop() + insets.getSystemWindowInsetTop(), filtersList.getPaddingEnd() + (ltr ? insets.getSystemWindowInsetRight() : 0), filtersList.getPaddingBottom() + insets.getSystemWindowInsetBottom());
// clear this listener so insets aren't re-applied
drawer.setOnApplyWindowInsetsListener(null);
return insets.consumeSystemWindowInsets();
}
});
setupTaskDescription();
filtersList.setAdapter(filtersAdapter);
filtersAdapter.addFilterChangedListener(filtersChangedListener);
filtersAdapter.addFilterChangedListener(dataManager);
dataManager.loadAllDataSources();
ItemTouchHelper.Callback callback = new FilterTouchHelperCallback(filtersAdapter);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.attachToRecyclerView(filtersList);
checkEmptyState();
checkConnectivity();
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project GomoTest by suReZj.
the class EditImageActivity method onBackPressed.
// end inner class
@Override
public void onBackPressed() {
switch(mode) {
case MODE_STICKERS:
mStickerFragment.backToMain(EditImageActivity.this);
return;
case // 滤镜编辑状态
MODE_FILTER:
// 保存滤镜贴图
mFilterListFragment.backToMain(EditImageActivity.this);
return;
case // 剪切图片保存
MODE_CROP:
mCropFragment.backToMain(EditImageActivity.this);
return;
case // 旋转图片保存
MODE_ROTATE:
mRotateFragment.backToMain(EditImageActivity.this);
return;
case MODE_TEXT:
mAddTextFragment.backToMain(EditImageActivity.this);
return;
case MODE_PAINT:
mPaintFragment.backToMain(EditImageActivity.this);
return;
case // 从美颜模式中返回
MODE_BEAUTY:
mBeautyFragment.backToMain(EditImageActivity.this);
return;
}
if (canAutoExit()) {
onSaveTaskDone();
} else {
// 图片还未被保存 弹出提示框确认
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage(R.string.exit_without_save).setCancelable(false).setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mContext.finish();
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project quran_android by quran.
the class PagerActivity method onCreate.
@Override
public void onCreate(Bundle savedInstanceState) {
QuranApplication quranApp = (QuranApplication) getApplication();
quranApp.refreshLocale(this, false);
super.onCreate(savedInstanceState);
// field injection
getPagerActivityComponent().inject(this);
bookmarksCache = new SparseBooleanArray();
boolean shouldAdjustPageNumber = false;
isDualPages = QuranUtils.isDualPages(this, quranScreenInfo);
// remove the window background to avoid overdraw. note that, per Romain's blog, this is
// acceptable (as long as we don't set the background color to null in the theme, since
// that is used to generate preview windows).
getWindow().setBackgroundDrawable(null);
numberOfPages = quranInfo.getNumberOfPages();
numberOfPagesDual = quranInfo.getNumberOfPagesDual();
int page = -1;
isActionBarHidden = true;
if (savedInstanceState != null) {
Timber.d("non-null saved instance state!");
DownloadAudioRequest lastAudioRequest = savedInstanceState.getParcelable(LAST_AUDIO_DL_REQUEST);
if (lastAudioRequest != null) {
Timber.d("restoring request from saved instance!");
lastAudioDownloadRequest = lastAudioRequest;
}
page = savedInstanceState.getInt(LAST_READ_PAGE, -1);
if (page != -1) {
page = numberOfPages - page;
}
showingTranslation = savedInstanceState.getBoolean(LAST_READING_MODE_IS_TRANSLATION, false);
if (savedInstanceState.containsKey(LAST_ACTIONBAR_STATE)) {
isActionBarHidden = !savedInstanceState.getBoolean(LAST_ACTIONBAR_STATE);
}
boolean lastWasDualPages = savedInstanceState.getBoolean(LAST_WAS_DUAL_PAGES, isDualPages);
shouldAdjustPageNumber = (lastWasDualPages != isDualPages);
start = savedInstanceState.getParcelable(LAST_START_POINT);
end = savedInstanceState.getParcelable(LAST_ENDING_POINT);
this.lastAudioRequest = savedInstanceState.getParcelable(LAST_AUDIO_REQUEST);
} else {
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
page = numberOfPages - extras.getInt("page", Constants.PAGES_FIRST);
showingTranslation = extras.getBoolean(EXTRA_JUMP_TO_TRANSLATION, showingTranslation);
highlightedSura = extras.getInt(EXTRA_HIGHLIGHT_SURA, -1);
highlightedAyah = extras.getInt(EXTRA_HIGHLIGHT_AYAH, -1);
}
}
compositeDisposable = new CompositeDisposable();
// subscribe to changes in bookmarks
compositeDisposable.add(bookmarkModel.bookmarksObservable().observeOn(AndroidSchedulers.mainThread()).subscribe(ignore -> {
onBookmarksChanged();
}));
final Resources resources = getResources();
isImmersiveInPortrait = resources.getBoolean(R.bool.immersive_in_portrait);
isLandscape = resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
ayahToolBarTotalHeight = resources.getDimensionPixelSize(R.dimen.toolbar_total_height);
setContentView(R.layout.quran_page_activity_slider);
audioStatusBar = (AudioStatusBar) findViewById(R.id.audio_area);
audioStatusBar.setIsDualPageMode(quranScreenInfo.isDualPageMode());
audioStatusBar.setQariList(audioUtils.getQariList(this));
audioStatusBar.setAudioBarListener(this);
audioBarParams = (ViewGroup.MarginLayoutParams) audioStatusBar.getLayoutParams();
toolBarArea = findViewById(R.id.toolbar_area);
translationsSpinner = (QuranSpinner) findViewById(R.id.spinner);
// this is the colored view behind the status bar on kitkat and above
final View statusBarBackground = findViewById(R.id.status_bg);
statusBarBackground.getLayoutParams().height = getStatusBarHeight();
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (quranSettings.isArabicNames() || QuranUtils.isRtl()) {
// remove when we remove LTR from quran_page_activity's root
ViewCompat.setLayoutDirection(toolbar, ViewCompat.LAYOUT_DIRECTION_RTL);
}
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayShowHomeEnabled(true);
ab.setDisplayHomeAsUpEnabled(true);
}
initAyahActionPanel();
if (showingTranslation && translationItems != null) {
updateActionBarSpinner();
} else {
updateActionBarTitle(numberOfPages - page);
}
lastPopupTime = System.currentTimeMillis();
pagerAdapter = new QuranPageAdapter(getSupportFragmentManager(), isDualPages, showingTranslation, quranInfo);
ayahToolBar = (AyahToolBar) findViewById(R.id.ayah_toolbar);
final NonRestoringViewPager nonRestoringViewPager = findViewById(R.id.quran_pager);
nonRestoringViewPager.setIsDualPagesInLandscape(QuranUtils.isDualPagesInLandscape(this, quranScreenInfo));
viewPager = nonRestoringViewPager;
viewPager.setAdapter(pagerAdapter);
ayahToolBar.setOnItemSelectedListener(new AyahMenuItemSelectionHandler());
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (ayahToolBar.isShowing() && ayahToolBarPos != null) {
final int startPage = quranInfo.getPageFromSuraAyah(start.sura, start.ayah);
int barPos = quranInfo.getPosFromPage(startPage, isDualPages);
if (position == barPos) {
// Swiping to next ViewPager page (i.e. prev quran page)
ayahToolBarPos.xScroll = 0 - positionOffsetPixels;
} else if (position == barPos - 1) {
// Swiping to prev ViewPager page (i.e. next quran page)
ayahToolBarPos.xScroll = viewPager.getWidth() - positionOffsetPixels;
} else {
// Totally off screen, should hide toolbar
ayahToolBar.setVisibility(View.GONE);
return;
}
ayahToolBar.updatePosition(ayahToolBarPos);
// If the toolbar is not showing, show it
if (ayahToolBar.getVisibility() != View.VISIBLE) {
ayahToolBar.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onPageSelected(int position) {
Timber.d("onPageSelected(): %d", position);
final int page = quranInfo.getPageFromPos(position, isDualPages);
if (quranSettings.shouldDisplayMarkerPopup()) {
lastPopupTime = QuranDisplayHelper.displayMarkerPopup(PagerActivity.this, quranInfo, page, lastPopupTime);
if (isDualPages) {
lastPopupTime = QuranDisplayHelper.displayMarkerPopup(PagerActivity.this, quranInfo, page - 1, lastPopupTime);
}
}
if (!showingTranslation) {
updateActionBarTitle(page);
} else {
refreshActionBarSpinner();
}
if (bookmarksCache.indexOfKey(page) < 0) {
if (isDualPages) {
if (bookmarksCache.indexOfKey(page - 1) < 0) {
checkIfPageIsBookmarked(page - 1, page);
}
} else {
// we don't have the key
checkIfPageIsBookmarked(page);
}
}
// If we're more than 1 page away from ayah selection end ayah mode
if (isInAyahMode) {
final int startPage = quranInfo.getPageFromSuraAyah(start.sura, start.ayah);
int ayahPos = quranInfo.getPosFromPage(startPage, isDualPages);
if (Math.abs(ayahPos - position) > 1) {
endAyahMode();
}
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
setUiVisibilityListener();
audioStatusBar.setVisibility(View.VISIBLE);
}
toggleActionBarVisibility(true);
if (shouldAdjustPageNumber) {
// when going from two page per screen to one or vice versa, we adjust the page number,
// such that the first page is always selected.
int curPage = numberOfPages - page;
if (isDualPages) {
if (curPage % 2 != 0) {
curPage++;
}
curPage = numberOfPagesDual - (curPage / 2);
} else {
if (curPage % 2 == 0) {
curPage--;
}
curPage = numberOfPages - curPage;
}
page = curPage;
} else if (isDualPages) {
page = page / 2;
}
viewPager.setCurrentItem(page);
// just got created, need to reconnect to service
shouldReconnect = true;
// enforce orientation lock
if (quranSettings.isLockOrientation()) {
int current = getResources().getConfiguration().orientation;
if (quranSettings.isLandscapeOrientation()) {
if (current == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
return;
}
} else if (current == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
return;
}
}
LocalBroadcastManager.getInstance(this).registerReceiver(audioReceiver, new IntentFilter(AudioService.AudioUpdateIntent.INTENT_NAME));
downloadReceiver = new DefaultDownloadReceiver(this, QuranDownloadService.DOWNLOAD_TYPE_AUDIO);
String action = QuranDownloadNotifier.ProgressIntent.INTENT_NAME;
LocalBroadcastManager.getInstance(this).registerReceiver(downloadReceiver, new IntentFilter(action));
downloadReceiver.setListener(this);
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project Detours-Android by TeamDetours.
the class Edit_Profile_Activity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_edit__profile_);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Initialize the variables
ProfilePic = (ImageView) findViewById(R.id.ProfilePic);
ChangePicBTN = (Button) findViewById(R.id.EditPic);
LastnameEditIBTN = (ImageButton) findViewById(R.id.LastnameEditIBTN);
LastnameViewSwitcher = (ViewSwitcher) findViewById(R.id.LastNameSwitcher);
LastnameTV = (TextView) findViewById(R.id.LastnameTV);
LastNameEditableTXT = (EditText) findViewById(R.id.LastNameEditTXT);
EmailViewSwitcher = (ViewSwitcher) findViewById(R.id.EmailSwitcher);
EmailEditIBTN = (ImageButton) findViewById(R.id.EmailEditIBTN);
EmailTV = (TextView) findViewById(R.id.EmailTV);
EmailEditableTXT = (EditText) findViewById(R.id.EmailEditTXT);
FirstnameEditIBTN = (ImageButton) findViewById(R.id.FirstnameEditIBTN);
FirstnameSwitcher = (ViewSwitcher) findViewById(R.id.FirstNameSwitcher);
FirstnameTV = (TextView) findViewById(R.id.FirstnameTV);
FirstNameEditableTXT = (EditText) findViewById(R.id.FirstNameEditTXT);
btnUpdateProfile = (Button) findViewById(R.id.btnUpdateProfile);
// Disable the register button until all fields are not empty and have changed
btnUpdateProfile.setEnabled(false);
// Get the shared preferences of the users and file page to image
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
m_path = settings.getString("filepath", m_path);
// Load file path if not null
if (m_path != null) {
Picasso.with(Edit_Profile_Activity.this).load(m_path).noPlaceholder().centerCrop().fit().into(ProfilePic);
}
// Option to change the users photo
ChangePicBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
}
});
// Set users first name programmatically by retrieving value from profile page (getIntent())
// Do not override retrieved values upon editing
// We will retrieve values for username, fname, lname, and email from profile activity
// because that activity will make a call to the server to get user data.
Bundle currentUserProfileData = getIntent().getExtras();
if (currentUserProfileData != null) {
fname = currentUserProfileData.getString("Fname");
lname = currentUserProfileData.getString("Lname");
email = currentUserProfileData.getString("Email");
} else {
// Display this error if connection to server breaks for some odd reason before updating
Toast.makeText(Edit_Profile_Activity.this, "An unexpected error has occurred.", Toast.LENGTH_LONG).show();
Intent intent = new Intent(Edit_Profile_Activity.this, Profile_Activity.class);
startActivity(intent);
}
FirstnameTV.setText(fname);
FirstNameEditableTXT.setText(fname);
// Set users last name programmatically by retrieving value from profile page (getIntent())
LastnameTV.setText(lname);
LastNameEditableTXT.setText(lname);
// Set users email programmatically by retrieving value from profile page (getIntent())
EmailTV.setText(email);
EmailEditableTXT.setText(email);
// Make sure that if the user is editing, do not allow them to update profile if field is empty
FirstNameEditableTXT.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
isFieldsEmpty();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
LastNameEditableTXT.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
isFieldsEmpty();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
EmailEditableTXT.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
isFieldsEmpty();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
// Declare variable to manage the virtual keyboard on UI
final InputMethodManager keyboard = (InputMethodManager) this.getSystemService((Service.INPUT_METHOD_SERVICE));
// This will handle the actions for the users first name with two different views
FirstnameEditIBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (FirstnameSwitcher.getCurrentView() != FirstNameEditableTXT) {
// Display the edit view and set check mark.
FirstnameSwitcher.showNext();
FirstnameEditIBTN.setImageResource(R.drawable.checkmark);
// Ensure virtual keyboard is enabled and focused at end of input field
keyboard.showSoftInput(FirstNameEditableTXT, 0);
FirstNameEditableTXT.requestFocus(FirstNameEditableTXT.getText().length());
FirstNameEditableTXT.setSelection(FirstNameEditableTXT.getText().length());
} else {
// Display the text view and set edit symbol
FirstnameSwitcher.showPrevious();
FirstnameEditIBTN.setImageResource(R.drawable.editsym);
// Display the info
FirstnameTV.setText(FirstNameEditableTXT.getText().toString());
// Update users first name to be sent to server to update DB
fnameEdit = FirstNameEditableTXT.getText().toString();
// Ensure user cant accidentally change input if virtual keyboard is still enabled
keyboard.hideSoftInputFromWindow(FirstNameEditableTXT.getWindowToken(), 0);
}
}
});
// This will handle the actions for the users last name with two different views
LastnameEditIBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (LastnameViewSwitcher.getCurrentView() != LastNameEditableTXT) {
// Display the edit view and set check mark.
LastnameViewSwitcher.showNext();
LastnameEditIBTN.setImageResource(R.drawable.checkmark);
// Ensure virtual keyboard is enabled and focused on the input field
keyboard.showSoftInput(LastNameEditableTXT, 0);
LastNameEditableTXT.requestFocus(LastNameEditableTXT.getText().length());
LastNameEditableTXT.setSelection(LastNameEditableTXT.getText().length());
} else {
// Display the text view and set edit symbol
LastnameViewSwitcher.showPrevious();
LastnameEditIBTN.setImageResource(R.drawable.editsym);
// Display the info
LastnameTV.setText(LastNameEditableTXT.getText().toString());
// Update users last name to be sent to server to update DB
lnameEdit = LastNameEditableTXT.getText().toString();
// Ensure user cant accidentally change input if virtual keyboard is still enabled
keyboard.hideSoftInputFromWindow(LastNameEditableTXT.getWindowToken(), 0);
}
}
});
// This will handle the actions for the users email with two different views
EmailEditIBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (EmailViewSwitcher.getCurrentView() != EmailEditableTXT) {
// Display the edit view and set check mark.
EmailViewSwitcher.showNext();
EmailEditIBTN.setImageResource(R.drawable.checkmark);
// Ensure virtual keyboard is enabled and focused on the input field
keyboard.showSoftInput(EmailEditableTXT, 0);
EmailEditableTXT.requestFocus(EmailEditableTXT.getText().length());
EmailEditableTXT.setSelection(EmailEditableTXT.getText().length());
} else {
// Display the text view and set edit symbol
EmailViewSwitcher.showPrevious();
EmailEditIBTN.setImageResource(R.drawable.editsym);
// Display the info
EmailTV.setText(EmailEditableTXT.getText().toString());
// Update users email to be sent to server to update DB
emailEdit = EmailEditableTXT.getText().toString();
// Ensure user cant accidentally change input if virtual keyboard is still enabled
keyboard.hideSoftInputFromWindow(EmailEditableTXT.getWindowToken(), 0);
}
}
});
// Access shared preferences to get the consumers username
SharedPreferences usernameCredential = getSharedPreferences("Profile Preferences", Context.MODE_PRIVATE);
username = usernameCredential.getString(getString(R.string.saved_username_key), null);
/**
********************************************************************
* Purpose: This function handles a click on the "Update Profile" button
* and sends the user data to the server to connect to the database in
* order to update the user's information.
*
* Pre-condition: User does not make changes(click not handled).
*
* Post-condition: User makes changes (click handled).
***********************************************************************
*/
btnUpdateProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fnameEdit = FirstNameEditableTXT.getText().toString();
lnameEdit = LastNameEditableTXT.getText().toString();
emailEdit = EmailEditableTXT.getText().toString();
new UpdateUser().execute("http://detours.us-west-2.elasticbeanstalk.com/Service1.svc/UpdateUser");
}
});
}
Aggregations