public RemoteViews Setup(Context context, int widgetId)
        {
            var view = new RemoteViews(context.PackageName, Resource.Layout.SuggestionsWidget);

            var intent = new Intent(context, JavaUtils.ToClass <SuggestionsWidgetService>());

            intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);

            view.SetRemoteAdapter(Resource.Id.SuggestionsList, intent);
            view.SetEmptyView(Resource.Id.SuggestionsList, Resource.Id.NoData);

            var tapIntent = new Intent(context, JavaUtils.ToClass <WidgetsForegroundService>());

            tapIntent.SetAction(SuggestionTapped);
            tapIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);
            var tapPendingIntent = context.SafeGetForegroundService(0, tapIntent, UpdateCurrent);

            view.SetPendingIntentTemplate(Resource.Id.SuggestionsList, tapPendingIntent);

            view.SetTextViewText(Resource.Id.Title, Resources.WorkingOnThese);
            view.SetTextViewText(Resource.Id.NoData, Resources.NoSuggestionsAvailable);
            view.SetTextViewText(Resource.Id.ShowAllTimeEntriesLabel, Resources.ShowAllTimEntries);

            var openAppIntent        = new Intent(context, typeof(SplashScreen)).SetFlags(TaskOnHome);
            var openAppPendingIntent = PendingIntent.GetActivity(context, 0, openAppIntent, UpdateCurrent);

            view.SetOnClickPendingIntent(Resource.Id.ShowAllTimeEntriesLabel, openAppPendingIntent);

            return(view);
        }
        public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
        {
            try
            {
                foreach (var appWidgetId in appWidgetIds)
                {
                    // Set up the intent that starts the widget agenda items service, which will provide the views for the collection
                    Intent intent = new Intent(context, typeof(WidgetAgendaService));
                    intent.SetPackage(context.PackageName);

                    // Add the app widget ID to the intent extras
                    intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                    intent.SetData(Android.Net.Uri.Parse(intent.ToUri(Android.Content.IntentUriType.AndroidAppScheme)));

                    // Instantiate the widget layout
                    var views = new RemoteViews(context.PackageName, Resource.Layout.WidgetAgenda);

                    // This is displayed while the list view loads.
                    // My list view will always have items, so this will act as loading text.
                    views.SetEmptyView(Resource.Id.WidgetAgendaListView, Resource.Id.WidgetAgendaEmptyView);

                    // Wire the header click
                    Intent openIntent = new Intent(context, typeof(MainActivity))
                                        .SetAction(Intent.ActionView);
                    PendingIntent pendingOpenIntent = PendingIntent.GetActivity(context, 0, openIntent, 0);
                    views.SetOnClickPendingIntent(Resource.Id.WidgetAgendaHeaderBranding, pendingOpenIntent);

                    // Wire the "+" click
                    Intent addIntent = new Intent(context, typeof(MainActivity))
                                       .SetAction(Intent.ActionView)
                                       .SetData(Android.Net.Uri.Parse("powerplanner:?" + new QuickAddToCurrentAccountArguments().SerializeToString()));
                    PendingIntent pendingAddIntent = PendingIntent.GetActivity(context, 0, addIntent, 0);
                    views.SetOnClickPendingIntent(Resource.Id.WidgetAgendaHeaderAddButton, pendingAddIntent);

                    // Set up the list adapter to use our service that generates the items
                    views.SetRemoteAdapter(Resource.Id.WidgetAgendaListView, intent);

                    // Add click handlers to each individual item
                    Intent itemClickIntent = new Intent(context, typeof(MainActivity));
                    itemClickIntent.SetAction(Intent.ActionView);
                    itemClickIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                    PendingIntent pendingItemClickIntent = PendingIntent.GetActivity(context, 0, itemClickIntent, 0);
                    views.SetPendingIntentTemplate(Resource.Id.WidgetAgendaListView, pendingItemClickIntent);

                    // Update the widget
                    appWidgetManager.UpdateAppWidget(appWidgetId, views);
                    Android.Util.Log.Debug("WidgetAgendaProvider", "Updated Widget");
                }
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current.TrackException(ex);
            }

            TelemetryExtension.Current?.TrackEvent("Widget_Agenda_OnUpdate");
            base.OnUpdate(context, appWidgetManager, appWidgetIds);
        }
