Example #1
0
        protected virtual List <ExplorerObject> CreateAndroidDrives(
            Transform transform,
            Action <ExplorerObject> onInitialize = null)
        {
            if (FolderObject)
            {
                List <ExplorerObject> objects = new List <ExplorerObject>();

                string[] drives = new string[]
                {
                    //Environment.GetFolderPath(Environment.SpecialFolder.Personal),
                    AndroidUtilities.GetAndroidExternalStoragePath()
                };

                Debug.LogFormat("Found Drive count: {0}", drives.Length);

                foreach (string d in drives)
                {
                    Debug.LogFormat("Processing Drive: {0}", d);

                    ExplorerObject newObject = CreateObject(d, FolderObject, ContentContainer, onInitialize, false);
                    if (newObject != null)
                    {
                        objects.Add(newObject);
                    }
                }

                return(objects);
            }

            return(null);
        }
        protected override void InitBindings()
        {
            MainActivity.CurrentContext.RequestedOrientation = ScreenOrientation.Portrait;
            Bindings = new List <Binding>();
            Bindings.Add(this.SetBinding(() => ViewModel.UserNameInput, () => UsernameInput.Text, BindingMode.TwoWay));
            Bindings.Add(this.SetBinding(() => ViewModel.Authenticating, () => LoginPageLoadingSpinner.Visibility,
                                         BindingMode.OneWay)
                         .ConvertSourceToTarget(Converters.BoolToVisibility));
            Bindings.Add(this.SetBinding(() => ViewModel.PasswordInput, () => PasswordInput.Text, BindingMode.TwoWay));

            Bindings.Add(
                this.SetBinding(() => ViewModel.LogOutButtonVisibility,
                                () => LoginPageLogOutButton.Visibility).ConvertSourceToTarget(Converters.BoolToVisibility));

            PasswordInput.SetOnEditorActionListener(new OnEditorActionListener(action =>
            {
                if (action == ImeAction.Done)
                {
                    ViewModel.LogInCommand.Execute(null);
                }
                AndroidUtilities.HideKeyboard();
            }));

            LoginPageRegisterButton.SetOnClickListener(new OnClickListener(v => ViewModel.NavigateRegister.Execute(null)));
            LoginPageProblemsButton.SetOnClickListener(new OnClickListener(v => ViewModel.ProblemsCommand.Execute(null)));

            SignInButton.SetOnClickListener(new OnClickListener(v =>
            {
                ViewModel.LogInCommand.Execute(null);
                AndroidUtilities.HideKeyboard();
            }));
            LoginPageLogOutButton.SetOnClickListener(new OnClickListener(v => ViewModel.LogOutCommand.Execute(null)));
        }
 private void CleanupDialog()
 {
     AndroidUtilities.HideKeyboard();
     _tagsDialogBindings?.ForEach(binding => binding.Detach());
     _tagsDialog?.Dismiss();
     MainActivity.CurrentContext.DialogToCollapseOnBack = null;
 }
Example #4
0
        private void InstallSdkToolsIfNeeded()
        {
            string prjDir = GetAndroidProjectInCompiledDir();

            string packages = "\"build-tools;30.0.3\" \"ndk;21.3.6528147\" \"platforms;android-29\"";

            AndroidUtilities.RunSdkManager(packages, prjDir);
        }
Example #5
0
        private bool IsProjectSane(CompileMessages errors)
        {
            foreach (string error in AndroidUtilities.GetPreferencesErrors())
            {
                errors.Add(new CompileError("Android Build: " + error));
            }

            return(errors.Count == 0);
        }
Example #6
0
 public EmojiSpan(EmojiDrawable d, int verticalAlignment, int s, Paint.FontMetricsInt original) :
     base(d)
 {
     fontMetrics = original;
     if (original != null)
     {
         size = System.Math.Abs(fontMetrics.Descent) + System.Math.Abs(fontMetrics.Ascent);
         if (size == 0)
         {
             size = AndroidUtilities.dp(20);
         }
     }
 }
 private static void CleanupForumPostTextInputDialog(bool success)
 {
     if (_forumTextInputDialog == null)
     {
         return;
     }
     AndroidUtilities.HideKeyboard();
     _success = success;
     _semaphoreForumTextInput.Release();
     _forumTextInputDialog.Dismiss();
     _forumTextInputDialog.Dispose();
     _forumTextInputDialog = null;
 }
 private static void CleanupTextInputDialog(bool success)
 {
     if (_textInputDialog == null)
     {
         return;
     }
     _success = success;
     AndroidUtilities.HideKeyboard();
     ViewModelLocator.NavMgr.ResetOneTimeOverride();
     _semaphoreTextInput.Release();
     _textInputDialog.Dismiss();
     _textInputDialog.Dispose();
     _textInputDialog = null;
 }
Example #9
0
 private static void CleanupWatchedDialog()
 {
     if (_watchedDialog != null)
     {
         AndroidUtilities.HideKeyboard();
         _watchedDialog.Dismiss();
     }
     _watchedDialogBindings.ForEach(binding => binding.Detach());
     _watchedDialogBindings = new List <Binding>();
     _watchedDialog         = null;
     _watchedDialogContext  = null;
     _watchedDialogAction   = null;
     MainActivity.CurrentContext.DialogToCollapseOnBack = null;
 }
