Exemplo n.º 1
0
        protected override void ProcessNewChannel(string object_path,
                                                  uint initiator_handle,
                                                  uint target_handle,
                                                  ChannelDetails c)
        {
            string  service_name = (string)c.Properties[Constants.CHANNEL_TYPE_DBUSTUBE + ".ServiceName"];
            Contact contact      = Connection.Roster.GetContact(target_handle);

            DBusTubeChannel tube = null;

            try {
                tube = new DBusTubeChannel(this.Connection,
                                           object_path,
                                           initiator_handle,
                                           target_handle,
                                           service_name);

                DBusActivity    activity = new DBusActivity(contact, tube);
                DispatchManager dm       = Connection.DispatchManager;
                dm.Add(contact, activity.Service, activity, false);
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
                if (tube != null)
                {
                    tube.Dispose();
                }
            }
        }
        protected override bool CanProcess(ChannelDetails details)
        {
            foreach (StreamTubeChannelInfo info in Connection.SupportedChannels.GetAll <StreamTubeChannelInfo> ())
            {
                if (info.Service.Equals(details.Properties[Constants.CHANNEL_TYPE_STREAMTUBE + ".Service"]))
                {
                    return(true);
                }
            }

            return(false);
        }
        private ChannelDetails[] ChannelDetailsInterop()
        {
            FFIOperationWithVariableLengthReturnBuffer func =
                (bufOut, bufLength) =>
            {
                var ffiResult = Interop.test_channel_details_serialization(bufOut, bufLength, out var actualLen);
                return(ffiResult, actualLen);
            };
            var arr = WithVariableLengthReturnBuffer(_pool, func);

            return(ChannelDetails.ParseManyUnsafe(arr));
        }
Exemplo n.º 4
0
        protected override void ProcessNewChannel(string object_path,
                                                  uint initiator_handle,
                                                  uint target_handle,
                                                  ChannelDetails c)
        {
            Console.WriteLine("Processing new channel for file transfer");

            string  filename     = (string)c.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".Filename"];
            string  content_type = (string)c.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".ContentType"];
            ulong   size         = (ulong)c.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".Size"];
            Contact contact      = Connection.Roster.GetContact(target_handle);

            FileTransferChannel ft       = null;
            FileTransfer        transfer = null;

            try {
                ft = new FileTransferChannel(this.Connection,
                                             object_path,
                                             initiator_handle,
                                             target_handle,
                                             filename,
                                             content_type,
                                             (long)size);

                if (initiator_handle != Connection.SelfHandle)
                {
                    transfer = new IncomingFileTransfer(contact, ft);
                }
                else
                {
                    transfer = new OutgoingFileTransfer(contact, ft);
                }

                if (transfer != null)
                {
                    DispatchManager dm = Connection.DispatchManager;
                    dm.Add(contact, transfer.OriginalFilename, transfer);
                }
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());

                if (transfer != null)
                {
                    transfer.Dispose();
                }
                else if (ft != null)
                {
                    ft.Dispose();
                }
            }
        }
Exemplo n.º 5
0
        protected override bool CanProcess(ChannelDetails details)
        {
            foreach (FileTransferChannelInfo info in Connection.SupportedChannels.GetAll <FileTransferChannelInfo> ())
            {
                string content_type = (string)details.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".ContentType"];
                string desc         = (string)details.Properties[Constants.CHANNEL_TYPE_FILETRANSFER + ".Description"];
                if (info.ContentType.Equals(content_type) && info.Description.Equals(desc))
                {
                    return(true);
                }
            }

            return(false);
        }
        protected override void ProcessNewChannel(string object_path,
                                                  uint initiator_handle,
                                                  uint target_handle,
                                                  ChannelDetails c)
        {
            string  service_name = (string)c.Properties[Constants.CHANNEL_TYPE_STREAMTUBE + ".Service"];
            Contact contact      = Connection.Roster.GetContact(target_handle);

            StreamTubeChannel tube     = null;
            Activity          activity = null;

            try {
                tube = new StreamTubeChannel(this.Connection,
                                             object_path,
                                             initiator_handle,
                                             target_handle,
                                             service_name);

                if (initiator_handle == Connection.SelfHandle)
                {
                    tube.ServerAddress = Connection.SupportedChannels.GetChannelInfo <StreamTubeChannelInfo> (service_name).Address;
                    activity           = new StreamActivityListener(contact, tube);
                }
                else
                {
                    activity = new StreamActivity(contact, tube);
                }

                if (activity != null)
                {
                    DispatchManager dm = Connection.DispatchManager;
                    dm.Add(contact, activity.Service, activity);
                }
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());

                if (activity != null)
                {
                    activity.Dispose();
                }
                else if (tube != null)
                {
                    tube.Dispose();
                }
            }
        }
Exemplo n.º 7
0
 protected override void ProcessNewChannel(ChannelDetails c)
 {
 }
        public async Task <ActionResult> CreateChannel([FromBody] ChannelDetails channel, [ModelBinder(typeof(LoggedInUserModelBinder))] User activeUser)
        {
            var newChannel = await domain.CreateChannel(activeUser, channel.Channel?.Name, channel.Usernames);

            return(Ok(newChannel));
        }
 protected abstract bool CanProcess(ChannelDetails details);
 protected abstract void ProcessNewChannel(string object_path,
                                           uint initiator_handle,
                                           uint target_handle,
                                           ChannelDetails c);
