예제 #1
0
        public Browser()
        {
            if (IsDesignMode)
            {
                return;
            }

            WebView                = mbWebView.Create();
            TitleChanged           = new EventAdapter <TitleChangeEventArgs, mbTitleChangedCallback>(this, NativeMethods.mbOnTitleChanged);
            UrlChanged             = new EventAdapter <UrlChangeEventArgs, mbURLChangedCallback>(this, NativeMethods.mbOnURLChanged);
            NewWindow              = new EventAdapter <NewWindowEventArgs, mbCreateViewCallback>(this, NativeMethods.mbOnCreateView);
            LoadUrlBegin           = new EventAdapter <LoadUrlBeginEventArgs, mbLoadUrlBeginCallback>(this, NativeMethods.mbOnLoadUrlBegin);
            WebSocketOnWillConnect = new EventAdapter <WebSocketWillConnectEventArgs, onWillConnect>(this, RegSocketOnWillConnect);
            WebSocketOnConnect     = new EventAdapter <WebSocketConnectedEventArgs, onConnected>(this, RegSocketOnConnected);
            WebSocketOnReceive     = new EventAdapter <WebSocketDataEventArgs, onReceive>(this, RegSocketOnReceive);
            WebSocketOnSend        = new EventAdapter <WebSocketDataEventArgs, onSend>(this, RegSocketOnSend);
            WebSocketOnError       = new EventAdapter <WebSocketErrorEventArgs, onError>(this, RegSocketOnError);
            LoadUrlEnd             = new EventAdapter <LoadUrlEndEventArgs, mbLoadUrlEndCallback>(this, NativeMethods.mbOnLoadUrlEnd);
            DocumentReady          = new EventAdapter <DocumentReadyEventArgs, mbDocumentReadyCallback>(this, NativeMethods.mbOnDocumentReady);

            mbPaintBitUpdatedCallback = new mbPaintBitUpdatedCallback(mbPaintBitUpdated);
            NativeMethods.mbOnPaintBitUpdated(WebView, mbPaintBitUpdatedCallback, IntPtr.Zero);
            ClipToBounds = true;
            Focusable    = true;
            IsEnabled    = true;
            InputMethod.SetIsInputMethodEnabled(this, true);
            InputMethod.SetIsInputMethodSuspended(this, false);
            InputMethod.Current.ImeState = InputMethodState.Off;
        }
