diff --git a/src/sbbs3/ctrl/UserListFormUnit.cpp b/src/sbbs3/ctrl/UserListFormUnit.cpp new file mode 100644 index 0000000000000000000000000000000000000000..34186a8931bc68f0a5126ea78c3c460aab39515b --- /dev/null +++ b/src/sbbs3/ctrl/UserListFormUnit.cpp @@ -0,0 +1,127 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#pragma hdrstop + +#include "UserListFormUnit.h" +#include "MainFormUnit.h" +#include "sbbs.h" +#include "userdat.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TUserListForm *UserListForm; +//--------------------------------------------------------------------------- +__fastcall TUserListForm::TUserListForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TUserListForm::FormShow(TObject *Sender) +{ + char str[128]; + int i,last; + user_t user; + TListItem* Item; + + ColumnToSort=0; + SortBackwards=false; + Screen->Cursor=crAppStart; + + last=lastuser(&MainForm->cfg); + ListView->AllocBy=last; + + for(i=0;i<last;i++) { + user.number=i+1; + if(getuserdat(&MainForm->cfg,&user)!=0) + continue; + if(user.misc&DELETED) + continue; + Item=ListView->Items->Add(); + Item->Caption=AnsiString(i+1); + Item->SubItems->Add(user.alias); + Item->SubItems->Add(user.name); + Item->SubItems->Add(user.level); + Item->SubItems->Add((int)getage(&MainForm->cfg,user.birth)); + sprintf(str,"%c",user.sex); + Item->SubItems->Add(str); + Item->SubItems->Add(user.location); + Item->SubItems->Add(user.modem); + Item->SubItems->Add(user.note); + Item->SubItems->Add(user.comp); + Item->SubItems->Add(user.phone); + Item->SubItems->Add(user.netmail); + Item->SubItems->Add(user.logons); + Item->SubItems->Add(unixtodstr(&MainForm->cfg,user.firston,str)); + Item->SubItems->Add(unixtodstr(&MainForm->cfg,user.laston,str)); + } + + Screen->Cursor=crDefault; +} +//--------------------------------------------------------------------------- +void __fastcall TUserListForm::ListViewColumnClick(TObject *Sender, + TListColumn *Column) +{ + if(Column->Index == ColumnToSort) + SortBackwards=!SortBackwards; + else + SortBackwards=false; + ColumnToSort = Column->Index; + ((TCustomListView *)Sender)->AlphaSort(); +} +//--------------------------------------------------------------------------- +void __fastcall TUserListForm::ListViewCompare(TObject *Sender, + TListItem *Item1, TListItem *Item2, int Data, int &Compare) +{ + /* Decimal compare */ + if (ColumnToSort == 0 || ColumnToSort==3 || ColumnToSort==4 + || ColumnToSort == 12) { + int num1, num2; + + if(ColumnToSort==0) { + num1=Item1->Caption.ToIntDef(0); + num2=Item2->Caption.ToIntDef(0); + } else { + int ix = ColumnToSort - 1; + num1=Item1->SubItems->Strings[ix].ToIntDef(0); + num2=Item2->SubItems->Strings[ix].ToIntDef(0); + } + if(SortBackwards) + Compare=(num2-num1); + else + Compare=(num1-num2); + } else { + int ix = ColumnToSort - 1; + if(SortBackwards) + Compare = CompareText(Item2->SubItems->Strings[ix] + ,Item1->SubItems->Strings[ix]); + else + Compare = CompareText(Item1->SubItems->Strings[ix] + ,Item2->SubItems->Strings[ix]); + } +} +//--------------------------------------------------------------------------- +void __fastcall TUserListForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + ListView->Items->Clear(); + +} +//--------------------------------------------------------------------------- + + + + +void __fastcall TUserListForm::EditUserPopupClick(TObject *Sender) +{ + char str[256]; + + if(ListView->Selected==NULL) + return; + sprintf(str,"%sUSEREDIT %s %s" + ,MainForm->cfg.exec_dir,MainForm->cfg.data_dir + ,ListView->Selected->Caption.c_str()); + WinExec(str,SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + diff --git a/src/sbbs3/ctrl/UserListFormUnit.dfm b/src/sbbs3/ctrl/UserListFormUnit.dfm new file mode 100644 index 0000000000000000000000000000000000000000..3290ff7b59510064b4fd4c228bbe16dd268dc877 --- /dev/null +++ b/src/sbbs3/ctrl/UserListFormUnit.dfm @@ -0,0 +1,101 @@ +object UserListForm: TUserListForm + Left = 387 + Top = 308 + Width = 870 + Height = 640 + Caption = 'Synchronet User List' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = False + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 120 + TextHeight = 16 + object ListView: TListView + Left = 0 + Top = 0 + Width = 862 + Height = 608 + Align = alClient + Columns = < + item + Caption = 'Num' + Width = 40 + end + item + Caption = 'Alias' + Width = 100 + end + item + Caption = 'Name' + Width = 100 + end + item + Caption = 'Lev' + Width = 40 + end + item + Caption = 'Age' + Width = 40 + end + item + Caption = 'Sex' + Width = 40 + end + item + Caption = 'Location' + Width = 100 + end + item + Caption = 'Protocol' + Width = 70 + end + item + Caption = 'Address' + Width = 100 + end + item + Caption = 'Host Name' + Width = 100 + end + item + Caption = 'Phone' + Width = 100 + end + item + Caption = 'Email' + Width = 100 + end + item + Caption = 'Logons' + Width = 60 + end + item + Caption = 'First On' + Width = 70 + end + item + Caption = 'Last On' + Width = 70 + end> + PopupMenu = PopupMenu + SortType = stText + TabOrder = 0 + ViewStyle = vsReport + OnColumnClick = ListViewColumnClick + OnCompare = ListViewCompare + end + object PopupMenu: TPopupMenu + Left = 232 + Top = 96 + object EditUserPopup: TMenuItem + Caption = 'Edit User' + OnClick = EditUserPopupClick + end + end +end diff --git a/src/sbbs3/ctrl/UserListFormUnit.h b/src/sbbs3/ctrl/UserListFormUnit.h new file mode 100644 index 0000000000000000000000000000000000000000..d1700d2bd51fb0cf0e6e4dc3751f020d1ac1184a --- /dev/null +++ b/src/sbbs3/ctrl/UserListFormUnit.h @@ -0,0 +1,35 @@ +//--------------------------------------------------------------------------- + +#ifndef UserListFormUnitH +#define UserListFormUnitH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ComCtrls.hpp> +#include <Menus.hpp> +//--------------------------------------------------------------------------- +class TUserListForm : public TForm +{ +__published: // IDE-managed Components + TListView *ListView; + TPopupMenu *PopupMenu; + TMenuItem *EditUserPopup; + void __fastcall FormShow(TObject *Sender); + void __fastcall ListViewColumnClick(TObject *Sender, + TListColumn *Column); + void __fastcall ListViewCompare(TObject *Sender, TListItem *Item1, + TListItem *Item2, int Data, int &Compare); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall EditUserPopupClick(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TUserListForm(TComponent* Owner); + int ColumnToSort; + bool SortBackwards; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TUserListForm *UserListForm; +//--------------------------------------------------------------------------- +#endif diff --git a/src/sbbs3/ctrl/sbbsctrl.bpr b/src/sbbs3/ctrl/sbbsctrl.bpr index d93d5e9a8149e235b6ec5a1330ff9a0a5a3c2157..9aa05a233b44c9e30c1530871322c0ebf71bb1e0 100644 --- a/src/sbbs3/ctrl/sbbsctrl.bpr +++ b/src/sbbs3/ctrl/sbbsctrl.bpr @@ -9,7 +9,7 @@ TextFileEditUnit.obj TelnetFormUnit.obj FtpFormUnit.obj MailFormUnit.obj NodeFormUnit.obj StatsFormUnit.obj AboutBoxFormUnit.obj StatsLogFormUnit.obj CodeInputFormUnit.obj ClientFormUnit.obj - SpyFormUnit.obj ..\ringbuf.obj"/> + SpyFormUnit.obj ..\ringbuf.obj UserListFormUnit.obj"/> <RESFILES value="sbbsctrl.res"/> <IDLFILES value=""/> <IDLGENFILES value=""/> @@ -18,14 +18,15 @@ MailCfgDlgUnit.dfm FtpCfgDlgUnit.dfm TextFileEditUnit.dfm TelnetFormUnit.dfm FtpFormUnit.dfm MailFormUnit.dfm NodeFormUnit.dfm StatsFormUnit.dfm AboutBoxFormUnit.dfm StatsLogFormUnit.dfm - CodeInputFormUnit.dfm ClientFormUnit.dfm SpyFormUnit.dfm"/> + CodeInputFormUnit.dfm ClientFormUnit.dfm SpyFormUnit.dfm + UserListFormUnit.dfm"/> <LIBFILES value="sbbs.lib mailsrvr.lib ftpsrvr.lib"/> - <LIBRARIES value="vcl50.lib"/> - <SPARELIBS value="vcl50.lib"/> + <LIBRARIES value="IcsBcb50.lib vcl50.lib"/> + <SPARELIBS value="vcl50.lib IcsBcb50.lib"/> <PACKAGES value="vcl50.bpi vclx50.bpi vcljpg50.bpi bcbsmp50.bpi vclmid50.bpi vcldb50.bpi vclbde50.bpi inet50.bpi inetdb50.bpi vcldbx50.bpi qrpt50.bpi teeui50.bpi teedb50.bpi tee50.bpi dss50.bpi nmfast50.bpi dclocx50.bpi"/> - <PATHCPP value=".;.."/> + <PATHCPP value=".;..\..\sbbs3"/> <PATHPAS value=".;"/> <PATHRC value=".;"/> <PATHASM value=".;"/> diff --git a/src/sbbs3/ctrl/sbbsctrl.cpp b/src/sbbs3/ctrl/sbbsctrl.cpp index bdaa0c88688e87c62ea3e5e6428ece2c23de15fe..6644f69ec9420298f2a8248fb950c97275bb5be7 100644 --- a/src/sbbs3/ctrl/sbbsctrl.cpp +++ b/src/sbbs3/ctrl/sbbsctrl.cpp @@ -58,6 +58,7 @@ USEFORM("ClientFormUnit.cpp", ClientForm); USEFORM("SpyFormUnit.cpp", SpyForm); USEUNIT("..\ringbuf.c"); USEUNIT("emulvt.pas"); +USEFORM("UserListFormUnit.cpp", UserListForm); //--------------------------------------------------------------------------- #include "MainFormUnit.h" #include "SpyFormUnit.h" @@ -78,6 +79,7 @@ WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) Application->CreateForm(__classid(TNodeForm), &NodeForm); Application->CreateForm(__classid(TStatsForm), &StatsForm); Application->CreateForm(__classid(TClientForm), &ClientForm); + Application->CreateForm(__classid(TUserListForm), &UserListForm); Application->Run(); } catch (Exception &exception)