예제 #3
0
        public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
        {
            try
            {
                foreach (var appWidgetId in appWidgetIds)
                {
                    // Set up the intent that starts the widget schedule items service, which will provide the views for the collection
                    Intent intent = new Intent(context, typeof(WidgetScheduleService));
                    intent.SetPackage(context.PackageName);

                    // Add the app widget ID to the intent extras
                    intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                    intent.SetData(Android.Net.Uri.Parse(intent.ToUri(Android.Content.IntentUriType.AndroidAppScheme)));

                    // Instantiate the widget layout
                    var views = new RemoteViews(context.PackageName, Resource.Layout.WidgetSchedule);

                    // Localize header text
                    views.SetTextViewText(Resource.Id.WidgetScheduleHeaderText, PowerPlannerResources.GetString("MainMenuItem_Schedule"));

                    // This is displayed while the list view loads.
                    // My list view will always have items, so this will act as loading text.
                    views.SetEmptyView(Resource.Id.WidgetScheduleListView, Resource.Id.WidgetScheduleEmptyView);

                    // Wire the header click
                    Intent openIntent = new Intent(context, typeof(MainActivity))
                                        .SetAction(Intent.ActionView)
                                        .SetData(Android.Net.Uri.Parse("powerplanner:?" + new ViewScheduleArguments()
                    {
                        LaunchSurface = LaunchSurface.SecondaryTile
                    }.SerializeToString()));
                    PendingIntent pendingOpenIntent = PendingIntent.GetActivity(context, 0, openIntent, 0);
                    views.SetOnClickPendingIntent(Resource.Id.WidgetScheduleHeader, pendingOpenIntent);

                    // Set up the list adapter to use our service that generates the items
                    views.SetRemoteAdapter(Resource.Id.WidgetScheduleListView, intent);

                    // Add click handlers to each individual item
                    Intent itemClickIntent = new Intent(context, typeof(MainActivity));
                    itemClickIntent.SetAction(Intent.ActionView);
                    itemClickIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                    PendingIntent pendingItemClickIntent = PendingIntent.GetActivity(context, 0, itemClickIntent, 0);
                    views.SetPendingIntentTemplate(Resource.Id.WidgetScheduleListView, pendingItemClickIntent);

                    // Update the widget
                    appWidgetManager.UpdateAppWidget(appWidgetId, views);
                }
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current.TrackException(ex);
            }

            TelemetryExtension.Current?.TrackEvent("Widget_Schedule_OnUpdate");
            base.OnUpdate(context, appWidgetManager, appWidgetIds);
        }
        // TEST: Handle ListView clicks
        private void SetListClick(RemoteViews remoteViews, Context context, int appWidgetId)
        {
            Intent listClickIntent = new Intent(context, typeof(ReittiWidget));

            listClickIntent.SetAction(ActionOnClick);
            PendingIntent pIntent = PendingIntent.GetBroadcast(context, 0, listClickIntent, 0);

            remoteViews.SetPendingIntentTemplate(Resource.Id.stopsWidgetList, pIntent);
        }
예제 #5
0
        void RegisterClicks(Context context, int[] appWidgetIds, RemoteViews widgetView)
        {
            var intent = new Intent(context, typeof(AppWidget));

            intent.SetAction(ACTION_SELECTED);

            var piBackground = PendingIntent.GetBroadcast(context, 0, intent, PendingIntentFlags.UpdateCurrent);

            widgetView.SetPendingIntentTemplate(Resource.Id.widget_listview, piBackground);

            SetRefreshPendingIntent(context, widgetView, appWidgetIds);
        }
