Răsfoiți Sursa

added combo in copy properties to move item to a group

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@55 595ec19a-5cb4-439b-94a8-42fb3063c22c
sabrogden 22 ani în urmă
părinte
comite
b3608a5d52
9 a modificat fișierele cu 234 adăugiri și 20 ștergeri
  1. 0 6
      CP_Main.cpp
  2. 8 0
      CP_Main.dsp
  3. 15 12
      CP_Main.rc
  4. 29 0
      CopyProperties.cpp
  5. 4 0
      CopyProperties.h
  6. 115 0
      GroupCombo.cpp
  7. 53 0
      GroupCombo.h
  8. 8 1
      QPasteWnd.cpp
  9. 2 1
      Resource.h

+ 0 - 6
CP_Main.cpp

@@ -413,12 +413,6 @@ BOOL bResult = FALSE;
 		m_GroupText = "History";
 		bResult = TRUE;
 		break;
-	case -1: // All Groups "ID"
-		m_GroupID = -1;
-		m_GroupParentID = 0;
-		m_GroupText = "Groups";
-		bResult = TRUE;
-		break;
 	default: // Normal Group
 		try
 		{

+ 8 - 0
CP_Main.dsp

@@ -268,6 +268,10 @@ SOURCE=.\DataTable.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\GroupCombo.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\GroupName.cpp
 # End Source File
 # Begin Source File
@@ -381,6 +385,10 @@ SOURCE=.\DataTable.h
 # End Source File
 # Begin Source File
 
+SOURCE=.\GroupCombo.h
+# End Source File
+# Begin Source File
+
 SOURCE=.\GroupName.h
 # End Source File
 # Begin Source File

+ 15 - 12
CP_Main.rc

@@ -471,31 +471,34 @@ BEGIN
     LTEXT           "Main Types",IDC_STATIC,7,7,38,8
 END
 
-IDD_COPY_PROPERTIES DIALOGEX 0, 0, 244, 211
+IDD_COPY_PROPERTIES DIALOG DISCARDABLE  0, 0, 244, 223
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Copy Properties"
 FONT 8, "MS Sans Serif"
 BEGIN
     CONTROL         "HotKey1",IDC_HOTKEY,"msctls_hotkey32",WS_BORDER | 
                     WS_TABSTOP,37,7,82,13
+    EDITTEXT        IDC_DATE,149,7,88,13,ES_AUTOHSCROLL | NOT WS_TABSTOP
     CONTROL         "&Never Auto Delete",IDC_NEVER_AUTO_DELETE,"Button",
                     BS_AUTOCHECKBOX | WS_TABSTOP,8,23,75,10
-    EDITTEXT        IDC_EDIT_DISPLAY_TEXT,7,44,230,56,ES_MULTILINE | 
+    EDITTEXT        IDC_PARSE_EDIT,177,23,30,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Parse",IDC_PARSE_BUTTON,212,23,25,12
+    COMBOBOX        IDC_COMBO1,63,39,174,128,CBS_DROPDOWNLIST | WS_VSCROLL | 
+                    WS_TABSTOP
+    EDITTEXT        IDC_EDIT_DISPLAY_TEXT,7,58,230,56,ES_MULTILINE | 
                     ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | 
                     WS_VSCROLL
-    LISTBOX         IDC_COPY_DATA,7,111,230,75,LBS_SORT | 
+    LISTBOX         IDC_COPY_DATA,7,125,230,75,LBS_SORT | 
                     LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | 
                     WS_TABSTOP
-    PUSHBUTTON      "Delete",IDC_DELETE_COPY_DATA,7,188,24,12
-    DEFPUSHBUTTON   "OK",IDOK,133,190,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,187,190,50,14
-    EDITTEXT        IDC_DATE,149,7,88,13,ES_AUTOHSCROLL | NOT WS_TABSTOP
-    LTEXT           "Item Title",IDC_STATIC,7,35,46,8
+    PUSHBUTTON      "Delete",IDC_DELETE_COPY_DATA,7,204,24,12
+    DEFPUSHBUTTON   "OK",IDOK,133,202,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,187,202,50,14
+    LTEXT           "Item Title",IDC_STATIC,7,49,46,8
     LTEXT           "Date",IDC_STATIC,128,7,16,13,SS_CENTERIMAGE
     LTEXT           "Hot Key",IDC_STATIC,7,7,28,13,SS_CENTERIMAGE
-    LTEXT           "Copy Formats",IDC_STATIC,7,102,46,8
-    EDITTEXT        IDC_PARSE_EDIT,177,24,30,14,ES_AUTOHSCROLL
-    PUSHBUTTON      "Parse",IDC_PARSE_BUTTON,212,24,25,14
+    LTEXT           "Copy Formats",IDC_STATIC,7,116,46,8
+    LTEXT           "Move To Group",IDC_STATIC,8,40,56,9
 END
 
 IDD_ABOUT DIALOG DISCARDABLE  0, 0, 292, 124
@@ -646,7 +649,7 @@ BEGIN
         LEFTMARGIN, 7
         RIGHTMARGIN, 237
         TOPMARGIN, 7
-        BOTTOMMARGIN, 204
+        BOTTOMMARGIN, 216
     END
 
     IDD_ABOUT, DIALOG

+ 29 - 0
CopyProperties.cpp

@@ -24,6 +24,7 @@ CCopyProperties::CCopyProperties(long lCopyID, CWnd* pParent /*=NULL*/)
 	m_bChangedText = false;
 	m_bHandleKillFocus = false;
 	m_bHideOnKillFocus = false;
+	m_lGroupChangedTo = -1;
 	//{{AFX_DATA_INIT(CCopyProperties)
 	m_eDisplayText = _T("");
 	m_eDate = _T("");
@@ -36,6 +37,7 @@ void CCopyProperties::DoDataExchange(CDataExchange* pDX)
 {
 	CDialog::DoDataExchange(pDX);
 	//{{AFX_DATA_MAP(CCopyProperties)
+	DDX_Control(pDX, IDC_COMBO1, m_GroupCombo);
 	DDX_Control(pDX, IDC_HOTKEY, m_HotKey);
 	DDX_Control(pDX, IDC_COPY_DATA, m_lCopyData);
 	DDX_Text(pDX, IDC_EDIT_DISPLAY_TEXT, m_eDisplayText);
@@ -65,6 +67,7 @@ BOOL CCopyProperties::OnInitDialog()
 	CDialog::OnInitDialog();
 
 	m_ParseEdit.SetWindowText("\\r\\n");
+	m_GroupCombo.FillCombo();
 
 	m_MainTable.Open("SELECT * FROM Main WHERE lID = %d", m_lCopyID);
 	if(!m_MainTable.IsEOF())
@@ -85,6 +88,7 @@ BOOL CCopyProperties::OnInitDialog()
 			m_bNeverDelete = FALSE;
 		}
 
+		m_GroupCombo.SetCurSelOnItemData(m_MainTable.m_lParentID);
 
 		m_HotKey.SetHotKey(LOBYTE(m_MainTable.m_lShortCut), HIBYTE(m_MainTable.m_lShortCut));
 		m_HotKey.SetRules(HKCOMB_A, 0);
@@ -104,6 +108,8 @@ BOOL CCopyProperties::OnInitDialog()
 		}
 	}
 