예제 #2
0
        private void SetRecyclerViewAdapters()
        {
            try
            {
                MAdapter = new EventAdapter(Activity)
                {
                    EventList = new ObservableCollection <EventDataObject>()
                };
                MAdapter.ItemClick += MAdapterOnItemClick;
                LayoutManager       = new LinearLayoutManager(Activity);
                MRecycler.SetLayoutManager(LayoutManager);
                var sizeProvider = new FixedPreloadSizeProvider(10, 10);
                var preLoader    = new RecyclerViewPreloader <EventDataObject>(Activity, MAdapter, sizeProvider, 10 /*maxPreload*/);
                MRecycler.AddOnScrollListener(preLoader);
                MRecycler.SetAdapter(MAdapter);
                MRecycler.HasFixedSize = true;
                MRecycler.SetItemViewCacheSize(10);
                MRecycler.GetLayoutManager().ItemPrefetchEnabled = true;

                RecyclerViewOnScrollListener xamarinRecyclerViewOnScrollListener = new RecyclerViewOnScrollListener(LayoutManager);
                MainScrollEvent = xamarinRecyclerViewOnScrollListener;
                MainScrollEvent.LoadMoreEvent += MainScrollEventOnLoadMoreEvent;
                MRecycler.AddOnScrollListener(xamarinRecyclerViewOnScrollListener);
                MainScrollEvent.IsLoading = false;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
예제 #3
0
        /// <summary>
        /// Экспортировать события, загрузив их из файла
        /// </summary>
        private void ExportEventsFromFile(Exporter exporter, DateTime date)
        {
            // загрузка таблицы событий из файла
            EventTableLight eventTable   = new EventTableLight();
            EventAdapter    eventAdapter = new EventAdapter();

            eventAdapter.FileName = ServerUtils.BuildEvFileName(Settings.ArcDir, date);

            try
            {
                eventAdapter.Fill(eventTable);
            }
            catch (Exception ex)
            {
                log.WriteAction(string.Format(Localization.UseRussian ?
                                              "Ошибка при загрузке таблицы событий из файла {0}: {1}" :
                                              "Error loading event table from file {0}: {1}", eventAdapter.FileName, ex.Message));
            }

            // добавление событий в очередь экспорта
            if (eventTable.AllEvents.Count > 0)
            {
                foreach (EventTableLight.Event ev in eventTable.AllEvents)
                {
                    exporter.EnqueueEvent(ev);
                }
                log.WriteAction(Localization.UseRussian ? "События добавлены в очередь экспорта" :
                                "Events added to export queue");
            }
            else
            {
                log.WriteAction(Localization.UseRussian ? "Отсутствуют события для экспорта" :
                                "No events to export");
            }
        }
예제 #4
0
        public async static void WhiteBoxTest_EventAdapter_LoadEvents_Description()
        {
            Event[] events = await EventAdapter.LoadEvents();

            Assert.IsTrue("The Software Engineering II presentation for Iteration 0" == events[1].EventDescription);
            //Not guaranteed to have an event description
        }
예제 #5
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (rbSrez.Checked)
            {
                dataTable = new DataTable("SrezTable");
                SrezAdapter sa = new SrezAdapter();
                sa.FileName = txtFileName.Text;
                sa.Fill(dataTable);
            }
            else if (rbEvent.Checked)
            {
                dataTable = new DataTable("EventTable");
                EventAdapter ea = new EventAdapter();
                ea.FileName = txtFileName.Text;
                ea.Fill(dataTable);
            }
            else // rbBase.Checked
            {
                dataTable = new DataTable("BaseTable");
                BaseAdapter ba = new BaseAdapter();
                ba.FileName = txtFileName.Text;
                ba.Fill(dataTable, true);
            }

            dataGridView.DataSource = dataTable;
        }
예제 #6
0
 private void LoadEvents()
 {
     _events.Clear();
     Task.Factory.StartNew(() =>
     {
         var databaseEvents =
             DaoManager.Get().EventDao.Find("Team_Id", _myApplication.CurrentTeam.Id.ToString());
         foreach (var databaseEvent in databaseEvents)
         {
             _events.Add(new EventItem
             {
                 Id        = databaseEvent.Id,
                 Name      = databaseEvent.Name,
                 StartDate = databaseEvent.StartDate,
                 EndDate   = databaseEvent.EndDate,
                 EventType = databaseEvent.EventType
             });
         }
     }).ContinueWith(task =>
     {
         _eventAdapter         = new EventAdapter(Activity, Resource.Layout.calendar_list_item, _events.ToArray());
         _calendarList.Adapter = _eventAdapter;
         _eventAdapter.NotifyDataSetChanged();
     }, TaskScheduler.FromCurrentSynchronizationContext());
 }
예제 #7
0
        public async static void WhiteBoxTest_EventAdapter_LoadEvents_Speakers()
        {
            Event[] events = await EventAdapter.LoadEvents();

            Console.WriteLine(events[0].EventSpeakers);
            //Asert.IsTrue("" == events[0].EventSpeakers);
        }
예제 #8
0
 /// <summary>
 /// Построить полное имя файла таблицы событий на основе даты
 /// </summary>
 public static string BuildEvFileName(string arcDir, DateTime date)
 {
     return((new StringBuilder())
            .Append(arcDir).Append("Events").Append(Path.DirectorySeparatorChar)
            .Append(EventAdapter.BuildEvTableName(date))
            .ToString());
 }
예제 #9
0
        /// <summary>
        /// Отобразить форму редактирования или просмотра таблицы срезов
        /// </summary>
        public static void Show(string directory, string tableName, bool editMode, Log errLog)
        {
            if (string.IsNullOrEmpty(directory))
            {
                throw new ArgumentException("directory");
            }
            if (string.IsNullOrEmpty(tableName))
            {
                throw new ArgumentException("tableName");
            }
            if (errLog == null)
            {
                throw new ArgumentNullException("errLog");
            }

            EventAdapter eventAdapter = new EventAdapter();

            eventAdapter.Directory = directory;
            eventAdapter.TableName = tableName;
            DataTable dataTable = new DataTable();

            if (LoadDataTable(eventAdapter, errLog, ref dataTable))
            {
                FrmEventTableEdit frmEventTableEdit = new FrmEventTableEdit();
                frmEventTableEdit.errLog       = errLog;
                frmEventTableEdit.eventAdapter = eventAdapter;
                frmEventTableEdit.dataTable    = dataTable;
                frmEventTableEdit.editMode     = editMode;
                frmEventTableEdit.ShowDialog();
            }
        }
예제 #10
0
        /// <summary>
        /// Get a table of events for the day from the cache or from the server
        /// </summary>
        /// <remarks>The returned table after loading is not changed by an instance of this class,
        /// thus, reading its data is thread safe.
        /// The method always returns a non-null object.</remarks>
        public EventTableLight GetEventTable(DateTime date)
        {
            try {
                // getting event table from cache
                date = date.Date;
                var utcNowDT  = DateTime.UtcNow;
                var cacheItem = EventTableCache.GetOrCreateItem(date, utcNowDT);

                // blocking access to only one event table
                lock (cacheItem) {
                    var  table           = cacheItem.Value;               // table to get
                    var  tableAge        = cacheItem.ValueAge;            // table file change time
                    bool tableIsNotValid =
                        utcNowDT - cacheItem.ValueRefrDT > DataValidSpan; // the table might be out of date

                    // getting event table from server
                    if (table == null || tableIsNotValid)
                    {
                        string tableName   = EventAdapter.BuildEvTableName(date);
                        var    newTableAge = serverComm.ReceiveFileAge(ServerComm.Dirs.Events, tableName);

                        if (newTableAge == DateTime.MinValue)
                        {
                            // the table file does not exist or there is no connection to the server
                            table = null;
                            // do not clog the log
                            //log.WriteError($"Unable to receive modification time of the event table {tableName}");
                        }
                        else if (newTableAge != tableAge)     // table file changed
                        {
                            table = new EventTableLight();
                            if (serverComm.ReceiveEventTable(tableName, table))
                            {
                                table.FileModTime  = newTableAge;
                                table.LastFillTime = utcNowDT;
                            }
                            else
                            {
                                throw new ScadaException("Unable to receive event table.");
                            }
                        }

                        if (table == null)
                        {
                            table = new EventTableLight();
                        }

                        // update table in cache
                        EventTableCache.UpdateItem(cacheItem, table, newTableAge, utcNowDT);
                    }

                    return(table);
                }
            } catch (Exception ex) {
                log.WriteException(ex, "Error getting event table for {0} from the cache or from the server",
                                   date.ToLocalizedDateString());
                return(new EventTableLight());
            }
        }
예제 #11
0
        private bool editMode;             // режим редактирования


        /// <summary>
        /// Конструктор
        /// </summary>
        private FrmEventTableEdit()
        {
            InitializeComponent();
            errLog       = null;
            eventAdapter = null;
            dataTable    = null;
            editMode     = false;
        }
예제 #12
0
        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        public FrmEventTable(Log errLog)
            : this()
        {
            this.errLog  = errLog ?? throw new ArgumentNullException("errLog");
            eventAdapter = new EventAdapter();
            dataTable    = new DataTable();

            FileName  = "";
            AllowEdit = false;
        }
예제 #13
0
        }// End of Constructor function

        /// <summary>
        /// Add event
        /// </summary>
        /// <param name="event_o"></param>
        /// <param name="user_log"></param>
        /// <returns></returns>
        public Event addEvent(Event event_o, UserSystem user_log)
        {
            return(http_service.JSONHttpPettitionObject <Event>(
                       HttpMethod.POST,
                       GetType().Name.ToLower().Replace(
                           TWords.SERVICE,
                           TWords.SLASH),
                       JsonConvert.SerializeObject(
                           EventAdapter.ObjectToDTO(
                               event_o))));
        }// End of addEvent function
