Revision 236cc1c1
Added by Leszek Koltunski over 1 year ago
| src/main/java/org/distorted/helpers/BaseActivity.java | ||
|---|---|---|
| 44 | 44 | protected int mCurrentTheme; | 
| 45 | 45 | protected int mScreenWidth, mScreenHeight; | 
| 46 | 46 | protected int mHeightLowerBar, mHeightUpperBar; | 
| 47 | protected float mDensity; | |
| 47 | 48 | protected SharedPreferences mPreferences; | 
| 48 | 49 |  | 
| 49 | 50 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| ... | ... | |
| 54 | 55 | mPreferences = PreferenceManager.getDefaultSharedPreferences(this); | 
| 55 | 56 |       mCurrentTheme = mPreferences.getInt("theme",THEME_GREY);
 | 
| 56 | 57 |  | 
| 58 | mDensity = getResources().getDisplayMetrics().density; | |
| 59 |  | |
| 57 | 60 | switch(mCurrentTheme) | 
| 58 | 61 |         {
 | 
| 59 | 62 | case THEME_WHITE : setTheme(R.style.WhiteTheme); break; | 
| ... | ... | |
| 61 | 64 | default : setTheme(R.style.GreyTheme); break; | 
| 62 | 65 | } | 
| 63 | 66 |  | 
| 64 |       android.util.Log.e("D", "current theme: "+mCurrentTheme);
 | |
| 65 |  | |
| 66 | 67 | super.onCreate(savedState); | 
| 67 | 68 | } | 
| 68 | 69 |  | 
| src/main/java/org/distorted/main/MainActivity.java | ||
|---|---|---|
| 14 | 14 | import android.content.pm.PackageInfo; | 
| 15 | 15 | import android.content.pm.PackageManager; | 
| 16 | 16 | import android.content.res.Configuration; | 
| 17 | import android.os.Build; | |
| 18 | 17 | import android.os.Bundle; | 
| 19 | 18 | import android.util.TypedValue; | 
| 20 | import android.view.DisplayCutout; | |
| 21 | 19 | import android.view.View; | 
| 22 | 20 | import android.view.ViewGroup; | 
| 23 | 21 | import android.widget.LinearLayout; | 
| ... | ... | |
| 79 | 77 | computeHeights(); | 
| 80 | 78 |  | 
| 81 | 79 | getWindowWidth(getResources().getConfiguration()); | 
| 82 | android.util.Log.e("D", "onCreate: "+mScreenWidth+" "+mScreenHeight);
 | |
| 83 | 80 |  | 
| 84 | 81 | mCurrVersion = getAppVers(); | 
| 85 | 82 |  | 
| ... | ... | |
| 120 | 117 | layoutBot.setLayoutParams(pL); | 
| 121 | 118 | } | 
| 122 | 119 |  | 
| 123 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 124 | /* | |
| 125 | @Override | |
| 126 | public void onAttachedToWindow() | |
| 127 |       {
 | |
| 128 | super.onAttachedToWindow(); | |
| 129 |  | |
| 130 | getWindowWidth(getResources().getConfiguration()); | |
| 131 |  | |
| 132 |  | |
| 133 | android.util.Log.e("D", "onAttachedToWindow: "+mScreenWidth+" "+mScreenHeight);
 | |
| 134 |  | |
| 135 |  | |
| 136 | mGrid = new MainScrollGrid(); | |
| 137 | mGrid.createGrid(this,mScreenWidth,mSortMode); | |
| 138 |  | |
| 139 | if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.P ) | |
| 140 |         {
 | |
| 141 | DisplayCutout cutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout(); | |
| 142 | int insetHeight = cutout!=null ? cutout.getSafeInsetTop() : 0; | |
| 143 |  | |
| 144 | if( insetHeight>0 ) | |
| 145 |           {
 | |
| 146 | LinearLayout.LayoutParams pH = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, RATIO_HID); | |
| 147 | LinearLayout layoutHid = findViewById(R.id.hiddenBar); | |
| 148 | layoutHid.setLayoutParams(pH); | |
| 149 |  | |
| 150 | LinearLayout.LayoutParams pS = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 1-2*RATIO_BAR-RATIO_HID); | |
| 151 | ScrollView scroll = findViewById(R.id.objectScroll); | |
| 152 | scroll.setLayoutParams(pS); | |
| 153 | } | |
| 154 | } | |
| 155 | } | |
| 156 | */ | |
| 157 | 120 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| 158 | 121 |  | 
| 159 | 122 | @Override | 
| 160 | 123 | public void onConfigurationChanged(@NonNull Configuration conf) | 
| 161 | 124 |       {
 | 
| 162 | 125 | super.onConfigurationChanged(conf); | 
| 163 |  | |
| 164 | android.util.Log.e("D", "onConfigurationChanged");
 | |
| 165 |  | |
| 166 | 126 | getWindowWidth(conf); | 
| 167 | 127 | if( mGrid!=null ) mGrid.updateGrid(this,mScreenWidth); | 
| 168 | 128 | } | 
| ... | ... | |
| 175 | 135 | super.onPause(); | 
| 176 | 136 | RubikNetwork.onPause(); | 
| 177 | 137 | savePreferences(); | 
| 178 |  | |
| 179 |  | |
| 180 | android.util.Log.e("D", "onPause");
 | |