예제 #6
0
        public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
        {
            currentAppWidgetManager = appWidgetManager;
            for (int i = 0; i < appWidgetIds.Length; i++)
            {
                //the service intent which will provide the views for the listview
                Intent intent = new Intent(context, typeof(CollectionWidgetService));
                //adding the widget id to the intent extras
                intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds[i]);
                intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme)));

                // Gets the remote object of the app widget
                RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout);
                //provide the listView with the needed adapter through the service
                remoteViews.SetRemoteAdapter(Resource.Id.list_view, intent);
                //Set the empty view in case the collection is empty
                remoteViews.SetEmptyView(Resource.Id.list_view, Resource.Id.empty_view);

                //setting up the pending intent template to be filled by each list item on click
                Intent navigationIntent = new Intent(context, typeof(AppWidget));
                navigationIntent.SetAction(NavigationAction);
                navigationIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds[i]);
                navigationIntent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme)));

                //Pending intent to be used as a template
                PendingIntent navigationPendingIntent = PendingIntent.GetBroadcast(context, 0, navigationIntent, PendingIntentFlags.UpdateCurrent);
                remoteViews.SetPendingIntentTemplate(Resource.Id.list_view, navigationPendingIntent);

                //refresh button click action
                Intent refreshIntent = new Intent(context, typeof(AppWidget));
                refreshIntent.SetAction(RefreshAction);
                refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds[i]);
                refreshIntent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme)));
                remoteViews.SetOnClickPendingIntent(Resource.Id.refreshBTN, PendingIntent.GetBroadcast(context, 0, refreshIntent, 0));

                appWidgetManager.UpdateAppWidget(appWidgetIds[i], remoteViews);
            }

            base.OnUpdate(context, appWidgetManager, appWidgetIds);
        }
예제 #7
0
        private void SetupWidget(Context ctx)
        {
            RemoteViews views;

            var wm  = AppWidgetManager.GetInstance(ctx);
            var cn  = new ComponentName(ctx, Java.Lang.Class.FromType(typeof(WidgetProvider)));
            var ids = wm.GetAppWidgetIds(cn);

            if (UpdateService.IsUserLogged)
            {
                views = new RemoteViews(ctx.PackageName, Resource.Layout.keyguard_widget);

                SetupRunningBtn(ctx, views);

                var adapterServiceIntent = new Intent(ctx, typeof(RemotesViewsFactoryService));
                adapterServiceIntent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, ids);
                adapterServiceIntent.SetData(Android.Net.Uri.Parse(adapterServiceIntent.ToUri(IntentUriType.Scheme)));

                for (int i = 0; i < ids.Length; i++)
                {
                    views.SetRemoteAdapter(ids[i], Resource.Id.WidgetRecentEntriesListView, adapterServiceIntent);
                }

                var listItemIntent = new Intent(ctx, typeof(WidgetStartStopService.Receiver));
                listItemIntent.SetData(Android.Net.Uri.Parse(listItemIntent.ToUri(IntentUriType.Scheme)));
                var pendingIntent = PendingIntent.GetBroadcast(ctx, 0, listItemIntent, PendingIntentFlags.UpdateCurrent);
                views.SetPendingIntentTemplate(Resource.Id.WidgetRecentEntriesListView, pendingIntent);
                views.SetOnClickPendingIntent(Resource.Id.WidgetActionButton, StartStopButtonIntent(ctx));
            }
            else
            {
                views = new RemoteViews(ctx.PackageName, Resource.Layout.widget_login);
                views.SetOnClickPendingIntent(Resource.Id.WidgetLoginButton, LogInButtonIntent(ctx));
            }

            // Update widget view.
            wm.UpdateAppWidget(ids, views);
        }
        /**
         * Creates a large layout for the app widget
         *
         * This layout is only supported in SDK >= 11 (Honeycomb)
         *
         * @param context Application context
         * @param appWidgetId id of the widget
         * @return RemoteViews for the large layout
         */
        private static RemoteViews CreateLargeLayout(Context context, int appWidgetId)
        {
            RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout);

            // Specify the service to provide data for the collection widget.  Note that we need to
            // embed the appWidgetId via the data otherwise it will be ignored.
            Intent intent = new Intent(context, typeof(RichPushWidgetService));

            intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            remoteViews.SetRemoteAdapter(appWidgetId, Resource.Id.message_list, intent);

            // Set the empty view to be displayed if the collection is empty.  It must be a sibling
            // view of the collection view.
            remoteViews.SetEmptyView(Resource.Id.message_list, Resource.Id.empty_view);

            // Bind a click listener template for the contents of the message list
            remoteViews.SetPendingIntentTemplate(Resource.Id.message_list, CreateMessageTemplateIntent(context, appWidgetId));

            // Add a click pending intent to launch the inbox
            remoteViews.SetOnClickPendingIntent(Resource.Id.widget_header, CreateInboxActivityPendingIntent(context));

            return(remoteViews);
        }