예제 #14
0
        /// <summary>
        /// A Frame that contains a grid layout, with the last column being
        /// a stack layout with any number of speaker views.
        /// </summary>
        /// <param name="anEvent">Event object to be rendered on event page</param>
        public EventView(Event anEvent)
        {
            InitializeComponent();
            Label eventTopic = this.FindByName <Label>("Topic");
            Label eventDesc  = this.FindByName <Label>("Description");
            Label eventDate  = this.FindByName <Label>("Date");
            Image eventImage = this.FindByName <Image>("Image");

            eventTopic.FontSize       = 16;
            eventTopic.FontAttributes = FontAttributes.Bold;
            eventDate.Text            = EventAdapter.ConvertDate(anEvent.EventDate); // Jacksons code <<<<
            eventTopic.Text          += anEvent.EventTopic;
            eventDesc.Text            = anEvent.EventDescription;

            CultureInfo provider = CultureInfo.InvariantCulture;

            // This is the action that is executed when the event image is clicked.
            eventImage.GestureRecognizers.Add(new TapGestureRecognizer
            {
                Command = new Command(() =>
                {
                    try
                    {
                        Device.OpenUri(new Uri(anEvent.EventSignUpUrl));
                    }
                    catch (FormatException res)
                    {
                    }
                })
            });

            //Set image to the event image, if there is an error (no image, or malformed uri)
            //Set a default image.
            try
            {
                eventImage.Source = new Uri(anEvent.EventImg);
            }
            catch (FormatException res)
            {
                eventImage.Source = ImageSource.FromFile(("noimage.png"));
            }

            //Only show speakers label if there are any speaker for this event
            if (anEvent.EventSpeakers.Length > 0)
            {
                this.FindByName <Label>("Speaker").Text = "Speakers";
            }

            //For every speaker create a speaker form them under this event
            foreach (Speaker speaker in anEvent.EventSpeakers)
            {
                this.FindByName <StackLayout>("Layout").Children.Add(new SpeakerView(speaker));
            }
        }
예제 #15
0
        public Guid Insert(EventDTO eventDto)
        {
            eventDto.EventId           = Guid.NewGuid();
            eventDto.Address.AddressId = Guid.NewGuid();
            var  sEvent = EventAdapter.ToDomain(eventDto);
            Guid id     = eventRepository.Insert(sEvent);

            SendMessage();

            return(id);
        }
예제 #16
0
        public List <EventDTO> GetAll()
        {
            List <EventDTO> eventsDto = new List <EventDTO>();
            var             events    = eventRepository.FindAll();

            foreach (Event cli in events)
            {
                eventsDto.Add(EventAdapter.ToDTO(cli));
            }
            return(eventsDto);
        }
