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)); }
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(); } } }
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(); } } }
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);
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); }; } } }
public static void OpenChannelTab(Channel channel) { MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channel)).AddToBackStack("Channel Details").Commit(); }
protected abstract void ProcessNewChannel (ChannelDetails c);
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(); } }