Example #10
0
        private void StopGradle()
        {
            if (!UseGradleDaemon)
            {
                return;
            }

            string prjDir      = GetAndroidProjectInCompiledDir();
            string gradle_path = Path.Combine(prjDir, "gradlew.bat");

            if (!Directory.Exists(prjDir) || !File.Exists(gradle_path))
            {
                return;
            }

            AndroidUtilities.RunGradlewStop(prjDir);
        }
Example #11
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            string errors = String.Join("\n", AndroidUtilities.GetKeystoreErrors(_ks));

            if (!string.IsNullOrEmpty(errors))
            {
                string intro = "We found errors that have to be fixed before keystore geneation:";

                MessageBox.Show(intro + "\n\n" + errors);
                return;
            }

            if (AndroidUtilities.RunGenerateKeystore(_ks))
            {
                _lastGeneratedKS = _ks.Copy();
                buttonOK.Enabled = true;
            }
        }
Example #12
0
        private static void CleanupGoPageDialog(DialogResult success)
        {
            if (_goPageDialog == null)
            {
                return;
            }
            AndroidUtilities.HideKeyboard();
            switch (success)
            {
            case DialogResult.Cancel:
                _result = null;
                break;

            case DialogResult.LastPage:
                _result = -2;
                break;

            case DialogResult.FirstPage:
                _result = -1;
                break;

            case DialogResult.InputPage:
                var text = _goPageDialog.HolderView.FindViewById <EditText>(Resource.Id.ForumGoToPageDialogTextBox)
                           .Text;
                if (int.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out int page))
                {
                    _result = page;
                }
                else
                {
                    _result = null;
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(success), success, null);
            }

            GoPageSemaphore.Release();
            _goPageDialog.Dismiss();
            _goPageDialog.Dispose();
            _goPageDialog = null;
        }
Example #13
0
            public override int GetSize(Paint paint, ICharSequence text, int start, int end, Paint.FontMetricsInt fm)
            {
                if (fm == null)
                {
                    fm = new Paint.FontMetricsInt();
                }

                if (fontMetrics == null)
                {
                    int sz = base.GetSize(paint, text, start, end, fm);

                    int offset = AndroidUtilities.dp(8);
                    int w      = AndroidUtilities.dp(10);
                    fm.Top     = -w - offset;
                    fm.Bottom  = w - offset;
                    fm.Ascent  = -w - offset;
                    fm.Leading = 0;
                    fm.Descent = w - offset;

                    return(sz);
                }
                else
                {
                    if (fm != null)
                    {
                        fm.Ascent  = fontMetrics.Ascent;
                        fm.Descent = fontMetrics.Descent;

                        fm.Top    = fontMetrics.Top;
                        fm.Bottom = fontMetrics.Bottom;
                    }
                    if (Drawable != null)
                    {
                        Drawable.SetBounds(0, 0, size, size);
                    }
                    return(size);
                }
            }
Example #14
0
 private void javaHomeCheck()
 {
     labelJdkOk.Visible = AndroidUtilities.IsJdkFound(_settings.AndroidJavaHome);
 }
Example #15
0
        private static void loadEmoji(int page)
        {
            try
            {
                float scale       = 1.0f;
                int   imageResize = 1;
                if (AndroidUtilities.density <= 1.0f)
                {
                    scale       = 2.0f;
                    imageResize = 2;
                }
                else if (AndroidUtilities.density <= 1.5f)
                {
                    scale       = 3.0f;
                    imageResize = 2;
                }
                else if (AndroidUtilities.density <= 2.0f)
                {
                    scale = 2.0f;
                }
                else
                {
                    scale = 3.0f;
                }

                var imageName = String.Format("emoji%.01fx_%d.jpg", scale, page);
                var imageFile = Application.Context.ApplicationContext.GetFileStreamPath(imageName);
                if (!imageFile.Exists())
                {
                    var iss = Application.Context.ApplicationContext.Assets.Open("emoji/" + imageName);
                    AndroidUtilities.copyFile(iss, imageFile);
                    iss.Close();
                }

                BitmapFactory.Options opts = new BitmapFactory.Options();
                opts.InJustDecodeBounds = true;
                BitmapFactory.DecodeFile(imageFile.AbsolutePath, opts);

                int width  = opts.OutWidth / imageResize;
                int height = opts.OutHeight / imageResize;
                int stride = width * 4;

                var bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888);
                AndroidUtilities.loadBitmap(imageFile.AbsolutePath, bitmap, imageResize, width, height, stride);

                imageName = String.Format("emoji%.01fx_a_%d.jpg", scale, page);
                imageFile = Application.Context.ApplicationContext.GetFileStreamPath(imageName);
                if (!imageFile.Exists())
                {
                    var iss = Start.getInstance().Assets.Open("emoji/" + imageName);
                    AndroidUtilities.copyFile(iss, imageFile);
                    iss.Close();
                }

                AndroidUtilities.loadBitmap(imageFile.AbsolutePath, bitmap, imageResize, width, height, stride);



                AndroidUtilities.runOnUIThread(new Runnable(() =>
                {
                    emojiBmp[page] = bitmap;
                    //NotificationCenter.getInstance().postNotificationName(NotificationCenter.emojiDidLoaded);
                }));
            }
            catch (Java.Lang.Exception ex)
            {
                var erro = ex;
            }
        }