예제 #17
0
        private bool RunAllConditionsAsAnd(EventAdapter eventToFilter)
        {
            foreach (Func <Event, bool> filter in _filters)
            {
                if (!filter(eventToFilter.Event))
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #18
0
        private void InitGUIElements(View view)
        {
            rwEvents = view.FindViewById <RecyclerView>(Resource.Id.rw_events);

            rwEvents.HasFixedSize = true;
            var layoutManager = new LinearLayoutManager(view.Context, LinearLayoutManager.Vertical, false);

            rwEvents.SetLayoutManager(layoutManager);

            adapter = new EventAdapter(Instance.Events);
            rwEvents.SetAdapter(adapter);
        }
예제 #19
0
        }// End of ImageToEvent function

        /// <summary>
        /// Update event
        /// </summary>
        /// <param name="event_o"></param>
        /// <param name="user_log"></param>
        /// <returns></returns>
        public Event updateEvent(Event event_o, UserSystem user_log)
        {
            return(http_service.JSONHttpPettitionObject <Event>(
                       HttpMethod.PUT,
                       GetType().Name.ToLower().Replace(
                           TWords.SERVICE,
                           string.Format(
                               TWords.ONEPARAM,
                               event_o.id)),
                       JsonConvert.SerializeObject(
                           EventAdapter.ObjectToDTO(event_o))));
        } // End of updateEvent function
예제 #20
0
        public override async void InitilizeView(View view)
        {
            mainRcyle    = (RecyclerView)view.FindViewById(Resource.Id.recylrvw_events);
            result       = new List <EventList>();
            eventAdapter = new EventAdapter(result, Activity);
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(Activity);

            linearLayoutManager.Orientation = LinearLayoutManager.Vertical;
            mainRcyle.SetLayoutManager(linearLayoutManager);
            mainRcyle.SetAdapter(eventAdapter);

            _IEventListService = new EventListService();
            await GetEventList();
        }
예제 #21
0
 /// <summary>
 /// Download event table
 /// </summary>
 private static bool LoadDataTable(EventAdapter eventAdapter, Log errLog, ref DataTable dataTable)
 {
     try {
         eventAdapter.Fill(dataTable);
         return(true);
     } catch (Exception ex) {
         string errMsg = AppPhrases.LoadEventTableError + ":\r\n" + ex.Message;
         if (errLog != null)
         {
             errLog.WriteAction(errMsg, Log.ActTypes.Exception);
         }
         ScadaUiUtils.ShowError(errMsg);
         return(false);
     }
 }
예제 #22
0
    /// <summary>
    /// 创建一个反向WS服务端
    /// </summary>
    /// <param name="config">服务器配置</param>
    /// <param name="crashAction">发生未处理异常时的回调</param>
    /// <exception cref="ArgumentNullException">读取到了空配置文件</exception>
    /// <exception cref="ArgumentOutOfRangeException">服务器启动参数错误</exception>
    internal SoraWebsocketServer(ServerConfig config, Action <Exception> crashAction = null)
    {
        _serverReady = false;
        Log.Info("Sora", $"Sora WebSocket服务器初始化... [{_serverId}]");
        Config = config ?? throw new ArgumentNullException(nameof(config));
        //检查端口占用
        if (Helper.IsPortInUse(Config.Port))
        {
            var e = new InvalidOperationException($"端口{Config.Port}已被占用,请更换其他端口");
            Log.Fatal(e, "Sora", $"端口{Config.Port}已被占用,请更换其他端口", Config);
            throw e;
        }

        //写入初始化信息
        if (!StaticVariable.ServiceConfigs.TryAdd(_serverId, new ServiceConfig(Config)))
        {
            throw new DataException("try add service config failed");
        }
        //检查参数
        if (Config.Port == 0)
        {
            throw new ArgumentOutOfRangeException(nameof(Config.Port), "Port 0 is not allowed");
        }
        //初始化连接管理器
        ConnManager = new ConnectionManager(Config);
        //实例化事件接口
        Event = new EventAdapter(_serverId, Config.ThrowCommandException, Config.SendCommandErrMsg);
        //禁用原log
        FleckLog.Level = (LogLevel)4;
        Server         = new WebSocketServer($"ws://{Config.Host}:{Config.Port}")
        {
            //出错后进行重启
            RestartAfterListenError = true
        };
        //全局异常事件
        AppDomain.CurrentDomain.UnhandledException += (_, args) =>
        {
            if (crashAction == null)
            {
                Helper.FriendlyException(args);
            }
            else
            {
                crashAction(args.ExceptionObject as Exception);
            }
        };
        _serverReady = true;
    }
예제 #23
0
        private int CycleOrders(EventAdapter caller, EventAdapter other)
        {
            foreach (FilterVM filterVm in _eventsPageVm.FilterVms)
            {
                if (filterVm.FilterBuilder.ConstructOrderFunc() is Func <Event, Event, int> comparer)
                {
                    int result = comparer(caller.Event, other.Event);
                    if (result != 0)
                    {
                        return(result);
                    }
                }
            }

            return(0);
        }
예제 #24
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            try
            {
                if (rbSnapshot.Checked)
                {
                    dataTable = new DataTable("SrezTable");
                    srezTable = new SrezTable();
                    SrezAdapter sa = new SrezAdapter();
                    sa.FileName = txtFileName.Text;
                    sa.Fill(dataTable);
                    sa.Fill(srezTable);
                    dataTable.RowChanged += DataTable_RowChanged;
                    dataTable.Columns["DateTime"].ReadOnly = true;
                    dataTable.Columns["CnlNum"].ReadOnly   = true;
                }
                else if (rbEvent.Checked)
                {
                    dataTable = new DataTable("EventTable");
                    srezTable = null;
                    EventAdapter ea = new EventAdapter();
                    ea.FileName = txtFileName.Text;
                    ea.Fill(dataTable);
                }
                else // rbBase.Checked
                {
                    dataTable = new DataTable("BaseTable");
                    srezTable = null;
                    BaseAdapter ba = new BaseAdapter();
                    ba.FileName = txtFileName.Text;
                    ba.Fill(dataTable, true);
                }

                dataTable.DefaultView.AllowNew  = !rbSnapshot.Checked;
                dataTable.DefaultView.AllowEdit = true;
                dataGridView.DataSource         = dataTable;
            }
            catch (Exception ex)
            {
                dataTable = null;
                ScadaUiUtils.ShowError(ex.Message);
            }
            finally
            {
                ShowRecordCount();
            }
        }