| 181 |  | |
| 182 | 138 | } | 
| 183 | 139 |  | 
| 184 | 140 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| ... | ... | |
| 188 | 144 |       {
 | 
| 189 | 145 | super.onResume(); | 
| 190 | 146 |  | 
| 191 | android.util.Log.e("D", "onResume");
 | |
| 192 |  | |
| 193 | 147 | restorePreferences(mJustStarted); | 
| 194 | 148 |  | 
| 195 | 149 | RubikNetwork network = RubikNetwork.getInstance(); | 
| ... | ... | |
| 225 | 179 | protected void onDestroy() | 
| 226 | 180 |       {
 | 
| 227 | 181 | super.onDestroy(); | 
| 228 |  | |
| 229 | android.util.Log.e("D", "onDestroy");
 | |
| 230 | 182 | } | 
| 231 | 183 |  | 
| 232 | 184 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| ... | ... | |
| 412 | 364 |  | 
| 413 | 365 | public void onSettings(View v) | 
| 414 | 366 |       {
 | 
| 415 |       int sw = (int)(mScreenWidth*0.70);
 | |
| 416 |       int sh = (int)(mScreenHeight*0.25f);
 | |
| 367 |       int sw = (int)(340*mDensity + 0.5f);
 | |
| 368 |       int sh = (int)(188*mDensity + 0.5f);
 | |
| 417 | 369 |  | 
| 418 | 370 | int vw = v.getWidth(); | 
| 419 | 371 |  | 
| src/main/java/org/distorted/main/MainSettingsPopup.java | ||
|---|---|---|
| 122 | 122 | buildSortOptions(act); | 
| 123 | 123 |  | 
| 124 | 124 | ArrayAdapter<String> sortAdapter = new ArrayAdapter<>(act, R.layout.settings_spinner_item, mSortNames); | 
| 125 |     sortAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | |
| 125 |     sortAdapter.setDropDownViewResource(R.layout.settings_spinner_item);
 | |
| 126 | 126 | sortSpinner.setAdapter(sortAdapter); | 
| 127 | 127 |  | 
| 128 | 128 | if( sortMethod>=0 && sortMethod<mSortNames.length ) sortSpinner.setSelection(sortMethod); | 
| ... | ... | |
| 134 | 134 | buildThemeOptions(act); | 
| 135 | 135 |  | 
| 136 | 136 | ArrayAdapter<String> themeAdapter = new ArrayAdapter<>(act, R.layout.settings_spinner_item, mThemeNames); | 
| 137 |     themeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 | |
| 137 |     themeAdapter.setDropDownViewResource(R.layout.settings_spinner_item);
 | |
| 138 | 138 | themeSpinner.setAdapter(themeAdapter); | 
| 139 | 139 |  | 
| 140 | 140 | if( themeValue>=0 && themeValue<mThemeNames.length ) themeSpinner.setSelection(themeValue); | 
| src/main/res/layout/settings_popup.xml | ||
|---|---|---|
| 23 | 23 |  | 
| 24 | 24 | <TextView | 
| 25 | 25 | android:id="@+id/sortText" | 
| 26 | android:layout_marginStart="5dp" | |
| 27 | android:layout_marginEnd="25dp" | |
| 26 | android:layout_marginStart="10dp" | |
| 27 | android:layout_marginEnd="15dp" | |
| 28 | android:layout_marginTop="10dp" | |
| 29 | android:layout_marginBottom="10dp" | |
| 28 | 30 | android:layout_width="wrap_content" | 
| 29 | 31 | android:layout_height="match_parent" | 
| 30 | 32 | android:text="@string/sort_by" | 
| ... | ... | |
| 35 | 37 | android:id="@+id/sortMethod" | 
| 36 | 38 | android:layout_width="wrap_content" | 
| 37 | 39 | android:layout_height="match_parent" | 
| 38 | android:layout_margin="10dip" | |
| 39 | android:gravity="center|center_vertical"/> | |
| 40 | android:layout_marginStart="15dp" | |
| 41 | android:layout_marginEnd="10dp" | |
| 42 | android:layout_marginTop="10dp" | |
| 43 | android:layout_marginBottom="10dp" | |
| 44 | android:gravity="start|center_vertical"/> | |
| 40 | 45 |  | 
| 41 | 46 | <TextView | 
| 42 | 47 | android:id="@+id/themeText" | 
| 43 | android:layout_marginStart="5dp" | |
| 44 | android:layout_marginEnd="25dp" | |
| 48 | android:layout_marginStart="10dp" | |
| 49 | android:layout_marginEnd="15dp" | |
| 50 | android:layout_marginTop="10dp" | |
| 51 | android:layout_marginBottom="10dp" | |
| 45 | 52 | android:layout_width="wrap_content" | 
| 46 | 53 | android:layout_height="match_parent" | 
| 47 | 54 | android:text="@string/theme" | 
| ... | ... | |
| 52 | 59 | android:id="@+id/themeValue" | 
| 53 | 60 | android:layout_width="wrap_content" | 
| 54 | 61 | android:layout_height="match_parent" | 
| 55 | android:layout_margin="10dip" | |
| 56 | android:gravity="center|center_vertical"/> | |
| 62 | android:layout_marginStart="15dp" | |
| 63 | android:layout_marginEnd="10dp" | |
| 64 | android:layout_marginTop="10dp" | |
| 65 | android:layout_marginBottom="10dp" | |
| 66 | android:gravity="start|center_vertical"/> | |
| 57 | 67 |  | 
| 58 | 68 | </GridLayout> | 
| 59 | 69 | </LinearLayout> | 
| src/main/res/layout/settings_popup_android25.xml | ||
|---|---|---|
| 11 | 11 | android:layout_width="match_parent" | 
| 12 | 12 | android:layout_height="wrap_content" | 
| 13 | 13 | android:text="@string/settings_title" | 
| 14 | android:textSize="34sp" | |
| 14 | 15 | android:background="@color/light_grey" | 
| 15 | 16 | android:gravity="center"/> | 
| 16 | 17 |  | 
| 17 |    <LinearLayout
 | |
| 18 |         android:layout_width="wrap_content"
 | |
| 19 |         android:layout_height="match_parent"
 | |
| 20 |         android:gravity="center"
 | |
| 21 |         android:orientation="horizontal">
 | |
| 18 |    <GridLayout
 | |
| 19 |         android:layout_width="match_parent"
 | |
| 20 |         android:layout_height="wrap_content"
 | |
| 21 |         android:rowCount="2"
 | |
| 22 |         android:columnCount="2">
 | |
| 22 | 23 |  | 
| 23 | <TextView | |
| 24 |         <TextView
 | |
| 24 | 25 | android:id="@+id/sortText" | 
| 25 | android:layout_marginStart="5dp" | |
| 26 | android:layout_marginEnd="25dp" | |
| 26 | android:layout_marginStart="10dp" | |
| 27 | android:layout_marginEnd="15dp" | |
| 28 | android:layout_marginTop="10dp" | |
| 29 | android:layout_marginBottom="10dp" | |
| 27 | 30 | android:layout_width="wrap_content" | 
| 28 | 31 | android:layout_height="match_parent" | 
| 29 | 32 | android:text="@string/sort_by" | 
| 33 | android:textSize="24sp" | |
| 30 | 34 | android:gravity="start|center_vertical"/> | 
| 31 | 35 |  | 
| 32 | 36 | <Spinner | 
| 33 | 37 | android:id="@+id/sortMethod" | 
| 34 | 38 | android:layout_width="wrap_content" | 
| 35 | 39 | android:layout_height="match_parent" | 
| 40 | android:layout_marginStart="15dp" | |
| 41 | android:layout_marginEnd="10dp" | |
| 42 | android:layout_marginTop="10dp" | |
| 43 | android:layout_marginBottom="10dp" | |
| 36 | 44 | android:spinnerMode="dialog" | 
| 37 | android:gravity="end|center_vertical"/> | |
| 38 |  | |
| 39 | </LinearLayout> | |
| 40 |  | |
| 41 | <LinearLayout | |
| 42 | android:layout_width="wrap_content" | |
| 43 | android:layout_height="match_parent" | |
| 44 | android:gravity="center" | |
| 45 | android:orientation="horizontal"> | |
| 45 | android:gravity="start|center_vertical"/> | |
| 46 | 46 |  | 
| 47 | <TextView | |
| 47 |         <TextView
 | |
| 48 | 48 | android:id="@+id/themeText" | 
| 49 | android:layout_marginStart="5dp" | |
| 50 | android:layout_marginEnd="25dp" | |
| 49 | android:layout_marginStart="10dp" | |
| 50 | android:layout_marginEnd="15dp" | |
| 51 | android:layout_marginTop="10dp" | |
| 52 | android:layout_marginBottom="10dp" | |
| 51 | 53 | android:layout_width="wrap_content" | 
| 52 | 54 | android:layout_height="match_parent" | 
| 53 | 55 | android:text="@string/theme" | 
| 56 | android:textSize="24sp" | |
| 54 | 57 | android:gravity="start|center_vertical"/> | 
| 55 | 58 |  | 
| 56 | <Spinner | |
| 59 |         <Spinner
 | |
| 57 | 60 | android:id="@+id/themeValue" | 
| 58 | 61 | android:layout_width="wrap_content" | 
| 59 | 62 | android:layout_height="match_parent" | 
| 60 | android:gravity="end|center_vertical"/> | |
| 63 | android:layout_marginStart="15dp" | |
| 64 | android:layout_marginEnd="10dp" | |
| 65 | android:layout_marginTop="10dp" | |
| 66 | android:layout_marginBottom="10dp" | |
| 67 | android:spinnerMode="dialog" | |
| 68 | android:gravity="start|center_vertical"/> | |
| 61 | 69 |  | 
| 62 |    </LinearLayout>
 | |
| 70 |    </GridLayout>
 | |
| 63 | 71 | </LinearLayout> | 
| src/main/res/layout/settings_spinner_item.xml | ||
|---|---|---|
| 3 | 3 | <TextView | 
| 4 | 4 | xmlns:android="http://schemas.android.com/apk/res/android" | 
| 5 | 5 | style="?android:attr/spinnerItemStyle" | 
| 6 |     android:layout_width="80dp"
 | |
| 6 |     android:layout_width="160dp"
 | |
| 7 | 7 | android:layout_height="wrap_content" | 
| 8 | android:paddingTop="8dp" | |
| 9 | android:paddingBottom="8dp" | |
| 8 | 10 | android:textSize="24sp" | 
| 9 |     android:gravity="end"
 | |
| 11 |     android:gravity="start"
 | |
| 10 | 12 | android:singleLine="true" | 
| 11 | 13 | android:textColor="#FFFFFF" | 
| 12 | 14 | /> | 
| src/main/res/values-de/strings.xml | ||
|---|---|---|
| 90 | 90 | <string name="config_corner">Ecken</string> | 
| 91 | 91 | <string name="config_no_support">Das aktuelle Puzzle unterstützt keine Farbanpassung.</string> | 
| 92 | 92 |  | 
| 93 |     <string name="sort_classic">klassisch</string>
 | |
| 94 |     <string name="sort_shape">form</string>
 | |
| 95 |     <string name="sort_difficulty">schwierigkeit</string>
 | |
| 96 |     <string name="sort_author">autor</string>
 | |
| 97 |     <string name="sort_year">jahr</string>
 | |
| 93 |     <string name="sort_classic">Klassisch</string>
 | |
| 94 |     <string name="sort_shape">Form</string>
 | |
| 95 |     <string name="sort_difficulty">Schwierigkeit</string>
 | |
| 96 |     <string name="sort_author">Autor</string>
 | |
| 97 |     <string name="sort_year">Jahr</string>
 | |
| 98 | 98 |  | 
| 99 | 99 | <string name="credits1">Open Source App, die mit der Distorted Graphics Library entwickelt wurde. Lizenziert unter <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL Version 2</a> oder wie gewünscht einer späteren Version.</string> | 
| 100 | 100 | <string name="credits2">Hübsche Muster von Walter Randelshofer. Sehen Sie <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string> | 
| src/main/res/values-es/strings.xml | ||
|---|---|---|
| 90 | 90 | <string name="config_corner">Esquinas</string> | 
| 91 | 91 | <string name="config_no_support">El cubo actual no admite el ajuste de colores.</string> | 
| 92 | 92 |  | 
| 93 |     <string name="sort_classic">clásico</string>
 | |
| 94 |     <string name="sort_shape">forma</string>
 | |
| 95 |     <string name="sort_difficulty">dificultad</string>
 | |
| 96 |     <string name="sort_author">autor</string>
 | |
| 97 |     <string name="sort_year">año</string>
 | |
| 93 |     <string name="sort_classic">Clásico</string>
 | |
| 94 |     <string name="sort_shape">Forma</string>
 | |
| 95 |     <string name="sort_difficulty">Dificultad</string>
 | |
| 96 |     <string name="sort_author">Autor</string>
 | |
| 97 |     <string name="sort_year">Año</string>
 | |
| 98 | 98 |  | 
| 99 | 99 | <string name="credits1">Aplicación de código abierto desarrollada con la biblioteca de gráficos de Distorted. Con licencia <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL versión 2</a> o, a tu elección, cualquier versión posterior.</string> | 
| 100 | 100 | <string name="credits2">Pretty Patterns por Walter Randelshofer. Mira <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string> | 
| src/main/res/values-fr/strings.xml | ||
|---|---|---|
| 90 | 90 | <string name="config_corner">Coins</string> | 
| 91 | 91 | <string name="config_no_support">Le cube actuel ne prend pas en charge le réglage des couleurs.</string> | 
| 92 | 92 |  | 
| 93 |     <string name="sort_classic">classique</string>
 | |
| 94 |     <string name="sort_shape">forme</string>
 | |
| 95 |     <string name="sort_difficulty">difficulté</string>
 | |
| 96 |     <string name="sort_author">auteur</string>
 | |
| 97 |     <string name="sort_year">année</string>
 | |
| 93 |     <string name="sort_classic">Classique</string>
 | |
| 94 |     <string name="sort_shape">Forme</string>
 | |
| 95 |     <string name="sort_difficulty">Difficulté</string>
 | |
| 96 |     <string name="sort_author">Auteur</string>
 | |
| 97 |     <string name="sort_year">Année</string>
 | |
| 98 | 98 |  | 
| 99 | 99 | <string name="credits1">Appli Open Source développée à l\'aide de la bibliothèque graphique Distorted. Sous licence <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL version 2</a> ou - à votre choix - toute version ultérieure.</string> | 
| 100 | 100 | <string name="credits2">Pretty Patterns par Walter Randelshofer. Voir <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string> | 
| src/main/res/values-pl/strings.xml | ||
|---|---|---|
| 90 | 90 | <string name="config_corner">Rogi</string> | 
| 91 | 91 | <string name="config_no_support">Bieżąca kostka nie wspomaga zmieniania kolorów.</string> | 
| 92 | 92 |  | 
| 93 |     <string name="sort_classic">klasycznie</string>
 | |
| 94 |     <string name="sort_shape">kształt</string>
 | |
| 95 |     <string name="sort_difficulty">trudność</string>
 | |
| 96 |     <string name="sort_author">autor</string>
 | |
| 97 |     <string name="sort_year">rok</string>
 | |
| 93 |     <string name="sort_classic">Klasycznie</string>
 | |
| 94 |     <string name="sort_shape">Kształt</string>
 | |
| 95 |     <string name="sort_difficulty">Trudność</string>
 | |
| 96 |     <string name="sort_author">Autor</string>
 | |
| 97 |     <string name="sort_year">Rok</string>
 | |
| 98 | 98 |  | 
| 99 | 99 | <string name="credits1">Aplikacja open-source napisana wykorzystując bibliotekę Distorted. Licencja: <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL wersja 2</a> albo jakakolwiek poźniejsza.</string> | 
| 100 | 100 | <string name="credits2">Piękne Wzory Waltera Randelshofera. Zobacz <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string> | 
| src/main/res/values-ru/strings.xml | ||
|---|---|---|
| 90 | 90 | <string name="config_corner">Углы</string> | 
| 91 | 91 | <string name="config_no_support">Текущий куб не поддерживает настройку цветов.</string> | 
| 92 | 92 |  | 
| 93 |     <string name="sort_classic">классик</string>
 | |
| 94 |     <string name="sort_shape">форма</string>
 | |
| 95 |     <string name="sort_difficulty">сложность</string>
 | |
| 96 |     <string name="sort_author">автор</string>
 | |
| 97 |     <string name="sort_year">год</string>
 | |
| 93 |     <string name="sort_classic">Классик</string>
 | |
| 94 |     <string name="sort_shape">Форма</string>
 | |
| 95 |     <string name="sort_difficulty">Сложность</string>
 | |
| 96 |     <string name="sort_author">Автор</string>
 | |
| 97 |     <string name="sort_year">Год</string>
 | |
| 98 | 98 |  | 
| 99 | 99 | <string name="credits1">Приложение с открытым исходным кодом, разработанное с использованием библиотеки графики Искажений. Лицензируется согласно <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">версии 2 GPL</a> или любой более поздней версии по вашему выбору.</string> | 
| 100 | 100 | <string name="credits2">Pretty Patterns по Walter Randelshofer. Смотри <a href="http://www.randelshofer.ch">http://www.randelshofer.ch</a></string> | 
| src/main/res/values/strings.xml | ||
|---|---|---|
| 124 | 124 | <string name="sort_by">Sort by</string> | 
| 125 | 125 | <string name="settings_title">Settings</string> | 
| 126 | 126 |  | 
| 127 |     <string name="sort_classic">classic</string>
 | |
| 128 |     <string name="sort_shape">shape</string>
 | |
| 129 |     <string name="sort_difficulty">difficulty</string>
 | |
| 130 |     <string name="sort_author">author</string>
 | |
| 131 |     <string name="sort_year">year</string>
 | |
| 127 |     <string name="sort_classic">Classic</string>
 | |
| 128 |     <string name="sort_shape">Shape</string>
 | |
| 129 |     <string name="sort_difficulty">Difficulty</string>
 | |
| 130 |     <string name="sort_author">Author</string>
 | |
| 131 |     <string name="sort_year">Year</string>
 | |
| 132 | 132 |  | 
| 133 | 133 | <string name="webview_error" translatable="false">Error Loading WebView</string> | 
| 134 | 134 | <string name="opengl_error" translatable="false">Error</string> | 
Also available in: Unified diff
major progress with the main settings popup