/********************************************************************* * * Filename: wmcapshare.c * Version: 0.1 * Description: Window Maker Dockapp to Control HP Capshare * Status: Development * Author: Ben Moore * Created at: Sun Oct 06 10:00:00 2001 * Modified at: Sun Oct 06 10:00:00 2001 * Modified by: Ben Moore * * Copyright (c) 2001 Ben Moore, All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * * * Start with --help to see available options * By default captured pages are put in /tmp * ********************************************************************/ #include #ifndef _WIN32 #include #endif #include #include "obex_put_common.h" #include "obex_io.h" #include #include "xpm/base.xpm" #include "xpm/tstatfld.xpm" #include "xpm/capshare.xpm" #include "xpm/connected.xpm" #include "xpm/disconnected.xpm" #include "xpm/transfering.xpm" #include "xpm/lcdchars2.xpm" #include "xpm/lcdnums.xpm" #include "xpm/plane00.xpm" #include "xpm/plane01.xpm" #include "xpm/plane02.xpm" #include "xpm/plane03.xpm" #include "xpm/plane04.xpm" #include "xpm/plane05.xpm" #include "xpm/plane06.xpm" #include "xpm/plane07.xpm" #include "xpm/plane08.xpm" #include "xpm/plane09.xpm" #include "xpm/plane10.xpm" #include "xpm/plane11.xpm" #include "xpm/plane12.xpm" #include "xpm/plane13.xpm" #include "xpm/plane14.xpm" #include "xpm/plane15.xpm" #include "xpm/plane16.xpm" #include "xpm/plane17.xpm" #include "xpm/plane18.xpm" #include "xpm/plane19.xpm" #include "wmcapshare.h" #include "version.h" char *displayName = ""; gchar *savedir = "/tmp/"; GC gc; Pixmap pixmap, mask; Pixmap tstatfld_buf, tstatfld_mask; Pixmap blank_buf, blank_mask; Pixmap capshare_pic, capshare_mask; Pixmap plane_anim[20], plane_animmask[20]; Pixmap connect_pic, connect_mask; Pixmap disconnect_pic, disconnect_mask; Pixmap transfer_pic, transfer_mask; Pixmap char_buf, char_mask; Pixmap num_buf, num_mask; obex_t *handle = NULL; volatile int finished = FALSE; volatile int state = 0; int planeanimpos = 0; static DAProgramOption options[] = { {"-d", "--dir", "Directory to save to", DOString, False, {&savedir}} } ; int charpos(char c) { int cn, cai; cn = c - 97; cai = cn*6; return cai; } int string2pixmap(char* str, Pixmap *p) { int x; XCopyArea(DADisplay, blank_buf, *p, gc, 0,0, 42, 8, 0, 0); for (x = 0; x < strlen(str); x++) { XCopyArea(DADisplay, char_buf, *p, gc, charpos(str[x]),0, 6, 8, x*6, 0); } } void updateDisplay() { switch(state) { case CAP_WAIT: /* wait */ planeanimpos=0; XCopyArea(DADisplay, capshare_pic, pixmap, gc, 0, 0, 60, 29, 0, 15); XCopyArea(DADisplay, disconnect_pic, pixmap, gc, 0, 0, 14, 15, 0, 45); string2pixmap("waiting", &tstatfld_buf); XCopyArea(DADisplay, tstatfld_buf, pixmap, gc, 0, 0, 42, 8, 16, 48); DASetPixmap(pixmap); break; case CAP_RECIEVE: /* recieve */ XCopyArea(DADisplay, plane_anim[planeanimpos], pixmap, gc, 0, 0, 60, 29, 0, 15); planeanimpos++; if(planeanimpos==20) planeanimpos = 0; XCopyArea(DADisplay, connect_pic, pixmap, gc, 0, 0, 14, 15, 0, 45); string2pixmap("recieve", &tstatfld_buf); XCopyArea(DADisplay, tstatfld_buf, pixmap, gc, 0, 0, 42, 8, 16, 48); DASetPixmap(pixmap); break; case CAP_CONNECT: /* connect */ XCopyArea(DADisplay, disconnect_pic, pixmap, gc, 0, 0, 14, 15, 0, 45); string2pixmap("connect", &tstatfld_buf); XCopyArea(DADisplay, tstatfld_buf, pixmap, gc, 0, 0, 42, 8, 16, 48); DASetPixmap(pixmap); break; } } /* * Function main (argc, ) * * Starts all the fun! * */ int main(int argc, char *argv[]) { obex_object_t *object; int ret; unsigned height,width; int i; DAParseArguments(argc, argv, options, sizeof(options)/sizeof(DAProgramOption), "CapShare Document Management Dock Applet\nBen Moore ben@netjunki.org\n", VERSION); DAInitialize(displayName, "wmcapshare", 60,60, argc, argv); DAMakePixmapFromData(lcdchars2_xpm, &char_buf, &char_mask, &height, &width); DAMakePixmapFromData(lcdnums_xpm, &num_buf, &num_mask, &height, &width); DAMakePixmapFromData(base_xpm, &pixmap, &mask, &height, &width); DAMakePixmapFromData(tstatfld_xpm, &tstatfld_buf, &tstatfld_mask, &height, &width); DAMakePixmapFromData(tstatfld_xpm, &blank_buf, &blank_mask, &height, &width); DAMakePixmapFromData(capshare_xpm, &capshare_pic, &capshare_mask, &height, &width); DAMakePixmapFromData(transfering_xpm, &transfer_pic, &transfer_mask, &height, &width); DAMakePixmapFromData(connected_xpm, &connect_pic, &connect_mask, &height, &width); DAMakePixmapFromData(disconnected_xpm, &disconnect_pic, &disconnect_mask, &height, &width); DAMakePixmapFromData( plane00_xpm, &plane_anim[0], &plane_animmask[1], &height, &width); DAMakePixmapFromData( plane01_xpm, &plane_anim[1], &plane_animmask[2], &height, &width); DAMakePixmapFromData( plane02_xpm, &plane_anim[2], &plane_animmask[3], &height, &width); DAMakePixmapFromData( plane03_xpm, &plane_anim[3], &plane_animmask[4], &height, &width); DAMakePixmapFromData( plane04_xpm, &plane_anim[4], &plane_animmask[5], &height, &width); DAMakePixmapFromData( plane05_xpm, &plane_anim[5], &plane_animmask[6], &height, &width); DAMakePixmapFromData( plane06_xpm, &plane_anim[6], &plane_animmask[6], &height, &width); DAMakePixmapFromData( plane07_xpm, &plane_anim[7], &plane_animmask[7], &height, &width); DAMakePixmapFromData( plane08_xpm, &plane_anim[8], &plane_animmask[8], &height, &width); DAMakePixmapFromData( plane09_xpm, &plane_anim[9], &plane_animmask[9], &height, &width); DAMakePixmapFromData( plane10_xpm, &plane_anim[10], &plane_animmask[10], &height, &width); DAMakePixmapFromData( plane11_xpm, &plane_anim[11], &plane_animmask[11], &height, &width); DAMakePixmapFromData( plane12_xpm, &plane_anim[12], &plane_animmask[12], &height, &width); DAMakePixmapFromData( plane13_xpm, &plane_anim[13], &plane_animmask[13], &height, &width); DAMakePixmapFromData( plane14_xpm, &plane_anim[14], &plane_animmask[14], &height, &width); DAMakePixmapFromData( plane15_xpm, &plane_anim[15], &plane_animmask[15], &height, &width); DAMakePixmapFromData( plane16_xpm, &plane_anim[16], &plane_animmask[16], &height, &width); DAMakePixmapFromData( plane17_xpm, &plane_anim[17], &plane_animmask[17], &height, &width); DAMakePixmapFromData( plane18_xpm, &plane_anim[18], &plane_animmask[18], &height, &width); DAMakePixmapFromData( plane19_xpm, &plane_anim[19], &plane_animmask[19], &height, &width); gc = DefaultGC(DADisplay, DefaultScreen(DADisplay)); /* string2pixmap("recieve", &tstatfld_buf); XCopyArea(DADisplay, plane_pic, pixmap, gc, 0, 0, 60, 29, 0, 15); XCopyArea(DADisplay, tstatfld_buf, pixmap, gc, 0, 0, 42, 8, 16, 48); DASetPixmap(pixmap); XCopyArea(DADisplay, connect_pic, pixmap, gc, 0, 0, 14, 15, 0, 45); DASetPixmap(pixmap); */ XCopyArea(DADisplay, capshare_pic, pixmap, gc, 0, 0, 60, 29, 0, 15); DAShow(); while(1) { handle = OBEX_Init(OBEX_TRANS_IRDA, obex_event, 0); printf("Waiting for files\n"); OBEX_ServerRegister(handle, "OBEX"); while (!finished) { updateDisplay(); OBEX_HandleInput(handle, 1); } finished = FALSE; } return 0; }