/// <summary>
        /// Internals the find top most frequently used.
        /// </summary>
        /// <param name="maximum">The maximum.</param>
        /// <returns></returns>
        internal TaskDescription[] InternalFindTopMostFrequentlyUsed(int maximum)
        {
            TaskDescriptionsProvider provider  = this.Engine.TaskDescriptionsProvider;
            List <TaskDescription>   localList = new List <TaskDescription>(maximum);

            //  ...sort by usage
            MostRecentlyUsedItem[] items = this._items.ToArray();
            Array.Sort(items, MostRecentlyUsedItem.UsageComparer);

            foreach (MostRecentlyUsedItem mruItem in items)
            {
                TaskDescription description = provider.FindDescription(mruItem.Id);
                if (description != null)
                {
                    localList.Add(description);
                }

                if (localList.Count == maximum)
                {
                    break;
                }
            }

            return(localList.ToArray());
        }
        /// <summary>
        /// Generates an object from its XML representation.
        /// </summary>
        /// <param name="reader">The <see cref="T:System.Xml.XmlReader"></see> stream from which the object is deserialized.</param>
        public void ReadXml(XmlReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            TaskDescriptionsProvider provider = AppContext.Current.TaskDescriptionsProvider;

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.LocalName)
                    {
                    case "TaskDescription":
                        AppendTaskDescription(reader, provider);
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Froms the db reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <returns></returns>
        private void FromDbReader(SqlDataReader reader, Collection <TaskDescription> descriptions)
        {
            TaskDescription td = new TaskDescription
            {
                Id   = reader.GetGuid(0),
                Name = reader.GetString(2)
            };

            if (!reader.IsDBNull(3))
            {
                td.Description = reader.GetString(3);
            }
            td.NoNagMinutes = reader.GetInt32(4);
            td.Colour       = reader.GetString(5);
            td.Sequence     = reader.GetInt32(6);
            td.CustomFlags  = reader.GetInt32(7);
            td.IsPrivate    = reader.GetBoolean(8);
            td.IsCategory   = reader.GetBoolean(9);
            td.IsEvent      = reader.GetBoolean(10);
            if (!reader.IsDBNull(11))
            {
                td.GroupName = reader.GetString(11);
            }
            td.MenuColumn = reader.GetInt32(12);
            if (!reader.IsDBNull(13))
            {
                td.Url = reader.GetString(13);
            }
            if (!reader.IsDBNull(14))
            {
                td.Server = reader.GetString(14);
            }
            if (!reader.IsDBNull(15))
            {
                td.ValidFromDate = reader.GetDateTime(15);
            }
            if (!reader.IsDBNull(16))
            {
                td.ValidToDate = reader.GetDateTime(16);
            }
            td.Enabled = reader.GetBoolean(17);
            if (!reader.IsDBNull(1))
            {
                Guid            parentId = reader.GetGuid(1);
                TaskDescription parent   = TaskDescriptionsProvider.FindChildInHierarchy(descriptions, parentId);
                if (parent != null)
                {
                    parent.Children.Add(td);
                }
            }
            else
            {
                descriptions.Add(td);
            }
        }
        /// <summary>
        /// Appends the task description.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="provider">The provider.</param>
        private void AppendTaskDescription(XmlReader reader, TaskDescriptionsProvider provider)
        {
            Guid            descriptionId = new Guid(reader.GetAttribute("id"));
            TaskDescription description   = provider.FindDescription(descriptionId);

            if (description != null)
            {
                // TODO: Check for duplicates and remove them
                _pinnedTaskDescriptions.Add(description);
            }
        }
        /// <summary>
        /// Initialises this instance.
        /// </summary>
        public void Initialise()
        {
            if (SettingsProvider == null)
            {
                return;
            }

            if (SettingsProvider.Get(STRING_APPINSTANCEKEY, string.Empty).ToString().Length == 0)
            {
                SettingsProvider.Set(STRING_APPINSTANCEKEY, Guid.NewGuid().ToString("D"), PersistHint.AcrossSessions);
                SettingsProvider.Set(STRING_APPINSTANCECREATEDATE, DateTime.Now.ToString("F"),
                                     PersistHint.AcrossSessions);
            }

            TaskDescriptionsProvider.LoadDescriptions();

            SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

            Trace.TraceInformation("AppContext:Initialise");
        }
        /// <summary>
        /// Internals the find top most recently used.
        /// </summary>
        /// <param name="maximum">The maximum.</param>
        /// <returns></returns>
        internal TaskDescription[] InternalFindTopMostRecentlyUsed(int maximum)
        {
            TaskDescriptionsProvider provider  = this.Engine.TaskDescriptionsProvider;
            List <TaskDescription>   localList = new List <TaskDescription>(maximum);

            foreach (MostRecentlyUsedItem mruItem in this._items)
            {
                TaskDescription description = provider.FindDescription(mruItem.Id);

                if (description != null)
                {
                    localList.Add(description);
                }

                if (localList.Count == maximum)
                {
                    break;
                }
            }

            return(localList.ToArray());
        }
Exemple #7
0
        /// <summary>
        /// Initalises the engine.
        /// </summary>
        private void InitaliseEngine()
        {
            LicenseManagement();

            _heartbeatTimer = new System.Timers.Timer
            {
                Enabled  = false,
                Interval = int.Parse(Properties.Resources.HeartbeatInterval)
            };
            _heartbeatTimer.Elapsed += InternalHeartbeatTimerElapsed;
            _nagTimer = new System.Timers.Timer
            {
                Enabled = false
            };
            _nagTimer.Elapsed += InternalNagTimerElapsed;

            _appFolder = (new FileInfo(Assembly.GetExecutingAssembly().Location)).Directory;

            _dataFolder = new DirectoryInfo(System.Windows.Forms.Application.UserAppDataPath);
            if (_dataFolder.Exists == false)
            {
                _dataFolder.Create();
                _dataFolder.Refresh();
            }

            //Read Provider Configuration
            if (ConfigurationManager.GetSection(ConfigurationSection.SectionName) is ConfigurationSection config)
            {
                if (config.Providers == null || config.Providers.Count == 0)
                {
                    Trace.TraceError(Properties.Resources.NoProvidersFoundInConfigurationFile);
                    throw new InvalidOperationException(Properties.Resources.NoProvidersFoundInConfigurationFile);
                }

                // The providers are created and initalised in a special order,
                // first is the
                // identity provider (work out who is using this application)
                _identityProvider =
                    InitializeProvider(config, "IdentityProvider") as IdentityProvider;
                _identityProvider.DiscoverIdentity();
                if (!_identityProvider.Principal.Identity.IsAuthenticated)
                {
                    Trace.TraceError(Properties.Resources.IdentityCouldNotBeEstablished);
                    throw new InvalidOperationException(Properties.Resources.IdentityCouldNotBeEstablished);
                }

                // Then comes the plugin provider
                _pluginsProvider =
                    InitializeProvider(config, "PluginsProvider") as PluginsProvider;
                _pluginsProvider.DiscoverPlugins();

                // then comes the TaskDescription and Task Activity providers
                _taskDescriptionsProvider =
                    InitializeProvider(config, "TaskDescriptionsProvider") as TaskDescriptionsProvider;
                _taskActivitiesProvider =
                    InitializeProvider(config, "TaskActivitiesProvider") as TaskActivitiesProvider;
                // The UI provider then gets created and initalised
                _uiProvider =
                    InitializeProvider(config, "UIProvider") as UIProvider;
                // Finnaly the Users memory provider
                _userMemoryProvider =
                    InitializeProvider(config, "UserMemoryProvider") as UserMemoryProvider;
            }
            else
            {
                Trace.TraceError(Properties.Resources.ConfigurationFileInvalid);
                throw new InvalidOperationException(Properties.Resources.ConfigurationFileInvalid);
            }

            Trace.TraceInformation("TaskClerkSDK:InitaliseEngine");
        }