void DlgOption::SubExclude::onWMInitDialog()
{
	TranslateDialogDefault(getHWnd());

	// init clist
	HWND hCList = GetDlgItem(getHWnd(), IDC_CONTACTS);
	HIMAGELIST hIml = ImageList_Create(OS::smIconCX(), OS::smIconCY(), OS::imageListColor() | ILC_MASK, 2, 0);
	SendMessage(hCList, CLM_SETEXTRAIMAGELIST, 0, reinterpret_cast<LPARAM>(hIml));

	staticRecreateIcons(reinterpret_cast<LPARAM>(this));
	IconLib::registerCallback(staticRecreateIcons, reinterpret_cast<LPARAM>(this));

	customizeList(hCList);
	SendMessage(hCList, CLM_SETEXTRACOLUMNS, 1, 0);

	CLCINFOITEM cii = { 0 };

	cii.cbSize = sizeof(cii);
	cii.flags = CLCIIF_GROUPFONT;
	cii.pszText = TranslateT("** All contacts **");
	m_hItemAll = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_ADDINFOITEM, 0, reinterpret_cast<LPARAM>(&cii)));

	// lock exlucde contacts
	g_bExcludeLock = true;
}
BOOL DlgOption::SubOutput::handleMsg(UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg) {
	case WM_WINDOWPOSCHANGED:
		{
			RECT rClient, rWnd;

			GetClientRect(getHWnd(), &rClient);

			// options tree
			rWnd = utils::getWindowRect(getHWnd(), m_Options);
			rWnd.right = rClient.right;
			rWnd.bottom = rClient.bottom;
			utils::moveWindow(m_Options, rWnd);
		}
		break;

	case WM_NOTIFY:
		NMHDR* p = reinterpret_cast<NMHDR*>(lParam);

		if (p->idFrom == IDC_OPTIONS) {
			if (p->code == OptionsCtrl::OCN_MODIFIED) {
				OptionsCtrl::NMOPTIONSCTRL* pNM = reinterpret_cast<OptionsCtrl::NMOPTIONSCTRL*>(lParam);

				onChanged(pNM->hItem);
				return TRUE;
			}
		}
		break;
	}

	return FALSE;
}
bool ViewerWindow::onCreate(LPCREATESTRUCT lps)
{
	m_control.setWindow(m_hWnd);

	setClassCursor(LoadCursor(NULL, IDC_ARROW));
	loadIcon(IDI_APPICON);
	m_toolbar.loadToolBarfromRes(IDB_TOOLBAR);
	m_toolbar.setButtonsRange(IDS_TB_NEWCONNECTION);
	m_toolbar.setViewAutoButtons(5, ToolBar::TB_Style_sep);
	m_toolbar.setViewAutoButtons(7, ToolBar::TB_Style_sep);
	m_toolbar.setViewAutoButtons(11, ToolBar::TB_Style_sep);
	m_toolbar.setViewAutoButtons(12, ToolBar::TB_Style_sep);
	m_toolbar.setViewAutoButtons(16, ToolBar::TB_Style_sep);
	m_toolbar.attachToolBar(getHWnd());
	m_menu.getSystemMenu(getHWnd());
	m_menu.loadMenu();
	applySettings();

	ViewerConfig *config = ViewerConfig::getInstance();
	bool bShowToolbar = config->isToolbarShown();
	if (!bShowToolbar) {
		m_toolbar.hide();
		m_bToolBar = false;
	}
	m_menu.checkedMenuItem(IDS_TB_TOOLBAR, bShowToolbar);
	return true;
}
void DlgOption::SubInput::onWMInitDialog()
{
	TranslateDialogDefault(getHWnd());

	// init options control
	m_Options << GetDlgItem(getHWnd(), IDC_OPTIONS);

	// settings
	OptionsCtrl::Item hTemp, hTemp2;

	hTemp = m_Options.insertGroup(NULL, TranslateT("History interpretation"), OptionsCtrl::OCF_ROOTGROUP);
	m_hChatSessionMinDur = m_Options.insertEdit(hTemp, TranslateT("Time a chat session must last to be counted (seconds)"), _T(""), OptionsCtrl::OCF_NUMBER);
	m_hChatSessionTimeout = m_Options.insertEdit(hTemp, TranslateT("Time between two chat sessions (seconds)"), _T(""), OptionsCtrl::OCF_NUMBER);
	m_hAverageMinTime = m_Options.insertEdit(hTemp, TranslateT("Minimum time to assume when calculating average (days)"), _T(""), OptionsCtrl::OCF_NUMBER);
	m_hWordDelimiters = m_Options.insertEdit(hTemp, TranslateT("Word delimiting characters"));
	hTemp = m_Options.insertGroup(NULL, TranslateT("Contact filtering"), OptionsCtrl::OCF_ROOTGROUP | OptionsCtrl::OCF_NODISABLECHILDS);
	m_hProtocols = m_Options.insertGroup(hTemp, TranslateT("Ignore all contacts with protocol..."));

	hTemp2 = m_Options.insertGroup(hTemp, TranslateT("History read mode for metacontacts"), 0);
	m_hMetaContactsMode = m_Options.insertRadio(hTemp2, NULL, TranslateT("Use only metacontact's history"));
	m_Options.insertRadio(hTemp2, m_hMetaContactsMode, TranslateT("Use only subcontacts' histories (for one metacontact)"));
	m_Options.insertRadio(hTemp2, m_hMetaContactsMode, TranslateT("Use metacontact's history and its subcontacts' histories"));
	m_Options.insertRadio(hTemp2, m_hMetaContactsMode, TranslateT("Treat metacontacts and subcontacts as normal contacts"));

	m_hMergeContacts = m_Options.insertCheck(hTemp, TranslateT("Merge contacts with same name"), OptionsCtrl::OCF_DISABLECHILDSONUNCHECK);
	m_hMergeContactsGroups = m_Options.insertCheck(m_hMergeContacts, TranslateT("Only merge if contacts are in the same group"));
	hTemp2 = m_Options.insertGroup(hTemp, TranslateT("Duplicate detection when reading merged contacts"));
	m_hMergeMode = m_Options.insertRadio(hTemp2, NULL, TranslateT("Merge events (tolerant)"));
	m_Options.insertRadio(hTemp2, m_hMergeMode, TranslateT("Merge events (strict)"));
	m_Options.insertRadio(hTemp2, m_hMergeMode, TranslateT("Don't merge events"));
	hTemp = m_Options.insertGroup(NULL, TranslateT("Message filtering"), OptionsCtrl::OCF_ROOTGROUP);
	hTemp2 = m_Options.insertGroup(hTemp, TranslateT("Ignore messages..."));
	m_hIgnoreOlder = m_Options.insertEdit(hTemp2, TranslateT("...older than (days, 0=no limit)"), _T(""), OptionsCtrl::OCF_NUMBER);
	m_hIgnoreBefore = m_Options.insertDateTime(hTemp2, TranslateT("...before date (none=no limit)"), 0, _T("%Y-%m-%d"), OptionsCtrl::OCF_ALLOWNONE);
	m_hIgnoreAfter = m_Options.insertDateTime(hTemp2, TranslateT("...after date (none=no limit)"), 0, _T("%Y-%m-%d"), OptionsCtrl::OCF_ALLOWNONE);
	m_hFilterRawRTF = m_Options.insertCheck(hTemp, TranslateT("Strip raw RTF control sequences from message"));
	m_hFilterBBCodes = m_Options.insertCheck(hTemp, TranslateT("Strip BBCode tags from messages"));

	// insert known protocols
	m_hProtosIgnore.clear();

	PROTOACCOUNT **protoList;
	int protoCount;
	Proto_EnumAccounts(&protoCount, &protoList);
	upto_each_(i, protoCount)
	{
		m_hProtosIgnore.push_back(m_Options.insertCheck(
			m_hProtocols,
			Protocol::getDisplayName(protoList[i]->szModuleName).c_str(),
			0,
			reinterpret_cast<INT_PTR>(protoList[i]->szModuleName)));
	}
void ViewerWindow::dialogConnectionInfo()
{
	StringStorage host = m_conData->getHost();
	std::vector<TCHAR> kbdName;
	kbdName.resize(KL_NAMELENGTH);
	memset(&kbdName[0], 0, sizeof(TCHAR) * KL_NAMELENGTH);
	if (!GetKeyboardLayoutName(&kbdName[0])) {
		kbdName[0] = _T('?');
		kbdName[1] = _T('?');
		kbdName[2] = _T('?');
	}

	Rect geometry;
	int pixelSize = 0;
	m_dsktWnd.getServerGeometry(&geometry, &pixelSize);
	StringStorage str;
	str.format(StringTable::getString(IDS_CONNECTION_INFO_FORMAT),
		host.getString(),
		m_viewerCore->getRemoteDesktopName().getString(),
		m_viewerCore->getProtocolString().getString(),
		geometry.getWidth(),
		geometry.getHeight(),
		pixelSize,
		&kbdName[0]);
	MessageBox(getHWnd(),
		str.getString(),
		StringTable::getString(IDS_CONNECTION_INFO_CAPTION),
		MB_OK | MB_ICONINFORMATION);
}
Exemple #6
0
bool SampleBase::onInit()
{
	m_frameCount = 0;
	m_fps = 0.0f;

	addChannel( MSG_DEV );

	if ( !WinFrame::create( "Sample Test" , g_ScreenWidth , g_ScreenHeight ,
		   SysMsgHandler::MsgProc , false ) )
		return false;

	if ( !CFly::initSystem() )
		return  false;
	mWorld =  WorldManager::getInstance().createWorld( getHWnd() , g_ScreenWidth , g_ScreenHeight , 32 , false );

	CFly::PluginManager::getInstance().registerLinker( "CW3" , new Cw3FileLinker );

	if ( !mWorld )
		return false;

	mWorld->setDir( DIR_OBJECT , SAMPLE_DATA_DIR );
	mWorld->setDir( DIR_ACTOR  , SAMPLE_DATA_DIR"/NPC" );
	mWorld->setDir( DIR_TEXTURE, SAMPLE_DATA_DIR );
	mWorld->setDir( DIR_SHADER , SAMPLE_DATA_DIR"/Shader" );
	mMainViewport = mWorld->createViewport( 0 , 0 , g_ScreenWidth , g_ScreenHeight );
	mMainScene    = mWorld->createScene( 1 );
	mMainScene->setAmbientLight( Color4f(1,1,1) );

	mMainCamera = mMainScene->createCamera();
	mMainCamera->setAspect( float(  g_ScreenWidth ) / g_ScreenHeight );
	mMainCamera->setNear(5.0f);
	mMainCamera->setFar(100000.0f);

	return onSetupSample();
}
Exemple #7
0
void DesktopWindow::setNewFramebuffer(const FrameBuffer *framebuffer)
{
  Dimension dimension = framebuffer->getDimension();
  Dimension olddimension = m_framebuffer.getDimension();

  bool isBackgroundDirty = dimension.width < olddimension.width || 
                           dimension.height < olddimension.height;

  m_logWriter->detail(_T("Desktop size: %d, %d"),  dimension.width, dimension.height);
  {
    // FIXME: Nested locks should not be used.
    AutoLock al(&m_bufferLock);
    if (!dimension.isEmpty()) {
      // the width and height should be aligned to 4
      int alignWidth = (dimension.width + 3) / 4;
      dimension.width = alignWidth * 4;
      int alignHeight = (dimension.height + 3) / 4;
      dimension.height = alignHeight * 4;
      m_framebuffer.setProperties(&dimension, 
                                  &framebuffer->getPixelFormat(), 
                                  getHWnd());
      m_framebuffer.setColor(0, 0, 0);
      m_scManager.setScreenResolution(dimension.width, dimension.height);
    }
  }
  if (dimension.isEmpty()) {
    repaint(&dimension.getRect());
  } else {
    m_isBackgroundDirty = isBackgroundDirty;
  }
}
void ViewerWindow::onBell()
{
	if (m_conConf->isDeiconifyOnRemoteBellEnabled()) {
		ShowWindow(getHWnd(), SW_RESTORE);
		setForegroundWindow();
	}
	MessageBeep(MB_ICONASTERISK);
}
Exemple #9
0
void DesktopWindow::calcClientArea() {
  if (getHWnd()) {
    RECT rc;

    getClientRect(&rc);
    m_clientArea.fromWindowsRect(&rc);
    m_scManager.setWindow(&m_clientArea);
  }
}
void MucConfigForm::MucConfigResultNotify(JabberDataBlockRef block) {
    if (block->getAttribute("type")=="error") {
        XmppError::ref xe= XmppError::findInStanza(block);
        //todo: error handling
        MessageBox(getHWnd(), utf8::utf8_wchar(xe->toString()).c_str() , L"MucConfig", MB_OK | MB_ICONEXCLAMATION );
        return;
    }


    JabberDataBlockRef query=block->findChildNamespace("query","http://jabber.org/protocol/muc#owner");
    this->xdata=query->findChildNamespace("x","jabber:x:data");

    //non-descriptive result
    if (!xdata && plainText.empty())
        plainText="done"; //todo: make more informative and localizabe

    PostMessage(getHWnd(), WM_HTML_UPDATE, 0, (LPARAM)"");
    return;
}
Exemple #11
0
BOOL VcardForm::savePhoto( LPCTSTR path ) 
{
    if (!vcard) return FALSE;

    JabberDataBlockRef vcardTemp=vcard->findChildNamespace("vCard", "vcard-temp");      if (!vcardTemp) return FALSE;
    JabberDataBlockRef photo=vcardTemp->getChildByName("PHOTO");    if (!photo) return FALSE;
    JabberDataBlockRef binval=photo->getChildByName("BINVAL"); if (!binval) return FALSE;
    const std::string &data=binval->getText();

    int dstLen=base64::base64DecodeGetLength(data.length());
    char *dst=new char[dstLen];

    dstLen=base64::base64Decode2(dst, data.c_str(), data.length());

    wchar_t filename[MAX_PATH];
    if (!path) {
        wchar_t *extm=ext[detectMime(dst)]; 
        *filename=0;
        wcscpy_s(filename, MAX_PATH, extm);
        OPENFILENAME ofn;
        memset(&ofn, 0, sizeof(OPENFILENAME));
        ofn.lStructSize=sizeof(OPENFILENAME);
        ofn.hwndOwner=getHWnd();         
        ofn.hInstance=g_hInst; //GetModuleHandle(NULL);  
        ofn.lpstrFilter=FILEIMGMASK;     
        ofn.nFilterIndex=0;
        ofn.lpstrFile=filename;     
        ofn.nMaxFile=MAX_PATH;
        //ofn.lpstrInitialDir   = ;     
        ofn.lpstrTitle=L"Save image as";
        ofn.lpstrDefExt=extm+2;
        ofn.Flags=OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

        BOOL result = GetSaveFileNameEx(&ofn);
        if (!result) return FALSE;
        path=filename;
    }


    HANDLE file=CreateFile(path, 
        GENERIC_WRITE, 
        FILE_SHARE_READ, NULL, 
        CREATE_ALWAYS,
        0, NULL);

    DWORD dwProcessed;
    if (file==INVALID_HANDLE_VALUE) {
        delete dst; return FALSE;
    }
    WriteFile(file, dst, dstLen, &dwProcessed, NULL);
    CloseHandle(file);

    delete dst;
    return TRUE;
}
Exemple #12
0
bool ViewerWindow::onDisconnect()
{
	MessageBox(getHWnd(),
		m_disconnectMessage.getString(),
		formatWindowName().getString(),
		MB_OK);

	m_dsktWnd.destroyWindow();
	destroyWindow();
	return true;
}
Exemple #13
0
bool TabsCtrl::switchByWndRef( WndRef targetWnd ) {
    if (!targetWnd) return false;
    for (unsigned int i = 0; i < tabs.size(); i++) {
        if (tabs[i]->wndChild->getHWnd()==targetWnd->getHWnd()) {
            activeTab=i;
            InvalidateRect(getHWnd(), NULL, true);
            showActiveTab();
            return true;
        }
    }
    return false;
}
Exemple #14
0
bool ViewerWindow::onError()
{
	StringStorage error;
	error.format(_T("Error in %s: %s"), ProductNames::VIEWER_PRODUCT_NAME, m_error.getMessage());
	MessageBox(getHWnd(),
		error.getString(),
		formatWindowName().getString(),
		MB_OK | MB_ICONERROR);

	m_dsktWnd.destroyWindow();
	destroyWindow();
	return true;
}
Exemple #15
0
bool DesktopWindow::onMouse(unsigned char msg, unsigned short wspeed, POINTS pt) 
{
  POINT p;

  p.x = pt.x;
  p.y = pt.y;
  if (m_conConf->isViewOnly()) {
    return true;
  }

  if (m_conConf->isMouseSwapEnabled() && msg) {
    bool bSecond = !!(msg & (1 << 1));
    bool bThird  = !!(msg & (1 << 2));
    msg &= ~((1 << 1) | (1 << 2));
    if (bSecond) {  
      msg |= 1 << 2;
    }
    if (bThird) {
      msg |= 1 << 1;
    }
  }

  int mask = MOUSE_WUP | MOUSE_WDOWN;
  // we need to translate screen coordinate to client
  if (msg & mask) { 
    if (!ScreenToClient(getHWnd(), &p)) {
      p.x = -1; 
      p.y = -1;
    } 
  }
  POINTS mousePos = getViewerCoord(p.x, p.y); 
  Point pos;
  pos.x = mousePos.x;
  pos.y = mousePos.y;
  if (pos.y >= 0 && pos.x >= 0) {
     UINT8 keys;
     
     keys = msg;
     m_pViewerCore->sendPointerEvent(keys, &pos);
     if (msg & mask) {
        int i;

        m_pViewerCore->sendPointerEvent(keys & ~mask, &pos);
        for (i=0; i< wspeed-1; i++) {
          m_pViewerCore->sendPointerEvent(keys, &pos);
          m_pViewerCore->sendPointerEvent(keys & ~mask, &pos); 
        }
     }
  }
  return true;
}
Exemple #16
0
void ViewerWindow::dialogConnectionOptions()
{
	OptionsDialog dialog;

	dialog.setConnected();
	dialog.setConnectionConfig(m_conConf);
	// FIXME: Removed Control from this code and another
	Control control = getHWnd();
	dialog.setParent(&control);

	if (dialog.showModal() == 1) {
		m_conConf->saveToStorage(&m_ccsm);
		applySettings();
	}
}
Exemple #17
0
ViewerWindow::ViewerWindow(WindowsApplication *application,
	ConnectionData *conData,
	ConnectionConfig *conConf,
	Logger *logger)
	: m_ccsm(RegistryPaths::VIEWER_PATH,
	conData->getHost().getString()),
	m_application(application),
	m_logWriter(logger),
	m_conConf(conConf),
	m_scale(100),
	m_isFullScr(false),
	m_ftDialog(0),
	m_viewerCore(0),
	m_fileTransfer(0),
	m_remoteProcess(0),
	m_conData(conData),
	m_dsktWnd(&m_logWriter, conConf),
	m_isConnected(false),
	m_sizeIsChanged(false),
	m_hooksEnabledFirstTime(true),
	m_requiresReconnect(false),
	m_stopped(false)
{
	m_standardScale.push_back(10);
	m_standardScale.push_back(15);
	m_standardScale.push_back(25);
	m_standardScale.push_back(50);
	m_standardScale.push_back(75);
	m_standardScale.push_back(90);
	m_standardScale.push_back(100);
	m_standardScale.push_back(150);
	m_standardScale.push_back(200);
	m_standardScale.push_back(400);

	StringStorage windowClass = WindowNames::TVN_WINDOW_CLASS_NAME;
	StringStorage titleName = WindowNames::TVN_WINDOW_TITLE_NAME;
	StringStorage subTitleName = WindowNames::TVN_SUB_WINDOW_TITLE_NAME;

	setClass(&windowClass);
	createWindow(&titleName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);

	m_dsktWnd.setClass(&windowClass);
	m_dsktWnd.createWindow(&subTitleName,
		WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CHILD,
		getHWnd());

	SetTimer(m_hWnd, TIMER_DESKTOP_STATE, TIMER_DESKTOP_STATE_DELAY, (TIMERPROC)NULL);
}
Exemple #18
0
bool DesktopWindow::onDrawClipboard()
{
  if (!IsWindowVisible(getHWnd()) || !m_conConf->isClipboardEnabled()) {
    return false;
  }
  StringStorage clipboardString;
  if (m_clipboard.getString(&clipboardString)) {

    // if string in clipboard got from server, then don't send him too
    if (clipboardString == m_strClipboard) {
      m_strClipboard = _T("");
      return true;
    }
    m_strClipboard = _T("");
    m_pViewerCore->sendCutTextEvent(&clipboardString);
  }
  return true;
}
Exemple #19
0
void TabsCtrl::processPopupMenu( bool cmdBar, int posX, int posY ) {

    HMENU hmenu = getContextMenu();
    menuUserCmds(hmenu);

    if (hmenu==NULL) return;

    if (!cmdBar && activeTab>0) {
        BOOL result=InsertMenu(hmenu, 0, MF_STRING | MF_BYPOSITION, TabsCtrl::CLOSETAB, TEXT("Close"));
        result=InsertMenu(hmenu, 1, MF_SEPARATOR | MF_BYPOSITION, 0, NULL);
    }

    HWND hWnd=getHWnd();

    POINT pt={posX, posY };
    if (!cmdBar) ClientToScreen(hWnd, &pt);
    int cmd=TrackPopupMenuEx(hmenu,
        (cmdBar)? (TPM_BOTTOMALIGN | TPM_RETURNCMD) : (TPM_TOPALIGN | TPM_RETURNCMD),
        pt.x, pt.y,
        hWnd,
        NULL);

    if (cmd!=0) {
        MENUITEMINFO mi;
        mi.cbSize=sizeof(mi);
        mi.fMask=MIIM_DATA;
        GetMenuItemInfo(hmenu, cmd, FALSE, &mi);

        if (cmd>=TabsCtrl::SWITCH_TAB && cmd<TabsCtrl::USERCMD) {
            ODR *wt=(ODR*)((void *) mi.dwItemData);
            //switch to the selected tab
            switchByODR(wt);
        }

        if (cmd>=TabsCtrl::USERCMD) {
            menuUserActions(cmd, mi.dwItemData);
        }

        if (cmd==TabsCtrl::CLOSETAB) {
            PostMessage(hWnd, WM_COMMAND, cmd, mi.dwItemData);
        }
    }
    DestroyMenu(hmenu);
}
Exemple #20
0
void ViewerWindow::dialogProcessInfo()
{
	auto core = m_remoteProcess->getCore();

	ProcessDialog dialog(core);

	Control control = getHWnd();
	dialog.setParent(&control);

	core->setRemoteProcessInterface(&dialog);
	
	dialog.onRefreshProcessList();

	if (dialog.showModal() == IDOK) {
		applySettings();
	}

	core->setRemoteProcessInterface(nullptr);
}
void VirtualListView::notifyListUpdate( bool redraw ) {
    if (!odrlist) return;
    if (!redraw) return;
    /*int lastY=0;
    for (ODRList::const_iterator i = odrlist->begin(); i!=odrlist->end(); i++) {
        lastY+= i->get()->getHeight();
    }

    SCROLLINFO si;
    si.cbSize=sizeof(SCROLLINFO);
    si.fMask=SIF_PAGE | SIF_RANGE;
    si.nPage=clientRect.bottom;
    si.nMin=0;
    si.nMax=lastY;

    SetScrollInfo(thisHWnd, SB_VERT, &si, TRUE);*/

    InvalidateRect(getHWnd(), NULL, true);
}
Exemple #22
0
HRESULT InputKeyboard::init()
{
	HRESULT	hr = 0;

	LPDIRECTINPUT8 directInput = getDirectInput();

	IFFAILED(hr = directInput->CreateDevice (GUID_SysKeyboard, &m_pDev, 0)) 
	{
		//PUSHERROR("CreateDevice GUID_SysKeyboard error code = %d [/FATAL ERROR/]",hr);
		return hr;
	}

	IFFAILED(hr = m_pDev->SetDataFormat (&c_dfDIKeyboard) )
	{
		//PUSHERROR("SetDataFormat error code = %d [/FATAL ERROR/]",hr);
		return hr;
	}


	HWND hWnd = getHWnd();

	//Required for game editor
//#ifdef _EDITOR
	IFFAILED(hr = m_pDev->SetCooperativeLevel( hWnd, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE ) )
//#else
	//IFFAILED(hr = m_pDev->SetCooperativeLevel(m_InputCore->m_hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE))
//#endif
	//IFFAILED(hr = m_pDev->SetCooperativeLevel (m_InputCore->m_hWnd , DISCL_FOREGROUND | DISCL_EXCLUSIVE))
	{
		//PUSHERROR("SetCooperativeLevel [ DISCL_FOREGROUND | DISCL_NONEXCLUSIVE ] error code = %d [/FATAL ERROR/]",hr);
		return hr;
	}	

	IFFAILED( hr = restore() )
	{
		return hr;
	}

	setActive( true );

	return 0;
};
Exemple #23
0
void MainTabs::menuUserActions( int cmdId, DWORD userData ) {
    Contact * contact= (Contact *)((void*) userData);
    if (!contact) return;
    WndRef chat=getWindowByODR(contact);

    if (!chat) {
        //Contact::ref r=roster.lock()->findContact(c->jid.getJid());
        Contact::ref cref;

        if (dynamic_cast<MucRoom *>(contact)) {
            MucGroup::ref roomGrp=boost::dynamic_pointer_cast<MucGroup> (rc->roster->findGroup(contact->jid.getBareJid()));
            cref=roomGrp->room;
        } else
            cref=rc->roster->findContact(contact->jid.getJid());

        BOOST_ASSERT(cref.get());
        chat=WndRef(new ChatView(getHWnd(), cref));
        addWindow(chat);
    }
    switchByWndRef(chat);

}
Exemple #24
0
void ClientInfoForm::infoArrivedNotify(){
    PostMessage(getHWnd(), WM_HTML_UPDATE, 0, (LPARAM)"");
}
Exemple #25
0
void VcardForm::onHotSpot( LPCSTR url, LPCSTR param ) {
    std::string nurl=std::string(url);
    if (nurl=="load") {
        wchar_t filename[MAX_PATH];
        *filename=0;
        OPENFILENAME ofn;
        memset(&ofn, 0, sizeof(OPENFILENAME));
        ofn.lStructSize=sizeof(OPENFILENAME);
        ofn.hwndOwner=getHWnd();
        ofn.hInstance=g_hInst;
        ofn.lpstrFilter=FILEIMGMASK;
        ofn.nFilterIndex=0;
        ofn.lpstrFile=filename;
        ofn.nMaxFile=MAX_PATH;
        ofn.lpstrTitle=L"Select image file";
        ofn.Flags=OFN_FILEMUSTEXIST | OFN_EXPLORER;
        BOOL result=GetOpenFileNameEx(&ofn);
        if (!result) return;

        loadPhoto(filename);

        vcardArrivedNotify(vcard);
        return;
    }
    if (nurl=="save") {
        savePhoto(NULL);
        return;
    }
    if (nurl=="clear") {
        //todo: clear photo
        JabberDataBlockRef vcardTemp=vcard->findChildNamespace("vCard","vcard-temp");
        if (!vcardTemp) return;
        vcardTemp->removeChild("PHOTO");
        vcardArrivedNotify(vcard);
        return;
    }
    if (nurl=="reload") {
        //todo: re-request vcard
        return;
    }
    if (nurl=="publish") {
        //todo: publish vcard

        
        JabberDataBlockRef vcardTemp=vcard->findChildNamespace("vCard","vcard-temp");
        if (!vcardTemp) {
            vcardTemp=JabberDataBlockRef(new JabberDataBlock("vCard"));
            vcardTemp->setAttribute("xmlns","vcard-temp");
        }

        JabberDataBlock viq("iq");
        viq.setAttribute("to",vcard->getAttribute("from"));
        viq.setAttribute("type","set");
        viq.setAttribute("id","my-vcard-publish");
        viq.addChild(vcardTemp);

        StringMapRef m=HtmlView::splitHREFtext(param);
        for (StringMap::iterator i=m->begin(); i!=m->end(); i++) {
            std::string key=i->first;
            std::string value=i->second;
            std::string key2;
            int k2=key.find('#');
            if (k2>0) {
                key2=key.substr(k2+1, key.length()-k2-1);
                key=key.substr(0, k2);
            }

            JabberDataBlockRef child=vcardTemp->getChildByName(key.c_str());
            if (!child) child=vcardTemp->addChild(key.c_str(), NULL);
            if (k2>0) {
                JabberDataBlockRef child2=child->getChildByName(key2.c_str());
                if (!child2) child2=child->addChild(key2.c_str(), NULL);
                child=child2;
            }
            child->setText(value);
        }

        /*if (img) if (img->getHBmp()) {
            std::wstring imgFile=appRootPath+L"$tmpimg.jpg";
            loadPhoto(imgFile.c_str());
        }*/

        //StringRef result=viq->toXML();

        //todo: verify result
        rc.lock()->jabberStream->sendStanza(viq);
        
        vcardArrivedNotify(vcard);
        return;
    }

}
Exemple #26
0
BOOL VcardForm::savePhoto( LPCTSTR path ) 
{
    if (!vcard) return FALSE;

    JabberDataBlockRef vcardTemp=vcard->findChildNamespace("vCard", "vcard-temp");      if (!vcardTemp) return FALSE;
    JabberDataBlockRef photo=vcardTemp->getChildByName("PHOTO");    if (!photo) return FALSE;
    JabberDataBlockRef binval=photo->getChildByName("BINVAL"); if (!binval) return FALSE;
    const std::string &data=binval->getText();

    int dstLen=base64::base64DecodeGetLength(data.length());
    char *dst=new char[dstLen];

    dstLen=base64::base64Decode2(dst, data.c_str(), data.length());

    wchar_t filename[MAX_PATH];
    if (!path) {
        wchar_t *extm=ext[detectMime(dst)]; 
        *filename=0;
        wcscpy_s(filename, MAX_PATH, extm);
        OPENFILENAME ofn;
        memset(&ofn, 0, sizeof(OPENFILENAME));
        ofn.lStructSize=sizeof(OPENFILENAME);
        ofn.hwndOwner=getHWnd();         
        ofn.hInstance=g_hInst; //GetModuleHandle(NULL);  
        ofn.lpstrFilter=FILEIMGMASK;     
        ofn.nFilterIndex=0;
        ofn.lpstrFile=filename;     
        ofn.nMaxFile=MAX_PATH;
        //ofn.lpstrInitialDir   = ;     
        ofn.lpstrTitle=L"Save image as";
        ofn.lpstrDefExt=extm+2;
        ofn.Flags=OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

        BOOL result = GetSaveFileNameEx(&ofn);
        if (!result) return FALSE;
        path=filename;
    }

	std::string vcard_to = vcard->getAttribute("from");
size_t i=0;
                while (i<vcard_to.length()) {
                    if (vcard_to[i]=='/') {
                       vcard_to[i]='.';
                        continue;
                    }
                    i++;
				}
	//Log::getInstance()->msg("[***]CASHED Image OK("+vcard_from.substr(0,vcard_from.find("/",0))+")");
	std::wstring new_path = appRootPath + L"userdata\\avatars\\" + utf8::utf8_wchar(vcard_to) + L".jpg";
    std::wstring imageFile=appRootPath + L"userdata\\avatars\\" + utf8::utf8_wchar(vcard_to) + L".jpg";
	//int result=MessageBox(NULL, new_path.c_str(), TEXT("123"), MB_YESNO | MB_ICONWARNING );
	LPCTSTR path_save=imageFile.c_str();
	Log::getInstance()->msg("[***Get.]("+vcard_to+")");

    HANDLE file=CreateFile(path_save,
        GENERIC_WRITE, 
        FILE_SHARE_READ, NULL, 
        CREATE_ALWAYS,
        0, NULL);

    DWORD dwProcessed;
    if (file==INVALID_HANDLE_VALUE) {
        delete dst; return FALSE;
    }
    WriteFile(file, dst, dstLen, &dwProcessed, NULL);
    CloseHandle(file);


	//создание файла
	Contact::ref contact;
	 contact=rc.lock()->roster->getContactEntry(vcard_to);
	 contact->img_avatar.reset();
	 contact->img_avatar=ImageRef(new Image(imageFile.c_str()));
	 img.reset();
	 img=ImageRef(new Image(imageFile.c_str()));
	Log::getInstance()->msg("[***SUCCESS.]("+contact->statusMessage+")");
	//привязка к контакту


	/*
	  void Log::msg(const std::string &message){
	    addLog(utf8::utf8_wchar(message).c_str());
	  }
	  void Log::addLog(const wchar_t * msg) {}
	*/
	delete dst;
    return TRUE;
}
Exemple #27
0
void VcardForm::vcardArrivedNotify(JabberDataBlockRef vcard){
    this->vcard=vcard;

    PostMessage(getHWnd(), WM_HTML_UPDATE, 0, (LPARAM)"");
}
BOOL DlgOption::SubExclude::handleMsg(UINT msg, WPARAM, LPARAM lParam)
{
	switch (msg) {
	case WM_WINDOWPOSCHANGED:
		{
			RECT rClient, rWnd;

			GetClientRect(getHWnd(), &rClient);

			// clist
			rWnd = utils::getWindowRect(getHWnd(), IDC_CONTACTS);
			rWnd.right = rClient.right;
			rWnd.bottom = rClient.bottom;
			utils::moveWindow(getHWnd(), IDC_CONTACTS, rWnd);
		}
		break;

	case WM_NOTIFY:
		{
			NMHDR* p = reinterpret_cast<NMHDR*>(lParam);
			if (p->idFrom != IDC_CONTACTS)
				break;

			HWND hCList = GetDlgItem(getHWnd(), IDC_CONTACTS);

			switch (p->code) {
			case CLN_NEWCONTACT:
			case CLN_LISTREBUILT:
				updateAllContacts(hCList);
				updateAllGroups(hCList, reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_GETNEXTITEM, CLGN_ROOT, 0)), m_hItemAll);
				break;

			case CLN_CONTACTMOVED:
				updateAllGroups(hCList, reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_GETNEXTITEM, CLGN_ROOT, 0)), m_hItemAll);
				break;

			case CLN_OPTIONSCHANGED:
				customizeList(hCList);
				break;

			case NM_CLICK:
				NMCLISTCONTROL* pNM = reinterpret_cast<NMCLISTCONTROL*>(p);
				if (pNM->iColumn == -1)
					break;

				DWORD dwHitFlags = 0;
				HANDLE hItem = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_HITTEST, reinterpret_cast<WPARAM>(&dwHitFlags), MAKELPARAM(pNM->pt.x, pNM->pt.y)));
				if (!hItem || !(dwHitFlags & CLCHT_ONITEMEXTRA))
					break;

				int iImage = SendMessage(hCList, CLM_GETEXTRAIMAGE, reinterpret_cast<WPARAM>(hItem), MAKELPARAM(pNM->iColumn, 0));
				if (iImage != 0xFF) {
					iImage = (iImage == 0) ? 1 : 0;

					int itemType = SendMessage(hCList, CLM_GETITEMTYPE, reinterpret_cast<WPARAM>(hItem), 0);

					if (itemType == CLCIT_CONTACT)
						setAll(hCList, hItem, iImage, false);
					else if (itemType == CLCIT_INFO)
						setAll(hCList, hItem, iImage, true);
					else if (itemType == CLCIT_GROUP) {
						if (hItem = reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_GETNEXTITEM, CLGN_CHILD, reinterpret_cast<LPARAM>(hItem))))
							setAll(hCList, hItem, iImage, true);
					}

					// update groups
					updateAllGroups(hCList, reinterpret_cast<HANDLE>(SendMessage(hCList, CLM_GETNEXTITEM, CLGN_ROOT, 0)), m_hItemAll);

					// mark as dirty
					m_bChanged = true;
					getParent()->settingsChanged();
				}
				break;
			}
		}
		break;

	case WM_DESTROY:
		IconLib::unregisterCallback(staticRecreateIcons, reinterpret_cast<LPARAM>(this));
		ImageList_Destroy(reinterpret_cast<HIMAGELIST>(SendDlgItemMessage(getHWnd(), IDC_CONTACTS, CLM_GETEXTRAIMAGELIST, 0, 0)));
		break;
	}

	return FALSE;
}
Exemple #29
0
bool BaseWindow::wndProc(UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message) {
    case WM_COMMAND:
      return onCommand(wParam, lParam);
    case WM_NOTIFY:
      return onNotify((int)wParam, (LPNMHDR)lParam);
    case WM_SYSCOMMAND:
      return onSysCommand(wParam, lParam);
    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_MBUTTONDOWN:
    case WM_MBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    case WM_MOUSEWHEEL:
    case WM_MOUSEMOVE:
    {
      unsigned char mouseButtons = 0;

      mouseButtons |= LOWORD(wParam) & MK_RBUTTON ? MOUSE_RDOWN : 0;
      mouseButtons |= LOWORD(wParam) & MK_MBUTTON ? MOUSE_MDOWN : 0;
      mouseButtons |= LOWORD(wParam) & MK_LBUTTON ? MOUSE_LDOWN : 0;

      // Translate position from LPARAM to POINT.
      POINTS points = MAKEPOINTS(lParam);
      POINT point;
      point.x = points.x;
      point.y = points.y;

      unsigned short wheelSpeed = 0; 
      if (message == WM_MOUSEWHEEL) {
        // Get speed wheel and set mouse button.
        signed short wheelSignedSpeed = static_cast<signed short>(HIWORD(wParam));
        if (wheelSignedSpeed < 0) {
          mouseButtons |= MOUSE_WDOWN;
          wheelSpeed = - wheelSignedSpeed / WHEEL_DELTA;
        } else {
          mouseButtons |= MOUSE_WUP;
          wheelSpeed = wheelSignedSpeed / WHEEL_DELTA;
        }

        // In some cases wheelSignedSpeed can be smaller than the WHEEL_DELTA,
        // then wheelSpeed set to 1, but not 0.
        if (wheelSpeed == 0) {
          wheelSpeed = 1;
        }

        // If windows-message is WHEEL, then need to translate screen coordinate to client.
        if (!ScreenToClient(getHWnd(), &point)) {
          point.x = -1;
          point.y = -1;
        }
      }

      // Notify window about mouse-event.
      return onMouse(mouseButtons, static_cast<unsigned short>(wheelSpeed), point);
    }
  }
  return onMessage(message, wParam, lParam);
}
void VirtualListView::eventOk() { 
    VirtualListElement *velement=dynamic_cast<VirtualListElement *>(cursorPos.get());
    if (velement) 
        velement->OnMenuCommand(IDOK, getHWnd(), NULL);
}