Project

General

Profile

Download (6.82 KB) Statistics
| Branch: | Tag: | Revision:

magiccube / src / main / java / org / distorted / dialogs / RubikDialogAbout.java @ 7adf6974

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2022 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

    
10
package org.distorted.dialogs;
11

    
12
import android.app.Activity;
13
import android.app.Dialog;
14
import android.content.Intent;
15
import android.content.pm.PackageInfo;
16
import android.content.pm.PackageManager;
17
import android.content.res.Resources;
18
import android.net.Uri;
19
import android.util.TypedValue;
20
import android.view.View;
21
import android.view.Window;
22
import android.view.WindowManager;
23
import android.widget.LinearLayout;
24
import android.widget.TextView;
25

    
26
import androidx.fragment.app.FragmentActivity;
27

    
28
import org.distorted.main.BuildConfig;
29
import org.distorted.main.R;
30

    
31
///////////////////////////////////////////////////////////////////////////////////////////////////
32

    
33
public class RubikDialogAbout extends RubikDialogAbstract
34
  {
35
  private static final String WHATS_NEW =
36
      "1. New puzzle-centric UI. All actions one can do to a given puzzle in one context menu. ";
37

    
38
  private static final String WHATS_COMING =
39
      "1. Improvements to the new UI - possibility to sort the puzzles by various criteria.\n" +
40
      "2. Support for adjustable stickers (not only the colors, but support for texturing the whole cube with images of your choice).\n"  +
41
      "3. Algorithmic solvers. (sub-optimal solvers for larger puzzles such as the 4x4)\n" +
42
      "4. iOS version (no time for this, anyone can help? Code is open-source)\n" +
43
      "5. More objects:\n    - Ghost Cubes\n    - more Mirrors\n    - more Mixups\n    - Penrose Cubes\n";
44

    
45
///////////////////////////////////////////////////////////////////////////////////////////////////
46

    
47
  @Override
48
  public void onResume()
49
    {
50
    super.onResume();
51

    
52
    Window window = getDialog().getWindow();
53

    
54
    if( window!=null )
55
      {
56
      WindowManager.LayoutParams params = window.getAttributes();
57
      params.width  = (int)Math.min( mHeight*0.60f,mWidth*0.90f );
58
      params.height = (int)(mHeight*0.90f);
59
      window.setAttributes(params);
60
      }
61
    }
62

    
63
///////////////////////////////////////////////////////////////////////////////////////////////////
64

    
65
  public int getResource()      { return R.layout.dialog_about; }
66
  public int getTitleResource() { return PARAMETRIC_TITLE; }
67
  public boolean hasArgument()  { return true; }
68
  public int getPositive()      { return R.string.ok; }
69
  public int getNegative()      { return -1; }
70
  public void positiveAction()  { }
71
  public void negativeAction()  { }
72

    
73
///////////////////////////////////////////////////////////////////////////////////////////////////
74

    
75
  private String findCurrentVersion(Activity act)
76
    {
77
    String version;
78
    try
79
      {
80
      PackageInfo pInfo = act.getPackageManager().getPackageInfo( act.getPackageName(), 0);
81
      version= pInfo.versionName;
82
      }
83
    catch (PackageManager.NameNotFoundException e)
84
      {
85
      version= "unknown";
86
      }
87

    
88
    return version;
89
    }
90

    
91
///////////////////////////////////////////////////////////////////////////////////////////////////
92

    
93
  @Override
94
  String getTitleString(FragmentActivity fact)
95
    {
96
    Resources res= getResources();
97
    Activity act= (Activity) getContext();
98
    String version= act!=null ? findCurrentVersion(act) : "unknown";
99
    return res.getString(R.string.ab_placeholder,version);
100
    }
101

    
102
///////////////////////////////////////////////////////////////////////////////////////////////////
103

    
104
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
105
    {
106
    int width = (int)Math.min( mHeight*0.60f,mWidth*0.90f );
107
    int sS= (int)(width*0.043f);
108
    int bS= (int)(width*0.060f);
109

    
110
    TextView shaV = view.findViewById(R.id.about_share_string);
111
    TextView emaV = view.findViewById(R.id.about_mail_string);
112
    TextView addV = view.findViewById(R.id.about_mail_address);
113

    
114
    TextView newV = view.findViewById(R.id.about_new_message);
115
    newV.setText(WHATS_NEW);
116
    TextView comV = view.findViewById(R.id.about_coming_message);
117
    comV.setText(WHATS_COMING);
118

    
119
    LinearLayout layoutShare = view.findViewById(R.id.about_share_layout);
120

    
121
    layoutShare.setOnClickListener(new View.OnClickListener()
122
       {
123
       @Override
124
       public void onClick(View v)
125
         {
126
         share(act);
127
         }
128
       });
129

    
130
    LinearLayout layoutEmail = view.findViewById(R.id.about_email_layout);
131

    
132
    layoutEmail.setOnClickListener(new View.OnClickListener()
133
       {
134
       @Override
135
       public void onClick(View v)
136
         {
137
         email(act);
138
         }
139
       });
140

    
141
    shaV.setTextSize(TypedValue.COMPLEX_UNIT_PX, bS);
142
    emaV.setTextSize(TypedValue.COMPLEX_UNIT_PX, bS);
143
    addV.setTextSize(TypedValue.COMPLEX_UNIT_PX, sS);
144
    newV.setTextSize(TypedValue.COMPLEX_UNIT_PX, sS);
145
    comV.setTextSize(TypedValue.COMPLEX_UNIT_PX, sS);
146
    }
147

    
148
///////////////////////////////////////////////////////////////////////////////////////////////////
149

    
150
  private void share(FragmentActivity act)
151
    {
152
    Resources res = act.getResources();
153
    String name = res.getString(R.string.app_name);
154

    
155
    Intent intent = new Intent();
156
    intent.setAction(Intent.ACTION_SEND);
157
    intent.putExtra(Intent.EXTRA_TEXT,
158
    name+": https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID);
159
    intent.setType("text/plain");
160

    
161
    if (intent.resolveActivity(act.getPackageManager()) != null)
162
      {
163
      startActivity(intent);
164
      }
165
    }
166

    
167
///////////////////////////////////////////////////////////////////////////////////////////////////
168

    
169
  private void email(FragmentActivity act)
170
    {
171
    Resources res = act.getResources();
172
    String[] email = { res.getString(R.string.email_address) };
173
    String version = findCurrentVersion((Activity)act);
174
    String name = res.getString(R.string.app_name);
175

    
176
    Intent intent = new Intent(Intent.ACTION_SENDTO);
177
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
178
    intent.putExtra(Intent.EXTRA_EMAIL, email);
179
    intent.putExtra(Intent.EXTRA_SUBJECT, name+" "+version);
180

    
181
    if (intent.resolveActivity(act.getPackageManager()) != null)
182
      {
183
      startActivity(intent);
184
      }
185
    }
186

    
187
///////////////////////////////////////////////////////////////////////////////////////////////////
188

    
189
  public static String getDialogTag()
190
    {
191
    return "DialogAbout";
192
    }
193
  }
(2-2/24)