예제 #25
0
    /// <summary>
    /// 创建一个正向WS客户端
    /// </summary>
    /// <param name="config">配置文件</param>
    /// <param name="crashAction">发生未处理异常时的回调</param>
    /// <exception cref="DataException">数据初始化错误</exception>
    /// <exception cref="ArgumentNullException">空配置文件错误</exception>
    /// <exception cref="ArgumentOutOfRangeException">参数错误</exception>
    internal SoraWebsocketClient(ClientConfig config, Action <Exception> crashAction = null)
    {
        _clientReady = false;
        Log.Info("Sora", $"Sora WebSocket客户端初始化... [{_clientId}]");
        Config = config ?? throw new ArgumentNullException(nameof(config));
        //写入初始化信息
        if (!StaticVariable.ServiceConfigs.TryAdd(_clientId, new ServiceConfig(config)))
        {
            throw new DataException("try add service config failed");
        }
        //检查参数
        if (Config.Port == 0)
        {
            throw new ArgumentOutOfRangeException(nameof(Config.Port), "Port 0 is not allowed");
        }
        //初始化连接管理器
        ConnManager = new ConnectionManager(Config);
        //实例化事件接口
        Event = new EventAdapter(_clientId, Config.ThrowCommandException, Config.SendCommandErrMsg);
        //处理连接路径
        string serverPath = string.IsNullOrEmpty(Config.UniversalPath)
            ? $"ws://{Config.Host}:{Config.Port}"
            : $"ws://{Config.Host}:{Config.Port}/{Config.UniversalPath.Trim('/')}/";

        Log.Debug("Sora", $"Onebot服务器地址:{serverPath}");
        Client =
            new WebsocketClient(new Uri(serverPath), CreateSocket)
        {
            ReconnectTimeout      = Config.ReconnectTimeOut,
            ErrorReconnectTimeout = Config.ReconnectTimeOut
        };
        //全局异常事件
        AppDomain.CurrentDomain.UnhandledException += (_, args) =>
        {
            if (crashAction == null)
            {
                Helper.FriendlyException(args);
            }
            else
            {
                crashAction(args.ExceptionObject as Exception);
            }
        };
        _clientReady = true;
    }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            var view = inflater.Inflate(Resource.Layout.fragment, container, false);

            Cheeseknife.Inject(this, view);

            _list    = App.Container.Resolve <IApiService>().GetAllEvents();
            _adapter = new EventAdapter(_list);

            _adapter.OnItemClicked += Adapter_OnItemClicked;
            _recyclerView.SetAdapter(_adapter);
            _recyclerView.HasFixedSize = true;
            _recyclerView.SetLayoutManager(new LinearLayoutManager(Activity));

            OnDataLoaded?.Invoke(this, null);

            _refresher.Refresh += Refresher_OnRefresh;
            _floatingActionButton.Visibility = ViewStates.Visible;
            return(view);
        }
예제 #27
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Title = ((EventsViewModel)DataContext).GroupName;

            SetActivityContentView(Resource.Layout.Events, Resource.Id.events_layout);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.SetHomeButtonEnabled(true);
            SetUpProgressDialog(this, "Loading Events...");

            allEvents        = Settings.ShowAllEvents;
            ViewModel        = (EventsViewModel)DataContext;
            ListView         = FindViewById <ListView>(Resource.Id.eventsList);
            SearchView       = FindViewById <SearchView>(Resource.Id.events_searchview);
            EventAdapter     = new EventAdapter(this, ViewModel.Events);
            ListView.Adapter = EventAdapter;

            #region Events

            ListView.ItemClick += GoToEvent;

            SearchView.QueryTextChange += (s, e) => EventAdapter.Filter(e.NewText);
            SearchView.QueryTextSubmit += (s, e) => EventAdapter.Filter(e.Query);

            ViewModel.Events.CollectionChanged += (s, e) => EventAdapter.UpdateListView();


            ViewModel.FinishedFirstLoad += (index) =>
            {
                if (ViewModel.Events.Count == 0)
                {
                    return;
                }

                Timer timer = new Timer();
                timer.Interval = 1000;
                timer.Elapsed += (s, e) => RunOnUiThread(() => ListView.SetSelection(index));
            };

            #endregion
        }