예제 #9
0
        public static RemoteViews UpdateWidget(Context context, int appWidgetId, int[] appWidgetIds)
        {
            var remoteViews = new RemoteViews(context.PackageName, Resource.Layout.task_widget);

            var intent = new Intent(Intent.ActionMain);

            intent.AddCategory(Intent.CategoryLauncher);
            intent.SetComponent(new ComponentName(context, Java.Lang.Class.FromType(typeof(MainActivity))));

            var pending = PendingIntent.GetActivity(context, 0, intent, 0);

            remoteViews.SetOnClickPendingIntent(Resource.Id.widget_layout, pending);
            remoteViews.SetOnClickPendingIntent(Resource.Id.previous_button, GetPendingSelfIntent(context, ACTION_WIDGET_PREVIOUS));
            remoteViews.SetOnClickPendingIntent(Resource.Id.forward_button, GetPendingSelfIntent(context, ACTION_WIDGET_FORWARD));
            remoteViews.SetOnClickPendingIntent(Resource.Id.refresh_button, GetPendingSelfIntent(context, ACTION_WIDGET_REFRESH));

            var svcIntent = new Intent(context, typeof(TaskWidgetService));

            svcIntent.SetPackage(context.PackageName);
            svcIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            svcIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme)));

            var itemIntent = new Intent(context, typeof(TaskWidget));

            itemIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetIds);
            itemIntent.SetData(Android.Net.Uri.Parse(svcIntent.ToUri(IntentUriType.AndroidAppScheme)));
            itemIntent.SetAction(ACTION_WIDGET_LIST_ITEM);

            var itemPending = PendingIntent.GetBroadcast(context, 0, itemIntent, 0);

            remoteViews.SetPendingIntentTemplate(Resource.Id.task_listview, itemPending);

            var task = "";

            switch (CurrentTask)
            {
            case 0:
                task = context.GetText(Resource.String.daily_task);
                break;

            case 1:
                task = context.GetText(Resource.String.weekly_task);
                break;

            case 2:
                task = context.GetText(Resource.String.one_time_task);
                break;
            }

            remoteViews.SetInt(Resource.Id.widget_layout, "setBackgroundColor", (int)(Opacity * 0xFF) << 24 | Theme);
            // 어두운 테마
            if (Theme == Convert.ToInt32(0x000000))
            {
                remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.White);
                remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.White);
            }
            // 밝은 테마
            else
            {
                remoteViews.SetTextColor(Resource.Id.task, Android.Graphics.Color.Black);
                remoteViews.SetInt(Resource.Id.divider, "setBackgroundColor", Android.Graphics.Color.Black);
            }
            remoteViews.SetTextViewText(Resource.Id.task, task);
            remoteViews.SetEmptyView(Resource.Id.task_listview, Resource.Id.empty_view);
            remoteViews.SetRemoteAdapter(Resource.Id.task_listview, svcIntent);
            if (Progress)
            {
                remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Visible);
            }
            else
            {
                remoteViews.SetViewVisibility(Resource.Id.progress_layout, Android.Views.ViewStates.Gone);
            }

            return(remoteViews);
        }