+	
+
 	UpdateData(FALSE);
 
 	SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
@@ -200,6 +206,29 @@ void CCopyProperties::OnOK()
 		bUpdate = true;
 	}
 
+	int nParentID = m_GroupCombo.GetItemDataFromCursel();
+
+	if(nParentID != m_MainTable.m_lParentID)
+	{
+		bool bCont = true;
+		if(m_MainTable.m_bIsGroup)
+		{
+			if(nParentID == m_MainTable.m_lID)
+				bCont = false;
+		}
+		if(bCont)
+		{
+			if(!bUpdate)
+				m_MainTable.Edit();
+		
+			m_MainTable.m_lParentID = nParentID;
+
+			m_lGroupChangedTo = nParentID;
+
+			bUpdate = true;
+		}
+	}
+
 	if(bUpdate)
 		m_MainTable.Update();
 	

+ 4 - 0
CopyProperties.h

@@ -8,6 +8,8 @@
 // CopyProperties.h : header file
 //
 
+#include "GroupCombo.h"
+
 /////////////////////////////////////////////////////////////////////////////
 // CCopyProperties dialog
 
@@ -20,6 +22,7 @@ public:
 // Dialog Data
 	//{{AFX_DATA(CCopyProperties)
 	enum { IDD = IDD_COPY_PROPERTIES };
+	CGroupCombo	m_GroupCombo;
 	CHotKeyCtrl	m_HotKey;
 	CListBox	m_lCopyData;
 	CString	m_eDisplayText;
@@ -37,6 +40,7 @@ public:
 
 public:
 	bool m_bChangedText;
+	long m_lGroupChangedTo;
 	void	SetHideOnKillFocus(bool bVal)	{ m_bHideOnKillFocus = bVal;	}
 
 // Implementation

+ 115 - 0
GroupCombo.cpp