예제 #28
0
        /// <summary>
        /// Loads events from file and adds to the queue.
        /// </summary>
        private void ExportEventsFromFile(DateTime minDT, DateTime maxDT)
        {
            if (minDT.Date != maxDT.Date)
            {
                log.WriteError(Localization.UseRussian ?
                               "Временной диапазон событий должен быть в пределах одних суток" :
                               "The time range of events must be within one day");
                return;
            }

            string fileName = ServerUtils.BuildEvFileName(arcDir, minDT.Date);

            if (!File.Exists(fileName))
            {
                log.WriteError(string.Format(CommonPhrases.NamedFileNotFound, fileName));
                return;
            }

            try
            {
                EventTableLight eventTable   = new EventTableLight();
                EventAdapter    eventAdapter = new EventAdapter {
                    FileName = fileName
                };
                eventAdapter.Fill(eventTable);

                foreach (EventTableLight.Event ev in eventTable.AllEvents)
                {
                    if (minDT <= ev.DateTime && ev.DateTime <= maxDT)
                    {
                        EnqueueEvent(ev);
                    }
                }
            }
            catch (Exception ex)
            {
                log.WriteException(ex, Localization.UseRussian ?
                                   "Ошибка при загрузке событий из файла {0}" :
                                   "Error loading events from file {0}", fileName);
            }
        }
예제 #29
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.EventManager);

            // Setting services
            userService = new UserService(DataBase.current_user);

            // Get views from Layout
            listView = FindViewById <ListView>(Resource.Id.evm_list_view);

            // Get the events List
            eventList = userService.GetEventsByGroup(GroupActivity.current_group);

            // Create the adapter and Click action
            Adapters.EventAdapter adapter = new EventAdapter(this, eventList);
            listView.Adapter = adapter;

            listView.ItemClick += OnListEventItemClick;
        }
예제 #30
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.EventManager);

            // Setting services
            userService = new UserService(DataBase.current_user);

            // Get views from Layout
            listView = FindViewById<ListView>(Resource.Id.evm_list_view);

            // Get the events List
            eventList = userService.GetEventsByGroup(GroupActivity.current_group);

            // Create the adapter and Click action
            Adapters.EventAdapter adapter = new EventAdapter(this, eventList);
            listView.Adapter = adapter;

            listView.ItemClick += OnListEventItemClick;
        }
예제 #31
0
        public Browser()
        {
            InitializeComponent();
            if (IsDesignMode)
            {
                return;
            }
            WebView = mbWebView.Create();

            TitleChanged           = new EventAdapter <TitleChangeEventArgs, mbTitleChangedCallback>(this, NativeMethods.mbOnTitleChanged);
            UrlChanged             = new EventAdapter <UrlChangeEventArgs, mbURLChangedCallback>(this, NativeMethods.mbOnURLChanged);
            NewWindow              = new EventAdapter <NewWindowEventArgs, mbCreateViewCallback>(this, NativeMethods.mbOnCreateView);
            LoadUrlBegin           = new EventAdapter <LoadUrlBeginEventArgs, mbLoadUrlBeginCallback>(this, NativeMethods.mbOnLoadUrlBegin);
            WebSocketOnWillConnect = new EventAdapter <WebSocketWillConnectEventArgs, onWillConnect>(this, RegSocketOnWillConnect);
            WebSocketOnConnect     = new EventAdapter <WebSocketConnectedEventArgs, onConnected>(this, RegSocketOnConnected);
            WebSocketOnReceive     = new EventAdapter <WebSocketDataEventArgs, onReceive>(this, RegSocketOnReceive);
            WebSocketOnSend        = new EventAdapter <WebSocketDataEventArgs, onSend>(this, RegSocketOnSend);
            WebSocketOnError       = new EventAdapter <WebSocketErrorEventArgs, onError>(this, RegSocketOnError);
            LoadUrlEnd             = new EventAdapter <LoadUrlEndEventArgs, mbLoadUrlEndCallback>(this, NativeMethods.mbOnLoadUrlEnd);
            DocumentReady          = new EventAdapter <DocumentReadyEventArgs, mbDocumentReadyCallback>(this, NativeMethods.mbOnDocumentReady);
            JsQuery  = new EventAdapter <OnJsQueryEventArgs, mbJsQueryCallback>(this, NativeMethods.mbOnJsQuery);
            DownLoad = new EventAdapter <DownloadEventArgs, mbDownloadCallback>(this, NativeMethods.mbOnDownload);
            DownLoadInBlinkThread      = new EventAdapter <DownloadDownloadInBlinkThreadEventArg, mbDownloadInBlinkThreadCallback>(this, NativeMethods.mbOnDownloadInBlinkThread);
            _mbPaintUpdatedCallback    = new mbPaintUpdatedCallback(OnPaintUpdate);
            _mbPaintBitUpdatedCallback = new mbPaintBitUpdatedCallback(mbPaintBitUpdated);

            NativeMethods.mbSetAutoDrawToHwnd(WebView, true);
            NativeMethods.mbOnPaintUpdated(WebView, _mbPaintUpdatedCallback, IntPtr.Zero);
            //NativeMethods.mbOnPaintBitUpdated(WebView, _mbPaintBitUpdatedCallback, IntPtr.Zero);
            if (!IsHandleCreated)
            {
                CreateHandle();
            }
            WebView.SetHandle(Handle);
            ImeContext.SetImeStatus(ImeMode.NoControl, Handle);
            ImeMode        = ImeMode.Off;
            Disposed      += Browser_Disposed;
            DoubleBuffered = true;
        }
