using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Runtime.InteropServices;
using System.IO;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.UI;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 화면보호기
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
public partial class frmScreenSaver : Form
{
private SManager sManager = new SManager(); //이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); //StateObject : StateServer Object(객체)
private PosStatus m_cPosStatus = new PosStatus(); //기본정보 참조
private TranStatus m_cTrnStatus = new TranStatus(); //거래정보 참조
private IMasterUs m_cMstService = null; //마스터 관리
private ArrayList m_alMedia = new ArrayList(); // 이미지 리스트
private int m_nMediaPos = 0; // 이미지 표시 위치
private int m_nCurrTime = 0; // 이미지 표시 경과시간
public frmScreenSaver()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
m_cPosStatus = (PosStatus)StateObject.POS; //POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; //POS 거래정보
m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
}
private void frmScreenSaver_Load(object sender, EventArgs e)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
// 컨트롤 초기화
InitControl();
}
private void frmScreenSaver_FormClosing(object sender, FormClosingEventArgs e)
{
UserLog.WriteLogFile(UserCom.LOG_IOS,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
}
#region 컨트롤 초기화
///
/// 폼 컨트롤 초기화
///
private void InitControl()
{
try
{
FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);
// 폼 크기 설정
this.Location = new Point(0, 0);
picMedia.Location = new Point(1, 1);
//wmpMedia.Location = new Point(1, 1);
btnFunc1.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor);
btnFunc2.BackColor = CmUtil.GetColorToString(m_cPosStatus.ScnMst.ThemeColor);
btnFunc1.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_SAVER_PART);
btnFunc2.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.BTN_SAVER_OWN);
lblFunc1.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0033);
lblFunc2.Text = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0034);
btnFunc1.Size = new Size(273, 159);
btnFunc2.Size = new Size(273, 159);
lblFunc1.Size = new Size(178, 66);
lblFunc2.Size = new Size(178, 66);
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start
txtInPut.Text = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0805);
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end
if (m_cPosStatus.Sale.ScreenSizeUser == 800)
{
this.Size = new Size(800, 600);
picMedia.Size = new Size(798, 598);
//wmpMedia.Size = new Size(798, 598);
btnFunc1.Location = new Point(85, 223);
btnFunc2.Location = new Point(443, 223);
lblFunc1.Location = new Point(171, 269);
lblFunc2.Location = new Point(528, 269);
}
else
{
this.Size = new Size(1024, 768);
picMedia.Size = new Size(1022, 766);
//wmpMedia.Size = new Size(1022, 766);
btnFunc1.Location = new Point(187, 305);
btnFunc2.Location = new Point(565, 305);
lblFunc1.Location = new Point(273, 351);
lblFunc2.Location = new Point(650, 351);
}
this.Refresh();
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start
//기존
/*
txtInPut.Text = "";
txtInPut.Top = this.Height + 10;
picMedia.Visible = false;
//wmpMedia.Visible = false;
*/
//변경
txtInPut.Top = 0;
txtInPut.Left = 0;
txtInPut.Width = this.Width;
txtInPut.Visible = false;
picMedia.Visible = false;
btnFunc1.Visible = false;
btnFunc2.Visible = false;
lblFunc1.Visible = false;
lblFunc2.Visible = false;
tmrMedia.Enabled = false;
m_nMediaPos = 0;
m_nCurrTime = 0;
if (PosMstManager.GetPosOption(POS_OPTION.OPT556) == "1")
{
//frmScreenSaver.Opacity = 100;
this.Opacity = 10D;
txtInPut.Visible = true;
txtInPut.BringToFront();
if (m_alMedia.Count == 0)
{
m_alMedia.Clear();
if (CmUtil.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CUSTOMER + "ScreenSaver1.png") == true)
{
m_alMedia.Add(new string[] { "1", //파일구분(1:이미지,2:동영상)
"30", //표시시간
"ScreenSaver1.png", //파일명
"000000", //시작시간
"235959"}); //끝 시간
}
if (CmUtil.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CUSTOMER + "ScreenSaver2.png") == true)
{
m_alMedia.Add(new string[] { "1", //파일구분(1:이미지,2:동영상)
"30", //표시시간
"ScreenSaver2.png", //파일명
"000000", //시작시간
"235959"}); //끝 시간
}
}
tmrMedia.Enabled = true;
}
else
{
this.Opacity = 0.9D;
btnFunc1.Visible = true;
btnFunc2.Visible = true;
lblFunc1.Visible = true;
lblFunc2.Visible = true;
}
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end
//m_nMediaPos = 0;
//m_nCurrTime = 0;
//if (m_alMedia.Count == 0)
//{
// m_alMedia.Clear();
// // 마스터 로딩
// string sQuery = "";
// sQuery += " SELECT * FROM POSMST..MST_CUST_DSP ";
// sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
// sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
// sQuery += " AND '" + m_cPosStatus.Base.SaleDate + "' BETWEEN START_DT AND FNSH_DT ";
// sQuery += " AND DISP_KIND = '3' "; // 표시종류(1:고객메인, 2:고객컨텐츠, 3:화면보호기)
// sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
// sQuery += " ORDER BY DISP_DIV DESC, SEQ ";
// DataTable dtDspData = m_cMstService.Select(new string[] { sQuery });
// if (dtDspData == null || dtDspData.Rows.Count == 0) return;
// // 이벤트 컨텐츠 있으며 이벤트만 표시
// foreach (DataRow dr in dtDspData.Rows)
// {
// string sDow = CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.DOW);
// if (sDow.Length >= 7)
// {
// DateTime dt = new DateTime(int.Parse(m_cPosStatus.Base.SaleDate.Substring(0, 4)), int.Parse(m_cPosStatus.Base.SaleDate.Substring(4, 2)), int.Parse(m_cPosStatus.Base.SaleDate.Substring(6, 2)));
// if (sDow.Substring((int)dt.DayOfWeek, 1) == "0") continue;
// }
// if (CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.DISP_KIND) == "3")
// {
// // 파일구분(1:이미지,2:동영상), 표시시간, 파일명
// m_alMedia.Add(new string[] { CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.FILE_TYPE)
// , CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.FILE_TIME)
// , CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.FILE_NM)
// , CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.START_HOUR)
// , CmUtil.GetDataRowStr(dr, PosMst.MST_CUST_DSP.DATA.FNSH_HOUR)});
// }
// }
//}
//DisplayMedia();
//tmrMedia.Enabled = true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region DisplayMedia(컨텐츠 표시)
///
/// 컨텐츠 표시
///
public void DisplayMedia()
{
try
{
if (m_alMedia.Count <= 0) return;
if (m_nMediaPos >= m_alMedia.Count) m_nMediaPos = 0;
// 파일구분(1:이미지,2:동영상), 표시시간, 파일명
string[] saMedia = (string[])m_alMedia[m_nMediaPos];
if (File.Exists(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CUSTOMER + saMedia[2]) == false) return;
if (CmUtil.IntParse(saMedia[3]) > CmUtil.IntParse(DateTime.Now.ToString("HHmmss")) || CmUtil.IntParse(saMedia[4]) < CmUtil.IntParse(DateTime.Now.ToString("HHmmss"))) return;
if (saMedia[0] == PosConst.MEDIA_FILE_DIV.IMAGE) // 이미지
{
//wmpMedia.Visible = false;
picMedia.Visible = true;
picMedia.Image = CmUtil.LoadImage(BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CUSTOMER + saMedia[2]);
m_nCurrTime = CmUtil.IntParse(saMedia[1]);
}
else if (saMedia[0] == PosConst.MEDIA_FILE_DIV.MOVIE) // 동영상
{
picMedia.Visible = false;
//wmpMedia.Visible = true;
//wmpMedia.URL = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CUSTOMER + saMedia[2];
m_nCurrTime = 0;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region 다음 컨텐츠 표시 체크
///
/// 다음 컨텐츠 표시 체크
///
///
///
private void tmrMedia_Tick(object sender, EventArgs e)
{
try
{
tmrMedia.Enabled = false;
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start
if (PosMstManager.GetPosOption(POS_OPTION.OPT556) == "1")
{
m_nCurrTime = m_nCurrTime - 1;
if (m_nCurrTime <= 0)
{
m_nMediaPos++;
DisplayMedia();
}
picMedia.Focus();
}
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end
//// 컨텐츠 완료 체크
//if (wmpMedia.Visible == true)
//{
// // 동영상
// if (wmpMedia.playState != WMPLib.WMPPlayState.wmppsPlaying && wmpMedia.playState != WMPLib.WMPPlayState.wmppsWaiting
// && wmpMedia.playState != WMPLib.WMPPlayState.wmppsTransitioning)
// {
// m_nMediaPos++;
// DisplayMedia();
// }
//}
//else
//{
// // 이미지
// m_nCurrTime = m_nCurrTime - 1;
// if (m_nCurrTime <= 0)
// {
// m_nMediaPos++;
// DisplayMedia();
// }
//}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
tmrMedia.Enabled = true;
}
#endregion
#region StoDisplay(컨텐츠 표시 종료)
///
/// 컨텐츠 표시 종료
///
public void StopDisplay()
{
try
{
//if (wmpMedia.Visible == true)
//{
// wmpMedia.Ctlcontrols.stop();
// wmpMedia.URL = "";
//}
//tmrMedia.Enabled = false;
this.DialogResult = DialogResult.OK;
this.Close();
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
private void frmScreenSaver_KeyPress(object sender, KeyPressEventArgs e)
{
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start, 20181012
//대기화면 표시된 상태에서 바코드 리딩시 첫번째자리 짤리는 증상으로 주석 처리
/*
if (PosMstManager.GetPosOption(POS_OPTION.OPT556) == "1")
{
StopDisplay();
}
*/
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end, 20181012
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end
}
private void frmScreenSaver_Click(object sender, EventArgs e)
{
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start
if (PosMstManager.GetPosOption(POS_OPTION.OPT556) == "1")
{
StopDisplay();
}
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end
}
//private void wmpMedia_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)
//{
// //StopDisplay();
//}
#endregion
private void btnFunc1_Click(object sender, EventArgs e)
{
try
{
if (((Button)sender) == btnFunc1) // 알바
{
if (m_cPosStatus.Base.OwnPartDiv == PosConst.OWN_PART_DIV.OWN_DIV)
{
m_cPosStatus.Base.OwnPartDiv = PosConst.OWN_PART_DIV.PART_DIV;
//전송데이터 저장
IDataCommonUs cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
cDataCommon.SaveServerRequestTransactionData(PosConst.RE_TRANSACTIONDATA.OWNER_MODE, new string[] { m_cPosStatus.Base.OwnPartDiv });
}
}
else if (((Button)sender) == btnFunc2) // 점주
{
if (m_cPosStatus.Base.OwnPartDiv == PosConst.OWN_PART_DIV.PART_DIV)
{
m_cPosStatus.Base.OwnPartDiv = PosConst.OWN_PART_DIV.OWN_DIV;
//전송데이터 저장
IDataCommonUs cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
cDataCommon.SaveServerRequestTransactionData(PosConst.RE_TRANSACTIONDATA.OWNER_MODE, new string[] { m_cPosStatus.Base.OwnPartDiv });
}
}
StopDisplay();
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
private void lblFunc1_Click(object sender, EventArgs e)
{
try
{
if (((Label)sender) == lblFunc1) // 알바
{
btnFunc1_Click(btnFunc1, e);
}
else if (((Label)sender) == lblFunc2) // 점주
{
btnFunc1_Click(btnFunc2, e);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
private void txtInPut_Click(object sender, EventArgs e)
{
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 start
if (PosMstManager.GetPosOption(POS_OPTION.OPT556) == "1")
{
StopDisplay();
}
//#17045 긴급)판매POS 대기 시 해피오더 안내 이미지 표시 end
}
}
}