@@ -0,0 +1,115 @@
+// GroupCombo.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "cp_main.h"
+#include "GroupCombo.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CGroupCombo
+
+CGroupCombo::CGroupCombo()
+{
+}
+
+CGroupCombo::~CGroupCombo()
+{
+}
+
+
+BEGIN_MESSAGE_MAP(CGroupCombo, CComboBox)
+	//{{AFX_MSG_MAP(CGroupCombo)
+		// NOTE - the ClassWizard will add and remove mapping macros here.
+	//}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CGroupCombo message handlers
+
+void CGroupCombo::FillCombo()
+{
+	ResetContent();
+
+	int nIndex = AddString("--NONE--");
+	SetItemData(nIndex, 0);
+
+	FillCombo(0, 0);
+}
+
+void CGroupCombo::FillCombo(long lParentID, long lSpaces)
+{
+	try
+	{			
+		int nIndex;
+		CMainTable recset;
+
+		CString csSpaces;
+		for(int i = 0; i < lSpaces; i++)
+		{
+			csSpaces += "---";
+		}
+
+		//First time through
+		if(lSpaces > 0)
+		{
+			csSpaces += " ";
+			//ResetContent();
+		}
+
+		lSpaces++;
+
+		recset.m_strFilter.Format("bIsGroup = TRUE AND lParentID = %d", lParentID);
+
+		recset.Open();
+
+		if(recset.IsEOF() == FALSE)
+		{			
+			while(!recset.IsEOF())
+			{
+				nIndex = AddString(csSpaces + recset.m_strText);
+				SetItemData(nIndex, recset.m_lID);
+
+				FillCombo(recset.m_lID, lSpaces);
+
+				recset.MoveNext();
+			}
+
+		}
+	}		
+	catch(CDaoException* e)
+	{
+		ASSERT(FALSE);
+		e->Delete();
+		return;
+	}	
+}
+
+BOOL CGroupCombo::SetCurSelOnItemData(long lItemData)
+{
+	long lCount = GetCount();
+
+	for(int i = 0; i < lCount; i++)
+	{
+		if(GetItemData(i) == lItemData)
+		{
+			SetCurSel(i);
+			return TRUE;
+		}
+	}
+
+	SetCurSel(-1);
+
+	return FALSE;
+}
+
+int CGroupCombo::GetItemDataFromCursel()
+{
+	int nCursel = GetCurSel();
+	return (int)GetItemData(nCursel);
+}

+ 53 - 0
GroupCombo.h

@@ -0,0 +1,53 @@
+#if !defined(AFX_GROUPCOMBO_H__42D00360_95BE_49B5_AA39_E3B37CFCFF5B__INCLUDED_)
+#define AFX_GROUPCOMBO_H__42D00360_95BE_49B5_AA39_E3B37CFCFF5B__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+// GroupCombo.h : header file
+//
+
+/////////////////////////////////////////////////////////////////////////////
+// CGroupCombo window
+
+class CGroupCombo : public CComboBox
+{
+// Construction
+public:
+	CGroupCombo();
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overrides
+	// ClassWizard generated virtual function overrides
+	//{{AFX_VIRTUAL(CGroupCombo)
+	//}}AFX_VIRTUAL
+
+// Implementation
+public:
+	virtual ~CGroupCombo();
+
+	void FillCombo();
+	void FillCombo(long lParentID, long lSpaces);
+	BOOL SetCurSelOnItemData(long lItemData);
+	int GetItemDataFromCursel();
+
+	// Generated message map functions
+protected:
+	//{{AFX_MSG(CGroupCombo)
+		// NOTE - the ClassWizard will add and remove member functions here.
+	//}}AFX_MSG
+
+	DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_GROUPCOMBO_H__42D00360_95BE_49B5_AA39_E3B37CFCFF5B__INCLUDED_)

+ 8 - 1
QPasteWnd.cpp

@@ -548,6 +548,8 @@ BOOL CQPasteWnd::FillList(CString csSQLSearch/*=""*/)
 			m_Recset.m_strSort = "bIsGroup DESC, lDate DESC";
 		else
 			m_Recset.m_strSort = "bIsGroup ASC, lDate ASC";
+
+		strFilter = "((bIsGroup = TRUE AND lParentID = 0) OR bIsGroup = FALSE)";
 	}
 	else // it's some other group
 	{
@@ -964,6 +966,11 @@ void CQPasteWnd::OnMenuProperties()
 	{
 		m_lstHeader.DestroyAndCreateAccelerator(TRUE);
 		m_lstHeader.RefreshVisibleRows();
+
+		if(props.m_lGroupChangedTo >= 0)
+		{
+			OpenID(props.m_lGroupChangedTo);
+		}
 	}
 		
 	SetFocus();
@@ -972,7 +979,7 @@ void CQPasteWnd::OnMenuProperties()
 	if(nDo == IDOK || nDo == IDCANCEL)
 	{
 		m_lstHeader.SetFocus();
-		m_lstHeader.SetListPos(nRow);
+		m_lstHeader.SetListPos(lID);
 	}
 }
 

+ 2 - 1
Resource.h

@@ -83,6 +83,7 @@
 #define IDC_REPAIR                      2019
 #define IDC_DESC_SHOW_LEADING_WHITESPACE 2021
 #define IDC_NAME                        2022
+#define IDC_COMBO1                      2023
 #define ID_FIRST_OPTION                 32771
 #define ID_FIRST_EXIT                   32772
 #define ID_FIRST_SHOWQUICKPASTE         32773
@@ -136,7 +137,7 @@
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        141
 #define _APS_NEXT_COMMAND_VALUE         32819
-#define _APS_NEXT_CONTROL_VALUE         2023
+#define _APS_NEXT_CONTROL_VALUE         2024
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif