@Override
 public void itemClicked(View v, final int position) {
   clickedPosition = position;
   if (v instanceof RelativeLayout) {
     String videoUrl = videoList.get(position).player;
     UrlHelper.playVideo(getActivity(), videoUrl);
   } else if (v instanceof ImageButton) {
     PopupMenu popupMenu = new PopupMenu(getActivity(), v);
     if (isMy) {
       popupMenu.inflate(R.menu.popup_menu_my_video);
     } else {
       popupMenu.inflate(R.menu.popup_menu_video);
     }
     popupMenu.setOnMenuItemClickListener(
         item -> {
           switch (item.getItemId()) {
             case R.id.add:
               AdditionRequests.addVideo(getActivity(), videoList.get(position));
               return true;
             case R.id.add_to_album:
               AdditionRequests.addVideoToAlbum(getFragmentManager(), videoList.get(position));
               return true;
             case R.id.delete:
               showDeleteDialog();
               return true;
             default:
               return false;
           }
         });
     popupMenu.show();
   }
 }
  private void showMorePopup(
      View v, final GithubComment comment, final boolean canEdit, final boolean canDelete) {
    PopupMenu menu = new PopupMenu(context, v);
    menu.inflate(R.menu.comment_popup);

    menu.getMenu().findItem(R.id.m_edit).setEnabled(canEdit);
    menu.getMenu().findItem(R.id.m_delete).setEnabled(canDelete);

    menu.setOnMenuItemClickListener(
        new PopupMenu.OnMenuItemClickListener() {
          @Override
          public boolean onMenuItemClick(MenuItem menuItem) {
            switch (menuItem.getItemId()) {
              case R.id.m_edit:
                if (editCommentListener != null) {
                  editCommentListener.onEditComment(comment);
                }
                break;
              case R.id.m_delete:
                if (deleteCommentListener != null) {
                  deleteCommentListener.onDeleteComment(comment);
                }
                break;
            }
            return false;
          }
        });

    menu.show();
  }
  public void showMenu(View v) {
    PopupMenu popup = new PopupMenu(getActivity(), v);

    // This activity implements OnMenuItemClickListener
    popup.setOnMenuItemClickListener(
        new PopupMenu.OnMenuItemClickListener() {
          @Override
          public boolean onMenuItemClick(MenuItem item) {
            return false;
          }
        });
    popup.inflate(R.menu.share_menu);
    popup.show();
  }
