Example #1
0
        private async void Feed_TwarpEvent(object sender, EventArgs e)
        {
            FeedSelector feeder = sender as FeedSelector;

            if (feeder.hashtag.Length <= 2)
            {
                MessageDialog dialog = new MessageDialog("The hashtag must be greater than two characters in length.", "Invalid hashtag");
                dialog.ShowAsync();
                return;
            }

            TwarpTimeline timeline = new TwarpTimeline(Mobile);

            timeline.feeder      = feeder;
            timeline.TweetEvent += Timeline_TweetEvent;
            timeline.CloseEvent += Timeline_CloseEvent;
            timeline.BackEvent  += Timeline_BackEvent;

            await timeline.init(feeder.hashtag, feeder.startTime);

            if (timeline.noNetwork)
            {
                MessageDialog dialog = new MessageDialog("Please connect to the internet and try again.", "No internet connection");
                dialog.ShowAsync();
                return;
            }
            if (timeline.noData)
            {
                MessageDialog dialog = new MessageDialog("The twitter search returned no results. Try using a different hashtag.", "No results found");
                dialog.ShowAsync();
                return;
            }

            if (Mobile)
            {
                PivotItem pi = feeder.Parent as PivotItem;
                pi.Content = timeline;
                pi.Header  = "#" + feeder.hashtag;
            }
            else
            {
                var index = mainStack.Children.IndexOf(feeder);
                mainStack.Children[index] = timeline;
                Grid.SetColumn(timeline, index);
            }

            // add history item:
            favHist.addHistory(feeder.hashtag, feeder.startTime);

            // enable back button
            if (Mobile)
            {
                stage = app_stage.timeline;
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
            }
        }
Example #2
0
        private void Feed_AddFavEvent(object sender, EventArgs e)
        {
            FeedSelector feeder = sender as FeedSelector;

            favHist.addFavourite(feeder.hashtag, feeder.startTime);

            MessageDialog dialog = new MessageDialog("Search has been added to your favourites.", "Favourite added");

            dialog.ShowAsync();
        }
Example #3
0
        private void Timeline_CloseEvent(object sender, EventArgs e)
        {
            if (Mobile)
            {
                PivotItem pi = (sender as TwarpTimeline).Parent as PivotItem;
                if (twarpPivot.Items.Count > 1)
                {
                    twarpPivot.Items.Remove(pi);
                }
                else
                {
                    // restore and reset the feed selector:
                    FeedSelector feed = (sender as TwarpTimeline).feeder;
                    feed.hashtag   = "";
                    feed.startTime = DateTime.Now;

                    pi.Header  = "New feed";
                    pi.Content = feed;
                }
            }
            else
            {
                if (mainStack.ColumnDefinitions.Count > 1)
                {
                    mainStack.Children.Remove(sender as TwarpTimeline);
                    renumberColumns(mainStack);
                    mainStack.ColumnDefinitions.RemoveAt(0);
                }
                else
                {
                    var          index = mainStack.Children.IndexOf(sender as TwarpTimeline);
                    FeedSelector feed  = (sender as TwarpTimeline).feeder;
                    feed.hashtag              = "";
                    feed.startTime            = DateTime.Now;
                    mainStack.Children[index] = feed;
                }
            }
        }
Example #4
0
        private void Favourites_HistoryEvent(object sender, EventArgs e)
        {
            // close menu (if on desktop):
            if (Desktop)
            {
                MainSplitView.IsPaneOpen = false;
            }

            // Get favourite from parameter:
            Warp hist = sender as Warp;

            if (Mobile)
            {
                // disable back button - mobile only
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;

                mainContent.Content = twarpPivot;

                // see if we already have a new feed tab, then select it:
                for (var i = 0; i < twarpPivot.Items.Count; i++)
                {
                    PivotItem item = (PivotItem)twarpPivot.Items[i];
                    if ((String)item.Header == "New feed")
                    {
                        FeedSelector fs = item.Content as FeedSelector;
                        fs.hashtag   = hist.hashtag;
                        fs.startTime = hist.startTime;

                        twarpPivot.SelectedIndex = i;
                        return;
                    }
                }

                if (twarpPivot.Items.Count >= 4)
                {
                    MessageDialog dialog = new MessageDialog("The number of timelines to follow is limited to four.", "Cannot add new search");
                    dialog.ShowAsync();
                    return;
                }
            }
            else
            {
                // see if we already have a feed selector open, then replace it:
                foreach (var item in mainStack.Children)
                {
                    if (item is FeedSelector)
                    {
                        ((FeedSelector)item).hashtag   = hist.hashtag;
                        ((FeedSelector)item).startTime = hist.startTime;
                        return;
                    }
                }

                if (mainStack.Children.Count >= 4)
                {
                    MessageDialog dialog = new MessageDialog("The number of timelines to follow is limited to four.", "Cannot add new search");
                    dialog.ShowAsync();
                    return;
                }
            }

            FeedSelector feeder = new FeedSelector();

            feeder.TwarpEvent  += Feed_TwarpEvent;
            feeder.AddFavEvent += Feed_AddFavEvent;
            feeder.hashtag      = hist.hashtag;
            feeder.startTime    = hist.startTime;

            if (Mobile)
            {
                PivotItem pi = new PivotItem();
                pi.Content = feeder;
                pi.Header  = "New feed";

                twarpPivot.Items.Add(pi);
                twarpPivot.SelectedIndex = twarpPivot.Items.Count - 1;
            }
            else
            {
                var col = new ColumnDefinition();
                col.Width = new GridLength(1, GridUnitType.Star);
                mainStack.ColumnDefinitions.Add(col);
                mainStack.Children.Add(feeder);
                Grid.SetColumn(feeder, mainStack.Children.Count() - 1);
            }
        }
Example #5
0
        public MainPage()
        {
            this.InitializeComponent();

            Application.Current.Resuming += Current_Resuming;

            // check if we're on a mobile device:
            Mobile  = Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile";
            Desktop = !Mobile;

            // create menu for desktop version
            if (Desktop)
            {
                // desktop version of the app - create the menu:
                menuContent.Children.Insert(0, favHist);
                // menuContent.Children.Insert(1, twarpSettings);
            }

            // initialise favourites and wire up events:
            favHist.init();
            favHist.FavouriteEvent += Favourites_FavouriteEvent;
            favHist.HistoryEvent   += Favourites_HistoryEvent;

            // add event handler for pivot item change:
            twarpPivot.SelectionChanged += TwarpPivot_SelectionChanged;

            // load feed selection user control and wire up handler:
            // mainContent.Content = feed;
            FeedSelector feed = new FeedSelector();

            feed.TwarpEvent  += Feed_TwarpEvent;
            feed.AddFavEvent += Feed_AddFavEvent;

            // add feed to first item of pivot:
            if (Mobile)
            {
                mainContent.Content = twarpPivot;

                // twarpPivot.Margin = new Thickness { Top = -25 };
                PivotItem pi = new PivotItem()
                {
                    Header = "New feed"
                };
                pi.Content = feed;
                twarpPivot.Items.Add(pi);
                twarpPivot.SelectedIndex = 0;
            }
            else
            {
                mainStack.Children.Add(feed);
                Grid.SetColumn(feed, 0);
            }


            SystemNavigationManager.GetForCurrentView().BackRequested += (s, e) =>
            {
                // mobile only...

                // Restore to previous stage:
                switch (stage)
                {
                case app_stage.tweet:
                    PivotItem pItem = (PivotItem)twarpPivot.Items[twarpPivot.SelectedIndex];
                    ViewTweet tweet = (ViewTweet)pItem.Content;
                    pItem.Content = tweet.timeline;
                    stage         = app_stage.timeline;
                    // SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
                    e.Handled = true;
                    break;

                case app_stage.timeline:
                    // return to feed selector:
                    PivotItem pItem2 = (PivotItem)twarpPivot.Items[twarpPivot.SelectedIndex];
                    pItem2.Header  = "New feed";
                    pItem2.Content = ((TwarpTimeline)pItem2.Content).feeder;
                    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
                    stage     = app_stage.feeder;
                    e.Handled = true;
                    break;

                case app_stage.settings:
                case app_stage.fav:
                    mainContent.Content = twarpPivot;
                    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
                    stage     = app_stage.main;
                    e.Handled = true;
                    break;

                default:
                    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
                    e.Handled = false;
                    break;
                }
            };
        }
Example #6
0
        private void feeder_Click(object sender, RoutedEventArgs e)
        {
            // close menu (if on desktop):
            if (Desktop)
            {
                MainSplitView.IsPaneOpen = false;
            }

            // disable back button - mobile only
            if (Mobile)
            {
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;

                // see if we already have a new feed tab, then select it:
                for (var i = 0; i < twarpPivot.Items.Count; i++)
                {
                    if ((String)((PivotItem)twarpPivot.Items[i]).Header == "New feed")
                    {
                        twarpPivot.SelectedIndex = i;
                        mainContent.Content      = twarpPivot;
                        return;
                    }
                }

                if (twarpPivot.Items.Count >= 4)
                {
                    MessageDialog dialog = new MessageDialog("The number of timelines to follow is limited to four.", "Cannot add new search");
                    dialog.ShowAsync();
                    return;
                }
            }
            else
            {
                // see if we already have a feed selector open, if so don't create a new one:
                foreach (var item in mainStack.Children)
                {
                    if (item is FeedSelector)
                    {
                        MessageDialog dialog = new MessageDialog("You already have a feed selector open.", "Already open");
                        dialog.ShowAsync();
                        return;
                    }
                }

                if (mainStack.Children.Count >= 4)
                {
                    MessageDialog dialog = new MessageDialog("The number of timelines to follow is limited to four.", "Cannot add new search");
                    dialog.ShowAsync();
                    return;
                }
            }

            // create new feed selector:
            FeedSelector feed = new FeedSelector();

            feed.TwarpEvent  += Feed_TwarpEvent;
            feed.AddFavEvent += Feed_AddFavEvent;

            if (Mobile)
            {
                // add feed to first item of pivot:
                // if (twarpPivot.Items.Count > 0)
                //    twarpPivot.Margin = new Thickness { Top = -50 };
                PivotItem pi = new PivotItem()
                {
                    Header = "New feed"
                };
                pi.Content = feed;
                twarpPivot.Items.Add(pi);
                twarpPivot.SelectedIndex = twarpPivot.Items.Count - 1;
            }
            else
            {
                var col = new ColumnDefinition();
                col.Width = new GridLength(1, GridUnitType.Star);
                mainStack.ColumnDefinitions.Add(col); mainStack.Children.Add(feed);
                Grid.SetColumn(feed, mainStack.Children.Count - 1);
            }
        }