TIM v2.3.1版本的 MD5 值为:d6957e3ee7ce901ccc491cefdea0da8c
以下内容为反编译后的 PrinterHandler.java 源代码,内容仅作参考
package com.tencent.mobileqq.app;
import android.content.ContentValues;
import android.content.Intent;
import com.dataline.activities.PrinterActivity;
import com.dataline.util.PrinterSessionAdapter;
import com.tencent.litetransfersdk.Session;
import com.tencent.mobileqq.app.proxy.DataLineMsgProxy;
import com.tencent.mobileqq.app.proxy.ProxyManager;
import com.tencent.mobileqq.data.PrinterItemMsgRecord;
import com.tencent.mobileqq.filemanager.data.FMConfig;
import com.tencent.mobileqq.filemanager.util.FMDialogUtil;
import com.tencent.mobileqq.filemanager.util.FileManagerUtil;
import com.tencent.mobileqq.persistence.EntityManager;
import com.tencent.mobileqq.service.message.MessageCache;
import com.tencent.mobileqq.statistics.ReportController;
import com.tencent.mobileqq.utils.AlbumConstants;
import com.tencent.mobileqq.utils.FileUtils;
import com.tencent.open.pcpush.OpenFileUtil;
import com.tencent.qphone.base.util.QLog;
import com.tencent.tim.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Timer;
import msf.msgcomm.msg_comm;
import tencent.im.s2c.msgtype0x211.submsgtype0x9.C2CType0x211_SubC2CType0x9;
public class PrinterHandler {
public static final int f87443a = 55;
public static final String f18269a = "dataline.Printer";
public static final int f87444b = 56;
public static final String f18270b = "printer";
public static final int f87445c = 57;
public static final String f18271c = "sFilesSelected";
public static final int d = 0;
public static final String f18272d = "sPrinterName";
public static final int e = 1;
public static final String f18273e = "sPrintParam";
public static final int f = 2;
public static final String f18274f = "sPrintResult";
public static final int g = 3;
public static final String f18275g = "sPrintSessionID";
public static final int h = 5;
public static final String f18276h = "sPrintDin";
public static final String i = "http://qzs.qq.com/open/mobile/iot_print/html/printOpt.html";
public PrinterSessionAdapter f18278a;
public QQAppInterface f18280a;
public List f18283a;
public List f18284b;
public int f18285i;
public String j;
public ArrayList f18281a = new ArrayList();
public HashMap f18282a = new HashMap();
long f18277a = 0;
private DataLineObserver f18279a = new ouu(this);
public PrinterHandler(QQAppInterface qQAppInterface) {
this.f18280a = null;
this.f18280a = qQAppInterface;
this.f18280a.addObserver(this.f18279a);
}
public void m4563a() {
this.f18280a.removeObserver(this.f18279a);
}
public void a(int i2) {
if (1021 == i2 && QLog.isDevelopLevel()) {
QLog.d(f18269a, 4, "向pc枚举打印机,server回包,");
}
}
public void a(DataLineHandler dataLineHandler) {
RegisterProxySvcPackHandler registerProxySvcPackHandler = (RegisterProxySvcPackHandler) this.f18280a.getBusinessHandler(10);
if (registerProxySvcPackHandler.a() == 0 || registerProxySvcPackHandler.f() != 1) {
dataLineHandler.b(12, false, (Object) null);
if (this.f18282a.size() > 0) {
Timer timer = new Timer();
timer.schedule(new ous(this, dataLineHandler, timer), 5000L);
}
}
}
public void a(DataLineHandler dataLineHandler, msg_comm.Msg msg2, C2CType0x211_SubC2CType0x9.MsgBody msgBody) {
long j;
switch (msgBody.uint32_CMD.get()) {
case 2:
if (QLog.isDevelopLevel()) {
QLog.d(f18269a, 4, "收到pc的打印机列表");
}
PrinterStatusHandler printerStatusHandler = (PrinterStatusHandler) this.f18280a.getBusinessHandler(74);
printerStatusHandler.a(false);
C2CType0x211_SubC2CType0x9.MsgBody.MsgPrinter msgPrinter = (C2CType0x211_SubC2CType0x9.MsgBody.MsgPrinter) msgBody.msg_printer.get();
if (msgPrinter == null) {
if (QLog.isColorLevel()) {
QLog.d(f18269a, 2, "收到pc的打印机列表, msgPrinter为空");
return;
}
return;
}
this.f18283a = msgPrinter.rpt_string_printer.get();
this.f18284b = msgPrinter.rpt_msg_support_file_info.get();
if (((RegisterProxySvcPackHandler) this.f18280a.getBusinessHandler(10)).a() != 0 && this.f18283a != null && this.f18283a.size() > 0) {
printerStatusHandler.a(true);
}
dataLineHandler.b(12, false, (Object) null);
ReportController.b(this.f18280a, "dc01331", "", "", "0X8004022", "0X8004022", 0, 0, "", "", "", "");
return;
case 3:
int i2 = -1;
C2CType0x211_SubC2CType0x9.MsgBody.MsgPrinter msgPrinter2 = (C2CType0x211_SubC2CType0x9.MsgBody.MsgPrinter) msgBody.msg_printer.get();
if (msgPrinter2 == null) {
if (QLog.isColorLevel()) {
QLog.d(f18269a, 2, "收到pc的打印结果, msgPrinter为空");
j = 0;
}
j = 0;
} else {
i2 = msgPrinter2.uint32_print_result.get();
List list = msgPrinter2.rpt_uint64_session_id.get();
if (list == null || list.size() == 0) {
if (QLog.isColorLevel()) {
QLog.d(f18269a, 2, "收到pc的打印结果, rpt_uint64_session_id为空. print_result = " + i2);
j = 0;
}
j = 0;
} else {
j = ((Long) list.get(0)).longValue();
}
}
if (QLog.isColorLevel()) {
QLog.d(f18269a, 2, "收到pc的打印结果, print_result = " + i2 + ", print_id = " + j);
}
new Intent().putExtra(f18274f, i2);
dataLineHandler.b(18, i2 == 0, Long.valueOf(j));
ReportController.b(this.f18280a, "dc01331", "", "", "0X8004021", "0X8004021", (int) j, i2, "", "", "", "");
return;
default:
return;
}
}
public void a(PrinterItemMsgRecord printerItemMsgRecord) {
if (printerItemMsgRecord.mTimer_for_Print != null) {
printerItemMsgRecord.mTimer_for_Print.cancel();
printerItemMsgRecord.mTimer_for_Print = null;
}
this.f18281a.remove(printerItemMsgRecord);
this.f18282a.remove(Long.valueOf(printerItemMsgRecord.uSessionID));
ReportController.b(this.f18280a, "dc01331", "", "", "0X8004021", "0X8004021", (int) printerItemMsgRecord.uSessionID, -2, "", "", "", "");
this.f18280a.m4638a().a(String.valueOf(0), 0, printerItemMsgRecord.getTableName(), "msgId=?", new String[]{String.valueOf(printerItemMsgRecord.msgId)}, 2, null);
}
public void b(PrinterItemMsgRecord printerItemMsgRecord) {
this.f18280a.m4638a().a(String.valueOf(0), 0, printerItemMsgRecord.getTableName(), printerItemMsgRecord.m5862clone(), 0, null);
}
public void c(PrinterItemMsgRecord printerItemMsgRecord) {
ProxyManager m4638a = this.f18280a.m4638a();
ContentValues contentValues = new ContentValues();
contentValues.put("status", Integer.valueOf(printerItemMsgRecord.status));
m4638a.a(String.valueOf(0), 0, printerItemMsgRecord.getTableName(), contentValues, "msgId=?", new String[]{String.valueOf(printerItemMsgRecord.msgId)}, 1, null);
}
public int a() {
ProxyManager m4638a = this.f18280a.m4638a();
EntityManager createEntityManager = this.f18280a.getEntityManagerFactory().createEntityManager();
if (DataLineMsgProxy.a(m4638a, PrinterItemMsgRecord.sTagleName)) {
m4638a.a(createEntityManager);
}
long j = 2147483647L;
if (this.f18281a.size() > 0) {
j = ((PrinterItemMsgRecord) this.f18281a.get(0)).msgId;
}
List m7240a = createEntityManager.m7240a(PrinterItemMsgRecord.class, "select * from mr_dataline_printer where msgid<? order by msgid desc limit 5", new String[]{String.valueOf(j)});
createEntityManager.m7241a();
if (m7240a != null) {
int size = m7240a.size();
for (int i2 = 0; i2 < m7240a.size(); i2++) {
PrinterItemMsgRecord printerItemMsgRecord = (PrinterItemMsgRecord) m7240a.get(i2);
if (printerItemMsgRecord.status < 10) {
printerItemMsgRecord.status = 11;
}
this.f18281a.add(0, printerItemMsgRecord);
}
return size;
}
return 0;
}
public int b() {
if (this.f18281a.size() > 0) {
while (this.f18281a.size() > 5 && ((PrinterItemMsgRecord) this.f18281a.get(0)).status != 2) {
this.f18281a.remove(0);
}
return this.f18281a.size();
}
int a2 = a();
if (this.f18277a == 0) {
if (this.f18281a.size() > 0) {
this.f18277a = ((PrinterItemMsgRecord) this.f18281a.get(this.f18281a.size() - 1)).msgId;
}
if (QLog.isColorLevel()) {
QLog.d(f18269a, 2, "初始化PrinterItemMsgRecord的msgid为" + this.f18277a);
}
}
return a2;
}
public void a(int i2, Session session, double d2, boolean z) {
if (DataLineHandler.a(session, f18270b)) {
switch (i2) {
case 0:
PrinterItemMsgRecord printerItemMsgRecord = (PrinterItemMsgRecord) this.f18282a.get(Long.valueOf(session.uSessionID));
if (printerItemMsgRecord != null) {
printerItemMsgRecord.status = 2;
printerItemMsgRecord.progress = 0.7d * d2;
return;
}
return;
case 1:
PrinterItemMsgRecord printerItemMsgRecord2 = (PrinterItemMsgRecord) this.f18282a.get(Long.valueOf(session.uSessionID));
if (printerItemMsgRecord2 != null) {
printerItemMsgRecord2.status = 2;
printerItemMsgRecord2.progress = (float) (0.7d * d2);
return;
}
return;
case 2:
PrinterItemMsgRecord printerItemMsgRecord3 = (PrinterItemMsgRecord) this.f18282a.get(Long.valueOf(session.uSessionID));
if (printerItemMsgRecord3 != null) {
if (z) {
printerItemMsgRecord3.progress = 0.699999988079071d;
printerItemMsgRecord3.status = 2;
Timer timer = new Timer();
printerItemMsgRecord3.mTimer_for_Print = timer;
out outVar = new out(this, printerItemMsgRecord3.uSessionID, timer);
long a2 = MessageCache.a();
long max = Math.max(Math.min(a2 >= printerItemMsgRecord3.time ? a2 - printerItemMsgRecord3.time : a2, 1800L), 60L);
if (QLog.isDevelopLevel()) {
QLog.d(f18269a, 4, "printID=" + printerItemMsgRecord3.uSessionID + ", 当前时间[" + a2 + "], 开始时间[" + printerItemMsgRecord3.time + "], 超时时间[" + max);
}
printerItemMsgRecord3.mTimer_for_Print.schedule(outVar, max * 1000);
return;
}
printerItemMsgRecord3.status = 12;
c(printerItemMsgRecord3);
return;
}
return;
case 3:
long j = this.f18277a + 1;
this.f18277a = j;
PrinterItemMsgRecord printerItemMsgRecord4 = new PrinterItemMsgRecord(j);
printerItemMsgRecord4.uSessionID = session.uSessionID;
if (QLog.isColorLevel()) {
QLog.d(f18269a, 2, "获得printID=" + printerItemMsgRecord4.uSessionID + ", path=" + session.strFilePathSrc);
}
printerItemMsgRecord4.filename = session.strFilePathSrc;
printerItemMsgRecord4.time = MessageCache.a();
this.f18281a.add(printerItemMsgRecord4);
b(printerItemMsgRecord4);
this.f18282a.put(Long.valueOf(printerItemMsgRecord4.uSessionID), printerItemMsgRecord4);
return;
default:
return;
}
}
}
public void a(Long l, boolean z) {
PrinterItemMsgRecord printerItemMsgRecord;
PrinterItemMsgRecord printerItemMsgRecord2 = (PrinterItemMsgRecord) this.f18282a.get(l);
if (printerItemMsgRecord2 == null) {
for (int size = this.f18281a.size() - 1; size >= 0; size--) {
if (((PrinterItemMsgRecord) this.f18281a.get(size)).uSessionID == l.longValue()) {
printerItemMsgRecord = (PrinterItemMsgRecord) this.f18281a.get(size);
break;
}
}
}
printerItemMsgRecord = printerItemMsgRecord2;
if (printerItemMsgRecord != null) {
printerItemMsgRecord.status = z ? 10 : 11;
printerItemMsgRecord.progress = 1.0d;
if (printerItemMsgRecord.mTimer_for_Print != null) {
printerItemMsgRecord.mTimer_for_Print.cancel();
printerItemMsgRecord.mTimer_for_Print = null;
}
this.f18282a.remove(l);
c(printerItemMsgRecord);
}
}
public String[] m4564a() {
if (!((PrinterStatusHandler) this.f18280a.getBusinessHandler(74)).m4565a() || this.f18284b == null) {
return null;
}
String[] strArr = new String[this.f18284b.size()];
for (int size = this.f18284b.size() - 1; size >= 0; size--) {
strArr[size] = "." + ((C2CType0x211_SubC2CType0x9.MsgBody.SupportFileInfo) this.f18284b.get(size)).str_file_suffix.get();
}
return strArr;
}
public void a(BaseActivity baseActivity, String str) {
if (FileManagerUtil.m6585a()) {
if (FileUtils.a(str) > FMConfig.a()) {
FMDialogUtil.a(baseActivity, (int) R.string.f59329name_res_0x7f0a039b, (int) R.string.f59332name_res_0x7f0a039e, new ouv(this, baseActivity, str));
return;
}
return;
}
Intent intent = new Intent(baseActivity, PrinterActivity.class);
intent.putExtra(AlbumConstants.i, 55);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add(str);
intent.putStringArrayListExtra("PhotoConst.PHOTO_PATHS", arrayList);
baseActivity.startActivity(intent);
baseActivity.finish();
ReportController.b(this.f18280a, "dc01331", "", "", "0X8004059", "0X8004059", 0, 0, "", "", "", "");
}
public boolean a(String str) {
String[] m4564a;
return (str == null || (m4564a = m4564a()) == null || !OpenFileUtil.a(str.toLowerCase(), m4564a)) ? false : true;
}
}