Exemplo n.º 4
0
 public void showPopUp(View v, Todo todo, int position) {
   PopupMenu popup = new PopupMenu(mContext, v);
   popup.setOnMenuItemClickListener(
       new PopupMenu.OnMenuItemClickListener() {
         @Override
         public boolean onMenuItemClick(MenuItem item) {
           switch (item.getItemId()) {
             case R.id.remove_todo:
               listener.onDeleteClick(todo, position);
               return true;
             case R.id.share_todo:
               listener.onShareClick(todo);
               return true;
             default:
               return false;
           }
         }
       });
   popup.inflate(R.menu.menu_popup_todo);
   popup.show();
 }
  @SuppressLint("LongLogTag")
  @Override
  public void onClick(View v) {
    // This is an android.support.v7.widget.PopupMenu;
    PopupMenu popupMenu =
        new PopupMenu(mContext, v) {
          @Override
          public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) {
            switch (item.getItemId()) {
              case R.id.popup_delete:
                //                        deleteAlbum(mAlbum);
                Toast.makeText(mContext, "you click delete", Toast.LENGTH_SHORT).show();
                return true;

              case R.id.popup_rename:
                //                        renameAlbum(mAlbum);
                Toast.makeText(mContext, "you click rename", Toast.LENGTH_SHORT).show();
                return true;

              case R.id.popup_lock:
                //                        lockAlbum(mAlbum);
                Toast.makeText(mContext, "you click lock", Toast.LENGTH_SHORT).show();
                return true;

              case R.id.popup_unlock:
                //                        unlockAlbum(mAlbum);
                Toast.makeText(mContext, "you click unlock", Toast.LENGTH_SHORT).show();
                return true;

              case R.id.popup_set_cover:
                //                        setAlbumCover(mAlbum);
                Toast.makeText(mContext, "you click set cover", Toast.LENGTH_SHORT).show();
                return true;

              default:
                return super.onMenuItemSelected(menu, item);
            }
          }
        };

    popupMenu.inflate(R.menu.popup_menu);

    //        if (mAlbum.isLocked()) {
    //            popupMenu.getMenu().removeItem(R.id.album_overflow_lock);
    //            popupMenu.getMenu().removeItem(R.id.album_overflow_rename);
    //            popupMenu.getMenu().removeItem(R.id.album_overflow_delete);
    //        } else {
    //            popupMenu.getMenu().removeItem(R.id.album_overflow_unlock);
    //        }

    // Force icons to show
    Object menuHelper;
    Class[] argTypes;
    try {
      // PopupMenu有一个私有变量mPopup,类型是MenuPopupHelper,有一个方法setForceShowIcon,用于显示icon
      Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup");
      fMenuHelper.setAccessible(true);
      menuHelper = fMenuHelper.get(popupMenu);
      argTypes = new Class[] {boolean.class};
      menuHelper
          .getClass()
          .getDeclaredMethod("setForceShowIcon", argTypes)
          .invoke(menuHelper, true);
    } catch (Exception e) {
      // Possible exceptions are NoSuchMethodError and NoSuchFieldError
      //
      // In either case, an exception indicates something is wrong with the reflection code, or the
      // structure of the PopupMenu class or its dependencies has changed.
      //
      // These exceptions should never happen since we're shipping the AppCompat library in our own
      // apk,
      // but in the case that they do, we simply can't force icons to display, so log the error and
      // show the menu normally.

      Log.w(TAG, "error forcing menu icons to show", e);
      popupMenu.show();
      return;
    }
    popupMenu.show();

    // 调整popupMenu的位置偏移量
    try {
      Field fListPopup = menuHelper.getClass().getDeclaredField("mPopup");
      fListPopup.setAccessible(true);
      Object listPopup = fListPopup.get(menuHelper);
      argTypes = new Class[] {int.class};
      Class listPopupClass = listPopup.getClass();

      // Get the width of the popup window
      int width = (Integer) listPopupClass.getDeclaredMethod("getWidth").invoke(listPopup);

      // Invoke setHorizontalOffset() with the negative width to move left by that distance
      listPopupClass
          .getDeclaredMethod("setHorizontalOffset", argTypes)
          .invoke(listPopup, -width + 100);

      // Invoke show() to update the window's position
      listPopupClass.getDeclaredMethod("show").invoke(listPopup);
    } catch (Exception e) {
      // Again, an exception here indicates a programming error rather than an exceptional condition
      // at runtime
      Log.w(TAG, "Unable to force offset", e);
    }
    FadingOutOtherItems(popupMenu);
  }
  @NonNull
  @Override
  public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final Context wrapped = ThemeUtils.getDialogThemedContext(getActivity());
    final AlertDialog.Builder builder = new AlertDialog.Builder(wrapped);
    final Context context = builder.getContext();
    mValidator = new TwidereValidator(context);
    final LayoutInflater inflater = LayoutInflater.from(context);
    @SuppressLint("InflateParams")
    final View view = inflater.inflate(R.layout.dialog_status_quote_retweet, null);
    final DummyStatusHolderAdapter adapter = new DummyStatusHolderAdapter(context);
    adapter.setShouldShowAccountsColor(true);
    final IStatusViewHolder holder =
        new StatusViewHolder(adapter, view.findViewById(R.id.item_content));
    final ParcelableStatus status = getStatus();

    assert status != null;

    builder.setView(view);
    builder.setTitle(R.string.retweet_quote_confirm_title);
    if (isMyRetweet(status)) {
      builder.setPositiveButton(R.string.cancel_retweet, this);
    } else if (!status.user_is_protected) {
      builder.setPositiveButton(R.string.retweet, this);
    }
    builder.setNeutralButton(R.string.quote, this);
    builder.setNegativeButton(android.R.string.cancel, null);

    holder.displayStatus(status, null, false, true);

    view.findViewById(R.id.item_menu).setVisibility(View.GONE);
    view.findViewById(R.id.action_buttons).setVisibility(View.GONE);
    view.findViewById(R.id.item_content).setFocusable(false);
    view.findViewById(R.id.comment_container)
        .setVisibility(status.user_is_protected ? View.GONE : View.VISIBLE);
    final ComposeMaterialEditText mEditComment =
        (ComposeMaterialEditText) view.findViewById(R.id.edit_comment);
    mEditComment.setAccountId(status.account_id);

    final boolean sendByEnter = mPreferences.getBoolean(KEY_QUICK_SEND);
    final EditTextEnterHandler enterHandler =
        EditTextEnterHandler.attach(
            mEditComment,
            new EditTextEnterHandler.EnterListener() {
              @Override
              public boolean shouldCallListener() {
                return true;
              }

              @Override
              public boolean onHitEnter() {
                final AsyncTwitterWrapper twitter = mTwitterWrapper;
                final ParcelableStatus status = getStatus();
                if (twitter == null || status == null) return false;
                retweetOrQuote(twitter, status);
                dismiss();
                return true;
              }
            },
            sendByEnter);
    enterHandler.addTextChangedListener(
        new TextWatcher() {
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
            updateTextCount(getDialog(), s, status);
          }

          @Override
          public void afterTextChanged(Editable s) {}
        });
    final View commentMenu = view.findViewById(R.id.comment_menu);

    mPopupMenu =
        new PopupMenu(context, commentMenu, Gravity.NO_GRAVITY, R.attr.actionOverflowMenuStyle, 0);
    commentMenu.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            mPopupMenu.show();
          }
        });
    commentMenu.setOnTouchListener(mPopupMenu.getDragToOpenListener());
    mPopupMenu.inflate(R.menu.menu_dialog_comment);
    final Menu menu = mPopupMenu.getMenu();
    MenuUtils.setMenuItemAvailability(
        menu, R.id.quote_original_status, status.retweet_id > 0 || status.quoted_id > 0);
    mPopupMenu.setOnMenuItemClickListener(
        new PopupMenu.OnMenuItemClickListener() {
          @Override
          public boolean onMenuItemClick(MenuItem item) {
            if (item.isCheckable()) {
              item.setChecked(!item.isChecked());
              return true;
            }
            return false;
          }
        });

    final Dialog dialog = builder.create();
    dialog.setOnShowListener(
        new DialogInterface.OnShowListener() {
          @Override
          public void onShow(DialogInterface dialog) {
            updateTextCount(dialog, mEditComment.getText(), status);
          }
        });
    return dialog;
  }