예제 #10
0
        private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeAltParams widgetLargeAltParams)
        {
            if (!widgetLargeAltParams.IsRefreshing)
            {
                Realm realm = Realm.GetInstance(DB.RealmConfiguration);

                // Bind the RemoteViewsService (adapter) for the Chapters list
                Intent intent = new Intent(context, typeof(RemoteChapterAdapter));
                intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeAltParams.Book);
                intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeAltParams.Descending);
                intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme)));
                widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent);

                // Set Chapter list click intent template
                Intent        chapterClickIntentTemplate        = new Intent(Intent.ActionView);
                PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context)
                                                                  .AddNextIntentWithParentStack(chapterClickIntentTemplate)
                                                                  .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent);
                widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate);

                // Bind the click intent for the refresh button on the widget
                Intent refreshIntent = new Intent(context, typeof(WidgetLargeAlt));
                refreshIntent.SetAction(RefreshClick);
                refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent);
                widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent);

                realm.Dispose();
            }

            if (widgetLargeAltParams.OpenMenu)
            {
                widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Visible);

                // Bind the click intent for the reverse button on the widget
                Intent CloseIntent = new Intent(context, typeof(WidgetLargeAlt));
                CloseIntent.SetAction(MenuOutsideClick);
                CloseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                PendingIntent closePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, CloseIntent, PendingIntentFlags.UpdateCurrent);
                widgetView.SetOnClickPendingIntent(Resource.Id.menu_outside, closePendingIntent);

                if (!widgetLargeAltParams.IsRefreshing)
                {
                    // Bind the RemoteViewsService (adapter) for the Book list
                    Intent intent = new Intent(context, typeof(RemoteBookAdapter));
                    intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                    intent.PutExtra(RemoteBookAdapter.ExtraBookId, widgetLargeAltParams.Book);
                    intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme)));
                    widgetView.SetRemoteAdapter(Resource.Id.list_books, intent);

                    // Set Book list click intent template
                    Intent        bookClickIntentTemplate        = new Intent(context, typeof(WidgetLargeAlt));
                    PendingIntent bookClickPendingIntentTemplate = PendingIntent.GetBroadcast(context, appWidgetId, bookClickIntentTemplate, PendingIntentFlags.UpdateCurrent);
                    widgetView.SetPendingIntentTemplate(Resource.Id.list_books, bookClickPendingIntentTemplate);
                }
            }
            else
            {
                widgetView.SetViewVisibility(Resource.Id.menu, Android.Views.ViewStates.Invisible);
            }

            // Bind the click intent for the menu button on the widget
            Intent menuIntent = new Intent(context, typeof(WidgetLargeAlt));

            menuIntent.SetAction(MenuClick);
            menuIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            PendingIntent menuPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, menuIntent, PendingIntentFlags.UpdateCurrent);

            widgetView.SetOnClickPendingIntent(Resource.Id.btn_menu, menuPendingIntent);

            // Bind the click intent for the reverse button on the widget
            Intent reverseIntent = new Intent(context, typeof(WidgetLargeAlt));

            reverseIntent.SetAction(ReverseClick);
            reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent);

            widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent);
        }
예제 #11
0
        private void SetView(Context context, int appWidgetId, RemoteViews widgetView, WidgetLargeParams widgetLargeParams)
        {
            if (!widgetLargeParams.IsRefreshing)
            {
                Realm realm = Realm.GetInstance(DB.RealmConfiguration);

                // Bind the RemoteViewsService (adapter) for the Chapters list
                Intent intent = new Intent(context, typeof(RemoteChapterAdapter));
                intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                intent.PutExtra(RemoteChapterAdapter.ExtraBookId, widgetLargeParams.Book);
                intent.PutExtra(RemoteChapterAdapter.ExtraSortOrder, widgetLargeParams.Descending);
                intent.SetData(Uri.Parse(intent.ToUri(IntentUriType.Scheme)));
                widgetView.SetRemoteAdapter(Resource.Id.list_chapters, intent);

                // Set Chapter list click intent template
                Intent        chapterClickIntentTemplate        = new Intent(Intent.ActionView);
                PendingIntent chapterClickPendingIntentTemplate = TaskStackBuilder.Create(context)
                                                                  .AddNextIntentWithParentStack(chapterClickIntentTemplate)
                                                                  .GetPendingIntent(appWidgetId, PendingIntentFlags.UpdateCurrent);
                widgetView.SetPendingIntentTemplate(Resource.Id.list_chapters, chapterClickPendingIntentTemplate);

                // Set list header to Book title
                string title = realm.Find <Book>(widgetLargeParams.Book).Title;
                widgetView.SetTextViewText(Resource.Id.book_title, title);

                Intent bookIntent = new Intent(context, typeof(WidgetLarge));
                bookIntent.SetAction(BookClick);
                bookIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                PendingIntent bookPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, bookIntent, PendingIntentFlags.OneShot);
                widgetView.SetOnClickPendingIntent(Resource.Id.book_title, bookPendingIntent);

                // Bind the click intent for the refresh button on the widget
                Intent refreshIntent = new Intent(context, typeof(WidgetLarge));
                refreshIntent.SetAction(RefreshClick);
                refreshIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
                PendingIntent refreshPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, refreshIntent, PendingIntentFlags.UpdateCurrent);
                widgetView.SetOnClickPendingIntent(Resource.Id.btn_refresh, refreshPendingIntent);

                realm.Dispose();
            }

            // Bind the click intent for the previous button on the widget
            Intent previousIntent = new Intent(context, typeof(WidgetLarge));

            previousIntent.SetAction(PreviousClick);
            previousIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            PendingIntent previousPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, previousIntent, PendingIntentFlags.UpdateCurrent);

            widgetView.SetOnClickPendingIntent(Resource.Id.btn_previous, previousPendingIntent);

            // Bind the click intent for the next button on the widget
            Intent nextIntent = new Intent(context, typeof(WidgetLarge));

            nextIntent.SetAction(NextClick);
            nextIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            PendingIntent nextPendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, nextIntent, PendingIntentFlags.UpdateCurrent);

            widgetView.SetOnClickPendingIntent(Resource.Id.btn_next, nextPendingIntent);

            // Bind the click intent for the reverse button on the widget
            Intent reverseIntent = new Intent(context, typeof(WidgetLarge));

            reverseIntent.SetAction(ReverseClick);
            reverseIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
            PendingIntent reversePendingIntent = PendingIntent.GetBroadcast(context, appWidgetId, reverseIntent, PendingIntentFlags.UpdateCurrent);

            widgetView.SetOnClickPendingIntent(Resource.Id.btn_reverse, reversePendingIntent);
        }