Exemplo n.º 11
0
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
        {
            if (items[position].Kind == YtKind.Video)
            {
                SongHolder holder = (SongHolder)viewHolder;
                Song       song   = items[position].song;

                holder.Title.Text         = song.Title;
                holder.Artist.Text        = song.Artist;
                holder.reorder.Visibility = ViewStates.Gone;

                var songAlbumArtUri = Android.Net.Uri.Parse(song.Album);
                Picasso.With(Android.App.Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);

                holder.more.Tag = position;
                if (!holder.more.HasOnClickListeners)
                {
                    holder.more.Click += (sender, e) =>
                    {
                        int tagPosition = (int)((ImageView)sender).Tag;
                        MainActivity.instance.More(items[tagPosition].song);
                    };
                }

                if (song.IsLiveStream)
                {
                    holder.Live.Visibility = ViewStates.Visible;
                }
                else
                {
                    holder.Live.Visibility = ViewStates.Gone;
                }

                float scale = MainActivity.instance.Resources.DisplayMetrics.Density;
                if (position + 1 == items.Count)
                {
                    holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), listPadding);
                    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)holder.more.LayoutParameters;
                    layoutParams.SetMargins(0, 0, 0, listPadding);
                    holder.more.LayoutParameters = layoutParams;
                }
                else
                {
                    holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f));
                    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)holder.more.LayoutParameters;
                    layoutParams.SetMargins(0, 0, 0, 0);
                    holder.more.LayoutParameters = layoutParams;
                }
            }
            else if (items[position].Kind == YtKind.Playlist)
            {
                PlaylistHolder holder   = (PlaylistHolder)viewHolder;
                PlaylistItem   playlist = items[position].playlist;

                holder.Title.Text = playlist.Name;
                holder.Owner.Text = playlist.Owner;

                var songAlbumArtUri = Android.Net.Uri.Parse(playlist.ImageURL);
                Picasso.With(Android.App.Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt);

                holder.more.Tag = position;
                if (!holder.more.HasOnClickListeners)
                {
                    holder.more.Click += (sender, e) =>
                    {
                        int tagPosition = (int)((ImageView)sender).Tag;
                        YoutubeSearch.instances[0].PlaylistMore(items[tagPosition].playlist);
                    };
                }
            }
            else if (items[position].Kind == YtKind.Channel)
            {
                RecyclerChannelHolder holder = (RecyclerChannelHolder)viewHolder;
                Channel channel = items[position].channel;

                holder.Title.Text = channel.Name;
                Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Transform(new CircleTransformation(false)).Into(holder.AlbumArt);

                if (!holder.action.HasOnClickListeners)
                {
                    holder.action.Click += (sender, e) =>
                    {
                        YoutubeManager.MixFromChannel(channel.YoutubeID);
                    };
                }
            }
            else if (items[position].Kind == YtKind.ChannelPreview)
            {
                ChannelPreviewHolder holder = (ChannelPreviewHolder)viewHolder;
                Channel channel             = items[position].channel;

                holder.Name.Text = channel.Name;
                Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Placeholder(Resource.Color.placeholder).Transform(new CircleTransformation(true)).Into(holder.Logo);


                DisplayMetrics displayMetrics = new DisplayMetrics();
                MainActivity.instance.WindowManager.DefaultDisplay.GetMetrics(displayMetrics);
                int wholeWidth = (displayMetrics.WidthPixels - MainActivity.instance.DpToPx(15)) / 2;
                int mixHeight  = (int)(wholeWidth * 0.5625); /// width / 16 */ 9
                holder.MixOne.LayoutParameters.Height = mixHeight;
                holder.MixOne.RequestLayout();
                holder.MixTwo.LayoutParameters.Height      = mixHeight;
                holder.ChannelLogo.LayoutParameters.Height = mixHeight * 2;

                Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Placeholder(Resource.Color.placeholder).Fit().CenterCrop().Into(holder.ChannelLogo);

                List <YtFile> files = items.FindAll(x => x.Kind == YtKind.Video && x.song.Artist == channel.Name);
                if (files.Count > 0)
                {
                    Picasso.With(Android.App.Application.Context).Load(files[0].song.Album).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder()).Into(holder.MixOne);
                }
                if (files.Count > 1)
                {
                    Picasso.With(Android.App.Application.Context).Load(files[1].song.Album).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder()).Into(holder.MixTwo);
                }

                if (!holder.ChannelHolder.HasOnClickListeners)
                {
                    holder.ChannelHolder.Click += (sender, e) =>
                    {
                        MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = false;
                        MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView();
                        MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true;
                        MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Gone;
                        MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channel)).AddToBackStack("Channel Details").Commit();
                    };
                }

                if (!holder.MixHolder.HasOnClickListeners)
                {
                    holder.MixHolder.Click += (sender, e) =>
                    {
                        YoutubeManager.MixFromChannel(channel.YoutubeID);
                    };
                }
            }
        }
Exemplo n.º 12
0
 public static void OpenChannelTab(Channel channel)
 {
     MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channel)).AddToBackStack("Channel Details").Commit();
 }
Exemplo n.º 13
0
 protected abstract void ProcessNewChannel (ChannelDetails c);
Exemplo n.º 14
0
 void OnClick(int position)
 {
     if (UseChannel)
     {
         MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channels[position])).AddToBackStack("Channel Details").Commit();
     }
     else
     {
         MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlists[position])).AddToBackStack("Playlist Track").Commit();
     }
 }