Exemplo n.º 7
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    mGoogleApiClient =
        new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();

    locationRequest =
        LocationRequest.create()
            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            .setInterval(20000)
            .setFastestInterval(10000);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    toID = getIntent().getExtras().getInt("toID");
    user = User.getInstance();
    friend = user.getFriendsHashMap().get(String.valueOf(toID));

    popupMenu = new PopupMenu(this, toolbar, Gravity.RIGHT);
    popupMenu.setOnMenuItemClickListener(this);
    popupMenu.inflate(R.menu.popup);

    ImageButton sendButton = (ImageButton) findViewById(R.id.chat_send);
    keyboard = (EditText) findViewById(R.id.chat_keyboard);
    scrollView = (ScrollView) findViewById(R.id.chat_scroll);
    messagesLayout = (LinearLayout) findViewById(R.id.chat_messages);
    userImage = (ImageView) findViewById(R.id.chat_user_image);
    userName = (TextView) findViewById(R.id.chat_user_name);
    ImageButton attachButton = (ImageButton) findViewById(R.id.chat_attach);

    sendButton.setOnClickListener(this);
    attachButton.setOnClickListener(this);

    changeToolBar();

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    String alarms = preferences.getString("message-notification-sound", "default ringtone");

    Uri uri = Uri.parse(alarms);
    ringtone = RingtoneManager.getRingtone(this, uri);

    if (!isStarted) {
      messages = new MessageList();
      LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>();
      isStarted = true;
      service = new Service();

      try {
        queue.put(service);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }

      PausableThreadPool executor = new PausableThreadPool(2, 2, 10, TimeUnit.SECONDS, queue);
      executor.execute(service);

      threadReceiver = new Thread(Receiver);
      threadReceiver.start();
    } else {
      while (threadReceiver.isAlive()) {
        threadReceiver.interrupt();
      }

      threadReceiver = new Thread(Receiver);
      threadReceiver.start();
    }

    loadDBMessages();

    try {
      scrollView.post(
          new Runnable() {
            @Override
            public void run() {
              scrollView.fullScroll(View.FOCUS_DOWN);
            }
          });
    } catch (Exception e) {
      e.printStackTrace();
    }

    loadImage();
  }
Exemplo n.º 8
0
  private static void showPopupMenu(final View v, final Object context) {

    if (ActivityFactory.getMainActivity().getCurrentUser() == null) return;

    id_menu = (int) context;
    PopupMenu popupMenu = new PopupMenu(v.getContext(), v);
    popupMenu.inflate(R.menu.menu_item);

    if (ActivityFactory.getMainActivity().getCurrentUser().getPost() == IUser.Posts.Адміністратар)
      popupMenu.getMenu().setGroupVisible(R.id.group_admin, true);
    else {
      // TODO:change admin menu

    }

    popupMenu.setOnMenuItemClickListener(
        new PopupMenu.OnMenuItemClickListener() {

          @Override
          public boolean onMenuItemClick(MenuItem item) {
            IItem iItem = ActivityFactory.getMainActivity().getItem(id_menu);
            IUser iUser = ActivityFactory.getMainActivity().getCurrentUser();
            switch (item.getItemId()) {
              case R.id.menu_item_change:
                {
                  if (iItem.getUserId() == iUser.getId()) {
                    Bundle args = new Bundle();
                    args.putInt(IItem.ITEM_PARAM, (int) v.getTag());
                    ActivityFactory.getMainActivity()
                        .openFragment(iMainActivity.Fragments.ItemAdd, true, args);
                  }
                  return true;
                }
              case R.id.menu_item_user_set:
                {
                  Bundle args = new Bundle();
                  args.putInt(IItem.ITEM_PARAM, iItem.getId());
                  ActivityFactory.getMainActivity()
                      .openFragment(iMainActivity.Fragments.Users, true, args);
                  return true;
                }
              case R.id.menu_item_status_set:
                {
                  ActivityFactory.getMainActivity().setTempItem(iItem);
                  ActivityFactory.getMainActivity()
                      .openFragment(iMainActivity.Fragments.Status, true);

                  return true;
                }
              default:
                return false;
            }
          }
        });

    popupMenu.setOnDismissListener(
        new PopupMenu.OnDismissListener() {

          @Override
          public void onDismiss(PopupMenu menu) {}
        });
    popupMenu.show();
  }