예제 #32
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Gets the layout, and all the relevant views it contains.
            Layout = inflater.Inflate(Resource.Layout.EventList, null)
                             .FindViewById<FrameLayout>(Resource.Id.layout);
            List = Layout.FindViewById<ListView>(Resource.Id.list);

            // Show spinner
            Layout.RemoveAllViews();
            Layout.AddView(new ProgressBar(Activity));

            ThreadPool.QueueUserWorkItem(o =>
            {
                // Get joined events and create adapter.
                Adapter = new EventAdapter<Event>(Activity, MainActivity.CIF.GetJoinedEvents(100));

                // On leave click
                Adapter.OnAction1 = (i) =>
                {
                    // Build an alertdialog
                    var alertBuilder = new Android.Support.V7.App.AlertDialog.Builder(Activity);
                    alertBuilder.SetTitle(Resources.GetString(Resource.String.leave_event));
                    alertBuilder.SetMessage(Resources.GetString(Resource.String.message_leave_event_confirm));

                    alertBuilder.SetNegativeButton(Resources.GetString(Resource.String.no), (s, e) => { });
                    alertBuilder.SetPositiveButton(Resources.GetString(Resource.String.yes), (s, e) =>
                    {
                        var @event = Adapter.Items[i];

                        //Leave and remove event.
                        MainActivity.CIF.CancelReg(@event);
                        Adapter.RemoveAt(i);

                        // Show update snackbar
                        AccentSnackBar.Make(Layout, Activity, Resources.GetString(Resource.String.event_left) + @event.Title, 2000).Show();
                    });

                    // Show alertdialog
                    alertBuilder.Show();
                };
                Adapter.OnUpdatePosition = (view, evnt, exp) =>
                {
                    view.FindViewById<TextView>(Resource.Id.title).Text = evnt.Title;
                    view.FindViewById<TextView>(Resource.Id.subtitle).Text = evnt.Date.ToString("G");

                    // Content of card contains description, location, slotstaken and slotstotal.
                    view.FindViewById<TextView>(Resource.Id.expanded_content).Text =
                        string.Format("{0}\n\n{1}: {2}\n{3}: {4}/{5}",
                                      evnt.Description, Resources.GetString(Resource.String.event_place),
                                      evnt.Location, Resources.GetString(Resource.String.event_participants),
                                      evnt.SlotsTaken, evnt.SlotsTotal);

                    view.FindViewById<Button>(Resource.Id.action1).Text = GetString(Resource.String.leave_button);

                    // Remove second button.
                    view.FindViewById<Button>(Resource.Id.action2).Visibility = ViewStates.Gone;
                };

                Activity.RunOnUiThread(() =>
                {
                    // Set listview adapter
                    List.Adapter = Adapter;

                    // Remove spinner, and add listview
                    Layout.RemoveAllViews();
                    Layout.AddView(List);
                });
            });

            return Layout;
        }
