int WeiXinShareSessionObject::AS3_sendVedio(int sendType, Stringp title, Stringp description, BitmapDataObject * thumbPicData, Stringp videoUrl) { if(!g_WeiXinAppIsInstalled) return 0; sendType < 2 ? (g_WeiXinSendType = sendType) : (g_WeiXinSendType = 0); if(!g_WeiXinShareSessionSavedData) g_WeiXinShareSessionSavedData = new BWSendMessageContentClass; XLock lock(&(g_WeiXinShareSessionSavedData->m_lock)); StUTF8String titleUTF8(title); if(!g_WeiXinShareSessionSavedData->parameter1) { g_WeiXinShareSessionSavedData->parameter1 = malloc(titleUTF8.length() + 1); g_WeiXinShareSessionSavedData->parameter1Len = titleUTF8.length() + 1; memcpy(g_WeiXinShareSessionSavedData->parameter1, titleUTF8.c_str(), titleUTF8.length() + 1); } StUTF8String descriptionUTF8(description); if(!g_WeiXinShareSessionSavedData->parameter2) { g_WeiXinShareSessionSavedData->parameter2 = malloc(descriptionUTF8.length() + 1); g_WeiXinShareSessionSavedData->parameter2Len = descriptionUTF8.length() + 1; memcpy(g_WeiXinShareSessionSavedData->parameter2, descriptionUTF8.c_str(), descriptionUTF8.length() + 1); } //DataFile datafile = thumbPicData->GetByteArray(); //XU8Array data; //thumbPicData->Encode(data); if(!g_WeiXinShareSessionSavedData->parameter3) { XDrawDib dib; if(thumbPicData->GetDib(dib)) { int width = dib.Width();//bits->width; int height = dib.Height();//bits->height; int length = 4 * width * height; g_WeiXinShareSessionSavedData->parameter3Width = width; g_WeiXinShareSessionSavedData->parameter3Height = height; g_WeiXinShareSessionSavedData->parameter3Len = length; //g_WeiXinShareSessionSavedData->parameter3 = malloc(data.GetSize());//thumbPicData->GetLength()); g_WeiXinShareSessionSavedData->parameter3 = malloc(length); //g_WeiXinShareSessionSavedData->parameter3Len = data.GetSize();//thumbPicData->GetLength(); g_WeiXinShareSessionSavedData->parameter3Len = length; //memcpy(g_WeiXinShareSessionSavedData->parameter3, data.GetData(),data.GetSize());//(void *)datafile.GetBuffer(), thumbPicData->GetLength()); memcpy(g_WeiXinShareSessionSavedData->parameter3, dib.GetAddress(), length); } } StUTF8String videoUrlUTF8(videoUrl); if(!g_WeiXinShareSessionSavedData->parameter4) { g_WeiXinShareSessionSavedData->parameter4 = malloc(videoUrlUTF8.length() + 1); g_WeiXinShareSessionSavedData->parameter4Len = videoUrlUTF8.length() + 1; memcpy(g_WeiXinShareSessionSavedData->parameter4, videoUrlUTF8.c_str(), videoUrlUTF8.length() + 1); } lock.UnLock(); XWindow*pWnd=XWindow::m_pMainWnd; if(pWnd) { pWnd->PostMsg(XWM_WXSENDVEDIO,0,0,XMS_TOPMOST); return 1; } return 0; }
NS_IMETHODIMP Icon::Init(nsIDOMWindow *aWindow, const nsString& aTitle) { nsresult rv; nsCOMPtr<nsIBaseWindow> baseWindow; rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow)); NS_ENSURE_SUCCESS(rv, rv); nativeWindow native = 0; rv = baseWindow->GetParentNativeWindow(&native); NS_ENSURE_SUCCESS(rv, rv); // Get the window mGdkWindow = gdk_window_get_toplevel(reinterpret_cast<GdkWindow*>(native)); if (!mGdkWindow) { return NS_ERROR_UNEXPECTED; } // Get the widget and gtk window GtkWidget *widget; gdk_window_get_user_data(mGdkWindow, reinterpret_cast<gpointer*>(&widget)); widget = gtk_widget_get_toplevel(widget); mGtkWindow = reinterpret_cast<GtkWindow*>(widget); // Set up tray icon mStatusIcon = gtk_status_icon_new(); // Get the window icon and set it GdkPixbuf *buf = gtk_window_get_icon(mGtkWindow); if (buf) { gtk_status_icon_set_from_pixbuf(mStatusIcon, buf); } else { const gchar *iconname = gtk_window_get_icon_name(mGtkWindow); if (iconname) gtk_status_icon_set_from_icon_name(mStatusIcon, iconname); } // Get and set the title if (aTitle.IsEmpty()) { gtk_status_icon_set_tooltip_text(mStatusIcon, gtk_window_get_title(mGtkWindow)); gtk_widget_add_events(widget, GDK_PROPERTY_CHANGE_MASK); propertyEventId = g_signal_connect(mGtkWindow, "property-notify-event", G_CALLBACK(gtkPropertyEvent), this); } else { NS_ConvertUTF16toUTF8 titleUTF8(aTitle); gtk_status_icon_set_tooltip_text(mStatusIcon, reinterpret_cast<const char*>(titleUTF8.get())); propertyEventId = 0; } // Add signals g_signal_connect(G_OBJECT(mStatusIcon), "button-press-event", G_CALLBACK(gtkButtonEvent), this); g_signal_connect(G_OBJECT(mStatusIcon), "button-release-event", G_CALLBACK(gtkButtonEvent), this); // Make visible gtk_status_icon_set_visible(mStatusIcon, 1); return NS_OK; }