예제 #12
0
        private void SetupWidget (Context ctx)
        {
            RemoteViews views;

            var wm = AppWidgetManager.GetInstance (ctx);
            var cn = new ComponentName (ctx, Java.Lang.Class.FromType (typeof (WidgetProvider)));
            var ids = wm.GetAppWidgetIds (cn);

            if (UpdateService.IsUserLogged) {

                views = new RemoteViews (ctx.PackageName, Resource.Layout.keyguard_widget);

                SetupRunningBtn (ctx, views);

                var adapterServiceIntent = new Intent (ctx, typeof (RemotesViewsFactoryService));
                adapterServiceIntent.PutExtra (AppWidgetManager.ExtraAppwidgetIds, ids);
                adapterServiceIntent.SetData (Android.Net.Uri.Parse (adapterServiceIntent.ToUri (IntentUriType.Scheme)));

                for (int i = 0; i < ids.Length; i++) {
                    views.SetRemoteAdapter (ids[i], Resource.Id.WidgetRecentEntriesListView, adapterServiceIntent);
                }

                var listItemIntent = new Intent (ctx, typeof (WidgetStartStopService.Receiver));
                listItemIntent.SetData (Android.Net.Uri.Parse (listItemIntent.ToUri (IntentUriType.Scheme)));
                var pendingIntent = PendingIntent.GetBroadcast (ctx, 0, listItemIntent, PendingIntentFlags.UpdateCurrent);
                views.SetPendingIntentTemplate (Resource.Id.WidgetRecentEntriesListView, pendingIntent);
                views.SetOnClickPendingIntent (Resource.Id.WidgetActionButton, StartStopButtonIntent (ctx));

            } else {
                views = new RemoteViews (ctx.PackageName, Resource.Layout.widget_login);
                views.SetOnClickPendingIntent (Resource.Id.WidgetLoginButton, LogInButtonIntent (ctx));
            }

            // Update widget view.
            wm.UpdateAppWidget (ids, views);
        }
		/**
     * Creates a large layout for the app widget
     * 
     * This layout is only supported in SDK >= 11 (Honeycomb)
     * 
     * @param context Application context
     * @param appWidgetId id of the widget
     * @return RemoteViews for the large layout
     */
		private static RemoteViews CreateLargeLayout(Context context, int appWidgetId) {
			RemoteViews remoteViews = new RemoteViews(context.PackageName, Resource.Layout.widget_layout);

			// Specify the service to provide data for the collection widget.  Note that we need to
			// embed the appWidgetId via the data otherwise it will be ignored.
			Intent intent = new Intent(context, typeof (RichPushWidgetService));
			intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, appWidgetId);
			remoteViews.SetRemoteAdapter(appWidgetId, Resource.Id.message_list, intent);

			// Set the empty view to be displayed if the collection is empty.  It must be a sibling
			// view of the collection view.
			remoteViews.SetEmptyView(Resource.Id.message_list, Resource.Id.empty_view);

			// Bind a click listener template for the contents of the message list
			remoteViews.SetPendingIntentTemplate(Resource.Id.message_list, CreateMessageTemplateIntent(context, appWidgetId));

			// Add a click pending intent to launch the inbox
			remoteViews.SetOnClickPendingIntent(Resource.Id.widget_header, CreateInboxActivityPendingIntent(context));

			return remoteViews;
		}