Skip to content

Commit

Permalink
Version 12.0.6-pre
Browse files Browse the repository at this point in the history
  • Loading branch information
papyrussolution committed Jul 1, 2024
1 parent 43257af commit edd84f1
Show file tree
Hide file tree
Showing 67 changed files with 1,141 additions and 879 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -585,12 +585,15 @@ private class RefreshNotificationIcon_TimerTask extends TimerTask {
private class ResetTouchedListItemIdx_TimerTask extends TimerTask {
@Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { SetTouchedItemIndex(-1); }}); }
}
private class UpdateNetworkStateIndicator_TimerTask extends TimerTask {
@Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { UpdateNetworkStateIndicator(); }}); }
}
private boolean NotifyListItemChanged(int idx)
{
boolean result = false;
View v = findViewById(R.id.serviceListView);
if(v != null && v instanceof RecyclerView) {
RecyclerView view = (RecyclerView) v;
RecyclerView view = (RecyclerView)v;
RecyclerView.Adapter adapter = view.getAdapter();
if(adapter != null && idx < adapter.getItemCount()) {
adapter.notifyItemChanged(idx);
Expand All @@ -599,6 +602,37 @@ private boolean NotifyListItemChanged(int idx)
}
return result;
}
void UpdateNetworkStateIndicator()
{
StyloQApp app_ctx = (StyloQApp)getApplication();
if(app_ctx != null) {
View v = findViewById(R.id.CTL_NETWORKSTATE_INDICATOR);
if(v != null && v instanceof ImageView) {
NetworkConnectionInfoManager.Status st = app_ctx.GetNetworkStatus();
if(st != null) {
int ir = 0;
if(st.Transp == NetworkConnectionInfoManager.Transport.Unavailable) {
ir = R.drawable.ic_mobile_network_off;
}
else if(st.Transp == NetworkConnectionInfoManager.Transport.Ethernet) {
ir = R.drawable.ic_mobile_network_wifi; // @todo сделать картинку
}
else if(st.Transp == NetworkConnectionInfoManager.Transport.WIFI) {
ir = R.drawable.ic_mobile_network_wifi;
}
else if(st.Transp == NetworkConnectionInfoManager.Transport.Cellular) {
ir = R.drawable.ic_mobile_network_4g;
}
else if(st.Transp == NetworkConnectionInfoManager.Transport.GenericAvailable) {
ir = R.drawable.ic_mobile_network_4g;
}
else
ir = R.drawable.ic_mobile_network_disconnected;
((ImageView)v).setImageResource(ir);
}
}
}
}
private void SetTouchedItemIndex(int idx)
{
if(ListData != null) {
Expand Down Expand Up @@ -732,6 +766,13 @@ public Object HandleEvent(int ev, Object srcObj, Object subj)
}
}
}
// @v12.0.6 {
app_ctx.SetupNetworkStatusManager(this);
{
Timer tmr = new Timer();
tmr.schedule(new UpdateNetworkStateIndicator_TimerTask(), 12000);
}
// } @v12.0.6
} catch(StyloQException | PackageManager.NameNotFoundException e) {
;
}
Expand Down Expand Up @@ -1120,6 +1161,18 @@ else if(ns.IsThereAnyNotifications)
}
}
break;
case SLib.EV_ASYNCSET:
if(srcObj != null && srcObj instanceof String) {
if(((String)srcObj).equalsIgnoreCase("NetworkConnectionStatus")) {
if(subj != null && subj instanceof NetworkConnectionInfoManager.Status) {
StyloQApp app_ctx = (StyloQApp)getApplication();
if(app_ctx != null) {
app_ctx.SetNetworkStatus((NetworkConnectionInfoManager.Status)subj);
}
}
}
}
break;
}
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1630,12 +1630,15 @@ public ListViewEvent()
// реализующему интерфейс, с целью получения каких-то данных. srcObj: объект-источник запроса (maybe null), subj: String (текстовый запрос).
// Интерфейс возвращает в ответ либо какой-то объект (инициатор должен знать что это за объект), либо null.
// Варианты строки запроса:
// "GetSvcDataTime" - запрос на метку времени данных, полученных от сервиса и с которыми работает объект.
// "GetSvcDataTime" - запрос на метку времени данных, полученных от сервиса с которыми работает объект.
public static final int EV_DATETIMEPICKERREPLY = 25; // @v11.6.9 Посылается диалогом семейства DateTimePicker в ответ на выбор
// пользователем даты/времени/периода. srcObj: экземпляр класса, создавший сообщение, subj: SLib.LDATE || SLib.LTIME || SLib.DateRange || SLib.STimeChunk
public static final int EV_ACTIVITYSTOP = 26; // @v11.7.0 Посылается в SlActivity функцией onStop
public static final int EV_ASYNCREPLY = 27; // @v11.7.5 Посылается иным потоком в ответ на асинхронный запрос.
// srcObj: символ запроса, subj: объект данных, содержащий ответ на запрос. ret(null)
public static final int EV_ASYNCSET = 28; // @v12.0.6 Посылается иным потоком для установки каких-либо (часто, глобально доступных)
// данных. Изначально событие введено для установки информации о состоянии сетевого подключения. //
// srcObj: символ данных, subj: объект, содержащий собственно данные для установки. ret(null)
//
public static final int cmOK = 10; // Значение эквивалентно тому же в tvdefs.h
public static final int cmCancel = 11; // Значение эквивалентно тому же в tvdefs.h
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public class StyloQApp extends SLib.App {
private Timer SeenNotificationListProcessingTmr;
private AppUpdateManager AppUpdMgr;
private InstallStateUpdatedListener InstallStateUpdatedListener;
private NetworkConnectionInfoManager.Status NetworkStatus; // @v12.0.6

public StyloQApp()
{
Expand Down Expand Up @@ -1266,6 +1267,20 @@ public void DisplayMetrics() // @costruction
int width = display_metrics.widthPixels;
}
}
public void SetupNetworkStatusManager(SLib.EventHandler handler)
{
if(handler != null) {
NetworkConnectionInfoManager cmgr = new NetworkConnectionInfoManager(this, handler);
}
}
public void SetNetworkStatus(NetworkConnectionInfoManager.Status status)
{
NetworkStatus = status;
}
public NetworkConnectionInfoManager.Status GetNetworkStatus()
{
return NetworkStatus;
}
//
//
//
Expand Down
5 changes: 5 additions & 0 deletions Src/Android/StyloQ/app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@
android:fontFamily="sans-serif-medium"
android:textSize="10sp"/>
</LinearLayout>
<ImageView android:id="@+id/CTL_NETWORKSTATE_INDICATOR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_mobile_network_off">
</ImageView>
<View style="@style/FakeView"/>
<ImageButton style="@style/ToolbarButton" android:id="@+id/tbButtonSearch"
android:layout_gravity="center_vertical|right"
Expand Down
32 changes: 22 additions & 10 deletions Src/Include/Db.h
Original file line number Diff line number Diff line change
Expand Up @@ -2042,7 +2042,7 @@ class DbLoginBlock : private SBaseBuffer {
attrDbUuid, // (S_GUID) UUID базы данных (передается как строка в формате S_GUID::fmtIDL)
attrUserName, // Имя пользователя для регистрации в базе данных
attrPassword, // Пароль для регистрации в базе данных (хранится в зашифрованном виде)
attrServerUrl, // @v10.9.2 URL хоста, на котором запущен сервер
attrServerUrl, // URL хоста, на котором запущен сервер
};
static const char * GetDefaultDbSymb();
DbLoginBlock();
Expand Down Expand Up @@ -4599,22 +4599,25 @@ class BDbTransaction {
class SRecPageFreeList {
public:
struct Entry { // @flat
Entry(uint64 rowId, uint32 freeSize) : RowId(rowId), FreeSize(freeSize)
Entry(uint64 rowId, uint32 freeSize);
Entry();
Entry & Z();
bool FASTCALL operator == (const Entry & rS) { return IsEq(rS); }
bool FASTCALL operator != (const Entry & rS) { return !IsEq(rS); }
bool FASTCALL IsEq(const Entry & rS) const
{
return (RowId == rS.RowId && FreeSize == rS.FreeSize);
}
Entry() : RowId(0ULL), FreeSize(0)
int FASTCALL Cmp(const Entry & rS) const
{
int si = 0;
CMPCASCADE2(si, this, &rS, RowId, FreeSize);
return si;
}
Entry & Z()
{
RowId = 0ULL;
FreeSize = 0;
return *this;
}

uint64 RowId; // Идентификатор позиции свободного блока
uint32 FreeSize; // Доступный полезный размер блока (PayloadSize)
};
private:
class SingleTypeList : public TSVector <Entry> {
public:
SingleTypeList(uint32 type) : TSVector <Entry>(), Type(type)
Expand Down Expand Up @@ -4642,6 +4645,7 @@ class SRecPageFreeList {
private:
const uint32 Type;
};
private:
TSCollection <SingleTypeList> L;
public:
static const Entry * FindOptimalFreeEntry(const TSVector <Entry> & rList, uint reqSize, uint * pTailSize);
Expand All @@ -4653,8 +4657,13 @@ class SRecPageFreeList {
int Remove(uint32 type, uint64 rowId) { return Put(type, rowId, 0U); }
const Entry * Get(uint32 type, uint32 reqSize) const;
int GetListForPage(uint pageSeq, TSVector <SRecPageFreeList::Entry> & rList) const; // @debug
uint GetTypeCount() const { return L.getCount(); } // @debug
const SingleTypeList * GetTypeListByIdx(uint idx) const { return (idx < L.getCount()) ? L.at(idx) : 0; } // @debug
bool SearchEntry(const Entry & rKey, const SingleTypeList ** ppList, uint * pIdxInList) const;
};

DECL_CMPFUNC(SRecPageFreeList_Entry);

#pragma pack(push, 1)
struct SDataPageHeader { // Size=32
static constexpr uint32 SignatureValue = 0x76AE0000U;
Expand Down Expand Up @@ -4862,9 +4871,12 @@ class SRecPageManager {
int VerifyFreeList(); // @debug // @todo
private:
SDataPageHeader * GetPage(uint32 seq);
SDataPageHeader * Helper_QueryPage_BySeq(uint seq, uint32 pageType);
SDataPageHeader * Helper_QueryPage(uint64 rowId, uint32 pageType, uint * pOffset);
SDataPageHeader * QueryPageForReading(uint64 rowId, uint32 pageType, uint * pOffset);
SDataPageHeader * QueryPageForWriting(uint64 rowId, uint32 pageType, uint * pOffset);
SDataPageHeader * QueryPageBySeqForReading(uint seq, uint32 pageType);
SDataPageHeader * QueryPageBySeqForWriting(uint seq, uint32 pageType);
int ReleasePage(SDataPageHeader * pPage);

const uint32 PageSize;
Expand Down
4 changes: 3 additions & 1 deletion Src/Include/PPDBS.H
Original file line number Diff line number Diff line change
Expand Up @@ -4062,7 +4062,8 @@ public:
LDATE FreezingEnd;
int32 CtAmount;
int32 CtRest;
uint8 Reserve[8]; // raw
int32 CtGoodsID;
uint8 Reserve[4]; // raw
} data;
struct Key0 {
int32 SCardID;
Expand Down Expand Up @@ -4090,6 +4091,7 @@ public:
DBField FreezingEnd;
DBField CtAmount;
DBField CtRest;
DBField CtGoodsID;
DBField Reserve;
};
#pragma pack(pop)
Expand Down
7 changes: 6 additions & 1 deletion Src/Include/PPDEFS.H
Original file line number Diff line number Diff line change
Expand Up @@ -6096,6 +6096,8 @@
#define CTL_SCARDOP_EXPIRY (16 + WINDOWS_ID_BIAS)
#define CTL_SCARDOP_FRZPERIOD (17 + WINDOWS_ID_BIAS)
#define CTLCAL_SCARDOP_FRZPERIOD (18 + WINDOWS_ID_BIAS)
#define CTL_SCARDOP_QTTY (19 + WINDOWS_ID_BIAS) // @v12.0.6 Количественная операция
#define CTL_SCARDOP_ST_CTREST (20 + WINDOWS_ID_BIAS) // @v12.0.6 Количественный остаток
#define DLG_REQALTOBJ 551 // Выбор альтернативной статьи для зачета
#define CTL_REQALTOBJ_SHEET (1 + WINDOWS_ID_BIAS)
#define CTLSEL_REQALTOBJ_SHEET (2 + WINDOWS_ID_BIAS)
Expand Down Expand Up @@ -9645,7 +9647,7 @@
#define DLG_ORDERCHECKS 1147 // Редкатирование заказов столиков
#define DLG_ORDERCHECKS_L 1148
// CTL_SELCHECK_...
#define DLG_CPPAYM 1149 // CPPAYM Диалог приема оплаты в кассовой панели
#define DLG_CPPAYM 1149 // CPPAYM Диалог приема оплаты в кассовой панели // @v12.0.6 removed (replaced with DLG_CPPAYM2)
#define CTL_CPPAYM_KIND (1 + WINDOWS_ID_BIAS)
#define CTL_CPPAYM_BNKAMT (2 + WINDOWS_ID_BIAS)
#define CTL_CPPAYM_CSHAMT (3 + WINDOWS_ID_BIAS)
Expand All @@ -9666,6 +9668,7 @@
#define CTL_CPPAYM_EADDRINF (18 + WINDOWS_ID_BIAS)
#define CTL_CPPAYM_PAPERLESS (19 + WINDOWS_ID_BIAS)
#define CTLFRAME_CPPAYM_PAPERLESS (20 + WINDOWS_ID_BIAS)
#define CTL_CPPAYM_CASHLESSBPEQ (21 + WINDOWS_ID_BIAS) // @v12.0.6 checkbox
// DLG_TAGVGUID 1150
#define DLG_QUOTKINDRESTR 1151 // Ограничения применимости вида котировки
#define CTL_QKRESTR_PERIOD (1 + WINDOWS_ID_BIAS)
Expand Down Expand Up @@ -9837,6 +9840,7 @@
#define CTL_POSPAYMBNK_EADDRINF (18 + WINDOWS_ID_BIAS)
#define CTL_POSPAYMBNK_PAPERLESS (19 + WINDOWS_ID_BIAS)
#define CTLFRAME_POSPAYMBNK_PAPERLESS (20 + WINDOWS_ID_BIAS)
#define CTL_POSPAYMBNK_CLBPEQ (21 + WINDOWS_ID_BIAS) // @12.0.6 checkbox cashless-bypass-equipment

#define DLG_CHKPANROWOP 1172
#define CTL_CHKPANROWOP_VERB (1 + WINDOWS_ID_BIAS)
Expand Down Expand Up @@ -9984,6 +9988,7 @@
#define CTL_BNKTERM_PATH (5 + WINDOWS_ID_BIAS)
#define CTLBRW_BNKTERM_FILENAME (6 + WINDOWS_ID_BIAS)
#define CTL_BNKTERM_PINPAD (7 + WINDOWS_ID_BIAS)
#define CTL_BNKTERM_FLAGS (8 + WINDOWS_ID_BIAS) // @v12.0.6
#define DLG_SENDSMS 1197
#define CTL_SENDSMS_TEXT (1 + WINDOWS_ID_BIAS)
#define CTL_SENDSMS_SYMBCOUNT (2 + WINDOWS_ID_BIAS)
Expand Down
Loading

0 comments on commit edd84f1

Please sign in to comment.