Example #16
0
        public override bool Build(CompileMessages errors, bool forceRebuild)
        {
            if (!base.Build(errors, forceRebuild))
            {
                return(false);
            }

            UseGradleDaemon = Factory.AGSEditor.Settings.AndroidBuildGradleDaemon;
            string andProjDir = GetAndroidProjectInCompiledDir();

            if (!IsProjectSane(errors))
            {
                return(false);
            }

            InstallSdkToolsIfNeeded();

            AndroidBuildFormat buildFormat = Factory.AGSEditor.CurrentGame.Settings.AndroidBuildFormat;
            string             appName     = GetFinalAppName();

            string assetsDir = GetAssetsDir();

            if (!Directory.Exists(assetsDir))
            {
                Directory.CreateDirectory(assetsDir);
            }
            ClearInvalidAssetDirIfNeeded();

            foreach (string fileName in Directory.GetFiles(Path.Combine(AGSEditor.OUTPUT_DIRECTORY, AGSEditor.DATA_OUTPUT_DIRECTORY)))
            {
                if ((File.GetAttributes(fileName) & (FileAttributes.Hidden | FileAttributes.System | FileAttributes.Temporary)) != 0)
                {
                    continue;
                }
                if ((!fileName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) &&
                    (!Path.GetFileName(fileName).Equals("winsetup.exe", StringComparison.OrdinalIgnoreCase)) &&
                    (!Path.GetFileName(fileName).Equals(AGSEditor.CONFIG_FILE_NAME, StringComparison.OrdinalIgnoreCase)))
                {
                    string dest_filename = Path.Combine(assetsDir, Path.GetFileName(fileName));
                    Utilities.HardlinkOrCopy(dest_filename, fileName, true);
                }
            }

            // Update config file with current game parameters
            Factory.AGSEditor.WriteConfigFile(assetsDir);
            WriteAndroidCfg(assetsDir);

            foreach (KeyValuePair <string, string> pair in GetRequiredLibraryPaths())
            {
                string fileName  = pair.Key;
                string originDir = pair.Value;

                string dest = GetCompiledPath(ANDROID_DIR, Path.GetDirectoryName(fileName));

                if (!Directory.Exists(dest))
                {
                    // doesn't exist, let's create it
                    Directory.CreateDirectory(dest);
                }

                string destFile       = GetCompiledPath(ANDROID_DIR, fileName);
                string originFile     = Path.Combine(originDir, fileName);
                string destFileName   = Utilities.ResolveSourcePath(destFile);
                string sourceFileName = Utilities.ResolveSourcePath(originFile);

                if (fileName.EndsWith(".so"))
                {
                    Utilities.HardlinkOrCopy(destFile, originFile, true);
                }
                else
                {
                    File.Copy(sourceFileName, destFileName, true);
                }
            }

            string destDir = GetCompiledPath(ANDROID_DIR, "mygame");

            WriteProjectProperties(destDir);
            WriteLocalStaticProperties(destDir);
            WriteProjectXml(destDir);
            IconAssetType iconType = GetGameIconType();

            if (iconType != IconAssetType.NoIconFiles)
            {
                SetGameIcons(iconType, destDir);
            }

            GradleTasks gradleTask = GradleTasks.bundleRelease;

            if (buildFormat == AndroidBuildFormat.ApkEmbedded)
            {
                gradleTask = GradleTasks.assembleRelease;
            }

            if (!AndroidUtilities.RunGradlewTask(gradleTask, andProjDir, use_daemon: UseGradleDaemon))
            {
                errors.Add(new CompileError("There was an error running gradle to build the Android App."));
                return(false);
            }

            string appFinalFile     = GetFinalAppName();
            string appSrcDir        = GetOutputDir();
            string generatedAppFile = Path.Combine(appSrcDir, appFinalFile);

            if (File.Exists(generatedAppFile))
            {
                try
                {
                    Utilities.HardlinkOrCopy(GetCompiledPath(ANDROID_DIR, appFinalFile), generatedAppFile, true);
                }
                catch { }

                return(true);
            }

            errors.Add(new CompileError("Failed to generate Android App."));

            return(false);
        }
Example #17
0
 private void androidHomeCheck()
 {
     labelSdkOk.Visible = AndroidUtilities.IsSdkFound(_settings.AndroidHome);
 }
 private void SearchViewOnQueryTextSubmit(object sender, SearchView.QueryTextSubmitEventArgs queryTextSubmitEventArgs)
 {
     AndroidUtilities.HideKeyboard();
     ViewModel.SearchCommand.Execute(null);
 }