예제 #33
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Gets the layout, and all the relevant views it contains.
            Layout = inflater.Inflate(Resource.Layout.EventList, null)
                             .FindViewById<FrameLayout>(Resource.Id.layout);
            List = Layout.FindViewById<ListView>(Resource.Id.list);

            // Show spinner
            Layout.RemoveAllViews();
            Layout.AddView(new ProgressBar(Activity));

            ThreadPool.QueueUserWorkItem(o =>
            {
                // Get recommended events and create adapter.
                Adapter = new EventAdapter<Offer>(Activity, MainActivity.CIF.RequestOffers());

                // On decline click
                Adapter.OnAction1 = (i) =>
                {
                    // get event
                    var @event = Adapter.Items[i];

                    // reply and remove event
                    MainActivity.CIF.ReplyOffer(false, @event);
                    Adapter.RemoveAt(i);

                    // Show update snackbar
                    AccentSnackBar.Make(Layout, Activity, Resources.GetString(Resource.String.event_decline) + @event.Title, 2000).Show();
                };
                // On accept click
                Adapter.OnAction2 = (i) =>
                {
                    // get event
                    var @event = Adapter.Items[i];

                    // reply and remove event
                    MainActivity.CIF.ReplyOffer(true, @event);
                    Adapter.RemoveAt(i);

                    // Show update snackbar
                    AccentSnackBar.Make(Layout, Activity, Resources.GetString(Resource.String.event_accepted) + @event.Title, 2000).Show();
                };
                Adapter.OnUpdatePosition = (view, evnt, exp) =>
                {
                    var offer = evnt as Offer;
                    string matchs = GetString(Resource.String.event_matchedby) + ":\n";

                    view.FindViewById<TextView>(Resource.Id.title).Text = offer.Title;
                    view.FindViewById<TextView>(Resource.Id.subtitle).Text = offer.Date.ToString("G");

                    AddInfo(offer.Match.Interests, InfoType.Interest, ref matchs);
                    AddInfo(offer.Match.FoodHabits, InfoType.FoodHabit, ref matchs);
                    AddInfo(offer.Match.Languages, InfoType.Language, ref matchs);

                    // Content of card contains description, location, slotstaken, slotstotal and matches.
                    view.FindViewById<TextView>(Resource.Id.expanded_content).Text =
                        string.Format("{0}\n\n{1}: {2}\n{3}: {4}/{5}\n\n{6}",
                                      offer.Description, Resources.GetString(Resource.String.event_place),
                                      offer.Location, Resources.GetString(Resource.String.event_participants),
                                      offer.SlotsTaken, offer.SlotsTotal, matchs);

                    view.FindViewById<Button>(Resource.Id.action1).Text = GetString(Resource.String.decline_button);
                    view.FindViewById<Button>(Resource.Id.action2).Text = GetString(Resource.String.accept_button);
                };

                Activity.RunOnUiThread(() =>
                {
                    // Set listview adapter
                    List.Adapter = Adapter;

                    // Remove spinner, and add listview
                    Layout.RemoveAllViews();
                    Layout.AddView(List);
                });
            });

            return Layout;
        }
예제 #34
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Gets the layout, and all the relevant views it contains.
            Layout = inflater.Inflate(Resource.Layout.HostList, null)
                             .FindViewById<CoordinatorLayout>(Resource.Id.layout);
            List = Layout.FindViewById<ListView>(Resource.Id.list);
            Fab = Layout.FindViewById<FloatingActionButton>(Resource.Id.fab);
            Layout.RemoveAllViews();

            // Show spinner
            var pd = new ProgressBar(Activity);
            pd.LayoutParameters = new CoordinatorLayout.LayoutParams(-1, -1);
            Layout.AddView(pd);

            ThreadPool.QueueUserWorkItem(o =>
            {
                // Get hosting events and create adapter.
                Adapter = new EventAdapter<Event>(Activity, MainActivity.CIF.GetHostedEvents(100));

                Adapter.OnUpdatePosition = (view, evnt, exp) =>
                {
                    view.FindViewById<TextView>(Resource.Id.title).Text = evnt.Title;
                    view.FindViewById<TextView>(Resource.Id.subtitle).Text = evnt.Date.ToString("G");

                    // Content of card contains description, location, slotstaken and slotstotal.
                    view.FindViewById<TextView>(Resource.Id.expanded_content).Text =
                        string.Format("{0}\n\n{1}: {2}\n{3}: {4}/{5}",
                                      evnt.Description, Resources.GetString(Resource.String.event_place),
                                      evnt.Location, Resources.GetString(Resource.String.event_participants),
                                      evnt.SlotsTaken, evnt.SlotsTotal);

                    view.FindViewById<Button>(Resource.Id.action1).Text = GetString(Resource.String.cancel_button);
                    view.FindViewById<Button>(Resource.Id.action2).Text = GetString(Resource.String.edit_button); ;
                };

                // On cancel click
                Adapter.OnAction1 = (i) =>
                {
                    // Build an alertdialog
                    var alertBuilder = new Android.Support.V7.App.AlertDialog.Builder(Activity);
                    alertBuilder.SetTitle(Resources.GetString(Resource.String.cancel_event));
                    alertBuilder.SetMessage(Resources.GetString(Resource.String.message_cancel_event_confirm));

                    alertBuilder.SetNegativeButton(Resources.GetString(Resource.String.no_abort), (s, e) => { });
                    alertBuilder.SetPositiveButton(Resources.GetString(Resource.String.yes_cancel), (s, e) =>
                    {
                        var @event = Adapter.Items[i];

                        //Delete and remove event.
                        MainActivity.CIF.DeleteEvent(@event);
                        Adapter.RemoveAt(i);

                        // Show update snackbar
                        AccentSnackBar.Make(Layout, Activity, Resources.GetString(Resource.String.event_canceled) + @event.Title, 2000).Show();
                    });

                    // Show alertdialog
                    alertBuilder.Show();
                };
                Adapter.OnAction2 = EditEvent;
                Fab.Click += (s, e) => NewEvent();

                Activity.RunOnUiThread(() =>
                {
                    // Set listview adapter
                    List.Adapter = Adapter;

                    // Remove spinner, and add listview and Fab
                    Layout.RemoveAllViews();
                    Layout.AddView(List);
                    Layout.AddView(Fab);
                });
            });

            return Layout;
        }