diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 8deb192..32144b4 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionName="1.2.8b3" android:versionCode="100200803"> diff --git a/res/layout/advanced_layout.xml b/res/layout/advanced_layout.xml index 4b78cc4..4e9ac29 100644 --- a/res/layout/advanced_layout.xml +++ b/res/layout/advanced_layout.xml @@ -6,7 +6,7 @@ android:layout_height="fill_parent" android:background="@color/normal_bg" android:padding="8dp"> - + diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml index 6c9f771..70626a5 100644 --- a/res/values-ru/arrays.xml +++ b/res/values-ru/arrays.xml @@ -67,15 +67,17 @@ Качественный, мерц. (CLEAR_ALL mode 6) + -1 0 1 2 + Не использовать Качественный (GC+ONESHOT_ALL) Быстрый (GU+ONESHOT_ALL) Быстрый (GL16+ACTIVE_ALL) - + NOTHING OPEN1 @@ -90,20 +92,31 @@ Открыть меню выбора начальной папки Открыть окно списка начальных папок - - -1 - 1 - 2 - 3 - 4 - 5 + + -1 + 1 + 2 + 3 + 4 + 5 - Автоматическое число колонок - 1 колонка - 2 колонки - 3 колонки - 4 колонки - 5 колонок + Автоматическое число колонок + 1 колонка + 2 колонки + 3 колонки + 4 колонки + 5 колонок + + + 60 5:5 9:4 19:3 64:2 + 70 3:5 7:4 15:3 48:2 + 80 2:5 5:4 11:3 32:2 + + Агрессивный (больше колонок) + Умереный + Вялый (меньше колонок) + + \ No newline at end of file diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 4867c97..381b7cd 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -72,7 +72,7 @@ ПРОСМОТР ПЕРЕЗАГРУЗКА\n\nОжидайте... ВЫКЛЮЧЕНО\n\nНажмите кнопку Power для включения... - Подключено, IP: + IP: Сигнал: Недоступно не подключено diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 32a7f1d..84caa50 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -67,15 +67,17 @@ CLEAR_ALL (mode 6) + -1 0 1 2 + Disable Quality (GC+ONESHOT_ALL) Speed (GU+ONESHOT_ALL) Speed (GL16+ACTIVE_ALL) - + NOTHING OPEN1 @@ -91,20 +93,30 @@ Open home directories screen - -1 - 1 - 2 - 3 - 4 - 5 + -1 + 1 + 2 + 3 + 4 + 5 - Detect automatically - 1 column - 2 columns - 3 columns - 4 columns - 5 columns + Detect automatically + 1 column + 2 columns + 3 columns + 4 columns + 5 columns + + + 60 5:5 9:4 19:3 64:2 + 70 3:5 7:4 15:3 48:2 + 80 2:5 5:4 11:3 32:2 + + + Aggressive (more columns) + Moderate + Sluggish (less columns) \ No newline at end of file diff --git a/res/values/changelog.xml b/res/values/changelog.xml index 437e229..ad19f01 100644 --- a/res/values/changelog.xml +++ b/res/values/changelog.xml @@ -1,6 +1,9 @@ + <b>1.2.8b3</b><br> + - Support for Eink Nook display reintegrated.<br> + - New auto multicolumn algorithm with some configuration.<br> <b>1.2.8b2</b><br> - Multi-column output.<br> - Close Fav, Lru and so on windows after start reader (configurable).<br> diff --git a/res/xml-ru/prefs.xml b/res/xml-ru/prefs.xml index 0e9dada..93af84d 100644 --- a/res/xml-ru/prefs.xml +++ b/res/xml-ru/prefs.xml @@ -115,7 +115,7 @@ --> + + + diff --git a/res/xml/prefs.xml b/res/xml/prefs.xml index c0cfab8..0fbafdf 100644 --- a/res/xml/prefs.xml +++ b/res/xml/prefs.xml @@ -115,7 +115,7 @@ --> + + + diff --git a/src/com/harasoft/relaunch/Advanced.java b/src/com/harasoft/relaunch/Advanced.java index 514283b..b5e764a 100644 --- a/src/com/harasoft/relaunch/Advanced.java +++ b/src/com/harasoft/relaunch/Advanced.java @@ -71,6 +71,34 @@ public class Advanced extends Activity { BroadcastReceiver b2; String connectedSSID; + private void setEinkController() { + if(prefs!=null) { + Integer einkUpdateMode = 1; + try { + einkUpdateMode = Integer.parseInt(prefs.getString("einkUpdateMode", "1")); + } + catch(Exception e) { + einkUpdateMode = 1; + } + if(einkUpdateMode<-1 || einkUpdateMode>2) einkUpdateMode=1; + if(einkUpdateMode>=0) { + EinkScreen.UpdateMode=einkUpdateMode; + + Integer einkUpdateInterval = 10; + try { + einkUpdateInterval = Integer.parseInt(prefs.getString("einkUpdateInterval", "10")); + } + catch(Exception e) { + einkUpdateInterval = 10; + } + if(einkUpdateInterval<0 || einkUpdateInterval>100) einkUpdateInterval = 10; + EinkScreen.UpdateModeInterval = einkUpdateInterval; + + EinkScreen.PrepareController(null, false); + } + } + } + static class NetInfo { static int unknownLevel = -5000; String SSID; @@ -524,6 +552,7 @@ public void onClick(View v) { wifiOnOff.setEnabled(false); }}); wifiNetworks = readScanResults(wfm); + setEinkController(); adapter.notifyDataSetChanged(); wifiScan.setEnabled(true); } @@ -544,6 +573,7 @@ public void onClick(View v) { wifiOnOff.setEnabled(false); }}); wifiNetworks.clear(); + setEinkController(); adapter.notifyDataSetChanged(); wifiScan.setEnabled(false); } @@ -555,6 +585,7 @@ protected void onCreate(Bundle savedInstanceState) { prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + setEinkController(); ingnoreFs = getResources().getStringArray(R.array.filesystems_to_ignore); @@ -594,6 +625,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun sv.total = totalItemCount; sv.count = visibleItemCount; sv.first = firstVisibleItem; + setEinkController(); sv.invalidate(); } public void onScrollStateChanged(AbsListView view, int scrollState) { @@ -602,7 +634,15 @@ public void onScrollStateChanged(AbsListView view, int scrollState) { addSView = false; } } - + else { + lv_wifi.setOnScrollListener(new AbsListView.OnScrollListener() { + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + setEinkController(); + } + public void onScrollStateChanged(AbsListView view, int scrollState) { + } + }); + } wifiScan = (Button)findViewById(R.id.wifi_scan_btn); wifiScan.setOnClickListener(new View.OnClickListener() { @@ -780,6 +820,7 @@ protected void onStop() { @Override protected void onResume() { super.onResume(); + setEinkController(); app.generalOnResume(TAG, this); } } diff --git a/src/com/harasoft/relaunch/AllApplications.java b/src/com/harasoft/relaunch/AllApplications.java index ea79143..6f90c35 100644 --- a/src/com/harasoft/relaunch/AllApplications.java +++ b/src/com/harasoft/relaunch/AllApplications.java @@ -58,6 +58,34 @@ public class AllApplications extends Activity { SharedPreferences prefs; boolean addSView = true; + private void setEinkController() { + if(prefs!=null) { + Integer einkUpdateMode = 1; + try { + einkUpdateMode = Integer.parseInt(prefs.getString("einkUpdateMode", "1")); + } + catch(Exception e) { + einkUpdateMode = 1; + } + if(einkUpdateMode<-1 || einkUpdateMode>2) einkUpdateMode=1; + if(einkUpdateMode>=0) { + EinkScreen.UpdateMode=einkUpdateMode; + + Integer einkUpdateInterval = 10; + try { + einkUpdateInterval = Integer.parseInt(prefs.getString("einkUpdateInterval", "10")); + } + catch(Exception e) { + einkUpdateInterval = 10; + } + if(einkUpdateInterval<0 || einkUpdateInterval>100) einkUpdateInterval = 10; + EinkScreen.UpdateModeInterval = einkUpdateInterval; + + EinkScreen.PrepareController(null, false); + } + } + } + static class ViewHolder { TextView tv; ImageView iv; @@ -181,6 +209,7 @@ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + setEinkController(); app = ((ReLaunchApp)getApplicationContext()); app.setFullScreenIfNecessary(this); setContentView(R.layout.all_applications); @@ -243,6 +272,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun sv.total = totalItemCount; sv.count = visibleItemCount; sv.first = firstVisibleItem; + setEinkController(); sv.invalidate(); } public void onScrollStateChanged(AbsListView view, int scrollState) { @@ -251,6 +281,15 @@ public void onScrollStateChanged(AbsListView view, int scrollState) { addSView = false; } } + else { + lv.setOnScrollListener(new AbsListView.OnScrollListener() { + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + setEinkController(); + } + public void onScrollStateChanged(AbsListView view, int scrollState) { + } + }); + } lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -285,6 +324,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) @Override protected void onRestart() { super.onRestart(); + setEinkController(); if (listName.equals("app_all")) rereadAppList(); } @@ -292,6 +332,7 @@ protected void onRestart() { @Override protected void onStart() { super.onStart(); + setEinkController(); if (listName.equals("app_all")) rereadAppList(); } @@ -299,6 +340,7 @@ protected void onStart() { @Override protected void onResume() { super.onResume(); + setEinkController(); if (listName.equals("app_all")) rereadAppList(); app.generalOnResume(TAG, this); diff --git a/src/com/harasoft/relaunch/PrefsActivity.java b/src/com/harasoft/relaunch/PrefsActivity.java index 697811a..10c8393 100644 --- a/src/com/harasoft/relaunch/PrefsActivity.java +++ b/src/com/harasoft/relaunch/PrefsActivity.java @@ -69,8 +69,8 @@ private void setDefaults() defItems.add(new PrefItem("openWith", true)); defItems.add(new PrefItem("createIntent", true)); defItems.add(new PrefItem("gl16Mode", "5")); - defItems.add(new PrefItem("einkUpdateMode", "2")); - defItems.add(new PrefItem("einkUpdateInterval", "0")); + defItems.add(new PrefItem("einkUpdateMode", "1")); + defItems.add(new PrefItem("einkUpdateInterval", "10")); // Columns settings defItems.add(new PrefItem("firstLineFontSize","8")); @@ -80,6 +80,7 @@ private void setDefaults() defItems.add(new PrefItem("columnsLRU","-1")); defItems.add(new PrefItem("columnsFAV","-1")); defItems.add(new PrefItem("columnsSearch","-1")); + defItems.add(new PrefItem("columnsAlgIntensity","70 3:5 7:4 15:3 48:2")); // Buttons settings defItems.add(new PrefItem("homeButtonST","OPEN1")); diff --git a/src/com/harasoft/relaunch/ReLaunch.java b/src/com/harasoft/relaunch/ReLaunch.java index 80a0dfa..1b9d35d 100644 --- a/src/com/harasoft/relaunch/ReLaunch.java +++ b/src/com/harasoft/relaunch/ReLaunch.java @@ -123,12 +123,29 @@ public class ReLaunch extends Activity { private void setEinkController() { if(prefs!=null) { + Integer einkUpdateMode = 1; try { - EinkScreen.UpdateMode=Integer.parseInt(prefs.getString("einkUpdateMode", "2")); - EinkScreen.UpdateModeInterval=Integer.parseInt(prefs.getString("einkUpdateInterval", "0")); + einkUpdateMode = Integer.parseInt(prefs.getString("einkUpdateMode", "1")); + } + catch(Exception e) { + einkUpdateMode = 1; + } + if(einkUpdateMode<-1 || einkUpdateMode>2) einkUpdateMode=1; + if(einkUpdateMode>=0) { + EinkScreen.UpdateMode=einkUpdateMode; + + Integer einkUpdateInterval = 10; + try { + einkUpdateInterval = Integer.parseInt(prefs.getString("einkUpdateInterval", "10")); + } + catch(Exception e) { + einkUpdateInterval = 10; + } + if(einkUpdateInterval<0 || einkUpdateInterval>100) einkUpdateInterval = 10; + EinkScreen.UpdateModeInterval = einkUpdateInterval; + EinkScreen.PrepareController(null, false); } - catch(Exception e) { } } } @@ -332,20 +349,39 @@ else if (rdrName.startsWith("Intent:")) } } + private Integer Percentile(ArrayList values, Integer Quantile) + // not fully "mathematical proof", but not too difficult and working + { + Collections.sort(values); + Log.d(TAG,values.toString()); + Integer index = (values.size()*Quantile)/100; + Log.d(TAG,index.toString()); + return values.get(index); + } + private Integer getAutoColsNum() { - // implementation - by content avg len - // may be median - Integer auto_cols = 1; - Integer avg = 0; - for(Integer i=0;i0) avg = avg / itemsArray.size(); - if(avg<4) return 5; - if(avg<6) return 4; - if(avg<10) return 3; - if(avg<32) return 2; - return auto_cols; + // implementation - via percentiles len + ArrayList tmp = new ArrayList(); + if(itemsArray.size()>0) { + Integer factor = 0; + for(Integer i=0;i2) einkUpdateMode=1; + if(einkUpdateMode>=0) { + EinkScreen.UpdateMode=einkUpdateMode; + + Integer einkUpdateInterval = 10; + try { + einkUpdateInterval = Integer.parseInt(prefs.getString("einkUpdateInterval", "10")); + } + catch(Exception e) { + einkUpdateInterval = 10; + } + if(einkUpdateInterval<0 || einkUpdateInterval>100) einkUpdateInterval = 10; + EinkScreen.UpdateModeInterval = einkUpdateInterval; + EinkScreen.PrepareController(null, false); } - catch(Exception e) { } } } @@ -262,20 +280,36 @@ public View getView(int position, View convertView, ViewGroup parent) { } } + private Integer Percentile(ArrayList values, Integer Quantile) + // not fully "mathematical proof", but not too difficult and working + { + Collections.sort(values); + Integer index = (values.size()*Quantile)/100; + return values.get(index); + } + private Integer getAutoColsNum() { - // implementation - by content avg len - // may be median - Integer auto_cols = 1; - Integer avg = 0; - for(Integer i=0;i0) avg = avg / itemsArray.size(); - if(avg<4) return 5; - if(avg<6) return 4; - if(avg<10) return 3; - if(avg<32) return 2; - return auto_cols; + // implementation - via percentiles len + ArrayList tmp = new ArrayList(); + if(itemsArray.size()>0) { + Integer factor = 0; + for(Integer i=0;i parent, View view, diff --git a/src/com/harasoft/relaunch/TaskManager.java b/src/com/harasoft/relaunch/TaskManager.java index 2b8e550..f19296b 100644 --- a/src/com/harasoft/relaunch/TaskManager.java +++ b/src/com/harasoft/relaunch/TaskManager.java @@ -126,6 +126,34 @@ static class PInfo { List newServ; HashMap newPinfo; + private void setEinkController() { + if(prefs!=null) { + Integer einkUpdateMode = 1; + try { + einkUpdateMode = Integer.parseInt(prefs.getString("einkUpdateMode", "1")); + } + catch(Exception e) { + einkUpdateMode = 1; + } + if(einkUpdateMode<-1 || einkUpdateMode>2) einkUpdateMode=1; + if(einkUpdateMode>=0) { + EinkScreen.UpdateMode=einkUpdateMode; + + Integer einkUpdateInterval = 10; + try { + einkUpdateInterval = Integer.parseInt(prefs.getString("einkUpdateInterval", "10")); + } + catch(Exception e) { + einkUpdateInterval = 10; + } + if(einkUpdateInterval<0 || einkUpdateInterval>100) einkUpdateInterval = 10; + EinkScreen.UpdateModeInterval = einkUpdateInterval; + + EinkScreen.PrepareController(null, false); + } + } + } + /* private void dumpPinfo(HashMap p, String name) { @@ -520,6 +548,7 @@ protected void onPostExecute(String result) { taskPids = newTask; servPids = newServ; sortLists(); + setEinkController(); adapter_t.notifyDataSetChanged(); adapter_s.notifyDataSetChanged(); @@ -926,6 +955,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + setEinkController(); + app = ((ReLaunchApp)getApplicationContext()); app.setFullScreenIfNecessary(this); pm = getPackageManager(); @@ -968,6 +999,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun sv.total = totalItemCount; sv.count = visibleItemCount; sv.first = firstVisibleItem; + setEinkController(); sv.invalidate(); } public void onScrollStateChanged(AbsListView view, int scrollState) { @@ -988,6 +1020,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun sv.total = totalItemCount; sv.count = visibleItemCount; sv.first = firstVisibleItem; + setEinkController(); sv.invalidate(); } public void onScrollStateChanged(AbsListView view, int scrollState) { @@ -996,6 +1029,22 @@ public void onScrollStateChanged(AbsListView view, int scrollState) { addSView_s = false; } } + else { + lv_t.setOnScrollListener(new AbsListView.OnScrollListener() { + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + setEinkController(); + } + public void onScrollStateChanged(AbsListView view, int scrollState) { + } + }); + lv_s.setOnScrollListener(new AbsListView.OnScrollListener() { + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + setEinkController(); + } + public void onScrollStateChanged(AbsListView view, int scrollState) { + } + }); + } // Get total memory try @@ -1043,12 +1092,14 @@ protected void onPause() { @Override protected void onRestart() { super.onRestart(); + setEinkController(); startCPUUpdate(); } @Override protected void onResume() { super.onResume(); + setEinkController(); startCPUUpdate(); app.generalOnResume(TAG, this); } @@ -1056,6 +1107,7 @@ protected void onResume() { @Override protected void onStart() { super.onStart(); + setEinkController(); startCPUUpdate(); }